From b99018ed3a3291fdeac061b33feb5fcd3cadb3ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:40:10 +0000 Subject: [PATCH 1/9] chore(deps): update dependency @babel/core to v7.25.8 (#8471) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@babel/core](https://babel.dev/docs/en/next/babel-core) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-core)) | [`7.25.2` -> `7.25.8`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.25.2/7.25.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcore/7.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcore/7.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcore/7.25.2/7.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcore/7.25.2/7.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
babel/babel (@​babel/core) ### [`v7.25.8`](https://redirect.github.com/babel/babel/blob/HEAD/CHANGELOG.md#v7258-2024-10-10) [Compare Source](https://redirect.github.com/babel/babel/compare/v7.25.7...v7.25.8) ##### :bug: Bug Fix - `babel-core` - [#​16888](https://redirect.github.com/babel/babel/pull/16888) Restore public API of `resolvePlugin`/`resolvePreset` ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) ##### :house: Internal - `babel-parser`, `babel-plugin-proposal-async-do-expressions`, `babel-plugin-proposal-destructuring-private`, `babel-plugin-proposal-do-expressions`, `babel-plugin-proposal-explicit-resource-management`, `babel-plugin-proposal-export-default-from`, `babel-plugin-proposal-function-bind`, `babel-plugin-proposal-function-sent`, `babel-plugin-proposal-import-defer`, `babel-plugin-proposal-partial-application`, `babel-plugin-proposal-throw-expressions`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-dynamic-import`, `babel-plugin-transform-export-namespace-from`, `babel-plugin-transform-json-strings`, `babel-plugin-transform-logical-assignment-operators`, `babel-plugin-transform-nullish-coalescing-operator`, `babel-plugin-transform-numeric-separator`, `babel-plugin-transform-object-rest-spread`, `babel-plugin-transform-optional-catch-binding`, `babel-plugin-transform-optional-chaining`, `babel-plugin-transform-private-property-in-object`, `babel-preset-env` - [#​16824](https://redirect.github.com/babel/babel/pull/16824) Inline one-line syntax plugins ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) ### [`v7.25.7`](https://redirect.github.com/babel/babel/blob/HEAD/CHANGELOG.md#v7257-2024-10-02) [Compare Source](https://redirect.github.com/babel/babel/compare/v7.25.2...v7.25.7) ##### :bug: Bug Fix - `babel-helper-validator-identifier` - [#​16825](https://redirect.github.com/babel/babel/pull/16825) fix: update identifier to unicode 16 ([@​JLHwung](https://redirect.github.com/JLHwung)) - `babel-traverse` - [#​16814](https://redirect.github.com/babel/babel/pull/16814) fix: issue with node path keys updated on unrelated paths ([@​DylanPiercey](https://redirect.github.com/DylanPiercey)) - `babel-plugin-transform-classes` - [#​16797](https://redirect.github.com/babel/babel/pull/16797) Use an inclusion rather than exclusion list for `super()` check ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) - `babel-generator` - [#​16788](https://redirect.github.com/babel/babel/pull/16788) Fix printing of TS `infer` in compact mode ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) - [#​16785](https://redirect.github.com/babel/babel/pull/16785) Print TS type annotations for destructuring in assignment pattern ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) - [#​16778](https://redirect.github.com/babel/babel/pull/16778) Respect `[no LineTerminator here]` after nodes ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) ##### :nail_care: Polish - `babel-types` - [#​16852](https://redirect.github.com/babel/babel/pull/16852) Add deprecated JSDOC for fields ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu)) ##### :house: Internal - `babel-core` - [#​16820](https://redirect.github.com/babel/babel/pull/16820) Allow sync loading of ESM when `--experimental-require-module` ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) - `babel-helper-compilation-targets`, `babel-helper-plugin-utils`, `babel-preset-env` - [#​16858](https://redirect.github.com/babel/babel/pull/16858) Add browserslist config to external dependency ([@​JLHwung](https://redirect.github.com/JLHwung)) - `babel-plugin-proposal-destructuring-private`, `babel-plugin-syntax-decimal`, `babel-plugin-syntax-import-reflection`, `babel-standalone` - [#​16809](https://redirect.github.com/babel/babel/pull/16809) Archive syntax-import-reflection and syntax-decimal ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) - `babel-generator` - [#​16779](https://redirect.github.com/babel/babel/pull/16779) Simplify logic for `[no LineTerminator here]` before nodes ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo)) ##### :running_woman: Performance - `babel-plugin-transform-typescript` - [#​16875](https://redirect.github.com/babel/babel/pull/16875) perf: Avoid extra cloning of namespaces ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu)) - `babel-types` - [#​16842](https://redirect.github.com/babel/babel/pull/16842) perf: Improve [@​babel/types](https://redirect.github.com/babel/types) builders ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu)) - [#​16828](https://redirect.github.com/babel/babel/pull/16828) Only access `BABEL_TYPES_8_BREAKING` at startup ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am every weekday" in timezone Europe/Madrid, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/Unleash/unleash). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- website/package.json | 2 +- website/yarn.lock | 317 +++++++++++++++----------------------- yarn.lock | 355 +++++++++++++++++-------------------------- 4 files changed, 269 insertions(+), 407 deletions(-) diff --git a/package.json b/package.json index c86836658ee8..cf87ef2858e7 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,7 @@ }, "devDependencies": { "@apidevtools/swagger-parser": "10.1.0", - "@babel/core": "7.25.2", + "@babel/core": "7.25.8", "@biomejs/biome": "^1.8.3", "@cyclonedx/yarn-plugin-cyclonedx": "^1.0.0-rc.7", "@swc/core": "1.7.26", diff --git a/website/package.json b/website/package.json index f701cca2cd39..8fb795b4261d 100644 --- a/website/package.json +++ b/website/package.json @@ -68,7 +68,7 @@ ] }, "devDependencies": { - "@babel/core": "7.25.2", + "@babel/core": "7.25.8", "@docusaurus/module-type-aliases": "2.3.1", "@tsconfig/docusaurus": "2.0.3", "babel-loader": "9.1.3", diff --git a/website/yarn.lock b/website/yarn.lock index ad6486704b0b..61bd623939d8 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -245,13 +245,13 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/code-frame@npm:7.25.7" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/highlight": "npm:^7.25.7" picocolors: "npm:^1.0.0" - checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 + checksum: 10c0/14825c298bdec914caf3d24d1383b6d4cd6b030714686004992f4fc251831ecf432236652896f99d5d341f17170ae9a07b58d8d7b15aa0df8cfa1c5a7d5474bc languageName: node linkType: hard @@ -269,10 +269,10 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/compat-data@npm:7.25.2" - checksum: 10c0/5bf1f14d6e5f0d37c19543e99209ff4a94bb97915e1ce01e5334a144aa08cd56b6e62ece8135dac77e126723d63d4d4b96fc603a12c43b88c28f4b5e070270c5 +"@babel/compat-data@npm:^7.25.7": + version: 7.25.8 + resolution: "@babel/compat-data@npm:7.25.8" + checksum: 10c0/8b81c17580e5fb4cbb6a3c52079f8c283fc59c0c6bd2fe14cfcf9c44b32d2eaab71b02c5633e2c679f5896f73f8ac4036ba2e67a4c806e8f428e4b11f526d7f4 languageName: node linkType: hard @@ -300,26 +300,26 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.25.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" +"@babel/core@npm:7.25.8": + version: 7.25.8 + resolution: "@babel/core@npm:7.25.8" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helpers": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.8" + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.8" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 + checksum: 10c0/8411ea506e6f7c8a39ab5c1524b00589fa3b087edb47389708f7fe07170929192171734666e3ea10b95a951643a531a6d09eedfe071572c9ea28516646265086 languageName: node linkType: hard @@ -404,27 +404,15 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/generator@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/06b1f3350baf527a3309e50ffd7065f7aee04dd06e1e7db794ddfde7fe9d81f28df64edd587173f8f9295496a7ddb74b9a185d4bf4de7bb619e6d4ec45c8fd35 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/generator@npm:7.25.0" +"@babel/generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/generator@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.25.0" + "@babel/types": "npm:^7.25.7" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/d0e2dfcdc8bdbb5dded34b705ceebf2e0bc1b06795a1530e64fb6a3ccf313c189db7f60c1616effae48114e1a25adc75855bc4496f3779a396b3377bae718ce7 + jsesc: "npm:^3.0.2" + checksum: 10c0/c03a26c79864d60d04ce36b649c3fa0d6fd7b2bf6a22e22854a0457aa09206508392dd73ee40e7bc8d50b3602f9ff068afa47770cda091d332e7db1ca382ee96 languageName: node linkType: hard @@ -492,16 +480,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-compilation-targets@npm:7.25.7" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 + checksum: 10c0/705be7e5274a3fdade68e3e2cf42e2b600316ab52794e13b91299a16f16c926f15886b6e9d6df20eb943ccc1cdba5a363d4766f8d01e47b8e6f4e01175f5e66c languageName: node linkType: hard @@ -618,15 +606,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-environment-visitor@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/36ece78882b5960e2d26abf13cf15ff5689bf7c325b10a2895a74a499e712de0d305f8d78bb382dd3c05cfba7e47ec98fe28aab5674243e0625cd38438dd0b2d - languageName: node - linkType: hard - "@babel/helper-explode-assignable-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" @@ -666,16 +645,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-function-name@npm:7.24.7" - dependencies: - "@babel/template": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/e5e41e6cf86bd0f8bf272cbb6e7c5ee0f3e9660414174435a46653efba4f2479ce03ce04abff2aa2ef9359cf057c79c06cb7b134a565ad9c0e8a50dcdc3b43c4 - languageName: node - linkType: hard - "@babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" @@ -694,15 +663,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-hoist-variables@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/19ee37563bbd1219f9d98991ad0e9abef77803ee5945fd85aa7aa62a67c69efca9a801696a1b58dda27f211e878b3327789e6fd2a6f6c725ccefe36774b5ce95 - languageName: node - linkType: hard - "@babel/helper-member-expression-to-functions@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" @@ -739,13 +699,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-imports@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/0fd0c3673835e5bf75558e184bcadc47c1f6dd2fe2016d53ebe1e5a6ae931a44e093015c2f9a6651c1a89f25c76d9246710c2b0b460b95ee069c464f2837fa2c languageName: node linkType: hard @@ -780,17 +740,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" +"@babel/helper-module-transforms@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-transforms@npm:7.25.7" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 + checksum: 10c0/f37fa7d1d4df21690535b278468cbd5faf0133a3080f282000cfa4f3ffc9462a1458f866b04b6a2f2d1eec4691236cba9a867da61270dab3ab19846e62f05090 languageName: node linkType: hard @@ -904,13 +864,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" +"@babel/helper-simple-access@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-simple-access@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/eed1b499bfb4f613c18debd61517e3de77b6da2727ca025aa05ac81599e0269f1dddb5237db04e8bb598115d015874752e0a7f11ff38672d74a4976097417059 languageName: node linkType: hard @@ -950,15 +910,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-split-export-declaration@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/0254577d7086bf09b01bbde98f731d4fcf4b7c3fa9634fdb87929801307c1f6202a1352e3faa5492450fa8da4420542d44de604daf540704ff349594a78184f6 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.19.4": version: 7.19.4 resolution: "@babel/helper-string-parser@npm:7.19.4" @@ -980,10 +931,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 10c0/73ef2ceb81f8294678a0afe8ab0103729c0370cac2e830e0d5128b03be5f6a2635838af31d391d763e3c5a4460ed96f42fd7c9b552130670d525be665913bc4c languageName: node linkType: hard @@ -1022,6 +973,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10c0/07438e5bf01ab2882a15027fdf39ac3b0ba1b251774a5130917907014684e2f70fef8fd620137ca062c4c4eedc388508d2ea7a3a7d9936a32785f4fe116c68c0 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-option@npm:7.18.6" @@ -1036,10 +994,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f +"@babel/helper-validator-option@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-option@npm:7.25.7" + checksum: 10c0/12ed418c8e3ed9ed44c8c80d823f4e42d399b5eb2e423adccb975e31a31a008cd3b5d8eab688b31f740caff4a1bb28fe06ea2fa7d635aee34cc0ad6995d50f0a languageName: node linkType: hard @@ -1088,13 +1046,13 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" +"@babel/helpers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helpers@npm:7.25.7" dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8 + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/3b3ae9e373bd785414195ef8f59976a69d5a6ebe0ef2165fdcc5165e5c3ee09e0fcee94bb457df2ddb8c0532e4146d0a9b7a96b3497399a4bff4ffe196b30228 languageName: node linkType: hard @@ -1142,15 +1100,15 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/highlight@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/highlight@npm:7.25.7" dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a + checksum: 10c0/1f5894fdb0a0af6101fb2822369b2eeeae32cbeae2ef73ff73fc6a0a4a20471565cd9cfa589f54ed69df66adeca7c57266031ca9134b7bd244d023a488d419aa languageName: node linkType: hard @@ -1199,21 +1157,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/parser@npm:7.24.7" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/8b244756872185a1c6f14b979b3535e682ff08cb5a2a5fd97cc36c017c7ef431ba76439e95e419d43000c5b07720495b00cf29a7f0d9a483643d08802b58819b - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/parser@npm:7.25.0" +"@babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/parser@npm:7.25.8" + dependencies: + "@babel/types": "npm:^7.25.8" bin: parser: ./bin/babel-parser.js - checksum: 10c0/4aecf13829fa6f4a66835429bd235458544d9cd14374b17c19bc7726f472727ca33f500e51e1298ddc72db93bdd77fcaa9ddc095200b0b792173069e6cf9742e + checksum: 10c0/a1a13845b7e8dda4c970791814a4bbf60004969882f18f470e260ad822d2e1f8941948f851e9335895563610f240fa6c98481ce8019865e469502bbf21daafa4 languageName: node linkType: hard @@ -3119,25 +3070,14 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/template@npm:7.24.7" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/95b0b3ee80fcef685b7f4426f5713a855ea2cd5ac4da829b213f8fb5afe48a2a14683c2ea04d446dbc7f711c33c5cd4a965ef34dcbe5bc387c9e966b67877ae3 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/template@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b + "@babel/code-frame": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/8ae9e36e4330ee83d4832531d1d9bec7dc2ef6a2a8afa1ef1229506fd60667abcb17f306d1c3d7e582251270597022990c845d5d69e7add70a5aea66720decb9 languageName: node linkType: hard @@ -3159,36 +3099,18 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/traverse@npm:7.24.7" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.24.7" - "@babel/helper-environment-visitor": "npm:^7.24.7" - "@babel/helper-function-name": "npm:^7.24.7" - "@babel/helper-hoist-variables": "npm:^7.24.7" - "@babel/helper-split-export-declaration": "npm:^7.24.7" - "@babel/parser": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/a5135e589c3f1972b8877805f50a084a04865ccb1d68e5e1f3b94a8841b3485da4142e33413d8fd76bc0e6444531d3adf1f59f359c11ffac452b743d835068ab - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/traverse@npm:7.25.2" +"@babel/traverse@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/traverse@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/1edcb602801d6ea577584e957a3f6ad48753c4ccb9373fce4c92ebfdee04833f5bd5f1b74758ab7d61fe66d6d83ffdd7c8d482f46199767feeaed6af7df2191e + checksum: 10c0/75d73e52c507a7a7a4c7971d6bf4f8f26fdd094e0d3a0193d77edf6a5efa36fc3db91ec5cc48e8b94e6eb5d5ad21af0a1040e71309172851209415fd105efb1a languageName: node linkType: hard @@ -3247,25 +3169,25 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.24.7, @babel/types@npm:^7.8.3": - version: 7.24.7 - resolution: "@babel/types@npm:7.24.7" +"@babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/types@npm:7.25.8" dependencies: - "@babel/helper-string-parser": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" to-fast-properties: "npm:^2.0.0" - checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1 + checksum: 10c0/55ca2d6df6426c98db2769ce884ce5e9de83a512ea2dd7bcf56c811984dc14351cacf42932a723630c5afcff2455809323decd645820762182f10b7b5252b59f languageName: node linkType: hard -"@babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/types@npm:7.25.2" +"@babel/types@npm:^7.8.3": + version: 7.24.7 + resolution: "@babel/types@npm:7.24.7" dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-string-parser": "npm:^7.24.7" "@babel/helper-validator-identifier": "npm:^7.24.7" to-fast-properties: "npm:^2.0.0" - checksum: 10c0/e489435856be239f8cc1120c90a197e4c2865385121908e5edb7223cfdff3768cba18f489adfe0c26955d9e7bbb1fb10625bc2517505908ceb0af848989bd864 + checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1 languageName: node linkType: hard @@ -10663,6 +10585,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 + languageName: node + linkType: hard + "jsesc@npm:~0.5.0": version: 0.5.0 resolution: "jsesc@npm:0.5.0" @@ -16441,7 +16372,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom: version: 0.0.0-use.local resolution: "websitev-2@workspace:." dependencies: - "@babel/core": "npm:7.25.2" + "@babel/core": "npm:7.25.8" "@docusaurus/core": "npm:2.3.1" "@docusaurus/module-type-aliases": "npm:2.3.1" "@docusaurus/plugin-client-redirects": "npm:2.3.1" diff --git a/yarn.lock b/yarn.lock index b63ead50211d..045c75560033 100644 --- a/yarn.lock +++ b/yarn.lock @@ -104,13 +104,13 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/code-frame@npm:7.25.7" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/highlight": "npm:^7.25.7" picocolors: "npm:^1.0.0" - checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 + checksum: 10c0/14825c298bdec914caf3d24d1383b6d4cd6b030714686004992f4fc251831ecf432236652896f99d5d341f17170ae9a07b58d8d7b15aa0df8cfa1c5a7d5474bc languageName: node linkType: hard @@ -121,33 +121,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/compat-data@npm:7.25.2" - checksum: 10c0/5bf1f14d6e5f0d37c19543e99209ff4a94bb97915e1ce01e5334a144aa08cd56b6e62ece8135dac77e126723d63d4d4b96fc603a12c43b88c28f4b5e070270c5 +"@babel/compat-data@npm:^7.25.7": + version: 7.25.8 + resolution: "@babel/compat-data@npm:7.25.8" + checksum: 10c0/8b81c17580e5fb4cbb6a3c52079f8c283fc59c0c6bd2fe14cfcf9c44b32d2eaab71b02c5633e2c679f5896f73f8ac4036ba2e67a4c806e8f428e4b11f526d7f4 languageName: node linkType: hard -"@babel/core@npm:7.25.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" +"@babel/core@npm:7.25.8": + version: 7.25.8 + resolution: "@babel/core@npm:7.25.8" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helpers": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.8" + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.8" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 + checksum: 10c0/8411ea506e6f7c8a39ab5c1524b00589fa3b087edb47389708f7fe07170929192171734666e3ea10b95a951643a531a6d09eedfe071572c9ea28516646265086 languageName: node linkType: hard @@ -197,27 +197,15 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/generator@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/06b1f3350baf527a3309e50ffd7065f7aee04dd06e1e7db794ddfde7fe9d81f28df64edd587173f8f9295496a7ddb74b9a185d4bf4de7bb619e6d4ec45c8fd35 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/generator@npm:7.25.0" +"@babel/generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/generator@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.25.0" + "@babel/types": "npm:^7.25.7" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/d0e2dfcdc8bdbb5dded34b705ceebf2e0bc1b06795a1530e64fb6a3ccf313c189db7f60c1616effae48114e1a25adc75855bc4496f3779a396b3377bae718ce7 + jsesc: "npm:^3.0.2" + checksum: 10c0/c03a26c79864d60d04ce36b649c3fa0d6fd7b2bf6a22e22854a0457aa09206508392dd73ee40e7bc8d50b3602f9ff068afa47770cda091d332e7db1ca382ee96 languageName: node linkType: hard @@ -236,16 +224,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-compilation-targets@npm:7.25.7" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 + checksum: 10c0/705be7e5274a3fdade68e3e2cf42e2b600316ab52794e13b91299a16f16c926f15886b6e9d6df20eb943ccc1cdba5a363d4766f8d01e47b8e6f4e01175f5e66c languageName: node linkType: hard @@ -263,15 +251,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-environment-visitor@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/36ece78882b5960e2d26abf13cf15ff5689bf7c325b10a2895a74a499e712de0d305f8d78bb382dd3c05cfba7e47ec98fe28aab5674243e0625cd38438dd0b2d - languageName: node - linkType: hard - "@babel/helper-function-name@npm:^7.23.0": version: 7.23.0 resolution: "@babel/helper-function-name@npm:7.23.0" @@ -282,16 +261,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-function-name@npm:7.24.7" - dependencies: - "@babel/template": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/e5e41e6cf86bd0f8bf272cbb6e7c5ee0f3e9660414174435a46653efba4f2479ce03ce04abff2aa2ef9359cf057c79c06cb7b134a565ad9c0e8a50dcdc3b43c4 - languageName: node - linkType: hard - "@babel/helper-hoist-variables@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-hoist-variables@npm:7.22.5" @@ -301,15 +270,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-hoist-variables@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/19ee37563bbd1219f9d98991ad0e9abef77803ee5945fd85aa7aa62a67c69efca9a801696a1b58dda27f211e878b3327789e6fd2a6f6c725ccefe36774b5ce95 - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-module-imports@npm:7.18.6" @@ -319,13 +279,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-imports@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/0fd0c3673835e5bf75558e184bcadc47c1f6dd2fe2016d53ebe1e5a6ae931a44e093015c2f9a6651c1a89f25c76d9246710c2b0b460b95ee069c464f2837fa2c languageName: node linkType: hard @@ -345,17 +305,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" +"@babel/helper-module-transforms@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-transforms@npm:7.25.7" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 + checksum: 10c0/f37fa7d1d4df21690535b278468cbd5faf0133a3080f282000cfa4f3ffc9462a1458f866b04b6a2f2d1eec4691236cba9a867da61270dab3ab19846e62f05090 languageName: node linkType: hard @@ -375,13 +335,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" +"@babel/helper-simple-access@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-simple-access@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/eed1b499bfb4f613c18debd61517e3de77b6da2727ca025aa05ac81599e0269f1dddb5237db04e8bb598115d015874752e0a7f11ff38672d74a4976097417059 languageName: node linkType: hard @@ -403,15 +363,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-split-export-declaration@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/0254577d7086bf09b01bbde98f731d4fcf4b7c3fa9634fdb87929801307c1f6202a1352e3faa5492450fa8da4420542d44de604daf540704ff349594a78184f6 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.19.4": version: 7.19.4 resolution: "@babel/helper-string-parser@npm:7.19.4" @@ -433,10 +384,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 10c0/73ef2ceb81f8294678a0afe8ab0103729c0370cac2e830e0d5128b03be5f6a2635838af31d391d763e3c5a4460ed96f42fd7c9b552130670d525be665913bc4c languageName: node linkType: hard @@ -475,6 +426,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10c0/07438e5bf01ab2882a15027fdf39ac3b0ba1b251774a5130917907014684e2f70fef8fd620137ca062c4c4eedc388508d2ea7a3a7d9936a32785f4fe116c68c0 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-option@npm:7.18.6" @@ -482,10 +440,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f +"@babel/helper-validator-option@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-option@npm:7.25.7" + checksum: 10c0/12ed418c8e3ed9ed44c8c80d823f4e42d399b5eb2e423adccb975e31a31a008cd3b5d8eab688b31f740caff4a1bb28fe06ea2fa7d635aee34cc0ad6995d50f0a languageName: node linkType: hard @@ -500,13 +458,13 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" +"@babel/helpers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helpers@npm:7.25.7" dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8 + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/3b3ae9e373bd785414195ef8f59976a69d5a6ebe0ef2165fdcc5165e5c3ee09e0fcee94bb457df2ddb8c0532e4146d0a9b7a96b3497399a4bff4ffe196b30228 languageName: node linkType: hard @@ -532,15 +490,15 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/highlight@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/highlight@npm:7.25.7" dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a + checksum: 10c0/1f5894fdb0a0af6101fb2822369b2eeeae32cbeae2ef73ff73fc6a0a4a20471565cd9cfa589f54ed69df66adeca7c57266031ca9134b7bd244d023a488d419aa languageName: node linkType: hard @@ -571,21 +529,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/parser@npm:7.24.7" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/8b244756872185a1c6f14b979b3535e682ff08cb5a2a5fd97cc36c017c7ef431ba76439e95e419d43000c5b07720495b00cf29a7f0d9a483643d08802b58819b - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/parser@npm:7.25.0" +"@babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/parser@npm:7.25.8" + dependencies: + "@babel/types": "npm:^7.25.8" bin: parser: ./bin/babel-parser.js - checksum: 10c0/4aecf13829fa6f4a66835429bd235458544d9cd14374b17c19bc7726f472727ca33f500e51e1298ddc72db93bdd77fcaa9ddc095200b0b792173069e6cf9742e + checksum: 10c0/a1a13845b7e8dda4c970791814a4bbf60004969882f18f470e260ad822d2e1f8941948f851e9335895563610f240fa6c98481ce8019865e469502bbf21daafa4 languageName: node linkType: hard @@ -783,25 +734,14 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/template@npm:7.24.7" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/95b0b3ee80fcef685b7f4426f5713a855ea2cd5ac4da829b213f8fb5afe48a2a14683c2ea04d446dbc7f711c33c5cd4a965ef34dcbe5bc387c9e966b67877ae3 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/template@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b + "@babel/code-frame": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/8ae9e36e4330ee83d4832531d1d9bec7dc2ef6a2a8afa1ef1229506fd60667abcb17f306d1c3d7e582251270597022990c845d5d69e7add70a5aea66720decb9 languageName: node linkType: hard @@ -823,36 +763,18 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/traverse@npm:7.24.7" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.24.7" - "@babel/helper-environment-visitor": "npm:^7.24.7" - "@babel/helper-function-name": "npm:^7.24.7" - "@babel/helper-hoist-variables": "npm:^7.24.7" - "@babel/helper-split-export-declaration": "npm:^7.24.7" - "@babel/parser": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/a5135e589c3f1972b8877805f50a084a04865ccb1d68e5e1f3b94a8841b3485da4142e33413d8fd76bc0e6444531d3adf1f59f359c11ffac452b743d835068ab - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/traverse@npm:7.25.2" +"@babel/traverse@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/traverse@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/1edcb602801d6ea577584e957a3f6ad48753c4ccb9373fce4c92ebfdee04833f5bd5f1b74758ab7d61fe66d6d83ffdd7c8d482f46199767feeaed6af7df2191e + checksum: 10c0/75d73e52c507a7a7a4c7971d6bf4f8f26fdd094e0d3a0193d77edf6a5efa36fc3db91ec5cc48e8b94e6eb5d5ad21af0a1040e71309172851209415fd105efb1a languageName: node linkType: hard @@ -900,25 +822,25 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.24.7, @babel/types@npm:^7.8.3": - version: 7.24.7 - resolution: "@babel/types@npm:7.24.7" +"@babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/types@npm:7.25.8" dependencies: - "@babel/helper-string-parser": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" to-fast-properties: "npm:^2.0.0" - checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1 + checksum: 10c0/55ca2d6df6426c98db2769ce884ce5e9de83a512ea2dd7bcf56c811984dc14351cacf42932a723630c5afcff2455809323decd645820762182f10b7b5252b59f languageName: node linkType: hard -"@babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/types@npm:7.25.2" +"@babel/types@npm:^7.8.3": + version: 7.24.7 + resolution: "@babel/types@npm:7.24.7" dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-string-parser": "npm:^7.24.7" "@babel/helper-validator-identifier": "npm:^7.24.7" to-fast-properties: "npm:^2.0.0" - checksum: 10c0/e489435856be239f8cc1120c90a197e4c2865385121908e5edb7223cfdff3768cba18f489adfe0c26955d9e7bbb1fb10625bc2517505908ceb0af848989bd864 + checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1 languageName: node linkType: hard @@ -2819,17 +2741,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.1": - version: 4.23.2 - resolution: "browserslist@npm:4.23.2" +"browserslist@npm:^4.24.0": + version: 4.24.0 + resolution: "browserslist@npm:4.24.0" dependencies: - caniuse-lite: "npm:^1.0.30001640" - electron-to-chromium: "npm:^1.4.820" - node-releases: "npm:^2.0.14" + caniuse-lite: "npm:^1.0.30001663" + electron-to-chromium: "npm:^1.5.28" + node-releases: "npm:^2.0.18" update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10c0/0217d23c69ed61cdd2530c7019bf7c822cd74c51f8baab18dd62457fed3129f52499f8d3a6f809ae1fb7bb3050aa70caa9a529cc36c7478427966dbf429723a5 + checksum: 10c0/95e76ad522753c4c470427f6e3c8a4bb5478ff448841e22b3d3e53f89ecaf17b6984666d6c7e715c370f1e7fa0cf684f42e34e554236a8b2fab38ea76b9e4c52 languageName: node linkType: hard @@ -2957,10 +2879,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001640": - version: 1.0.30001644 - resolution: "caniuse-lite@npm:1.0.30001644" - checksum: 10c0/96de82909f3ba9f44e5b261c42d3d8814ba99b7b8b48eb8f8eafb7015804ccb2bc2120c5fbc5e193e14e0c87bf1cd0d4de920d8f5a5b477e66e8f0c3972d0eb7 +"caniuse-lite@npm:^1.0.30001663": + version: 1.0.30001669 + resolution: "caniuse-lite@npm:1.0.30001669" + checksum: 10c0/f125f23440d3dbb6c25ffb8d55f4ce48af36a84d0932b152b3b74f143a4170cbe92e02b0a9676209c86609bf7bf34119ff10cc2bc7c1b7ea40e936cc16598408 languageName: node linkType: hard @@ -3849,10 +3771,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.820": - version: 1.5.3 - resolution: "electron-to-chromium@npm:1.5.3" - checksum: 10c0/acd4dad650dafa16c4bd19868fe79c58ae3208f666d868ef8d4c81012707b2855b1816241d1c243b50c75a6933817a9e33401a5a17bc4222c52a5ee8abf457e8 +"electron-to-chromium@npm:^1.5.28": + version: 1.5.40 + resolution: "electron-to-chromium@npm:1.5.40" + checksum: 10c0/3f97360627cf179b344a7d45b3d12fd3f18f1287529d9835a8e802c7a3b99f09e326b4ed3097be1b135e45a33e8497e758b0c101e38e5bb405eaa6aa887eca82 languageName: node linkType: hard @@ -6066,6 +5988,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 + languageName: node + linkType: hard + "json-diff@npm:^1.0.6": version: 1.0.6 resolution: "json-diff@npm:1.0.6" @@ -7035,10 +6966,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 languageName: node linkType: hard @@ -9407,7 +9338,7 @@ __metadata: resolution: "unleash-server@workspace:." dependencies: "@apidevtools/swagger-parser": "npm:10.1.0" - "@babel/core": "npm:7.25.2" + "@babel/core": "npm:7.25.8" "@biomejs/biome": "npm:^1.8.3" "@cyclonedx/yarn-plugin-cyclonedx": "npm:^1.0.0-rc.7" "@slack/web-api": "npm:^7.3.4" From 8bf64939f016cdfabfcb5dfeeca33c3d002cc763 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 22:33:05 +0000 Subject: [PATCH 2/9] chore(deps): update dependency @types/node to v20.16.11 (#8472) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.16.5` -> `20.16.11`](https://renovatebot.com/diffs/npm/@types%2fnode/20.16.5/20.16.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.16.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.16.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.16.5/20.16.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.16.5/20.16.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am every weekday" in timezone Europe/Madrid, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/Unleash/unleash). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 1d3c1d2271c5..a879ec856a14 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2743,20 +2743,20 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.5.5 - resolution: "@types/node@npm:22.5.5" + version: 22.7.6 + resolution: "@types/node@npm:22.7.6" dependencies: undici-types: "npm:~6.19.2" - checksum: 10c0/ead9495cfc6b1da5e7025856dcce2591e9bae635357410c0d2dd619fce797d2a1d402887580ca4b336cb78168b195224869967de370a23f61663cf1e4836121c + checksum: 10c0/d4406a63afce981c363fb1d1954aaf1759ad2d487c0833ebf667565ea4e45ff217d6fab4b5343badbdeccdf9d2e4a0841d633e0c929ceabcb33c288663dd0c73 languageName: node linkType: hard "@types/node@npm:^20.12.12, @types/node@npm:^20.12.13": - version: 20.16.5 - resolution: "@types/node@npm:20.16.5" + version: 20.16.12 + resolution: "@types/node@npm:20.16.12" dependencies: undici-types: "npm:~6.19.2" - checksum: 10c0/6af7994129815010bcbc4cf8221865559c8116ff43e74a6549525c2108267596fc2d18aff5d5ecfe089fb60a119f975631343e2c65c52bfa0955ed9dc56733d6 + checksum: 10c0/f6a3c90c6745881d47f8dae7eb39d0dd6df9a4060c8f1ab7004690f60b9b183d862c9c6b380b9e8d5a17dd670ac7b19d6318f24c170897c85a9729f9804f47cf languageName: node linkType: hard From 54a6b036dbb87be1cf9d138b1d459be86bb7dc4f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 00:27:52 +0000 Subject: [PATCH 3/9] chore(deps): update dependency @swc/core to v1.7.35 (#8473) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@swc/core](https://swc.rs) ([source](https://redirect.github.com/swc-project/swc)) | [`1.7.26` -> `1.7.35`](https://renovatebot.com/diffs/npm/@swc%2fcore/1.7.26/1.7.35) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@swc%2fcore/1.7.35?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@swc%2fcore/1.7.35?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@swc%2fcore/1.7.26/1.7.35?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@swc%2fcore/1.7.26/1.7.35?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
swc-project/swc (@​swc/core) ### [`v1.7.35`](https://redirect.github.com/swc-project/swc/blob/HEAD/CHANGELOG.md#1735---2024-10-10) [Compare Source](https://redirect.github.com/swc-project/swc/compare/v1.7.28...v1.7.35) ##### Bug Fixes - **(ci)** Fix target triples ([#​9622](https://redirect.github.com/swc-project/swc/issues/9622)) ([f625035](https://redirect.github.com/swc-project/swc/commit/f625035f8a21eb6d2bc487669a534257f3ef7c7c)) - **(es/codegen)** Fix source map so it works with Sentry ([#​9627](https://redirect.github.com/swc-project/swc/issues/9627)) ([9c90a73](https://redirect.github.com/swc-project/swc/commit/9c90a733691e9a15bc1c4182edabcefa8054e9d3)) - **(es/minifier)** Compress consecutive return statements properly ([#​9620](https://redirect.github.com/swc-project/swc/issues/9620)) ([8263da1](https://redirect.github.com/swc-project/swc/commit/8263da17664cc7cb5d49e1a8e9fbca8037fe991f)) - **(es/module)** Allow TypeScript nodes for `Rewriter` ([#​9606](https://redirect.github.com/swc-project/swc/issues/9606)) ([4ee45ac](https://redirect.github.com/swc-project/swc/commit/4ee45ac1fd10da1ea982a152a458deb9f5359998)) - **(es/testing)** Revert [#​9264](https://redirect.github.com/swc-project/swc/issues/9264) ([#​9621](https://redirect.github.com/swc-project/swc/issues/9621)) ([85f5e5b](https://redirect.github.com/swc-project/swc/commit/85f5e5b955f65ad6b21b9f4aee5b8dacd8a71e93)) - **(html/minifier)** Fix HTML minifier TS types ([#​9615](https://redirect.github.com/swc-project/swc/issues/9615)) ([7b98bb5](https://redirect.github.com/swc-project/swc/commit/7b98bb5e93b132fa14af27b1eadbcf38f0bbcb62)) ##### Features - **(bindings/html)** Accept `Buffer|string` instead of `Buffer` ([#​9625](https://redirect.github.com/swc-project/swc/issues/9625)) ([62edb36](https://redirect.github.com/swc-project/swc/commit/62edb3628b26036cdc767b31d59e109c3970497c)) - **(es/preset-env)** Update preset-env data ([#​9573](https://redirect.github.com/swc-project/swc/issues/9573)) ([9a11d34](https://redirect.github.com/swc-project/swc/commit/9a11d34ee569f64e8db02fc90beacbba0f2de0cf)) - **(es/testing)** Parse test code as a `Program` instead of a `Module` ([#​9264](https://redirect.github.com/swc-project/swc/issues/9264)) ([166b858](https://redirect.github.com/swc-project/swc/commit/166b8581c226b127f5d503cd21c22c0a3a8c675c)) - **(es/testing)** Parse test code as a `Program` instead of a `Module` ([#​9623](https://redirect.github.com/swc-project/swc/issues/9623)) ([bfea322](https://redirect.github.com/swc-project/swc/commit/bfea3223515e378c3ebe669f4a9012919f4f9547)) ##### Miscellaneous Tasks - **(atoms)** Update `hstr` ([#​9612](https://redirect.github.com/swc-project/swc/issues/9612)) ([e2e9a9c](https://redirect.github.com/swc-project/swc/commit/e2e9a9ccfce75e69546c54fc88a708b4e1dda13b)) ##### Performance - **(es)** Avoid needless string comparisons ([#​9613](https://redirect.github.com/swc-project/swc/issues/9613)) ([ec0a62c](https://redirect.github.com/swc-project/swc/commit/ec0a62cbc5c9a20f02d1c558ff2708e7367922a9)) - **(es/codegen)** Reduce usage of `tracing::instrument` ([#​9604](https://redirect.github.com/swc-project/swc/issues/9604)) ([2f06fc5](https://redirect.github.com/swc-project/swc/commit/2f06fc559c8e200ea89133b8b30045f970ffc20b)) - **(es/transforms)** Copy benchmarks from `oxc` ([#​9602](https://redirect.github.com/swc-project/swc/issues/9602)) ([24c3a0c](https://redirect.github.com/swc-project/swc/commit/24c3a0ce138bacbf12b4660862ccfe9e3d19bdd9)) - **(es/typescript)** Reduce unnecessary visits ([#​9605](https://redirect.github.com/swc-project/swc/issues/9605)) ([866af6c](https://redirect.github.com/swc-project/swc/commit/866af6c9478b92cd6be780c515ddd51d2db90ac3)) ##### Refactor - **(es/typescript)** Simplifying enum and namespace transforms ([#​9558](https://redirect.github.com/swc-project/swc/issues/9558)) ([2480bb0](https://redirect.github.com/swc-project/swc/commit/2480bb00fc71d588af506eb18f33afa56622361f)) ##### Build - Update `rustc` to `nightly-2024-10-07` ([#​9624](https://redirect.github.com/swc-project/swc/issues/9624)) ([6a3b0fc](https://redirect.github.com/swc-project/swc/commit/6a3b0fc1660cba4310880881f21e3bf81aceac0d)) ### [`v1.7.28`](https://redirect.github.com/swc-project/swc/blob/HEAD/CHANGELOG.md#1728---2024-09-24) [Compare Source](https://redirect.github.com/swc-project/swc/compare/v1.7.26...v1.7.28) ##### Bug Fixes - **(ast)** Add `archive(check_bytes)` to all relevant AST types ([#​9574](https://redirect.github.com/swc-project/swc/issues/9574)) ([185d6f5](https://redirect.github.com/swc-project/swc/commit/185d6f55b35f4f8323035c1199cddb9dd547f254)) - **(cli)** Exclude non-files from get_files_list ([#​9560](https://redirect.github.com/swc-project/swc/issues/9560)) ([85cc2bd](https://redirect.github.com/swc-project/swc/commit/85cc2bd79c3193cb0a8b54e4fce0efc1aa15b271)) - **(es/codegen)** Fix wrong sourcemap when there are new lines in tpl ([#​9578](https://redirect.github.com/swc-project/swc/issues/9578)) ([cf74382](https://redirect.github.com/swc-project/swc/commit/cf74382ba0429c0d4f04428889cf53a5231fad7f)) - **(es/compat)** Skip `getter` and `setter` as FlowHelper `function` do ([#​9580](https://redirect.github.com/swc-project/swc/issues/9580)) ([14cfd70](https://redirect.github.com/swc-project/swc/commit/14cfd70ee00938497ce6b59f68332f9daa17378b)) - **(es/isolated-dts)** Preserve comments ([#​9572](https://redirect.github.com/swc-project/swc/issues/9572)) ([6d15d9c](https://redirect.github.com/swc-project/swc/commit/6d15d9c2eb4397b15908cda38f2e44e02d81ebc1)) - **(es/minifier)** Avoid decl name when mangle with eval ([#​9546](https://redirect.github.com/swc-project/swc/issues/9546)) ([e2242c4](https://redirect.github.com/swc-project/swc/commit/e2242c41c4d648a32119eb8141dd9990b2c8c468)) - **(es/minifier)** Check variable type while optimizing `+=` ([#​9575](https://redirect.github.com/swc-project/swc/issues/9575)) ([04016e9](https://redirect.github.com/swc-project/swc/commit/04016e9687c5f02e764ffc9d7be2432d16da5dc0)) - **(es/module)** Rewrite import specifier in type declaration ([#​9577](https://redirect.github.com/swc-project/swc/issues/9577)) ([fc0ba2a](https://redirect.github.com/swc-project/swc/commit/fc0ba2a08408b90f7d799cd5707dfa6827334085)) - **(plugin)** Don't panic when ast byte not match ([#​9562](https://redirect.github.com/swc-project/swc/issues/9562)) ([c36871a](https://redirect.github.com/swc-project/swc/commit/c36871a84826cc125c3c10a78ee2d7a435373154)) ##### Miscellaneous Tasks - **(es)** Update `wasmer` to `v4.3.7` ([#​9557](https://redirect.github.com/swc-project/swc/issues/9557)) ([190d6f0](https://redirect.github.com/swc-project/swc/commit/190d6f06d9545e4206bdb53c0f1ba2d443a5a7ab)) ##### Testing - **(es)** Add tests for arm64 windows ([#​9547](https://redirect.github.com/swc-project/swc/issues/9547)) ([9dd8f6f](https://redirect.github.com/swc-project/swc/commit/9dd8f6facf29817902ddf55ec0388061585cbf7d))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am every weekday" in timezone Europe/Madrid, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/Unleash/unleash). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 100 +++++++++++++++++++++++++-------------------------- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index cf87ef2858e7..6d86bc66ad6e 100644 --- a/package.json +++ b/package.json @@ -176,7 +176,7 @@ "@babel/core": "7.25.8", "@biomejs/biome": "^1.8.3", "@cyclonedx/yarn-plugin-cyclonedx": "^1.0.0-rc.7", - "@swc/core": "1.7.26", + "@swc/core": "1.7.35", "@swc/jest": "0.2.36", "@types/bcryptjs": "2.4.6", "@types/cors": "2.8.17", diff --git a/yarn.lock b/yarn.lock index 045c75560033..49779d20bf07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1574,92 +1574,92 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-darwin-arm64@npm:1.7.26" +"@swc/core-darwin-arm64@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-darwin-arm64@npm:1.7.35" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-darwin-x64@npm:1.7.26" +"@swc/core-darwin-x64@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-darwin-x64@npm:1.7.35" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.26" +"@swc/core-linux-arm-gnueabihf@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.35" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.26" +"@swc/core-linux-arm64-gnu@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.35" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.26" +"@swc/core-linux-arm64-musl@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.35" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.26" +"@swc/core-linux-x64-gnu@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.35" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-linux-x64-musl@npm:1.7.26" +"@swc/core-linux-x64-musl@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-linux-x64-musl@npm:1.7.35" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.26" +"@swc/core-win32-arm64-msvc@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.35" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.26" +"@swc/core-win32-ia32-msvc@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.35" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.26" +"@swc/core-win32-x64-msvc@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.35" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core@npm:1.7.26": - version: 1.7.26 - resolution: "@swc/core@npm:1.7.26" +"@swc/core@npm:1.7.35": + version: 1.7.35 + resolution: "@swc/core@npm:1.7.35" dependencies: - "@swc/core-darwin-arm64": "npm:1.7.26" - "@swc/core-darwin-x64": "npm:1.7.26" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.26" - "@swc/core-linux-arm64-gnu": "npm:1.7.26" - "@swc/core-linux-arm64-musl": "npm:1.7.26" - "@swc/core-linux-x64-gnu": "npm:1.7.26" - "@swc/core-linux-x64-musl": "npm:1.7.26" - "@swc/core-win32-arm64-msvc": "npm:1.7.26" - "@swc/core-win32-ia32-msvc": "npm:1.7.26" - "@swc/core-win32-x64-msvc": "npm:1.7.26" + "@swc/core-darwin-arm64": "npm:1.7.35" + "@swc/core-darwin-x64": "npm:1.7.35" + "@swc/core-linux-arm-gnueabihf": "npm:1.7.35" + "@swc/core-linux-arm64-gnu": "npm:1.7.35" + "@swc/core-linux-arm64-musl": "npm:1.7.35" + "@swc/core-linux-x64-gnu": "npm:1.7.35" + "@swc/core-linux-x64-musl": "npm:1.7.35" + "@swc/core-win32-arm64-msvc": "npm:1.7.35" + "@swc/core-win32-ia32-msvc": "npm:1.7.35" + "@swc/core-win32-x64-msvc": "npm:1.7.35" "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.12" + "@swc/types": "npm:^0.1.13" peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -1686,7 +1686,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10c0/6c5ce3d048cb100cd545145b1701a857207b1aeecc8f6bc44ed10b0a1792052834d155a6fa651dad20f38d3fff595034649cc75618946be8da751fa86a9c75b7 + checksum: 10c0/aae11f2f311f16a21348e33768debe2295a7e0a04f4b37ffbbb15cf5303e0cd08cf0c72661b72f8e4e33cf530d82c15bb2cef090548c65c4bf3ab3854724465b languageName: node linkType: hard @@ -1710,12 +1710,12 @@ __metadata: languageName: node linkType: hard -"@swc/types@npm:^0.1.12": - version: 0.1.12 - resolution: "@swc/types@npm:0.1.12" +"@swc/types@npm:^0.1.13": + version: 0.1.13 + resolution: "@swc/types@npm:0.1.13" dependencies: "@swc/counter": "npm:^0.1.3" - checksum: 10c0/f95fea7dee8fc07f8389afbb9578f3d0cd84b429b1d0dbff7fd99b2ef06ed88e96bc33631f36c3bc0505d5a783bee1374acd84b8fc2593001219b6c2caba241b + checksum: 10c0/f85a850dead981ca9a26ae366529f2b383fa26324ffcbbee46d7b48399e6ed36d6a6a3d55398f17f87c65f550e28d642a35877d40f389c78765a31ecdfc88bd9 languageName: node linkType: hard @@ -9342,7 +9342,7 @@ __metadata: "@biomejs/biome": "npm:^1.8.3" "@cyclonedx/yarn-plugin-cyclonedx": "npm:^1.0.0-rc.7" "@slack/web-api": "npm:^7.3.4" - "@swc/core": "npm:1.7.26" + "@swc/core": "npm:1.7.35" "@swc/jest": "npm:0.2.36" "@types/bcryptjs": "npm:2.4.6" "@types/cors": "npm:2.8.17" From d9646edcfc77e763af2ae4c251eeafb724ee4104 Mon Sep 17 00:00:00 2001 From: David Leek Date: Fri, 18 Oct 2024 08:23:52 +0200 Subject: [PATCH 4/9] feat: release plans nav menu item and icon suggestion (#8469) --- .../MainLayout/NavigationSidebar/IconRenderer.tsx | 2 ++ .../__tests__/__snapshots__/routes.test.tsx.snap | 14 ++++++++++++++ frontend/src/component/menu/routes.ts | 10 ++++++++++ .../src/component/releases/ReleaseManagement.tsx | 3 +++ frontend/src/interfaces/uiConfig.ts | 1 + src/server-dev.ts | 2 +- 6 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 frontend/src/component/releases/ReleaseManagement.tsx diff --git a/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx b/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx index d50dad6bb44d..fc9953b61cdd 100644 --- a/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx +++ b/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx @@ -27,6 +27,7 @@ import BillingIcon from '@mui/icons-material/CreditCardOutlined'; import EventLogIcon from '@mui/icons-material/EventNoteOutlined'; import GitHubIcon from '@mui/icons-material/GitHub'; import LibraryBooksIcon from '@mui/icons-material/LibraryBooks'; +import LaunchIcon from '@mui/icons-material/Launch'; import type { FC } from 'react'; // TODO: move to routes @@ -56,6 +57,7 @@ const icons: Record = { '/admin/cors': CorsIcon, '/admin/billing': BillingIcon, '/history': EventLogIcon, + '/releases-management': LaunchIcon, GitHub: GitHubIcon, Documentation: LibraryBooksIcon, }; diff --git a/frontend/src/component/menu/__tests__/__snapshots__/routes.test.tsx.snap b/frontend/src/component/menu/__tests__/__snapshots__/routes.test.tsx.snap index c536b1a46d46..3652622dc286 100644 --- a/frontend/src/component/menu/__tests__/__snapshots__/routes.test.tsx.snap +++ b/frontend/src/component/menu/__tests__/__snapshots__/routes.test.tsx.snap @@ -230,6 +230,20 @@ exports[`returns all baseRoutes 1`] = ` "title": "Strategy types", "type": "protected", }, + { + "component": [Function], + "enterprise": true, + "flag": "releasePlans", + "menu": { + "advanced": true, + "mode": [ + "enterprise", + ], + }, + "path": "/releases-management", + "title": "Release management", + "type": "protected", + }, { "component": [Function], "menu": {}, diff --git a/frontend/src/component/menu/routes.ts b/frontend/src/component/menu/routes.ts index 9428131149a0..07090d77c119 100644 --- a/frontend/src/component/menu/routes.ts +++ b/frontend/src/component/menu/routes.ts @@ -48,6 +48,7 @@ import { Application } from 'component/application/Application'; import { Signals } from 'component/signals/Signals'; import { LazyCreateProject } from '../project/Project/CreateProject/LazyCreateProject'; import { PersonalDashboard } from '../personalDashboard/PersonalDashboard'; +import { ReleaseManagement } from 'component/releases/ReleaseManagement'; export const routes: IRoute[] = [ // Splash @@ -246,6 +247,15 @@ export const routes: IRoute[] = [ type: 'protected', menu: { mobile: true, advanced: true }, }, + { + path: '/releases-management', + title: 'Release management', + component: ReleaseManagement, + type: 'protected', + menu: { advanced: true, mode: ['enterprise'] }, + flag: 'releasePlans', + enterprise: true, + }, { path: '/environments/create', title: 'Environments', diff --git a/frontend/src/component/releases/ReleaseManagement.tsx b/frontend/src/component/releases/ReleaseManagement.tsx new file mode 100644 index 000000000000..929eedca3711 --- /dev/null +++ b/frontend/src/component/releases/ReleaseManagement.tsx @@ -0,0 +1,3 @@ +export const ReleaseManagement = () => { + return null; +}; diff --git a/frontend/src/interfaces/uiConfig.ts b/frontend/src/interfaces/uiConfig.ts index a627e8895e8c..ca6c80965b00 100644 --- a/frontend/src/interfaces/uiConfig.ts +++ b/frontend/src/interfaces/uiConfig.ts @@ -92,6 +92,7 @@ export type UiFlags = { personalDashboardUI?: boolean; purchaseAdditionalEnvironments?: boolean; unleashAI?: boolean; + releasePlans?: boolean; }; export interface IVersionInfo { diff --git a/src/server-dev.ts b/src/server-dev.ts index bd52ea379cad..29a0e83fda1c 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -57,7 +57,7 @@ process.nextTick(async () => { unleashAI: true, webhookDomainLogging: true, addonUsageMetrics: true, - releasePlans: true, + releasePlans: false, }, }, authentication: { From 9f0c438f361fcdab6da39eaa20000aa03f9dac6e Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Fri, 18 Oct 2024 09:03:29 +0200 Subject: [PATCH 5/9] fix: add the dashboard icon to the iconrenderer (#8474) This makes the icon show up correctly in the command menu. ![image](https://github.com/user-attachments/assets/0178c9a7-3509-4f36-9a33-fe12e5a42707) --- .../layout/MainLayout/NavigationSidebar/IconRenderer.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx b/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx index fc9953b61cdd..3ce28dcecd16 100644 --- a/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx +++ b/frontend/src/component/layout/MainLayout/NavigationSidebar/IconRenderer.tsx @@ -28,6 +28,7 @@ import EventLogIcon from '@mui/icons-material/EventNoteOutlined'; import GitHubIcon from '@mui/icons-material/GitHub'; import LibraryBooksIcon from '@mui/icons-material/LibraryBooks'; import LaunchIcon from '@mui/icons-material/Launch'; +import PersonalDashboardIcon from '@mui/icons-material/DashboardOutlined'; import type { FC } from 'react'; // TODO: move to routes @@ -58,6 +59,7 @@ const icons: Record = { '/admin/billing': BillingIcon, '/history': EventLogIcon, '/releases-management': LaunchIcon, + '/personal': PersonalDashboardIcon, GitHub: GitHubIcon, Documentation: LibraryBooksIcon, }; From 88f396f6b6851efbc5c611be221a8ba31dfca5b4 Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Fri, 18 Oct 2024 11:07:06 +0200 Subject: [PATCH 6/9] fix: allow you to add spaces to role descriptions (#8475) This fixes a bug where we didn't allow spaces in role descriptions. The bug came about because we wanted to disallow empty descriptions, but that means we need to trim them before validating, not necessarily before setting it. However, that does mean that you can have descriptions with leading and trailing spaces now, but that's probably fine. To fix this, we'd have to do the trimming of the description only at submission time, I think. --- .../src/component/admin/roles/RoleForm/useRoleForm.test.ts | 4 ++-- frontend/src/component/admin/roles/RoleForm/useRoleForm.ts | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/frontend/src/component/admin/roles/RoleForm/useRoleForm.test.ts b/frontend/src/component/admin/roles/RoleForm/useRoleForm.test.ts index c9e8b431c0b1..d25da27c6b1d 100644 --- a/frontend/src/component/admin/roles/RoleForm/useRoleForm.test.ts +++ b/frontend/src/component/admin/roles/RoleForm/useRoleForm.test.ts @@ -14,14 +14,14 @@ describe('trim names and description', () => { expect(result.current.name).toBe('my role'); }); - test('description is trimmed before being set', () => { + test('description is not trimmed before being set', () => { const { result } = renderHook(() => useRoleForm()); act(() => { result.current.setDescription(' my description '); }); - expect(result.current.description).toBe('my description'); + expect(result.current.description).toBe(' my description '); }); test('name that is just whitespace triggers an error', () => { diff --git a/frontend/src/component/admin/roles/RoleForm/useRoleForm.ts b/frontend/src/component/admin/roles/RoleForm/useRoleForm.ts index f16f3e11dce9..fc077fe76e8b 100644 --- a/frontend/src/component/admin/roles/RoleForm/useRoleForm.ts +++ b/frontend/src/component/admin/roles/RoleForm/useRoleForm.ts @@ -29,8 +29,6 @@ export const useRoleForm = ( const [name, setName] = useState(initialName); const setTrimmedName = (newName: string) => setName(newName.trim()); const [description, setDescription] = useState(initialDescription); - const setTrimmedDescription = (newDescription: string) => - setDescription(newDescription.trim()); const [checkedPermissions, setCheckedPermissions] = useState({}); const [errors, setErrors] = useState(DEFAULT_ERRORS); @@ -147,7 +145,7 @@ export const useRoleForm = ( setName: setTrimmedName, validateName, description, - setDescription: setTrimmedDescription, + setDescription, validateDescription, checkedPermissions, setCheckedPermissions, From a9f9be1efa270f725def642a7dc239a3a392f5a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Fournier?= Date: Fri, 18 Oct 2024 11:11:22 +0200 Subject: [PATCH 7/9] chore: add a class to handle aggreggation queries (#8446) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About the changes We have many aggregation queries that run on a schedule: https://github.com/Unleash/unleash/blob/f63496d47f6808a246732f5ddee9b9136e23eca7/src/lib/metrics.ts#L714-L719 These staticCounters are usually doing db query aggregations that traverse tables and we run all of them in parallel: https://github.com/Unleash/unleash/blob/f63496d47f6808a246732f5ddee9b9136e23eca7/src/lib/metrics.ts#L410-L412 This can add strain to the db. This PR suggests a way of handling these queries in a more structured way, allowing us to run them sequentially (therefore spreading the load): https://github.com/Unleash/unleash/blob/f02fe87835c30d77ff8b6755268e123585820511/src/lib/metrics-gauge.ts#L38-L40 As an additional benefit, we get both the gauge definition and the queries in a single place: https://github.com/Unleash/unleash/blob/f02fe87835c30d77ff8b6755268e123585820511/src/lib/metrics.ts#L131-L141 This PR only tackles 1 metric, and it only focuses on gauges to gather initial feedback. The plan is to migrate these metrics and eventually incorporate more types (e.g. counters) --------- Co-authored-by: Nuno Góis --- .../instance-stats-service.test.ts | 42 +- .../instance-stats/instance-stats-service.ts | 108 +- .../features/scheduler/schedule-services.ts | 6 +- src/lib/metrics-gauge.test.ts | 114 ++ src/lib/metrics-gauge.ts | 94 + src/lib/metrics.test.ts | 31 +- src/lib/metrics.ts | 1707 +++++++++-------- .../e2e/api/admin/instance-admin.e2e.test.ts | 13 + 8 files changed, 1204 insertions(+), 911 deletions(-) create mode 100644 src/lib/metrics-gauge.test.ts create mode 100644 src/lib/metrics-gauge.ts diff --git a/src/lib/features/instance-stats/instance-stats-service.test.ts b/src/lib/features/instance-stats/instance-stats-service.test.ts index d3f423bec1a6..26a5f7009502 100644 --- a/src/lib/features/instance-stats/instance-stats-service.test.ts +++ b/src/lib/features/instance-stats/instance-stats-service.test.ts @@ -4,11 +4,18 @@ import createStores from '../../../test/fixtures/store'; import VersionService from '../../services/version-service'; import { createFakeGetActiveUsers } from './getActiveUsers'; import { createFakeGetProductionChanges } from './getProductionChanges'; - +import { registerPrometheusMetrics } from '../../metrics'; +import { register } from 'prom-client'; +import type { IClientInstanceStore } from '../../types'; let instanceStatsService: InstanceStatsService; let versionService: VersionService; - +let clientInstanceStore: IClientInstanceStore; +let updateMetrics: () => Promise; beforeEach(() => { + jest.clearAllMocks(); + + register.clear(); + const config = createTestConfig(); const stores = createStores(); versionService = new VersionService( @@ -17,6 +24,7 @@ beforeEach(() => { createFakeGetActiveUsers(), createFakeGetProductionChanges(), ); + clientInstanceStore = stores.clientInstanceStore; instanceStatsService = new InstanceStatsService( stores, config, @@ -25,23 +33,28 @@ beforeEach(() => { createFakeGetProductionChanges(), ); - jest.spyOn(instanceStatsService, 'refreshAppCountSnapshot'); - jest.spyOn(instanceStatsService, 'getLabeledAppCounts'); + const { collectDbMetrics } = registerPrometheusMetrics( + config, + stores, + undefined as unknown as string, + config.eventBus, + instanceStatsService, + ); + updateMetrics = collectDbMetrics; + + jest.spyOn(clientInstanceStore, 'getDistinctApplicationsCount'); jest.spyOn(instanceStatsService, 'getStats'); - // validate initial state without calls to these methods - expect(instanceStatsService.refreshAppCountSnapshot).toHaveBeenCalledTimes( - 0, - ); expect(instanceStatsService.getStats).toHaveBeenCalledTimes(0); }); test('get snapshot should not call getStats', async () => { - await instanceStatsService.refreshAppCountSnapshot(); - expect(instanceStatsService.getLabeledAppCounts).toHaveBeenCalledTimes(1); + await updateMetrics(); + expect( + clientInstanceStore.getDistinctApplicationsCount, + ).toHaveBeenCalledTimes(3); expect(instanceStatsService.getStats).toHaveBeenCalledTimes(0); - // subsequent calls to getStatsSnapshot don't call getStats for (let i = 0; i < 3; i++) { const { clientApps } = await instanceStatsService.getStats(); expect(clientApps).toStrictEqual([ @@ -51,12 +64,11 @@ test('get snapshot should not call getStats', async () => { ]); } // after querying the stats snapshot no call to getStats should be issued - expect(instanceStatsService.getLabeledAppCounts).toHaveBeenCalledTimes(1); + expect( + clientInstanceStore.getDistinctApplicationsCount, + ).toHaveBeenCalledTimes(3); }); test('before the snapshot is refreshed we can still get the appCount', async () => { - expect(instanceStatsService.refreshAppCountSnapshot).toHaveBeenCalledTimes( - 0, - ); expect(instanceStatsService.getAppCountSnapshot('7d')).toBeUndefined(); }); diff --git a/src/lib/features/instance-stats/instance-stats-service.ts b/src/lib/features/instance-stats/instance-stats-service.ts index 3fb505fd6480..24e04ef3dfaa 100644 --- a/src/lib/features/instance-stats/instance-stats-service.ts +++ b/src/lib/features/instance-stats/instance-stats-service.ts @@ -109,9 +109,9 @@ export class InstanceStatsService { private appCount?: Partial<{ [key in TimeRange]: number }>; - private getActiveUsers: GetActiveUsers; + getActiveUsers: GetActiveUsers; - private getProductionChanges: GetProductionChanges; + getProductionChanges: GetProductionChanges; private featureStrategiesReadModel: IFeatureStrategiesReadModel; @@ -180,25 +180,6 @@ export class InstanceStatsService { this.featureStrategiesReadModel = featureStrategiesReadModel; } - async refreshAppCountSnapshot(): Promise< - Partial<{ [key in TimeRange]: number }> - > { - try { - this.appCount = await this.getLabeledAppCounts(); - return this.appCount; - } catch (error) { - this.logger.warn( - 'Unable to retrieve statistics. This will be retried', - error, - ); - return { - '7d': 0, - '30d': 0, - allTime: 0, - }; - } - } - getProjectModeCount(): Promise { return this.projectStore.getProjectModeCounts(); } @@ -231,9 +212,6 @@ export class InstanceStatsService { return settings?.enabled || false; } - /** - * use getStatsSnapshot for low latency, sacrificing data-freshness - */ async getStats(): Promise { const versionInfo = await this.versionService.getVersionInfo(); const [ @@ -265,22 +243,22 @@ export class InstanceStatsService { ] = await Promise.all([ this.getToggleCount(), this.getArchivedToggleCount(), - this.userStore.count(), - this.userStore.countServiceAccounts(), - this.apiTokenStore.countByType(), + this.getRegisteredUsers(), + this.countServiceAccounts(), + this.countApiTokensByType(), this.getActiveUsers(), this.getProjectModeCount(), - this.contextFieldStore.count(), - this.groupStore.count(), - this.roleStore.count(), - this.roleStore.filteredCount({ type: CUSTOM_ROOT_ROLE_TYPE }), - this.roleStore.filteredCountInUse({ type: CUSTOM_ROOT_ROLE_TYPE }), - this.environmentStore.count(), - this.segmentStore.count(), - this.strategyStore.count(), + this.contextFieldCount(), + this.groupCount(), + this.roleCount(), + this.customRolesCount(), + this.customRolesCountInUse(), + this.environmentCount(), + this.segmentCount(), + this.strategiesCount(), this.hasSAML(), this.hasOIDC(), - this.appCount ? this.appCount : this.refreshAppCountSnapshot(), + this.appCount ? this.appCount : this.getLabeledAppCounts(), this.eventStore.deprecatedFilteredCount({ type: FEATURES_EXPORTED, }), @@ -288,7 +266,7 @@ export class InstanceStatsService { type: FEATURES_IMPORTED, }), this.getProductionChanges(), - this.clientMetricsStore.countPreviousDayHourlyMetricsBuckets(), + this.countPreviousDayHourlyMetricsBuckets(), this.featureStrategiesReadModel.getMaxFeatureEnvironmentStrategies(), this.featureStrategiesReadModel.getMaxConstraintValues(), this.featureStrategiesReadModel.getMaxConstraintsPerStrategy(), @@ -330,6 +308,59 @@ export class InstanceStatsService { }; } + groupCount(): Promise { + return this.groupStore.count(); + } + + roleCount(): Promise { + return this.roleStore.count(); + } + + customRolesCount(): Promise { + return this.roleStore.filteredCount({ type: CUSTOM_ROOT_ROLE_TYPE }); + } + + customRolesCountInUse(): Promise { + return this.roleStore.filteredCountInUse({ + type: CUSTOM_ROOT_ROLE_TYPE, + }); + } + + segmentCount(): Promise { + return this.segmentStore.count(); + } + + contextFieldCount(): Promise { + return this.contextFieldStore.count(); + } + + strategiesCount(): Promise { + return this.strategyStore.count(); + } + + environmentCount(): Promise { + return this.environmentStore.count(); + } + + countPreviousDayHourlyMetricsBuckets(): Promise<{ + enabledCount: number; + variantCount: number; + }> { + return this.clientMetricsStore.countPreviousDayHourlyMetricsBuckets(); + } + + countApiTokensByType(): Promise> { + return this.apiTokenStore.countByType(); + } + + getRegisteredUsers(): Promise { + return this.userStore.count(); + } + + countServiceAccounts(): Promise { + return this.userStore.countServiceAccounts(); + } + async getLabeledAppCounts(): Promise< Partial<{ [key in TimeRange]: number }> > { @@ -338,11 +369,12 @@ export class InstanceStatsService { this.clientInstanceStore.getDistinctApplicationsCount(30), this.clientInstanceStore.getDistinctApplicationsCount(), ]); - return { + this.appCount = { '7d': t7d, '30d': t30d, allTime, }; + return this.appCount; } getAppCountSnapshot(range: TimeRange): number | undefined { diff --git a/src/lib/features/scheduler/schedule-services.ts b/src/lib/features/scheduler/schedule-services.ts index 95e03c114b19..69d3a218fc1e 100644 --- a/src/lib/features/scheduler/schedule-services.ts +++ b/src/lib/features/scheduler/schedule-services.ts @@ -59,8 +59,12 @@ export const scheduleServices = async ( 'updateLastSeen', ); + // TODO this works fine for keeping labeledAppCounts up to date, but + // it would be nice if we can keep client_apps_total prometheus metric + // up to date. We'd need to have access to DbMetricsMonitor, which is + // where the metric is registered and call an update only for that metric schedulerService.schedule( - instanceStatsService.refreshAppCountSnapshot.bind(instanceStatsService), + instanceStatsService.getLabeledAppCounts.bind(instanceStatsService), minutesToMilliseconds(5), 'refreshAppCountSnapshot', ); diff --git a/src/lib/metrics-gauge.test.ts b/src/lib/metrics-gauge.test.ts new file mode 100644 index 000000000000..e024563f9628 --- /dev/null +++ b/src/lib/metrics-gauge.test.ts @@ -0,0 +1,114 @@ +import { register } from 'prom-client'; +import { createTestConfig } from '../test/config/test-config'; +import type { IUnleashConfig } from './types'; +import { DbMetricsMonitor } from './metrics-gauge'; + +const prometheusRegister = register; +let config: IUnleashConfig; +let dbMetrics: DbMetricsMonitor; + +beforeAll(async () => { + config = createTestConfig({ + server: { + serverMetrics: true, + }, + }); +}); + +beforeEach(async () => { + dbMetrics = new DbMetricsMonitor(config); +}); + +test('should collect registered metrics', async () => { + dbMetrics.registerGaugeDbMetric({ + name: 'my_metric', + help: 'This is the answer to life, the univers, and everything', + labelNames: [], + query: () => Promise.resolve(42), + map: (result) => ({ value: result }), + }); + + await dbMetrics.refreshDbMetrics(); + + const metrics = await prometheusRegister.metrics(); + expect(metrics).toMatch(/my_metric 42/); +}); + +test('should collect registered metrics with labels', async () => { + dbMetrics.registerGaugeDbMetric({ + name: 'life_the_universe_and_everything', + help: 'This is the answer to life, the univers, and everything', + labelNames: ['test'], + query: () => Promise.resolve(42), + map: (result) => ({ value: result, labels: { test: 'case' } }), + }); + + await dbMetrics.refreshDbMetrics(); + + const metrics = await prometheusRegister.metrics(); + expect(metrics).toMatch( + /life_the_universe_and_everything\{test="case"\} 42/, + ); +}); + +test('should collect multiple registered metrics with and without labels', async () => { + dbMetrics.registerGaugeDbMetric({ + name: 'my_first_metric', + help: 'This is the answer to life, the univers, and everything', + labelNames: [], + query: () => Promise.resolve(42), + map: (result) => ({ value: result }), + }); + + dbMetrics.registerGaugeDbMetric({ + name: 'my_other_metric', + help: 'This is Eulers number', + labelNames: ['euler'], + query: () => Promise.resolve(Math.E), + map: (result) => ({ value: result, labels: { euler: 'number' } }), + }); + + await dbMetrics.refreshDbMetrics(); + + const metrics = await prometheusRegister.metrics(); + expect(metrics).toMatch(/my_first_metric 42/); + expect(metrics).toMatch(/my_other_metric\{euler="number"\} 2.71828/); +}); + +test('should support different label and value pairs', async () => { + dbMetrics.registerGaugeDbMetric({ + name: 'multi_dimensional', + help: 'This metric has different values for different labels', + labelNames: ['version', 'range'], + query: () => Promise.resolve(2), + map: (result) => [ + { value: result, labels: { version: '1', range: 'linear' } }, + { + value: result * result, + labels: { version: '2', range: 'square' }, + }, + { value: result / 2, labels: { version: '3', range: 'half' } }, + ], + }); + + await dbMetrics.refreshDbMetrics(); + + const metrics = await prometheusRegister.metrics(); + expect(metrics).toMatch( + /multi_dimensional\{version="1",range="linear"\} 2\nmulti_dimensional\{version="2",range="square"\} 4\nmulti_dimensional\{version="3",range="half"\} 1/, + ); + expect( + await dbMetrics.findValue('multi_dimensional', { range: 'linear' }), + ).toBe(2); + expect( + await dbMetrics.findValue('multi_dimensional', { range: 'half' }), + ).toBe(1); + expect( + await dbMetrics.findValue('multi_dimensional', { range: 'square' }), + ).toBe(4); + expect( + await dbMetrics.findValue('multi_dimensional', { range: 'x' }), + ).toBeUndefined(); + expect(await dbMetrics.findValue('multi_dimensional')).toBe(2); // first match + expect(await dbMetrics.findValue('other')).toBeUndefined(); +}); diff --git a/src/lib/metrics-gauge.ts b/src/lib/metrics-gauge.ts new file mode 100644 index 000000000000..7f1e5cc06265 --- /dev/null +++ b/src/lib/metrics-gauge.ts @@ -0,0 +1,94 @@ +import type { Logger } from './logger'; +import type { IUnleashConfig } from './types'; +import { createGauge, type Gauge } from './util/metrics'; + +type Query = () => Promise; +type MetricValue = { + value: number; + labels?: Record; +}; +type MapResult = ( + result: R, +) => MetricValue | MetricValue[]; + +type GaugeDefinition = { + name: string; + help: string; + labelNames: L[]; + query: Query; + map: MapResult; +}; + +type Task = () => Promise; + +interface GaugeUpdater { + target: Gauge; + task: Task; +} +export class DbMetricsMonitor { + private updaters: Map = new Map(); + private log: Logger; + + constructor({ getLogger }: Pick) { + this.log = getLogger('gauge-metrics'); + } + + private asArray(value: T | T[]): T[] { + return Array.isArray(value) ? value : [value]; + } + + registerGaugeDbMetric( + definition: GaugeDefinition, + ): Task { + const gauge = createGauge(definition); + const task = async () => { + try { + const result = await definition.query(); + if (result !== null && result !== undefined) { + const results = this.asArray(definition.map(result)); + gauge.reset(); + for (const r of results) { + if (r.labels) { + gauge.labels(r.labels).set(r.value); + } else { + gauge.set(r.value); + } + } + } + } catch (e) { + this.log.warn(`Failed to refresh ${definition.name}`, e); + } + }; + this.updaters.set(definition.name, { target: gauge, task }); + return task; + } + + refreshDbMetrics = async () => { + const tasks = Array.from(this.updaters.entries()).map( + ([name, updater]) => ({ name, task: updater.task }), + ); + for (const { name, task } of tasks) { + this.log.debug(`Refreshing metric ${name}`); + await task(); + } + }; + + async findValue( + name: string, + labels?: Record, + ): Promise { + const gauge = await this.updaters.get(name)?.target.gauge?.get(); + if (gauge && gauge.values.length > 0) { + const values = labels + ? gauge.values.filter(({ labels: l }) => { + return Object.entries(labels).every( + ([key, value]) => l[key] === value, + ); + }) + : gauge.values; + // return first value + return values.map(({ value }) => value).shift(); + } + return undefined; + } +} diff --git a/src/lib/metrics.test.ts b/src/lib/metrics.test.ts index bf92983caf55..8cfe78aa5d0a 100644 --- a/src/lib/metrics.test.ts +++ b/src/lib/metrics.test.ts @@ -15,7 +15,11 @@ import { FEATURE_UPDATED, PROJECT_ENVIRONMENT_REMOVED, } from './types/events'; -import { createMetricsMonitor } from './metrics'; +import { + createMetricsMonitor, + registerPrometheusMetrics, + registerPrometheusPostgresMetrics, +} from './metrics'; import createStores from '../test/fixtures/store'; import { InstanceStatsService } from './features/instance-stats/instance-stats-service'; import VersionService from './services/version-service'; @@ -46,6 +50,7 @@ let schedulerService: SchedulerService; let featureLifeCycleStore: IFeatureLifecycleStore; let featureLifeCycleReadModel: IFeatureLifecycleReadModel; let db: ITestDb; +let refreshDbMetrics: () => Promise; beforeAll(async () => { const config = createTestConfig({ @@ -102,16 +107,16 @@ beforeAll(async () => { }, }; - await monitor.startMonitoring( - config, - stores, - '4.0.0', - eventBus, - statsService, - schedulerService, - // @ts-ignore - We don't want a full knex implementation for our tests, it's enough that it actually yields the numbers we want. - metricsDbConf, - ); + const { collectDbMetrics, collectStaticCounters } = + registerPrometheusMetrics( + config, + stores, + '4.0.0', + eventBus, + statsService, + ); + refreshDbMetrics = collectDbMetrics; + await collectStaticCounters(); }); afterAll(async () => { @@ -212,6 +217,7 @@ test('should collect metrics for function timings', async () => { }); test('should collect metrics for feature flag size', async () => { + await refreshDbMetrics(); const metrics = await prometheusRegister.metrics(); expect(metrics).toMatch(/feature_toggles_total\{version="(.*)"\} 0/); }); @@ -222,12 +228,13 @@ test('should collect metrics for archived feature flag size', async () => { }); test('should collect metrics for total client apps', async () => { - await statsService.refreshAppCountSnapshot(); + await refreshDbMetrics(); const metrics = await prometheusRegister.metrics(); expect(metrics).toMatch(/client_apps_total\{range="(.*)"\} 0/); }); test('Should collect metrics for database', async () => { + registerPrometheusPostgresMetrics(db.rawDatabase, eventBus, '15.0.0'); const metrics = await prometheusRegister.metrics(); expect(metrics).toMatch(/db_pool_max/); expect(metrics).toMatch(/db_pool_min/); diff --git a/src/lib/metrics.ts b/src/lib/metrics.ts index be7311952cf8..e35245add754 100644 --- a/src/lib/metrics.ts +++ b/src/lib/metrics.ts @@ -25,7 +25,7 @@ import { PROJECT_DELETED, } from './types/events'; import type { IUnleashConfig } from './types/option'; -import type { ISettingStore, IUnleashStores } from './types/stores'; +import type { IUnleashStores } from './types/stores'; import { hoursToMilliseconds, minutesToMilliseconds } from 'date-fns'; import type { InstanceStatsService } from './features/instance-stats/instance-stats-service'; import type { IEnvironment, ISdkHeartbeat } from './types'; @@ -37,367 +37,792 @@ import { } from './util/metrics'; import type { SchedulerService } from './services'; import type { IClientMetricsEnv } from './features/metrics/client-metrics/client-metrics-store-v2-type'; - -export default class MetricsMonitor { - constructor() {} - - async startMonitoring( - config: IUnleashConfig, - stores: IUnleashStores, - version: string, - eventBus: EventEmitter, - instanceStatsService: InstanceStatsService, - schedulerService: SchedulerService, - db: Knex, - ): Promise { - if (!config.server.serverMetrics) { - return Promise.resolve(); - } - - const { eventStore, environmentStore } = stores; - const { flagResolver } = config; - - const cachedEnvironments: () => Promise = memoizee( - async () => environmentStore.getAll(), - { - promise: true, - maxAge: hoursToMilliseconds(1), - }, - ); - - collectDefaultMetrics(); - - const requestDuration = createSummary({ - name: 'http_request_duration_milliseconds', - help: 'App response time', - labelNames: ['path', 'method', 'status', 'appName'], - percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], - maxAgeSeconds: 600, - ageBuckets: 5, - }); - const schedulerDuration = createSummary({ - name: 'scheduler_duration_seconds', - help: 'Scheduler duration time', - labelNames: ['jobId'], - percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], - maxAgeSeconds: 600, - ageBuckets: 5, - }); - const dbDuration = createSummary({ - name: 'db_query_duration_seconds', - help: 'DB query duration time', - labelNames: ['store', 'action'], - percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], - maxAgeSeconds: 600, - ageBuckets: 5, - }); - const functionDuration = createSummary({ - name: 'function_duration_seconds', - help: 'Function duration time', - labelNames: ['functionName', 'className'], - percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], - maxAgeSeconds: 600, - ageBuckets: 5, - }); - const featureFlagUpdateTotal = createCounter({ - name: 'feature_toggle_update_total', - help: 'Number of times a toggle has been updated. Environment label would be "n/a" when it is not available, e.g. when a feature flag is created.', - labelNames: [ - 'toggle', - 'project', - 'environment', - 'environmentType', - 'action', - ], - }); - const featureFlagUsageTotal = createCounter({ - name: 'feature_toggle_usage_total', - help: 'Number of times a feature flag has been used', - labelNames: ['toggle', 'active', 'appName'], - }); - const featureFlagsTotal = createGauge({ - name: 'feature_toggles_total', - help: 'Number of feature flags', +import { DbMetricsMonitor } from './metrics-gauge'; + +export function registerPrometheusPostgresMetrics( + db: Knex, + eventBus: EventEmitter, + postgresVersion: string, +) { + if (db?.client) { + const dbPoolMin = createGauge({ + name: 'db_pool_min', + help: 'Minimum DB pool size', + }); + dbPoolMin.set(db.client.pool.min); + const dbPoolMax = createGauge({ + name: 'db_pool_max', + help: 'Maximum DB pool size', + }); + dbPoolMax.set(db.client.pool.max); + const dbPoolFree = createGauge({ + name: 'db_pool_free', + help: 'Current free connections in DB pool', + }); + const dbPoolUsed = createGauge({ + name: 'db_pool_used', + help: 'Current connections in use in DB pool', + }); + const dbPoolPendingCreates = createGauge({ + name: 'db_pool_pending_creates', + help: 'how many asynchronous create calls are running in DB pool', + }); + const dbPoolPendingAcquires = createGauge({ + name: 'db_pool_pending_acquires', + help: 'how many acquires are waiting for a resource to be released in DB pool', + }); + + eventBus.on(DB_POOL_UPDATE, (data) => { + dbPoolFree.set(data.free); + dbPoolUsed.set(data.used); + dbPoolPendingCreates.set(data.pendingCreates); + dbPoolPendingAcquires.set(data.pendingAcquires); + }); + + const database_version = createGauge({ + name: 'postgres_version', + help: 'Which version of postgres is running (SHOW server_version)', labelNames: ['version'], }); - const maxFeatureEnvironmentStrategies = createGauge({ - name: 'max_feature_environment_strategies', - help: 'Maximum number of environment strategies in one feature', - labelNames: ['feature', 'environment'], - }); - const maxFeatureStrategies = createGauge({ - name: 'max_feature_strategies', - help: 'Maximum number of strategies in one feature', - labelNames: ['feature'], - }); - const maxConstraintValues = createGauge({ - name: 'max_constraint_values', - help: 'Maximum number of constraint values used in a single constraint', - labelNames: ['feature', 'environment'], - }); - const maxConstraintsPerStrategy = createGauge({ - name: 'max_strategy_constraints', - help: 'Maximum number of constraints used on a single strategy', - labelNames: ['feature', 'environment'], - }); - const largestProjectEnvironment = createGauge({ - name: 'largest_project_environment_size', - help: 'The largest project environment size (bytes) based on strategies, constraints, variants and parameters', - labelNames: ['project', 'environment'], - }); - const largestFeatureEnvironment = createGauge({ - name: 'largest_feature_environment_size', - help: 'The largest feature environment size (bytes) base on strategies, constraints, variants and parameters', - labelNames: ['feature', 'environment'], - }); - - const featureTogglesArchivedTotal = createGauge({ - name: 'feature_toggles_archived_total', - help: 'Number of archived feature flags', - }); - const usersTotal = createGauge({ - name: 'users_total', - help: 'Number of users', - }); - const serviceAccounts = createGauge({ - name: 'service_accounts_total', - help: 'Number of service accounts', - }); - const apiTokens = createGauge({ - name: 'api_tokens_total', - help: 'Number of API tokens', - labelNames: ['type'], - }); - const enabledMetricsBucketsPreviousDay = createGauge({ - name: 'enabled_metrics_buckets_previous_day', - help: 'Number of hourly enabled/disabled metric buckets in the previous day', - }); - const variantMetricsBucketsPreviousDay = createGauge({ - name: 'variant_metrics_buckets_previous_day', - help: 'Number of hourly variant metric buckets in the previous day', - }); - const usersActive7days = createGauge({ - name: 'users_active_7', - help: 'Number of users active in the last 7 days', - }); - const usersActive30days = createGauge({ - name: 'users_active_30', - help: 'Number of users active in the last 30 days', - }); - const usersActive60days = createGauge({ - name: 'users_active_60', - help: 'Number of users active in the last 60 days', - }); - const usersActive90days = createGauge({ - name: 'users_active_90', - help: 'Number of users active in the last 90 days', - }); - const projectsTotal = createGauge({ - name: 'projects_total', - help: 'Number of projects', - labelNames: ['mode'], - }); - const environmentsTotal = createGauge({ - name: 'environments_total', - help: 'Number of environments', - }); - const groupsTotal = createGauge({ - name: 'groups_total', - help: 'Number of groups', - }); - - const rolesTotal = createGauge({ - name: 'roles_total', - help: 'Number of roles', - }); - - const customRootRolesTotal = createGauge({ - name: 'custom_root_roles_total', - help: 'Number of custom root roles', - }); - - const customRootRolesInUseTotal = createGauge({ - name: 'custom_root_roles_in_use_total', - help: 'Number of custom root roles in use', - }); - - const segmentsTotal = createGauge({ - name: 'segments_total', - help: 'Number of segments', - }); - - const contextTotal = createGauge({ - name: 'context_total', - help: 'Number of context', - }); - - const strategiesTotal = createGauge({ - name: 'strategies_total', - help: 'Number of strategies', - }); - - const clientAppsTotal = createGauge({ - name: 'client_apps_total', - help: 'Number of registered client apps aggregated by range by last seen', - labelNames: ['range'], - }); - - const samlEnabled = createGauge({ - name: 'saml_enabled', - help: 'Whether SAML is enabled', - }); - - const oidcEnabled = createGauge({ - name: 'oidc_enabled', - help: 'Whether OIDC is enabled', - }); - - const clientSdkVersionUsage = createCounter({ - name: 'client_sdk_versions', - help: 'Which sdk versions are being used', - labelNames: [ - 'sdk_name', - 'sdk_version', - 'platform_name', - 'platform_version', - 'yggdrasil_version', - 'spec_version', - ], - }); - - const productionChanges30 = createGauge({ - name: 'production_changes_30', - help: 'Changes made to production environment last 30 days', - labelNames: ['environment'], - }); - const productionChanges60 = createGauge({ - name: 'production_changes_60', - help: 'Changes made to production environment last 60 days', - labelNames: ['environment'], - }); - const productionChanges90 = createGauge({ - name: 'production_changes_90', - help: 'Changes made to production environment last 90 days', - labelNames: ['environment'], - }); - - const rateLimits = createGauge({ - name: 'rate_limits', - help: 'Rate limits (per minute) for METHOD/ENDPOINT pairs', - labelNames: ['endpoint', 'method'], - }); - const featureCreatedByMigration = createCounter({ - name: 'feature_created_by_migration_count', - help: 'Feature createdBy migration count', - }); - const eventCreatedByMigration = createCounter({ - name: 'event_created_by_migration_count', - help: 'Event createdBy migration count', - }); - const proxyRepositoriesCreated = createCounter({ - name: 'proxy_repositories_created', - help: 'Proxy repositories created', - }); - const frontendApiRepositoriesCreated = createCounter({ - name: 'frontend_api_repositories_created', - help: 'Frontend API repositories created', - }); - const mapFeaturesForClientDuration = createHistogram({ - name: 'map_features_for_client_duration', - help: 'Duration of mapFeaturesForClient function', - }); - - const featureLifecycleStageDuration = createGauge({ - name: 'feature_lifecycle_stage_duration', - labelNames: ['stage', 'project_id'], - help: 'Duration of feature lifecycle stages', - }); - - const onboardingDuration = createGauge({ - name: 'onboarding_duration', - labelNames: ['event'], - help: 'firstLogin, secondLogin, firstFeatureFlag, firstPreLive, firstLive from first user creation', - }); - const projectOnboardingDuration = createGauge({ - name: 'project_onboarding_duration', - labelNames: ['event', 'project'], - help: 'firstFeatureFlag, firstPreLive, firstLive from project creation', - }); - - const featureLifecycleStageCountByProject = createGauge({ - name: 'feature_lifecycle_stage_count_by_project', - help: 'Count features in a given stage by project id', - labelNames: ['stage', 'project_id'], - }); - - const featureLifecycleStageEnteredCounter = createCounter({ - name: 'feature_lifecycle_stage_entered', - help: 'Count how many features entered a given stage', - labelNames: ['stage'], - }); - - const projectActionsCounter = createCounter({ - name: 'project_actions_count', - help: 'Count project actions', - labelNames: ['action'], - }); - - const projectEnvironmentsDisabled = createCounter({ - name: 'project_environments_disabled', - help: 'How many "environment disabled" events we have received for each project', - labelNames: ['project_id'], - }); - - const orphanedTokensTotal = createGauge({ - name: 'orphaned_api_tokens_total', - help: 'Number of API tokens without a project', - }); + database_version.labels({ version: postgresVersion }).set(1); + } +} - const orphanedTokensActive = createGauge({ - name: 'orphaned_api_tokens_active', - help: 'Number of API tokens without a project, last seen within 3 months', - }); +export function registerPrometheusMetrics( + config: IUnleashConfig, + stores: IUnleashStores, + version: string, + eventBus: EventEmitter, + instanceStatsService: InstanceStatsService, +) { + const resolveEnvironmentType = async ( + environment: string, + cachedEnvironments: () => Promise, + ): Promise => { + const environments = await cachedEnvironments(); + const env = environments.find((e) => e.name === environment); - const legacyTokensTotal = createGauge({ - name: 'legacy_api_tokens_total', - help: 'Number of API tokens with v1 format', - }); + if (env) { + return env.type; + } else { + return 'unknown'; + } + }; + + const { eventStore, environmentStore } = stores; + const { flagResolver, db } = config; + const dbMetrics = new DbMetricsMonitor(config); + + const cachedEnvironments: () => Promise = memoizee( + async () => environmentStore.getAll(), + { + promise: true, + maxAge: hoursToMilliseconds(1), + }, + ); + + const requestDuration = createSummary({ + name: 'http_request_duration_milliseconds', + help: 'App response time', + labelNames: ['path', 'method', 'status', 'appName'], + percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], + maxAgeSeconds: 600, + ageBuckets: 5, + }); + const schedulerDuration = createSummary({ + name: 'scheduler_duration_seconds', + help: 'Scheduler duration time', + labelNames: ['jobId'], + percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], + maxAgeSeconds: 600, + ageBuckets: 5, + }); + const dbDuration = createSummary({ + name: 'db_query_duration_seconds', + help: 'DB query duration time', + labelNames: ['store', 'action'], + percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], + maxAgeSeconds: 600, + ageBuckets: 5, + }); + const functionDuration = createSummary({ + name: 'function_duration_seconds', + help: 'Function duration time', + labelNames: ['functionName', 'className'], + percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], + maxAgeSeconds: 600, + ageBuckets: 5, + }); + const featureFlagUpdateTotal = createCounter({ + name: 'feature_toggle_update_total', + help: 'Number of times a toggle has been updated. Environment label would be "n/a" when it is not available, e.g. when a feature flag is created.', + labelNames: [ + 'toggle', + 'project', + 'environment', + 'environmentType', + 'action', + ], + }); + const featureFlagUsageTotal = createCounter({ + name: 'feature_toggle_usage_total', + help: 'Number of times a feature flag has been used', + labelNames: ['toggle', 'active', 'appName'], + }); + + dbMetrics.registerGaugeDbMetric({ + name: 'feature_toggles_total', + help: 'Number of feature flags', + labelNames: ['version'], + query: () => instanceStatsService.getToggleCount(), + map: (value) => ({ value, labels: { version } }), + }); + + dbMetrics.registerGaugeDbMetric({ + name: 'max_feature_environment_strategies', + help: 'Maximum number of environment strategies in one feature', + labelNames: ['feature', 'environment'], + query: () => + stores.featureStrategiesReadModel.getMaxFeatureEnvironmentStrategies(), + map: (result) => ({ + value: result.count, + labels: { + environment: result.environment, + feature: result.feature, + }, + }), + }); + + dbMetrics.registerGaugeDbMetric({ + name: 'max_feature_strategies', + help: 'Maximum number of strategies in one feature', + labelNames: ['feature'], + query: () => + stores.featureStrategiesReadModel.getMaxFeatureStrategies(), + map: (result) => ({ + value: result.count, + labels: { feature: result.feature }, + }), + }); + + const maxConstraintValues = createGauge({ + name: 'max_constraint_values', + help: 'Maximum number of constraint values used in a single constraint', + labelNames: ['feature', 'environment'], + }); + const maxConstraintsPerStrategy = createGauge({ + name: 'max_strategy_constraints', + help: 'Maximum number of constraints used on a single strategy', + labelNames: ['feature', 'environment'], + }); + const largestProjectEnvironment = createGauge({ + name: 'largest_project_environment_size', + help: 'The largest project environment size (bytes) based on strategies, constraints, variants and parameters', + labelNames: ['project', 'environment'], + }); + const largestFeatureEnvironment = createGauge({ + name: 'largest_feature_environment_size', + help: 'The largest feature environment size (bytes) base on strategies, constraints, variants and parameters', + labelNames: ['feature', 'environment'], + }); + + const featureTogglesArchivedTotal = createGauge({ + name: 'feature_toggles_archived_total', + help: 'Number of archived feature flags', + }); + const usersTotal = createGauge({ + name: 'users_total', + help: 'Number of users', + }); + const serviceAccounts = createGauge({ + name: 'service_accounts_total', + help: 'Number of service accounts', + }); + const apiTokens = createGauge({ + name: 'api_tokens_total', + help: 'Number of API tokens', + labelNames: ['type'], + }); + const enabledMetricsBucketsPreviousDay = createGauge({ + name: 'enabled_metrics_buckets_previous_day', + help: 'Number of hourly enabled/disabled metric buckets in the previous day', + }); + const variantMetricsBucketsPreviousDay = createGauge({ + name: 'variant_metrics_buckets_previous_day', + help: 'Number of hourly variant metric buckets in the previous day', + }); + const usersActive7days = createGauge({ + name: 'users_active_7', + help: 'Number of users active in the last 7 days', + }); + const usersActive30days = createGauge({ + name: 'users_active_30', + help: 'Number of users active in the last 30 days', + }); + const usersActive60days = createGauge({ + name: 'users_active_60', + help: 'Number of users active in the last 60 days', + }); + const usersActive90days = createGauge({ + name: 'users_active_90', + help: 'Number of users active in the last 90 days', + }); + const projectsTotal = createGauge({ + name: 'projects_total', + help: 'Number of projects', + labelNames: ['mode'], + }); + const environmentsTotal = createGauge({ + name: 'environments_total', + help: 'Number of environments', + }); + const groupsTotal = createGauge({ + name: 'groups_total', + help: 'Number of groups', + }); + + const rolesTotal = createGauge({ + name: 'roles_total', + help: 'Number of roles', + }); + + const customRootRolesTotal = createGauge({ + name: 'custom_root_roles_total', + help: 'Number of custom root roles', + }); + + const customRootRolesInUseTotal = createGauge({ + name: 'custom_root_roles_in_use_total', + help: 'Number of custom root roles in use', + }); + + const segmentsTotal = createGauge({ + name: 'segments_total', + help: 'Number of segments', + }); + + const contextTotal = createGauge({ + name: 'context_total', + help: 'Number of context', + }); + + const strategiesTotal = createGauge({ + name: 'strategies_total', + help: 'Number of strategies', + }); + + dbMetrics.registerGaugeDbMetric({ + name: 'client_apps_total', + help: 'Number of registered client apps aggregated by range by last seen', + labelNames: ['range'], + query: () => instanceStatsService.getLabeledAppCounts(), + map: (result) => + Object.entries(result).map(([range, count]) => ({ + value: count, + labels: { range }, + })), + }); + + const samlEnabled = createGauge({ + name: 'saml_enabled', + help: 'Whether SAML is enabled', + }); + + const oidcEnabled = createGauge({ + name: 'oidc_enabled', + help: 'Whether OIDC is enabled', + }); + + const clientSdkVersionUsage = createCounter({ + name: 'client_sdk_versions', + help: 'Which sdk versions are being used', + labelNames: [ + 'sdk_name', + 'sdk_version', + 'platform_name', + 'platform_version', + 'yggdrasil_version', + 'spec_version', + ], + }); + + const productionChanges30 = createGauge({ + name: 'production_changes_30', + help: 'Changes made to production environment last 30 days', + labelNames: ['environment'], + }); + const productionChanges60 = createGauge({ + name: 'production_changes_60', + help: 'Changes made to production environment last 60 days', + labelNames: ['environment'], + }); + const productionChanges90 = createGauge({ + name: 'production_changes_90', + help: 'Changes made to production environment last 90 days', + labelNames: ['environment'], + }); + + const rateLimits = createGauge({ + name: 'rate_limits', + help: 'Rate limits (per minute) for METHOD/ENDPOINT pairs', + labelNames: ['endpoint', 'method'], + }); + rateLimits + .labels({ + endpoint: '/api/client/metrics', + method: 'POST', + }) + .set(config.metricsRateLimiting.clientMetricsMaxPerMinute); + rateLimits + .labels({ + endpoint: '/api/client/register', + method: 'POST', + }) + .set(config.metricsRateLimiting.clientRegisterMaxPerMinute); + rateLimits + .labels({ + endpoint: '/api/frontend/metrics', + method: 'POST', + }) + .set(config.metricsRateLimiting.frontendMetricsMaxPerMinute); + rateLimits + .labels({ + endpoint: '/api/frontend/register', + method: 'POST', + }) + .set(config.metricsRateLimiting.frontendRegisterMaxPerMinute); + rateLimits + .labels({ + endpoint: '/api/admin/user-admin', + method: 'POST', + }) + .set(config.rateLimiting.createUserMaxPerMinute); + rateLimits + .labels({ + endpoint: '/auth/simple', + method: 'POST', + }) + .set(config.rateLimiting.simpleLoginMaxPerMinute); + rateLimits + .labels({ + endpoint: '/auth/reset/password-email', + method: 'POST', + }) + .set(config.rateLimiting.passwordResetMaxPerMinute); + rateLimits + .labels({ + endpoint: '/api/signal-endpoint/:name', + method: 'POST', + }) + .set(config.rateLimiting.callSignalEndpointMaxPerSecond * 60); + + const featureCreatedByMigration = createCounter({ + name: 'feature_created_by_migration_count', + help: 'Feature createdBy migration count', + }); + const eventCreatedByMigration = createCounter({ + name: 'event_created_by_migration_count', + help: 'Event createdBy migration count', + }); + const proxyRepositoriesCreated = createCounter({ + name: 'proxy_repositories_created', + help: 'Proxy repositories created', + }); + const frontendApiRepositoriesCreated = createCounter({ + name: 'frontend_api_repositories_created', + help: 'Frontend API repositories created', + }); + const mapFeaturesForClientDuration = createHistogram({ + name: 'map_features_for_client_duration', + help: 'Duration of mapFeaturesForClient function', + }); + + const featureLifecycleStageDuration = createGauge({ + name: 'feature_lifecycle_stage_duration', + labelNames: ['stage', 'project_id'], + help: 'Duration of feature lifecycle stages', + }); + + const onboardingDuration = createGauge({ + name: 'onboarding_duration', + labelNames: ['event'], + help: 'firstLogin, secondLogin, firstFeatureFlag, firstPreLive, firstLive from first user creation', + }); + const projectOnboardingDuration = createGauge({ + name: 'project_onboarding_duration', + labelNames: ['event', 'project'], + help: 'firstFeatureFlag, firstPreLive, firstLive from project creation', + }); + + const featureLifecycleStageCountByProject = createGauge({ + name: 'feature_lifecycle_stage_count_by_project', + help: 'Count features in a given stage by project id', + labelNames: ['stage', 'project_id'], + }); + + const featureLifecycleStageEnteredCounter = createCounter({ + name: 'feature_lifecycle_stage_entered', + help: 'Count how many features entered a given stage', + labelNames: ['stage'], + }); + + const projectActionsCounter = createCounter({ + name: 'project_actions_count', + help: 'Count project actions', + labelNames: ['action'], + }); + + const projectEnvironmentsDisabled = createCounter({ + name: 'project_environments_disabled', + help: 'How many "environment disabled" events we have received for each project', + labelNames: ['project_id'], + }); + + const orphanedTokensTotal = createGauge({ + name: 'orphaned_api_tokens_total', + help: 'Number of API tokens without a project', + }); + + const orphanedTokensActive = createGauge({ + name: 'orphaned_api_tokens_active', + help: 'Number of API tokens without a project, last seen within 3 months', + }); + + const legacyTokensTotal = createGauge({ + name: 'legacy_api_tokens_total', + help: 'Number of API tokens with v1 format', + }); + + const legacyTokensActive = createGauge({ + name: 'legacy_api_tokens_active', + help: 'Number of API tokens with v1 format, last seen within 3 months', + }); + + const exceedsLimitErrorCounter = createCounter({ + name: 'exceeds_limit_error', + help: 'The number of exceeds limit errors registered by this instance.', + labelNames: ['resource', 'limit'], + }); + + const requestOriginCounter = createCounter({ + name: 'request_origin_counter', + help: 'Number of authenticated requests, including origin information.', + labelNames: ['type', 'method', 'source'], + }); + + const resourceLimit = createGauge({ + name: 'resource_limit', + help: 'The maximum number of resources allowed.', + labelNames: ['resource'], + }); + + const addonEventsHandledCounter = createCounter({ + name: 'addon_events_handled', + help: 'Events handled by addons and the result.', + labelNames: ['result', 'destination'], + }); + + // register event listeners + eventBus.on( + events.EXCEEDS_LIMIT, + ({ resource, limit }: { resource: string; limit: number }) => { + exceedsLimitErrorCounter.increment({ resource, limit }); + }, + ); + + eventBus.on( + events.STAGE_ENTERED, + (entered: { stage: string; feature: string }) => { + if (flagResolver.isEnabled('trackLifecycleMetrics')) { + logger.info( + `STAGE_ENTERED listened ${JSON.stringify(entered)}`, + ); + } + featureLifecycleStageEnteredCounter.increment({ + stage: entered.stage, + }); + }, + ); - const legacyTokensActive = createGauge({ - name: 'legacy_api_tokens_active', - help: 'Number of API tokens with v1 format, last seen within 3 months', - }); + eventBus.on( + events.REQUEST_TIME, + ({ path, method, time, statusCode, appName }) => { + requestDuration + .labels({ + path, + method, + status: statusCode, + appName, + }) + .observe(time); + }, + ); + + eventBus.on(events.SCHEDULER_JOB_TIME, ({ jobId, time }) => { + schedulerDuration.labels(jobId).observe(time); + }); + + eventBus.on(events.FUNCTION_TIME, ({ functionName, className, time }) => { + functionDuration + .labels({ + functionName, + className, + }) + .observe(time); + }); + + eventBus.on(events.EVENTS_CREATED_BY_PROCESSED, ({ updated }) => { + eventCreatedByMigration.inc(updated); + }); + + eventBus.on(events.FEATURES_CREATED_BY_PROCESSED, ({ updated }) => { + featureCreatedByMigration.inc(updated); + }); + + eventBus.on(events.DB_TIME, ({ store, action, time }) => { + dbDuration + .labels({ + store, + action, + }) + .observe(time); + }); + + eventBus.on(events.PROXY_REPOSITORY_CREATED, () => { + proxyRepositoriesCreated.inc(); + }); + + eventBus.on(events.FRONTEND_API_REPOSITORY_CREATED, () => { + frontendApiRepositoriesCreated.inc(); + }); + + eventBus.on(events.PROXY_FEATURES_FOR_TOKEN_TIME, ({ duration }) => { + mapFeaturesForClientDuration.observe(duration); + }); + + events.onMetricEvent( + eventBus, + events.REQUEST_ORIGIN, + ({ type, method, source }) => { + requestOriginCounter.increment({ type, method, source }); + }, + ); + + eventStore.on(FEATURE_CREATED, ({ featureName, project }) => { + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment: 'n/a', + environmentType: 'n/a', + action: 'created', + }); + }); + eventStore.on(FEATURE_VARIANTS_UPDATED, ({ featureName, project }) => { + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment: 'n/a', + environmentType: 'n/a', + action: 'updated', + }); + }); + eventStore.on(FEATURE_METADATA_UPDATED, ({ featureName, project }) => { + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment: 'n/a', + environmentType: 'n/a', + action: 'updated', + }); + }); + eventStore.on(FEATURE_UPDATED, ({ featureName, project }) => { + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment: 'default', + environmentType: 'production', + action: 'updated', + }); + }); + eventStore.on( + FEATURE_STRATEGY_ADD, + async ({ featureName, project, environment }) => { + const environmentType = await resolveEnvironmentType( + environment, + cachedEnvironments, + ); + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment, + environmentType, + action: 'updated', + }); + }, + ); + eventStore.on( + FEATURE_STRATEGY_REMOVE, + async ({ featureName, project, environment }) => { + const environmentType = await resolveEnvironmentType( + environment, + cachedEnvironments, + ); + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment, + environmentType, + action: 'updated', + }); + }, + ); + eventStore.on( + FEATURE_STRATEGY_UPDATE, + async ({ featureName, project, environment }) => { + const environmentType = await resolveEnvironmentType( + environment, + cachedEnvironments, + ); + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment, + environmentType, + action: 'updated', + }); + }, + ); + eventStore.on( + FEATURE_ENVIRONMENT_DISABLED, + async ({ featureName, project, environment }) => { + const environmentType = await resolveEnvironmentType( + environment, + cachedEnvironments, + ); + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment, + environmentType, + action: 'updated', + }); + }, + ); + eventStore.on( + FEATURE_ENVIRONMENT_ENABLED, + async ({ featureName, project, environment }) => { + const environmentType = await resolveEnvironmentType( + environment, + cachedEnvironments, + ); + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment, + environmentType, + action: 'updated', + }); + }, + ); + eventStore.on(FEATURE_ARCHIVED, ({ featureName, project }) => { + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment: 'n/a', + environmentType: 'n/a', + action: 'archived', + }); + }); + eventStore.on(FEATURE_REVIVED, ({ featureName, project }) => { + featureFlagUpdateTotal.increment({ + toggle: featureName, + project, + environment: 'n/a', + environmentType: 'n/a', + action: 'revived', + }); + }); + eventStore.on(PROJECT_CREATED, () => { + projectActionsCounter.increment({ action: PROJECT_CREATED }); + }); + eventStore.on(PROJECT_ARCHIVED, () => { + projectActionsCounter.increment({ action: PROJECT_ARCHIVED }); + }); + eventStore.on(PROJECT_REVIVED, () => { + projectActionsCounter.increment({ action: PROJECT_REVIVED }); + }); + eventStore.on(PROJECT_DELETED, () => { + projectActionsCounter.increment({ action: PROJECT_DELETED }); + }); + + const logger = config.getLogger('metrics.ts'); + eventBus.on(CLIENT_METRICS, (metrics: IClientMetricsEnv[]) => { + try { + for (const metric of metrics) { + featureFlagUsageTotal.increment( + { + toggle: metric.featureName, + active: 'true', + appName: metric.appName, + }, + metric.yes, + ); + featureFlagUsageTotal.increment( + { + toggle: metric.featureName, + active: 'false', + appName: metric.appName, + }, + metric.no, + ); + } + } catch (e) { + logger.warn('Metrics registration failed', e); + } + }); - const exceedsLimitErrorCounter = createCounter({ - name: 'exceeds_limit_error', - help: 'The number of exceeds limit errors registered by this instance.', - labelNames: ['resource', 'limit'], - }); + eventStore.on(CLIENT_REGISTER, (heartbeatEvent: ISdkHeartbeat) => { + if (!heartbeatEvent.sdkName || !heartbeatEvent.sdkVersion) { + return; + } - const requestOriginCounter = createCounter({ - name: 'request_origin_counter', - help: 'Number of authenticated requests, including origin information.', - labelNames: ['type', 'method', 'source'], - }); + if (flagResolver.isEnabled('extendedMetrics')) { + clientSdkVersionUsage.increment({ + sdk_name: heartbeatEvent.sdkName, + sdk_version: heartbeatEvent.sdkVersion, + platform_name: + heartbeatEvent.metadata?.platformName ?? 'not-set', + platform_version: + heartbeatEvent.metadata?.platformVersion ?? 'not-set', + yggdrasil_version: + heartbeatEvent.metadata?.yggdrasilVersion ?? 'not-set', + spec_version: heartbeatEvent.metadata?.specVersion ?? 'not-set', + }); + } else { + clientSdkVersionUsage.increment({ + sdk_name: heartbeatEvent.sdkName, + sdk_version: heartbeatEvent.sdkVersion, + platform_name: 'not-set', + platform_version: 'not-set', + yggdrasil_version: 'not-set', + spec_version: 'not-set', + }); + } + }); - const resourceLimit = createGauge({ - name: 'resource_limit', - help: 'The maximum number of resources allowed.', - labelNames: ['resource'], - }); + eventStore.on(PROJECT_ENVIRONMENT_REMOVED, ({ project }) => { + projectEnvironmentsDisabled.increment({ project_id: project }); + }); - const addonEventsHandledCounter = createCounter({ - name: 'addon_events_handled', - help: 'Events handled by addons and the result.', - labelNames: ['result', 'destination'], - }); + eventBus.on(events.ADDON_EVENTS_HANDLED, ({ result, destination }) => { + addonEventsHandledCounter.increment({ result, destination }); + }); - async function collectStaticCounters() { + return { + collectDbMetrics: dbMetrics.refreshDbMetrics, + collectStaticCounters: async () => { try { - const stats = await instanceStatsService.getStats(); const [ - maxStrategies, - maxEnvironmentStrategies, maxConstraintValuesResult, maxConstraintsPerStrategyResult, stageCountByProjectResult, @@ -408,8 +833,6 @@ export default class MetricsMonitor { instanceOnboardingMetrics, projectsOnboardingMetrics, ] = await Promise.all([ - stores.featureStrategiesReadModel.getMaxFeatureStrategies(), - stores.featureStrategiesReadModel.getMaxFeatureEnvironmentStrategies(), stores.featureStrategiesReadModel.getMaxConstraintValues(), stores.featureStrategiesReadModel.getMaxConstraintsPerStrategy(), stores.featureLifecycleReadModel.getStageCountByProject(), @@ -429,17 +852,18 @@ export default class MetricsMonitor { : Promise.resolve([]), ]); - featureFlagsTotal.reset(); - featureFlagsTotal.labels({ version }).set(stats.featureToggles); - featureTogglesArchivedTotal.reset(); - featureTogglesArchivedTotal.set(stats.archivedFeatureToggles); + featureTogglesArchivedTotal.set( + await instanceStatsService.getArchivedToggleCount(), + ); usersTotal.reset(); - usersTotal.set(stats.users); + usersTotal.set(await instanceStatsService.getRegisteredUsers()); serviceAccounts.reset(); - serviceAccounts.set(stats.serviceAccounts); + serviceAccounts.set( + await instanceStatsService.countServiceAccounts(), + ); stageDurationByProject.forEach((stage) => { featureLifecycleStageDuration @@ -450,30 +874,6 @@ export default class MetricsMonitor { .set(stage.duration); }); - eventBus.on( - events.STAGE_ENTERED, - (entered: { stage: string; feature: string }) => { - if (flagResolver.isEnabled('trackLifecycleMetrics')) { - logger.info( - `STAGE_ENTERED listened ${JSON.stringify(entered)}`, - ); - } - featureLifecycleStageEnteredCounter.increment({ - stage: entered.stage, - }); - }, - ); - - eventBus.on( - events.EXCEEDS_LIMIT, - ({ - resource, - limit, - }: { resource: string; limit: number }) => { - exceedsLimitErrorCounter.increment({ resource, limit }); - }, - ); - featureLifecycleStageCountByProject.reset(); stageCountByProjectResult.forEach((stageResult) => featureLifecycleStageCountByProject @@ -486,7 +886,10 @@ export default class MetricsMonitor { apiTokens.reset(); - for (const [type, value] of stats.apiTokens) { + for (const [ + type, + value, + ] of await instanceStatsService.countApiTokensByType()) { apiTokens.labels({ type }).set(value); } @@ -502,21 +905,6 @@ export default class MetricsMonitor { legacyTokensActive.reset(); legacyTokensActive.set(deprecatedTokens.activeLegacyTokens); - if (maxEnvironmentStrategies) { - maxFeatureEnvironmentStrategies.reset(); - maxFeatureEnvironmentStrategies - .labels({ - environment: maxEnvironmentStrategies.environment, - feature: maxEnvironmentStrategies.feature, - }) - .set(maxEnvironmentStrategies.count); - } - if (maxStrategies) { - maxFeatureStrategies.reset(); - maxFeatureStrategies - .labels({ feature: maxStrategies.feature }) - .set(maxStrategies.count); - } if (maxConstraintValuesResult) { maxConstraintValues.reset(); maxConstraintValues @@ -586,488 +974,135 @@ export default class MetricsMonitor { resourceLimit.labels({ resource }).set(limit); } + const previousDayMetricsBucketsCount = + await instanceStatsService.countPreviousDayHourlyMetricsBuckets(); enabledMetricsBucketsPreviousDay.reset(); enabledMetricsBucketsPreviousDay.set( - stats.previousDayMetricsBucketsCount.enabledCount, + previousDayMetricsBucketsCount.enabledCount, ); variantMetricsBucketsPreviousDay.reset(); variantMetricsBucketsPreviousDay.set( - stats.previousDayMetricsBucketsCount.variantCount, + previousDayMetricsBucketsCount.variantCount, ); + const activeUsers = await instanceStatsService.getActiveUsers(); usersActive7days.reset(); - usersActive7days.set(stats.activeUsers.last7); + usersActive7days.set(activeUsers.last7); usersActive30days.reset(); - usersActive30days.set(stats.activeUsers.last30); + usersActive30days.set(activeUsers.last30); usersActive60days.reset(); - usersActive60days.set(stats.activeUsers.last60); + usersActive60days.set(activeUsers.last60); usersActive90days.reset(); - usersActive90days.set(stats.activeUsers.last90); + usersActive90days.set(activeUsers.last90); + const productionChanges = + await instanceStatsService.getProductionChanges(); productionChanges30.reset(); - productionChanges30.set(stats.productionChanges.last30); + productionChanges30.set(productionChanges.last30); productionChanges60.reset(); - productionChanges60.set(stats.productionChanges.last60); + productionChanges60.set(productionChanges.last60); productionChanges90.reset(); - productionChanges90.set(stats.productionChanges.last90); + productionChanges90.set(productionChanges.last90); + const projects = + await instanceStatsService.getProjectModeCount(); projectsTotal.reset(); - stats.projects.forEach((projectStat) => { + projects.forEach((projectStat) => { projectsTotal .labels({ mode: projectStat.mode }) .set(projectStat.count); }); environmentsTotal.reset(); - environmentsTotal.set(stats.environments); + environmentsTotal.set( + await instanceStatsService.environmentCount(), + ); groupsTotal.reset(); - groupsTotal.set(stats.groups); + groupsTotal.set(await instanceStatsService.groupCount()); rolesTotal.reset(); - rolesTotal.set(stats.roles); + rolesTotal.set(await instanceStatsService.roleCount()); customRootRolesTotal.reset(); - customRootRolesTotal.set(stats.customRootRoles); + customRootRolesTotal.set( + await instanceStatsService.customRolesCount(), + ); customRootRolesInUseTotal.reset(); - customRootRolesInUseTotal.set(stats.customRootRolesInUse); + customRootRolesInUseTotal.set( + await instanceStatsService.customRolesCountInUse(), + ); segmentsTotal.reset(); - segmentsTotal.set(stats.segments); + segmentsTotal.set(await instanceStatsService.segmentCount()); contextTotal.reset(); - contextTotal.set(stats.contextFields); + contextTotal.set( + await instanceStatsService.contextFieldCount(), + ); strategiesTotal.reset(); - strategiesTotal.set(stats.strategies); + strategiesTotal.set( + await instanceStatsService.strategiesCount(), + ); samlEnabled.reset(); - samlEnabled.set(stats.SAMLenabled ? 1 : 0); + samlEnabled.set((await instanceStatsService.hasSAML()) ? 1 : 0); oidcEnabled.reset(); - oidcEnabled.set(stats.OIDCenabled ? 1 : 0); - - clientAppsTotal.reset(); - stats.clientApps.forEach(({ range, count }) => - clientAppsTotal.labels({ range }).set(count), - ); - - rateLimits.reset(); - rateLimits - .labels({ - endpoint: '/api/client/metrics', - method: 'POST', - }) - .set(config.metricsRateLimiting.clientMetricsMaxPerMinute); - rateLimits - .labels({ - endpoint: '/api/client/register', - method: 'POST', - }) - .set(config.metricsRateLimiting.clientRegisterMaxPerMinute); - rateLimits - .labels({ - endpoint: '/api/frontend/metrics', - method: 'POST', - }) - .set( - config.metricsRateLimiting.frontendMetricsMaxPerMinute, - ); - rateLimits - .labels({ - endpoint: '/api/frontend/register', - method: 'POST', - }) - .set( - config.metricsRateLimiting.frontendRegisterMaxPerMinute, - ); - rateLimits - .labels({ - endpoint: '/api/admin/user-admin', - method: 'POST', - }) - .set(config.rateLimiting.createUserMaxPerMinute); - rateLimits - .labels({ - endpoint: '/auth/simple', - method: 'POST', - }) - .set(config.rateLimiting.simpleLoginMaxPerMinute); - rateLimits - .labels({ - endpoint: '/auth/reset/password-email', - method: 'POST', - }) - .set(config.rateLimiting.passwordResetMaxPerMinute); - rateLimits - .labels({ - endpoint: '/api/signal-endpoint/:name', - method: 'POST', - }) - .set( - config.rateLimiting.callSignalEndpointMaxPerSecond * 60, - ); + oidcEnabled.set((await instanceStatsService.hasOIDC()) ? 1 : 0); } catch (e) {} - } - - await schedulerService.schedule( - collectStaticCounters.bind(this), - hoursToMilliseconds(2), - 'collectStaticCounters', - 0, // no jitter - ); - - eventBus.on( - events.REQUEST_TIME, - ({ path, method, time, statusCode, appName }) => { - requestDuration - .labels({ - path, - method, - status: statusCode, - appName, - }) - .observe(time); - }, - ); - - eventBus.on(events.SCHEDULER_JOB_TIME, ({ jobId, time }) => { - schedulerDuration.labels(jobId).observe(time); - }); - - eventBus.on( - events.FUNCTION_TIME, - ({ functionName, className, time }) => { - functionDuration - .labels({ - functionName, - className, - }) - .observe(time); - }, - ); - - eventBus.on(events.EVENTS_CREATED_BY_PROCESSED, ({ updated }) => { - eventCreatedByMigration.inc(updated); - }); - - eventBus.on(events.FEATURES_CREATED_BY_PROCESSED, ({ updated }) => { - featureCreatedByMigration.inc(updated); - }); - - eventBus.on(events.DB_TIME, ({ store, action, time }) => { - dbDuration - .labels({ - store, - action, - }) - .observe(time); - }); + }, + }; +} +export default class MetricsMonitor { + constructor() {} - eventBus.on(events.PROXY_REPOSITORY_CREATED, () => { - proxyRepositoriesCreated.inc(); - }); + async startMonitoring( + config: IUnleashConfig, + stores: IUnleashStores, + version: string, + eventBus: EventEmitter, + instanceStatsService: InstanceStatsService, + schedulerService: SchedulerService, + db: Knex, + ): Promise { + if (!config.server.serverMetrics) { + return Promise.resolve(); + } - eventBus.on(events.FRONTEND_API_REPOSITORY_CREATED, () => { - frontendApiRepositoriesCreated.inc(); - }); + collectDefaultMetrics(); - eventBus.on(events.PROXY_FEATURES_FOR_TOKEN_TIME, ({ duration }) => { - mapFeaturesForClientDuration.observe(duration); - }); + const { collectStaticCounters, collectDbMetrics } = + registerPrometheusMetrics( + config, + stores, + version, + eventBus, + instanceStatsService, + ); - events.onMetricEvent( - eventBus, - events.REQUEST_ORIGIN, - ({ type, method, source }) => { - requestOriginCounter.increment({ type, method, source }); - }, - ); + const postgresVersion = await stores.settingStore.postgresVersion(); + registerPrometheusPostgresMetrics(db, eventBus, postgresVersion); - eventStore.on(FEATURE_CREATED, ({ featureName, project }) => { - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment: 'n/a', - environmentType: 'n/a', - action: 'created', - }); - }); - eventStore.on(FEATURE_VARIANTS_UPDATED, ({ featureName, project }) => { - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment: 'n/a', - environmentType: 'n/a', - action: 'updated', - }); - }); - eventStore.on(FEATURE_METADATA_UPDATED, ({ featureName, project }) => { - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment: 'n/a', - environmentType: 'n/a', - action: 'updated', - }); - }); - eventStore.on(FEATURE_UPDATED, ({ featureName, project }) => { - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment: 'default', - environmentType: 'production', - action: 'updated', - }); - }); - eventStore.on( - FEATURE_STRATEGY_ADD, - async ({ featureName, project, environment }) => { - const environmentType = await this.resolveEnvironmentType( - environment, - cachedEnvironments, - ); - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment, - environmentType, - action: 'updated', - }); - }, - ); - eventStore.on( - FEATURE_STRATEGY_REMOVE, - async ({ featureName, project, environment }) => { - const environmentType = await this.resolveEnvironmentType( - environment, - cachedEnvironments, - ); - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment, - environmentType, - action: 'updated', - }); - }, - ); - eventStore.on( - FEATURE_STRATEGY_UPDATE, - async ({ featureName, project, environment }) => { - const environmentType = await this.resolveEnvironmentType( - environment, - cachedEnvironments, - ); - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment, - environmentType, - action: 'updated', - }); - }, - ); - eventStore.on( - FEATURE_ENVIRONMENT_DISABLED, - async ({ featureName, project, environment }) => { - const environmentType = await this.resolveEnvironmentType( - environment, - cachedEnvironments, - ); - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment, - environmentType, - action: 'updated', - }); - }, - ); - eventStore.on( - FEATURE_ENVIRONMENT_ENABLED, - async ({ featureName, project, environment }) => { - const environmentType = await this.resolveEnvironmentType( - environment, - cachedEnvironments, - ); - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment, - environmentType, - action: 'updated', - }); - }, + await schedulerService.schedule( + async () => + Promise.all([collectStaticCounters(), collectDbMetrics()]), + hoursToMilliseconds(2), + 'collectStaticCounters', ); - eventStore.on(FEATURE_ARCHIVED, ({ featureName, project }) => { - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment: 'n/a', - environmentType: 'n/a', - action: 'archived', - }); - }); - eventStore.on(FEATURE_REVIVED, ({ featureName, project }) => { - featureFlagUpdateTotal.increment({ - toggle: featureName, - project, - environment: 'n/a', - environmentType: 'n/a', - action: 'revived', - }); - }); - eventStore.on(PROJECT_CREATED, () => { - projectActionsCounter.increment({ action: PROJECT_CREATED }); - }); - eventStore.on(PROJECT_ARCHIVED, () => { - projectActionsCounter.increment({ action: PROJECT_ARCHIVED }); - }); - eventStore.on(PROJECT_REVIVED, () => { - projectActionsCounter.increment({ action: PROJECT_REVIVED }); - }); - eventStore.on(PROJECT_DELETED, () => { - projectActionsCounter.increment({ action: PROJECT_DELETED }); - }); - - const logger = config.getLogger('metrics.ts'); - eventBus.on(CLIENT_METRICS, (metrics: IClientMetricsEnv[]) => { - try { - for (const metric of metrics) { - featureFlagUsageTotal.increment( - { - toggle: metric.featureName, - active: 'true', - appName: metric.appName, - }, - metric.yes, - ); - featureFlagUsageTotal.increment( - { - toggle: metric.featureName, - active: 'false', - appName: metric.appName, - }, - metric.no, - ); - } - } catch (e) { - logger.warn('Metrics registration failed', e); - } - }); - - eventStore.on(CLIENT_REGISTER, (heartbeatEvent: ISdkHeartbeat) => { - if (!heartbeatEvent.sdkName || !heartbeatEvent.sdkVersion) { - return; - } - - if (flagResolver.isEnabled('extendedMetrics')) { - clientSdkVersionUsage.increment({ - sdk_name: heartbeatEvent.sdkName, - sdk_version: heartbeatEvent.sdkVersion, - platform_name: - heartbeatEvent.metadata?.platformName ?? 'not-set', - platform_version: - heartbeatEvent.metadata?.platformVersion ?? 'not-set', - yggdrasil_version: - heartbeatEvent.metadata?.yggdrasilVersion ?? 'not-set', - spec_version: - heartbeatEvent.metadata?.specVersion ?? 'not-set', - }); - } else { - clientSdkVersionUsage.increment({ - sdk_name: heartbeatEvent.sdkName, - sdk_version: heartbeatEvent.sdkVersion, - platform_name: 'not-set', - platform_version: 'not-set', - yggdrasil_version: 'not-set', - spec_version: 'not-set', - }); - } - }); - - eventStore.on(PROJECT_ENVIRONMENT_REMOVED, ({ project }) => { - projectEnvironmentsDisabled.increment({ project_id: project }); - }); - - eventBus.on(events.ADDON_EVENTS_HANDLED, ({ result, destination }) => { - addonEventsHandledCounter.increment({ result, destination }); - }); - - await this.configureDbMetrics( - db, - eventBus, - schedulerService, - stores.settingStore, + await schedulerService.schedule( + async () => + this.registerPoolMetrics.bind(this, db.client.pool, eventBus), + minutesToMilliseconds(1), + 'registerPoolMetrics', + 0, // no jitter ); return Promise.resolve(); } - async configureDbMetrics( - db: Knex, - eventBus: EventEmitter, - schedulerService: SchedulerService, - settingStore: ISettingStore, - ): Promise { - if (db?.client) { - const dbPoolMin = createGauge({ - name: 'db_pool_min', - help: 'Minimum DB pool size', - }); - dbPoolMin.set(db.client.pool.min); - const dbPoolMax = createGauge({ - name: 'db_pool_max', - help: 'Maximum DB pool size', - }); - dbPoolMax.set(db.client.pool.max); - const dbPoolFree = createGauge({ - name: 'db_pool_free', - help: 'Current free connections in DB pool', - }); - const dbPoolUsed = createGauge({ - name: 'db_pool_used', - help: 'Current connections in use in DB pool', - }); - const dbPoolPendingCreates = createGauge({ - name: 'db_pool_pending_creates', - help: 'how many asynchronous create calls are running in DB pool', - }); - const dbPoolPendingAcquires = createGauge({ - name: 'db_pool_pending_acquires', - help: 'how many acquires are waiting for a resource to be released in DB pool', - }); - - eventBus.on(DB_POOL_UPDATE, (data) => { - dbPoolFree.set(data.free); - dbPoolUsed.set(data.used); - dbPoolPendingCreates.set(data.pendingCreates); - dbPoolPendingAcquires.set(data.pendingAcquires); - }); - - await schedulerService.schedule( - async () => - this.registerPoolMetrics.bind( - this, - db.client.pool, - eventBus, - ), - minutesToMilliseconds(1), - 'registerPoolMetrics', - 0, // no jitter - ); - const postgresVersion = await settingStore.postgresVersion(); - const database_version = createGauge({ - name: 'postgres_version', - help: 'Which version of postgres is running (SHOW server_version)', - labelNames: ['version'], - }); - database_version.labels({ version: postgresVersion }).set(1); - } - } - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types registerPoolMetrics(pool: any, eventBus: EventEmitter) { try { @@ -1080,26 +1115,8 @@ export default class MetricsMonitor { // eslint-disable-next-line no-empty } catch (e) {} } - - async resolveEnvironmentType( - environment: string, - cachedEnvironments: () => Promise, - ): Promise { - const environments = await cachedEnvironments(); - const env = environments.find((e) => e.name === environment); - - if (env) { - return env.type; - } else { - return 'unknown'; - } - } } export function createMetricsMonitor(): MetricsMonitor { return new MetricsMonitor(); } - -module.exports = { - createMetricsMonitor, -}; diff --git a/src/test/e2e/api/admin/instance-admin.e2e.test.ts b/src/test/e2e/api/admin/instance-admin.e2e.test.ts index 9b1cdb34ed1a..a3e5c08c7386 100644 --- a/src/test/e2e/api/admin/instance-admin.e2e.test.ts +++ b/src/test/e2e/api/admin/instance-admin.e2e.test.ts @@ -6,10 +6,12 @@ import { import getLogger from '../../../fixtures/no-logger'; import type { IUnleashStores } from '../../../../lib/types'; import { ApiTokenType } from '../../../../lib/types/models/api-token'; +import { registerPrometheusMetrics } from '../../../../lib/metrics'; let app: IUnleashTest; let db: ITestDb; let stores: IUnleashStores; +let refreshDbMetrics: () => Promise; beforeAll(async () => { db = await dbInit('instance_admin_api_serial', getLogger); @@ -26,6 +28,15 @@ beforeAll(async () => { }, db.rawDatabase, ); + + const { collectDbMetrics } = registerPrometheusMetrics( + app.config, + stores, + undefined as unknown as string, + app.config.eventBus, + app.services.instanceStatsService, + ); + refreshDbMetrics = collectDbMetrics; }); afterAll(async () => { @@ -39,6 +50,8 @@ test('should return instance statistics', async () => { createdByUserId: 9999, }); + await refreshDbMetrics(); + return app.request .get('/api/admin/instance-admin/statistics') .expect('Content-Type', /json/) From 9b3529d7cb2af9bda77a64c3c141b0ebb4db451d Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Fri, 18 Oct 2024 13:12:58 +0200 Subject: [PATCH 8/9] fix: missing page titles (#8477) --- .../src/component/admin/auth/AuthSettings.tsx | 2 ++ frontend/src/component/admin/roles/RolesPage.tsx | 2 ++ .../component/featureTypes/FeatureTypesList.tsx | 15 ++------------- .../components/InsightsHeader/InsightsHeader.tsx | 1 + .../personalDashboard/PersonalDashboard.tsx | 4 +++- .../strategies/StrategiesList/StrategiesList.tsx | 7 ++++--- 6 files changed, 14 insertions(+), 17 deletions(-) diff --git a/frontend/src/component/admin/auth/AuthSettings.tsx b/frontend/src/component/admin/auth/AuthSettings.tsx index 3f9629c1ede2..af024707dca4 100644 --- a/frontend/src/component/admin/auth/AuthSettings.tsx +++ b/frontend/src/component/admin/auth/AuthSettings.tsx @@ -12,6 +12,7 @@ import { ADMIN } from '@server/types/permissions'; import { PremiumFeature } from 'component/common/PremiumFeature/PremiumFeature'; import { useState } from 'react'; import { TabPanel } from 'component/common/TabNav/TabPanel/TabPanel'; +import { usePageTitle } from 'hooks/usePageTitle'; export const AuthSettings = () => { const { authenticationType } = useUiConfig().uiConfig; @@ -46,6 +47,7 @@ export const AuthSettings = () => { } const [activeTab, setActiveTab] = useState(0); + usePageTitle(`Single sign-on: ${tabs[activeTab].label}`); return (
diff --git a/frontend/src/component/admin/roles/RolesPage.tsx b/frontend/src/component/admin/roles/RolesPage.tsx index 4299b0a48ae8..84813c8c94b1 100644 --- a/frontend/src/component/admin/roles/RolesPage.tsx +++ b/frontend/src/component/admin/roles/RolesPage.tsx @@ -14,6 +14,7 @@ import Add from '@mui/icons-material/Add'; import ResponsiveButton from 'component/common/ResponsiveButton/ResponsiveButton'; import type { IRole } from 'interfaces/role'; import { TabLink } from 'component/common/TabNav/TabLink'; +import { usePageTitle } from 'hooks/usePageTitle'; const StyledHeader = styled('div')(() => ({ display: 'flex', @@ -31,6 +32,7 @@ const StyledActions = styled('div')({ }); export const RolesPage = () => { + usePageTitle('Roles'); const { pathname } = useLocation(); const { roles, projectRoles, loading } = useRoles(); diff --git a/frontend/src/component/featureTypes/FeatureTypesList.tsx b/frontend/src/component/featureTypes/FeatureTypesList.tsx index 6190f78740e7..2d9f3953bcde 100644 --- a/frontend/src/component/featureTypes/FeatureTypesList.tsx +++ b/frontend/src/component/featureTypes/FeatureTypesList.tsx @@ -5,7 +5,7 @@ import { sortTypes } from 'utils/sortTypes'; import { PageContent } from 'component/common/PageContent/PageContent'; import useFeatureTypes from 'hooks/api/getters/useFeatureTypes/useFeatureTypes'; import { PageHeader } from 'component/common/PageHeader/PageHeader'; -import { Box, Typography } from '@mui/material'; +import { Box } from '@mui/material'; import { Table, TableBody, @@ -150,18 +150,7 @@ export const FeatureTypesList = () => { return ( - ({ - fontSize: theme.fontSizes.mainHeader, - })} - > - Feature flag types - - - } + header={} > diff --git a/frontend/src/component/insights/components/InsightsHeader/InsightsHeader.tsx b/frontend/src/component/insights/components/InsightsHeader/InsightsHeader.tsx index 7a2dee00e29e..b9e5e07ac123 100644 --- a/frontend/src/component/insights/components/InsightsHeader/InsightsHeader.tsx +++ b/frontend/src/component/insights/components/InsightsHeader/InsightsHeader.tsx @@ -69,6 +69,7 @@ export const InsightsHeader: VFC = ({ actions }) => { return ( <> ({ display: 'flex', @@ -103,9 +104,10 @@ export const PersonalDashboard = () => { const { trackEvent } = usePlausibleTracker(); const { setSplashSeen } = useSplashApi(); const { splash } = useAuthSplash(); - const name = user?.name; + usePageTitle(`Dashboard: ${name}`); + const { personalDashboard, refetch: refetchDashboard } = usePersonalDashboard(); diff --git a/frontend/src/component/strategies/StrategiesList/StrategiesList.tsx b/frontend/src/component/strategies/StrategiesList/StrategiesList.tsx index 0ee82dba8ea0..06593e98e03f 100644 --- a/frontend/src/component/strategies/StrategiesList/StrategiesList.tsx +++ b/frontend/src/component/strategies/StrategiesList/StrategiesList.tsx @@ -397,9 +397,10 @@ export const StrategiesList = () => { - - + } + title='Strategy types' + /> } > From 1c29f70edc3930f4918ae933a186247908ba8ea7 Mon Sep 17 00:00:00 2001 From: Alvin Bryan <107407814+alvinometric@users.noreply.github.com> Date: Fri, 18 Oct 2024 13:57:24 +0100 Subject: [PATCH 9/9] AI Tutorial (#8297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit How to use feature flags to control AI models **[Preview link](https://unleash-docs-git-alvin-ai-tutorial-unleash-team.vercel.app/feature-flag-tutorials/use-cases/ai)** --------- Co-authored-by: Melinda Fekete Co-authored-by: Nuno Góis --- .../feature-flag-tutorials/use-cases/ai.md | 235 ++++++++++++++++++ .../use-cases/model-variant.png | Bin 0 -> 279179 bytes .../use-cases/sveltekit-chatbot.png | Bin 0 -> 61474 bytes website/sidebars.js | 5 + 4 files changed, 240 insertions(+) create mode 100644 website/docs/feature-flag-tutorials/use-cases/ai.md create mode 100644 website/docs/feature-flag-tutorials/use-cases/model-variant.png create mode 100644 website/docs/feature-flag-tutorials/use-cases/sveltekit-chatbot.png diff --git a/website/docs/feature-flag-tutorials/use-cases/ai.md b/website/docs/feature-flag-tutorials/use-cases/ai.md new file mode 100644 index 000000000000..10596d0a47f1 --- /dev/null +++ b/website/docs/feature-flag-tutorials/use-cases/ai.md @@ -0,0 +1,235 @@ +--- +title: How to use feature flags with AI +slug: /feature-flag-tutorials/use-cases/ai +--- + +Hello, + +Like many people in lots of tech companies today, you might be playing with generative AI and large language models (LLMs). You might even be integrating these AI technologies into your company's products, probably in the form of chatbots or content generators. + +The main way to interact with LLMs today is via a set of APIs, usually either OpenAI, Anthropic or aggregators like Groq. Most of these APIs have similar parameters, like: + +- `model`: The model and the specific version of the model to use. +- `prompt`: The prompt to give to the LLM. + +Given how much these models vary in their capabilities, chances are you'll be testing multiple models, multiple versions of the same model, and multiple prompts. + +This is where feature flags are super useful. They allow you to easily switch between different configurations. In this tutorial, we’ll explore how to use feature flags with AI models. + +We'll start with a basic chatbot. I know building a chatbot is a total cliché at this point, but it's a small, self-contained example that everyone knows how to interact with. You can take this example and apply it to any other use case where you need to interact with an LLM via an API. + +First, clone the repo: + +```sh +git clone https://github.com/alvinometric/feature-flags-ai +cd feature-flags-ai +``` + +Install the dependencies: + +```sh +npm install +``` + +Copy the `.env.example` file to a new `.env` file, and add your OpenAI API key to it: + +```sh +OPENAI_API_KEY=sk-... +``` + +Run the app: + +```sh +npm run dev +``` + +You should now see a chatbot UI, like this: + +![chatbot UI](./sveltekit-chatbot.png) + +This is a simple SvelteKit app with a chatbot interface. If you’re not familiar with SvelteKit, it works similarly to frameworks like Next.js, Nuxt, or SolidStart, where your file structure defines the routing. + +The most important file for this tutorial is the `src/routes/api/chat/+server.js` file. + +It creates an API endpoint at `/api/chat`. When your frontend sends a POST request to `/api/chat`, this is the code that handles the request. + +```javascript +import { createOpenAI } from "@ai-sdk/openai"; +import { streamText } from "ai"; +import { env } from "$env/dynamic/private"; + +const openai = createOpenAI({ + apiKey: env.OPENAI_API_KEY ?? "", +}); + +const variants = { + variant1: { + model: "gpt-3.5-turbo", + max_tokens: 4096, + temperature: 1, + }, + variant2: { + model: "gpt-4-turbo", + max_tokens: 4096, + temperature: 1, + }, + variant3: { + model: "gpt-4-vision-preview", + max_tokens: 4096, + temperature: 1, + }, +}; + +export const POST = async ({ request }) => { + const { messages } = await request.json(); + const variant = variants["variant1"]; + const result = await streamText({ + model: openai(variant.model), + messages, + max_tokens: variant.max_tokens, + temperature: variant.temperature, + }); + return result.toDataStreamResponse(); +}; +``` + +This file is doing a few key things: + +1. Sets up our OpenAI client with an API key. +2. Defines different AI model configurations in the `variants` object. +3. Handles incoming chat requests with the `POST` function. + +When a request comes in, it: + +- Extracts the messages from the request body. +- Selects a variant (currently hardcoded to 'variant1'). +- Uses the OpenAI API to generate a response. +- Streams the response back to the client. + +The `streamText` function is one of the utilities provided by [Vercel's AI SDK](https://sdk.vercel.ai/). It helps deal with the real-time streaming of the AI's responses. + +## Creating a feature flag with AI variants + +Instead of hardcoding `variant1`, we want to use feature flags to dynamically choose which AI model to use. This will let us easily switch between models, test different configurations, or even do some A/B testing to see which model performs better for which task. And we can do this without having to redeploy our app. + +We can also disable it altogether if the upstream API stops working, or we run out of credits. + +To implement this, we'll need to: + +1. Set up a feature flag provider (we'll use Unleash). +2. Replace our static objects with dynamic feature flag variants. +3. Use the feature flag in our code to determine which AI model and settings to use for each request. + +### Install a local feature flag provider + +In this section, we’ll install Unleash, run the instance locally, log in, and create a feature flag. If you prefer, you can use other tools instead of Unleash, but you’ll need to update the code accordingly. + +Use Git to clone the Unleash repository and Docker to build and run it. Open a terminal window and run the following commands: + +```sh +git clone https://github.com/unleash/unleash.git +cd unleash +docker compose up -d +``` + +You now have Unleash installed on your machine and running in the background. You can access this instance in your web browser at [http://localhost:4242](http://localhost:4242). + +Log in to the platform using these credentials: + +``` +Username: admin +Password: unleash4all +``` + +Click **New feature flag** to create a new feature flag, called `ai-model`. + +After that, and this is the most important part, we need to add a variant to our feature flag. + +Add a strategy to the feature flag in the `development` environment, in that strategy, create a variant for each of these model configurations: + +```javascript +const variants = { + variant1: { + model: "gpt-3.5-turbo", + max_tokens: 4096, + temperature: 1, + }, + variant2: { + model: "gpt-4-turbo", + max_tokens: 4096, + temperature: 1, + }, + variant3: { + model: "gpt-4-vision-preview", + max_tokens: 4096, + temperature: 1, + }, +}; +``` + +What we'll do is move all the model configurations from the code to the feature flag variants. + +![a variant with parameters for an OpenAI model](./model-variant.png) + +## Querying AI feature flags + +Now let's go back to the code and grab our AI config from the feature flag that we just created. + +First, install the Unleash Node.js client: + +```sh +npm install unleash-client +``` + +Now, let's modify our `+server.js` file to use Unleash: + +```javascript +import { initialize } from "unleash-client"; +import { createOpenAI } from "@ai-sdk/openai"; +import { streamText } from "ai"; +import { env } from "$env/dynamic/private"; + +const openai = createOpenAI({ + apiKey: env.OPENAI_API_KEY ?? "", +}); + +const unleash = initialize({ + url: "http://localhost:4242/api/", + appName: "my-ai-app", + customHeaders: { Authorization: env.UNLEASH_API_KEY ?? "" }, +}); + +export const POST = async ({ request }) => { + const { messages } = await request.json(); + + // Get the feature flag variant + const variant = unleash.getVariant("ai-model"); + + const result = await streamText({ + model: openai(variant.model), + messages, + max_tokens: variant.max_tokens, + temperature: variant.temperature, + }); + + return result.toDataStreamResponse(); +}; +``` + +This setup uses the Unleash client to fetch the value of a feature flag called `ai-model`. + +Now, instead of hardcoding `variant1`, we're dynamically choosing the AI model based on the feature flag variant. + +This setup gives us a ton of flexibility. + +Do you want to roll out GPT-4 to 10% of your users? Easy. Need to quickly switch everyone back to GPT-3.5 because of a bug? No problem. + +You can do all of this from your Unleash dashboard without touching your code, and without needing to redeploy. + +## Conclusion + +Thanks for following along! + +In this guide, we covered how to use feature flags to help you manage AI models. + +That approach lets you switch between different model configurations, experiment with variations, and even roll out updates without needing to touch your code or redeploy. This gives you more control when experimenting with LLMs, and more power to respond to the unexpected things that will inevitably happen, like running out of credits or discovering a bug. diff --git a/website/docs/feature-flag-tutorials/use-cases/model-variant.png b/website/docs/feature-flag-tutorials/use-cases/model-variant.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6bf9adf8c14e221c72a26026e8b80e76f4fbe4 GIT binary patch literal 279179 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%0DtZgKn34XTQtNVHVqQt3Mcfwt23?={%xM{(|& zAR>h>>4tH)_QWZ|a5E<598aRJj&F8e`*7Rc9U~)CQAr7U9aR=3BS}_7+M)}{)@M9+ z9?IWWPO>neYCT^rhqq~L?fF6mlUpxOHvy#{c!8_7>;r2j51WK>TyWn&%kgWp_SiSzT9rMH8={mWl=4K#jdu!U! z4M+g-;Sxo4fNJ1edWZNk^u2NY3q~drqT2ydJ06EyUaRRY{Ow;{zc3~c`A}ReP_%X~ zXGnUb%4by%0Qg|W^ZT78kI?g%#dRff)0V9-DnL1=pE#pe3D+ZtSk9~8;L-cfu} z{TS3bB9CfClmIzrJYA%pZI6Pt1u4#@3QtvMN=ixsS$wCt*}^9rg&FB%vbZ?LX9_rTzNP+Iul0>ikY!&ic{6OhlJIcugv}F~5cvn_ zXu8N3v%d1b+>6gVM@ug&D?6^Ks%kH+t|ql2&Svz<#?+V@LJhh-6D`QaL@NnKa_3wH zQDlU~{D?|{+QEp#BMZvJgVNWDN$-jDi7+WUJG;D@JnYqT;2Y%T@6EqG3jr~82x+J4 zom74*{LXNb^m?2a@)wydvp)3h(tRyJhC(OhO)GPgf&DJZ7!k9bu=xP($t0TR+6|wx zsWTMs7cY3W+hDL4k-GvjPW7mJvT#E2@H2U}p?j-yR{+9nzBn`vyx;Wr1Bt5~jtrVB zc8EcC{e=kOJ1MZ5 z9xrejf9ASyQa`a)m63Rt#{VM7(_zo8pMV}CrnD3ktn^jh7cRZVd9I;ZRC)L09I+57 zAmDQaya{J#XIIawk9>pYgI7%fg|9cHJd_@zE>VdmE3si97|#nJ^U&j$QY98Js!9x) z;@bO1_eT9fTmzJvU5%Qa^gk6x?c(0N=2i#%Ud&tE#QO}KGOa{aoi4LpAt@xC{-qDk z*l}u1+*}>QvjV{awyCw$Uc$Q_+{o7b4jI@bhRd|xDp~c@xb8;Yz}nwe@8q4^9a5r? zO@P>uQ#^cp-T}4$0AYU%4{l;kfE3ef30tTZPvu>5@e{E@*(J<`w@LYz*5|k$YUc-^ zZ5q##n+5Q6tbzcDSkN!n^V9IeHvfyM)s>Yt)Ih~~%p-Amf|}S^H3a3(Dv%P!+#&W+ zCZ2{mBip%vj>;CT`+fa5DJYViCQip2cK3I)_R2`Bi+r3vi*(A~UMHRboSTRuI^`5i z|FMhLNAik_S=AECo291{kS)JS<`4H_&ay4S!h|?D+wa-e!v0Qpq&3heCvsUU9RCGa z!9`G9*Vu7%vnbzrGH+;SsWmoX+Atf*l?J;O5b7z44}F+Z!5<_guL?FqMnQa_K3NCDAoMdodmeuUViY4lk|pAPZes za14w0_cUWU?YK=Z>W%TJ*bX`5K za|~zPH=_pz=sC`%Nr?9J!Y&6ODukW+elbjNE_U{761|ck9_*kJ*BPYz)ZK=m1n)?^ zfJjEwj0+HPxkolfn-^)b?b(8YOj?9yjzzXfb)U)Zy*b2tex%1dOklhiS-4j=QeVs^ z+!L|i3Y#Nm3^owVc~5i}R4ky*ywhoHS0og?uNp0JcpO2+#{hvsnaC^}?hw8`+M0+g zg7((brw8LfGvXHPb-QkKREu$TO%CUc9Jiao- zZ2_vCK68be%4wi!1J|2xWBSI45CK5}0j8r^M-}lArGs!>3f(aO^C0sCSMAWAD%f1? z>6_Bh{I?ct5O_~dPcD69dv5g1?Ln4_aCt?dm?g78aHlM&#ddo+92ogJ`@#I55!50g zC1{$|a;aHCYc0k%z2!rxKU~Wx4>Z?R2c@9oQw7wa`=3AeO-Y-M)XFJ54oyOb3Zj!J ze0e$~sS+k0Z`IspRCACZpnm4=e$Kg{l3nlxC_5QaFXu3&r1M$S_7=jq`;NjPH+Svc z>Ih|=lDqdcECg$1Dh~xH%OqgRdCq4aQe4J)uBNxDFh0Opw1s>g8)=Cst!|JB6%ua_@l- zC6j|L$9{$1*k({gWPtm{aQx2h5K>LO8wxVbipIb|>kaFKs@395?HxaQ-P{J}ZyNvz zzhp7spdMrpTChh=~BwG9e!MC@!%8$WeiOBL`<-h|ITk(poK9^q|f-XXu z6Ckw6K6`Qhr>{m}Bgem)ASEls+5FJkE9$&OmH=@}(8%;%`L`&Zkl9z1tpb!r(X8gh z;glG1A&Lv6`S;W_CG+>_u3gLj8ol85`UUK4KBbURUxcs(|-l^%t!Z%f;@3ZX%oYzo>};PFn5s`l78wOQ z#)dh76e{UC+EE3Z6HpPZC4Ci_=bVg%h7gm6rh!1=XqZJWSS`{n?CUF7$Iq51?yr0; z3+!}y0#hY8$8)2CBz~fFKQ2rx&_Gao1bV0`TuTCr3x>!T@_|gRn7ZfNRNd8gsVg1M z`r=}$NETJ{a>Ju#&{xR_kW4`?seI}u#cAww;iRn85nSw@RJNS&Djm&Q2#}szVMvTp zBw_w&=;&dUaE{BfRv%*ng9_WPqBmzci$Sj81!$@-NT{iUMK^Ll?dyAfvXS?kK|KHQ zZii16#xS6(KI-YtnF}i{Tph|)B3=VyXs#$HiX5kJ$>)NEjn*3+K3h<}256A%z1WdL z4QRr~$!aD=ts%31$^uAo7YD&3Ba}Su0SQgOwOHR@SK@(thX4FwGh;-{!#j0St+oy!j?olB76HD z*MMQ+5bGRbUncYIJw4I+!NGoiIZ!~i=I5WB9?$?XYbVBFhQv`WeKR>JX+TXn(|o6YCN|;ux5?UiQ7papix%}bgoFX+T3t%> zm_>k|%?p6;zCIQ4rWr7(H6a5y$!9Z7B5Z8RlKmhtvs-OrRlnFYrk`y|2cmTbA$a8* z10=<4%&9=~pcnXLxsw&9kKEk402X$({q73NtaiXCI*{LmXZ0E6E<8LuL<89fX}s|8 zw0Zyy+?0#hCTrgT+L8RjK?p&;bFX3**au3Qfn|qd`!y z#Yoo-)nUI&_jRqI`^APgA@;sMQ;ov)+VtEq5S8<40r0# z#m21|)c>5_$Umr!?lx63uhupaH`%733g4yA-fx|%uLNiMK5TTPG8ThE^@=-AHc*hy z`FB=6$$OR)U}JB$zW`wNBW6uQL-UA!!E=GBi3#dUrUqGnTggFvdkptkZinRfX++`= zabI~JeRWy(9^Xbm-aQAQg{A|Lsu~V2s*6u`ai8uzFp7=A(fEF~*?LK1Ig*;1+W7!T z9Ih^Ro`XlIlX?n>N@qVXAb>?0X*pt!>45w)Q}X*qJ{VJ6L@XzPo$S?dPl)y;FEf$H za-zPG>%3d9YI`X(BrYDLDbQ*8$42d_N9;P+f26cK%|{T(+~p!YJ)nMTDoMr3kyr@Q0ACw=u+0mXUC@HyYaDCgl z2uQ=U7Xw*-=o%SUe3Or;g74p)Id}+~n#`6=m>^MtV|tW@?9RIXczjZl_qR!)hhk+l z=Ps9Fds}?0^qoqVPQrs+ia8<*l1a4L99KrBJZPq-J3t6`7cYR+ z0qQ8XSiT}g{koF=3zIu+agy{sk!Op-SWh&)1r-e>CI{op9kOR?1J)y-8cc<&u;T>l^Xk1Knf0xAw znN1J^9$AP74RH*IRHS?l!k0$S^D%Arrd~(gVuw!c0|ehgTy7h+oa$F$Vb&FqZ(~57 zV&fKt8D5|Lnptr!{t^?j|Hw^>2O(U<`hNN$g>E@~XzCf_R3O16bZoOglcp7Qq&&iI zNq6eL_k0{gH;iS3A>5^TyovWVVUpG>T-tBb$NB5cTr4KW4k(cbHR zPEeX0AVzl?E#?H4c_#7poS$ey?$FTOejPR4}X!{ZFd82Mui&$xX~s!gxIpyBT& z)eE{jD39J#OuzP+nhd>25kL?ips#Oi+_*-O{?7tD&~k&$jBE*z2Yj*lch)3;e;7T| zlTU01LR2vI9J%#+htx#v>W-qG+7fy1$B&#hZUBC@ESc2C1+BPiQAr6&mt|>bspb$d ziyUB*&FgqAQ- zdKNKgcoZKWuu-pU#&w#%uKAT;^3qdArX@a}^w!r%Ix+I8glGjC7W!Bu2|m6XQc{HB zN=8n)H}uALWB$(I|E3M1`O#nQjsbrtd3hWUT2ey0+JPQ$58n*vhA_?~+WY&hcV;9& zH_@qTbM6-HljGw#!!aOw0!7W432Jp^j`7LK5@pjbi$WL$Yu=TwA;#C}oHLPjGPn8i zF#mdVJf0|u?1x1+BvAMf8DaZ<_JIg}T~RSW^On5KC!j-*JqDz%7(>xi0(&gxn3a{M zlyjLYF+#ikYhWyj{=IvQ-s9*Zk7rwU_R6n7>ymoCdQqTt%1d1zDOA0n;Cdizw-6}Y zDK!ZiooLpO8&l7{|McnMEjd()w{M+^?6Xu&i`Uq1-i*i7Y$IQPLqnr?VPI%$d&k!H zhjK`#KrJ*1!uT>VA)%cRjiXqJzrqgDPnsLP&Oq=37%MLN^btc=t?$#PPXhx+m1aQ? zNC4P(vHfmG{uJFc;NIQ4vRWw;AiN$r zq|CH@`dC6B-x30EU#ZVf@zo;l18yg#z2)uFe zXtbicyC|^W{c6LyCZEd?DPVtKgl0%cNDwPJ9BkAA1y&v5vv@)!P&xdeSOe`IV_xvY z>ORIo`8d<;Vd`5!!%67PL!1KxbV!fmT}Cl6Lt*{;;pK{!mTf>X>vacsF(p0ybK%Yc zqARpIu%P4+1~HqNCMuQackeL0zhFFq8DZ^#Iwl%y{TA+j_lLS7k|w~26_zPC>?TW5 zF4uv(WddTt2CQ)_EneiD#; zM+Jk%wgr`y#AX;I#pq~g4DJ|I!whAd_o^t1^OtjDys3FbVaGCb3~pB-&VK=8Y=_L> z0`eoJLC`XW^-gMF4bpC?Nfwa%cXxO9VXD|Xe#s|950gjc3AR|;*@@O6(kGx5_U&H! z5I>I@n#U`K#<=u2?P~_-_U?QK6N&PE?jzJ2z*w^}zxGA)!NtYxM7@*3gZ$|GzC89re4N(u_|J+{i>LeC6FLHnayC%Ek_zaWb6LlCKyZX94tT7jG++ueq z61}sO86RU}X9Zz?jOqrAXkts|BW$dqY3R;hP4@maJ3o945?U}}bo=uaZSA;NF4%4MV9x*RPOa z=&PNHYD|3H^vcRg1*XMA=4VfpBMS1#*+>c)3txtZzwU<9Tky13Bd{+puG-aaHwf67 z1yxt`ohm#P%(ISf_YG8A*xbAk>289$5nfkU*IrswgeBqaoqCZaB_@U|sJv4^dE6$q zr3yL^K;T4Lfjfkek&y;??tvHub`%>15Mk)AZXSHMwk7O2k0;NzDDzqedX=AFsh515 z`znBPd>XuCt^8fUth1ubZH_IMq3x`Pjf<4xZ$i;mMiW|~=*m}`Y%)rOD0BPy$p9UM zo?fEsBEaW_#KrNDMTb#FX@2m69qor-CF6<4m|@*&XDnj@Wnallar&IMSyPgQBPil8{PHRhx%;E%>(@eNfJ7Euz;A30cY&&Ns&WEW{0YCl! zUl(m?*bMX(d~aUPIemL`bMJEf=J2bKzx>Ck?+@jSR~cfiDl6p^z@|G7WL(1l)1T`L zj)46xw76YX4=-{dh=(F_63^~kUL&we$t+i) z5;E~sm)dEMGD%H)tx{NU+4o6r>@320cAg#v-G}sCHG2!e`IsTRR|L(p=PSk^!onV5 z*pRl16;(ieFGodHVg(plDXIti2L~Oi4|$85t=o{$)))q-01b3QWMSLD@ti)k4c{r6 z?0O1{pH7%MC`m{jh)-0QO^*#)QuX0Sr)0be z(>E}1SdsfaKQx4%>G?Y!~`@J zSG-rwb0)mZ}BUSO9!!TpZ?QIJ0qUQng zIk#{O+1O)sg(NPEf`E?iM^|}E+0+cLr_lh!7Ks8H;3Fu;{0<=gsEU5t8o9DE&p0+ESFATe*sfPu8 zpY^5kTkOxdfucgS~kR85joo`mnic?6zYR-t+viH~(%=e`Es`mSLV=09l!S4Bs0rl$W0$6(#p*N&^T{ zgQ{B+h*W^C$!smkS!G?_!*uHbfJb3{*w;7>aO;5J60&0nHaPCq$_lH~Pl{~eUF`w4 zlJ1+2``kbkS)=;rB4FpV0vTUy?4{5VnYbbziO_B?>+ORBOWL)WYR68&!FXD_d~YA0 zuhOY|J3F)-+u3x5ljNpAjxOyv$e_P{`2u0$6@z>H^!9I(A?bI(^Vk5A+Ml73VBr<|M9393H@a@0fcri z-j-P84F==Wds<^w8DYz0FrYOq()!Z?xEdo4^f}W9*Kfn=h6{2!LdQM)^KNHq)x>{M zO#a>O1PUQY^d%kdJ`t&kI5;?{6+C^Z0=OQ40G+S4=|uyXKfk+0Q1=5!q!2Jjp)#Gdk=K3F8z z?@t<%%d{=iKur0sM(p2{G9doG1}c>t;hCCv?CfLo^!>1~ep_#toigE6q@<-^L01Bq z2tl8R-!Q|S0W2FhEA$7WGc!n;0GmV3%4!PasvPAuBc2rtLW>Hgefu^Us9+-e<_89u zk#Oz8TX0(;(T&#^N1?W>s{hTt@nphatm-5hUG^%-$etM?jwYJnC7;r$nGpr#M1UR` zX^Uk4pC+FrshI|4F1^7!+8Nc??$z2>Mq@f|_KTwGin0Ukb%#Q-Ru3*L=npIun~ zpoQpnL|36>y7kZErv`8y@_GtzP>4AU~ zuo=3#y2cCV2i-{M{@Gd@E#VK=bNy}Tsxbb@-3Zpq%#ljhRX9c+5TZRgi?2HzO;H>-qE7+-TV;;HYK$%nvWd_Ivhv zu_|>z)bFkYDeysxq0k!06m;d}qRR3jBem-=F)b)5C;<0o`o|A>F1;e41yKY98Ka|h zzgQ8lo5nR2L?Le5K!Y<0gz_u^Pk@R#UJ?gP5qKMzvrjk#|HM4ZrYmJl&bLv<C&%ix;nUlwgGgAi`-s zFwU<$jHivK3;YB8JX5}EH9aFIBY_65d|%Jj6oug-<1F|<&-<5eKqF|2f;g!N@S47B zHbLheD{h0QX5bJ7npl`V%}g$*dG@lxGy`-OqKtkX7F`GrV6Ad#cHx%7yX=y23SH?=h6%=3^y#y5;dr0lleN|LeDRf&Q-_4}RcN{0_SmElG=PG=3L^DqQl4#5F$S1+E#F&3JTUNGBxE4tO)Ec-qZPBg*i2C6GF$GlOfB zaNM6WwhERO6!emHo~j6S;G&8zy)?InP)aOV*Vlac;t0l4a@HjCIQ`5B<6BCIXEULE zZ(3^d@j2~ZZy&72ATxYt=~unu3}w>azlSW`cwQodOON990aTx<)EV?s30l*^)>xeM z>Gvu{R01Op?ghS}IUnfh5weR~HZgfg^Q*}#DGA1Xvw4SuS*_F255CX^tprN2yR)^i zL9Fw%6*z>1EnCLqqDUS2R7^|}Z6l!B+mWD5L6X7Lta|;CFxD?Kw~)vJN0C77NU-jO z;{i#K%c%qt`wJe|sv7Ncvl(D}c{3taUvz&GSkwVxx&V#hM5y;**;qka#shIsc_j<7Oftro4UM+1Yf^}!fh@F>@i<0+hf`HHva6a^{ zpAdGMdc0Lt4M})eva*uGxe?y$>W@l1R-jfs-3MSqZisr1lZ-|RS|s5jg3NryJOh0Q zkfFYO!=%blGb<@63I34t_-)I_AK{$GS538@tq4Z9+HZD>&fE+CS-kE`~7=^@Q{fjNZ6A{{XN`MS$%pp?ebyX-p!Gb7?|-%GcAw<2sq5_ zuFsjI2*Fq}0PP2d5&PFXm9SazfVM&RlU$AJUhB?C!}fsol;#Wl>vOBqLC8THD0;KH zTv&Eea)ElzWW8JB3qMpedd`C50wERTie0N@<^Xsx;29{BQc}!)Q-uPU0Z9ZYzALH_ z@Fj%=o2bi(ZS$_Lx7^$~rwcXs8^*9EB@iT1`RJbKAoHmMVb=(0X_j4Kd6mCDI{}C? z5|qN<9V2=K^pj;FIs^xSKfORYUiXf)NNz6%(Ft{}N{ zKHD?HNaFXHgFw5L+DHQ$)# ziSrHNpB{}sAcsn#Maw&z-%lbmFEKPg3b+By#-iR!Q)1U5)7xv6-dm1}JaB3ks#Nwr zDd~E-QUA)Sb0v_Dr>@4}@ypxr!x81zj z$@7U|(rGUWk`gm{*OIqVq1ogOLb`|I($o~4eSLJ))N`OfPmOM;c!3<23Lx@NEW!X- zIANz1Qk)_8-`9Qr6&YgapF7`Bc~`N2ouXa}uhPJPw4Fem1h;d`wGutz5{Y=FmPa0s z#|%_Tbc3wwn~L?pQqc>HAul!i8B-DIV&ia?8bwA$g>s{qw1QT4PdjGg`PWqUtq=sf zEZSvzo$lt6eQyi*P(|qs&`+K|*^ubY%cFITOsdZN;4_YXsJ|bBLdb>tsZ-b<9IjKg zYx0VJH;!K>(fm>%h4=s5B-!8xc!@-IIw~rlnGncM%w-$i0GuE=dJjR}u|N3@fGT?v zhXo@l!+#XCPiC!E2@}V8{FuXR$_@zfHurzPrUBTD2nqOQI^SGL5P5+bmfAy~C*YWL z>I_fE!-JDZh#-Hp5Qs_fo!9TR@8_0>JOD%Bdh$aAu!?n=xGE64d$`;6Ujmdy1vNsE z(*ST@K+gLUkuYHeC9{DMH4#5$QcR3K^d-(8KI)gJ`u%TUCE&oK$nO5b&zI>!i!tX} zj5T<8OpDEE42t9p3weVbd2W}X)mLe?+@2V6-x3F$F*a@Joo`Vw`U*U?t)iSJAX5jp zD9{3>CgZAcc1Tioqm-zc`eJZKvi%Ng82W0jH<_D*ubz+^R8DFEodTOi!F0L;IWquv zyu=P(4X3S0YqLEzP&aQ~Kep(NbnFCXWDUlz*yC@1k0yiIq^49(>JO(|4mnt^UjE2! z4j|D$E7BIL2Wl0@AOSEaAbstkHPE2;#LU$VN*;NvOAwvQ(WIRI3_?Er*7f0CX12Mf<*O+VW($1|T2+A#I2?nl4sF zx@A-_la&H$J5B#lc>rZ&<-BK*gFFAt@d&b#*{7%f?WwyF3J6NSvVm^*jG~>+s?N+R|deum2V? z{nMwCvEX55O>^YL{~l=m?P34tB3dsb|4b*e`9 z&0-YikAv~wuOD7KZ8ea0a^h_We;#g)z;4 zJ;y)a9(X^f2uUa~2`$WJn#qhp)EJ5{1^d%pg#D%kxMKe6#W0JyVn={Ew9DNk zzB|8%T>YRcv<~_$sQ>fg{_Q>MD`?5_QaF!fCY@LQy2i1eAhw9H|$ z&YYkjp8ujdM}C%v@}7|e8iI0iSCR>~p&hg*;`TpRy4F+ggxqMK75*pL* zKCG}nXSmi9Vh;loi^Zv!J715h=Nim+m2{w!bm zAno=4SXu!@(!rHhqN>k(?+UwOR%4tv{f3vZEL5kDs&q+*ujt_dVCQvDc6!~|h!r$J zH+~+Z`KW~5x(rDma|5|1l3AyoD}V;Z#|HqC7qG3w=xA2w3O8RiTxZytEBzYet+(!X1k!&9uyH?yWP*Ylb632Bz*+H zJc_oqm}+MO3M&7;zki)ohGvk2&l5t#X&ttE!(EjumK#>0`Ua~X@wkWaFquRAih_9^ zyGVwQ!3@~lsR7VI1y$@JSs(%8vLMhtQ_YdyJ)xYhTy6{!lqZpE*B6L^^h!#T^EZ1A zfz;2RGrvY%1Y>Lx{T|dHMoNI;d|C?O+>QrNy3thNR#yqRT`IBxzdAnd0N}sI^OS55 zo_?)~K5}w$0`<1)qkit?r6tZcy-RHtV2MUoYIG6vv(LNx0f!QRG1TSdMerd+fP|wI zMl=g3u_o4=Z~oVbllBeG@Uu3mqw9Mk^5NBQIu)k~ttHNtDLbm;N)7sIMqBovo6!!U zQc$e|9}IMKv*jjdF?5Oimm3VAQUQc7J1C#O2_43?Ye6ox>LXnPC}!}?S=ttHTm1#@ z@jpa7QXV9(o*)c2eg?qc#P+}u6S(DPyze%*atkSMz&z;eY8Eex z>JR_Z{TO0FOTOPZY}2yewrYb@jtO%@wH4UR>KO*?$Q!|Ib;Z1)&+Ts}!Ao;P5B;@Uakn<#q2EA9ze!O_fCq z3u`-VfDDh9*&&J#M>yjkA#t`R4v|Xc>MAj1m+WjT*7-3BIAWsYa}&n^@4PdZp21t@ z1%gwh%nsqtREyC*0pUt9eOX9YjW0nWYDq9vtn(_3^}~N^8UN_n!50n5APE5z%NQ1l zANs2C6W{DxJr&&y%5K-;W~OZ4rSwBYF#xk7*o|szHzO0K!eA!>_?b>YpBr$Y#ZF*R z31alNhcj~z+luvI5f&nrBmEBgHwV*U_yio`VY@bX*Z?0GWxPP`YAZKb(GW$0cwNa) z2h}D4tMyXnMs3*D|^wWwld=ASF!pePsI{bxWb>sc*%z4HyneyT}9`~(OZ`w}^peUB#%F2EU> z%A}+3?400$_?r5EdSymPLd^uGa9xuIoL9%Uv#M~mIO(ulRhNyQMWiXKqwQm^iqpuj zPeC0s*&)VtTg78FaTr%ijZ>-^IX5X=us=nqb&mZXnW2d|>Gw+{z>Z07SF1 zIUr_eRhp~Gdd_Ux{&z{{?*T$KB;lCZTriplrf-AS9g4kXc)3!6of+`PE2ho2N58S; zmH|pZZ+k5?fGf9M1;~$GZ(4>xq?%t{RC)Uk>mA?HDPY&{ZAj- zf@xR-;=jy}#+Un6d-FPEL8SGIMh_X7$jLL((gw4djKHzEB|nAs&h(1~s0(bhjl|Gh z9RNtnDect_0K7F3jnNGPyfHiSPdfrGt0f5itFbj8y?-FI#OTOt=KNdr@~;-~H_O0} z6o^u3M-HXp{w>OidTGf)$iCmz-*1UfnfdPnDu#aUY_`YUu+zWuIyPf>ln{}a}I%|}Ym6cUi z=Hlv$XZgze&WA!HH>hhEutZ0`A_4&>E>Pn%_Kvd!m|N>d*jqlRd>gT2B{Moi38+kYP-3gkWo*(Ww8=7@1(q5nUu$#1JvMsy#bHdP1kGh7{) zMM@cK95sanpmN_ZIvCB#ON)zF15mk=Y5pfm8J7ElI;{eN%V?4)viYy4cG?RJV9C-p zzPLkN87Dk|Kn*19IYHHyPnwXcY+L?D9FN^pQB_q{I5@`YegO=}AmQy7!ml{;Vc#UO zz5R#6>#xHg%?KlWVubZ-)ujC8Xm!onQMn@FuUOlcOh#6AvLe4VMJCSnzw5TY|Mz&z zK`cdLos;v%Yhe4=L-}vB@q{mfKx4QlzhuZk{;kYs# z|NYV7K`2hkLfqfc{5rL+F|+gXbeTBr*0KIQ<)iZki89VmsIl*F<{_X74MY$@L-hak z+E^{1i~DLXbH4w6xHyu?C@bR-6B82>u9BL4iKJC==6ai@_a1_u)L5rd%kCKeT;`tw zN)i%K8HEUEVE(#AI{!vsS7506>imc{*E{5Y3(73P<5>QZUi9mVgP(fNfl-4wH!jMi zaJgFle25HwKoHw8YD+H6y0=GxZSuxjUfN9sdAn~XY-)7>T*LwfQVc0GkPhBeW|R2s z@*5evx)Y>LPpBxllo@!>{l19(%fs+m69%OUn=QH@^1mLrD&)B_pRDW<6Vne52+%`q z)>F0rn{WBQPt!>6FIH^o`L8HE%?Q29_FK+p?*{+uA0d;w_@8ko7@ z#qP4-AM~Fy%)h-CP5_1^h8g4bFH7>L{3(zGDu@@|muBQ2uI_J<2Dn%Z7cxo3(|_Id z|G9n=Z(#nyXay4gcH;cs1q*xu3mn9%HTgfIQZz4kU~HIzRm^n%D?THEj-VtdruzRE z_Wz3uD}ajt#@DZ|ry^wt#v303Cs<>9eSUb44?mA_HcB&eOdkz50($%?Pdc9g3bjo- zn70555!*>>c*tIt4#F)__cb&h6>v1RJXTxB07KW0etrbgaK|RSnST{VAXI29Ko@L* z+E(G$rvD7tI%=p5RFG)@WxZPxnzz>%cKx{_UhsJ;XKfZ9S684Ji%iT{2Z8{v$nwZ@ zK-%*IN(>gG*%4sySpJtTJHs_Fgu>$}ao+uM^Z6|ZnZN)_|a4W(;LZ7@4p@=0wyFyK*kEdKb}%h0O1oK5d3;2^xk;^$X0X6O0vTo z`ZGzwrDE{{@PI&)z_mqqUB)2EUOueC}Fiw;;>w**Q)=_)n2w{YiL~k+r z2^bXQvzFHZT(%o%n{T)D=NXXIUo1U07Otdvy)JoIQ=SdG!Ug*2fP4tFGG<;@z)OF` z*VbcyDuog9ZjNpux=<_(3U<>#H{QA8cECwGOeXE~i&b3h9LcSIQz4l`;yGz26;A8pN!BLt* zEPXcKi#M;EH>ClwE8sh^o(yD5f@I<-tzYz$>|ecQ+A8|SyhkIrH_6(9dgr=$fip95 zxh-OkYlI_Opm1HdKY7^-GKgTM%?h*S?{&}`sooOm>b#(9w(rnzwR@Qu=_g8B1Y*H% zx1U`duR`%f9`Hv7DlB(KWB|_72>5dsWJqntKG(>)r8=PS34OpH7IAN;#*V;8Wfq?g z6yX4U9PFN|%`Ad#eZguHnY)jMVjE{v(3qxsI!{4Y@MM49qd$oNza*u< z!h{YlXHI!Z zI0ac;N*{pY<%0BDCf#fDdnZx;R3=uB*F?qtw;TIYY*&T^%`wB6=zkBY`A+7l(pu01 zgsNZm;B1tD*J&d@Y%ykQ3qnEpckaRw5m?-z_p1>L}e6d%$LXwL`vnLEmgD&BaOO{GSSfwPqnHRJ|}# zRDS*&24~?7=rq<#VEuNbWP{4^!XhFat?%y813#ivT?m^rrQ3tk>^zS~dmT)ow`hRE z+`l$&q8%9-0ibLp(Y4Y6g?Wcmmvr`1STHkPT+Fb;eTW_&4n=ndTpZAg*VD_)Q?Z`4 zlbh5_GV`sq+cw^P!kYjD9Nz>W;q@A`(5AN+EKg3pI9i+KF&bvuff2?4K`im8|u5r3SaFj~sK3FjsXU*NOAjV_2+KOFu9vB^b4EG%tWI z7$^+45{&F5c(!0JDOg*Vl)iRv;S_12V_*QH-sT&Fq^^p7K@LY|OF+wp=?$CPrJa${ zCP454*wka1aj)RdFx799!Dxnzu-nLp2y{Y1m>O_!TyRl0wk zhc_^LVm)|_M>_#@f(1Lw+8#Q`DQ6jU1 z*+LwHKlGn&js(=>zOWW9RR5j_OK@OqG~~+urXxM{{f?QHs&eJ5eQxm)C}}<0NDm;| z8QnA)-vz2tWG)Cix91#F<+So10+6^l2o~p57D>*Mx={Nkyh=J&*W0g?#BecUDzp8hDg*~ zujZWYViG&8EP`${XaY^oM6!klAMD@VS|kVE*n6=+X^pilaWQ2q5jxE9*{mT&HL^D? zGrk=lI#&51@IKfKI{$VgRs9(QgMsh*Ud17$r_NJ1-4s~Lhod{^-uw`l_h5Hd8B|M= z?Dw97qo6nlohGootu0^e>cyMK80WPOwMeI+9W(j?G41o`$lQcOT_BIgd3Q(xKa4(s zIyajIU15mi|0F!w&K@9a_$1~J9rN*GomteGJ|{FaQTT`>$8W7Kd=@FRm{q1@bl6X^ z9pH7~-ko54e|xp>Q3S*|wH>*RdYQkPH{2+2=S;LV5eHM^2{Anv0o@Hi8Q>uQ-bmid zmZ#)H*+_EQO;ebV8_m?Wht}RXcG^w!lBmzwH5}H%yYxpl;HAzK>jVT4yLT$dE2O#Y zmbZx+g1r|OROz;LW=$5_VayG*#MC{3%t9)t>57~K->Rp|j8K1+{56TXn$1ycF|~Ui zZ6^IZzG->Du8Di(3i$}BO-z4H>o&FLra6Er*`m9KS1B(!T>2vLqgV(MXwd5k@PRyA z8X2va8jHWz^u!zTa%^Vhgu4}%DOZkca060*=^>KwUgVE{HW+f%cz2+qqtm+uhpdqO z2m_=BUNM3T{sj6=;vIK$7T@jM0odFO>*%!vjU~|3e7Am$#RMR$!fi~{eJl7Q1`?9Y zP|*NDOUJk@fE0C}r00+ClcfE~-(szy*A!i=3@6b~AU}k~L}(SD{6s}lpv7KaGfh@% zHmzoc$JqjFxHbKtuh5CZrP;X3W(nL2pjlJ{-}NRr{>vPgDjvtA^DH>%rAetmCJRd-g@45>`;>16 z1Kt$D)uTXU)T3O^Q9Z%*jRS04ya=aObFkx9?=_(Zz(Hv7m8GSnmHadr_oQJ^?9~&h z+ilt|NHmTlMdCT?Ed**Q`m|A=s7IyqS91>e__}YMtIGzXZnqm!7KfiA#v*4)%zgN< zm5_+qL*Gvh4JAUV>WV-fIHYd;kKbh^O3QzVMlp!7F`9{WS ze0;pk`kZh(un3p(C%n$1@x7CP^p=#%qD45pC#L-gl#WkCw*Xu)$G=WF>C;!l z4fFz=FNFY$(dzU;cC`hSU;7K&$1h2rw`C=qHqa=^{Q$2B=Axf_U%IBlf^IbX1u{Y z#^A}P^mtG0@H?Opbaz?kG5FoZ!GOiBMcr76ejTktD{W|Eyk1*44gJ1~A$S?5vvu=Nv5B5F>R921qS?zj!X3bVk z?gq8`fq^xS0>In#P81G7sm0fGUDq~TF*!Y^zkW<~39`OBb}A$;{mT@OTh!hVA8#Xu zI<6ulbwe4l(inUH&gIOu(|330VRr)P;NK1~ng?fW6h42Kh&Eya3;T5=jcS>ULgG%_KVFYECrpj3TSL3;ecqKbPr zuG+LDgOh97tp#A0fNHhJXAue_PD>KARu+Fedy0wkbH{6*B&F+9Xa`I_Q8-j0U9?0n zD8tzqf6umRO$N?<9cX-AG~7%RlRIjD5Vv0uHHXT0kJr<k%D+ zUYM%OZh3|6G;B1pPCL>}9q#3UMN3vLVwPkr3NHdGs<~yP5+dcos%U`$>Qs(%wX*7u zn_TX!F z1}I%pBFyalkT;IO335o1s$FQy%Bv|)Qw-2jZjz8k(TQrOm25kqCgUgYvP!E=FfgV7 zi7)jH7B#f|RS!e%zVCX<)hz#Y%bgI5_yBKnW80@j9#Al-#2sgfP1|7Yk?;QAawBr& zbgQh@d-4R~La~){c?A>^R4!qC#(~DeI*N1`2$h4sF7CUZfzaa4#mij4xZkecVV_TZ zAVg!Xdb2wNRoIVHlRF>-gVX1}XFe$L2-)jEy5b+b*K<_ABWv>obTs*b<3j=W)ibqRs{B>@{}q zG<#bk{FNB>VJ^_vS!^L&nn|j?h>Vqi`-mlQMo{O3doXb)wDiChodo#DzuVxuLy zXJ*LHpU89rd3~v&Ued_O$>F<0{`xmJYGb`xox?pnG$FwlJ<*G^ZK~LQ!<)SlH?#9M zbVq9w-^`-a*tCozHZ2mV)3G;C?AX1L}0FcGW$ws`xpz$JR6LU;a`m1J#D2KGGS|=gTpr_RQvE}`% zC+<~9s;U$r&qa+yDU3TeT0X<_WX(fWi;cuM^Yi)DF9Tk^iD)X5sYts&Tm;BTUvG+q%ET3E@gz zYUQV*S;J|cr>VK3f_%Av=~CsqdqBWYwrmENcfhp5#FaesfcG5idv?O^?8tbhi}eqE zOB{_tyFj#l;pJ!AnFjNk&32dleDyt4zvKZ?zH&|5#gUVxj= z$ebB(T>MIY#@DcS;LO?*sKGpEvggKnsuE5nl2!~4LIB#I&)@$F0R#~a_#fSp_m!#n z#N;&JH$2k(Fa+i_A4RUxI#N%wqL1UK7wbX?j=Lv^>f;AHcwIDbu$=TeHcJpxYxk0} z*m~KMSY{UbSm{4F#Il-VD)sVGkh98S)yg`82f2E%gNxh1WoUXz?=0g`?@l!fl-vXW z5$Y6-)VrJamvqa4xkpLVF!GT~)+|=07?}F~$z6}L+9i>?eR%XvrvHKiD1FA^=|+^U9(o3Z1CMzi7Z67_i434 zGt+z6ZZD>{0dIQVY^o0*tkoCVE*4Lz@4!jxbk19Km~H6xM@tBN{fcVSt|(kT++UWU zme%`ep?8TRBn1>TAmh|A3Oe4AvVM;T`luhGAz9CZ(o-`f`_iLv(xY^CW--rAsrRpi z*(g;ecc6G1?EkZ<#o)=NiW2i--?d|qZQEkkK3ly{hI!2-VUj+f$C z=_Pu<%JTvceE$axwob{CD7?r*Dw&`?RQ3?Mx1~gZV1L%*bkd-1Q7S4_1+~;d;t@AO z+?@p~0BGVFH5UXSC3?0JeJ2C1BVpQGg5*Ut71X|*k%XZAW=Rs>I?&U*)09mP!Ym}h z&{T0$kcVhpS_PEuO|-Qp8(4y~)ybZqCwmF<`E#NTc$X zPV4xrk@%&OJ#1`;VQE}HbaAV2ihWX_qLKUDPzO}(9gW8EESkM?b`ys!khTrc2l}Up zJ(3n)Hx|NjH4Bd|4qGeb9+B3g)I0GiOmpa%=@hWKhFgd}zM!GLnVG70@@cKgBA0yq zg|n{kpi*dG@aa>GCfsjfCs};Aj<7_itt+d9I&zp;5!7;7ajH!X)bP}!9DRU4HyHj5 z@#-{hUcIv?cTUORK$G7R@IAxATSQg!h{aZAod;bkR~Ory>cl(!U>@1zb*|KXv3PSx zz^Hi>v$O@>Flnay%jDX;iAjiZyBEY?*~}OB#zvHZ;RPa?Xa_rfRvR+q#4z;?V|T+9 z5kVH}l$x!L(mkSNY7<4sjE8;C6=|QMF%fk0sGx~&F@9BpMQ5zt#A;Kvjj&O;+}1Vy5BZPHD^O5N z7DQb5w_RR16;_V8@qrsiJABu7^9Iip*bXdmn3nVST;e%#GNRf*n}2$~Xw04*l<<-oVW z+J}ysm{>UVVB{!F57!|cuk$e=XfFTswN$1BxX^&FQflsf^G-O<5=vY;t}W&HU&<|E zhsG5=m<{8QqOs@{8V^++AVPXC z57Zr+9%|A``AztwLdlgO1qCuyybyed$%A!4QZ(7>1x-5{0QX=VNu)>uCo#6@ZMG7@ zphe7-eWeCD5xGxT_L}}NVIdEGp$hYO=G%AgZr(zt3WPDvUyXl3z1^MN`D9YA4lLo* zq5GIi`S=}pTfOhFkLH+y&ugc2W5|!LrV95_SPSY%QCqZU>iLOE zI1@dcAai2|)I|VZS5n*CpUge^Wi4^ub(qo;wm0D=ZT$e{lLEOE)C`_1Teg7rs!n!5 zToyhzxr)|NqxxgKrGfg$lljUWw~^8Ou5aIN3}NXB4K)kaifmKt7_D*EnR-Jgh#t@` zzBEumXtDsnROK<|eZ$fNHF5E8p`-%aXsFqdldGLh-PotP3<#uD_NXCh zX+5W+nl>6FDd~ZFAszpQ=8LaU31jX@1E0bH}{ATRZ|eLLNuMwhy232rHeA zaAM?iDjymQ2{wCewFtE8v1(!wr5@neWhFixdkjOIJogv#s{z%|}{b{Dc zjDSnY$_gQ;$SI0fOt5^*o5UVE>2m6KJ4yF#=>t8>M~KpiW}%>^7-TgKp%;0`)UGlQ z3uA`Q02Q;gT$mLtJrpAo2N2^mW1c1U#?!Ox88i#{O{xZc=|-BM)H$y=Bc>^;Y%bB@ zM2@wYQ$d}4_m)oed_e13)XfsxTpDo= zWPWacdYc>UWfccCB4390{_3odXs@b=hYw9nv^U*Jbaa>6qb)5J{hI>+WAWa`y&Baa zYZ+%;uU$je%&ML{=RBt>f6n)tTv%QYNzi5==w-wI-V!sUg}#0r{DY4-R77JHG-=9g zq4QSSL+<5p;yE+&-8GaA`p|BPQzERwzb7a2oZr2$N$Zc}@+CJ;x`donYBgu;b1XEF zJ#~3L(I?_c(A@ecD85HX|A05xA=*N>O1oFvGNY3-*bE||G>VN60VL6`Auwy9@VWF5N!LdhgcjD z7J8~oAYJH|4-k@*kEyX<&FqPL>L7|QEXE*_`(n9z*mzp9UPXq{FTmBi5c_4x$T>2{ zOyeSODG_kb?prMd-(!=4)U*tBMzDiCh~DETHZ7bjbFI4IetF!Bt%orYa-N5#UaC(= z&j$f=erD3J2#)*SB%*amIUcC~nK@w2Cg`gTV0!Vj*&ymgV;>})aQNVs#P37CgX&w5 zkpCgBO3?!S@{2OSuP50wnVuDtfaS;j;sw~GTB=JY(DXwKqGZlv?>xB;0fnF*Ha@e! zby=w0kwc{tE`FYhbIBQ0{tlw8Lm#f~Vm3G@=8}T*w0py)Q*ZwRl6KO2OCaM#stSl&5p&GKoU`gec*NER9VFv&GNj}S0h ziGgdCiPC%C7rNS8mPS^6jHUW>iT3hl zVtoZt`wa~tX8OIZ#YI5alpRxE*mmv`= zmf#mXW7Kyi8Us6Xgc3ze)bSnb4=Z6vIO?tVgwCySRvwL4)T&JuK5;h_sK>Y{_kdwT z^T-0A5ZK5$yYb|iPZ~XPi7@_@k#J{iNJjghTSeBlUC3bnTz5u}Q|D&ueFI87uMBjU zzR48{i{$AQu|hO!c?zYKWe3 z*72|QCRyUUTEC{=GOWdd9x3n%4gd*l8Kbo6FsH-}bPQHjh=l%|YNk>zv@lgr`O#$Pw&4R$g{53OY z%5OgJuey~SHVf8}a2Y+Rzku=#yx4{ZWh{+kenPLaWbZk7*Y#Dyokwrn*Q`@m!e-Rc z&z3y{4p#=M-wZZ9WS@ZnLvyj}&UzO=!w$uSf?5%9si+`4bLVSIWt7G)MpkAvO+0tk z#0O_DPZp=nhr({B6m?iIvWjGz2czOD^y#@-ju@w?l&&vZCb=d&LD!bn4w3PjGtdX2 zQ$C&oRsG%_s&OaxTLk+f{qj_xKm;gVvqobiTmZ1ae=~B|LohhQR#nC1p`5Fd$T3Ok zztK#j`HZY1ELAgap&m#&M8Dx?5?Lnpc_db)Uzx&b;N~6BloB_QLa$ja&IjoHqE5-o zdZ0Sul^aMswFksbw!i>H35us=q0*7tdGjqGOw&O0BA?~3=5=9Il^59*+!tg|3#*b- zJuxV9UhulQpBcBXb%uI(5H=$yEfEiJy(^tGrGHV zSYTgFCL&qr#R-UaB-VXFz!_W67cQq*#LQDW@aYSl#SWZmOy74f?8Hm08t;A#MqV~ z&I*FmCX!5u5l@5%(7Z-{!ueny4Fz4KO2sI))Y+?V@|X@kpI!SS&c5IUG)UR}iwkp-ICa_o}f!80cU zWlBk2mprQ`J5>y&Q+)PX@~W!W9(Vf;GDVlCyD(2#a!Lp3d-S<-w;s9tpX2}Ad2a~O zF85T)D1P4r&?WhP4=~{X2&%7#yZb84YpSbc0woYu$dWi()C$_6TKYNT4&tB)cYe+|M81SiRP3Om97Nc;`@miot+`< z%nv+-muy?|R-dgA1Cc`AtXtVn1)v22;7Dav zFUO{J%7vy7;yt_c)_AMg7zVqe(TJ5bMjSH&V(BUgpM=WND? zIj=xU+}-T;PX>9?<7wtQHG4t%M@g+lwDblJSx}XK5Cp0d7 z=`I4Nv00(>51C&xF8z?(Oy`Uda@|OWQ+LusAJDk1%Ak^bbZGBA|C+hAxEoLEv!ehQ z;@~`dpiam@Gh^Mu)3C`a>ddM#4X2bw#aaGR^}6375xd4Rl0UGe`}u9Smr3^CzDl{_9B&S^*xsx$KRTR( z3Uh}L8PGR8uHJ_kif{AZK8o%TJ3#O18EEtMwFiyxP?2Euj+TMzcP&OiT9Da(g<*?E zm%bLZ){A_9G7*xOkk4QgBQEI(^DhAUg5N!xLOqgN(hLFMj;JVF$Jt}=QBq~r&~;LK z6q=}#zeA1y*zs$!Jr+B}(&7JM?=7Rc%(}Q?qy!WxMLGpZrMpX{B_#xr?p8{a4gost%-?EOj)Gn2Tt>fzOuJx*u7^ovYy^e)_x z=tMc~s5^>unI%7(aq}2B44LN>WtfvEHFi2qWv{#|Z9e(#rtNohXnDytY(d7vE%)MN z%|w{y#nt(~gAIj33&OF;DWvqP42(I>2@?fEvy-Y}kyBL^0XR1^R;Il%Rn%5KJQV?j z&It+8e7tG(l2M9h`%y1n&d~>Kt;A7C%QZQ2U#aM?FOeJg=8mqMHlCP@9(+2FAvEE_ z+QD_Ny5Ol{<7e~Ea<>nkXhLq4q*Ll@os+9mv^6nuCKlOxL@P#0sUu5B}|ob z0ZM=H1H|xVo;>cBID@k960>Y}+XM zwKw{nu1(ShHH^{k`n;84?$?@kEtLGE{Q4)FK6x2C^N`j?J_9p5@aITrA2%SdkG=b4 z(1ZUV?kNP2ZJQgG+l`)$G=*aX7$#7SWPK+uz7{^F)l}85aw?`>=UuV7r;bdWzrxxn(F>anz}54~TnKmZ`%AJ4MRNF6jNmKB z&t%jpguV6xw_hv|w~(eEsyIzsv+>eZ^Qb$4NI0f5WEWL2-~Wka_jv~JdfV_w(m#qp z&vZ!&zVQLSO!=Jt?2!MUX*uu^EvfG)E4K?R9u>_>n3-i|@f;dV1B13~T=Bi^vzIrH zpQ4O`_95k4vYQpvZ_H-Mwv}np{v=vtVtKv-RgS^ybz46$&4UpLRTRSmUd4wr*jFbvF8?pY)$s|0jRo*N0UHWVK&f093NTe=s~~fA^n9{2vyWZYzd0uGyX$#LGGVx z=HD(g;J2pK|LJNy+s^n8nzh9@{-`~FyS%@Di9-YYhyQ;M`TsrG|7#DHf~)wm(Y>FQ zmlmVvg{#@2i&0lDtH$$dXsWvgDtd1UPt)Mcw&@7Vjw z_+|3#dT%N6ZK04M(w`&1Uz_aDA4DaeY!)aer?AOpKR;d#{ZnXc;^X5xf>=L5AAp#7 zx7OXo+WH0!5Fd&_zbTwiEBXhU0u)as;*0O`-{5*ft|(pDrqCK1{hTP`)p&tbTl2qa z#PqJAaiAAnzj@OJBsD?vNZ|2zxd#u#K06GC+ac~!4%yp`raf&js zSGH35Fe@q)oa1OLsCr$|4NWu{%Z?8-%5{;=T?VLa>0To%#-?i&a0Mvxzty8-%p(#g zy@!{Zn0@VEb`7Xgg)r>`qpv`-#LssSR6Us9>0}-l8X28gi|6L6CzV%j4M+B;TZ~wP z_+zzW7Dk#sGWQgZ31}F?1iZ$rBd--j&Y!CH4SMo6L6N_f%vZDidqc4d{)&nNs;-vT zm1@d2`?kIoiCq5Y?G1>_vSU^TH2ocP5i92`2meJjgbO!J_ zx8*2!QJ+Z_ej<0C@dOh9ME9U)&-T_oz691WuuBqh^52>7tPC~7xWAtVAy20gcgJ*N zrUAZF?uR~OFu!`0h7P82)SqV>#5Fbj=jP@Ls=n}z+k;pKI3n!7YL0Z?2N~g8p%k2b zVc>pVZdDfOrT^Ln2Ti^{Yx~t;znhqfN>CeK8;{b&o84vf!3PYt)e4A4gp?5fbEy9o zpgH&vL+E#5oeylh1I>} zi7oWx#QovJ@<0h0eY`V^2cRy^4tS3meA2ub+MLN0AQ&LhGU=~!rdRs_tFa%Nc4~L; z-e0FUf`d4=X=*5GWoT;m%jC05J~)iK6hwD=Ko^9#=(_MJa$2D>i8<)4#I?Nu z+2ucxqYYjud2;G8m|XSc9V1sc>tW;It!b*>ZFHU}vJ%(0JFaiw_19XAaW>~&hoInK zMy*B~8%?p8__<#%JL8{EQlD!|>-+t8$*D^nm-~m_4ek&7kh(`R1BU`Uk>aAGLnFmp zU#w45f-PBI{x+Q;%t1lf#CPse2H^kiDk%4upjLeyc2iJ{o< zG3x?6 zI&btAYDbCw^BrS*wovw(K2Q`B6SK6`k(A`so$o&i^|jW52|_8}{g(jHPlcJ78*2^+RWAlQva;(%jAg;RjTffo@Fol2I zphs?k2VnGQmP>NDZcKP667{z!D*6qSWxm?ss#MIPM@D^j!5FM03Ric{yz9)Uvlz|r z`k%K-fXH1mj@VK0_03nJYx;R5G_uhXP9yiEsmpIOZTTTKk6Q@3UYkqs76+LiNz1i` zaZs3yjf4$j8C{5cccW`m|1c^4UJm#9PZ2ROW{A7Q^k}!@tE*Q~ruUWJ61`03QV48| zxA%CoGKhXJBR6*qz;*hpe2ZDx+1X1=Efc~YGzonrlRx0v=1+arzMU~O=cdj|1qrrs zUU%W;J_H%8or?y(P5tJCe^wR0Z3!qc-~bqXun43I&ThejXZSVI(OjjlvP}hmDg$2b zF+z{|9`qFIH{IRNEiFYBHC-9Z%A|*WBy5eeuE&Szs8=;s>eJvWtB)-&qoVTfRYeD~ ztauleT2EfRp#qCpa*fxO!v?~*&!e@`23N;7x8>!X(i}-I5wiKDTTN7CLDyq>dAWkT zZ}d!+qNg?Lu0NbYYJRklFW_E#%m5U$%Qz98BA|uldIMJo4n)6YVw6wJNF^iz%B=IRs6)|Yk;Wq3v?+(a60z7@*8ywTl+=IdZ@k9~iGLrg6d?PQ=9 z#^Z?Kbaf-mU)qryfC91Xe-<>Cm|DbovDb3ih2xUx+}n3Eu>WzR}=q%)sw{C$l04= zj~uKSPa0Yh0sYL63It!{cl6?I)QAse<~kTM!ICI9*!&J%FB95ENf6f5$7+!QCWhR9 z(uoscr`i~bzr&vGD3Q}nWe+j(&|IiI89I{kNkWrk48NXEIK_;{S5~di1F3z{9XlBz z%XyVk$$6^2XtXhq(mt-PeqHTpHz3a~nTZw?g6$~}>P4f4WQ)t!libYqW1#3~pp|&~RIjEr+Izlfx=e+SZ-?ws z94I4!5dZy0g4$|$^&#GqU+)G)MQITm^Qvp0IMV&|v(EDbc$jd_M9Js5MW584(Sm{m z*|wK8kYP2T3J;p+WYwdWk(b|^4e&}6CH(xZe@~!HyUtWiK2K?U z{IU0mJfEtWqFu&U_0j2JmcFuiVyAT>3k!wyN~OyF_iadUptIB_z{|^P8Q7Wu#F22u zB45q?+}w#`BiRcUk+DF0ow*j4kkFy8uD-*abPh@Ra8Hp_|M7oyO>V)m5%5xG`}t7O zkU;((a&RJy)a_9YQAGKH%2pfSaCguQ_aAN2EZ?;Y6l@cQBS{dvZWyD0_E>mn0%9Xj z7j(4GQwaE%+f0X2g9OOf=;$bL?=C^U+8lrbr_YWyBNb=~0J{a0vm$^FvA5J$1E=BT zt`!HMmK!{efAi)G)S|YZ^D;9>D;=(9D8%ysQFWlqVnpb%D*%w&ZE)5M&TtG+z=0$j z?CeDKh+?Rg6}%~%KuRxA6LfN8Qo;JUEuCEXTaiDP?e@|go+O@dP}9r?^tYvibfD!c zL%e-dAj9pgjX`FB{uZd@PkTYIcYlBslox4^VQ8~jHHItu4In(WpiT`@KPxv^`u6e= zNQ(g;7SiZkoyy|e++Z=*PulU*1RTsOVc~X#nVDcESquj*q}^vC-0~Z7y5Us4h-k^1 zxhIzQ)PYKE*}XC}bPKM&^5i>xxAT7~vr(XV7JQELy4Fws^KD>z7Gm2n2v+P2PNxr4 zW}FODnV&;>KPn7v0VT;GutqG|AVD>nd`uy55mx!Iw#`od9)&&F#G<@w)^jIAM%^}>R+;R*oY8^t!y7--0s5#3<>35ah0*w+Yrq!7D z@jDjwZ`d8Vf?I9WTrUvB+77?gDKc8l!|4vHm3{2#@NV@RN06_@wOpyNooxgy=1b&4 zmY*~~bZLGB*$JvWo|3|{o|PdB5Y02AzGJbqwMEhU)`lTOOtdJ&5<#LP`tjWoxrqgy zeQHz6q2!(z+}2>iRb00v38DZYlXYx|nfem|>~+R*V|Af=PrjpZx$K5e<-Ga8kjx?^ zmKwtvRus_IB*cq1F#<%MQEv1!Ty=pN3~tqB#rEu=vEd)|vo34J>>l3)AJlLb%O zzG5eNz-NT7g}u>&HFtO;g>_enK6e%}t20`xzw?JT>FJ>6mQlFjXl;GT;W&UK2}U-# znkAN>C_F(S7Q)Lgo#34hA3mT-!d$dsAH1S4aJ;U}f2lqEQc%3EyyjH6;zcR*7 zBYfHntDBvTt!-7#vI%q?APM8cz+}y|nRu|BK0Ym^HWZ@3?|9 zRxmsMl%x(b$ZRxp_osb5Yr=!@@&&V7=vwIKP%*6)tw%q9)O{)5^YkR^_|Ma*&3yBeG z70;6nUK)Jq_T?a!Wdi^|`FeF^FNxxvt!odA<090?gZl?Sj~(R#ej!nups)A`D7pOA z4GrWF4xK+>OGScsYSo%%v?#K z*y`3E-IQ7;6h2u2!|4*lxDU{qlElxT4lk2JcqO$gO7daAVQ7VQg9eBF>geKLIxu7H83d1_#ErY3utj&;F;yOMt5ET z#j9*Qz_9&Q)Tgsn(VDIIgZZj8;%;%Ns~~jtszivx1O#8W{K`fEiB?a^7oxIE=@-=t zf-cr89}+pn#>Tj0kCD(cn6UjxR~{bkjA-+=-pvn;7bUor1c_CQbnO`~f*TPWD-yWY z`7&a?d;$6kyvt$Q@^d=2av8lOFZ;!bio^O=w7E2rMM6%ME}2}Hf7g<=jqSbK0*0k% zkXzvUr-aI0n+@H$k-|0O9Ve{jEIiUV!b7+4bhaKzzyppDXvl^4O00{ecN+b9MmoH zG75&2f4(JCG(=wBv7>|N$QS(0`YuB z|10r%Dv1k?pn=cf!IEz%4ZY~K`e(i;rQ3cb;j$(x zeXsfXFkO29d@^?&LK#B1Ur`osRKi?dNBIJB?sLq@<)ghv*qrxTh+@6<~?{ z{!W>CUS5v*le*#YO`E)X$?l@L`Gv9IQ9ScOIH-$2@{cFPB?8{f+6RY_1W0jZ`&JW zEHf02_~^V&+F8AD>?9z(M3~DT5!4bOcwHf$g^O9c#g!rf>+g%nLKt-Fp}LL7`swy1YUJ=&1$Lp-%WXg1Yb_L`e79hyp5uLg0*wFcb!<6?4hQ7z@X6KGqz*w&aNPla=a@)AJ3no zDFjIT9SMK-=0z58q#c}hBRlT!JLcLPrZ{NVdiesxd@!Fh7+);^8Ki|@0i-CVwL$V6 zb80{qlUdVW!oP0EAIs< zA%QDscgld)f{P0ZOO)w^V~@}hjWvAMoq<{#s?j^`SMJI9n37-jFnR723!ak`p! zvuxz#+sA34IigO;SwY0P7IXrt9y06IBC6Sp6&vYrmB(fmS zhs4bYsvE#xJui8yD4ehdEbu!`T^@kbjJd}>-T7^eR;9b6!)@00DzJab-1e-iCtP>e zd@CepL`z0i6<3Gn9J?BfS_!n#{cBpDw|;4SDlPbn;+#5mK0cXzM0h;4qz&Y4@fWw(y$ zjz{t5uTG1SrnD(;Dje8LXPF(%I+5KyO!D5NJQ27CY@|+Xay?3#Hx#ejSZ}J1-x!D zQK4krz?MOZNR^A~pSr+*(Veg=;-kbX3M?Bw=32B#L< zRdt7xCF#N1qmYEzCb-Oa+E7pNOnO)BWX>`q@P2y@RPV!Sh;p-d!?ImkOVVM^O7sIrXx-qzGka*f7BhAWrzVevwH^t~H0p)uIIfNs!AT z+2@{alW)+o^e}Pqb#>VY~)VC%*);;RA<}xI_mhea4=yJo$)uL9i1i`~Ou&e8eKbVcASAj%_X4h5d+(yO$=o;*Y z*i6*e&U#5c6RJD;zRK!$aR&J&tUldV5L1fSieYH{8W(7oTlcj$(JSP;k@Jb~eCIa!8hMMdM@(wVCvm@#VG zU_f-TtWp<1B0sqroE#JbpM3`zs#;Kex>1KbFg()Zx+6A< zg57iO6)i*=uGzT&IisyTo+>YNGJ?v=jJ~P+MvoxeCa^tj3{i8_wqX!Hm>&qfcoP6; z1jYh}#>KcVtw2XdYpY_k3-`jwEroA8t0N$swuXBcE=q$platF=+1YyD);b9n<2_DYdc`{Py~&e`ntD`X zIL%Us7MUtaC;F&*XIR_sBB9qy+;D~%HqzM7Cr_x>_qi$5o}=%7?&y4JJ>Q|b^E2H2 z>YH-Etn~KvP0&|&ZZb;zgm2G@`xq z_Do)%*hd_TR~mdxYiy>cHf(QJM&2DyY`$0x!~2BeU=m(0`7hQcX-W3*WJjy+H;CPE6E@a; zH0ErryI0G)F8F$TW*CeLbf$!L<8nX|=g$lTJ|xrPp=~Q}#&$|O{1mD6+@g6ZVDQ*g zt|1M97fU1coK=oOIoV>Hd<^m$WT@1i&W$4|V{A5qS&YF{dn@UA`Xv}aNLuK>kH+d7 zS{cqW5RacF!M-}uUZU6&3wrJef^j`s?2Sm|7sIr-zTI>_n0W#%MGX_i`4~uUKk@o} zd4R})qw-~>_}|AG5cCzx4$ zh&(7f3fcCede9kQXF_5ZpLZ0gU1t9NvTc{B%)v^Inlydnxz$b|A0%WmpXeL+g8T=- zEBwI3#L)H2SV@Lmnmt)Sv)DcXtJomLoZkCwLV7M~Q}E(Fh9hpZl-uYi6?7kZaD|)h z>TVb15pkeNB2nClz)2JM=sN5iT8(ydF_q;7ncznW`a~-=2Nd){=<|a_>H+9i%|iOq zB-kyjOK-o*iZd0D#IF0;N6=9{);=6}P4nI=%sD9|B3_b`sTnQBhgZFurFugPt|e+; zE$}Lr4i-;a*dMHo+5rS-8S*{0cUd>xR?r*E-zX97?lokz8ZKU&6tf_if7mYuHsJOL-RdH#b63_4}Ipv1NvDU?Bf z*OvEoN`~&uv&~+N&Kq3lJP$uwy+xr5N`3-XC_#7SaB#vuS3v7SjS689EJ_2fJ|lfj zAExH9G8hNyYF+7fT#2|YQg4%-TheK<#C1Ds^cv%LZw}nfP_TBJC+rVNW+5cM>aG&p zFU~?2-PjsR6L%+UkhDRZVbbZkR;(n#x?H@ro+x$ z0imy!oz~UH?=YtgbKfXrO}I=iC<<1g$${u2QZ)!HuKWkI_PeI;>B)5(|5rukQ~{E zbRiqew>u7%xPb0nPrLF^r0inaJ90uY`c@$R9YcG_UZZwz>dDvYZ~6XYuA}=sQ9RDV zqNDBy+ZEqcx5%zyTm6Fnn)A=e^@`;KPXxZ531qrX(eSCZlzsOSH zlN|RF+h4LMR&Uv`Y}4JocI1Rs=;wW*A7!<#Wz`gJ;f9;5ct(T1Z-trebUy9;WLjxQd%F0Wg!5$1PhEvT&F~mYN2!&QpER?h z1`j+LG5Pto%=E zSpuKsT=9@h%$ICQOv(?Z-m-gmG*gDDR^f%rBf2Dbvu3+Lr=WKDofFAbvc|j*1#={7 zU#DtD<>V&Tayb@2Khsq`Iy+s5?`G4z4=AS*Nk{vTvA&4B4_)BQsXm zk|+>yOuL97EQ5vGmC1XRqr(L$z{u)^80ZY>qY}7(|(g}eu_qbn6^J~ukFu+t33f>bE2))p!y-=a`pJ( z9x|dR*Mj7IpnFS9Z^g=iXDla-!{$YtnJX@x`Cd#+R3{2f?z{piXFxrLih*9V>_zg$ z74$s)SyRMYNg!o(1jj>F zf%>^&4W&h7+-pj+P@$(Q)c6jnBj1^S;qf_Unk5@5*42@^6HW~EI4&zC?=~%ov{R*M zf|)9V1h?A#2QD+km@W3J=o=5h{_Yt#Xn1BM`oTo+=Rur_i~Mk%XMOpT3XN2{sOlp` zL#{Kw69BvSImxYY#uGpm0p1xU?gwn{H_`fr;YhuTs$9aPwSAy%Qv+G+m$fy^-A|*U zTZs!GCcE8tYg5rIkfL7RY%)3pKD z-LYw?&}%q0SMJW`F!p@!_&PCyaB|S|Buw6XbvSRHCYIH}FNEEtl~j*fVD1HttnQQJ z9S~l`MhQO>gpq9K;;0TMvN?O83s|3p`pk_3V~*malB!zYuc+vv4!QkK?vE7m&nc{D ztO&)@az;`<`nN%nvl=3~9k=ZR?>(c|hiX_%9HpXZA>>)<)uC4=-{kLXQ6|QjynXXc zlw>RSrd5bZa7F(v#i6+f!XBvvDL;-x?8Jnu#?_87IEpYaG0RZXpR#c{e3nBdDI}utM3G*Rq4Z#Z^A9?- zbbH~d5{uiFF5is3%3Q)8WRj@FYytU@ycg)D%-_QV7XVoZ z7Uh^QZXTpdm3;QO7EwE9c6OWHWote-_@XMg2W}iAjLo>XqMg;F1UyI;kn{Nvd6oor z2C*#Nxgy7N(n}$yjgI&#`0|2#R`trmwA6&k%%ug%L}Z&k7$#|m%_r72>Ruh zT^Nwx^8IxG{jr)o&EZ|%HLDSABiLUzg`#?;>m&OFT=@5xn%vO znNjsCX?v0G`^s7@s;D~cQfxn0!=GFD*N4n^$fd(7PCX$~w12=mY_H%f^%jXLDJcz+ zvv?b3sy&G(O8NZ-|5|J_fWtuUmWlrPo@OEtYS|{;{Ju}zGkVA(UAdzgQHWLf5JOp5&Ha1z@x;0`(rme`PC|^g#`Q&d?!ym96Y|j-1SdLD@O|eOT{M7m@ zR8O15RNp=%&F`Icy8BQ61m2`4kvK&~OQ$N{-hss78`_;V2^6P;yln2Ooy|Hf|km043MIlwN?;$75Y|DP9|=?Cje zwJ9Q-{B*<&q97a1^avA>VxsBkmQ^}6 zX8*Ro{=7#K{pKWB)9w;mi!i={_~~MYtZKFRIs8gKLB2ky-)D3!q7MmBlkLRIh{C0wklZvWwOB-6W$4kvX_82fjNzm4yA-UuKw-^6UtHBm0%;fn6Y4kV{a@Q(0yp1k(rI7#n zb$)jCre%?c=!Ya}{^F#9uDOVp?&fw>S66>qyzqSC`-~P;^^yyHuW#L}D*c}xg-X2e z5+l97K{qM-rd};rUmLVC=;+bg-91A$LElA3XZ0M?_m`&byr^_?6<_*_RI?3y4Tfx0}lZhd`^TYBRVX z=wfY?%)ZpSK@-;vs*Jrp06Ve=WQ*2&9IHI1RY2FMn8iUW-W`l5VXU|YhPhx42w36> zU@76?=rd7MQ|G0b=z}yrSj7PDb&ZJ6(G)ak61afrF$q<9inzb@A|5Vof2mmnTt6FX zhPW!2tn7fyS@D)21fdN zmWnicAmo9h?8c>KJzZUrd7|o+SlDc+I}HsDfGKag4&_fJfJc;+pk{lDU=T^RGSJ^2 z?*^POV4;5lnZgViD1VyxP0Cr-PFpFcHo|Z@bSY$kHo3bRWDgZgTD@Nwv@$ zUNPVTk>R-PMcBmY{U@Cr9VG^~G^}EUnuYhzkv`CQ^97l82H;zO(s~Rz{_N~*Io@Sz zK2Z#_&+=~o9mgfOA%86zi#=)m!B?lFsXLfL}T=A_a2GUAt3?aKvHFQPXUGirzypO?; zakJabwLZDneSfxdVq)NIr;n9fw-$FEN^Z{8h7J}_+qDwoF0ti?xD4p`k0!HF?t-9e zD&+bRykr7&YTrJ0i9e5FGs1Wg>|g_b6C`m({elJ*VN4KT^|?F24MvztOSAyi^+uq= z$G{Ker>8$}()E2mzv_$Q!Ctb{P@Xmf_p=mROk758qS$&;>lz~u@gu7Azwd&~3QXgrWKjMjCfFRV2REXNJZ3U~6x1jY! zMN3>ohZh-KXi4tQVgNAak$aEs9e>}k!UJwgP}d;G^*35_7aK2{d9skPKBy>j#3w*a zLdC>54l*Cfw|ev#;6QYO0R9At&r}@MQDW_F(Q;N}@Flq>M2y=9#GepMgR0$e3n1n} zF=@a_8QjGqe;RND^7z8@sUq6uodj~D+$C4ZX(P!#3puTH4Sz%54CJu~$(fVQxz>&F zm65MnCK?>An{5HNISBb2+dPqO`&5d5XPc7tzjWpM6{q#__m)&|Qr>OaJxu+ttp4{+ zD2Ld<=`fxa%c)C$251vRc|tUR{T#2_c0*M3>*lx`1fk%5gT2&Gmn&y312%A61_Sv9 zF^}#2&Di8~Ncpd6IXT~J>OCO5PIisz9Z2+-b~yQ!m$#r@2g9r)&h$ktt8pHr+$d)r zJ=Fd0g%)jLDeB9t(R6$*IUfjk;_$G07Pt&2qAb@cXysFjTIL4IE&md z!$i+hZ?(=SJ;;O7Ti)gPJEk;Kc|U&GL(4IIICPX~^+NMfdf(i}b9apAjD+VcCblv+ z?sXy5;$@Qji#-+sRl1DDu#Q9$-ii|mDXxc=%LMF^*Izy+pC=T+#J$Ys5~k8eZOv5X@Q`@F)kKiB0VRZNusYNwJmM?+fm?quP^5p}wX~x5>^~ zA?YIb8~+p!K-xCzm!SISy^c>vD6{&=rO`sPLQO@Lm&Qz>*+!FDLGm=1m2xB~c(Vq* zxJ#C4{`2Ptb6Xj9W$m3XgTC|HR-+(v)_{=&A!n#a$`X73P2j1LPDM0s(f6UjxgI?q^ z-=<$m^?Xx@<(d{z6*#efwlr;*kOrN$+?#5c_6jhH1rs9aw*#q?Dc2*udF$c$Q*{nc7+_LT8%`qr(gH{ja6z0+0R(J!%|4Rkt*hxVMM-eoX)D=dQq`;E)~MS?2mCN<`0hAjk`N)p6LiJh+rMQAX8`|C4e4W6)P(MvoK^ zjW+-AUM{FYAAp%=R-=U}%z{F2+nH7ZfgthjswA0{8R;Zcdw2t z8s_zVu#GXLD%9_pz zzsW^87UiA%ukwR4;OwN&UvsI)^QF_@S@GS+2yEF1P{qd^i09zt+2eVi2xHng?Gl)r zGHYWXy&NjgBOfwp4w%iiwOTVDFCBxO6DB1W_ExLROGytEqI02zceC6@lln_2;@Z$>v9CoF+(LPW|Dnp1XXU#b#`~Bi%TQ`@83B{?lZPCDHueiAh}%X;Y4+1 zeBmobkWw%Oa})u9QX23)AuC8v4{jbvR^<$iW;zS&0Fh<3t4~|eY@xC>LZ6?HuPsK( z%)f<&$(+<`=CttI1?pI5nwg7Y&panNP&{0jU%4*!fY4I6#cB3G@Ps{sC@6XogOXiS z6p;fzcg3A|Mo3M<@nII36X_(ve|)6<>B-!5{g<>7fMkt#Azau;2w$NSnZxZOu$n=- zQN;ZVu=cA+{_O-05ZR%C0^c?MR+re{il6+8o?Zj3J!v+)kIZdEyZgLK#`eYU#n>%n z{vK{-o*^U>IuW7za^;Zrl|NK{n~W;&PN-Y6gX@+*<&Y8nw_>P1>P!|Q>FD4ok{NVEjT6 zmN%fz=2vByKHku)$%5YDUn51bDsnfOW<;Hhdcv!7JMY|85EZj}KivK8FBPNDjH$e( zJoO@eKVr_hKT+gVNqnmQwrie`bwqtvnqkcuj8GTvw4F-`&1E2MsbphdrM0P zg zNEHh{|GjU+8G!I)a3cfr$;^g{0_Usp=0tN_Tuzj~wVyJtA;JwrWZdfe$bkO#(r-7a z6pp+<;3sUm&z?brrF{Fb>{`~fUcSG3TkEVNJ5R44WlfgF?beK6Pu=|eZk|%slk*(K zs9?ssUE5uH@f)xVEug+~o4FyJ)B*(s#gLi$Z&wF#A@e)3m)AbKzwpEC6Y1mUN)Mht z5gPxYI`-%Lu=T93RB`ie`sDM2}SH>yvnoid5+Rv+KQ~;U!YB^278<1ew9B9-1KxsoFb#G*4)7>3HHu zRj-#yu>aSFtyhzHD(tXtu*g7EIFd5Fsg)!1>n=UBZ{MGMw*#p+XdtKnr+$beMT!QI zN+|*T@?|=GMJJ)U*toy-9tPzQ=V=z;hK{I<78!&+iE97&W05GzLNHY9?7Y}&>jf1v zq`R@)HeWKUCmy)E^4*K)TM+17*fkqBF)?AEp;)+glRSRqmx|}#b{*W=bATMR8{|>{ z=+~**Af5?E1{Mv-fd&CITY_YOj`j#DCadFx%K$WTSR38+@!9WKZZ5I%@Hp98U<8=E zuI}8nfX~0Sd|)cmoQQ##WBnu5H>dLiCJqeRSzP8LfDs2$8F(mwy_S%OwWq{Y+ope+ zAD?iIh6WOz?td6n{ERmBLt-KidWP)NITZeQzMeV32shZeVmZZQHOnn|H6OCEu@Q4( zm|VIHQUV|$VbH!L0=*2{Zfz)SySAb647rmnZYnJmRVrw1cAF&$xU3uWw^{(Z|a!g(m$PV=$mjxjPQ&AIh zTi&JXNk+07Fa4lO^sr45j%8@qC_S1jftvpf5e76+LZ8=N{(vcHJY9R7D}PmU$h)->%4&;J_s3gu1pv4oc52LTA#17Jaz^Sx>Zx?(0&$N&%4s&%id^scBw z#UvU`lf7!f_)n!@GVWQg8M%$`r;~jM?fv2z8uHW8IjKGnjp68S9=_z3S6=MF6x4Th1JvD&1*l;GLDOTNsxM-VkJ!f%w^e_ z1^jkjiAzXHeM0cL8h&&oz7x6-;t2kUFbsBD>a7Kn+zD6d%K6$)#+H4lzS#fJ02eVj z>$%62Ix+oNva!+#U4CZVX1G?@pW`8%oNMyKynunh7S$#U)kNg&b#DX%2F;ta@#9c_ zNgsK4iW^1H%EzbTa5e+)$%$A&0GcW6`eWckKRQur#!jUK`B5R|?qwM)tAfh(0$!?Y z#T<2J`4?oRZ1;)K;GyNu&n?^jJff6p&|wdI*PFVym?$}JbWn zy&0|R#OcpJ^@G$&&bE?w1ZJQ^K)i7jnRwQ{s&byyFrwzG9DF8MLs7WSVZ||V;2mIU zP!43%#YrdYp1iklDOXy(AP+(j#q|52ih z@}cvWVop}pE+Q^VQ*QYNRQJ~o1%g#;WpLEoN5|F=Z?k+ja5;$KhL5h}y1iwz=}e*8 zZ_d(x9D(hD5H0Kxv#ftc_~ZbDR9UE9%=CTyxl?azX}Rj?#FsF4bU`O$zORA3Rnw+p z={Dfq`}*YDu0CLtZ@8gm-~cMT0BlecZ5xs}L%jGQJYpRy-w#`BADp4|f2-r}ZUOD9 z&$C-LX*ItkC}&?Pbt50u(CT#iD?j@4PleEY{QYtA*P)dvVd)TSIaW+_^JamQMbc^q zvlhoKjB%(_Fvq1F3=?7fkqUcEI2y%5A26IltlYs;A*s784rm{(#hmF+$Dp3F{7yci zYZWBoL?eR8oDOIJWB!J&IK0ZY4-5>fLY{jGxVb;QQ}*9WRuUH$hGf6m^v~FLQ#PAVk+}*f`C>Kxj#&w3|o0 zxMZUxdFxin9tp%0pj^PAbKytWaNRZq4&Zp{Z5A#_J}*PTMRau}2*D8=u~vPlD4Y;D zZ9bMW)6oHGd=_%kmb=1|$>VrSy(vg5-O6zD^4Gj$ea+-5I!72J* zOU*MU9Nu=$X0BQ1j~f~a6EQVi3ZwJ}rKNE5{nm>gppM3#E;6_k(bqZ>AIEK@ps?TE z%$$|wzwfUJ+&EVNIByulIj)b>P^I?muJgm0_NpC*I1&^VPyMkyB9_Ar5>_lH!_|vHFCHPNz%U*-_y#h$Ib3q_c)T^AvceLd^I53=mZV~Pnu}1_ z31qt?(UKfX(Uw|hVGVbhVJg}hM^gH=D)nI`@Wy+e%|Nn z`(wxgY!S+h5jKV;TQPDzMK*!&!j<>F#bT;*vypbK`$=U)m&IeqBF& za8d!z@V~0LA_2dmz4@5f*rO1>K`mp7Q%m~;<(~eS{N`h}xU(|{AE;%*zrGvFCI|qd zXTHXYyFm=#QSC5FX{k_xd;YQ%5XwBMqkR6e!3;5IZv0y1a(xQ?zrRt+6bNeRbBKI; zhS*ZkzL}p4<)$0XIq?4eU7Nr|d;Z)OSn2?Hf$mzPc_ zD2FpflA`ap89EoCfCMl({;!(rKf8+zM>OSq6Y4I?`%(Ip*iaOs#j(N{adYx037>&5 z-o2*uQP_m+!!~@PYWB$Hx%c zcI&k3ScTv{S|j=~Yor*#Z)pf08F{z3<5SViixJR>peIdv7`9?(lNW-AsIH*c6;NF& zTZ~ecUph=SY^3p`y%>mqxVv!KE>#33X&XM^%{ge#H2e4yO1+yl zD0J0(ZKnt8N%x3oDwY8svV!X@mpWmb;auM5GZ{_k<`a2eIMYn0lNKsx;XmA&zAj_R^UfwUsQYCjE+N{7NzNS<|7tb7ix#H)le{J7~py z1yPViuKT2rgK6xR?fL72khtGo$`U===$&isqQ;?Xyk8mD)#IGd1YUjFYBs(5Qn)y? zbW@cO;9pej`tdvd&-QH`y5)`gZSs9fyYS$OKQb`DniKH&({SbI=jY`u`m@pkH7@yj z$WvgBq0Z6pCc`w9$BE|6n>VLbz);Q%0E0N=_%pV%b= zLGR!|8K0Vzfd zugsSPi$avyGK!fT_X}C?1s(4A%2F^XrkP`9)X~!1apU_qp&Jl>ujMQzx`lcp_$7lc zXeX41HX4zEmA3d9Vtu2jW-$7M@yJQ55^WA_?gZXlbz7F}q&|M^c~Q6NfdySUEZ*sA zU#5M2d{tBT`hamy*Is7pvaouny7R$1#YJCDB2=K2rIyeR#={8d+k@W*_&VRuGOg6z zRZ%x_&lZy5O*e|oD%723IC1rl4)+g^poQBWmoOzbc3)|;bQWjGMnRVSwXj8vkgw$G zXceJcw)3?ccjcfoIr1eZt`iP;`sp`^lF70ExX zKw4{Hz6X=oCqC7Czlm=G0bZ~QNN~WMmsD;zl5^jNBpT%(LL!HSBG7aWJ1P883N%#T z)uh<51SJebQ3Uy}$|iH*K8-*)2qz(75d?NsQQ=lPnz{L+GmL2n8-H-U{fH-2c^hM%f?dx?g?ISp$XiD_E)ejYSC)kA?G|kzrqlUWp z{NtW*cfBk5q@vf@#mpo{{63ZGR4N@(BR&5lkLXAfk6!MP8ITz62B zYkmu6`YjW)Tw9%Gy1clmbK`?nIoOR($42Dss*p+z>pQ~7KxaofF^yG}!6z~@fY35c z3r#fU|NZ-HiQj4lbcj!H>{3)~Fb z$DXGql&=6k_+Z=RyMltA)@S^OKV6CmP8^>7Lx)=EK<}XH8>6O=yFjnm@d_8FJ zQewE+i*sQ*{t%m{Dp1zBjxxWg4NIbK;wpphan3&JNU3e!uCrT|YTkH$vQ&R0G-|7H zy1MZ75Uc*e_lRXwbmvUWDc$>0T6U+PH$C!@vu|=OY*u**zp^jmw!)bpj4XcNE(1)yaO#!9uW$!uSkFsBfBH@ZN=7NsOYR5$M@7iz2^ znT(Bq76mOS8B+W%5b;h(D7}jxBS&@I?BlJmTDo^irYe1ve+cbd}YO?RR z$tZ%ZZ5FY}7hT%+NQ9bF#1THQa4_Nd4gH>%{`?TO$M~MYW2R7z$(rq01nYHHXn`0K zE&r?6$-PEKi0u`+G0g@ftOq^LdxUs9Z|mo8oy@*3w@b-f$hK(2)Wp*Lws-P^M}-od zW#W#9)Rqr__=PuFkTHdsV+99D zX-k#x&J)%7%Ka*D?AbYxX++H4?bJI5Q$O~ueWiWlwRc>8L$R~PN_8b0kVc}^`x)$L zXP09JeC@-fBz``MU0s$4C$o!&cm7s->QCuD_`<{oC?9wZrtHQzGQYT0#mjmIr=~Th zVD`B0vpM!q%~xWn;r2kYI(D2Td5O(7>!C7()FwX#aD{hDoubGlpZ3{+s4rEZPRPkL z5+W5Y_CDE~b#}kTwjUZEvYYTVxVFBYkZ-F0GSd{fdNJOoO$8mK6_OI~=`i74La8ZB9eE!aUdWDSB93(RZ~? zz^%lh{w|$$1`v*&7zAcsz~f+#EpAh`Kwbd7g;1GL!OQpW-vdRLBvIuEOCC=$MmnI+ zR1h-*p11#ToSDTydlG;0nE^(&{II+#<9@tDQ6L41d)`34Z+IB+#%%&FxbK`Hn+ktz zx-IZ2bZ(eIqX48LDLx)(oO%HR<AY zSPZ?uqgw1zN#wQ@+`x%@vr{31^6Z6hS3|T=+AvE@?XE8@f9?=b9{3<+lwSY~o%IwQ z=xOIGVXBO+t$@#Te*LH;p#BhbK<#bm38l6h1KQ32DGU@BM?pgJ`FgBOZ*_1rri|pj z%&Hj&_`>@YwgT%m9`E(F#6|#p&gYm8&+~^D+qG>0(k>+}M|`!q49!a))dhnp!x7C+ zf3RSGW8!;iGslF(eBCftW%+lzuF=)U0y(ee@B)%&y3 zke7b0-hN$#aeu(Bv)uu6k9x;UGb;7JrfxVa1qDoq?TSO?mTTkHA9_$kLJ3;0NVzmG zH%6i5kN(|+2M)5Y*_*ABzUTS{`QDGWPN$~?msq>Btj`>_!UU=;eB$3VY1Vwg@MmnZ z@l6!GPePT;Im#x)496YT;^WJdmi^fP_MLiBl6uBkRku0zxs%FkAy$J&^Lia_b8{oq zN0=8(xZZvZ!|@xo_IT_k8~%Q=@>cVwQuF+W-AD>OFXvu8K{m`s)4&*C*uaty|A>Fn zeh49z=sbtb?C?CZ=2ZMG++@998P95@LDP((pYlDtTrSUA!=%ko;Id`^X*~6HxyB`A z7HnA6l{5j*B2JUitP7+khW2A<<_j97yNwjfw!xOa?AktB^QtM=z1L$mdMBjNZTfh( z7)lhA?lV1QkIUk5Mvpi@_4{1#QcK8YY|p>3&5~xesF+cFK!Wwr>jqKiR=q zhH%M1sn;QoENcGR-N{3bvm1}l@b?#wEkevbXS>>Jd5pYNx2NUJWdvjac;&)FP@fw6 zeJik$-!zBCQV~Uizu^77+@198Oii7jwz`J=Z2F3}y~tkP(jM!qm7q$V z9B4>9&GuFQ+?mXSsarPpTQZx{v(|+B8V|A`W3iN<$1J6FFS04!(8Xx5`%8oWbr1aX zgv_+XBeZ)a3%d@Uliu28Nv-u(*E;Wedb-)@R%HUGU^y4)aTIn7hnC(&wDgHel5EgB z?>bdsK*A|)o1<5aI+oL6>kgDkORB0zXCB<8NwAGTD)5smJP#JqNO(RK&D)g-zg0d7 z)aFyfqrk(h@h-#x4e*+s&<0V;-O!?eL=B8K^n1A$dRF@zImNRPwR6x5>}U<9Wke0-pH4hLa6&j{%r2{At=3l_ysll#U3;cvv;&A zbfPr2`MCjlv{KMHy-O}iFCiwf+*0OfHw^IpC@UueiB0CVf%>}I; z)?CpMM?e}=fy+G z`~5Jp1zKOX2v^ls=q@&HddarmmEMT&F)I3O)NjLRxaZ_-+$iDwypWH-T{Yx3xey!L za{E+I?i1^%dbAy~A4r5_M-F}oCi#e+ym|iCW(j}P0e{{gwsh^*=C}4SCd%ejzbTmX zmK3t>_39aU&8*hwDAtBmbrCDs9}`rpjnwws0TA>23Ag6f%5tmkNt47M&uV+CcaU!j zK_Q>W9tU9g00LO==PHakIx+R6*{M7vD}*sbZ2|V)CT_oyXKz#lAjATqTP@H_>9Ga| z(L*KkB5WNp9nRo@w*nx&Qt*UWE=BCcV`uIHoJ32^m5$&hM?IAt-i}2_x-h<#~mlW z#zQWqH4LC9CD2>0Tele|LL7zC@Jg$C>E&X;f-aE?Q$H4RD zOUXy-Y5S;`JZJD0V?YY%vSBuw^yJ-Ze1IUpyqq$`fW9p3biZARrJK;_%@r;ay{TA#WkhksRlqA_pG zoHn=_CFEfCioXs0U`(7Z9DrP(@G7+TOYJ@hnmXA7a7|Gg9_12TD``nnSX z+c(f9O=5=W$Kc!xcDyn_C}QvH*gUGa8ps97VBX{VED8UHQ_|iVYQCxSS$JDmt;+GO zx40IFOx+S2qfDmfCHZGLiUqLune;`GA4PES+SPoNCpobY@iQ>}jZOE9v3&&-QR?hc z_5ozUVa=~E*fLKYlB=EWH?UKQza0wea^HUKk3^&!ZF!T-+vtfu+PF7EaoZgtvc?^2 zX6Ix3KH^a*Nd3%i(sybm=!CXZ&vD(Ko^CD8uq6%Eza`L(?8z7Y0D)*(nc}qBOxE*K z{k}&bdS_my?U2>{hlTEWgmmQu?ZDRaek!Wn{(v_#27TgiikOc@GGGNStq=7Ux$IM9 zY=l^za*d-LtY<46rfF(|b+ofQqw2bh^xDIVjVP}$jLPLc9i)z`!&fmL(nTos=mh8t z&>zc2hd+I+7EE>Mcy{jS)7Xj?ztMX7sBg>9QlFENFjc0r2+m#pv+x2K9LbN| z`>SB8GKL38EC>`K==YkrU08HML?UGLF05BJ)T83^ndjPq3 zgnahG%+S#A=LCMBX#mOd&vXVu1epbW_40Xa>42V=aanCWZ+UZS5V*wtOY768_tyvE zwRivQEwrgfKB1+=&x&+tLa664Q%o8WC|>n_3MOC49vvO-L49rUm~eCXTiw(Px7Fjm zyqV*`3l&tSr{QFFR@{5jl&UaJ^LS};A;ro_5t&@84an4|f+W{lt7x4aQ|gZ0+(DdH zM0=5QoeN!I+^~q~jxH*&{uchs_zy<=4t>I3HIB4D=)pJ96$V%i?H9Ktj1>uWCo=V! z^|}E8hf@a3`+a3HLczl+v2fL!(D!)(~p5KAvYQv@G3T^%wi zLgvo8nPMr`Bk!N;5W<-I5g5(L+ehytZ_@VxHTb$rvkxQVtHnmF_w4|CNh4lpd2U@G z1kI7Do_g_gl!e04{r9gvL!7Y}JwO{G{^5SMWGWiADzqT0j!C0S(n?Ug@<>+r@`wq6 z-oCKPc<8n1%O1Z)kWk91!HpXza>#1a<}T7}lP^1loB8@J6v+{psO4VIzS9-1uR=7F z;J~-$Uxz5hmlJ_aBt?l#^wU%JCU{v(9j%D-te2JaBMS>Q2YdWb)bad~iTu#fM({3S z_|~@tgH&b~QX*LTCk^d~E~r6&jV|IQks{+Mkc0K4j-Q&(fpzHNRv_?XQ+Vkd#>%z( z!Yl5q=jGNcRD!B3|#*mN^|Bg|AzgD3#IQm>$w0L-SrtGbd4iI>(!|A zCK_2^i$&Ci`!>E)w2s@)WWCCVWA+sW-Si)6qv}Gyf(jCO-rmH---@#8D#E$NZS-B2 zO;_X=&h_HPdwsXP&tW(w^2Bq~w=bsD-iAsZf)cUwh|Sav09$gM;rDIza_NGZnVF$f0Ewvmmn&8YH+CwA`B+{tUa4$4q%I{a;ksnupXh34u6JU1Y?oYBpYQSuGMVJ1=jVSl2oZ#&iP&Z3Qo?5*C z@=5)uNmGDPtg!}kXCiX#`;AOec{}V~jd#>Jf*ez|=HCV+A}NaYC#xl-MN ze+Wq7d7}U3aye2rW)>$M6-y+AW}zz3yjTW?_yF7w$%~CY@VL7xr=~V4UgbUH>GIVY zq#C2-PufUJ)a2>qBP#!C4+9l0F#7%b>Cz9Uhi7EFlvckt^;R#8+;5xI%h!humkibA zskt!ic%yGu(rrE^#g-Q1S{&i=hiulks@AA`(N-r2@P4TtSz|8wR5=&9q903X6pZy{ zXiJML1rWA3M?IJ_iJVFuM1zvocL18CJ#9FIQJ>JFpZW7BjeBWc2F|Hw%djXG2_X>f!6lTM4b1K@s9_Dv`_8*yC?B3+J>aY}T!q`*0$zhCge% zriL(^GTDyy_`S-aldG|jxs#^+0lz9LPMamO8-CY4lz*}wfwY31rigg_P&T=;A|s0` zZWu(8J8ZFEOx`zn(lLC~rlgvj#Vz|{u%qKuG`j1R#BDJ}(TVnxnI=*;%~%*FhOJbLiw zzK_6zpy4;JH|a|>nHgiI%D#M&qNwvEjT%6byUxOS<0zphK4J}xhLdn+)eR*yJ#uYP zB|Np{jL;k8jj&$o?gGI}J6*6nK#qQnc;7Dv7Nz6wV)oKAg+mRzemko zcUaM5gmFSL`9qHi=K0R^^Js8me6s@yYfU04wbQ~0zu!_yUgmC`U70X>z>UALwKgJG z+)nb3=7u-CriY}yHVI^`+;F4of?ceFsNz*3;0{QBTjrK4dm78q)}aGz#jSYVgK z)5H~290BGL#Pf40dX+F_`oLzts^SLzX$VkBe_|`(^22AzBLWKr$&1}qn1gA21**M( zQ0&<}Gf;Hd7vei#ZNqKm_*GRbG`R!JO~n|m2FP^TI7>Y}Mh>v?5f=VWp}gBg#z~2@ zJ~k`3o8iCLZmD>qKP|H7SMAO7V5$irc^Q=#|N5i>@F`h2uw8t4>~yPTrA$3nZk~I& zd|;g85FPPD)};}|3pbI??5=*BgoT`MP2`p?`^Ef2!ufDno=sz==l~nbF{|-h-h|Wp z?ixI)9T${-4^WlU01Nx9?rt7W>7=i=bl5u-;A?12NI2`KcB5gt0`|ZqeRhr_0`Eh$ z?G}Avc*5hu(D2P&>BHtH43Qy__Z@3h8DzEXsN3ksOQDBe&S%8ceOxha9`L|`fdf1q}$eY zTKF*7TBe>K33psm^Y5L*U=r#s}T zn%vYMoL$|dP1`-=Nrd2jciTu3?!TyWP}$|V`>QZJ5c{cI#4_U!u0V7kM~aYl$U6g< zmL_HVXIrWmr)*q^&N|p_<*RgTKMwtfk=4<9_ICr)SEef$pEwS#$L%FnCuHqbErUoq z^p77c{i>dhU;N-@i+U3iSETF(N=4Fz=8)cCZMzc?E8<&?zr@<2?_$R?K;#U1BX)y~ z7ax<4bkX%|2KbL%Gw&XzW;q|CtH6=&%gJjJ`12x$DNfS48Q%32q`F5M zbq52UXbecDDZv+^B5m`;#k<8pc6gS3=CBSy$n1w8s?R2BxSp3~`-R;3+{p)HLjxS1 zXg%%`v3rL5TQ2pe>+T?0ErnmqyPpued>ZAE&Vzm{7wF`3W{`F9V8yXU3)kRz%BBu{ za6j+B{GeMAJJXO4IQHo9f$5@*w{DOz6?Xu}XQ^4+y!F}=3$U<9l@9?Uc%g1P$|j%C zjBTV}F))OQ%8pp5wUiG}O)0zJK4E^7Gsm6(`u=4#zL}VIXdfZK`J`dEhqj=I^flBu z4w$x?vlkW;|FT)we0}k9_njyRWSz@Q&Z}%5?Pg?U-L6D#XbGT07g{`L*E>TR3A~%3 z7M}mH9sRLWty#Xp$pBD(QCK^You@7>4%Zb;0~PPi`9@1p&e#-cxrThakFH@Gxw{!J z5u)5@HqSOSG!{sSHeYMKsn?t?BiksVuhsB+-!fOWLDn3u*_@>+uV7wjsQZ$ThtJbl zRd*z{zbd8Ho(ueYqQ=eOnusWjW-y&>WB_y1)n51$JF6hyFh*54DsoaaNglfIJP#IK z6OO@-MF7eEPi?G6JC7E9{@Hy{>Sg1ZZWrYYKCb7duE^Ml>m55SL`S$h*IigC2eLB( zMoqXsZ=z7SRM+-F`>5$8*K#P8grlk1-CH9&ZMo!H$U#0&lmE>qy!V9AT$bG8leTyL z2->UC(3B8gvhQN*W=mBYlYm3Ow3%BQYuNOA_W9Rt56G~b2}xO?sOeK*-pIsXuH#9C zU6SHi)Pk>I;fyN}>>@OX1fKj&Sf{q<)_X-~@XHH#c1oVTgI;*cCR=TaK#y-~eKONb z9bkcxLOh>Vabm62(_$bBa-=qJ!35WSI~Ck^NdzLa%|tNA#P$T=~Vx96R>hCkKa z`(BiKV!wS$_S^XKj^)F(XTpCPC{&o+t#^$E>BF6pF`F~tT>$z|4qw+&gP!MBzoeHrO)hB zE}ZgzNhZKNh~Z>g5USZ|ba&+}v<<(f7BLwJ2SJ@eJL>tIqJ#kq}4g zk}+tvZ>pLq)q!R0`hh}lo}iD5IDzSBjc zk&A}|?&h7i4K7V@i4NV6rZvK8_nYlc#cELQ(;RJD?@@Vs{<`eg=;XI4N+r6pDI+4& zX&(ER9-vgMsNc8tKSI*=pT=43*Eq>Ns^8J^L~KAX5M|uJ=M|$@+~jr0GkYy_hP@jQ zo$hW9iAd<@*c>WSIofOeXfoubQ_;Xul4-{B0s;I z_GOxLxwoJm3<;tj?f0A>$&I9Gp;9A@3%FEE&aD)oV|dL+q5EF=X5kl7!ehgHKX|44 z6o=L9aMyz~>EfzK>&**Pn#DJ5`E@nddUO|9+w-LtM3`Ij;@HiLewyjc1{yPGo#IO! z%aKx9km38m>xL9M>UB5DJ~gZp?o&R5ie9(*J2v(!?Tc{T2Og8H&j}{GKe>}g$%AiN zI-3x3PLs~VXVF^rDw%3Y2m2bw-y1Wav;WiAu6M}JPx`Ofsxl%3Isw2=^GI`Qus9^}NifNi8)@aYbG(R14wc#M zruaZ>w9i-g_t=(N_c}7$Q67h*K{cOE?GoCn?yLk1V!a3NFnEP``-H;0?b?f9VDN89 zX{5h;W4fj>vNbY!6m~Yr&Xb_4y=i0KgNP(we*`fNXYr=LcwQOj^ozSxUnRU=SGFQj ztrYCFO>)uNV9~S%_mPl9Y8sjXZI5KUd~W7APDZvRFneHZtuSG&Sh(2fumX0wRpUbR zqfjq29r!ZOSmnt|K<=95sWx6a%NRfS z&6!3QBEZ-J#TkoRd(WjuOol1}7o%|2y)FC6APyH$Mday*E7?HpcWDmuIs$n{<{WO?SQ%z?YZUNrFQo8T!ZR~+F2bB z3}iu(#T2;cw}gsO*=8NQ1`=9Oeq62F+B~WF@!m|3zxYVMkzmtRZRc!u@SMq^kVkiQ zecSFb7-kA60TWo9rf5n9esl79_mCuLq zr{B5kX+V@$oMBFfqEh}6pk3L#e8kvVadvfeSiB{-T`1$L178py zOB7?muRTN&Z&l^zRvb`nDa@#@mZl`tYZ3%J>sXUXZk$rmT71Zuy1f;A^w_n#ysUK_ zQA+#{G1pBp%TySDkmXE)AnGb~vKgB0(78ehNpW#;T@3a8)#cvWbEd$cARv;(_-sSs zVwY7|b$_nnGy!xNV25=cF#ZZ)hUDbu1G#av=HneEweC*qn5?>DKN^_6H0|$Z^n?U! zBnkqct`^H_ORk^7FQ9**pMbj>@E!v8U^hN<^zsOID?E7$oKWgIqh2UrL}{qpe;M~P zu{U8(Nt_eyV=)Lso?t53#iiFvW1t8CoepNP|L(-zqZ#iGD*hMyT?O<_#RJDqiZHU& z5#;$ypps&3RjmFt+V`<7@dQ54L~@zrDAZn~Zbh^GRr{p30~X+x zu05K8Pp#)XT7iY@4PSM77-{z$9f^byO3Rl=I^~_Q+`-LGWHX8z&-qrhE&@&8yg|al z6CFasVNYz==ijVgkWDD&+jlPF)%m<~;Oub~d%d*ptV`RXS~od)sFIqas8Z;tGCwEZ zW6H+Gb)k=lfP{eb3nzJ(1S{hjpN#7HuC9*GXEjkZuagNpAZg}W@ZReW-cl1H zV&?R?VFNBDQrcxshhNs!*j=E)kNHTx%pOut+`WJeSA8VNnZNY(CBlt49iyv7v}v}6 z8oFO&>y4$zFMQjb35xMB8-8ZRIfd`KIc4_sZO~odIk3Bz0>c!yw~m5UHxD(DYNxPMLyi)%iPjt`Q%a7=sO&cfICKTkh{(TOu(S$Ftp-Q;1$Zw2h#)xU4j;Tg`2@5i~0csE$$@PY=Mw!HoNM} zy-e_J)qeO4he~`Nt46+!S{c=NPxVDp~*TYtbqwN-tj*289~RKFR>To$dN8Zg9|)#P2)0V3=Z`?qdmw zh!FMN;pcYIi-aH}_4`a8EANNh)md7yJJ&Xh@RH_-I3GQW7S6})jumO4lyulMc#25I zV}mz^jDTuFZ{9M4IgiWd#K!Ye&&r_>&rAKz>(v>wyQZs2IJ9>ZUJTD&h1(`C7fl|2RtBZ3TL+NA8B|Xk|-Tv$eneQ3n$B)<{wlK~QvFVt4kL;bD z&!|A>8&rYRInW(cW496PWB&`&3&-L(d&o;k58O`q;t>Dqp~p0vit#{=_R zn#I-hu~`taSjL!S-f6%>UanheV+h1u=6o9{QYkLMrb-p?gbpQ@*LW<($gSu#Uy=FR z!6U*Bu;c@5~zjR1PMp@$mGm`IPUqhvth3j&OEBwAn~P#0+u4g$XlzX zNBWMJN9LqdD~VgIzN?cuC5ptIY?uFPpv|w&2xAUjnQ~7wc#!={Q+s z4EydL3wcUsNbtwj^L(N4=j0xF9Q9cu9>-}9w7!OluZOm)wbK-lSdQG)HVY(4$>96x z4EMd1N8?QvMbEy6Dt{0uZZAmMdFTK?u4>{B;U1Apq%!=f+i8M#d{ukJ4rJPS+Ns4c z!)H$B8D%sy_{!n=dI!ve$j=CN6mmN(q&`kseqm6DTopR$d_yPBkWzi)&Ygt!XE_C7VB&P{gZHD*Eq;r^-4*I%xqIqF zbfPyxnTefGvUIthB;{pY`eVrWRxJNz=iWJi$IZM$D!33mGE}koW4H#7D*cqkiJg5$ zJH^#Xa|DG>iCBWC_v@3I6BQz#(tH)YJ9qB)h>tAOnTFVT*A+(M{`GOt<)cRmoMe+W9T7ZS(TGvJ3CghT+`M&KS%BHlvUA#Eb}@+ zVH|do*x#Qp~_$f!>qSlo7p>b>BdryeW+<3TMPV|sE{S+^vbSl#>T zPB|BflzcsP2-PMk_RG!yqg@uC&-&gi#s!&yA5w%S**DDfg+O)NSdXf+t1lb9JzE9> zVAi|~S|J*YT!-0sJLTw)CZ%$2d!48=8nga~_y^lyj3Y4#+B~|zysJGHUs&eBm6pTi zHN1szlS3~4k-qBsO5WvhcI}4`i`V(+GweySt=K^!w2z{YVeG!&si+M*w@h}BRn`T&}WwqE^HyY zFtL*WelT%zs`4%()y5y=*x1Bh@w(tHnfrd=dp8NTvpyRAJ??J@fj}^nEY4?)wJ|X; zA4lQ0LWC+4udSo1Fup%RR$-;V6VG{P=)1oPKAeiB{>sPm<`4^-te!}PjovRgjcSr8 z1ITbzR#y12E7)q;LQQQJ3Za^sp0;Ft4H>{EB-Bt;To@m3HS8V$s8mHsq=yWRt5mSl z5D$!r$^38tyx=IHclYs6LROLP3yI%Qo#(i(v4DEPUY*|76_#0sdU;GT`G^JsRcg;-<*$f)%IVy(_}oCcf_S ztG%$yuWGUGlaupA>0C-wf!7cuUM*5myXDY`FUmdNL$If?@3W-7Or%KNJzNP>-$0M6 ze?|Nf>Y(kuva8-a&l9tfX^1BaOOM}vmDvm7pZ<~_F{8y3RYe8Az0SE_hI3`1!gdv|csV#sKyWH#sONILPs^v`-? zi|TrBIN7&c$47Z&zFoW9B2_A!Tb`K1F-!G%^7H-76rmml8ph1I9^&!WEw)x}A(^y~ zf7Xx95C~Z7VJiAqS%nPBM5Kh-S2IWO&&MR^~q)r(f z^1du6q`hY;HW{X^rBvuOAyhxc?J0XAT~pzDxW#bm7Zkm63Ez|EH?{PF)B)OK4qf=h z>j77Vum}>Nckk%lnuN``Pl{U35Kc>LbpzA!!i8_7(Alnl0O_#dy{73Qv33ZnLAMY= z1(2!zus!%lg{WNJPnqK2IX*NbJuKru&~ow{P#h&ZOotK;kaLHS0Qg*{xs--R(s_KX zjc0%IG$t#5d7>1gC4}MP{5Yht1cjQ(JU#PID#RcwxY=>LsH`jmMOqrv>;fT`S?pYs zD)zXVRuhCjWQdvr5!RL@`1n--&%dOE3E7i?kTpXm?M z|GRL|=f`}OJhM5x6*oMo2`V3=*(~MGM-z|>9It#84 zYb?SXDaa=;&dqwq2UEoCY{ya@O1RSWdQ_`KFz@6`RI8nA@)EOJwGTrSCgH_2w6jhh zS-qQYA&^^9XqDitUnRErz`x(Y?MpY?a%)O&cUyK-Gt|d<=hW}I>|rJKGoEE6xA?qc z(Q#=?%!WI+2Vw$;#p#&$cD0!!26GVLS7II2m;)5z9qqIHb0{rSz#9WZ$0)%=w?IJm z>eY&7!SGjt(l>eP{mV_>{r#V32JFg)gO#)2q#PVrM&{N3thr0_MsiZvo~K(gRyC?h zr%;?flE?wQF=3*i;$ zzivR(XGA2*xF<;h*>B`bN9o$xm=N%_gn@M5)r_y^7sb19B$ zMeo=;qnZ-1d{bFMuUAPXdW3X!{Y`xs^hb}*Cbh<@Yw8BdVco?ZyO%ZaIj{paHWJPU z*fsp^Nu;l3%e8lY-F@HcWB0UJ6Bm39KCF3Fz1=w)C2?ksNy+9(3F)fmMX*JV#l49+ z@zi|QZ^Oy}LC`FeOSzk~qBKYvO8XcJ4>T&}lIia3ux(8)$l}vvl#UibRd)QWxnM77 zzGGnAZ5P|Ik?DucTJ&{yNK%}Vh5KBoF)RUHF3PGfd&bvEnfG~(ewh24kfhfZzpvb$=zpO#w=i$Qn#xP*p4 zO)%#3PNElTyk!&mC3Rd=OTlNqng~nlvcnbflTyb&Jr$RClHyOrtl#{(aV(Z#DSQ$D#^UjHm49DF;-L9-d#Gk}N#$CDFboZe8fa_NeEzWJ=yU z=5H~jRXBIP&`TbC_0ASq_rX<&|Mpl<=k}a>SpEy81^06s_A;GS2>y;)Z`qmopvWr& zP3w1bZicNox8^ntcjjn;l9KS_)pW|ppCtHx>*&%$t7$UB!*`@5^?&bp{(08FJ}4!(Ut2FExIypVYuo?z|MXv@;~XV@8l}1R|Mx5M z*Ax5iLv-qs_O#w(`rY8aulrw{tp7gc|9^jK4HcoKr3Db@zVeOx9V~O@;r;iS|MkJB zah@Ul>mEiV2|GCr0&#c%DGC6$664_+>eMwfG-RwP0+cg1x100r!K|#T5~b+h_CURL zetr(bCrgNn^LJR-Tl`=5YZL*=lmFhH= zZHhI3Fl6Ao(`?MlGPF%io;@E+cF|=jD=I!KIW8fG{QWKb@4LGx^-X`Y-h(&s*`KTb zMukbonxC23exYa$&|w4w1YW&rA0Ho|DV>>~X3Y4N(nQC}IbD?VkGJA~p4_(t;5wTF zvq=8F4}v&o&z^zaQ+K|X|MI2Ea$|Fo;_4rZ!9OlzE%He_rCqFfz+Zps8#Yp7W8>oD zA^>5HdyI*TE5!Bm^o+yK8KR6++1uNb7g0$6_U*}`M`@|e@URRp*(ZfkIje;gOPKS1 zaY3_YRZd#kT3x+BmXninpTWVw0fSY8Sw@7h>gsB_Mz0%!7NrXnlWA&g^&J5+zh?}c z^Zd@^%k;oy0wH;F>9!}LB>%?)*1tqTgGQt=Q&a!-(NBK}>*y>48isTnI`scB_SOMe zrCa;(h@gmpNH>VIbV)p*APv%;inMgMgd#{wcXy|BD4>LNr<8OkAt3NujC0P>^PZXS zn}3Fx2cEt6z3+SFwXO@^MeLNbqSI2Bn$7A;RuwV|N{*(6hK8)AIN_J*quJS6po5T3 zIO>(Rh=@>%V$_m<)mkpcPD5>|Y+zs@EZo{1rw_tb-5G5N8}Rd6S zVB_$9uH4M}dW?6FF2TJ9)7+tMQ@aoHdR+OZ5|=(&gn%Iy*ZR=8h~~ycjQvt>QcS;9U9m7f zU(sJiT|JgNPk$~qH+OFC35;CwEu&_>KB=Y3*(5Og+=7zH&&|Cu*XpHFWzNCQP7@&- zf%Xs>@A}*+_AzLF?uOq_L%_@DHpFLrZ!hWn<@uUIkg-0jtk)sT)MNd2qZ`z*rFTfo zdh{Y?6(j=Zcsh-r;WyhoT_mhl9%l>D?2!j^ zfGI*ob}zT6ih}HpNy{V#*YAE}_l%1gh)CjuihWgBe;S?nM`S!aA~ybkft?>eT1h=J zeTy=AEafI86~Jm&ULITON@SM*?z;=R{(_>4%1oV;f-yoJ^%KupH>$E8_MmoNCotWh ztCUw|1;E8+$jDf$i^_s@d)~VkR8#z7nn?^jPtTSfQXSX+;j;hznC-)lKQ}2=@_pOg zbRevR&7@J)u~C(UG6t6Av5CCGIRR&(cK!JHQSU7i^@Z-~*7Zr7{q^d^#6&nN`wH4Y zx^^%Vr*b%1{bPDsJ5TE}cL^&WJuEH`o=^#s{1XQ8mV{Mhx=8~^i@dBs^6-7s)sKmKv+)-57WoMW}BMU<;J zFpQB3WI{DHbSzfZ78WvET5bvo1NmxWnQlPt1+0o+fme~wiH@6FJnjIRX|#RRG&D3! z7C9W5l^cEm0gA{Uo_*FE%9~w8RgQZ99=X*eoZNPIxo=_NDZ|w8=xDnBTscp?IH!DP z99Ji!PDB1X81sWRnVK6d?2Y#~Q6-{hG%q0&PK^8@5RwQC45YnVmrDE`vVQ*o z?28w-zM%Q~?4At>`ucOL)ziS;`e2~GiYCH~bIaP7lC_@psirkY{?$#87+yHJEPB@6 z=VAYYn0yw7SN0EFbWdUZpX*$;wY5Fk`_aC!0AxUI8$j4SEOa|uOnLR{6>y64J{m(u1n62AL{vBhYuD7or%Eel&>CIm zQVJWM*Zth9gItc4;+8v{Lc3f$;gwV6;qfKGVSQdIy%eXcA>nLBsH_qDW+;2;=4+P+ zzra&sh`GtiYO6HW ziPgKBZ<{vM^7`MQDigXq=%YZab119%Jyec?eJI6u;RKiFj*W)Qm?3!#6N=A6={mxN zpkLqUEDOf+nsMWSPMjGgS$|sA`e`bC@W(gpWYJP@|>mZ^m-Gui?!A7J1ep$crEDPF5=wq282C7eO^~ESNh5Xi`&n1Vka;B{Nhby0N873X&uI7>+c3RP zeRR||BNc=3t3lwKM!Im}LbKe3(2oyF)W`=o9|cG|6ZI@RqVI=CMy_p?r7tI-bCVza#f4cgY-TK{qp2vmmbj;IHR%NPeteI<_ zJmqL#zFiF;ODlq+u3AJ;%h8@G5eLzcY;tL-H4r!y6r6-6f?^FQ5|z=dPuFMV=C1CI z=)4XL-1}UChxQM*M}*{#xo*`p!P6DZQcv4B#DxqY;c>Hv=bGrZ4rQZyB+Kn=C&0m;I6G< zPB9<#|H}*i_p-o>dSGlH>jooTvnna+SjVTdVvttW)a2`(g}~}!!dIpGIZA<(6&W4Z zomN1i>IAO5vofE2nYT$xIz^AMHFrMGQV>ZTiqO(3fNmCli`DY)2jiCj`+1Wi z&iUmmaTh;1NUlGA%vH64P|QqEFVw7Vsc6P~8mL)go0FFIZm)knJu@{`lkH zsHk|WdZ6I^;K75S&gi-~Ksg7j$F#>!0Xz>>X-RJT)%(>>r-xsJgoK6~YHN?@g9VHm zssyKi%(JDXrHibn?yEm-Ji?{2yxbNH%Q|uAUqvsym^dMAp zbUaRfI59|NX~s*(ZEkUV-oDb5;7#RS9tTDpeBq4^Gf?&l3%7alB-PEF4i`(a#%jJMGlg2+kdiaIQV;pJ z!~Tm?fTL0jX^tuuKMf6uC-v zHxXFRbF#Ca85=7Knp63Og`A7IxpWG}9z{hKvc;luw_P$iz&GdW6zh5_6}@}) zO6-NqG|YGw7M^OxzkDgOwtjk&goCs1E5aTV6lAX@Y0NV2Ey}y2Y6kreBV$#CnaO;u zH?fM3#PBRJDPDxzZ%r56f3@;X z`*mgI@bl;Qr-W_32_ry7s>*I{V1EtG9&}95vU23ZYG@JA2|64%EgCz}IGTIS^!3}f zA(6C-ii)*!Zrc;Xv-N{@AvuxX7xfnd+T;RTdRpUpf9cz|4|BMio5|6zyW(Rqq+%hz za64MLAWREKJ*x33n?uR3%iOIOS{s0g!u#;n%)L1Y2-|}NOWcZYM z4evO7U7zxjakkFMs!9jqXuqlvSj)1?nwu{+r0#Fc6p6_=I=){W%41_Q1eg;|koDYq z@z!_i?{c4E&_2ox8RB|40yAl!$*gVJeI<-LAP+-&GY<2$ z?owl+o|+OR-EjWaJ;U6WUs+k{5}Np&L4$J*CAk5u0FLM<{_7ooZ#u4t>o!#_`LcKT zSmd|1=Rd_*GpN{&?0=Xqgu;g9KU%Y=_Km7xwSpjedhu*0*dr{-L)-Kf?SxQ-|9vAj z&V>F{6RIiE$G0dGXqvV^QYWbzBTVo~ND8+MuG~YR!y@kcTukaOPxB<@k1)S>saSS# zAzEHhaXtdqiApmn^|Yr^larcSrohsJCg_N|pPfM>fhS)~&C1&UZ5OMN_U_$l*RDB( znim!-i$lt2SO<&<$bWzDu7eXAfsx^pf=z!bER2fx)p~t?sTy*REBciyc2ZJHPEMUS zh`uX!_O3iCz~0|YpS;S8lCN3aPtbv78&}kD#VL)pst@twa38J zm@(qL^vq}I6xx~ns5}`iTuoTnhXl+a*bEKm4?p&457_6kW*G&x*a-`dlsC&LD@TqKeuSnkk55EQdT7Do zcPg39nZ~TbLgfu&tf1HbvkLJuIDyg@gbF*B0^^LC)zy@ooNYpJp-HT~4WsSikKBt3 zW2bjVXkV~bTAVdai!2TgE4z(MoIq+DnHDXpsaZ!c_1;#FudQ#y*H_}c+^ZIrEtW5BHsYcoCR!`zdj!}bj!whe`v_FoDc#;t@T&|ccbJZw3@$pbwkOXA@nX|v2n(n`gmEQFZrEMe-$jCb<|NY_4#K5sF|6nRjwGBD8D zVZLe?7Q-zhF6f^Z6JF$7Yw7cwll?VJcwU8sNj{q9!oWaFIJ7`gV33)99X(qDlf`gq zDZ!|_yrJRr8`U;&K5y95w0ces2Ww~e8vFVn`}#=rPYd!_*Z2}Px*b=Z+#*rWRWr=8 zc!f33ZMPck<)c!lnZRbazu5T#9G03I8>kVizhPM%9X;K6MTFk!tEe|;L+4<>KO^ko z;yZ7z$ZagIDBJ5zTCSq)q*l$Zj#T)4TB!4Yw!2dT!$$Lk(BE&?OW2OvB)iGdq-Nd$ z0V_w=3GWVnAnETful1(r6&kkZx8B?0<}R0MNUqRof&91vJQ#?pwr`) z9}cNafPqPuHfxYVkdU+nEiFhrYBjjV%!gZ`M-Zi5HU2_UVEYAc?3tdPlDm+t0Croh zN=ivdNo{SXHrsk><@CpHE!VFLenkyD2p9XHu@K`Sx-aI4nE($a`GaoH!?N655AKG+ z!PBR-8A~*0IVmZpfIhOVZ}vUj;~Lg};B4dr1;9uc!5A(1<}!1vCHnGB8t(rr-u|?I z*X}U;uf4o(D?T%9*ky@%;p+xv9lmt)HA*L%#J=9%+3{)QONyif1i4Z-^tbQX=k(lUzzBVL4Gls(yaoFmmiFg>3Q+2fpnn0i-yj8uY5VR4bv!1Gy$YH( z(s}R3F3XVwc+U~0PGn?c>_^h!;%Hk9I$C}2U0mP5W%{J_K{Sqm_?~5QNy&q}l4|KS zIo#Ilbz-H$A`9k$GC^MTA?ZC_CT-jD!Ib{2{A+Z_YKRA5GGF`o4XribwJ{Ws{9nb_ zzq~0E$`Ah0v;yb3CwldD6Md#Q#KiT_)U?6vfmyf4d4bbS0M zhbM9&7#??Q9?_BFv{ipl-WBaeMM0Yd9{Axy6W=(P-&EfrDZr>Q9cka#I8bRSYpZ&- z-baPpcB)rDo+OfGs9HzHUDmK`zgf$dta?7gsU?#acCl?p@?)Ezfo7-<3 ziD}~Fv)!hkkUjxdTcHvBk_Uun?Ywz1-X}QBoV@6-lwx~PyWUefoNsEnHq$R&L^|+% z>mR(HlJ2%+ldLGw@qSv3M({yZn$ZKNYHODck00|%G@=ik2s=<=zYlAi0g$D%O|9ff zb!38q;_MfJvlx4mKB4+@B-KZso>iEen3Su>wv-zi<1)qzSj|0zH22{{pRbOb7Sr(| zA<1PDUQVFy21;&K4qJ&uji+=_bc<4;5!6678!K&P37QaMAkK^=b^rcYO>GR__XUwkPr@IL}o0JUzc(0+Hmfh-wxG&IHj zu*jvWSFUh`QgaLkLJsND5e^0Bustb1tsU;`lEv*||GVXJZb_LH&vRV-RYb7-F_hD| zrX96v8{_%iYAP#5bZSES)xvku9ABQK`WHd%ORL_w;AmP1pZql(gGTq09`}747d8du zuiXV2i~a|i4X$b&08sMZQSG)>#^=j=l%Sj}=EUqz4=Ji1$Qk;NshaWOmXCD-LVRyA zN{0?1R&p6J$j@T+73fj1kai{=#0;_ja9NCq3MS&teHKTrQckAv{0TE?k;>b@rWj3o z%#d1BqweNJWzBnCxUSON&H3z92KrLF841=)JxO1TayXrb%XOy!fk~9L?n@vl{z#CK zW?3gg+LQi;A<%v&D*>%0K%FW?l5k$+WoO@|t1)==(Q;$lZg_yjW=X1bKQ}LLH{%kT zXm=uFqVq%iiF)|2)rH?<<6>l_Y4>BZHC-Yc3CYgg3_ty+QX?bx;!`GQY1u^L4rsK5 zwod80W-9~fBB=U@hBDlA!e?1!2^D6hrwf}x1RqM!SiQ%Sx>!I56}8xqn*z(S7q!G_ zsU%4HUtpd3y?#xYJ@#P@>T3~16!`Qrt?#05q>`R2Z-w9dcG+Y5SbI9NIa9uP=x>(&K)qojEC#&k0Y-$hzO1DHSt!xLT8qWZ_Rn&uwC8RE_csXvy+KIyXk+C>F)5malWNDa(RVfW ziU#t|&NZg>69l}W%GRc4W_>1hiFyqCR(zV0%?0!A#|QFXi#3AXXtWe1zm1t*qFYNH zPcup`%MGqR*zSF<@b~7!k%?Ki-|s-E_tu3OG#cPFXDZZ7@r6_h8gDYOSc&6jVxR~SR7v&qqg@0aJE(_4kl&L=OMpd4 zNQi^8RE=-=_uJgj2WcKLib+VARwRo0K7-WnxfhSq0ZE$e9;iRLuziK>zs^{M@bBXq zl9cNtE_}@fW#O8?(P(19(+F=RHAGv46-`Zr-1j zgX=kkA88W){+@q-5WJN8+o;Ds@gwJ-6e9zG92(Cp@7@)}hT_)L)xp@1jEV;e$JBYUy{qvLr zr#0=&w}b!NYa_JaYw>8<-QPb2MNv0X(+NOY@|caYC-Gf}jRx3F$o5V)9cI3oUHeEq zpm!7Q>}q(FgOai>lj?G(Ws#ff?`bcjCI|fX!wz498jf6ORxzQez{FI0tXJmeYH|AA zmD%vm^*qDA=lb2!&aPtO(81OgRJVOWvBAz|m^$M6^+0TFY<_%`QSW6=4R!Usm{VAV z$JgX_W@g9p8X6k1va-_Bpvv04cb5aa-6Q1Oyc!uIi)!oYvW&xNkMy>W<5k@@;>J4cu70s~t?NHCHBIr)Q&6+1IWS56Dxobj`C5uLxeCQ=k0US5aw z(Hvx4kN7&7B@jxkw_fZ>P9{H#TY>7NJ@19<6;D5gLGQjAAxVjZ%BSu*QMKi2R}&%D zljep47^+_k;5G649}!bi^_UhOa;z>dcUhBJetztYT3*h+HF>yZ;kFhS5)$$tcAB@K z9Gl@3+*MfgJ$NMAd!rMLu|slWf&_XXDJ&-^cTr0+FDYj%UHlF74Ye+h*yZKsmOoM# z6!apvcS%k#tUqFPZEesE(iiCbXFf19E2vqn;TaTpK=AO8Yn(p2v{Zf(U<8ws!kJbo zDp3UVL*f+CSLhwnHe5lzZ)1e+?%lggjo6r&d3{p#RB4fDanRW|@&U%Uy8wrt7S`{v zjrAjmtxQB^u*|XwCxqaO@AJ1jA_=0~%+5&uyYaje(|!DpNABYxctn0RBA%l3$qR{_ zo4hG04}vYf=p|isJPr!$Vd{GRbE%}nJoEEoxXd+YD%R#9wHve1{0zEC=S_FFBYHDy zJsPOda=~GMyvYzBMVyoQ~T3`;tSz!#0M zT`ne|fAlnPd!q4VLLI9R>d2t=U?AmE+)h{n0jS@>kctk%ZdK9AsT%(d3ya(V9tOta z8;4Mwr@(mY_+Y{qV+H>T`ClNcpXPKn^hz}4l%NpxqgPMoCO=ZR$XP!AxtX6KLEv@` z)o~64k^SZQpv6(i_Gu2*Y)IX;mVW+h*yR`)T!u53jK4vG7-WKFFnu za&w`jLT7`n5wvj!3C>yn{Fk%cSNbW9jg42emF*?{c$K}u68<G8VP~wZJ~hfoqpT$F%Z&iF z2Z(_ykvJl%rg*J49-?nwupJ{`RM5-J#ngtuc9&1_OrPi?ZQ@Vwe9Na zQhY1sf-==GWo#!`D5a-2KOiGuwqef(+XfVG&ffdIf%iY;Z0^sHQ?fsD9xR~M)O;M5 zQzK7J6AcCpug0A=LUs4}3QWpao3F@_ZWrz5EwOH4}y4g>4AL_VSSkuu09*L0w1N|mEgH(tk_e1Lx>*rFUrZMVTS~k5> z`C`Gwy67QBw3UX5PHp^`2ii6qgu|rL+vAmFMb-G}H1hJQH#lS$LzeG6yNxhlr{t!U z)`+`vo&DY(^r!>xTkV|85KgmaUjNk)lQAcvIJ;1P_&Nw7^_M7o8=-UOzO4d^U$Xks z5Q(}#4@DW3nuDX&irW9Jkqm(-yRccN^jh#(v|~WpYi`A2(faVMxqEpP^ZBBtrluMi zXCpdidpa5sbVhlEZbf-{lG4&jqk5Z@PEkxcM}5JkjL?Blc9E2jU=8dZBJQI&zDGw7 zAm9=K&4q3u`cK@k8R@&;ipt8@>$DTn+P&YA_i?w#8Mtw0P$KYxZXuywlS{6vdtKoC z(n!SSR~LrYh;*cw{ndr)zBPJt;?D7HJ%c~Zs5?V4UNFv0g*wr=1HQdMs`h&1OP9Fq z$5>!$!P=W>!_3z$=#Q7&Lz9zFO!fRP?01o@<;w>tDm!-%7sz~B=&ErnNiN>@Zvbp! z9`>|tN5Gc7^DvnZ-NT2wMX3fJG(;KipuV~up&coDKZ}0!$rEkuV7T&j@qK-i&;7o_ z_XK~9qy%uuM(4lCkPZ9{6m`Q<05}#tQwAy>J^aU$Ryhj`cM2khdwX>w70N!D9CAby z+#$@HrjttGQCf>O#wBu54&h9ZYX}+=aS~9ky-P!*Dp{iTx-6#b=&gUf$RWZRFlmiv zr~Buo1(O)Xvz%r!LvkE{S=rUKj$=s-jVkQ}zgM+1CEgf){ay69NAs6&uIz#H#Hx++S=ltrWE+GGqpWW1|*ZJB@NOkH+xIQ)?+(TgV=dWxNUO;)I?Ybj8g7+>} z7z&y&fe5GsHLkSh-4KVodq-i=lW3;IgEoF9!ja^Dl!Nd}6*6nnv&h*2#3KL6?(_Q6 zh6Z;Sz|Iu8K(eOz>{-5`s6SrJ$AyI>R@BpfaRDqC-8hfG@~I5Bp6u;qT7rpz;7?id zy33F6R{Bh1-siZ>goK2ntcam!$t}eznwP^rgZ~3uk*16s0He%NR@a;-hZTN9ETDd` zcs_@4M|eml>QDYS!GC&=KluY`UW*KYa9bNbuh*C+ErUG)6|QgJzImK}b0{kPzbRAgKb-7$~Y8E;4y=*ce3KvH~R2^x$B8c(|s6%%I4S*ae*Q64h1!9)I^`M)q5dtKVQmhdZ4c_rNO@)gk`(=@tHb3JugUDbbR_WOlcd(1uhsck>7d*EMy+VvQlOw z&(3*XybOIT0zyJIHa2W(8{Sh`7SUP=6LEE1F>c=c&fEAcxVyf#GUd_*4qm+XrHgPA%h33D)~QAp?~8l&p*BXI|p?WPd&W)2E=Yuv@jQfK0>gfsk3u z{ghiFDJ10k*Uq?&L&p96%zWX|L?;7iihqETmAa#J1i=EJ4OGTp*s+0k21sn7ahvHV zFD+dWOPikJlX9JKIL->ImD_4Az2BkhGZ0AWIDU3g7(P%dGoZa?GuveN;(#PquCV94 zj{?It`Kl#?eZ<|eS9^2Plnc)Rj_d9GAD}$g(P?3Pcn?wjM}ik(zbxqM_A>h`w=2BF zFJHb~b+NPzd14SGX$e3|bCmLcxCv*v-?ObooM;$8xM0zEQt5%XoROh_#A@^DLv$h2 zS*$>rFdS$iBx2%(Ac7liw{PNe>sklMv>kjVQzt2?r~tLlJ|V&2wZ-zem|+nGu{IkC z|5(~;=y#!&7*UWO-{Z-6F%R7z35nSCd-@z;?pF)*jB>a{)8CuSr<_Ba(fPmMFTu}X zS+NE%D1iiel~$K)d3gK**1NPa9WB$h#;+-QUheOQQ`bG$_T6_Wzajl#W(r5D{^Xc< zt4@#9uq7Pbt#5MT_-5!@L4n#x62*t#v#)K63k6N2I5=~nnDz;|Np3+yBrAR0%f;0> z`f{7DBZO(NBhF(14-8o%;oy`{$|+H_3Ypi&CA+C)64xtZ9#K+KRwMM4=uV&7UnwFACw*M!M#;b1n-n}k|Dmo#}yD6JOtdRCB@!KKFQgM0u zUCvL{9y0MQ51y^g&(4Fm?Ek=#{QQ4Z@lB4`_G!A_BzaiLnxHsJ6^qUkkcA9M($|%w z1!p_};2`|1r|9jQczAduBp5_|Bxm(IV)x(D{N_9VEVVEbAkFV|yKWc<1kEi%G36Y_xxmHnsh8K zAl*%&(^Zg@v+{MZrK7{Yt*s3-7t_-hT3_3MqByb2){uLJn;SVfd64rA$?C1CsVPtr zY#_GZ75P?sC71-|FX;6z<)D9Elxafv^&g&-iS2Yo@sOq6_tZNQBqni;k@3vS~cv9jE~g#A+5$`)LdR&Ee#&% z?X{e5yN=?r9>LEv0}{?%F=bb-?C_I1gN;OdA?7p^3%= znf0efYnfV4p3DL21pB*{?eS_}QKDmNkKD?)caT3-Rw@gi?SG&0aXSrXA^V5hXE?uo z&~P4*Fi*s_AygtO7|q-P+e)nB=kH%S0_uf-f>J=xMjmn*?h1(X%Ra^Rdjqf{EHW|^ zd%7G+18_J>N<(0szI4YKs!vzje1SxzCX(dwr0m}(@JIdrYgXf?sL+`DW?C0?jbk+H@e5k z)U*?v!g)9A65Ki(DyrjV^%vXa<>~(ZuZLff*4Ck^3_9TTO~(r-aB2A+R{Hf3xU2zwev!|49wlu~o{9H_i$KEN;BpXD z`Q%m;Yzm}{7pJDLM*KVj|NVB(cSC@Nrxo#fsJgMS$J<4@Ru?L1fA=}Rj+Pes!W_O~ zw%q%lfI-0Q2DVo3yKwAcmKRXviHeK_!)+W7VNwioGIWe>ltcZ1G{p4EJsZ3~u`LCW zV`FSX^q}cJh>MF0Kq^0iwe9_lM+vNZw6r;yx()PUw&xffeUv9i;1nz7Gyw)Q$Hh~w zPWLIrQqIDn$V5>`aZp`RG5uVaxw4#{{(Jh7kB?7fy}5)d7~Q_M&vNo4YuBIko{nz>v1A1v&Qo#Obt8V^yy#8>tvcJE^RV6zP;c z^`q;a2i?5mgRK!d8y-cr)D-0-j&63k&J>WTr@vxbe8QG0!yt zUEqgo4jtNbbQxG3<+8cCTNz8pmwovT7v2Dbz!(XDSVy}97tt1o_+3@|ZVZ%WW{MDE z(DtXvc6*^*4Yy90^)0nzKZCCLtnZ#`gXMzi$aqLU6&oHzDv;6?ovK_^zaP7pe3xF>IXnk&$*}k%TOj{TB!};{^%spRhz!b; zL!x(%G@9W_9y_k?4`4WnxuysDNkh3x7cO{WV=p#-Z)LLI{871WMVkzUCvuiLhoB!W8Q|&F{&ruWoBLm)(zEiqsO+kxAUjVN`AKv;qTl)BO>cRAif-{w&_eIzai%GPY%So!?} zDOq+v_rW^CmXS5Tl9jY?$vf;O_aA5c-#_WrT?uH{4c1QwfQz$jc69f4Du)4$9jX0W zv5)kPhjA9M#5yn*!~cEOd#d(;=Jc_2f2Wrq7SwF4+0Um-V4r-8(AE>k5c8`@3$C9Q zs%~h|?ySwo%rqe+bYTN5QeR&sJDN}QQAYEUFQ&5n=OoS5G?Wu)9F417^qTDm?zb#>vca-g79ruGUy-FbcBGrLQtOJ}#R zqRL3L-S!|0okrHpE5dM zMKKr*5qu1Ob3A*gBO*_IbYr-n6kd~fDE3ynxOBp*>Zr7vbg|*;pf4ooQlfVZdao)e zDn?(Z0w7G^=sLQhmR7+JZ2fW?DlA;wqDeAQwkls}s_;5}eW;<4#~LE_Lwo|s7`ecg z^DAF8`SrxGusNQ0ISR)~NSO0-&1BF;RgXjGCZO*E#^Zts71oePv}CqFzO!sprBf@u z-s_HG6U87C#r+3B$_Q-Rpw3kiGdwEvLL1`7q$zrRdA<_-tM1BaZ>{8;f+5v96TMJ|Q8xX;gTe5DpR^h@Pm!kYO#R{zyxZZmoAB#sSC+IkcbyOe%Pe&4agas{y; z>Ho(Vy06MG@X}R2b2>XY0DM6C>j1qsaVbGL&#)=ejJ}YJ+(`i_GQZx+=V%>VgNW$(wk-q>J&2g%CUtvZwcp-G`!?o zmwS;xjqFsYR%U8R_ynIPTMP>4%zh7Ro418@6flW3e+Q;nt z1rmg!YPI!?iO7p8H8I7;>nF1k%~k<30|PbyWL3({oYwi=?WkQXpREwo=HFEvl+5W& z0vTtr{-h!!BcuK9+~3FAo;ys;?%oJ>yY7xp_}bZR%k8agOG}J+)2M(w9y{K$XtbIa zadD{?8AyGsuU~b8=w9;Ie6_Om9&-SN+~_9Z+js6+EH5ty9IP34n(*g*$KXf;kXxGH z-#_jw9TR0%0f2_ma*K9RsTWRX_kRQBl#z+%o_^ z8HPE2A)QO5q0@NiDyR&a!7}B9(WcJJ}FF*GF&8+92@A-KnYCyaG7)OPD=@ir2)V$WO-0jiC}`YHU2LH0XY0n^7^@V|oRKd$}wMTLj>)V0H=Z z8x2A%MhK8)>h;bQ`T182_4R4B`^U#KvwP})BtC~(Ssvg$EM@zZN*5tB#J; z-27nvF~Pe;p>wJs#QLYS!JXceW78n+uhvJn_ViB0uY>LEMA?Q+Pq=^#Y>hT=Bm_;J zQ~JUs6!(@E5}yQ3QCZ~HyQrDHpJXX6XBNQ_s*U_LAvt{EL@B?A(J% zV!I8+(Re;5>w(NH90v7l$>m`z_knoqGW=!#+!0~y4|0Q|5526-a>zmmXfz~4Niz1{ zawcE$WWfa33Q?IULK)XTAiyzyGb#>BK}o2~I#l~s`9cc44pk@$7H6lQc(+E|W0)6v z&}kk!hqTAqovaal`#o0rAxXwJ8H4m$=i9-q{UJpo<}unc|J{WzI<~x&^o8^L`7(6g zUS3!n__j0|^Qumq-kkRA+YLotTRDv@a`>g<@3!;yoQ>OA9l4ip<7uNLI2&p}%y5&<;0*6{>~pR;f9e_dhu zea7+^x7M_c97M#wSvg-rtx{W%Wqk+f6l1-_i>F4(>@xs8^fuLU1bFm6t=1wijqcE3 z)>?>)w!3WACjk#$96GIJ+g%6y)xi})u0ndGg&N8pXg^gv8!sMk=FK(#8%G6;KxB_h|@+ypu4 z72G{6KkR+3tT!!d&lL$xteQRwk~i`9_m7Q@rItpM+3-k*G6waX_th7b?Ck86m6y`R z`@A=Av0oEnx-0`FMJ@|%m|j6Wtb?4=;Xw*Qr70z$$(FM+Rt`dW)56GAZ z1vVXzI~hV0n`827ouwIkZirNE-#*dku$0v3a!`w zp-6KBr5u%Ttr#)>ML+(M3kd_7%0D1yJjt&ZeMuy*;0pA+b^T&@#nomK6-<+Vz2N^* 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 PU|a^e#yZr?*r5LdP@y~_ literal 0 HcmV?d00001 diff --git a/website/sidebars.js b/website/sidebars.js index f2e13d4a8cd6..8ba009dda3f3 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -116,6 +116,11 @@ module.exports = { label: 'A/B Testing', id: 'feature-flag-tutorials/use-cases/a-b-testing', }, + { + type: 'doc', + label: 'Feature Flags for AI', + id: 'feature-flag-tutorials/use-cases/ai', + }, ], }, {