From 785278a3246315e4ef258ff426ea9318357a4d9f Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Mon, 20 Mar 2023 16:09:53 +0100 Subject: [PATCH 001/106] #RI-4181 - add to tutorial button for recommendations --- .../ui/src/components/config/Config.tsx | 6 ++ .../constants/dbAnalysisRecommendations.json | 21 +++-- .../recommendation-voting/styles.module.scss | 7 +- .../Recommendations.spec.tsx | 94 +++++++++++++++++++ .../recommendations-view/Recommendations.tsx | 68 ++++++++++++-- .../recommendations-view/styles.module.scss | 18 +++- .../EnablementArea/utils/getFileInfo.ts | 26 +++++ .../utils/tests/getFileInfo.spec.ts | 19 ++++ .../EnablementAreaWrapper.spec.tsx | 6 +- .../enablement-area/EnablementAreaWrapper.tsx | 6 +- redisinsight/ui/src/telemetry/events.ts | 1 + 11 files changed, 237 insertions(+), 35 deletions(-) diff --git a/redisinsight/ui/src/components/config/Config.tsx b/redisinsight/ui/src/components/config/Config.tsx index a020e59ae2..da0c53696b 100644 --- a/redisinsight/ui/src/components/config/Config.tsx +++ b/redisinsight/ui/src/components/config/Config.tsx @@ -27,6 +27,8 @@ import { checkIsAnalyticsGranted } from 'uiSrc/telemetry/checkAnalytics' import { setFavicon, isDifferentConsentsExists } from 'uiSrc/utils' import { fetchUnsupportedCliCommandsAction } from 'uiSrc/slices/cli/cli-settings' import { fetchRedisCommandsInfo } from 'uiSrc/slices/app/redis-commands' +import { fetchGuides } from 'uiSrc/slices/workbench/wb-guides' +import { fetchTutorials } from 'uiSrc/slices/workbench/wb-tutorials' import { ONBOARDING_FEATURES } from 'uiSrc/components/onboarding-features' import favicon from 'uiSrc/assets/favicon.ico' @@ -47,6 +49,10 @@ const Config = () => { dispatch(fetchRedisCommandsInfo()) dispatch(fetchNotificationsAction()) + // get guides & tutorials + dispatch(fetchGuides()) + dispatch(fetchTutorials()) + // fetch config settings, after that take spec if (pathname !== SETTINGS_PAGE_PATH) { dispatch(fetchUserConfigSettings(() => dispatch(fetchUserSettingsSpec()))) diff --git a/redisinsight/ui/src/constants/dbAnalysisRecommendations.json b/redisinsight/ui/src/constants/dbAnalysisRecommendations.json index 601bffacea..025ad34d0d 100644 --- a/redisinsight/ui/src/constants/dbAnalysisRecommendations.json +++ b/redisinsight/ui/src/constants/dbAnalysisRecommendations.json @@ -42,6 +42,7 @@ "bigHashes": { "id": "bigHashes", "title": "Shard big hashes to small hashes", + "tutorial": "/quick-guides/document/working-with-hashes.md", "content": [ { "id": "1", @@ -126,7 +127,7 @@ { "id": "1", "type": "paragraph", - "value": "Several set values with IntSet encoding exceed the set-max-intset-entries. Change the configuration in reds.conf to efficiently use the IntSet encoding." + "value": "Several set values with IntSet encoding exceed the set-max-intset-entries. Change the configuration in reds.conf to efficiently use the IntSet encoding." }, { "id": "2", @@ -282,6 +283,7 @@ "bigSets": { "id": "bigSets", "title": "Switch to Bloom filter, cuckoo filter, or HyperLogLog", + "tutorial": "/redis_stack/probabilistic_data_structures.md", "redisStack": true, "content": [ { @@ -307,21 +309,21 @@ "type": "list", "value": [ [ - { + { "id": "1", "type": "span", "value": "Count the number of unique observations in a stream" } ], [ - { + { "id": "2", "type": "span", "value": "Check if an observation already appeared in the stream" } ], [ - { + { "id": "3", "type": "span", "value": "Find the fraction or the number of observations in the stream that are smaller or larger than a given value" @@ -347,7 +349,7 @@ "name": "HyperLogLog" } }, - { + { "id": "2", "type": "span", "value": " can be used for estimating the number of unique observations in a set." @@ -362,7 +364,7 @@ "name": "Bloom filter or cuckoo filter" } }, - { + { "id": "2", "type": "span", "value": " can be used for checking if an observation has already appeared in the stream (false positive matches are possible, but false negatives are not)." @@ -377,7 +379,7 @@ "name": "t-digest" } }, - { + { "id": "2", "type": "span", "value": " can be used for estimating the fraction or the number of observations in the stream that are smaller or larger than a given value." @@ -496,6 +498,7 @@ "id": "RTS", "title":"Optimize the use of time series", "redisStack": true, + "tutorial": "/redis_stack/redis_for_time_series.md", "content": [ { "id": "1", @@ -579,8 +582,9 @@ }, "redisSearch": { "id": "redisSearch", - "title":"Optimize your query and search experience", + "title": "Optimize your query and search experience", "redisStack": true, + "tutorial": "/redis_stack/working_with_json.md", "content": [ { "id": "1", @@ -638,6 +642,7 @@ "id": "searchIndexes", "title":"Enhance your search indexes", "redisStack": true, + "tutorial": "/quick-guides/document/working-with-hashes.md", "content": [ { "id": "1", diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendation-voting/styles.module.scss b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendation-voting/styles.module.scss index b0fc89120f..8b092bd2d5 100644 --- a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendation-voting/styles.module.scss +++ b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendation-voting/styles.module.scss @@ -1,9 +1,4 @@ .votingContainer { - padding-top: 15px; - margin-top: 15px !important; - border-top: 1px solid var(--separatorColor); - height: 49px; - .vote { margin-left: 10px; } @@ -42,7 +37,7 @@ padding: 4px 8px 4px 4px; margin: 0 10px; height: 22px !important; - + :global(.euiButtonContent.euiButton__content) { padding: 0; } diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.spec.tsx b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.spec.tsx index 2c0fb8d906..e578d81388 100644 --- a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.spec.tsx +++ b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.spec.tsx @@ -1,4 +1,5 @@ import React from 'react' +import reactRouterDom from 'react-router-dom' import { fireEvent, render, screen } from 'uiSrc/utils/test-utils' import { dbAnalysisSelector } from 'uiSrc/slices/analytics/dbAnalysis' import { INSTANCE_ID_MOCK } from 'uiSrc/mocks/handlers/analytics/clusterDetailsHandlers' @@ -13,6 +14,41 @@ jest.mock('uiSrc/telemetry', () => ({ sendEventTelemetry: jest.fn(), })) +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useHistory: () => ({ + push: jest.fn, + }), +})) + +jest.mock('uiSrc/slices/workbench/wb-guides', () => ({ + ...jest.requireActual('uiSrc/slices/workbench/wb-guides'), + workbenchGuidesSelector: jest.fn().mockReturnValue({ + loading: false, + error: '', + items: [{ + label: 'Quick guides', + type: 'group', + children: [ + { + label: 'Quick guides', + type: 'group', + children: [ + { + type: 'internal-link', + id: 'document-capabilities', + label: 'Document Capabilities', + args: { + path: '/quick-guides/document/working-with-hashes.md', + }, + }, + ] + } + ] + }], + }), +})) + jest.mock('uiSrc/slices/analytics/dbAnalysis', () => ({ ...jest.requireActual('uiSrc/slices/analytics/dbAnalysis'), dbAnalysisSelector: jest.fn().mockReturnValue({ @@ -389,4 +425,62 @@ describe('Recommendations', () => { expect(screen.queryByTestId('bigSets-redis-stack-link')).toBeInTheDocument() expect(screen.queryByTestId('bigSets-redis-stack-link')).toHaveAttribute('href', 'https://redis.io/docs/stack/') }) + + it('should render go to tutorial button', () => { + (dbAnalysisSelector as jest.Mock).mockImplementation(() => ({ + ...mockdbAnalysisSelector, + data: { + recommendations: [{ name: 'bigHashes' }] + } + })) + + render() + + expect(screen.getByTestId('bigHashes-to-tutorial-btn')).toBeInTheDocument() + }) + + it('should call proper history push after click go to tutorial button', () => { + const sendEventTelemetryMock = jest.fn() + sendEventTelemetry.mockImplementation(() => sendEventTelemetryMock); + + (dbAnalysisSelector as jest.Mock).mockImplementation(() => ({ + ...mockdbAnalysisSelector, + data: { + recommendations: [{ name: 'bigHashes' }] + } + })) + + render() + + expect(screen.getByTestId('bigHashes-to-tutorial-btn')).toBeInTheDocument() + fireEvent.click(screen.getByTestId('bigHashes-to-tutorial-btn')) + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.DATABASE_RECOMMENDATIONS_TUTORIAL_CLICKED, + eventData: { + databaseId: INSTANCE_ID_MOCK, + recommendation: 'bigHashes', + } + }) + sendEventTelemetry.mockRestore() + }) + + it('should call proper telemetry after click go to tutorial button', () => { + const pushMock = jest.fn() + reactRouterDom.useHistory = jest.fn().mockReturnValue({ push: pushMock }); + + (dbAnalysisSelector as jest.Mock).mockImplementation(() => ({ + ...mockdbAnalysisSelector, + data: { + recommendations: [{ name: 'bigHashes' }] + } + })) + + render() + + expect(screen.getByTestId('bigHashes-to-tutorial-btn')).toBeInTheDocument() + fireEvent.click(screen.getByTestId('bigHashes-to-tutorial-btn')) + + expect(pushMock).toBeCalledWith('/instanceId/workbench?path=quick-guides/0/0/0') + }) }) diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.tsx b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.tsx index 0692a494b2..5e7ce354e9 100644 --- a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.tsx +++ b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/Recommendations.tsx @@ -1,38 +1,48 @@ import React, { useContext } from 'react' -import { useSelector } from 'react-redux' -import { useParams } from 'react-router-dom' +import { useDispatch, useSelector } from 'react-redux' +import { useParams, useHistory } from 'react-router-dom' import { isNull } from 'lodash' import { EuiAccordion, - EuiPanel, - EuiText, - EuiToolTip, + EuiButton, EuiFlexGroup, EuiFlexItem, EuiIcon, EuiLink, + EuiPanel, + EuiText, + EuiToolTip, } from '@elastic/eui' import { ThemeContext } from 'uiSrc/contexts/themeContext' import { RecommendationVoting } from 'uiSrc/pages/databaseAnalysis/components' import { dbAnalysisSelector } from 'uiSrc/slices/analytics/dbAnalysis' import recommendationsContent from 'uiSrc/constants/dbAnalysisRecommendations.json' -import { Theme } from 'uiSrc/constants' +import { Pages, Theme } from 'uiSrc/constants' import { Vote } from 'uiSrc/constants/recommendations' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import RediStackDarkMin from 'uiSrc/assets/img/modules/redistack/RediStackDark-min.svg' import RediStackLightMin from 'uiSrc/assets/img/modules/redistack/RediStackLight-min.svg' import NoRecommendationsDark from 'uiSrc/assets/img/icons/recommendations_dark.svg' import NoRecommendationsLight from 'uiSrc/assets/img/icons/recommendations_light.svg' +import { workbenchGuidesSelector } from 'uiSrc/slices/workbench/wb-guides' +import { workbenchTutorialsSelector } from 'uiSrc/slices/workbench/wb-tutorials' +import { findMarkdownPathByPath } from 'uiSrc/pages/workbench/components/enablement-area/EnablementArea/utils' +import { EAManifestFirstKey } from 'uiSrc/pages/workbench/components/enablement-area/EnablementArea/constants' +import { resetWorkbenchEASearch, setWorkbenchEAMinimized } from 'uiSrc/slices/app/context' +import { renderBadges, renderBadgesLegend, renderContent, sortRecommendations } from './utils' -import { renderContent, renderBadges, renderBadgesLegend, sortRecommendations } from './utils' import styles from './styles.module.scss' const Recommendations = () => { const { data, loading } = useSelector(dbAnalysisSelector) + const { items: guides } = useSelector(workbenchGuidesSelector) + const { items: tutorials } = useSelector(workbenchTutorialsSelector) const { recommendations = [] } = data ?? {} const { theme } = useContext(ThemeContext) const { instanceId } = useParams<{ instanceId: string }>() + const history = useHistory() + const dispatch = useDispatch() const handleToggle = (isOpen: boolean, id: string) => sendEventTelemetry({ event: isOpen @@ -44,6 +54,32 @@ const Recommendations = () => { } }) + const goToTutorial = (mdPath: string, id: string) => { + sendEventTelemetry({ + event: TelemetryEvent.DATABASE_RECOMMENDATIONS_TUTORIAL_CLICKED, + eventData: { + databaseId: instanceId, + recommendation: id, + } + }) + + dispatch(setWorkbenchEAMinimized(false)) + const quickGuidesPath = findMarkdownPathByPath(guides, mdPath) + if (quickGuidesPath) { + history.push(`${Pages.workbench(instanceId)}?path=${EAManifestFirstKey.GUIDES}/${quickGuidesPath}`) + return + } + + const tutorialsPath = findMarkdownPathByPath(tutorials, mdPath) + if (tutorialsPath) { + history.push(`${Pages.workbench(instanceId)}?path=${EAManifestFirstKey.TUTORIALS}/${tutorialsPath}`) + return + } + + dispatch(resetWorkbenchEASearch()) + history.push(Pages.workbench(instanceId)) + } + const onRedisStackClick = (event: React.MouseEvent) => event.stopPropagation() const renderButtonContent = (redisStack: boolean, title: string, badges: string[], id: string) => ( @@ -117,7 +153,8 @@ const Recommendations = () => { title = '', content = '', badges = [], - redisStack = false + redisStack = false, + tutorial, } = recommendationsContent[name as keyof typeof recommendationsContent] return ( @@ -137,7 +174,20 @@ const Recommendations = () => { {renderContent(content, params)} - +
+ + {tutorial && ( + goToTutorial(tutorial, id)} + data-testid={`${id}-to-tutorial-btn`} + > + To Tutorial + + )} +
) })} diff --git a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/styles.module.scss b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/styles.module.scss index 88a4cf30c8..d8c5a73a8c 100644 --- a/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/styles.module.scss +++ b/redisinsight/ui/src/pages/databaseAnalysis/components/recommendations-view/styles.module.scss @@ -12,7 +12,7 @@ .badgeWrapper { margin-right: 0; } - + .badge { margin: 0 0 0 24px; } @@ -21,11 +21,11 @@ margin-right: 14px; } } - + .badgeIcon { fill: var(--badgeIconColor); } - + .badgeWrapper { display: flex; align-items: center; @@ -46,7 +46,7 @@ margin-right: 16px; animation: none !important; } - + .redisStackIcon { width: 20px; height: 20px; @@ -109,6 +109,16 @@ padding: 18px 0 0 !important; } + .footer { + display: flex; + align-items: center; + justify-content: space-between; + + padding-top: 15px; + margin-top: 15px !important; + border-top: 1px solid var(--separatorColor); + } + :global(.euiAccordion__triggerWrapper) { background-color: transparent; } diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts index bde405ec63..d21090e3d9 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts @@ -130,3 +130,29 @@ export const getParentByManifest = ( return parent ?? null } + +export const findMarkdownPathByPath = (manifest: IEnablementAreaItem[], markdownPath: string) => { + const findPath = (data: IEnablementAreaItem[], mdPath: string, path: number[] = []): Nullable => { + for (let i = 0; i < data.length; i++) { + const obj = data[i] + const currentPath = [...path, i] + + if (obj.type === EnablementAreaComponent.InternalLink && obj.args?.path === mdPath) { + return currentPath + } + + if (obj.type === EnablementAreaComponent.Group && obj.children) { + const result = findPath(obj.children, mdPath, currentPath) + + if (result) { + return result + } + } + } + + return null + } + + const result = findPath(manifest, markdownPath) + return result ? result.join('/') : null +} diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts index 777ada534c..ad54551405 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts @@ -1,5 +1,6 @@ import { ApiEndpoints, MOCK_GUIDES_ITEMS } from 'uiSrc/constants' import { + findMarkdownPathByPath, getFileInfo, getGroupPath, getMarkdownPathByManifest, @@ -207,3 +208,21 @@ describe('getParentByManifest', () => { } ) }) + +const findMarkdownPathByPathTests = [ + { input: [MOCK_GUIDES_ITEMS, '/static/workbench/quick-guides/document/learn-more.md'], expected: '0/0' }, + { input: [MOCK_GUIDES_ITEMS, 'quick-guides/working-with-hash.html'], expected: '0/2' }, + { input: [MOCK_GUIDES_ITEMS, 'quick-guides/document-capabilities.html'], expected: '1' }, + { input: [MOCK_GUIDES_ITEMS, 'quick-guides'], expected: null }, +] + +describe('findMarkdownPathByPath', () => { + test.each(findMarkdownPathByPathTests)( + '%j', + ({ input, expected }) => { + // @ts-ignore + const result = findMarkdownPathByPath(...input) + expect(result).toEqual(expected) + } + ) +}) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.spec.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.spec.tsx index ad44a9d8a0..eb20f5d2c0 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.spec.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.spec.tsx @@ -2,8 +2,6 @@ import React from 'react' import { cloneDeep } from 'lodash' import { instance, mock } from 'ts-mockito' import { cleanup, clearStoreActions, mockedStore, render } from 'uiSrc/utils/test-utils' -import { getWBGuides } from 'uiSrc/slices/workbench/wb-guides' -import { getWBTutorials } from 'uiSrc/slices/workbench/wb-tutorials' import { getWBCustomTutorials } from 'uiSrc/slices/workbench/wb-custom-tutorials' import EnablementAreaWrapper, { Props } from './EnablementAreaWrapper' @@ -38,8 +36,8 @@ jest.mock('uiSrc/slices/workbench/wb-tutorials', () => { }) describe('EnablementAreaWrapper', () => { - it('should render and call getWBGuides and getWBTutorials actions', () => { - const expectedActions = [getWBGuides(), getWBTutorials(), getWBCustomTutorials()] + it('should render and call proper actions on mount', () => { + const expectedActions = [getWBCustomTutorials()] expect(render()).toBeTruthy() expect(clearStoreActions(store.getActions().slice(0, expectedActions.length))).toEqual( diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.tsx index 94125142d1..1e41faf942 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementAreaWrapper.tsx @@ -7,8 +7,8 @@ import { useDispatch, useSelector } from 'react-redux' import { useParams } from 'react-router-dom' import { CodeButtonParams, ExecuteButtonMode } from 'uiSrc/pages/workbench/components/enablement-area/interfaces' import { IInternalPage } from 'uiSrc/pages/workbench/contexts/enablementAreaContext' -import { fetchGuides, workbenchGuidesSelector } from 'uiSrc/slices/workbench/wb-guides' -import { fetchTutorials, workbenchTutorialsSelector } from 'uiSrc/slices/workbench/wb-tutorials' +import { workbenchGuidesSelector } from 'uiSrc/slices/workbench/wb-guides' +import { workbenchTutorialsSelector } from 'uiSrc/slices/workbench/wb-tutorials' import { fetchCustomTutorials, workbenchCustomTutorialsSelector } from 'uiSrc/slices/workbench/wb-custom-tutorials' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' @@ -40,8 +40,6 @@ const EnablementAreaWrapper = (props: Props) => { const dispatch = useDispatch() useEffect(() => { - dispatch(fetchGuides()) - dispatch(fetchTutorials()) dispatch(fetchCustomTutorials()) }, []) diff --git a/redisinsight/ui/src/telemetry/events.ts b/redisinsight/ui/src/telemetry/events.ts index 1c583230b6..9dcf8af0b4 100644 --- a/redisinsight/ui/src/telemetry/events.ts +++ b/redisinsight/ui/src/telemetry/events.ts @@ -208,6 +208,7 @@ export enum TelemetryEvent { DATABASE_ANALYSIS_RECOMMENDATIONS_EXPANDED = 'DATABASE_ANALYSIS_RECOMMENDATIONS_EXPANDED', DATABASE_ANALYSIS_RECOMMENDATIONS_COLLAPSED = 'DATABASE_ANALYSIS_RECOMMENDATIONS_COLLAPSED', DATABASE_ANALYSIS_RECOMMENDATIONS_VOTED = 'DATABASE_ANALYSIS_RECOMMENDATIONS_VOTED', + DATABASE_RECOMMENDATIONS_TUTORIAL_CLICKED = 'DATABASE_RECOMMENDATIONS_TUTORIAL_CLICKED', USER_SURVEY_LINK_CLICKED = 'USER_SURVEY_LINK_CLICKED', From 6bda90f76476a916957688e4c5ce532c81203dab Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Tue, 21 Mar 2023 17:50:29 +0100 Subject: [PATCH 002/106] add test for guides and tutorials link in recommendations --- tests/e2e/pageObjects/browser-page.ts | 2 +- .../e2e/pageObjects/memory-efficiency-page.ts | 11 ++++++ tests/e2e/pageObjects/workbench-page.ts | 13 +++++-- .../memory-efficiency/recommendations.e2e.ts | 34 +++++++++++++++++-- 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/tests/e2e/pageObjects/browser-page.ts b/tests/e2e/pageObjects/browser-page.ts index 2ac3e231f9..252258c202 100644 --- a/tests/e2e/pageObjects/browser-page.ts +++ b/tests/e2e/pageObjects/browser-page.ts @@ -365,9 +365,9 @@ export class BrowserPage { /** * Adding a new ZSet key * @param keyName The name of the key + * @param scores The score of the key member * @param TTL The Time to live value of the key * @param members The key members - * @param scores The score of the key member */ async addZSetKey(keyName: string, scores = ' ', TTL = ' ', members = ' '): Promise { await common.waitForElementNotVisible(this.progressLine); diff --git a/tests/e2e/pageObjects/memory-efficiency-page.ts b/tests/e2e/pageObjects/memory-efficiency-page.ts index fa7622d889..614df8f284 100644 --- a/tests/e2e/pageObjects/memory-efficiency-page.ts +++ b/tests/e2e/pageObjects/memory-efficiency-page.ts @@ -11,6 +11,7 @@ export class MemoryEfficiencyPage { cssCodeChangesLabel = '[data-testid=code_changes]'; cssConfigurationChangesLabel = '[data-testid=configuration_changes]'; cssReadMoreLink = '[data-testid=read-more-link]'; + cssToTutorialsBtn = '[data-testid=RTS-to-tutorial-btn]'; // BUTTONS newReportBtn = Selector('[data-testid=start-database-analysis-btn]'); expandArrowBtn = Selector('[data-testid^=expand-arrow-]'); @@ -69,4 +70,14 @@ export class MemoryEfficiencyPage { usefulVoteBtn = Selector('[data-testid=useful-vote-btn]').nth(0); notUsefulVoteBtn = Selector('[data-testid=not-useful-vote-btn]').nth(0); recommendationsFeedbackBtn = Selector('[data-testid=recommendation-feedback-btn]'); + toTutorialsBtn = Selector('[data-testid=RTS-to-tutorial-btn]'); + rtsAccordeon = Selector('[data-testid=RTS-accordion]'); + + /** + * Find recommendation selector by name + * @param name A recommendation name + */ + async getRecommendationByName(name: string): Promise { + return Selector('div').withExactText(name).parent('[data-testid=RTS-accordion]').parent(); + } } diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index bfc78ef5fe..0de1251979 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -232,24 +232,31 @@ export class WorkbenchPage { await t.expect(actualCommandResult).contains(result, 'Actual command result is not equal to executed'); } /** - * get selector with tutorial name + * Get selector with tutorial name * @param tutorialName name of the uploaded tutorial */ async getAccordionButtonWithName(tutorialName: string): Promise { return Selector(`[data-testid=accordion-button-${tutorialName}]`); } /** - * get internal tutorial link with .md name + * Get internal tutorial link with .md name * @param internalLink name of the .md file */ async getInternalLinkWithManifest(internalLink: string): Promise { return Selector(`[data-testid="internal-link-${internalLink}.md"]`); } /** - * get internal tutorial link without .md name + * Get internal tutorial link without .md name * @param internalLink name of the label */ async getInternalLinkWithoutManifest(internalLink: string): Promise { return Selector(`[data-testid="internal-link-${internalLink}"]`); } + /** + * Find tutorial selector by name + * @param name A tutorial name + */ + async getTutorialByName(name: string): Promise { + return Selector('div').withText(name); + } } diff --git a/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts index fbb04e8eac..9358c6de76 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts @@ -1,4 +1,5 @@ -import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, CliPage, AddRedisDatabasePage } from '../../../pageObjects'; +import { Selector } from 'testcafe'; +import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, CliPage, AddRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi, deleteCustomDatabase } from '../../../helpers/database'; import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf'; @@ -15,6 +16,7 @@ const browserPage = new BrowserPage(); const cliPage = new CliPage(); const addRedisDatabasePage = new AddRedisDatabasePage(); const memoryEfficiencyActions = new MemoryEfficiencyActions(); +const workbenchPage = new WorkbenchPage(); const externalPageLink = 'https://docs.redis.com/latest/ri/memory-optimizations/'; let keyName = `recomKey-${common.generateWord(10)}`; @@ -80,7 +82,7 @@ test // Close the window with external link to switch to the application window await t.closeWindow(); }); - // skipped due to inability to receive no recommendations for now +// skipped due to inability to receive no recommendations for now test.skip('No recommendations message', async t => { keyName = `recomKey-${common.generateWord(10)}`; const noRecommendationsMessage = 'No recommendations at the moment, run a new report later to keep up the good work!'; @@ -146,3 +148,31 @@ test // Verify that user can see the popup with link when he votes for “Not useful” await t.expect(memoryEfficiencyPage.recommendationsFeedbackBtn.visible).ok('popup did not appear after voting for not useful'); }); +test + .before(async t => { + await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); + keyName = `recomKey-${common.generateWord(10)}`; + await browserPage.addZSetKey(keyName, '151153320500121', '2147476121', '1511533205001:21'); + // Go to Analysis Tools page + await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(memoryEfficiencyPage.newReportBtn); + // Go to Recommendations tab + await t.click(memoryEfficiencyPage.recommendationsTab); + }) + .after(async t => { + // Clear and delete database + await t.click(myRedisDatabasePage.browserButton); + await browserPage.deleteKeyByName(keyName); + await deleteStandaloneDatabaseApi(ossStandaloneConfig); + })('Verify that user can see the Tutorial opened when clicking on "To Tutorial" for recommendations', async t => { + const optimizeTsRecommendation = await memoryEfficiencyPage.getRecommendationByName('Optimize the use of time series'); + const toTutorialBtn = optimizeTsRecommendation.find(memoryEfficiencyPage.cssToTutorialsBtn); + + // Verify that Optimize the use of time series recommendation displayed + await t.expect(optimizeTsRecommendation.exists).ok('Optimize the use of time series recommendation not displayed'); + // Verify that tutorial opened + await t.click(toTutorialBtn); + await t.expect(workbenchPage.preselectArea.visible).ok('Workbench Enablement area not opened'); + // Verify that REDIS FOR TIME SERIES tutorial expanded + await t.expect((await workbenchPage.getTutorialByName('REDIS FOR TIME SERIES')).visible).ok('REDIS FOR TIME SERIES tutorial is not expanded'); + }); From b836b67efbd28e9deaba3845908e7b0087dd83b1 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Thu, 23 Mar 2023 13:04:13 +0100 Subject: [PATCH 003/106] fix tests --- redisinsight/ui/src/components/config/Config.spec.tsx | 8 +++++++- .../workbench/components/wb-view/WBViewWrapper.spec.tsx | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/redisinsight/ui/src/components/config/Config.spec.tsx b/redisinsight/ui/src/components/config/Config.spec.tsx index b673225065..b7134bd176 100644 --- a/redisinsight/ui/src/components/config/Config.spec.tsx +++ b/redisinsight/ui/src/components/config/Config.spec.tsx @@ -15,6 +15,8 @@ import { appServerInfoSelector, getServerInfo } from 'uiSrc/slices/app/info' import { processCliClient } from 'uiSrc/slices/cli/cli-settings' import { getRedisCommands } from 'uiSrc/slices/app/redis-commands' import { ONBOARDING_FEATURES } from 'uiSrc/components/onboarding-features' +import { getWBGuides } from 'uiSrc/slices/workbench/wb-guides' +import { getWBTutorials } from 'uiSrc/slices/workbench/wb-tutorials' import Config from './Config' let store: typeof mockedStore @@ -59,7 +61,9 @@ describe('Config', () => { processCliClient(), getRedisCommands(), getNotifications(), - getUserConfigSettings() + getWBGuides(), + getWBTutorials(), + getUserConfigSettings(), ] expect(store.getActions()).toEqual([...afterRenderActions]) }) @@ -89,6 +93,8 @@ describe('Config', () => { processCliClient(), getRedisCommands(), getNotifications(), + getWBGuides(), + getWBTutorials(), getUserConfigSettings(), setSettingsPopupState(true), ] diff --git a/redisinsight/ui/src/pages/workbench/components/wb-view/WBViewWrapper.spec.tsx b/redisinsight/ui/src/pages/workbench/components/wb-view/WBViewWrapper.spec.tsx index ad37862dce..da02905cca 100644 --- a/redisinsight/ui/src/pages/workbench/components/wb-view/WBViewWrapper.spec.tsx +++ b/redisinsight/ui/src/pages/workbench/components/wb-view/WBViewWrapper.spec.tsx @@ -13,10 +13,11 @@ import { import QueryWrapper from 'uiSrc/components/query' import { Props as QueryProps } from 'uiSrc/components/query/QueryWrapper' import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances' -import { sendWBCommandAction } from 'uiSrc/slices/workbench/wb-results' +import { loadWBHistory, sendWBCommandAction } from 'uiSrc/slices/workbench/wb-results' import { getWBGuides } from 'uiSrc/slices/workbench/wb-guides' import { getWBTutorials } from 'uiSrc/slices/workbench/wb-tutorials' +import { getWBCustomTutorials } from 'uiSrc/slices/workbench/wb-custom-tutorials' import WBViewWrapper from './WBViewWrapper' let store: typeof mockedStore @@ -104,7 +105,7 @@ describe('WBViewWrapper', () => { it('should render with SessionStorage', () => { render() - const expectedActions = [getWBGuides(), getWBTutorials()] + const expectedActions = [getWBCustomTutorials(), loadWBHistory()] expect(clearStoreActions(store.getActions().slice(0, expectedActions.length))).toEqual( clearStoreActions(expectedActions) ) From f52507fc1dfaca9357e2d2972d1f04e578eb0dbd Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Tue, 28 Mar 2023 14:40:24 +0200 Subject: [PATCH 004/106] #RI-4295 - add possibility to delete keys from key list --- .../ui/src/pages/browser/BrowserPage.tsx | 1 + .../browser-left-panel/BrowserLeftPanel.tsx | 10 ++ .../key-details-header/KeyDetailsHeader.tsx | 1 + .../key-details/KeyDetailsWrapper.tsx | 14 +- .../components/key-list/KeyList.spec.tsx | 29 ++- .../browser/components/key-list/KeyList.tsx | 168 ++++++++++++++---- .../components/key-list/styles.module.scss | 25 +++ redisinsight/ui/src/slices/browser/keys.ts | 14 +- .../ui/src/slices/tests/browser/keys.spec.ts | 4 +- 9 files changed, 221 insertions(+), 45 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/BrowserPage.tsx b/redisinsight/ui/src/pages/browser/BrowserPage.tsx index 933e6c95e0..e4d0fa314b 100644 --- a/redisinsight/ui/src/pages/browser/BrowserPage.tsx +++ b/redisinsight/ui/src/pages/browser/BrowserPage.tsx @@ -213,6 +213,7 @@ const BrowserPage = () => { > void + setSelectedKey: (keyName: Nullable) => void handleAddKeyPanel: (value: boolean) => void handleBulkActionsPanel: (value: boolean) => void handleCreateIndexPanel: (value: boolean) => void @@ -35,6 +38,7 @@ export interface Props { const BrowserLeftPanel = (props: Props) => { const { selectKey, + setSelectedKey, handleAddKeyPanel, handleBulkActionsPanel, handleCreateIndexPanel, @@ -99,6 +103,11 @@ const BrowserLeftPanel = (props: Props) => { keyListRef.current?.handleLoadMoreItems?.(config) } + const onDeleteKey = useCallback( + () => setSelectedKey(null), + [], + ) + return (
{ scrollTopPosition={scrollTopPosition} loadMoreItems={loadMoreItems} selectKey={selectKey} + onDelete={onDeleteKey} /> )} {viewType === KeyViewType.Tree && ( diff --git a/redisinsight/ui/src/pages/browser/components/key-details-header/KeyDetailsHeader.tsx b/redisinsight/ui/src/pages/browser/components/key-details-header/KeyDetailsHeader.tsx index 22a4841079..2b0efc952e 100644 --- a/redisinsight/ui/src/pages/browser/components/key-details-header/KeyDetailsHeader.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-details-header/KeyDetailsHeader.tsx @@ -175,6 +175,7 @@ const KeyDetailsHeader = ({ ), eventData: { databaseId: instanceId, + source: 'keyValue', keyType: type } }) diff --git a/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx b/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx index 36e7897506..60c22765ae 100644 --- a/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx @@ -81,14 +81,16 @@ const KeyDetailsWrapper = (props: Props) => { }, [keyName]) const handleDeleteKey = (key: RedisResponseBuffer, type: string) => { - if (type === KeyTypes.String) { - dispatch(deleteKeyAction(key, () => { - dispatch(resetStringValue()) + dispatch(deleteKeyAction(key, + { + source: 'keyValue' + }, + () => { + if (type === KeyTypes.String) { + dispatch(resetStringValue()) + } onRemoveKey() })) - return - } - dispatch(deleteKeyAction(key, onRemoveKey)) } const handleRefreshKey = (key: RedisResponseBuffer, type: KeyTypes | ModulesKeyTypes) => { diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx index 2ef3c0803f..598131120b 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx @@ -1,8 +1,9 @@ import React from 'react' import { cloneDeep } from 'lodash' -import { render, waitFor } from 'uiSrc/utils/test-utils' +import { fireEvent } from '@testing-library/react' +import { cleanup, mockedStore, render, waitFor, screen, clearStoreActions } from 'uiSrc/utils/test-utils' import { KeysStoreData, KeyViewType, SearchMode } from 'uiSrc/slices/interfaces/keys' -import { keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' +import { deleteKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' import { apiService } from 'uiSrc/services' import KeyList from './KeyList' @@ -15,6 +16,7 @@ const propsMock = { ttl: -1, size: 100, length: 100, + nameString: 'key1' }, { name: 'key2', @@ -56,6 +58,13 @@ jest.mock('uiSrc/slices/browser/keys', () => ({ }), })) +let store: typeof mockedStore +beforeEach(() => { + cleanup() + store = cloneDeep(mockedStore) + store.clearActions() +}) + // afterEach(() => { // setLastBatchKeys.mockRestore() // }) @@ -175,4 +184,20 @@ describe('KeyList', () => { expect(queryAllByTestId(/type-loading/).length).toEqual(propsMock.keysState.keys.length) expect(queryAllByTestId(/size-loading/).length).toEqual(propsMock.keysState.keys.length) }) + + it('should call proper action after click on delete', async () => { + const { container } = render() + + fireEvent.mouseOver(container.querySelectorAll( + '.ReactVirtualized__Table__row[role="row"]' + )[0]) + + fireEvent.click(screen.getByTestId('delete-key-btn-key1')) + fireEvent.click(screen.getByTestId('submit-delete-key')) + + const expectedActions = [ + deleteKey() + ] + expect(clearStoreActions(store.getActions().slice(-1))).toEqual(clearStoreActions(expectedActions)) + }) }) diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx index 730287cbd3..ad3cb143ec 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx @@ -9,7 +9,11 @@ import { EuiToolTip, EuiTextColor, EuiLoadingContent, + EuiPopover, + EuiButton, + EuiButtonIcon, EuiSpacer, } from '@elastic/eui' +import { CellMeasurerCache } from 'react-virtualized' import { formatBytes, truncateNumberToDuration, @@ -20,6 +24,7 @@ import { bufferToString, bufferFormatRangeItems, Nullable, + Maybe, } from 'uiSrc/utils' import { NoKeysToDisplayText, @@ -29,6 +34,7 @@ import { NoSelectedIndexText, } from 'uiSrc/constants/texts' import { + deleteKeyAction, fetchKeysMetadata, keysDataSelector, keysSelector, @@ -46,12 +52,15 @@ import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api' import { KeysStoreData, SearchMode } from 'uiSrc/slices/interfaces/keys' import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable' import { ITableColumn } from 'uiSrc/components/virtual-table/interfaces' -import { Pages, TableCellAlignment, TableCellTextAlignment } from 'uiSrc/constants' +import { KeyTypes, ModulesKeyTypes, Pages, TableCellAlignment, TableCellTextAlignment } from 'uiSrc/constants' import { IKeyPropTypes } from 'uiSrc/constants/prop-types/keys' import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { redisearchSelector } from 'uiSrc/slices/browser/redisearch' +import { RedisResponseBuffer } from 'uiSrc/slices/interfaces' +import { resetStringValue } from 'uiSrc/slices/browser/string' import { GetKeyInfoResponse } from 'apiSrc/modules/browser/dto' + import styles from './styles.module.scss' export interface Props { @@ -65,11 +74,17 @@ export interface Props { oldKeys: IKeyPropTypes[], { startIndex, stopIndex }: { startIndex: number, stopIndex: number }, ) => void + onDelete: () => void } +const cellCache = new CellMeasurerCache({ + fixedWidth: true, + minHeight: 43, +}) + const KeyList = forwardRef((props: Props, ref) => { let wheelTimer = 0 - const { selectKey, loadMoreItems, loading, keysState, scrollTopPosition, hideFooter } = props + const { selectKey, loadMoreItems, loading, keysState, scrollTopPosition, hideFooter, onDelete } = props const { instanceId = '' } = useParams<{ instanceId: string }>() @@ -81,6 +96,7 @@ const KeyList = forwardRef((props: Props, ref) => { const [, rerender] = useState({}) const [firstDataLoaded, setFirstDataLoaded] = useState(!!keysState.keys.length) + const [deletePopoverIndex, setDeletePopoverIndex] = useState>(undefined) const controller = useRef>(null) const itemsRef = useRef(keysState.keys) @@ -185,10 +201,11 @@ const KeyList = forwardRef((props: Props, ref) => { ) { return } - loadMoreItems?.(itemsRef.current, props) + loadMoreItems?.(itemsRef.current as IKeyPropTypes[], props) } const onWheelSearched = (event: React.WheelEvent) => { + setDeletePopoverIndex(undefined) if ( !loading && (isSearched || isFiltered) @@ -204,6 +221,40 @@ const KeyList = forwardRef((props: Props, ref) => { } } + const handleDeletePopoverOpen = (index: Maybe, type: KeyTypes | ModulesKeyTypes) => { + if (index !== deletePopoverIndex) { + sendEventTelemetry({ + event: getBasedOnViewTypeEvent( + viewType, + TelemetryEvent.BROWSER_KEY_DELETE_CLICKED, + TelemetryEvent.TREE_VIEW_KEY_DELETE_CLICKED + ), + eventData: { + databaseId: instanceId, + keyType: type, + source: 'keyList' + } + }) + } + setDeletePopoverIndex(index !== deletePopoverIndex ? index : undefined) + } + + const handleRemoveKey = (key: RedisResponseBuffer, type: string) => { + dispatch(deleteKeyAction( + key, + { + source: 'keyList' + }, + () => { + setDeletePopoverIndex(undefined) + onDelete() + if (type === KeyTypes.String) { + dispatch(resetStringValue()) + } + } + )) + } + const setScrollTopPosition = useCallback((position: number) => { if (searchMode === SearchMode.Pattern) { dispatch(setBrowserPatternScrollPosition(position)) @@ -212,9 +263,9 @@ const KeyList = forwardRef((props: Props, ref) => { } }, [searchMode]) - const formatItem = useCallback((item: GetKeyInfoResponse): GetKeyInfoResponse => ({ + const formatItem = useCallback((item: GetKeyInfoResponse) => ({ ...item, - nameString: bufferToString(item.name) + nameString: bufferToString(item.name as string) }), []) const onRowsRendered = (startIndex: number, lastIndex: number) => { @@ -228,7 +279,7 @@ const KeyList = forwardRef((props: Props, ref) => { const onRowsRenderedDebounced = debounce(onRowsRendered, 100) - const bufferFormatRows = (startIndex: number, lastIndex: number): GetKeyInfoResponse[] => { + const bufferFormatRows = (startIndex: number, lastIndex: number): IKeyPropTypes[] => { const newItems = bufferFormatRangeItems( itemsRef.current, startIndex, lastIndex, formatItem ) @@ -239,9 +290,9 @@ const KeyList = forwardRef((props: Props, ref) => { const getMetadata = ( startIndex: number, - itemsInit: GetKeyInfoResponse[] = [] + itemsInit: IKeyPropTypes[] = [] ): void => { - const isSomeNotUndefined = ({ type, size, length }: GetKeyInfoResponse) => + const isSomeNotUndefined = ({ type, size, length }: IKeyPropTypes) => !isUndefined(type) || !isUndefined(size) || !isUndefined(length) const firstEmptyItemIndex = findIndex(itemsInit, (item) => !isSomeNotUndefined(item)) @@ -323,19 +374,28 @@ const KeyList = forwardRef((props: Props, ref) => { minWidth: 86, truncateText: true, alignment: TableCellAlignment.Right, - render: (cellData: number, { nameString: name }: GetKeyInfoResponse) => { + render: (cellData: number, { nameString: name }: IKeyPropTypes, _expanded, rowIndex) => { if (isUndefined(cellData)) { return } if (cellData === -1) { return ( - + No limit ) } return ( - +
{ minWidth: 84, alignment: TableCellAlignment.Right, textAlignment: TableCellTextAlignment.Right, - render: (cellData: number, { nameString: name }: GetKeyInfoResponse) => { + render: ( + cellData: number, + { nameString: name, type, name: bufferName }: IKeyPropTypes, + _expanded, + rowIndex + ) => { if (isUndefined(cellData)) { return } @@ -377,23 +442,65 @@ const KeyList = forwardRef((props: Props, ref) => { ) } return ( - -
- - {formatBytes(cellData, 3)} - - )} - > - <>{formatBytes(cellData, 0)} - -
-
+ <> + +
+ + {formatBytes(cellData, 3)} + + )} + > + <>{formatBytes(cellData, 0)} + +
+
+ setDeletePopoverIndex(undefined)} + panelPaddingSize="l" + panelClassName={styles.deletePopover} + button={( + handleDeletePopoverOpen(rowIndex, type)} + aria-label="Delete Key" + data-testid={`delete-key-btn-${name}`} + /> + )} + onClick={(e) => e.stopPropagation()} + > + <> + +

{formatLongName(name)}

+ will be deleted. +
+ + handleRemoveKey(bufferName, type)} + data-testid="submit-delete-key" + > + Delete + + +
+ ) } }, @@ -407,11 +514,12 @@ const KeyList = forwardRef((props: Props, ref) => { rowHeight={43} threshold={50} columns={columns} + cellCache={cellCache} loadMoreItems={onLoadMoreItems} onWheel={onWheelSearched} loading={loading || !firstDataLoaded} items={itemsRef.current} - totalItemsCount={keysState.total ? keysState.total : Infinity} + totalItemsCount={keysState.total ?? Infinity} scanned={isSearched || isFiltered ? keysState.scanned : 0} noItemsMessage={getNoItemsMessage()} selectedKey={selectedKey.data} diff --git a/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss b/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss index 9f903df1dd..36f23ab048 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss @@ -13,8 +13,33 @@ background-color: var(--euiColorEmptyShade); } +.deletePopover { + max-width: 400px !important; +} + .table { height: 100%; + + :global { + .ReactVirtualized__Table__row { + .ReactVirtualized__Table__rowColumn { + .hideOnHover { + display: block; + &.hide { display: none !important; } + } + .showOnHover { + display: none; + &.show { display: block !important; }} + } + + &:hover { + .ReactVirtualized__Table__rowColumn { + .hideOnHover { display: none; } + .showOnHover { display: block; } + } + } + } + } } :global(.show-cli) .table { diff --git a/redisinsight/ui/src/slices/browser/keys.ts b/redisinsight/ui/src/slices/browser/keys.ts index caabd3ddaf..8a41677afe 100644 --- a/redisinsight/ui/src/slices/browser/keys.ts +++ b/redisinsight/ui/src/slices/browser/keys.ts @@ -6,7 +6,6 @@ import { ApiEndpoints, BrowserStorageItem, KeyTypes, - KeyValueCompressor, KeyValueFormat, EndpointBasedOnKeyType, ENDPOINT_BASED_ON_KEY_TYPE, @@ -434,7 +433,6 @@ export const { deletePatternKeyFromList, editPatternKeyFromList, editPatternKeyTTLFromList, - updateSelectedKeyLength, setPatternSearchMatch, setFilter, changeKeyViewType, @@ -844,7 +842,11 @@ export function addStreamKey( } // Asynchronous thunk action -export function deleteKeyAction(key: RedisResponseBuffer, onSuccessAction?: () => void) { +export function deleteKeyAction( + key: RedisResponseBuffer, + telemetryData: Record = {}, + onSuccessAction?: () => void +) { return async (dispatch: AppDispatch, stateInit: () => RootState) => { dispatch(deleteKey()) @@ -871,9 +873,11 @@ export function deleteKeyAction(key: RedisResponseBuffer, onSuccessAction?: () = ), eventData: { databaseId: state.connections.instances?.connectedInstance?.id, - numberOfDeletedKeys: 1 + numberOfDeletedKeys: 1, + ...telemetryData } }) + console.log(sendEventTelemetry) dispatch(deleteKeySuccess()) dispatch(deleteKeyFromList(key)) onSuccessAction?.() @@ -971,7 +975,7 @@ export function editKeyTTL(key: RedisResponseBuffer, ttl: number) { // Asynchronous thunk action export function fetchKeysMetadata( keys: RedisString[], - signal: AbortSignal, + signal?: AbortSignal, onSuccessAction?: (data: GetKeyInfoResponse[]) => void, onFailAction?: () => void ) { diff --git a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts index 7ed96c6416..b91b5ac6c3 100644 --- a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts @@ -1,6 +1,6 @@ import { cloneDeep } from 'lodash' import { AxiosError } from 'axios' -import { KeyTypes, KeyValueCompressor, KeyValueFormat } from 'uiSrc/constants' +import { KeyTypes, KeyValueFormat } from 'uiSrc/constants' import { apiService } from 'uiSrc/services' import { parseKeysListResponse, stringToBuffer, UTF8ToBuffer } from 'uiSrc/utils' import { cleanup, initialStateDefault, mockedStore } from 'uiSrc/utils/test-utils' @@ -1410,7 +1410,7 @@ describe('keys slice', () => { it('call both deleteKey, deleteKeySuccess and deletePatternKeyFromList when delete is successed', async () => { // Arrange const data = { - name: 'string', + name: stringToBuffer('string'), type: KeyTypes.String, ttl: -1, size: 10, From ef6082b87387906be8c4826babfa6ec20735e0b0 Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Thu, 30 Mar 2023 16:15:56 +0800 Subject: [PATCH 005/106] #RI-4315 - Investigate auto-updater for Apple Store build --- .circleci/config.yml | 5 +++-- electron-builder-mas.js | 9 +++++++++ electron-builder.json | 6 +----- package.json | 4 ++-- yarn.lock | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 electron-builder-mas.js diff --git a/.circleci/config.yml b/.circleci/config.yml index 442a578d71..abdb148b78 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -598,17 +598,18 @@ jobs: if [ << parameters.env >> == 'prod' ]; then yarn package:prod + yarn package:mas rm -rf release/mac exit 0; fi if [ << parameters.env >> == 'stage' ]; then - UPGRADES_LINK=$UPGRADES_LINK_STAGE SEGMENT_WRITE_KEY=$SEGMENT_WRITE_KEY_STAGE yarn package:stage + UPGRADES_LINK=$UPGRADES_LINK_STAGE SEGMENT_WRITE_KEY=$SEGMENT_WRITE_KEY_STAGE yarn package:stage && yarn package:mas rm -rf release/mac exit 0; fi - UPGRADES_LINK='' SEGMENT_WRITE_KEY='' yarn package:stage + UPGRADES_LINK='' SEGMENT_WRITE_KEY='' yarn package:stage && yarn package:mas rm -rf release/mac no_output_timeout: 60m diff --git a/electron-builder-mas.js b/electron-builder-mas.js new file mode 100644 index 0000000000..f594d4df92 --- /dev/null +++ b/electron-builder-mas.js @@ -0,0 +1,9 @@ +const electronBuilder = require('./electron-builder.json'); + +const config = { + ...electronBuilder, + appId: 'com.redis.RedisInsight', + productName: 'RedisInsight', +}; + +module.exports = config; diff --git a/electron-builder.json b/electron-builder.json index cebac18e60..18bd139feb 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -28,16 +28,12 @@ { "target": "zip", "arch": ["x64", "arm64"] - }, - { - "target": "mas", - "arch": ["universal"] } ], "type": "distribution", "hardenedRuntime": true, "darkModeSupport": true, - "bundleVersion": "1", + "bundleVersion": "2", "icon": "resources/icon.icns", "artifactName": "${productName}-${os}-${arch}.${ext}", "entitlements": "resources/entitlements.mac.plist", diff --git a/package.json b/package.json index d5af81f6d1..5eb7ebb1a8 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "package": "yarn package:dev", "package:prod": "yarn build:prod && electron-builder build -p never", "package:stage": "yarn build:stage && electron-builder build -p never", - "build:mas": "electron-builder build -p never -m mas:universal", - "build:mas:dev": "electron-builder build -p never -m mas-dev:universal", + "package:mas": "electron-builder build -p never -m mas:universal -c ./electron-builder-mas.js", + "package:mas:dev": "electron-builder build -p never -m mas-dev:universal -c ./electron-builder-mas.js", "package:dev": "yarn build && cross-env DEBUG=electron-builder electron-builder build -p never", "package:win": "yarn build:prod && electron-builder build --win --x64 -p never", "package:mac": "yarn build:prod && electron-builder build --mac -p never", diff --git a/yarn.lock b/yarn.lock index ae1fcdac48..fe43b4764e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11495,7 +11495,7 @@ minimist@1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== From 516a1a97358f5b44d11e33ed977186349028f841 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 30 Mar 2023 12:43:31 +0300 Subject: [PATCH 006/106] #RI-4149 Enhance syntax in auto-completion --- .../CliAutocomplete/CliAutocomplete.spec.tsx | 6 +- .../components/cli-input/CliInputWrapper.tsx | 2 +- .../CommandHelperWrapper.spec.tsx | 27 +- .../CliSearchOutput.spec.tsx | 4 +- .../constants/mocks/mock-redis-commands.ts | 1038 ++++++++++++----- redisinsight/ui/src/utils/commands.ts | 155 ++- .../ui/src/utils/tests/commands.spec.ts | 71 +- 7 files changed, 915 insertions(+), 388 deletions(-) diff --git a/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx b/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx index 7937901f18..38b5271b86 100644 --- a/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx +++ b/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx @@ -22,19 +22,19 @@ const scanArgs = [ type: 'integer', }, { - command: 'MATCH', + token: 'MATCH', name: 'pattern', type: 'pattern', optional: true, }, { - command: 'COUNT', + token: 'COUNT', name: 'count', type: 'integer', optional: true, }, { - command: 'TYPE', + token: 'TYPE', name: 'type', type: 'string', optional: true, diff --git a/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx b/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx index f01292e96a..e6c93b2842 100644 --- a/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx +++ b/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx @@ -26,7 +26,7 @@ const CliInputWrapper = (props: Props) => { const firstCommandMatch = firstCommand.toUpperCase() const secondCommandMatch = `${firstCommandMatch} ${secondCommand ? secondCommand.toUpperCase() : null}` - const matchedCmd = ALL_REDIS_COMMANDS[firstCommandMatch] || ALL_REDIS_COMMANDS[secondCommandMatch] + const matchedCmd = ALL_REDIS_COMMANDS[secondCommandMatch] || ALL_REDIS_COMMANDS[firstCommandMatch] const commandName = !isUndefined(ALL_REDIS_COMMANDS[secondCommandMatch]) ? `${firstCommand} ${secondCommand}` : firstCommand diff --git a/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx b/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx index 94811e5bba..3dea4ac2d3 100644 --- a/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx +++ b/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx @@ -51,9 +51,8 @@ const mockedCommands: IMockedCommands[] = [ { matchedCommand: 'xgroup', argStr: - 'XGROUP [CREATE key groupname ID|$ [MKSTREAM]] [SETID key groupname ID|$] [DESTROY key groupname] [CREATECONSUMER key groupname consumername] [DELCONSUMER key groupname consumername]', - argListText: - 'Arguments:Optional[CREATE key groupname id [MKSTREAM]]Optional[SETID key groupname id]Optional[DESTROY key groupname]Optional[CREATECONSUMER key groupname consumername]Optional[DELCONSUMER key groupname consumername]', + 'XGROUP', + argListText: '', }, { matchedCommand: 'hset', @@ -68,28 +67,28 @@ const mockedCommands: IMockedCommands[] = [ { matchedCommand: 'bitfield', argStr: - 'BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]', + 'BITFIELD key [GET encoding offset | [OVERFLOW ] [GET encoding offset | [OVERFLOW ] ...]]', argListText: - 'Arguments:RequiredkeyOptional[GET type offset]Optional[SET type offset value]Optional[INCRBY type offset increment]Optional[OVERFLOW WRAP|SAT|FAIL]', + 'Arguments:RequiredkeyMultiple[GET encoding offset | [OVERFLOW ] ]', }, { matchedCommand: 'client kill', argStr: - 'CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [LADDR ip:port] [SKIPME yes/no]', + 'CLIENT KILL ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', argListText: - 'Arguments:Optional[ip:port]Optional[ID client-id]Optional[TYPE normal|master|slave|pubsub]Optional[USER username]Optional[ADDR ip:port]Optional[LADDR ip:port]Optional[SKIPME yes/no]', + 'Arguments:Required] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', }, { matchedCommand: 'geoadd', - argStr: 'GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]', + argStr: 'GEOADD key [NX | XX] [CH] longitude latitude member [longitude latitude member ...]', argListText: - 'Arguments:RequiredkeyOptional[condition]Optional[change]Multiplelongitude latitude member', + 'Arguments:RequiredkeyOptional[NX | XX]Optional[CH]Multiplelongitude latitude member', }, { matchedCommand: 'zadd', - argStr: 'ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]', + argStr: 'ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]', argListText: - 'Arguments:RequiredkeyOptional[condition]Optional[comparison]Optional[change]Optional[increment]Multiplescore member', + 'Arguments:RequiredkeyOptional[NX | XX]Optional[GT | LT]Optional[CH]Optional[INCR]Multiplescore member', }, ] @@ -127,8 +126,10 @@ describe('CliBodyWrapper', () => { const { unmount } = render() - expect(screen.getByTestId(cliHelperTestId)).toBeInTheDocument() - expect(screen.getByTestId(argsId)).toHaveTextContent(argListText) + if (argListText) { + expect(screen.getByTestId(cliHelperTestId)).toBeInTheDocument() + expect(screen.getByTestId(argsId)).toHaveTextContent(argListText) + } unmount() }) diff --git a/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CliSearchOutput.spec.tsx b/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CliSearchOutput.spec.tsx index 736813b61b..5a3ea97a99 100644 --- a/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CliSearchOutput.spec.tsx +++ b/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CliSearchOutput.spec.tsx @@ -27,11 +27,11 @@ const mockedCommands: IMockedCommands[] = [ }, { matchedCommand: 'GEOADD', - argStr: 'key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]', + argStr: 'key [NX | XX] [CH] longitude latitude member [longitude latitude member ...]', }, { matchedCommand: 'ZADD', - argStr: 'key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]', + argStr: 'key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]', }, { matchedCommand: 'RESET', diff --git a/redisinsight/ui/src/constants/mocks/mock-redis-commands.ts b/redisinsight/ui/src/constants/mocks/mock-redis-commands.ts index 586aad1227..6233fb0115 100644 --- a/redisinsight/ui/src/constants/mocks/mock-redis-commands.ts +++ b/redisinsight/ui/src/constants/mocks/mock-redis-commands.ts @@ -1,426 +1,866 @@ export const MOCK_COMMANDS_SPEC = { SET: { summary: 'Set the string value of a key', + since: '1.0.0', + group: 'string', complexity: 'O(1)', + history: [ + [ + '2.6.12', + 'Added the `EX`, `PX`, `NX` and `XX` options.' + ], + [ + '6.0.0', + 'Added the `KEEPTTL` option.' + ], + [ + '6.2.0', + 'Added the `GET`, `EXAT` and `PXAT` option.' + ], + [ + '7.0.0', + 'Allowed the `NX` and `GET` options to be used together.' + ] + ], + acl_categories: [ + '@write', + '@string', + '@slow' + ], + arity: -3, + key_specs: [ + { + notes: 'RW and ACCESS due to the optional `GET` argument', + begin_search: { + type: 'index', + spec: { + index: 1 + } + }, + find_keys: { + type: 'range', + spec: { + lastkey: 0, + keystep: 1, + limit: 0 + } + }, + RW: true, + access: true, + update: true, + variable_flags: true + } + ], arguments: [ { name: 'key', - type: 'key' + type: 'key', + display_text: 'key', + key_spec_index: 0 }, { name: 'value', - type: 'string' - }, - { - name: 'expiration', - type: 'enum', - enum: [ - 'EX seconds', - 'PX milliseconds', - 'EXAT timestamp', - 'PXAT milliseconds-timestamp', - 'KEEPTTL' - ], - optional: true + type: 'string', + display_text: 'value' }, { name: 'condition', - type: 'enum', - enum: [ - 'NX', - 'XX' - ], - optional: true + type: 'oneof', + since: '2.6.12', + optional: true, + arguments: [ + { + name: 'nx', + type: 'pure-token', + display_text: 'nx', + token: 'NX' + }, + { + name: 'xx', + type: 'pure-token', + display_text: 'xx', + token: 'XX' + } + ] }, { name: 'get', - type: 'enum', - enum: [ - 'GET' - ], + type: 'pure-token', + display_text: 'get', + token: 'GET', + since: '6.2.0', optional: true + }, + { + name: 'expiration', + type: 'oneof', + optional: true, + arguments: [ + { + name: 'seconds', + type: 'integer', + display_text: 'seconds', + token: 'EX', + since: '2.6.12' + }, + { + name: 'milliseconds', + type: 'integer', + display_text: 'milliseconds', + token: 'PX', + since: '2.6.12' + }, + { + name: 'unix-time-seconds', + type: 'unix-time', + display_text: 'unix-time-seconds', + token: 'EXAT', + since: '6.2.0' + }, + { + name: 'unix-time-milliseconds', + type: 'unix-time', + display_text: 'unix-time-milliseconds', + token: 'PXAT', + since: '6.2.0' + }, + { + name: 'keepttl', + type: 'pure-token', + display_text: 'keepttl', + token: 'KEEPTTL', + since: '6.0.0' + } + ] } ], - since: '1.0.0', - group: 'string' + command_flags: [ + 'write', + 'denyoom' + ] }, GET: { summary: 'Get the value of a key', + since: '1.0.0', + group: 'string', complexity: 'O(1)', + acl_categories: [ + '@read', + '@string', + '@fast' + ], + arity: 2, + key_specs: [ + { + begin_search: { + type: 'index', + spec: { + index: 1 + } + }, + find_keys: { + type: 'range', + spec: { + lastkey: 0, + keystep: 1, + limit: 0 + } + }, + RO: true, + access: true + } + ], arguments: [ { name: 'key', - type: 'key' + type: 'key', + display_text: 'key', + key_spec_index: 0 } ], - since: '1.0.0', - group: 'string' + command_flags: [ + 'readonly', + 'fast' + ] }, HSET: { summary: 'Set the string value of a hash field', + since: '2.0.0', + group: 'hash', complexity: 'O(1) for each field/value pair added, so O(N) to add N field/value pairs when the command is called with multiple field/value pairs.', + history: [ + [ + '4.0.0', + 'Accepts multiple `field` and `value` arguments.' + ] + ], + acl_categories: [ + '@write', + '@hash', + '@fast' + ], + arity: -4, + key_specs: [ + { + begin_search: { + type: 'index', + spec: { + index: 1 + } + }, + find_keys: { + type: 'range', + spec: { + lastkey: 0, + keystep: 1, + limit: 0 + } + }, + RW: true, + update: true + } + ], arguments: [ { name: 'key', - type: 'key' + type: 'key', + display_text: 'key', + key_spec_index: 0 }, { - name: [ - 'field', - 'value' - ], - type: [ - 'string', - 'string' - ], - multiple: true + name: 'data', + type: 'block', + multiple: true, + arguments: [ + { + name: 'field', + type: 'string', + display_text: 'field' + }, + { + name: 'value', + type: 'string', + display_text: 'value' + } + ] } ], - since: '2.0.0', - group: 'hash' + command_flags: [ + 'write', + 'denyoom', + 'fast' + ] }, 'CLIENT KILL': { summary: 'Kill the connection of a client', + since: '2.4.0', + group: 'connection', complexity: 'O(N) where N is the number of client connections', - arguments: [ - { - name: 'ip:port', - type: 'string', - optional: true - }, - { - command: 'ID', - name: 'client-id', - type: 'integer', - optional: true - }, - { - command: 'TYPE', - type: 'enum', - enum: [ - 'normal', - 'master', - 'slave', - 'pubsub' - ], - optional: true - }, - { - command: 'USER', - name: 'username', - type: 'string', - optional: true - }, - { - command: 'ADDR', - name: 'ip:port', - type: 'string', - optional: true - }, - { - command: 'LADDR', - name: 'ip:port', - type: 'string', - optional: true - }, - { - command: 'SKIPME', - name: 'yes/no', - type: 'string', - optional: true - } + history: [ + [ + '2.8.12', + 'Added new filter format.' + ], + [ + '2.8.12', + '`ID` option.' + ], + [ + '3.2.0', + 'Added `master` type in for `TYPE` option.' + ], + [ + '5.0.0', + 'Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility.' + ], + [ + '6.2.0', + '`LADDR` option.' + ] ], - since: '2.4.0', - group: 'connection' - }, - XGROUP: { - summary: 'Create, destroy, and manage consumer groups.', - complexity: 'O(1) for all the subcommands, with the exception of the DESTROY subcommand which takes an additional O(M) time in order to delete the M entries inside the consumer group pending entries list (PEL).', + acl_categories: [ + '@admin', + '@slow', + '@dangerous', + '@connection' + ], + arity: -3, arguments: [ { - name: 'create', - type: 'block', - block: [ + name: 'filter', + type: 'oneof', + arguments: [ { - command: 'CREATE', - name: [ - 'key', - 'groupname' - ], - type: [ - 'key', - 'string' - ] + name: 'old-format', + type: 'string', + display_text: 'ip:port', + deprecated_since: '2.8.12' }, { - name: 'id', - type: 'enum', - enum: [ - 'ID', - '$' + name: 'new-format', + type: 'oneof', + multiple: true, + arguments: [ + { + name: 'client-id', + type: 'integer', + display_text: 'client-id', + token: 'ID', + since: '2.8.12', + optional: true + }, + { + name: 'client-type', + type: 'oneof', + token: 'TYPE', + since: '2.8.12', + optional: true, + arguments: [ + { + name: 'normal', + type: 'pure-token', + display_text: 'normal', + token: 'NORMAL' + }, + { + name: 'master', + type: 'pure-token', + display_text: 'master', + token: 'MASTER', + since: '3.2.0' + }, + { + name: 'slave', + type: 'pure-token', + display_text: 'slave', + token: 'SLAVE' + }, + { + name: 'replica', + type: 'pure-token', + display_text: 'replica', + token: 'REPLICA', + since: '5.0.0' + }, + { + name: 'pubsub', + type: 'pure-token', + display_text: 'pubsub', + token: 'PUBSUB' + } + ] + }, + { + name: 'username', + type: 'string', + display_text: 'username', + token: 'USER', + optional: true + }, + { + name: 'addr', + type: 'string', + display_text: 'ip:port', + token: 'ADDR', + optional: true + }, + { + name: 'laddr', + type: 'string', + display_text: 'ip:port', + token: 'LADDR', + since: '6.2.0', + optional: true + }, + { + name: 'skipme', + type: 'oneof', + token: 'SKIPME', + optional: true, + arguments: [ + { + name: 'yes', + type: 'pure-token', + display_text: 'yes', + token: 'YES' + }, + { + name: 'no', + type: 'pure-token', + display_text: 'no', + token: 'NO' + } + ] + } ] - }, - { - command: 'MKSTREAM', - optional: true } - ], - optional: true - }, - { - name: 'setid', - type: 'block', - block: [ - { - command: 'SETID', - name: [ - 'key', - 'groupname' - ], - type: [ - 'key', - 'string' - ] - }, - { - name: 'id', - type: 'enum', - enum: [ - 'ID', - '$' - ] - } - ], - optional: true - }, - { - command: 'DESTROY', - name: [ - 'key', - 'groupname' - ], - type: [ - 'key', - 'string' - ], - optional: true - }, - { - command: 'CREATECONSUMER', - name: [ - 'key', - 'groupname', - 'consumername' - ], - type: [ - 'key', - 'string', - 'string' - ], - optional: true - }, - { - command: 'DELCONSUMER', - name: [ - 'key', - 'groupname', - 'consumername' - ], - type: [ - 'key', - 'string', - 'string' - ], - optional: true + ] } ], + command_flags: [ + 'admin', + 'noscript', + 'loading', + 'stale' + ] + }, + XGROUP: { + summary: 'A container for consumer groups commands', since: '5.0.0', - group: 'stream' + group: 'stream', + complexity: 'Depends on subcommand.', + acl_categories: [ + '@slow' + ], + arity: -2 }, 'ACL SETUSER': { summary: 'Modify or create the rules for a specific ACL user', + since: '6.0.0', + group: 'server', complexity: 'O(N). Where N is the number of rules provided.', + history: [ + [ + '6.2.0', + 'Added Pub/Sub channel patterns.' + ], + [ + '7.0.0', + 'Added selectors and key based permissions.' + ] + ], + acl_categories: [ + '@admin', + '@slow', + '@dangerous' + ], + arity: -3, arguments: [ { name: 'username', - type: 'string' + type: 'string', + display_text: 'username' }, { name: 'rule', type: 'string', - multiple: true, - optional: true + display_text: 'rule', + optional: true, + multiple: true } ], - since: '6.0.0', - group: 'server' + command_flags: [ + 'admin', + 'noscript', + 'loading', + 'stale' + ] }, GEOADD: { summary: 'Add one or more geospatial items in the geospatial index represented using a sorted set', + since: '3.2.0', + group: 'geo', complexity: 'O(log(N)) for each item added, where N is the number of elements in the sorted set.', + history: [ + [ + '6.2.0', + 'Added the `CH`, `NX` and `XX` options.' + ] + ], + acl_categories: [ + '@write', + '@geo', + '@slow' + ], + arity: -5, + key_specs: [ + { + begin_search: { + type: 'index', + spec: { + index: 1 + } + }, + find_keys: { + type: 'range', + spec: { + lastkey: 0, + keystep: 1, + limit: 0 + } + }, + RW: true, + update: true + } + ], arguments: [ { name: 'key', - type: 'key' + type: 'key', + display_text: 'key', + key_spec_index: 0 }, { name: 'condition', - type: 'enum', - enum: [ - 'NX', - 'XX' - ], - optional: true + type: 'oneof', + since: '6.2.0', + optional: true, + arguments: [ + { + name: 'nx', + type: 'pure-token', + display_text: 'nx', + token: 'NX' + }, + { + name: 'xx', + type: 'pure-token', + display_text: 'xx', + token: 'XX' + } + ] }, { name: 'change', - type: 'enum', - enum: [ - 'CH' - ], + type: 'pure-token', + display_text: 'change', + token: 'CH', + since: '6.2.0', optional: true }, { - name: [ - 'longitude', - 'latitude', - 'member' - ], - type: [ - 'double', - 'double', - 'string' - ], - multiple: true + name: 'data', + type: 'block', + multiple: true, + arguments: [ + { + name: 'longitude', + type: 'double', + display_text: 'longitude' + }, + { + name: 'latitude', + type: 'double', + display_text: 'latitude' + }, + { + name: 'member', + type: 'string', + display_text: 'member' + } + ] } ], - since: '3.2.0', - group: 'geo' + command_flags: [ + 'write', + 'denyoom' + ] }, ZADD: { summary: 'Add one or more members to a sorted set, or update its score if it already exists', + since: '1.2.0', + group: 'sorted-set', complexity: 'O(log(N)) for each item added, where N is the number of elements in the sorted set.', + history: [ + [ + '2.4.0', + 'Accepts multiple elements.' + ], + [ + '3.0.2', + 'Added the `XX`, `NX`, `CH` and `INCR` options.' + ], + [ + '6.2.0', + 'Added the `GT` and `LT` options.' + ] + ], + acl_categories: [ + '@write', + '@sortedset', + '@fast' + ], + arity: -4, + key_specs: [ + { + begin_search: { + type: 'index', + spec: { + index: 1 + } + }, + find_keys: { + type: 'range', + spec: { + lastkey: 0, + keystep: 1, + limit: 0 + } + }, + RW: true, + update: true + } + ], arguments: [ { name: 'key', - type: 'key' + type: 'key', + display_text: 'key', + key_spec_index: 0 }, { name: 'condition', - type: 'enum', - enum: [ - 'NX', - 'XX' - ], - optional: true + type: 'oneof', + since: '3.0.2', + optional: true, + arguments: [ + { + name: 'nx', + type: 'pure-token', + display_text: 'nx', + token: 'NX' + }, + { + name: 'xx', + type: 'pure-token', + display_text: 'xx', + token: 'XX' + } + ] }, { name: 'comparison', - type: 'enum', - enum: [ - 'GT', - 'LT' - ], - optional: true + type: 'oneof', + since: '6.2.0', + optional: true, + arguments: [ + { + name: 'gt', + type: 'pure-token', + display_text: 'gt', + token: 'GT' + }, + { + name: 'lt', + type: 'pure-token', + display_text: 'lt', + token: 'LT' + } + ] }, { name: 'change', - type: 'enum', - enum: [ - 'CH' - ], + type: 'pure-token', + display_text: 'change', + token: 'CH', + since: '3.0.2', optional: true }, { name: 'increment', - type: 'enum', - enum: [ - 'INCR' - ], + type: 'pure-token', + display_text: 'increment', + token: 'INCR', + since: '3.0.2', optional: true }, { - name: [ - 'score', - 'member' - ], - type: [ - 'double', - 'string' - ], - multiple: true + name: 'data', + type: 'block', + multiple: true, + arguments: [ + { + name: 'score', + type: 'double', + display_text: 'score' + }, + { + name: 'member', + type: 'string', + display_text: 'member' + } + ] } ], - since: '1.2.0', - group: 'sorted_set' + command_flags: [ + 'write', + 'denyoom', + 'fast' + ] }, RESET: { summary: 'Reset the connection', - since: '6.2', - group: 'connection' + since: '6.2.0', + group: 'connection', + complexity: 'O(1)', + acl_categories: [ + '@fast', + '@connection' + ], + arity: 1, + command_flags: [ + 'noscript', + 'loading', + 'stale', + 'fast', + 'no_auth', + 'allow_busy' + ] }, BITFIELD: { summary: 'Perform arbitrary bitfield integer operations on strings', + since: '3.2.0', + group: 'bitmap', complexity: 'O(1) for each subcommand specified', + acl_categories: [ + '@write', + '@bitmap', + '@slow' + ], + arity: -2, + key_specs: [ + { + notes: 'This command allows both access and modification of the key', + begin_search: { + type: 'index', + spec: { + index: 1 + } + }, + find_keys: { + type: 'range', + spec: { + lastkey: 0, + keystep: 1, + limit: 0 + } + }, + RW: true, + access: true, + update: true, + variable_flags: true + } + ], arguments: [ { name: 'key', - type: 'key' - }, - { - command: 'GET', - name: [ - 'type', - 'offset' - ], - type: [ - 'type', - 'integer' - ], - optional: true - }, - { - command: 'SET', - name: [ - 'type', - 'offset', - 'value' - ], - type: [ - 'type', - 'integer', - 'integer' - ], - optional: true - }, - { - command: 'INCRBY', - name: [ - 'type', - 'offset', - 'increment' - ], - type: [ - 'type', - 'integer', - 'integer' - ], - optional: true + type: 'key', + display_text: 'key', + key_spec_index: 0 }, { - command: 'OVERFLOW', - type: 'enum', - enum: [ - 'WRAP', - 'SAT', - 'FAIL' - ], - optional: true + name: 'operation', + type: 'oneof', + optional: true, + multiple: true, + arguments: [ + { + name: 'get-block', + type: 'block', + token: 'GET', + arguments: [ + { + name: 'encoding', + type: 'string', + display_text: 'encoding' + }, + { + name: 'offset', + type: 'integer', + display_text: 'offset' + } + ] + }, + { + name: 'write', + type: 'block', + arguments: [ + { + name: 'overflow-block', + type: 'oneof', + token: 'OVERFLOW', + optional: true, + arguments: [ + { + name: 'wrap', + type: 'pure-token', + display_text: 'wrap', + token: 'WRAP' + }, + { + name: 'sat', + type: 'pure-token', + display_text: 'sat', + token: 'SAT' + }, + { + name: 'fail', + type: 'pure-token', + display_text: 'fail', + token: 'FAIL' + } + ] + }, + { + name: 'write-operation', + type: 'oneof', + arguments: [ + { + name: 'set-block', + type: 'block', + token: 'SET', + arguments: [ + { + name: 'encoding', + type: 'string', + display_text: 'encoding' + }, + { + name: 'offset', + type: 'integer', + display_text: 'offset' + }, + { + name: 'value', + type: 'integer', + display_text: 'value' + } + ] + }, + { + name: 'incrby-block', + type: 'block', + token: 'INCRBY', + arguments: [ + { + name: 'encoding', + type: 'string', + display_text: 'encoding' + }, + { + name: 'offset', + type: 'integer', + display_text: 'offset' + }, + { + name: 'increment', + type: 'integer', + display_text: 'increment' + } + ] + } + ] + } + ] + } + ] } ], - since: '3.2.0', - group: 'bitmap' - } + command_flags: [ + 'write', + 'denyoom' + ] + }, } export const MOCK_COMMANDS_ARRAY = Object.keys(MOCK_COMMANDS_SPEC).sort() diff --git a/redisinsight/ui/src/utils/commands.ts b/redisinsight/ui/src/utils/commands.ts index 636ed03a77..36a2ee8016 100644 --- a/redisinsight/ui/src/utils/commands.ts +++ b/redisinsight/ui/src/utils/commands.ts @@ -1,10 +1,119 @@ import { flatten, isArray, isEmpty, isNumber, reject, toNumber, isNaN, isInteger } from 'lodash' import { - CommandArgsType, ICommandArg, ICommandArgGenerated } from 'uiSrc/constants' +enum ArgumentType { + INTEGER = 'integer', + DOUBLE = 'double', + STRING = 'string', + UNIX_TIME = 'unix-time', + PATTERN = 'pattern', + KEY = 'key', + ONEOF = 'oneof', + BLOCK = 'block', + PURE_TOKEN = 'pure-token', + COMMAND = 'command', +} + +export class Argument { + protected stack = [] + + protected name: string + + protected type: ArgumentType + + protected optional: boolean + + protected multiple: boolean + + protected multipleToken: boolean + + protected token: string | null + + protected display: string + + protected arguments: Argument[] + + constructor(data: Record) { + this.stack = [] + this.name = data?.name + this.type = data?.type + this.optional = !!data?.optional + this.multiple = !!data?.multiple + this.multipleToken = !!data?.multiple_token + this.token = data?.token + this.display = data?.display_text || this.name + // todo: why we need this? + if (this.token === '') { + this.token = '""' + } + this.arguments = ((data?.arguments || []) as Record[]) + .map((childArg) => new Argument(childArg)) + } + + public syntax(opts: Record = {}): string { + const showTypes = !!opts?.showTypes + const pureName = !!opts?.pureName + const onlyMandatory = !!opts?.onlyMandatory + + if (onlyMandatory && this.optional) { + return '' + } + + let args = '' + + switch (this.type) { + case ArgumentType.BLOCK: + args += this.arguments.map((arg) => arg.syntax()).join(' ') + break + case ArgumentType.ONEOF: + args += this.arguments.map((arg) => arg.syntax()).join(' | ') + break + case ArgumentType.PURE_TOKEN: + break + default: + args += this.display + if (showTypes) { + args += `:${this.type}` + } + } + + let syntax = '' + + if (this.token) { + syntax += this.token + if (this.type !== ArgumentType.PURE_TOKEN) { + syntax += ' ' + } + } + + let multipleSyntax = '' + if (this.multiple && !pureName) { + if (this.multipleToken) { + multipleSyntax += `${args} [${this.token} ${args} ...]` + } else { + multipleSyntax += `${args} [${args} ...]` + } + } else { + multipleSyntax += args + } + + if (this.type === ArgumentType.ONEOF && (!this.optional || this.token)) { + multipleSyntax = `<${multipleSyntax}>` + } + + syntax += multipleSyntax + + if (this.optional) { + syntax = `[${syntax}]` + } + + return syntax + } +} + export const getComplexityShortNotation = (complexity: string[] | string): string => { const value = isArray(complexity) ? complexity.join(' ') : complexity return value.endsWith(')') && value.startsWith('O') ? value : '' @@ -15,24 +124,36 @@ const generateArgName = ( pureName: boolean = false, onlyMandatory: boolean = false ): string | string[] => { - const { name: propName = '', enum: enumArg, command, optional, multiple, type, block } = arg - - if (onlyMandatory && optional) return '' - - const name = isArray(propName) ? propName?.join(' ') : propName - const enumName = enumArg && (!pureName || !name) ? enumArg?.join('|') : name - const commandName = command ? command + (enumName ? ` ${enumName}` : '') : enumName - const optionalName = optional ? `[${commandName}]` : commandName - - const multipleNameTemp = [...commandName?.split?.(' '), `[${commandName} ...]`] - const multipleName = optional ? `[${multipleNameTemp.join(' ')}]` : multipleNameTemp - - if (type === CommandArgsType.Block && isArray(block)) { - const blocks = flatten(block?.map?.((block) => generateArgName(block, pureName, onlyMandatory))) - return optional ? `[${blocks?.join?.(' ')}]` : blocks + try { + return (new Argument(arg)).syntax({ + onlyMandatory, + pureName, + }) + } catch (e) { + return '' } - return (multiple && !pureName && !onlyMandatory ? multipleName : optionalName) ?? '' + // DO NOT DELETE. + // We need this for now to compare old behaviour when needed + // + // const { name: propName = '', enum: enumArg, command, optional, multiple, type, block } = arg + // + // if (onlyMandatory && optional) return '' + // + // const name = isArray(propName) ? propName?.join(' ') : propName + // const enumName = enumArg && (!pureName || !name) ? enumArg?.join('|') : name + // const commandName = command ? command + (enumName ? ` ${enumName}` : '') : enumName + // const optionalName = optional ? `[${commandName}]` : commandName + // + // const multipleNameTemp = [...commandName?.split?.(' '), `[${commandName} ...]`] + // const multipleName = optional ? `[${multipleNameTemp.join(' ')}]` : multipleNameTemp + // + // if (type === CommandArgsType.Block && isArray(block)) { + // const blocks = flatten(block?.map?.((block) => generateArgName(block, pureName, onlyMandatory))) + // return optional ? `[${blocks?.join?.(' ')}]` : blocks + // } + // + // return (multiple && !pureName && !onlyMandatory ? multipleName : optionalName) ?? '' } export const generateArgs = (args: ICommandArg[]): ICommandArgGenerated[] => diff --git a/redisinsight/ui/src/utils/tests/commands.spec.ts b/redisinsight/ui/src/utils/tests/commands.spec.ts index db7caa5e4b..61e8e73a9e 100644 --- a/redisinsight/ui/src/utils/tests/commands.spec.ts +++ b/redisinsight/ui/src/utils/tests/commands.spec.ts @@ -20,27 +20,15 @@ const mockedCommands: IMockedCommands[] = [ { matchedCommand: 'xgroup', argStr: - 'XGROUP [CREATE key groupname ID|$ [MKSTREAM]] [SETID key groupname ID|$] [DESTROY key groupname] [CREATECONSUMER key groupname consumername] [DELCONSUMER key groupname consumername]', - argsNamesWithEnumsMock: [ - '[CREATE key groupname ID|$ [MKSTREAM]]', - '[SETID key groupname ID|$]', - '[DESTROY key groupname]', - '[CREATECONSUMER key groupname consumername]', - '[DELCONSUMER key groupname consumername]', - ], - argsNamesMock: [ - '[CREATE key groupname id [MKSTREAM]]', - '[SETID key groupname id]', - '[DESTROY key groupname]', - '[CREATECONSUMER key groupname consumername]', - '[DELCONSUMER key groupname consumername]', - ], + 'XGROUP', + argsNamesWithEnumsMock: [], + argsNamesMock: [], complexityShortMock: 'O(1)', }, { matchedCommand: 'hset', argStr: 'HSET key field value [field value ...]', - argsNamesWithEnumsMock: ['key', 'field', 'value', '[field value ...]'], + argsNamesWithEnumsMock: ['key', 'field value [field value ...]'], argsNamesMock: ['key', 'field value'], complexityShortMock: 'O(1)', }, @@ -57,17 +45,11 @@ const mockedCommands: IMockedCommands[] = [ 'BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]', argsNamesWithEnumsMock: [ 'key', - '[GET type offset]', - '[SET type offset value]', - '[INCRBY type offset increment]', - '[OVERFLOW WRAP|SAT|FAIL]', + '[GET encoding offset | [OVERFLOW ] [GET encoding offset | [OVERFLOW ] ...]]', ], argsNamesMock: [ 'key', - '[GET type offset]', - '[SET type offset value]', - '[INCRBY type offset increment]', - '[OVERFLOW WRAP|SAT|FAIL]', + '[GET encoding offset | [OVERFLOW ] ]', ], complexityShortMock: 'O(1)', }, @@ -76,22 +58,10 @@ const mockedCommands: IMockedCommands[] = [ argStr: 'CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [LADDR ip:port] [SKIPME yes/no]', argsNamesWithEnumsMock: [ - '[ip:port]', - '[ID client-id]', - '[TYPE normal|master|slave|pubsub]', - '[USER username]', - '[ADDR ip:port]', - '[LADDR ip:port]', - '[SKIPME yes/no]', + '] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', ], argsNamesMock: [ - '[ip:port]', - '[ID client-id]', - '[TYPE normal|master|slave|pubsub]', - '[USER username]', - '[ADDR ip:port]', - '[LADDR ip:port]', - '[SKIPME yes/no]', + '] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', ], complexityShortMock: 'O(N)', }, @@ -100,14 +70,11 @@ const mockedCommands: IMockedCommands[] = [ argStr: 'GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]', argsNamesWithEnumsMock: [ 'key', - '[NX|XX]', + '[NX | XX]', '[CH]', - 'longitude', - 'latitude', - 'member', - '[longitude latitude member ...]', + 'longitude latitude member [longitude latitude member ...]', ], - argsNamesMock: ['key', '[condition]', '[change]', 'longitude latitude member'], + argsNamesMock: ['key', '[NX | XX]', '[CH]', 'longitude latitude member'], complexityShortMock: 'O(log(N))', }, { @@ -115,20 +82,18 @@ const mockedCommands: IMockedCommands[] = [ argStr: 'ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]', argsNamesWithEnumsMock: [ 'key', - '[NX|XX]', - '[GT|LT]', + '[NX | XX]', + '[GT | LT]', '[CH]', '[INCR]', - 'score', - 'member', - '[score member ...]', + 'score member [score member ...]', ], argsNamesMock: [ 'key', - '[condition]', - '[comparison]', - '[change]', - '[increment]', + '[NX | XX]', + '[GT | LT]', + '[CH]', + '[INCR]', 'score member', ], complexityShortMock: 'O(log(N))', From ebde61ac20f18c0578fd46bdd688f81a9537bcd0 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Thu, 30 Mar 2023 12:05:43 +0200 Subject: [PATCH 007/106] #RI-4146 - add Brotli decompression --- .../database/entities/database.entity.ts | 1 + redisinsight/ui/src/constants/keys.ts | 3 +- .../form-components/DbCompressor.tsx | 4 +++ .../src/utils/decompressors/decompressors.ts | 19 +++++++--- .../utils/tests/decompressors/constants.ts | 3 ++ .../tests/decompressors/decompressors.spec.ts | 20 ++++++++++- yarn.lock | 35 ++++++++++++++++++- 7 files changed, 77 insertions(+), 8 deletions(-) diff --git a/redisinsight/api/src/modules/database/entities/database.entity.ts b/redisinsight/api/src/modules/database/entities/database.entity.ts index 079e12c3e9..650f5530dd 100644 --- a/redisinsight/api/src/modules/database/entities/database.entity.ts +++ b/redisinsight/api/src/modules/database/entities/database.entity.ts @@ -31,6 +31,7 @@ export enum Compressor { ZSTD = 'ZSTD', LZ4 = 'LZ4', SNAPPY = 'SNAPPY', + Brotli = 'Brotli', } @Entity('database_instance') diff --git a/redisinsight/ui/src/constants/keys.ts b/redisinsight/ui/src/constants/keys.ts index 07742ebd22..971d39bf28 100644 --- a/redisinsight/ui/src/constants/keys.ts +++ b/redisinsight/ui/src/constants/keys.ts @@ -186,7 +186,7 @@ export enum KeyValueCompressor { ZSTD = 'ZSTD', LZ4 = 'LZ4', SNAPPY = 'SNAPPY', - // Brotli = 'Brotli', + Brotli = 'Brotli', // PHPGZCompress = 'PHPGZCompress', } @@ -195,6 +195,7 @@ export const COMPRESSOR_MAGIC_SYMBOLS: ICompressorMagicSymbols = Object.freeze({ [KeyValueCompressor.ZSTD]: '40,181,47,253', // 28 b5 2f fd hex [KeyValueCompressor.LZ4]: '4,34,77,24', // 04 22 4d 18 hex [KeyValueCompressor.SNAPPY]: '', // no magic symbols + [KeyValueCompressor.Brotli]: '', // no magic symbols }) export type ICompressorMagicSymbols = { diff --git a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx index 7642b423e4..7683a7af16 100644 --- a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx +++ b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx @@ -46,6 +46,10 @@ const DbCompressor = (props: Props) => { value: KeyValueCompressor.ZSTD, inputDisplay: 'ZSTD', }, + { + value: KeyValueCompressor.Brotli, + inputDisplay: 'Brotli' + } ] const handleChangeDbCompressorCheckbox = (e: ChangeEvent): void => { diff --git a/redisinsight/ui/src/utils/decompressors/decompressors.ts b/redisinsight/ui/src/utils/decompressors/decompressors.ts index 02edef7533..6db9b71192 100644 --- a/redisinsight/ui/src/utils/decompressors/decompressors.ts +++ b/redisinsight/ui/src/utils/decompressors/decompressors.ts @@ -3,9 +3,10 @@ import { unzip } from 'gzip-js' import { decompress as decompressFzstd } from 'fzstd' import { decompress as decompressLz4 } from 'lz4js' import { decompress as decompressSnappy } from '@stablelib/snappy' +import { decompress as decompressBrotli } from 'brotli-unicode/js' import { COMPRESSOR_MAGIC_SYMBOLS, ICompressorMagicSymbols, KeyValueCompressor } from 'uiSrc/constants' import { RedisResponseBuffer, RedisString } from 'uiSrc/slices/interfaces' -import { anyToBuffer, isEqualBuffers, Nullable } from 'uiSrc/utils' +import { anyToBuffer, bufferToString, isEqualBuffers, Nullable } from 'uiSrc/utils' const decompressingBuffer = ( reply: RedisResponseBuffer, @@ -13,7 +14,7 @@ const decompressingBuffer = ( ): { value: RedisString, compressor: Nullable, isCompressed: boolean } => { const compressorByValue: Nullable = getCompressor(reply) const compressor = compressorInit === compressorByValue - || (!compressorByValue && compressorInit === KeyValueCompressor.SNAPPY) + || (!compressorByValue && compressorInit) ? compressorInit : null @@ -56,6 +57,15 @@ const decompressingBuffer = ( isCompressed: !isEqualBuffers(value, reply), } } + case KeyValueCompressor.Brotli: { + const value = anyToBuffer(decompressBrotli(bufferToString(reply))) + + return { + value, + compressor, + isCompressed: !isEqualBuffers(value, reply), + } + } default: { return { value: reply, compressor: null, isCompressed: false } } @@ -73,10 +83,9 @@ const getCompressor = (reply: RedisResponseBuffer): Nullable COMPRESSOR_MAGIC_SYMBOLS, (magicSymbols: string, compressorName: string) => { if ( - replyStart.startsWith(magicSymbols) + magicSymbols + && replyStart.startsWith(magicSymbols) && replyStart.length > magicSymbols.length - // no magic symbols for SNAPPY - && compressorName !== KeyValueCompressor.SNAPPY ) { compressor = compressorName as KeyValueCompressor return false // break loop diff --git a/redisinsight/ui/src/utils/tests/decompressors/constants.ts b/redisinsight/ui/src/utils/tests/decompressors/constants.ts index 0704507e6d..419789a4fc 100644 --- a/redisinsight/ui/src/utils/tests/decompressors/constants.ts +++ b/redisinsight/ui/src/utils/tests/decompressors/constants.ts @@ -18,3 +18,6 @@ export const LZ4_COMPRESSED_VALUE_2 = [4, 34, 77, 24, 64, 112, 223, 1, 0, 0, 128 export const SNAPPY_COMPRESSED_VALUE_1 = [1, 0, 49] export const SNAPPY_COMPRESSED_VALUE_2 = [1, 0, 50] + +export const BROTLI_COMPRESSED_VALUE_1 = [49, 65, 76, 231, 187, 141, 68] +export const BROTLI_COMPRESSED_VALUE_2 = [49, 65, 76, 231, 191, 141, 68] diff --git a/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts b/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts index 9ca2716833..8954074195 100644 --- a/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts +++ b/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts @@ -16,6 +16,8 @@ import { LZ4_COMPRESSED_VALUE_2, SNAPPY_COMPRESSED_VALUE_2, SNAPPY_COMPRESSED_VALUE_1, + BROTLI_COMPRESSED_VALUE_1, + BROTLI_COMPRESSED_VALUE_2, } from './constants' const defaultValues = [ @@ -111,6 +113,22 @@ const defaultValues = [ outputStr: DECOMPRESSED_VALUE_STR_1, isCompressed: false, }, + { + input: BROTLI_COMPRESSED_VALUE_1, + compressor: KeyValueCompressor.Brotli, + compressorInit: KeyValueCompressor.Brotli, + output: DECOMPRESSED_VALUE_1, + outputStr: DECOMPRESSED_VALUE_STR_1, + isCompressed: true, + }, + { + input: BROTLI_COMPRESSED_VALUE_2, + compressor: KeyValueCompressor.Brotli, + compressorInit: KeyValueCompressor.Brotli, + output: DECOMPRESSED_VALUE_2, + outputStr: DECOMPRESSED_VALUE_STR_2, + isCompressed: true, + }, ].map((value) => ({ ...value, input: anyToBuffer(value.input) @@ -121,7 +139,7 @@ describe('getCompressor', () => { let expected = compressorByValue || compressor // SNAPPY doesn't have magic symbols - if (compressor === KeyValueCompressor.SNAPPY) { + if (compressor === KeyValueCompressor.SNAPPY || compressor === KeyValueCompressor.Brotli) { expected = null } diff --git a/yarn.lock b/yarn.lock index ae1fcdac48..ca85d67965 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2659,6 +2659,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.43.tgz#555e5a743f76b6b897d47f945305b618525ddbe6" integrity sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ== +"@types/node@^17.0.40": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -4169,6 +4174,13 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-unicode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base-unicode/-/base-unicode-1.0.0.tgz#44b61fd4460b18f6d47ae6f5ea95a45b16a4885a" + integrity sha512-9y/0iVN7k3NyH0E4oYD/1qZceUVE180YcRRqhsQVNzazPcuRjr67SjUzl/wdhLaVmzjIMEjE5pDH7xb6X9kBFA== + dependencies: + buffer "^6.0.3" + base64-arraybuffer@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz#87bd13525626db4a9838e00a508c2b73efcf348c" @@ -4343,6 +4355,27 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +brotli-compress@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/brotli-compress/-/brotli-compress-1.3.3.tgz#fe3b50b6234bfbc8e26a137bffff2a07e2a4efe9" + integrity sha512-cwKOmzEuKqUmRxXDdZimiNoXRRr7AQKMSubJSbYA9FXk+LTPT3fBGpHU8VZRZZctAJ5OCeXGK9PzPpZ1vD0pDA== + dependencies: + "@types/node" "^17.0.40" + brotli-wasm "1.2.0" + +brotli-unicode@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/brotli-unicode/-/brotli-unicode-1.0.2.tgz#25e53a7fdc543337768e90fd59a94b6eb55ea6cc" + integrity sha512-eqO2kauz48Raqi0I8c4WOhvfr5GAtpHhCvegHRTY00zyn6pEP8jo5nHrwtAJKO68j1ZFi4zel6JrwBz60Z5d3g== + dependencies: + base-unicode "^1.0.0" + brotli-compress "^1.3.3" + +brotli-wasm@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/brotli-wasm/-/brotli-wasm-1.2.0.tgz#0f99b97b0020c8152308c277388aecf2a06b6e32" + integrity sha512-PdDi7awF36zFujZyFJb9UNrP1l+If7iCgXhLKE1SpwqFQSK2yc7w2dysOmME7p325yQaZNvae7ruzypB3YhFxA== + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -11495,7 +11528,7 @@ minimist@1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== From 52afc60a06cde4a9a959d62ceae6307189949c76 Mon Sep 17 00:00:00 2001 From: Zalenski Egor <63463140+zalenskiSofteq@users.noreply.github.com> Date: Thu, 30 Mar 2023 13:14:47 +0300 Subject: [PATCH 008/106] update developer.team-identifier --- resources/entitlements.mas.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/entitlements.mas.plist b/resources/entitlements.mas.plist index 51f4b7f557..9c2171e43e 100644 --- a/resources/entitlements.mas.plist +++ b/resources/entitlements.mas.plist @@ -22,10 +22,10 @@ com.apple.security.application-groups - UUK47G4BAZ.org.RedisLabs.RedisInsight-V2 + UUK47G4BAZ.com.redis.RedisInsight com.apple.application-identifier - UUK47G4BAZ.org.RedisLabs.RedisInsight-V2 + UUK47G4BAZ.com.redis.RedisInsight com.apple.developer.team-identifier UUK47G4BAZ com.apple.security.temporary-exception.files.home-relative-path.read-write From c062504ec757df11461dd52ba64575b1be21f257 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Thu, 30 Mar 2023 12:31:02 +0200 Subject: [PATCH 009/106] #RI-4146 - add brotli package --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index d5af81f6d1..8313ad2277 100644 --- a/package.json +++ b/package.json @@ -222,6 +222,7 @@ "@reduxjs/toolkit": "^1.6.2", "@stablelib/snappy": "^1.0.2", "axios": "^0.25.0", + "brotli-unicode": "^1.0.2", "buffer": "^6.0.3", "classnames": "^2.3.1", "connection-string": "^4.3.2", From 24626c8e95fd1147601797930e4673467bbe2592 Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Thu, 30 Mar 2023 19:44:35 +0800 Subject: [PATCH 010/106] #RI-4315 - Investigate auto-updater for Apple Store build --- embedded.provisionprofile | Bin 12381 -> 12233 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/embedded.provisionprofile b/embedded.provisionprofile index e12c683ef26902fd5e609e0a8b710bd4f1af8059..4113afd5cac20532a6f17bc454bc5938828a820e 100644 GIT binary patch delta 3776 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 B2MquK delta 3880 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 Date: Thu, 30 Mar 2023 19:49:49 +0800 Subject: [PATCH 011/106] #RI-4315 - Investigate auto-updater for Apple Store build --- dev.provisionprofile | Bin 12843 -> 12703 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dev.provisionprofile b/dev.provisionprofile index 4f3ad9d5fef6dad1e7f41ce464f2a6ef79c2416f..a33b794a50ddfdfe21a0cf922bd7064732a89ab3 100644 GIT binary patch delta 5260 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 delta 5376 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 From 26a3076d5da36daf09cc04488399d71791a4f02c Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Thu, 30 Mar 2023 21:11:27 +0800 Subject: [PATCH 012/106] #RI-4328 - Version for windows and linux is 2.22.1false --- redisinsight/about-panel.ts | 2 +- redisinsight/api/config/swagger.ts | 2 +- redisinsight/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/redisinsight/about-panel.ts b/redisinsight/about-panel.ts index a9221ca10d..8d9a4346bd 100644 --- a/redisinsight/about-panel.ts +++ b/redisinsight/about-panel.ts @@ -8,7 +8,7 @@ const ICON_PATH = app.isPackaged export default { applicationName: 'RedisInsight-v2', applicationVersion: - `${app.getVersion() || '2.22.0'}${process.env.NODE_ENV !== 'production' && `-dev-${process.getCreationTime()}`}`, + `${app.getVersion() || '2.22.1'}${process.env.NODE_ENV !== 'production' ? `-dev-${process.getCreationTime()}` : ''}`, copyright: `Copyright © ${new Date().getFullYear()} Redis Ltd.`, iconPath: ICON_PATH, }; diff --git a/redisinsight/api/config/swagger.ts b/redisinsight/api/config/swagger.ts index d840c0822c..fa8e934281 100644 --- a/redisinsight/api/config/swagger.ts +++ b/redisinsight/api/config/swagger.ts @@ -5,7 +5,7 @@ const SWAGGER_CONFIG: Omit = { info: { title: 'RedisInsight Backend API', description: 'RedisInsight Backend API', - version: '2.22.0', + version: '2.22.1', }, tags: [], }; diff --git a/redisinsight/package.json b/redisinsight/package.json index 6401a670ed..2a721f255c 100644 --- a/redisinsight/package.json +++ b/redisinsight/package.json @@ -2,7 +2,7 @@ "name": "redisinsight", "productName": "RedisInsight", "private": true, - "version": "2.22.0", + "version": "2.22.1", "description": "RedisInsight", "main": "./main.prod.js", "author": { From 4927abc0d926482dcc0c793f275f0355fad3d1d1 Mon Sep 17 00:00:00 2001 From: Zalenski Egor <63463140+zalenskiSofteq@users.noreply.github.com> Date: Thu, 30 Mar 2023 16:39:11 +0300 Subject: [PATCH 013/106] Update electron-builder.json --- electron-builder.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron-builder.json b/electron-builder.json index 18bd139feb..e209fba40e 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -33,7 +33,7 @@ "type": "distribution", "hardenedRuntime": true, "darkModeSupport": true, - "bundleVersion": "2", + "bundleVersion": "3", "icon": "resources/icon.icns", "artifactName": "${productName}-${os}-${arch}.${ext}", "entitlements": "resources/entitlements.mac.plist", From 0fd56342912c4098dc85bf91775c243728cfe81f Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Fri, 31 Mar 2023 12:31:35 +0200 Subject: [PATCH 014/106] fix for Verify that user can see the information message that the RediSearch module is not available when he runs any input with "FT." prefix in Workbench --- .../workbench/redisearch-module-not-available.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts b/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts index 186acdd902..8f0e051b53 100644 --- a/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts @@ -25,5 +25,5 @@ test('Verify that user can see the information message that the RediSearch modul // Send command with 'FT.' await workbenchPage.sendCommandInWorkbench(commandForSend); // Verify the information message - await t.expect(await workbenchPage.commandExecutionResult.textContent).eql('Looks like RediSearch is not available', 'The information message'); + await t.expect(await workbenchPage.commandExecutionResult.textContent).contains('Looks like RediSearch is not available', 'The information message'); }); From 8a0a0598e74fdde1f292d088bf3f18f46029840b Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Fri, 31 Mar 2023 15:40:15 +0200 Subject: [PATCH 015/106] #RI-4146 - add PHP GZCompress decompression --- package.json | 3 +++ .../database/entities/database.entity.ts | 1 + redisinsight/ui/src/constants/keys.ts | 3 ++- .../form-components/DbCompressor.tsx | 6 ++++- .../src/utils/decompressors/decompressors.ts | 16 ++++++++++++- .../src/utils/formatters/bufferFormatters.ts | 6 +++-- .../utils/tests/decompressors/constants.ts | 3 +++ .../tests/decompressors/decompressors.spec.ts | 23 ++++++++++++++++++- .../tests/formatters/bufferFormatters.spec.ts | 9 +++++++- yarn.lock | 15 ++++++++++++ 10 files changed, 78 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 8313ad2277..d9fc3bb5ac 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "@types/jsonpath": "^0.2.0", "@types/lodash": "^4.14.171", "@types/node": "14.14.10", + "@types/pako": "^2.0.0", "@types/react": "^18.0.20", "@types/react-dom": "^18.0.5", "@types/react-redux": "^7.1.12", @@ -233,6 +234,7 @@ "electron-log": "^4.2.4", "electron-store": "^8.0.0", "electron-updater": "^5.0.5", + "fflate": "^0.7.4", "file-saver": "^2.0.5", "formik": "^2.2.9", "fzstd": "^0.1.0", @@ -244,6 +246,7 @@ "jsonpath": "^1.1.1", "lodash": "^4.17.21", "lz4js": "^0.2.0", + "pako": "^2.1.0", "php-serialize": "^4.0.2", "rawproto": "^0.7.6", "react": "^18.2.0", diff --git a/redisinsight/api/src/modules/database/entities/database.entity.ts b/redisinsight/api/src/modules/database/entities/database.entity.ts index 650f5530dd..a42cad5f23 100644 --- a/redisinsight/api/src/modules/database/entities/database.entity.ts +++ b/redisinsight/api/src/modules/database/entities/database.entity.ts @@ -32,6 +32,7 @@ export enum Compressor { LZ4 = 'LZ4', SNAPPY = 'SNAPPY', Brotli = 'Brotli', + PHPGZCompress = 'PHPGZCompress', } @Entity('database_instance') diff --git a/redisinsight/ui/src/constants/keys.ts b/redisinsight/ui/src/constants/keys.ts index 971d39bf28..2cce1b921d 100644 --- a/redisinsight/ui/src/constants/keys.ts +++ b/redisinsight/ui/src/constants/keys.ts @@ -187,7 +187,7 @@ export enum KeyValueCompressor { LZ4 = 'LZ4', SNAPPY = 'SNAPPY', Brotli = 'Brotli', - // PHPGZCompress = 'PHPGZCompress', + PHPGZCompress = 'PHPGZCompress', } export const COMPRESSOR_MAGIC_SYMBOLS: ICompressorMagicSymbols = Object.freeze({ @@ -196,6 +196,7 @@ export const COMPRESSOR_MAGIC_SYMBOLS: ICompressorMagicSymbols = Object.freeze({ [KeyValueCompressor.LZ4]: '4,34,77,24', // 04 22 4d 18 hex [KeyValueCompressor.SNAPPY]: '', // no magic symbols [KeyValueCompressor.Brotli]: '', // no magic symbols + [KeyValueCompressor.PHPGZCompress]: '', // no magic symbols }) export type ICompressorMagicSymbols = { diff --git a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx index 7683a7af16..320811ea2c 100644 --- a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx +++ b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/form-components/DbCompressor.tsx @@ -49,7 +49,11 @@ const DbCompressor = (props: Props) => { { value: KeyValueCompressor.Brotli, inputDisplay: 'Brotli' - } + }, + { + value: KeyValueCompressor.PHPGZCompress, + inputDisplay: 'PHP GZCompress' + }, ] const handleChangeDbCompressorCheckbox = (e: ChangeEvent): void => { diff --git a/redisinsight/ui/src/utils/decompressors/decompressors.ts b/redisinsight/ui/src/utils/decompressors/decompressors.ts index 6db9b71192..2e10502ddf 100644 --- a/redisinsight/ui/src/utils/decompressors/decompressors.ts +++ b/redisinsight/ui/src/utils/decompressors/decompressors.ts @@ -1,12 +1,15 @@ import { forIn } from 'lodash' import { unzip } from 'gzip-js' import { decompress as decompressFzstd } from 'fzstd' +// @ts-ignore import { decompress as decompressLz4 } from 'lz4js' import { decompress as decompressSnappy } from '@stablelib/snappy' +// @ts-ignore import { decompress as decompressBrotli } from 'brotli-unicode/js' +import { inflate } from 'pako' import { COMPRESSOR_MAGIC_SYMBOLS, ICompressorMagicSymbols, KeyValueCompressor } from 'uiSrc/constants' import { RedisResponseBuffer, RedisString } from 'uiSrc/slices/interfaces' -import { anyToBuffer, bufferToString, isEqualBuffers, Nullable } from 'uiSrc/utils' +import { anyToBuffer, bufferToString, bufferToUint8Array, isEqualBuffers, Nullable } from 'uiSrc/utils' const decompressingBuffer = ( reply: RedisResponseBuffer, @@ -66,6 +69,17 @@ const decompressingBuffer = ( isCompressed: !isEqualBuffers(value, reply), } } + case KeyValueCompressor.PHPGZCompress: { + const decompressedValue = inflate(bufferToUint8Array(reply)) + if (!decompressedValue) return { value: reply, compressor: null, isCompressed: false } + + const value = anyToBuffer(decompressedValue) + return { + value, + compressor, + isCompressed: !isEqualBuffers(value, reply), + } + } default: { return { value: reply, compressor: null, isCompressed: false } } diff --git a/redisinsight/ui/src/utils/formatters/bufferFormatters.ts b/redisinsight/ui/src/utils/formatters/bufferFormatters.ts index d4284a4540..dcc1c79f8e 100644 --- a/redisinsight/ui/src/utils/formatters/bufferFormatters.ts +++ b/redisinsight/ui/src/utils/formatters/bufferFormatters.ts @@ -106,7 +106,8 @@ const ASCIIToBuffer = (strInit: string) => { return anyToBuffer(Array.from(Buffer.from(result, 'hex'))) } -const bufferToUTF8 = (reply: RedisResponseBuffer): string => decoder.decode(new Uint8Array(reply.data)) +const bufferToUint8Array = (reply: RedisResponseBuffer): Uint8Array => new Uint8Array(reply.data) +const bufferToUTF8 = (reply: RedisResponseBuffer): string => decoder.decode(bufferToUint8Array(reply)) const UintArrayToString = (reply: UintArray): string => decoder.decode(new Uint8Array(reply)) @@ -138,7 +139,7 @@ const hexToBuffer = (data: string): RedisResponseBuffer => { } const bufferToJava = (reply: RedisResponseBuffer) => { - const stream = new ObjectInputStream(new Uint8Array(reply.data)) + const stream = new ObjectInputStream(bufferToUint8Array(reply)) const decoded = stream.readObject() const { fields } = decoded const fieldsArray = Array.from(fields, ([key, value]) => ({ [key]: value })) @@ -172,6 +173,7 @@ export { ASCIIToBuffer, isEqualBuffers, stringToBuffer, + bufferToUint8Array, bufferToString, UintArrayToString, hexToBuffer, diff --git a/redisinsight/ui/src/utils/tests/decompressors/constants.ts b/redisinsight/ui/src/utils/tests/decompressors/constants.ts index 419789a4fc..5f90837f1b 100644 --- a/redisinsight/ui/src/utils/tests/decompressors/constants.ts +++ b/redisinsight/ui/src/utils/tests/decompressors/constants.ts @@ -21,3 +21,6 @@ export const SNAPPY_COMPRESSED_VALUE_2 = [1, 0, 50] export const BROTLI_COMPRESSED_VALUE_1 = [49, 65, 76, 231, 187, 141, 68] export const BROTLI_COMPRESSED_VALUE_2 = [49, 65, 76, 231, 191, 141, 68] + +export const PHPGZCOMPRESS_COMPRESSED_VALUE_1 = [120, 156, 51, 4, 0, 0, 50, 0, 50] +export const PHPGZCOMPRESS_COMPRESSED_VALUE_2 = [120, 156, 51, 2, 0, 0, 51, 0, 51] diff --git a/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts b/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts index 8954074195..9dab8e8716 100644 --- a/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts +++ b/redisinsight/ui/src/utils/tests/decompressors/decompressors.spec.ts @@ -18,6 +18,8 @@ import { SNAPPY_COMPRESSED_VALUE_1, BROTLI_COMPRESSED_VALUE_1, BROTLI_COMPRESSED_VALUE_2, + PHPGZCOMPRESS_COMPRESSED_VALUE_1, + PHPGZCOMPRESS_COMPRESSED_VALUE_2, } from './constants' const defaultValues = [ @@ -129,6 +131,22 @@ const defaultValues = [ outputStr: DECOMPRESSED_VALUE_STR_2, isCompressed: true, }, + { + input: PHPGZCOMPRESS_COMPRESSED_VALUE_1, + compressor: KeyValueCompressor.PHPGZCompress, + compressorInit: KeyValueCompressor.PHPGZCompress, + output: DECOMPRESSED_VALUE_1, + outputStr: DECOMPRESSED_VALUE_STR_1, + isCompressed: true, + }, + { + input: PHPGZCOMPRESS_COMPRESSED_VALUE_2, + compressor: KeyValueCompressor.PHPGZCompress, + compressorInit: KeyValueCompressor.PHPGZCompress, + output: DECOMPRESSED_VALUE_2, + outputStr: DECOMPRESSED_VALUE_STR_2, + isCompressed: true, + }, ].map((value) => ({ ...value, input: anyToBuffer(value.input) @@ -139,7 +157,10 @@ describe('getCompressor', () => { let expected = compressorByValue || compressor // SNAPPY doesn't have magic symbols - if (compressor === KeyValueCompressor.SNAPPY || compressor === KeyValueCompressor.Brotli) { + if (compressor === KeyValueCompressor.SNAPPY + || compressor === KeyValueCompressor.Brotli + || compressor === KeyValueCompressor.PHPGZCompress + ) { expected = null } diff --git a/redisinsight/ui/src/utils/tests/formatters/bufferFormatters.spec.ts b/redisinsight/ui/src/utils/tests/formatters/bufferFormatters.spec.ts index f4e2ff114d..79419e1751 100644 --- a/redisinsight/ui/src/utils/tests/formatters/bufferFormatters.spec.ts +++ b/redisinsight/ui/src/utils/tests/formatters/bufferFormatters.spec.ts @@ -11,7 +11,8 @@ import { bufferToHex, bufferToBinary, binaryToBuffer, - bufferToJava + bufferToJava, + bufferToUint8Array, } from 'uiSrc/utils' const defaultValues = [ @@ -141,3 +142,9 @@ describe('bufferToJava', () => { expect(bufferToJava(input)).toEqual(expected) }) }) + +describe('bufferToUint8Array', () => { + test.each(javaValues)('%o', ({ uint8Array }) => { + expect(bufferToUint8Array(anyToBuffer(uint8Array))).toEqual(new Uint8Array(uint8Array)) + }) +}) diff --git a/yarn.lock b/yarn.lock index ca85d67965..dd9d2e7f06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2674,6 +2674,11 @@ resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" integrity sha512-Sjsy10w6XFHDktJJdXzBJmoondAKW+LcGpRFH+9+zXEDj0cOH8BxJuZA9vUDSMAzU1YRJlsPKmZEEiTYDlICLw== +"@types/pako@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.0.tgz#12ab4c19107528452e73ac99132c875ccd43bdfb" + integrity sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -7637,6 +7642,11 @@ fengari@^0.1.4: sprintf-js "^1.1.1" tmp "^0.0.33" +fflate@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" + integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== + figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -12390,6 +12400,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" From a37f8d7bf727124eef789a94aa6822955c496d56 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Mon, 3 Apr 2023 09:04:56 +0200 Subject: [PATCH 016/106] #RI-4146 - remove fflate --- package.json | 1 - yarn.lock | 5 ----- 2 files changed, 6 deletions(-) diff --git a/package.json b/package.json index d9fc3bb5ac..ae670ab013 100644 --- a/package.json +++ b/package.json @@ -234,7 +234,6 @@ "electron-log": "^4.2.4", "electron-store": "^8.0.0", "electron-updater": "^5.0.5", - "fflate": "^0.7.4", "file-saver": "^2.0.5", "formik": "^2.2.9", "fzstd": "^0.1.0", diff --git a/yarn.lock b/yarn.lock index dd9d2e7f06..3380653960 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7642,11 +7642,6 @@ fengari@^0.1.4: sprintf-js "^1.1.1" tmp "^0.0.33" -fflate@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" - integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== - figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" From 3a57cdf3bc8abfbf97a4ed172269e585e0138b7d Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Wed, 5 Apr 2023 14:42:27 +0200 Subject: [PATCH 017/106] updates for tests for 4149 --- tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts | 8 ++++---- .../e2e/tests/critical-path/workbench/autocomplete.e2e.ts | 6 ++---- tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts | 6 +++--- tests/e2e/tests/regression/workbench/autocomplete.e2e.ts | 4 ++-- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts b/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts index cf7e2c3a3f..9c0af2b715 100644 --- a/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts +++ b/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts @@ -92,9 +92,9 @@ test test .meta({ rte: rte.standalone })('Verify that when user enters in CLI RediSearch/JSON commands (FT.CREATE, FT.DROPINDEX/JSON.GET, JSON.DEL), he can see hints with arguments', async t => { const commandHints = [ - 'index [data_type] [prefix] [filter] [default_lang] [lang_attribute] [default_score] [score_attribute] [payload_attribute] [maxtextfields] [seconds] [nooffsets] [nohl] [nofields] [nofreqs] [stopwords] [skipinitialscan] schema field [field ...]', - 'index [delete docs]', - 'key [indent] [newline] [space] [path [path ...]]', + 'index [ON ] [PREFIX count prefix [prefix ...]] [FILTER filter] [LANGUAGE default_lang] [LANGUAGE_FIELD lang_attribute] [SCORE default_score] [SCORE_FIELD score_attribute] [PAYLOAD_FIELD payload_attribute] [MAXTEXTFIELDS] [TEMPORARY seconds] [NOOFFSETS] [NOHL] [NOFIELDS] [NOFREQS] [STOPWORDS count [stopword [stopword ...]]] [SKIPINITIALSCAN] SCHEMA field_name [AS alias] [WITHSUFFIXTRIE] [SORTABLE [UNF]] [NOINDEX] [field_name [AS alias] [WITHSUFFIXTRIE] [SORTABLE [UNF]] [NOINDEX] ...]', + 'index [DD]', + 'key [INDENT indent] [NEWLINE newline] [SPACE space] [path [path ...]]', 'key [path]' ]; const commands = [ @@ -103,7 +103,7 @@ test 'JSON.GET', 'JSON.DEL' ]; - const commandHint = 'key [META] [BLOB]'; + const commandHint = 'key [meta] [blob]'; const command = 'ai.modelget'; // Open CLI diff --git a/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts b/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts index f3748020da..96e5640b15 100644 --- a/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts @@ -61,10 +61,8 @@ test('Verify that user can change any required argument inserted', async t => { await t.typeText(workbenchPage.queryInput, commandArgumentsForChange[1]); const scriptAfterEdit = await workbenchPage.queryInputScriptArea.textContent; // Verify the command after changes - await t.expect(scriptBeforeEdit).notEql(scriptAfterEdit, 'The required arguments are editable'); - for(const argument of commandArguments) { - await t.expect(scriptAfterEdit).notContains(argument, `The argument ${argument} is changed`); - } + await t.expect(scriptBeforeEdit).notEql(scriptAfterEdit, 'The required arguments are not editable'); + await t.expect(scriptAfterEdit).notContains(commandArguments[0], `The argument ${commandArguments[0]} is not changed`); }); test('Verify that the list of optional arguments will not be inserted with autocomplete', async t => { const command = 'ZPOPMAX'; diff --git a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts index 3f072dffa1..b9290a2253 100644 --- a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts @@ -83,7 +83,7 @@ test .meta({ env: env.web })('Verify that user can see in Command helper and click on new group "JSON", can choose it and see list of commands in the group', async t => { filteringGroup = 'JSON'; commandToCheck = 'JSON.SET'; - commandArgumentsToCheck = 'JSON.SET key path value [condition]'; + commandArgumentsToCheck = 'JSON.SET key path value [NX | XX]'; externalPageLink = 'https://redis.io/commands/json.set/'; // Open Command Helper @@ -103,7 +103,7 @@ test .meta({ env: env.web })('Verify that user can see in Command helper and click on new group "Search", can choose it and see list of commands in the group', async t => { filteringGroup = 'Search'; commandToCheck = 'FT.EXPLAIN'; - commandArgumentsToCheck = 'FT.EXPLAIN index query [dialect]'; + commandArgumentsToCheck = 'FT.EXPLAIN index query [DIALECT dialect]'; externalPageLink = 'https://redis.io/commands/ft.explain/'; // Open Command Helper @@ -217,7 +217,7 @@ test 'BF.MEXISTS key item [item ...]', 'CMS.QUERY key item [item ...]', 'TDIGEST.RESET key', - 'TOPK.LIST key [withcount]', + 'TOPK.LIST key [WITHCOUNT]', 'CF.ADD key item' ]; externalPageLinks = [ diff --git a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts index 6aa4a9a7d7..9a4db35aac 100644 --- a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts +++ b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts @@ -22,7 +22,7 @@ fixture `Autocomplete for entered commands` test('Verify that user can open the "read more" about the command by clicking on the ">" icon or "ctrl+space"', async t => { const command = 'HSET'; const commandDetails = [ - 'HSET key data [data ...]', + 'HSET key field value [field value ...]', 'Creates or modifies the value of a field in a hash.', 'Read more', 'Arguments:', @@ -72,7 +72,7 @@ test('Verify that user can see the static list of arguments when he uses “Ctrl await t.pressKey('enter'); // Check that the command is displayed in Editing area after selecting const script = await workbenchPage.queryInputScriptArea.textContent; - await t.expect(script.replace(/\s/g, ' ')).eql('JSON.ARRAPPEND key value ', 'Result of sent command not exists'); + await t.expect(script.replace(/\s/g, ' ')).eql('JSON.ARRAPPEND key value [value ...] ', 'Result of sent command not exists'); // Check that hint with arguments are displayed await t.expect(workbenchPage.monacoHintWithArguments.visible).ok('Hints with arguments are not displayed'); // Remove hints with arguments From ee55c600e71dafb6f611c11bcbe50917a9ea8656 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Wed, 5 Apr 2023 16:57:45 +0200 Subject: [PATCH 018/106] #RI-4354 - fix error when deleting key from tree view #RI-4355 - disable delete button after clicking --- .../browser-left-panel/BrowserLeftPanel.tsx | 1 + .../key-details/KeyDetailsWrapper.tsx | 7 +- .../components/key-list/KeyList.spec.tsx | 4 +- .../browser/components/key-list/KeyList.tsx | 24 ++-- .../browser/components/key-tree/KeyTree.tsx | 4 +- redisinsight/ui/src/slices/browser/hash.ts | 4 +- redisinsight/ui/src/slices/browser/keys.ts | 84 +++++++++++-- redisinsight/ui/src/slices/browser/list.ts | 4 +- redisinsight/ui/src/slices/browser/set.ts | 4 +- redisinsight/ui/src/slices/browser/zset.ts | 4 +- redisinsight/ui/src/slices/interfaces/keys.ts | 1 + .../ui/src/slices/tests/browser/hash.spec.ts | 4 +- .../ui/src/slices/tests/browser/keys.spec.ts | 116 ++++++++++++++++-- .../ui/src/slices/tests/browser/list.spec.ts | 4 +- .../ui/src/slices/tests/browser/set.spec.ts | 4 +- .../ui/src/slices/tests/browser/zset.spec.ts | 6 +- .../regression/browser/ttl-format.e2e.ts | 2 +- .../regression/tree-view/tree-view.e2e.ts | 2 +- 18 files changed, 213 insertions(+), 66 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/browser-left-panel/BrowserLeftPanel.tsx b/redisinsight/ui/src/pages/browser/components/browser-left-panel/BrowserLeftPanel.tsx index f828c00021..1024c9ff35 100644 --- a/redisinsight/ui/src/pages/browser/components/browser-left-panel/BrowserLeftPanel.tsx +++ b/redisinsight/ui/src/pages/browser/components/browser-left-panel/BrowserLeftPanel.tsx @@ -140,6 +140,7 @@ const BrowserLeftPanel = (props: Props) => { loading={loading} selectKey={selectKey} loadMoreItems={loadMoreItems} + onDelete={onDeleteKey} /> )}
diff --git a/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx b/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx index 60c22765ae..ea8588adfb 100644 --- a/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-details/KeyDetailsWrapper.tsx @@ -4,7 +4,7 @@ import { useDispatch, useSelector } from 'react-redux' import { useParams } from 'react-router-dom' import { - deleteKeyAction, + deleteSelectedKeyAction, editKey, editKeyTTL, fetchKeyInfo, @@ -81,10 +81,7 @@ const KeyDetailsWrapper = (props: Props) => { }, [keyName]) const handleDeleteKey = (key: RedisResponseBuffer, type: string) => { - dispatch(deleteKeyAction(key, - { - source: 'keyValue' - }, + dispatch(deleteSelectedKeyAction(key, () => { if (type === KeyTypes.String) { dispatch(resetStringValue()) diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx index 598131120b..c09cfc41ce 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx @@ -3,7 +3,7 @@ import { cloneDeep } from 'lodash' import { fireEvent } from '@testing-library/react' import { cleanup, mockedStore, render, waitFor, screen, clearStoreActions } from 'uiSrc/utils/test-utils' import { KeysStoreData, KeyViewType, SearchMode } from 'uiSrc/slices/interfaces/keys' -import { deleteKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' +import { deleteSelectedKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' import { apiService } from 'uiSrc/services' import KeyList from './KeyList' @@ -196,7 +196,7 @@ describe('KeyList', () => { fireEvent.click(screen.getByTestId('submit-delete-key')) const expectedActions = [ - deleteKey() + deleteSelectedKey() ] expect(clearStoreActions(store.getActions().slice(-1))).toEqual(clearStoreActions(expectedActions)) }) diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx index ad3cb143ec..849a9df741 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx @@ -90,7 +90,7 @@ const KeyList = forwardRef((props: Props, ref) => { const selectedKey = useSelector(selectedKeySelector) const { total, nextCursor, previousResultCount } = useSelector(keysDataSelector) - const { isSearched, isFiltered, viewType, searchMode } = useSelector(keysSelector) + const { isSearched, isFiltered, viewType, searchMode, deleting } = useSelector(keysSelector) const { selectedIndex } = useSelector(redisearchSelector) const { keyList: { isNotRendered: isNotRenderedContext } } = useSelector(appContextBrowser) @@ -239,20 +239,11 @@ const KeyList = forwardRef((props: Props, ref) => { setDeletePopoverIndex(index !== deletePopoverIndex ? index : undefined) } - const handleRemoveKey = (key: RedisResponseBuffer, type: string) => { - dispatch(deleteKeyAction( - key, - { - source: 'keyList' - }, - () => { - setDeletePopoverIndex(undefined) - onDelete() - if (type === KeyTypes.String) { - dispatch(resetStringValue()) - } - } - )) + const handleRemoveKey = (key: RedisResponseBuffer) => { + dispatch(deleteKeyAction(key, () => { + setDeletePopoverIndex(undefined) + onDelete() + })) } const setScrollTopPosition = useCallback((position: number) => { @@ -493,7 +484,8 @@ const KeyList = forwardRef((props: Props, ref) => { size="s" color="warning" iconType="trash" - onClick={() => handleRemoveKey(bufferName, type)} + isDisabled={deleting} + onClick={() => handleRemoveKey(bufferName)} data-testid="submit-delete-key" > Delete diff --git a/redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.tsx b/redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.tsx index 89f20fd70c..6a0e46f912 100644 --- a/redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.tsx @@ -31,6 +31,7 @@ export interface Props { oldKeys: IKeyPropTypes[], { startIndex, stopIndex }: { startIndex: number, stopIndex: number }, ) => void + onDelete: () => void } export const firstPanelId = 'tree' @@ -41,7 +42,7 @@ const parseKeyNames = (keys: GetKeyInfoResponse[]) => ({ ...item, nameString: item.nameString ?? bufferToString(item.name) })) const KeyTree = forwardRef((props: Props, ref) => { - const { selectKey, loadMoreItems, loading, keysState } = props + const { selectKey, loadMoreItems, loading, keysState, onDelete } = props const firstPanelId = 'tree' const secondPanelId = 'keys' @@ -213,6 +214,7 @@ const KeyTree = forwardRef((props: Props, ref) => { keysState={keyListState} loading={loading || constructingTree} selectKey={selectKey} + onDelete={onDelete} />
diff --git a/redisinsight/ui/src/slices/browser/hash.ts b/redisinsight/ui/src/slices/browser/hash.ts index 9295762b1f..318013d2c9 100644 --- a/redisinsight/ui/src/slices/browser/hash.ts +++ b/redisinsight/ui/src/slices/browser/hash.ts @@ -12,7 +12,7 @@ import { } from 'apiSrc/modules/browser/dto/hash.dto' import { deleteKeyFromList, - deleteKeySuccess, + deleteSelectedKeySuccess, fetchKeyInfo, refreshKeyInfoAction, updateSelectedKeyRefreshTime, @@ -346,7 +346,7 @@ export function deleteHashFields( ) )) } else { - dispatch(deleteKeySuccess()) + dispatch(deleteSelectedKeySuccess()) dispatch(deleteKeyFromList(key)) dispatch(addMessageNotification(successMessages.DELETED_KEY(key))) } diff --git a/redisinsight/ui/src/slices/browser/keys.ts b/redisinsight/ui/src/slices/browser/keys.ts index 8a41677afe..d0f8dc3e73 100644 --- a/redisinsight/ui/src/slices/browser/keys.ts +++ b/redisinsight/ui/src/slices/browser/keys.ts @@ -70,6 +70,7 @@ const defaultViewFormat = KeyValueFormat.Unicode export const initialState: KeysStore = { loading: false, + deleting: false, error: '', filter: null, search: '', @@ -202,28 +203,38 @@ const keysSlice = createSlice({ updateSelectedKeyRefreshTime: (state, { payload }) => { state.selectedKey.lastRefreshTime = payload }, - // delete Key - deleteKey: (state) => { + // delete selected Key + deleteSelectedKey: (state) => { state.selectedKey = { ...state.selectedKey, loading: true, error: '', } }, - deleteKeySuccess: (state) => { + deleteSelectedKeySuccess: (state) => { state.selectedKey = { ...state.selectedKey, loading: false, data: null, } }, - deleteKeyFailure: (state, { payload }) => { + deleteSelectedKeyFailure: (state, { payload }) => { state.selectedKey = { ...state.selectedKey, loading: false, error: payload, } }, + // delete Key + deleteKey: (state) => { + state.deleting = true + }, + deleteKeySuccess: (state) => { + state.deleting = false + }, + deleteKeyFailure: (state) => { + state.deleting = false + }, deletePatternKeyFromList: (state, { payload }) => { remove(state.data?.keys, (key) => isEqualBuffers(key.name, payload)) @@ -427,10 +438,13 @@ export const { addKeyFailure, addKeySuccess, resetAddKey, + deleteSelectedKey, + deleteSelectedKeySuccess, + deleteSelectedKeyFailure, + deletePatternKeyFromList, deleteKey, deleteKeySuccess, deleteKeyFailure, - deletePatternKeyFromList, editPatternKeyFromList, editPatternKeyTTLFromList, setPatternSearchMatch, @@ -841,15 +855,61 @@ export function addStreamKey( return addTypedKey(data, KeyTypes.Stream, onSuccessAction, onFailAction) } +// Asynchronous thunk action +export function deleteSelectedKeyAction( + key: RedisResponseBuffer, + onSuccessAction?: () => void +) { + return async (dispatch: AppDispatch, stateInit: () => RootState) => { + dispatch(deleteSelectedKey()) + + try { + const state = stateInit() + const { encoding } = state.app.info + const { status } = await apiService.delete( + getUrl( + state.connections.instances?.connectedInstance?.id ?? '', + ApiEndpoints.KEYS + ), + { + data: { keyNames: [key] }, + params: { encoding }, + } + ) + + if (isStatusSuccessful(status)) { + sendEventTelemetry({ + event: getBasedOnViewTypeEvent( + state.browser.keys?.viewType, + TelemetryEvent.BROWSER_KEYS_DELETED, + TelemetryEvent.TREE_VIEW_KEYS_DELETED + ), + eventData: { + databaseId: state.connections.instances?.connectedInstance?.id, + numberOfDeletedKeys: 1, + source: 'keyValue', + } + }) + dispatch(deleteSelectedKeySuccess()) + dispatch(deleteKeyFromList(key)) + onSuccessAction?.() + dispatch(addMessageNotification(successMessages.DELETED_KEY(key))) + } + } catch (error) { + const errorMessage = getApiErrorMessage(error as AxiosError) + dispatch(addErrorNotification(error as AxiosError)) + dispatch(deleteSelectedKeyFailure(errorMessage)) + } + } +} + // Asynchronous thunk action export function deleteKeyAction( key: RedisResponseBuffer, - telemetryData: Record = {}, onSuccessAction?: () => void ) { return async (dispatch: AppDispatch, stateInit: () => RootState) => { dispatch(deleteKey()) - try { const state = stateInit() const { encoding } = state.app.info @@ -874,19 +934,17 @@ export function deleteKeyAction( eventData: { databaseId: state.connections.instances?.connectedInstance?.id, numberOfDeletedKeys: 1, - ...telemetryData + source: 'keyList', } }) - console.log(sendEventTelemetry) dispatch(deleteKeySuccess()) dispatch(deleteKeyFromList(key)) onSuccessAction?.() dispatch(addMessageNotification(successMessages.DELETED_KEY(key))) } } catch (error) { - const errorMessage = getApiErrorMessage(error) - dispatch(addErrorNotification(error)) - dispatch(deleteKeyFailure(errorMessage)) + dispatch(addErrorNotification(error as AxiosError)) + dispatch(deleteKeyFailure()) } } } @@ -959,7 +1017,7 @@ export function editKeyTTL(key: RedisResponseBuffer, ttl: number) { dispatch(editKeyTTLFromList([key, ttl])) dispatch(fetchKeyInfo(key)) } else { - dispatch(deleteKeySuccess()) + dispatch(deleteSelectedKeySuccess()) dispatch(deleteKeyFromList(key)) } dispatch(defaultSelectedKeyActionSuccess()) diff --git a/redisinsight/ui/src/slices/browser/list.ts b/redisinsight/ui/src/slices/browser/list.ts index 9ee2deae9f..e64596bb3d 100644 --- a/redisinsight/ui/src/slices/browser/list.ts +++ b/redisinsight/ui/src/slices/browser/list.ts @@ -26,7 +26,7 @@ import { refreshKeyInfoAction, fetchKeyInfo, deleteKeyFromList, - deleteKeySuccess, + deleteSelectedKeySuccess, updateSelectedKeyRefreshTime, } from './keys' import { StateList } from '../interfaces/list' @@ -461,7 +461,7 @@ export function deleteListElementsAction( ) )) } else { - dispatch(deleteKeySuccess()) + dispatch(deleteSelectedKeySuccess()) dispatch(deleteKeyFromList(data.keyName)) dispatch(addMessageNotification(successMessages.DELETED_KEY(data.keyName))) } diff --git a/redisinsight/ui/src/slices/browser/set.ts b/redisinsight/ui/src/slices/browser/set.ts index b867f96f75..e3c98773f3 100644 --- a/redisinsight/ui/src/slices/browser/set.ts +++ b/redisinsight/ui/src/slices/browser/set.ts @@ -13,7 +13,7 @@ import { } from 'apiSrc/modules/browser/dto/set.dto' import { deleteKeyFromList, - deleteKeySuccess, + deleteSelectedKeySuccess, fetchKeyInfo, refreshKeyInfoAction, updateSelectedKeyRefreshTime, @@ -348,7 +348,7 @@ export function deleteSetMembers( ) )) } else { - dispatch(deleteKeySuccess()) + dispatch(deleteSelectedKeySuccess()) dispatch(deleteKeyFromList(key)) dispatch(addMessageNotification(successMessages.DELETED_KEY(key))) } diff --git a/redisinsight/ui/src/slices/browser/zset.ts b/redisinsight/ui/src/slices/browser/zset.ts index ef17b025ed..064e9d60b6 100644 --- a/redisinsight/ui/src/slices/browser/zset.ts +++ b/redisinsight/ui/src/slices/browser/zset.ts @@ -16,7 +16,7 @@ import { } from 'apiSrc/modules/browser/dto' import { deleteKeyFromList, - deleteKeySuccess, + deleteSelectedKeySuccess, fetchKeyInfo, refreshKeyInfoAction, updateSelectedKeyRefreshTime, @@ -389,7 +389,7 @@ export function deleteZSetMembers( ) ) } else { - dispatch(deleteKeySuccess()) + dispatch(deleteSelectedKeySuccess()) dispatch(deleteKeyFromList(key)) dispatch(addMessageNotification(successMessages.DELETED_KEY(key))) } diff --git a/redisinsight/ui/src/slices/interfaces/keys.ts b/redisinsight/ui/src/slices/interfaces/keys.ts index ce732a2229..ac5a02b1f4 100644 --- a/redisinsight/ui/src/slices/interfaces/keys.ts +++ b/redisinsight/ui/src/slices/interfaces/keys.ts @@ -23,6 +23,7 @@ export enum SearchMode { export interface KeysStore { loading: boolean + deleting: boolean error: string search: string filter: Nullable diff --git a/redisinsight/ui/src/slices/tests/browser/hash.spec.ts b/redisinsight/ui/src/slices/tests/browser/hash.spec.ts index 7022652149..ab292d8af1 100644 --- a/redisinsight/ui/src/slices/tests/browser/hash.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/hash.spec.ts @@ -13,7 +13,7 @@ import { deleteRedisearchKeyFromList } from 'uiSrc/slices/browser/redisearch' import { defaultSelectedKeyAction, refreshKeyInfo, - deleteKeySuccess, + deleteSelectedKeySuccess, updateSelectedKeyRefreshTime, } from '../../browser/keys' import reducer, { @@ -641,7 +641,7 @@ describe('hash slice', () => { removeHashFields(), removeHashFieldsSuccess(), removeFieldsFromList(fields), - deleteKeySuccess(), + deleteSelectedKeySuccess(), deleteRedisearchKeyFromList(key), addMessageNotification(successMessages.DELETED_KEY(key)) ] diff --git a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts index b91b5ac6c3..ba4423e8ba 100644 --- a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts @@ -30,10 +30,14 @@ import reducer, { defaultSelectedKeyAction, defaultSelectedKeyActionFailure, defaultSelectedKeyActionSuccess, + deleteSelectedKey, + deleteSelectedKeyAction, + deleteSelectedKeyFailure, + deleteSelectedKeySuccess, deleteKey, - deleteKeyAction, - deleteKeyFailure, deleteKeySuccess, + deleteKeyFailure, + deleteKeyAction, deletePatternHistoryAction, deletePatternKeyFromList, deleteSearchHistory, @@ -594,7 +598,7 @@ describe('keys slice', () => { }) }) - describe('deleteKey', () => { + describe('deleteSelectedKey', () => { it('should properly set the state before the delete key', () => { // Arrange const state = { @@ -607,7 +611,7 @@ describe('keys slice', () => { } // Act - const nextState = reducer(initialState, deleteKey()) + const nextState = reducer(initialState, deleteSelectedKey()) // Assert const rootState = Object.assign(initialStateDefault, { @@ -617,7 +621,7 @@ describe('keys slice', () => { }) }) - describe('deleteKeySuccess', () => { + describe('deleteSelectedKeySuccess', () => { it('should properly set the state before the delete key', () => { // Arrange const state = { @@ -630,7 +634,7 @@ describe('keys slice', () => { } // Act - const nextState = reducer(initialState, deleteKeySuccess()) + const nextState = reducer(initialState, deleteSelectedKeySuccess()) // Assert const rootState = Object.assign(initialStateDefault, { @@ -640,7 +644,7 @@ describe('keys slice', () => { }) }) - describe('deleteKeyFailure', () => { + describe('deleteSelectedKeyFailure', () => { it('should properly set the state before the delete key', () => { // Arrange const data = 'some error' @@ -654,7 +658,72 @@ describe('keys slice', () => { } // Act - const nextState = reducer(initialState, deleteKeyFailure(data)) + const nextState = reducer(initialState, deleteSelectedKeyFailure(data)) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { keys: nextState }, + }) + expect(keysSelector(rootState)).toEqual(state) + }) + }) + + describe('deleteKey', () => { + it('should properly set the state before the delete key', () => { + // Arrange + const state = { + ...initialState, + deleting: true + } + + // Act + const nextState = reducer(initialState, deleteKey()) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { keys: nextState }, + }) + expect(keysSelector(rootState)).toEqual(state) + }) + }) + + describe('deleteKeySuccess', () => { + it('should properly set the state after the delete key', () => { + // Arrange + const currentState = { + ...initialState, + deleting: true + } + const state = { + ...initialState, + deleting: false + } + + // Act + const nextState = reducer(currentState, deleteKeySuccess()) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { keys: nextState }, + }) + expect(keysSelector(rootState)).toEqual(state) + }) + }) + + describe('deleteKeyFailure', () => { + it('should properly set the state after the delete key', () => { + // Arrange + const currentState = { + ...initialState, + deleting: true + } + const state = { + ...initialState, + deleting: false + } + + // Act + const nextState = reducer(currentState, deleteKeyFailure()) // Assert const rootState = Object.assign(initialStateDefault, { @@ -1406,8 +1475,35 @@ describe('keys slice', () => { }) }) + describe('deleteSelectedKey', () => { + it('should call proper actions on success', async () => { + // Arrange + const data = { + name: stringToBuffer('string'), + type: KeyTypes.String, + ttl: -1, + size: 10, + } + const responsePayload = { data, status: 200 } + + apiService.delete = jest.fn().mockResolvedValue(responsePayload) + + // Act + await store.dispatch(deleteSelectedKeyAction(data.name)) + + // Assert + const expectedActions = [ + deleteSelectedKey(), + deleteSelectedKeySuccess(), + deletePatternKeyFromList(data.name), + addMessageNotification(successMessages.DELETED_KEY(data.name)), + ] + expect(store.getActions()).toEqual(expectedActions) + }) + }) + describe('deleteKey', () => { - it('call both deleteKey, deleteKeySuccess and deletePatternKeyFromList when delete is successed', async () => { + it('should call proper actions on success', async () => { // Arrange const data = { name: stringToBuffer('string'), @@ -1488,7 +1584,7 @@ describe('keys slice', () => { // Assert const expectedActions = [ defaultSelectedKeyAction(), - deleteKeySuccess(), + deleteSelectedKeySuccess(), deletePatternKeyFromList(key), defaultSelectedKeyActionSuccess(), ] diff --git a/redisinsight/ui/src/slices/tests/browser/list.spec.ts b/redisinsight/ui/src/slices/tests/browser/list.spec.ts index 16d100a545..22c498e642 100644 --- a/redisinsight/ui/src/slices/tests/browser/list.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/list.spec.ts @@ -13,7 +13,7 @@ import { deleteRedisearchKeyFromList } from 'uiSrc/slices/browser/redisearch' import { DeleteListElementsDto, PushElementToListDto } from 'apiSrc/modules/browser/dto' import { defaultSelectedKeyAction, - deleteKeySuccess, + deleteSelectedKeySuccess, refreshKeyInfo, updateSelectedKeyRefreshTime, } from '../../browser/keys' @@ -873,7 +873,7 @@ describe('list slice', () => { const expectedActions = [ deleteListElements(), deleteListElementsSuccess(), - deleteKeySuccess(), + deleteSelectedKeySuccess(), deleteRedisearchKeyFromList(data.keyName), addMessageNotification(successMessages.DELETED_KEY(data.keyName)) ] diff --git a/redisinsight/ui/src/slices/tests/browser/set.spec.ts b/redisinsight/ui/src/slices/tests/browser/set.spec.ts index da1ff7f282..34d5f1118a 100644 --- a/redisinsight/ui/src/slices/tests/browser/set.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/set.spec.ts @@ -13,7 +13,7 @@ import { stringToBuffer } from 'uiSrc/utils' import { deleteRedisearchKeyFromList } from 'uiSrc/slices/browser/redisearch' import { defaultSelectedKeyAction, - deleteKeySuccess, + deleteSelectedKeySuccess, refreshKeyInfo, updateSelectedKeyRefreshTime, } from '../../browser/keys' @@ -674,7 +674,7 @@ describe('set slice', () => { removeSetMembers(), removeSetMembersSuccess(), removeMembersFromList(members), - deleteKeySuccess(), + deleteSelectedKeySuccess(), deleteRedisearchKeyFromList(key), addMessageNotification(successMessages.DELETED_KEY(key)) ] diff --git a/redisinsight/ui/src/slices/tests/browser/zset.spec.ts b/redisinsight/ui/src/slices/tests/browser/zset.spec.ts index e2990f7a13..2b013d6f23 100644 --- a/redisinsight/ui/src/slices/tests/browser/zset.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/zset.spec.ts @@ -1,7 +1,7 @@ import { cloneDeep } from 'lodash' +import { AxiosError } from 'axios' import { SortOrder } from 'uiSrc/constants' import { apiService } from 'uiSrc/services' -import { AxiosError } from 'axios' import { cleanup, initialStateDefault, @@ -15,7 +15,7 @@ import { deleteRedisearchKeyFromList } from 'uiSrc/slices/browser/redisearch' import { AddMembersToZSetDto, ZSetMemberDto } from 'apiSrc/modules/browser/dto' import { defaultSelectedKeyAction, - deleteKeySuccess, + deleteSelectedKeySuccess, refreshKeyInfo, updateSelectedKeyRefreshTime, } from '../../browser/keys' @@ -965,7 +965,7 @@ describe('zset slice', () => { removeZsetMembers(), removeZsetMembersSuccess(), removeMembersFromList(members), - deleteKeySuccess(), + deleteSelectedKeySuccess(), deleteRedisearchKeyFromList(key), addMessageNotification(successMessages.DELETED_KEY(key)) ] diff --git a/tests/e2e/tests/regression/browser/ttl-format.e2e.ts b/tests/e2e/tests/regression/browser/ttl-format.e2e.ts index b63ca567f3..2c85b8e288 100644 --- a/tests/e2e/tests/regression/browser/ttl-format.e2e.ts +++ b/tests/e2e/tests/regression/browser/ttl-format.e2e.ts @@ -32,7 +32,7 @@ fixture `TTL values in Keys Table` .afterEach(async() => { // Clear and delete database for (let i = 0; i < keysData.length; i++) { - await browserPage.deleteKey(); + await browserPage.deleteSelectedKey(); } await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); diff --git a/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts b/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts index d2b0b37328..4534b9fa35 100644 --- a/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts +++ b/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts @@ -66,7 +66,7 @@ test('Verify that when user deletes the key he can see the key is removed from t const keyFolder = await browserPage.treeViewDeviceFolder.nth(2).textContent; await t.click(browserPage.treeViewDeviceFolder.nth(2)); await t.click(browserPage.treeViewDeviceFolder.nth(5)); - await browserPage.deleteKey(); + await browserPage.deleteSelectedKey(); // Verify the results await t.expect(browserPage.treeViewDeviceFolder.nth(2).exists).notOk('The previous folder is not closed after removing key folder'); await t.click(browserPage.treeViewDeviceFolder); From 4e7f4781447ce0e72733b4433907da8cf634f9f0 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 6 Apr 2023 11:05:47 +0300 Subject: [PATCH 019/106] #RI-4357 + #RI-4358 fixes --- redisinsight/ui/src/utils/commands.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/redisinsight/ui/src/utils/commands.ts b/redisinsight/ui/src/utils/commands.ts index 36a2ee8016..15598e13a8 100644 --- a/redisinsight/ui/src/utils/commands.ts +++ b/redisinsight/ui/src/utils/commands.ts @@ -15,6 +15,7 @@ enum ArgumentType { BLOCK = 'block', PURE_TOKEN = 'pure-token', COMMAND = 'command', + ENUM = 'enum', // temporary for backward compatibility } export class Argument { @@ -36,6 +37,8 @@ export class Argument { protected arguments: Argument[] + protected enum: string[] + constructor(data: Record) { this.stack = [] this.name = data?.name @@ -44,12 +47,13 @@ export class Argument { this.multiple = !!data?.multiple this.multipleToken = !!data?.multiple_token this.token = data?.token - this.display = data?.display_text || this.name + this.display = data?.display_text || data?.command || this.name + this.enum = data?.enum // todo: why we need this? if (this.token === '') { this.token = '""' } - this.arguments = ((data?.arguments || []) as Record[]) + this.arguments = ((data?.arguments || data?.block || []) as Record[]) .map((childArg) => new Argument(childArg)) } @@ -71,6 +75,9 @@ export class Argument { case ArgumentType.ONEOF: args += this.arguments.map((arg) => arg.syntax()).join(' | ') break + case ArgumentType.ENUM: + args += this.enum?.join(' | ') + break case ArgumentType.PURE_TOKEN: break default: From 4db9d3e5cff4141e590d1243c7201992884bd51d Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 6 Apr 2023 12:22:11 +0300 Subject: [PATCH 020/106] #RI-4356 remove '<' and '>' symbols --- .../command-helper/CommandHelperWrapper.spec.tsx | 8 ++++---- redisinsight/ui/src/utils/commands.ts | 6 +++--- redisinsight/ui/src/utils/tests/commands.spec.ts | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx b/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx index 3dea4ac2d3..ac6945b0c6 100644 --- a/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx +++ b/redisinsight/ui/src/components/command-helper/CommandHelperWrapper.spec.tsx @@ -67,16 +67,16 @@ const mockedCommands: IMockedCommands[] = [ { matchedCommand: 'bitfield', argStr: - 'BITFIELD key [GET encoding offset | [OVERFLOW ] [GET encoding offset | [OVERFLOW ] ...]]', + 'BITFIELD key [GET encoding offset | [OVERFLOW WRAP | SAT | FAIL] SET encoding offset value | INCRBY encoding offset increment [GET encoding offset | [OVERFLOW WRAP | SAT | FAIL] SET encoding offset value | INCRBY encoding offset increment ...]]', argListText: - 'Arguments:RequiredkeyMultiple[GET encoding offset | [OVERFLOW ] ]', + 'Arguments:RequiredkeyMultiple[GET encoding offset | [OVERFLOW WRAP | SAT | FAIL] SET encoding offset value | INCRBY encoding offset increment]', }, { matchedCommand: 'client kill', argStr: - 'CLIENT KILL ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', + 'CLIENT KILL ip:port | [ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] [[ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] ...]', argListText: - 'Arguments:Required] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', + 'Arguments:Requiredip:port | [ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] [[ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] ...]', }, { matchedCommand: 'geoadd', diff --git a/redisinsight/ui/src/utils/commands.ts b/redisinsight/ui/src/utils/commands.ts index 15598e13a8..dc3aad36c4 100644 --- a/redisinsight/ui/src/utils/commands.ts +++ b/redisinsight/ui/src/utils/commands.ts @@ -107,9 +107,9 @@ export class Argument { multipleSyntax += args } - if (this.type === ArgumentType.ONEOF && (!this.optional || this.token)) { - multipleSyntax = `<${multipleSyntax}>` - } + // if (this.type === ArgumentType.ONEOF && (!this.optional || this.token)) { + // multipleSyntax = `<${multipleSyntax}>` + // } syntax += multipleSyntax diff --git a/redisinsight/ui/src/utils/tests/commands.spec.ts b/redisinsight/ui/src/utils/tests/commands.spec.ts index 61e8e73a9e..00840b48c6 100644 --- a/redisinsight/ui/src/utils/tests/commands.spec.ts +++ b/redisinsight/ui/src/utils/tests/commands.spec.ts @@ -45,11 +45,11 @@ const mockedCommands: IMockedCommands[] = [ 'BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]', argsNamesWithEnumsMock: [ 'key', - '[GET encoding offset | [OVERFLOW ] [GET encoding offset | [OVERFLOW ] ...]]', + '[GET encoding offset | [OVERFLOW WRAP | SAT | FAIL] SET encoding offset value | INCRBY encoding offset increment [GET encoding offset | [OVERFLOW WRAP | SAT | FAIL] SET encoding offset value | INCRBY encoding offset increment ...]]', ], argsNamesMock: [ 'key', - '[GET encoding offset | [OVERFLOW ] ]', + '[GET encoding offset | [OVERFLOW WRAP | SAT | FAIL] SET encoding offset value | INCRBY encoding offset increment]', ], complexityShortMock: 'O(1)', }, @@ -58,10 +58,10 @@ const mockedCommands: IMockedCommands[] = [ argStr: 'CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [USER username] [ADDR ip:port] [LADDR ip:port] [SKIPME yes/no]', argsNamesWithEnumsMock: [ - '] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', + 'ip:port | [ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] [[ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] ...]', ], argsNamesMock: [ - '] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] [[ID client-id] | [TYPE ] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME ] ...]>>', + 'ip:port | [ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] [[ID client-id] | [TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB] | [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME YES | NO] ...]', ], complexityShortMock: 'O(N)', }, From 66241423e66bcc5eb727a6a1b179edaf99b417df Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Thu, 6 Apr 2023 12:51:16 +0200 Subject: [PATCH 021/106] add 2 tests related to delete of Key form List view --- tests/e2e/pageObjects/browser-page.ts | 11 ++++++ .../browser/keylist-actions.e2e.ts | 38 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts diff --git a/tests/e2e/pageObjects/browser-page.ts b/tests/e2e/pageObjects/browser-page.ts index 2ac3e231f9..c9ea64f523 100644 --- a/tests/e2e/pageObjects/browser-page.ts +++ b/tests/e2e/pageObjects/browser-page.ts @@ -28,6 +28,7 @@ export class BrowserPage { streamDeleteButton = Selector('[data-testid=stream-delete-btn]'); myRedisDbIcon = Selector('[data-testid=my-redis-db-icon]'); deleteKeyButton = Selector('[data-testid=delete-key-btn]'); + submitDeleteKeyButton = Selector('[data-testid=submit-delete-key]'); confirmDeleteKeyButton = Selector('[data-testid=delete-key-confirm-btn]'); editKeyTTLButton = Selector('[data-testid=edit-ttl-btn]'); closeEditTTL = Selector('[data-testid=cancel-btn]'); @@ -582,6 +583,16 @@ export class BrowserPage { } } + /** + * Delete Key By name after Hovering + */ + async deleteKeyByNameFromList(keyName: string): Promise { + await this.searchByKeyName(keyName); + await t.hover(this.keyNameInTheList); + await t.click(Selector(`[data-testid="delete-key-btn-${keyName}"]`)); + await t.click(this.submitDeleteKeyButton); + } + /** * Edit key name from details * @param keyName The name of the key diff --git a/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts b/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts new file mode 100644 index 0000000000..2ca853eb5f --- /dev/null +++ b/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts @@ -0,0 +1,38 @@ +import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; +import { BrowserPage } from '../../../pageObjects'; +import { + commonUrl, + ossStandaloneConfig +} from '../../../helpers/conf'; +import { rte } from '../../../helpers/constants'; +import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; +import { Common } from '../../../helpers/common'; + +const browserPage = new BrowserPage(); +const common = new Common(); + +const keyName = common.generateWord(10); +fixture `Actions with Key List on Browser page` + .meta({type: 'critical_path', rte: rte.standalone}) + .page(commonUrl) + .beforeEach(async() => { + await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); + }) + .afterEach(async() => { + // Delete database + await deleteStandaloneDatabaseApi(ossStandaloneConfig); + }); +test('Verify that user can delete key in List mode', async t => { + // Add new key + await browserPage.addStringKey(keyName); + await browserPage.deleteKeyByNameFromList(keyName); + await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyName)).notOk('The Key wasn\'t deleted'); +}); + +test.only('Verify that user can delete key in Tree view', async t => { + // Add new key + await browserPage.addStringKey(keyName); + await t.click(browserPage.treeViewButton); + await browserPage.deleteKeyByNameFromList(keyName); + await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyName)).notOk('The Key wasn\'t deleted'); +}); From fe443bd8a285178de97da0b913b86cd917a92d6b Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Thu, 6 Apr 2023 14:24:43 +0200 Subject: [PATCH 022/106] #RI-4295 - fix pr comments --- .../e2e/tests/critical-path/browser/keylist-actions.e2e.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts b/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts index 2ca853eb5f..e3ff6db538 100644 --- a/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/keylist-actions.e2e.ts @@ -11,12 +11,14 @@ import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); const common = new Common(); -const keyName = common.generateWord(10); +let keyName: string; + fixture `Actions with Key List on Browser page` .meta({type: 'critical_path', rte: rte.standalone}) .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); + keyName = common.generateWord(10); }) .afterEach(async() => { // Delete database @@ -29,7 +31,7 @@ test('Verify that user can delete key in List mode', async t => { await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyName)).notOk('The Key wasn\'t deleted'); }); -test.only('Verify that user can delete key in Tree view', async t => { +test('Verify that user can delete key in Tree view', async t => { // Add new key await browserPage.addStringKey(keyName); await t.click(browserPage.treeViewButton); From b457b7735c0865f93b67e871eaf727933756ce1f Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Fri, 7 Apr 2023 15:55:56 +0200 Subject: [PATCH 023/106] #4369 - update delete button for list --- .../pages/browser/components/key-list/KeyList.tsx | 14 +++++++------- .../browser/components/key-list/styles.module.scss | 12 ++++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx index 849a9df741..1f038a06a4 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx @@ -325,7 +325,7 @@ const KeyList = forwardRef((props: Props, ref) => { { id: 'nameString', label: 'Key', - minWidth: 100, + minWidth: 94, truncateText: true, render: (cellData: string) => { if (isUndefined(cellData)) { @@ -372,7 +372,7 @@ const KeyList = forwardRef((props: Props, ref) => { if (cellData === -1) { return ( @@ -382,7 +382,7 @@ const KeyList = forwardRef((props: Props, ref) => { } return ( { { id: 'size', label: 'Size', - absoluteWidth: 84, - minWidth: 84, + absoluteWidth: 90, + minWidth: 90, alignment: TableCellAlignment.Right, textAlignment: TableCellTextAlignment.Right, render: ( @@ -437,7 +437,7 @@ const KeyList = forwardRef((props: Props, ref) => {
@@ -457,7 +457,7 @@ const KeyList = forwardRef((props: Props, ref) => {
setDeletePopoverIndex(undefined)} diff --git a/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss b/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss index 36f23ab048..9b75dab2e9 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/key-list/styles.module.scss @@ -20,12 +20,16 @@ .table { height: 100%; + .deleteAnchor { + margin-right: -10px; + } + :global { .ReactVirtualized__Table__row { .ReactVirtualized__Table__rowColumn { - .hideOnHover { - display: block; - &.hide { display: none !important; } + .moveOnHover { + transition: transform ease 0.3s; + &.hide { transform: translateX(-8px) } } .showOnHover { display: none; @@ -34,7 +38,7 @@ &:hover { .ReactVirtualized__Table__rowColumn { - .hideOnHover { display: none; } + .moveOnHover { transform: translateX(-8px) } .showOnHover { display: block; } } } From 5a3e0344990416b2b0dd43bcd67a46d8ba06d2e8 Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 9 Apr 2023 14:37:56 +0300 Subject: [PATCH 024/106] #RI-4380 BE Upload data in bulk base implementation --- .../bulk-actions/bulk-actions.module.ts | 4 + .../bulk-actions/bulk-import.controller.ts | 44 +++++++ .../bulk-actions/bulk-import.service.ts | 119 ++++++++++++++++++ .../modules/bulk-actions/constants/index.ts | 1 + .../dto/upload-import-file.dto.ts | 17 +++ .../models/bulk-action-summary.ts | 4 + 6 files changed, 189 insertions(+) create mode 100644 redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts create mode 100644 redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts create mode 100644 redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-actions.module.ts b/redisinsight/api/src/modules/bulk-actions/bulk-actions.module.ts index 6ba829021b..5b6e842129 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-actions.module.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-actions.module.ts @@ -3,13 +3,17 @@ import { BulkActionsService } from 'src/modules/bulk-actions/bulk-actions.servic import { BulkActionsProvider } from 'src/modules/bulk-actions/providers/bulk-actions.provider'; import { BulkActionsGateway } from 'src/modules/bulk-actions/bulk-actions.gateway'; import { BulkActionsAnalyticsService } from 'src/modules/bulk-actions/bulk-actions-analytics.service'; +import { BulkImportController } from 'src/modules/bulk-actions/bulk-import.controller'; +import { BulkImportService } from 'src/modules/bulk-actions/bulk-import.service'; @Module({ + controllers: [BulkImportController], providers: [ BulkActionsGateway, BulkActionsService, BulkActionsProvider, BulkActionsAnalyticsService, + BulkImportService, ], }) export class BulkActionsModule {} diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts new file mode 100644 index 0000000000..9943a66c2f --- /dev/null +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts @@ -0,0 +1,44 @@ +import { + Body, + ClassSerializerInterceptor, + Controller, Post, + UseInterceptors, UsePipes, ValidationPipe, +} from '@nestjs/common'; +import { + ApiConsumes, ApiTags, +} from '@nestjs/swagger'; +import { ApiEndpoint } from 'src/decorators/api-endpoint.decorator'; +import { FormDataRequest } from 'nestjs-form-data'; +import { BulkImportService } from 'src/modules/bulk-actions/bulk-import.service'; +import { UploadImportFileDto } from 'src/modules/bulk-actions/dto/upload-import-file.dto'; +import { ClientMetadataParam } from 'src/common/decorators'; +import { ClientMetadata } from 'src/common/models'; +import { IBulkActionOverview } from 'src/modules/bulk-actions/interfaces/bulk-action-overview.interface'; + +@UsePipes(new ValidationPipe({ transform: true })) +@UseInterceptors(ClassSerializerInterceptor) +@ApiTags('Bulk Actions') +@Controller('/bulk-actions/:id') +export class BulkImportController { + constructor(private readonly service: BulkImportService) {} + + @Post('import') + @ApiConsumes('multipart/form-data') + @FormDataRequest() + @ApiEndpoint({ + description: 'Import data from file', + responses: [ + { + type: Object, + }, + ], + }) + async import( + @Body() dto: UploadImportFileDto, + @ClientMetadataParam({ + databaseIdParam: 'id', + }) clientMetadata: ClientMetadata, + ): Promise { + return this.service.import(clientMetadata, dto); + } +} diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts new file mode 100644 index 0000000000..cdaf305fdf --- /dev/null +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts @@ -0,0 +1,119 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Readable } from 'stream'; +import * as readline from 'readline'; +import { wrapHttpError } from 'src/common/utils'; +import { UploadImportFileDto } from 'src/modules/bulk-actions/dto/upload-import-file.dto'; +import { DatabaseConnectionService } from 'src/modules/database/database-connection.service'; +import { ClientMetadata } from 'src/common/models'; +import { splitCliCommandLine } from 'src/utils/cli-helper'; +import { BulkActionSummary } from 'src/modules/bulk-actions/models/bulk-action-summary'; +import { IBulkActionOverview } from 'src/modules/bulk-actions/interfaces/bulk-action-overview.interface'; +import { BulkActionStatus, BulkActionType } from 'src/modules/bulk-actions/constants'; + +const BATCH_LIMIT = 10_000; + +@Injectable() +export class BulkImportService { + private logger = new Logger('BulkImportService'); + + constructor( + private readonly databaseConnectionService: DatabaseConnectionService, + ) {} + + private async executeBatch(client, batch: any[]): Promise { + const result = new BulkActionSummary(); + result.addProcessed(batch.length); + + try { + if (client?.isCluster) { + await Promise.all(batch.map(async ([command, args]) => { + try { + await client.call(command, args); + result.addSuccess(1); + } catch (e) { + result.addFailed(1); + } + })); + } else { + (await client.pipeline(batch).exec()).forEach(([err]) => { + if (err) { + result.addFailed(1); + } else { + result.addSuccess(1); + } + }); + } + } catch (e) { + this.logger.error('Unable to execute batch of commands', e); + result.addFailed(batch.length); + } + + return result; + } + + /** + * @param clientMetadata + * @param dto + */ + public async import(clientMetadata: ClientMetadata, dto: UploadImportFileDto): Promise { + const result: IBulkActionOverview = { + id: 'empty', + databaseId: clientMetadata.databaseId, + type: BulkActionType.Import, + summary: { + processed: 0, + succeed: 0, + failed: 0, + errors: [], + }, + progress: null, + filter: null, + status: BulkActionStatus.Completed, + duration: Date.now(), + }; + + try { + const client = await this.databaseConnectionService.createClient(clientMetadata); + + const stream = Readable.from(dto.file.buffer); + let batch = []; + + const batchResults: Promise[] = []; + + await new Promise((res) => { + const rl = readline.createInterface(stream); + rl.on('line', (line) => { + const [command, ...args] = splitCliCommandLine((line)); + if (batch.length >= BATCH_LIMIT) { + batchResults.push(this.executeBatch(client, batch)); + batch = []; + } else { + batch.push([command.toLowerCase(), args]); + } + }); + rl.on('error', (error) => { + result.summary.errors.push(error); + result.status = BulkActionStatus.Failed; + res(null); + }); + rl.on('close', () => { + batchResults.push(this.executeBatch(client, batch)); + res(null); + }); + }); + + (await Promise.all(batchResults)).forEach((batchResult) => { + result.summary.processed += batchResult.getOverview().processed; + result.summary.succeed += batchResult.getOverview().succeed; + result.summary.failed += batchResult.getOverview().failed; + }); + + result.duration = Date.now() - result.duration; + + return result; + } catch (e) { + this.logger.error('Unable to process an import file', e); + throw wrapHttpError(e); + } + } +} diff --git a/redisinsight/api/src/modules/bulk-actions/constants/index.ts b/redisinsight/api/src/modules/bulk-actions/constants/index.ts index f7f29bdc2f..0ff821b918 100644 --- a/redisinsight/api/src/modules/bulk-actions/constants/index.ts +++ b/redisinsight/api/src/modules/bulk-actions/constants/index.ts @@ -6,6 +6,7 @@ export enum BulkActionsServerEvents { export enum BulkActionType { Delete = 'delete', + Import = 'import', } export enum BulkActionStatus { diff --git a/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts b/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts new file mode 100644 index 0000000000..92b997a7ac --- /dev/null +++ b/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts @@ -0,0 +1,17 @@ +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { IsNotEmpty } from 'class-validator'; +import { + IsFile, MaxFileSize, MemoryStoredFile, +} from 'nestjs-form-data'; + +export class UploadImportFileDto { + @ApiPropertyOptional({ + type: 'string', + format: 'binary', + description: 'Import file (with list of commands to execute', + }) + @IsNotEmpty() + @IsFile() + @MaxFileSize(100 * 1024 * 1024) + file?: MemoryStoredFile; +} diff --git a/redisinsight/api/src/modules/bulk-actions/models/bulk-action-summary.ts b/redisinsight/api/src/modules/bulk-actions/models/bulk-action-summary.ts index d93b95e9f0..22932c6660 100644 --- a/redisinsight/api/src/modules/bulk-actions/models/bulk-action-summary.ts +++ b/redisinsight/api/src/modules/bulk-actions/models/bulk-action-summary.ts @@ -17,6 +17,10 @@ export class BulkActionSummary { this.succeed += count; } + addFailed(count: number) { + this.failed += count; + } + addErrors(err: Array>) { if (err.length) { this.failed += err.length; From ed3a0bc49d483cb021cf1fdeef9e5e7d8c0778fe Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Mon, 10 Apr 2023 15:23:08 +0200 Subject: [PATCH 025/106] [refactoring] - move nav panel and profiler to components, fix part of eslint errors --- tests/e2e/.eslintrc | 3 +- tests/e2e/helpers/database.ts | 8 +- .../pageObjects/add-redis-database-page.ts | 32 ++++---- tests/e2e/pageObjects/base-page.ts | 6 ++ tests/e2e/pageObjects/browser-page.ts | 4 +- .../pageObjects/components/instance/index.ts | 5 ++ .../instance/profiler.ts} | 14 +--- .../components/navigation-panel.ts | 14 ++++ tests/e2e/pageObjects/index.ts | 8 +- tests/e2e/pageObjects/instance-page.ts | 7 ++ .../e2e/pageObjects/memory-efficiency-page.ts | 2 +- .../pageObjects/my-redis-databases-page.ts | 13 +-- tests/e2e/pageObjects/notification-page.ts | 2 +- tests/e2e/pageObjects/pub-sub-page.ts | 3 +- tests/e2e/pageObjects/slow-log-page.ts | 3 +- tests/e2e/pageObjects/workbench-page.ts | 3 +- .../critical-path/browser/bulk-delete.e2e.ts | 4 +- .../critical-path/browser/context.e2e.ts | 22 +++--- .../critical-path/browser/scan-keys.e2e.ts | 4 +- .../browser/search-capabilities.e2e.ts | 10 +-- .../database-overview/database-index.e2e.ts | 6 +- .../database-overview.e2e.ts | 10 +-- .../database/import-databases.e2e.ts | 2 +- .../enablement-area-autoupdate.e2e.ts | 2 +- .../memory-efficiency.e2e.ts | 38 ++++----- .../memory-efficiency/recommendations.e2e.ts | 18 ++--- .../memory-efficiency/top-keys-table.e2e.ts | 6 +- .../critical-path/monitor/monitor.e2e.ts | 32 ++++---- .../monitor/save-commands.e2e.ts | 52 ++++++------ .../notifications/notification-center.e2e.ts | 4 +- .../critical-path/overview/overview.e2e.ts | 6 +- .../pub-sub/subscribe-unsubscribe.e2e.ts | 18 ++--- .../critical-path/settings/settings.e2e.ts | 4 +- .../critical-path/slow-log/slow-log.e2e.ts | 10 +-- .../workbench/autocomplete.e2e.ts | 2 +- .../workbench/command-results.e2e.ts | 2 +- .../critical-path/workbench/context.e2e.ts | 6 +- .../critical-path/workbench/cypher.e2e.ts | 2 +- .../workbench/default-scripts-area.e2e.ts | 2 +- .../workbench/index-schema.e2e.ts | 2 +- .../workbench/json-workbench.e2e.ts | 2 +- .../redisearch-module-not-available.e2e.ts | 2 +- .../workbench/scripting-area.e2e.ts | 2 +- .../tests/regression/browser/context.e2e.ts | 16 ++-- .../regression/browser/format-switcher.e2e.ts | 2 +- .../browser/handle-dbsize-permissions.e2e.ts | 2 +- .../regression/browser/key-messages.e2e.ts | 2 +- .../browser/keys-all-databases.e2e.ts | 4 +- .../regression/browser/onboarding.e2e.ts | 38 ++++----- .../regression/browser/resize-columns.e2e.ts | 10 +-- .../tests/regression/browser/scan-keys.e2e.ts | 2 +- .../regression/browser/survey-link.e2e.ts | 8 +- .../regression/cli/cli-promote-workbench.ts | 4 +- .../database-overview/database-info.e2e.ts | 2 +- .../database-overview-keys.e2e.ts | 6 +- .../database-overview.e2e.ts | 2 +- .../database/database-sorting.e2e.ts | 2 +- .../tests/regression/database/edit-db.e2e.ts | 4 +- .../tests/regression/database/github.e2e.ts | 10 +-- .../regression/database/redisstack.e2e.ts | 2 +- .../tests/regression/monitor/monitor.e2e.ts | 79 +++++++++---------- .../regression/monitor/save-commands.e2e.ts | 34 ++++---- .../regression/pub-sub/debug-mode.e2e.ts | 6 +- .../pub-sub/pub-sub-oss-cluster-7.ts | 4 +- .../regression/shortcuts/shortcuts.e2e.ts | 8 +- .../regression/tree-view/tree-view.e2e.ts | 4 +- .../regression/workbench/autocomplete.e2e.ts | 2 +- .../workbench/autoexecute-button.e2e.ts | 2 +- .../workbench/command-results.e2e.ts | 4 +- .../tests/regression/workbench/context.e2e.ts | 16 ++-- .../tests/regression/workbench/cypher.e2e.ts | 2 +- .../workbench/default-scripts-area.e2e.ts | 14 ++-- .../workbench/editor-cleanup.e2e.ts | 12 +-- .../workbench/empty-command-history.e2e.ts | 2 +- .../regression/workbench/group-mode.e2e.ts | 2 +- .../workbench/history-of-results.e2e.ts | 2 +- .../workbench/import-tutorials.e2e.ts | 2 +- .../regression/workbench/raw-mode.e2e.ts | 12 +-- .../workbench/redis-stack-commands.e2e.ts | 4 +- .../redisearch-module-not-available.e2e.ts | 4 +- .../workbench/scripting-area.e2e.ts | 10 +-- .../workbench-non-auto-guides.e2e.ts | 6 +- .../workbench/workbench-pipeline.e2e.ts | 10 +-- .../workbench/workbench-re-cluster.e2e.ts | 2 +- .../database/connecting-to-the-db.e2e.ts | 2 +- .../smoke/workbench/json-workbench.e2e.ts | 2 +- .../smoke/workbench/scripting-area.e2e.ts | 2 +- 87 files changed, 392 insertions(+), 370 deletions(-) create mode 100644 tests/e2e/pageObjects/base-page.ts create mode 100644 tests/e2e/pageObjects/components/instance/index.ts rename tests/e2e/pageObjects/{monitor-page.ts => components/instance/profiler.ts} (84%) create mode 100644 tests/e2e/pageObjects/components/navigation-panel.ts create mode 100644 tests/e2e/pageObjects/instance-page.ts diff --git a/tests/e2e/.eslintrc b/tests/e2e/.eslintrc index b7b6aad8f6..bd44b689c1 100644 --- a/tests/e2e/.eslintrc +++ b/tests/e2e/.eslintrc @@ -52,7 +52,7 @@ // ******************** NOT README STANDARDS ******************** //Limits the length of a row to 400 "max-len": ["error", 400], - + //Forcing that all of the comments are with spaces. "spaced-comment": "off", //Forcing not to have random spaces. @@ -128,6 +128,7 @@ ], //Enforce a convention in module import order "import/order": "error", + "object-curly-spacing": ["error", "always"], //Disallow duplicate imports "import/no-duplicates": "error", /* Below are extended rules regarding the recommended typescript rule package...*/ diff --git a/tests/e2e/helpers/database.ts b/tests/e2e/helpers/database.ts index a0452f6fff..37b8cd06d1 100644 --- a/tests/e2e/helpers/database.ts +++ b/tests/e2e/helpers/database.ts @@ -228,7 +228,7 @@ export async function acceptLicenseAndConnectToRedisStack(): Promise { await acceptLicenseTerms(); //Connect to DB await t - .click(myRedisDatabasePage.myRedisDBButton) + .click(myRedisDatabasePage.NavigationPanel.myRedisDBButton) .click(addRedisDatabasePage.connectToRedisStackButton); } @@ -247,7 +247,7 @@ export async function clearDatabaseInCli(): Promise { * @param databaseName The database name */ export async function deleteDatabase(databaseName: string): Promise { - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); if (await addRedisDatabasePage.addDatabaseButton.exists) { await deleteDatabaseByNameApi(databaseName); } @@ -258,7 +258,7 @@ export async function deleteDatabase(databaseName: string): Promise { * @param databaseName The database name */ export async function deleteCustomDatabase(databaseName: string): Promise { - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); if (await addRedisDatabasePage.addDatabaseButton.exists) { await myRedisDatabasePage.deleteDatabaseByName(databaseName); } @@ -301,4 +301,4 @@ export async function deleteDatabaseByNameApi(databaseName: string): Promise { const commandArray = command.split(' '); for (const value of commandArray) { - await t.expect(this.monitorCommandLinePart.withText(value).exists).ok({timeout: 6000}); + await t.expect(this.monitorCommandLinePart.withText(value).exists).ok({ timeout: 6000 }); } if (!!parameters) { for (const argument of parameters) { - await t.expect(this.monitorCommandLinePart.withText(argument).exists).ok({timeout: 6000}); + await t.expect(this.monitorCommandLinePart.withText(argument).exists).ok({ timeout: 6000 }); } } } diff --git a/tests/e2e/pageObjects/components/navigation-panel.ts b/tests/e2e/pageObjects/components/navigation-panel.ts new file mode 100644 index 0000000000..2722c07b8c --- /dev/null +++ b/tests/e2e/pageObjects/components/navigation-panel.ts @@ -0,0 +1,14 @@ +import { Selector } from 'testcafe'; + +export class NavigationPanel { + workbenchButton = Selector('[data-testid=workbench-page-btn]'); + analysisPageButton = Selector('[data-testid=analytics-page-btn]'); + browserButton = Selector('[data-testid=browser-page-btn]'); + pubSubButton = Selector('[data-testid=pub-sub-page-btn]'); + myRedisDBButton = Selector('[data-test-subj=home-page-btn]', { timeout: 1000 }); + + notificationCenterButton = Selector('[data-testid=notification-menu-button]'); + settingsButton = Selector('[data-testid=settings-page-btn]'); + helpCenterButton = Selector('[data-testid=help-menu-button]'); + githubButton = Selector('[data-testid=github-repo-icon]'); +} diff --git a/tests/e2e/pageObjects/index.ts b/tests/e2e/pageObjects/index.ts index b1608d1fff..86f3504bb7 100644 --- a/tests/e2e/pageObjects/index.ts +++ b/tests/e2e/pageObjects/index.ts @@ -11,12 +11,13 @@ import { DatabaseOverviewPage } from './database-overview-page'; import { HelpCenterPage } from './help-center-page'; import { ShortcutsPage } from './shortcuts-page'; import { MemoryEfficiencyPage } from './memory-efficiency-page'; -import { MonitorPage } from './monitor-page'; import { OverviewPage } from './overview-page'; import { PubSubPage } from './pub-sub-page'; import { SlowLogPage } from './slow-log-page'; import { NotificationPage } from './notification-page'; import { OnboardingPage} from './onboarding-page'; +import { BasePage} from './base-page'; +import { InstancePage} from './instance-page'; export { AddRedisDatabasePage, @@ -32,10 +33,11 @@ export { HelpCenterPage, ShortcutsPage, MemoryEfficiencyPage, - MonitorPage, OverviewPage, PubSubPage, SlowLogPage, NotificationPage, - OnboardingPage + OnboardingPage, + BasePage, + InstancePage }; diff --git a/tests/e2e/pageObjects/instance-page.ts b/tests/e2e/pageObjects/instance-page.ts new file mode 100644 index 0000000000..8f6982f18e --- /dev/null +++ b/tests/e2e/pageObjects/instance-page.ts @@ -0,0 +1,7 @@ +import { BasePage } from './base-page'; +import { Profiler } from './components/instance'; + +export class InstancePage extends BasePage { + Profiler = new Profiler(); + +} diff --git a/tests/e2e/pageObjects/memory-efficiency-page.ts b/tests/e2e/pageObjects/memory-efficiency-page.ts index 614df8f284..7af45515d3 100644 --- a/tests/e2e/pageObjects/memory-efficiency-page.ts +++ b/tests/e2e/pageObjects/memory-efficiency-page.ts @@ -1,4 +1,4 @@ -import {Selector} from 'testcafe'; +import { Selector } from 'testcafe'; export class MemoryEfficiencyPage { //------------------------------------------------------------------------------------------- diff --git a/tests/e2e/pageObjects/my-redis-databases-page.ts b/tests/e2e/pageObjects/my-redis-databases-page.ts index 6bfbf36c1c..f3ead165dd 100644 --- a/tests/e2e/pageObjects/my-redis-databases-page.ts +++ b/tests/e2e/pageObjects/my-redis-databases-page.ts @@ -1,7 +1,8 @@ import { t, Selector } from 'testcafe'; import { getDatabaseIdByName } from '../helpers/api/api-database'; +import { BasePage } from './base-page'; -export class MyRedisDatabasePage { +export class MyRedisDatabasePage extends BasePage { //------------------------------------------------------------------------------------------- //DECLARATION OF SELECTORS //*Declare all elements/components of the relevant page. @@ -12,14 +13,6 @@ export class MyRedisDatabasePage { cssNumberOfDbs = '[data-testid=number-of-dbs]'; cssRedisStackIcon = '[data-testid=redis-stack-icon]'; //BUTTONS - settingsButton = Selector('[data-testid=settings-page-btn]'); - workbenchButton = Selector('[data-testid=workbench-page-btn]'); - analysisPageButton = Selector('[data-testid=analytics-page-btn]'); - helpCenterButton = Selector('[data-testid=help-menu-button]'); - githubButton = Selector('[data-testid=github-repo-icon]'); - browserButton = Selector('[data-testid=browser-page-btn]'); - pubSubButton = Selector('[data-testid=pub-sub-page-btn]'); - myRedisDBButton = Selector('[data-test-subj=home-page-btn]', { timeout: 1000 }); deleteDatabaseButton = Selector('[data-testid^=delete-instance-]'); confirmDeleteButton = Selector('[data-testid^=delete-instance-]').withExactText('Remove'); toastCloseButton = Selector('[data-test-subj=toastCloseButton]'); @@ -93,7 +86,7 @@ export class MyRedisDatabasePage { //Delete all the databases from the list async deleteAllDatabases(): Promise { - await t.click(this.myRedisDBButton); + await t.click(this.NavigationPanel.myRedisDBButton); const dbNames = this.tableRowContent; const count = await dbNames.count; if (count > 1) { diff --git a/tests/e2e/pageObjects/notification-page.ts b/tests/e2e/pageObjects/notification-page.ts index bed52a6869..bf4da876c2 100644 --- a/tests/e2e/pageObjects/notification-page.ts +++ b/tests/e2e/pageObjects/notification-page.ts @@ -55,7 +55,7 @@ export class NotificationPage { */ async changeNotificationsSwitcher(toValue: boolean): Promise { await t - .click(myRedisDatabasePage.settingsButton) + .click(myRedisDatabasePage.NavigationPanel.settingsButton) .click(settingsPage.accordionAppearance); if (toValue === true) { if (await settingsPage.getNotificationsSwitcherValue() === 'false') { diff --git a/tests/e2e/pageObjects/pub-sub-page.ts b/tests/e2e/pageObjects/pub-sub-page.ts index 1c97146dad..16535f979c 100644 --- a/tests/e2e/pageObjects/pub-sub-page.ts +++ b/tests/e2e/pageObjects/pub-sub-page.ts @@ -1,6 +1,7 @@ import { t, Selector } from 'testcafe'; +import { InstancePage } from './instance-page'; -export class PubSubPage { +export class PubSubPage extends InstancePage { //CSS Selectors cssSelectorMessage = '[data-testid^=row]'; //------------------------------------------------------------------------------------------- diff --git a/tests/e2e/pageObjects/slow-log-page.ts b/tests/e2e/pageObjects/slow-log-page.ts index 39538a2887..f90a37645f 100644 --- a/tests/e2e/pageObjects/slow-log-page.ts +++ b/tests/e2e/pageObjects/slow-log-page.ts @@ -1,6 +1,7 @@ import { Selector, t } from 'testcafe'; +import { InstancePage } from './instance-page'; -export class SlowLogPage { +export class SlowLogPage extends InstancePage { //------------------------------------------------------------------------------------------- //DECLARATION OF SELECTORS //*Declare all elements/components of the relevant page. diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index a1b841037c..99b44b70c6 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -1,6 +1,7 @@ import { Selector, t } from 'testcafe'; +import { InstancePage } from './instance-page'; -export class WorkbenchPage { +export class WorkbenchPage extends InstancePage { //CSS selectors cssSelectorPaginationButtonPrevious = '[data-test-subj=pagination-button-previous]'; cssSelectorPaginationButtonNext = '[data-test-subj=pagination-button-next]'; diff --git a/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts b/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts index 922d7c5761..c94ade284a 100644 --- a/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts @@ -94,9 +94,9 @@ test })('Verify that bulk deletion is still run when user goes to any ather page in the application inside of this DB', async t => { await bulkActionsPage.startBulkDelete(); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Go to Browser Page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.expect(bulkActionsPage.bulkStatusInProgress.exists).ok('Progress value not displayed', { timeout: 5000 }); }); test diff --git a/tests/e2e/tests/critical-path/browser/context.e2e.ts b/tests/e2e/tests/critical-path/browser/context.e2e.ts index 83d138a0bd..2b7e0b5ce1 100644 --- a/tests/e2e/tests/critical-path/browser/context.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/context.e2e.ts @@ -40,7 +40,7 @@ test('Verify that user can see saved CLI size on Browser page when he returns ba await t.hover(cliResizeButton); // move resize 200px up await t.drag(cliResizeButton, 0, -offsetY, { speed: 0.01 }); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await t.expect(await cliPage.cliArea.clientHeight).gt(cliAreaHeightEnd, 'Saved context for resizable cli is incorrect'); }); @@ -51,7 +51,7 @@ test('Verify that user can see saved Key details and Keys tables size on Browser // move resize 200px right await t.drag(cliResizeButton, offsetX, 0, { speed }); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await t.expect(await browserPage.keyListTable.clientWidth).gt(keyListWidth, 'Saved browser resizable context is proper'); }); @@ -59,17 +59,17 @@ test('Verify that user can see saved filter per key type applied when he returns keyName = common.generateWord(10); // Filter per key type String and open Settings await browserPage.selectFilterGroupType(KeyTypesTexts.String); - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Return back to Browser and check filter applied - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.expect(browserPage.selectedFilterTypeString.exists).ok('Filter per key type is still applied'); // Clear filter await t.click(browserPage.clearFilterButton); // Filter per key name and open Settings await browserPage.searchByKeyName(keyName); - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Return back to Browser and check filter applied - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that user can see saved input entered into the filter per Key name when he returns back to Browser page await verifySearchFilterValue(keyName); }); @@ -85,9 +85,9 @@ test('Verify that user can see saved executed commands in CLI on Browser page wh await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); } - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Return back to Browser and check executed command in CLI - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); for(const command of commands) { await t.expect(cliPage.cliCommandExecuted.withExactText(command).exists).ok(`Executed command '${command}' in CLI is saved`); } @@ -111,9 +111,9 @@ test await t.click(targetKey); await t.expect(await targetKey.getAttribute('class')).contains('table-row-selected', 'Not correct key selected in key list'); - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Return back to Browser and check key details selected - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Check Keys details saved await t.expect(browserPage.keyNameFormDetails.innerText).eql(targetKeyName, 'Key details is not saved as context'); // Check Key selected in Key List @@ -147,7 +147,7 @@ test const randomKey = renderedRows.nth(Math.floor((Math.random() * renderedRowsCount))); const randomKeyName = await randomKey.find(browserPage.cssSelectorKey).textContent; - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Check that previous found key is still visible diff --git a/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts b/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts index a6e62b9adb..3bde622fa9 100644 --- a/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts @@ -44,12 +44,12 @@ fixture `Browser - Specify Keys to Scan` test('Verify that the user can see this number of keys applied to new filter requests and to "scan more" functionality in Browser page', async t => { const searchPattern = 'key[12]*'; // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Specify keys to scan await t.click(settingsPage.accordionAdvancedSettings); await settingsPage.changeKeysToScanValue('1000'); // Go to Browser Page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Connect to DB await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Open CLI diff --git a/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts b/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts index e22e28021b..353a09f2e2 100644 --- a/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts @@ -237,8 +237,8 @@ test // Verify that Redisearch context (inputs, key selected, scroll, key details) saved after switching between pages await t - .click(myRedisDatabasePage.workbenchButton) - .click(myRedisDatabasePage.browserButton); + .click(myRedisDatabasePage.NavigationPanel.workbenchButton) + .click(myRedisDatabasePage.NavigationPanel.browserButton); await verifyContext(); // Verify that Redisearch context saved when switching between browser/tree view @@ -271,15 +271,15 @@ test await deleteStandaloneDatabaseApi(ossStandaloneConfig); await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Verify that indexed keys from previous DB are NOT displayed when user connects to another DB', async t => { - /* + /* Link to ticket: https://redislabs.atlassian.net/browse/RI-3863 */ // key names to validate in the standalone database keyNames = [`${keyNameSimpleDb}:1`, `${keyNameSimpleDb}:2`, `${keyNameSimpleDb}:3`, `${keyNameSimpleDb}:4`, `${keyNameSimpleDb}:5`]; - /* - create index as name ${indexNameBigDb} + /* + create index as name ${indexNameBigDb} in the big standalone database with the help of CLI */ diff --git a/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts b/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts index 121bd68f1c..fbff5043d8 100644 --- a/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts +++ b/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts @@ -111,13 +111,13 @@ test('Switching between indexed databases', async t => { await verifySearchFilterValue('Hall School'); // Open Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(command); // Verify that user can see the database index before the command name executed in Workbench await workbenchPage.checkWorkbenchCommandResult(`[db1] ${command}`, '8'); // Open Browser page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Clear filter await t.click(browserPage.clearFilterButton); // Verify that data changed for indexed db on Workbench page (on Search capability page) @@ -131,7 +131,7 @@ test('Switching between indexed databases', async t => { await verifyKeysNotDisplayedInTheList([logicalDbKey]); // Go to Analysis Tools page and create new report - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(memoryEfficiencyPage.newReportBtn); // Verify that data changed for indexed db on Database analysis page diff --git a/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts b/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts index 04218a4f4a..6ffe849f9a 100644 --- a/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts +++ b/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts @@ -60,12 +60,12 @@ test await t.expect(databaseOverviewPage.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); } //Open the Workbench page and verify modules - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); for (const module of firstDatabaseModules) { await t.expect(databaseOverviewPage.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); } //Add database with different modules - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addNewStandaloneDatabaseApi(ossStandaloneRedisearch); await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(ossStandaloneRedisearch.databaseName); @@ -103,7 +103,7 @@ test .meta({ rte: rte.standalone }) .after(async t => { //Clear and delete database - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await cliPage.sendCommandInCli(`DEL ${keys1.join(' ')}`); await cliPage.sendCommandInCli(`DEL ${keys2.join(' ')}`); @@ -121,7 +121,7 @@ test //Verify that the info on DB header is updated after adds await t.expect(totalKeys).eql('1 K', 'Info in DB header after ADD 1000 keys'); //Add database with more than 1M keys - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addNewStandaloneDatabaseApi(ossStandaloneBigConfig); await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(ossStandaloneBigConfig.databaseName); @@ -150,7 +150,7 @@ test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); //Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .after(async() => { //Delete database and index diff --git a/tests/e2e/tests/critical-path/database/import-databases.e2e.ts b/tests/e2e/tests/critical-path/database/import-databases.e2e.ts index e783a4936f..8bce4dda47 100644 --- a/tests/e2e/tests/critical-path/database/import-databases.e2e.ts +++ b/tests/e2e/tests/critical-path/database/import-databases.e2e.ts @@ -103,7 +103,7 @@ test('Connection import modal window', async t => { // Verify that Import dialogue is not closed when clicking any area outside the box await t.click(myRedisDatabasePage.importDatabasesBtn); await t.expect(myRedisDatabasePage.importDbDialog.exists).ok('Import Database Connections dialog not opened'); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await t.expect(myRedisDatabasePage.importDbDialog.exists).ok('Import Database Connections dialog not displayed'); // Verify that user see the message when parse error appears diff --git a/tests/e2e/tests/critical-path/files-auto-update/enablement-area-autoupdate.e2e.ts b/tests/e2e/tests/critical-path/files-auto-update/enablement-area-autoupdate.e2e.ts index f0da056470..f919c2b677 100644 --- a/tests/e2e/tests/critical-path/files-auto-update/enablement-area-autoupdate.e2e.ts +++ b/tests/e2e/tests/critical-path/files-auto-update/enablement-area-autoupdate.e2e.ts @@ -55,7 +55,7 @@ if (fs.existsSync(workingDirectory)) { const tutorialsTimestampFileNew = editJsonFile(tutorialsTimestampPath); // Open Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Check Enablement area and validate that removed file is existed in Guides await t.click(workbenchPage.guidesGraphAccordion); diff --git a/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts index 19f60ae93d..0f90d9047a 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts @@ -30,7 +30,7 @@ fixture `Memory Efficiency` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .afterEach(async() => { await deleteStandaloneDatabaseApi(ossStandaloneConfig); @@ -46,10 +46,10 @@ test('No reports/keys message and report tooltip', async t => { await t.click(memoryEfficiencyPage.newReportBtn); await t.expect(memoryEfficiencyPage.noKeysText.textContent).eql(noKeysMessage, 'No keys message not displayed or text is invalid'); // Verify that user can open workbench page from No keys to display message - await t.click(browserPage.workbenchLinkButton); + await t.click(browserPage.NavigationPanel.workbenchButton); await t.expect(workbenchPage.expandArea.visible).ok('Workbench page is not opened'); // Turn back to Memory Efficiency page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); // Verify that user can see a tooltip when hovering over the icon on the right of the “New analysis” button await t.hover(memoryEfficiencyPage.reportTooltipIcon); await t.expect(browserPage.tooltip.textContent).contains(tooltipText, 'Report tooltip is not displayed or text is invalid'); @@ -66,11 +66,11 @@ test await cliPage.addKeysFromCliWithDelimiter('MSET', 15); await t.click(browserPage.treeViewButton); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { await cliPage.deleteKeysFromCliWithDelimiter(15); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.browserViewButton); await browserPage.deleteKeyByName(hashKeyName); await browserPage.deleteKeyByName(streamKeyName); @@ -108,7 +108,7 @@ test // Change delimiter await browserPage.changeDelimiterInTreeView('-'); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); // Create new report await t.click(memoryEfficiencyPage.newReportBtn); // Verify that delimiter can be changed in Tree View and applied @@ -116,12 +116,12 @@ test await t.expect(memoryEfficiencyPage.nameSpaceTableRows.nth(0).textContent).contains(keySpaces[5], 'Keyspace not displayed'); // No namespaces message with link - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Change delimiter to delimiter with no keys await browserPage.changeDelimiterInTreeView('+'); // Go to Analysis Tools page and create report await t - .click(myRedisDatabasePage.analysisPageButton) + .click(myRedisDatabasePage.NavigationPanel.analysisPageButton) .click(memoryEfficiencyPage.newReportBtn); // Verify that user can see the message when he do not have any namespaces selected in delimiter await t.expect(memoryEfficiencyPage.topNamespacesEmptyContainer.exists).ok('No namespaces section not displayed'); @@ -137,11 +137,11 @@ test await cliPage.addKeysFromCliWithDelimiter('MSET', 5); await t.click(browserPage.treeViewButton); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { await cliPage.deleteKeysFromCliWithDelimiter(5); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.browserViewButton); await browserPage.deleteKeyByName(keySpaces[4]); await deleteStandaloneDatabaseApi(ossStandaloneConfig); @@ -181,10 +181,10 @@ test await browserPage.addHashKey(hashKeyName, keysTTL[2], hashValue); await t.click(browserPage.treeViewButton); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.browserViewButton); await browserPage.deleteKeyByName(hashKeyName); await deleteStandaloneDatabaseApi(ossStandaloneConfig); @@ -196,9 +196,9 @@ test // Verify that context saved after reloading page await t.expect(memoryEfficiencyPage.nameSpaceTableRows.nth(0).textContent).contains(keySpaces[0], 'Summary per keyspaces context not saved'); //Go to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); // Verify that context saved after switching between pages await t.expect(memoryEfficiencyPage.nameSpaceTableRows.nth(0).textContent).contains(keySpaces[0], 'Summary per keyspaces context not saved'); }); @@ -209,10 +209,10 @@ test await browserPage.addStreamKey(streamKeyName, 'field', 'value', keysTTL[1]); await browserPage.addStreamKey(streamKeyNameDelimiter, 'field', 'value'); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(hashKeyName); await browserPage.deleteKeyByName(streamKeyName); await browserPage.deleteKeyByName(streamKeyNameDelimiter); @@ -239,7 +239,7 @@ test test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async() => { await cliPage.sendCommandInCli(`del ${keyNamesReport.join(' ')}`); @@ -271,8 +271,8 @@ test } // Verify that specific report is saved as context await t.click(memoryEfficiencyPage.reportItem.nth(3)); - await t.click(myRedisDatabasePage.workbenchButton); - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.expect(memoryEfficiencyPage.donutTotalKeys.sibling(1).textContent).eql(numberOfKeys[2], 'Context is not saved'); // Verify that user can see top keys table saved as context await t.expect(memoryEfficiencyPage.topKeysKeyName.count).eql(parseInt(numberOfKeys[2]), 'Top Keys table is not saved as context'); diff --git a/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts index 9358c6de76..1f59fb121e 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts @@ -29,11 +29,11 @@ fixture `Memory Efficiency Recommendations` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .afterEach(async t => { // Clear and delete database - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); @@ -41,7 +41,7 @@ test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); // Add cached scripts and generate new report await cliActions.addCachedScripts(11); await t.click(memoryEfficiencyPage.newReportBtn); @@ -101,14 +101,14 @@ test await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); keyName = `recomKey-${common.generateWord(10)}`; await browserPage.addStringKey(stringKeyName, '2147476121', 'field'); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addRedisDatabasePage.addLogicalRedisDatabase(ossStandaloneConfig, index); await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneConfig.databaseName} [db${index}]`); await browserPage.addHashKey(keyName, '2147476121', 'field', 'value'); }) .after(async t => { // Clear and delete database - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteCustomDatabase(`${ossStandaloneConfig.databaseName} [${index}]`); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); @@ -116,7 +116,7 @@ test await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Avoid using logical databases recommendation', async t => { // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(memoryEfficiencyPage.newReportBtn); // Go to Recommendations tab await t.click(memoryEfficiencyPage.recommendationsTab); @@ -128,7 +128,7 @@ test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Analysis Tools page and create new report and open recommendations - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(memoryEfficiencyPage.newReportBtn); await t.click(memoryEfficiencyPage.recommendationsTab); }).after(async() => { @@ -154,14 +154,14 @@ test keyName = `recomKey-${common.generateWord(10)}`; await browserPage.addZSetKey(keyName, '151153320500121', '2147476121', '1511533205001:21'); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(memoryEfficiencyPage.newReportBtn); // Go to Recommendations tab await t.click(memoryEfficiencyPage.recommendationsTab); }) .after(async t => { // Clear and delete database - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify that user can see the Tutorial opened when clicking on "To Tutorial" for recommendations', async t => { diff --git a/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts index 0c911838f5..60117ef8b8 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts @@ -35,7 +35,7 @@ test // Create keys await populateDBWithHashes(ossStandaloneRedisearch.host, ossStandaloneRedisearch.port, keyToAddParameters); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async() => { await cliPage.sendCommandInCli('flushdb'); @@ -76,10 +76,10 @@ test // Create keys await populateHashWithFields(ossStandaloneRedisearch.host, ossStandaloneRedisearch.port, keyToAddParameters2); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteStandaloneDatabaseApi(ossStandaloneRedisearch); })('Big highlighted key tooltip', async t => { diff --git a/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts b/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts index 546c472974..23d44894e1 100644 --- a/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts +++ b/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts @@ -2,7 +2,6 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, CliPage, - MonitorPage, WorkbenchPage, BrowserPage } from '../../../pageObjects'; @@ -16,7 +15,6 @@ import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const cliPage = new CliPage(); -const monitorPage = new MonitorPage(); const workbenchPage = new WorkbenchPage(); const browserPage = new BrowserPage(); const common = new Common(); @@ -37,23 +35,23 @@ test })('Verify that user can work with Monitor', async t => { const command = 'set'; //Verify that user can open Monitor - await t.click(monitorPage.expandMonitor); + await t.click(browserPage.Profiler.expandMonitor); //Check that monitor is opened - await t.expect(monitorPage.monitorArea.exists).ok('Profiler area'); - await t.expect(monitorPage.startMonitorButton.exists).ok('Start profiler button'); + await t.expect(browserPage.Profiler.monitorArea.exists).ok('Profiler area'); + await t.expect(browserPage.Profiler.startMonitorButton.exists).ok('Start profiler button'); //Verify that user can see message inside Monitor "Running Monitor will decrease throughput, avoid running it in production databases." when opens it for the first time - await t.expect(monitorPage.monitorWarningMessage.exists).ok('Profiler warning message'); - await t.expect(monitorPage.monitorWarningMessage.withText('Running Profiler will decrease throughput, avoid running it in production databases.').exists).ok('Profiler warning message is not correct'); + await t.expect(browserPage.Profiler.monitorWarningMessage.exists).ok('Profiler warning message'); + await t.expect(browserPage.Profiler.monitorWarningMessage.withText('Running Profiler will decrease throughput, avoid running it in production databases.').exists).ok('Profiler warning message is not correct'); //Verify that user can run Monitor by clicking "Run" command in the message inside Monitor - await t.click(monitorPage.startMonitorButton); - await t.expect(monitorPage.monitorIsStartedText.innerText).eql('Profiler is started.'); + await t.click(browserPage.Profiler.startMonitorButton); + await t.expect(browserPage.Profiler.monitorIsStartedText.innerText).eql('Profiler is started.'); //Verify that user can see run commands in monitor await cliPage.getSuccessCommandResultFromCli(`${command} ${keyName} ${keyValue}`); - await monitorPage.checkCommandInMonitorResults(command, [keyName, keyValue]); + await browserPage.Profiler.checkCommandInMonitorResults(command, [keyName, keyValue]); }); test .after(async t => { - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify that user can see the list of all commands from all clients ran for this Redis database in the list of results in Monitor', async t => { @@ -63,22 +61,22 @@ test const common_command = 'info'; const browser_command = 'hset'; //Start Monitor - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); //Send command in CLI await cliPage.getSuccessCommandResultFromCli(cli_command); //Check that command from CLI is displayed in monitor - await monitorPage.checkCommandInMonitorResults(cli_command); + await browserPage.Profiler.checkCommandInMonitorResults(cli_command); //Refresh the page to send command from Browser client await t.click(browserPage.refreshKeysButton); //Check the command from browser client await browserPage.addHashKey(keyName); - await monitorPage.checkCommandInMonitorResults(browser_command); + await browserPage.Profiler.checkCommandInMonitorResults(browser_command); //Open Workbench page to create new client - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); //Send command in Workbench await workbenchPage.sendCommandInWorkbench(workbench_command); //Check that command from Workbench is displayed in monitor - await monitorPage.checkCommandInMonitorResults(workbench_command); + await workbenchPage.Profiler.checkCommandInMonitorResults(workbench_command); //Check the command from common client - await monitorPage.checkCommandInMonitorResults(common_command); + await workbenchPage.Profiler.checkCommandInMonitorResults(common_command); }); diff --git a/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts b/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts index 891aa2d6ca..14c06717cc 100644 --- a/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts +++ b/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as os from 'os'; import { join as joinPath } from 'path'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MonitorPage, CliPage } from '../../../pageObjects'; +import { CliPage, BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -10,7 +10,7 @@ import { import { rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const monitorPage = new MonitorPage(); +const browserPage = new BrowserPage(); const cliPage = new CliPage(); const tempDir = os.tmpdir(); let downloadedFilePath = ''; @@ -50,28 +50,28 @@ test('Verify that user can see a tooltip and toggle that allows to save Profiler 'Profiler log is saved to a file on your local machine with no size limitation. The temporary log file will be automatically rewritten when the Profiler is reset.' ]; - await t.click(monitorPage.expandMonitor); + await t.click(browserPage.Profiler.expandMonitor); // Check the toggle and Tooltip for Save log - await t.expect(monitorPage.saveLogSwitchButton.exists).ok('The toggle that allows to save Profiler log is not displayed'); - await t.hover(monitorPage.saveLogSwitchButton); + await t.expect(browserPage.Profiler.saveLogSwitchButton.exists).ok('The toggle that allows to save Profiler log is not displayed'); + await t.hover(browserPage.Profiler.saveLogSwitchButton); for (const message of toolTip) { - await t.expect(monitorPage.saveLogToolTip.textContent).contains(message, 'The toolTip for save log in Profiler is not displayed'); + await t.expect(browserPage.Profiler.saveLogToolTip.textContent).contains(message, 'The toolTip for save log in Profiler is not displayed'); } // Check toggle state - await t.expect(monitorPage.saveLogSwitchButton.getAttribute('aria-checked')).eql('false', 'The toggle state is not OFF when Profiler opened'); + await t.expect(browserPage.Profiler.saveLogSwitchButton.getAttribute('aria-checked')).eql('false', 'The toggle state is not OFF when Profiler opened'); }); test('Verify that user can see that toggle is not displayed when Profiler is started', async t => { // Start Monitor without save logs - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); // Check the toggle - await t.expect(monitorPage.saveLogSwitchButton.exists).notOk('The toggle is displayed when Profiler is started'); + await t.expect(browserPage.Profiler.saveLogSwitchButton.exists).notOk('The toggle is displayed when Profiler is started'); // Restart Monitor with Save logs - await monitorPage.stopMonitor(); - await t.click(monitorPage.resetProfilerButton); - await t.click(monitorPage.saveLogSwitchButton); - await t.click(monitorPage.startMonitorButton); + await browserPage.Profiler.stopMonitor(); + await t.click(browserPage.Profiler.resetProfilerButton); + await t.click(browserPage.Profiler.saveLogSwitchButton); + await t.click(browserPage.Profiler.startMonitorButton); // Check the toggle - await t.expect(monitorPage.saveLogSwitchButton.exists).notOk('The toggle is displayed when Profiler is started'); + await t.expect(browserPage.Profiler.saveLogSwitchButton.exists).notOk('The toggle is displayed when Profiler is started'); }); test('Verify that when user switch toggle to ON and started the Profiler, temporary Log file Created and recording', async t => { const cli_command = 'command'; @@ -79,10 +79,10 @@ test('Verify that when user switch toggle to ON and started the Profiler, tempor const numberOfTempFiles = fs.readdirSync(tempDir).length; // Start Monitor with Save logs - await monitorPage.startMonitorWithSaveLog(); + await browserPage.Profiler.startMonitorWithSaveLog(); // Send command in CLI await cliPage.getSuccessCommandResultFromCli(cli_command); - await monitorPage.checkCommandInMonitorResults(cli_command); + await browserPage.Profiler.checkCommandInMonitorResults(cli_command); // Verify that temporary Log file Created await t.expect(numberOfTempFiles).lt(fs.readdirSync(tempDir).length, 'The temporary Log file is not created'); }); @@ -91,26 +91,26 @@ test('Verify that when user switch toggle to OFF and started the Profiler, tempo const numberOfTempFiles = fs.readdirSync(tempDir).length; // Start Monitor without Save logs - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); // Verify that temporary Log file is not created await t.expect(numberOfTempFiles).gte(fs.readdirSync(tempDir).length, 'The temporary Log file is created'); }); test('Verify the Profiler Button panel when toggle was switched to ON and user pauses/resumes the Profiler', async t => { // Start Monitor with Save logs - await monitorPage.startMonitorWithSaveLog(); + await browserPage.Profiler.startMonitorWithSaveLog(); // Pause the Profiler - await t.click(monitorPage.runMonitorToggle); + await t.click(browserPage.Profiler.runMonitorToggle); // Check the panel - await t.expect(monitorPage.downloadLogPanel.exists).ok('The download log panel not appeared'); - await t.expect(monitorPage.resetProfilerButton.exists).ok('The Reset Profiler button not visible'); - await t.expect(monitorPage.downloadLogButton.exists).ok('The Download button not visible'); + await t.expect(browserPage.Profiler.downloadLogPanel.exists).ok('The download log panel not appeared'); + await t.expect(browserPage.Profiler.resetProfilerButton.exists).ok('The Reset Profiler button not visible'); + await t.expect(browserPage.Profiler.downloadLogButton.exists).ok('The Download button not visible'); }); test('Verify that when user see the toggle is OFF - Profiler logs are not being saved', async t => { // Remember the number of files in Temp const numberOfDownloadFiles = await findByFileStarts(downloadedFilePath); // Start Monitor without Save logs - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); await t.wait(3000); // Check the download files await t.expect(await findByFileStarts(downloadedFilePath)).eql(numberOfDownloadFiles, 'The Profiler logs are saved'); @@ -121,9 +121,9 @@ test.skip('Verify that when user see the toggle is ON - Profiler logs are being const numberOfDownloadFiles = await findByFileStarts(downloadedFilePath); // Start Monitor with Save logs - await monitorPage.startMonitorWithSaveLog(); + await browserPage.Profiler.startMonitorWithSaveLog(); // Download logs and check result - await monitorPage.stopMonitor(); - await t.click(monitorPage.downloadLogButton); + await browserPage.Profiler.stopMonitor(); + await t.click(browserPage.Profiler.downloadLogButton); await t.expect(await findByFileStarts(downloadedFilePath)).gt(numberOfDownloadFiles, 'The Profiler logs not saved', { timeout: 5000 }); }); diff --git a/tests/e2e/tests/critical-path/notifications/notification-center.e2e.ts b/tests/e2e/tests/critical-path/notifications/notification-center.e2e.ts index b0dc8031cb..be0e225394 100644 --- a/tests/e2e/tests/critical-path/notifications/notification-center.e2e.ts +++ b/tests/e2e/tests/critical-path/notifications/notification-center.e2e.ts @@ -54,7 +54,7 @@ test('Verify that user can see message "No notifications to display." when no me await t.expect(notificationPage.notificationCenterPanel.child().withExactText('Notification Center').visible).ok('Panel is opened'); await t.expect(notificationPage.emptyNotificationMessage.child().withExactText('No notifications to display.').visible).ok('Empty message is displayed'); // Verify that user can close notification center by clicking on any other area of the application - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await t.expect(notificationPage.notificationCenterPanel.visible).notOk('Panel is not displayed'); // Wait for new notification await t.expect(notificationPage.notificationPopup.exists).ok('New notifications appear', { timeout: 35000 }); @@ -85,7 +85,7 @@ test('Verify that user can open notification center by clicking on icon and see } } // Verify that as soon as user closes notification center, unread messages become read - await t.click(myRedisDatabasePage.myRedisDBButton); // Close notification center + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Close notification center await t.expect(notificationPage.notificationBadge.exists).notOk('No unread messages badge'); // Verify that next time when users open notification center, highlighting is not displayed for those messages that were unread previous center opening await t.click(notificationPage.notificationCenterButton); // Open notification center again diff --git a/tests/e2e/tests/critical-path/overview/overview.e2e.ts b/tests/e2e/tests/critical-path/overview/overview.e2e.ts index 178cc836fa..9ac9bb3555 100644 --- a/tests/e2e/tests/critical-path/overview/overview.e2e.ts +++ b/tests/e2e/tests/critical-path/overview/overview.e2e.ts @@ -26,7 +26,7 @@ fixture `Overview` .beforeEach(async t => { await acceptLicenseTermsAndAddOSSClusterDatabase(ossClusterConfig, ossClusterConfig.ossClusterDatabaseName); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .afterEach(async() => { await deleteOSSClusterDatabaseApi(ossClusterConfig); @@ -73,14 +73,14 @@ test await t.expect(overviewPage.tableRow.nth(nodes.indexOf(node)).textContent).contains(node, `Node ${node} is not displayed in table`); } // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); //Run Create hash index command to load network and memory await t.click(workbenchPage.documentButtonInQuickGuides); await t.click(workbenchPage.internalLinkWorkingWithHashes); await t.click(workbenchPage.preselectCreateHashIndex); await t.click(workbenchPage.submitCommandButton); // Go to Analysis Tools page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); // Verify that values in table are dynamic for (const column in columns) { await t.expect(await overviewPage.getTotalValueByColumnName(column)).notEql(initialValues[columns.indexOf(column)], `${column} not dynamic`); diff --git a/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts b/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts index 0e28d0e408..0dddaa2a7a 100644 --- a/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts +++ b/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts @@ -17,7 +17,7 @@ fixture `Subscribe/Unsubscribe from a channel` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); //Go to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); }) .afterEach(async() => { await deleteStandaloneDatabaseApi(ossStandaloneConfig); @@ -52,9 +52,9 @@ test('Verify that the focus gets always shifted to a newest message (auto-scroll await t.expect(pubSubPage.clientBadge.textContent).eql('1', 'Client badge is not displayed', { timeout: 10000 }); // Go to My Redis databases Page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go back to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); // Verify that my subscription state is preserved when user navigate through the app while connected to current database and in current app session await t.expect(pubSubPage.subscribeStatus.textContent).eql('You are subscribed', 'User is not subscribed', { timeout: 10000 }); @@ -72,7 +72,7 @@ test await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Go to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); }) .after(async() => { await deleteStandaloneDatabaseApi(ossStandaloneV5Config); @@ -85,17 +85,17 @@ test // Verify that user can see total number of messages received await t.expect(pubSubPage.totalMessagesCount.textContent).contains('10', 'Total counter value is incorrect'); // Connect to second database - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneV5Config.databaseName); // Verify no subscription, messages and total messages - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); await t.expect(pubSubPage.subscribeStatus.textContent).eql('You are not subscribed', 'User is not unsubscribed', { timeout: 10000 }); await verifyMessageDisplayingInPubSub('message', false); await t.expect(pubSubPage.totalMessagesCount.exists).notOk('Total counter is still displayed'); }); test('Verify that user can see a internal link to pubsub window under word “Pub/Sub” when he try to run PSUBSCRIBE command in CLI or Workbench', async t => { // Go to Browser Page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that user can see a custom message when he try to run PSUBSCRIBE command in CLI or Workbench: “Use Pub/Sub to see the messages published to all channels in your database” await cliPage.sendCommandInCli('PSUBSCRIBE'); await t.click(cliPage.cliExpandButton); @@ -114,9 +114,9 @@ test('Verify that the Message field input is preserved until user Publish a mess await t.typeText(pubSubPage.messageInput, 'message', { replace: true }); await t.expect(pubSubPage.messageInput.value).eql('message', 'Message input is empty', { timeout: 10000 }); // Go to Browser Page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); // Verify that message is preserved until publishing await t.expect(pubSubPage.messageInput.value).eql('message', 'Message input is empty', { timeout: 10000 }); await t.click(pubSubPage.publishButton); diff --git a/tests/e2e/tests/critical-path/settings/settings.e2e.ts b/tests/e2e/tests/critical-path/settings/settings.e2e.ts index bc9770c4fa..1877eb699a 100644 --- a/tests/e2e/tests/critical-path/settings/settings.e2e.ts +++ b/tests/e2e/tests/critical-path/settings/settings.e2e.ts @@ -25,7 +25,7 @@ fixture `Settings` }); test('Verify that user can customize a number of keys to scan in filters per key name or key type', async t => { // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Change keys to Scan await t.click(settingsPage.accordionAdvancedSettings); await settingsPage.changeKeysToScanValue('1500'); @@ -37,7 +37,7 @@ test('Verify that user can customize a number of keys to scan in filters per key }); test('Verify that user can turn on/off Analytics in Settings in the application', async t => { // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionPrivacySettings); const currentValue = await settingsPage.getAnalyticsSwitcherValue(); diff --git a/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts b/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts index 4007c2f33a..7d4ed5915e 100644 --- a/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts +++ b/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts @@ -18,7 +18,7 @@ fixture `Slow Log` .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(slowLogPage.slowLogTab); }) .afterEach(async() => { @@ -51,9 +51,9 @@ test('Verify that user can see "No Slow Logs found" message when slowlog-max-len await slowLogPage.changeSlowerThanParameter(slowerThanParameter); await slowLogPage.changeMaxLengthParameter(maxCommandLength); // Go to Browser page to scan keys and turn back - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.refreshKeysButton); - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(slowLogPage.slowLogTab); // Compare number of logged commands with maxLength await t.expect(slowLogPage.slowLogCommandStatistics.withText(`${maxCommandLength} entries`).exists).ok('Number of displayed commands is less than '); @@ -65,9 +65,9 @@ test('Verify that users can specify number of commands that they want to display await slowLogPage.changeSlowerThanParameter(slowerThanParameter); await slowLogPage.changeMaxLengthParameter(maxCommandLength); // Go to Browser page to scan keys and turn back - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.refreshKeysButton); - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.click(slowLogPage.slowLogTab); for (let i = 0; i < numberOfCommandsArray.length; i++) { await slowLogPage.changeDisplayUpToParameter(numberOfCommandsArray[i]); diff --git a/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts b/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts index f3748020da..f3a8d7a6af 100644 --- a/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/autocomplete.e2e.ts @@ -13,7 +13,7 @@ fixture `Autocomplete for entered commands` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database diff --git a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts index 8cff9dfbe9..62f1404dee 100644 --- a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts @@ -19,7 +19,7 @@ fixture `Command results at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { // Drop index, documents and database diff --git a/tests/e2e/tests/critical-path/workbench/context.e2e.ts b/tests/e2e/tests/critical-path/workbench/context.e2e.ts index 98e70f7aac..e61a2625d0 100644 --- a/tests/e2e/tests/critical-path/workbench/context.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/context.e2e.ts @@ -18,7 +18,7 @@ fixture `Workbench Context` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Drop index, documents and database @@ -30,8 +30,8 @@ test('Verify that user can see saved input in Editor when navigates away to any const command = `FT.CREATE ${indexName} ON HASH PREFIX 1 product: SCHEMA name TEXT`; // Enter the command in the Workbench editor and navigate to Browser await t.typeText(workbenchPage.queryInput, command, { replace: true, speed: speed}); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Return back to Workbench and check input in editor - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect((await workbenchPage.queryInputScriptArea.textContent).replace(/\s/g, ' ')).eql(command, 'Input in Editor is saved'); }); diff --git a/tests/e2e/tests/critical-path/workbench/cypher.e2e.ts b/tests/e2e/tests/critical-path/workbench/cypher.e2e.ts index 9a2b0bbba7..183c596fdc 100644 --- a/tests/e2e/tests/critical-path/workbench/cypher.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/cypher.e2e.ts @@ -13,7 +13,7 @@ fixture `Cypher syntax at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Drop database diff --git a/tests/e2e/tests/critical-path/workbench/default-scripts-area.e2e.ts b/tests/e2e/tests/critical-path/workbench/default-scripts-area.e2e.ts index d2269a3041..46bbf5c1bf 100644 --- a/tests/e2e/tests/critical-path/workbench/default-scripts-area.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/default-scripts-area.e2e.ts @@ -27,7 +27,7 @@ fixture `Default scripts area at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { // Drop index, documents and database diff --git a/tests/e2e/tests/critical-path/workbench/index-schema.e2e.ts b/tests/e2e/tests/critical-path/workbench/index-schema.e2e.ts index 74e1c8ab02..1996f0b33f 100644 --- a/tests/e2e/tests/critical-path/workbench/index-schema.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/index-schema.e2e.ts @@ -17,7 +17,7 @@ fixture `Index Schema at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { // Drop index, documents and database diff --git a/tests/e2e/tests/critical-path/workbench/json-workbench.e2e.ts b/tests/e2e/tests/critical-path/workbench/json-workbench.e2e.ts index e8916285de..7496d06581 100644 --- a/tests/e2e/tests/critical-path/workbench/json-workbench.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/json-workbench.e2e.ts @@ -17,7 +17,7 @@ fixture `JSON verifications at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { // Drop index, documents and database diff --git a/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts b/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts index 8f0e051b53..640f30e77a 100644 --- a/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/redisearch-module-not-available.e2e.ts @@ -15,7 +15,7 @@ fixture `Redisearch module not available` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneV5Config, ossStandaloneV5Config.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database diff --git a/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts b/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts index 88fa4e0333..e928912f73 100644 --- a/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts @@ -19,7 +19,7 @@ fixture `Scripting area at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); //Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { await t.switchToMainWindow(); diff --git a/tests/e2e/tests/regression/browser/context.e2e.ts b/tests/e2e/tests/regression/browser/context.e2e.ts index 26a7a0ceb4..74dd60f961 100644 --- a/tests/e2e/tests/regression/browser/context.e2e.ts +++ b/tests/e2e/tests/regression/browser/context.e2e.ts @@ -37,12 +37,12 @@ test('Verify that if user has saved context on Browser page and go to Settings p await t.click(cliPage.cliExpandButton); await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Verify that Browser and Workbench icons are displayed - await t.expect(myRedisDatabasePage.browserButton.visible).ok('Browser icon is not displayed'); - await t.expect(myRedisDatabasePage.workbenchButton.visible).ok('Workbench icon is not displayed'); + await t.expect(myRedisDatabasePage.NavigationPanel.browserButton.visible).ok('Browser icon is not displayed'); + await t.expect(myRedisDatabasePage.NavigationPanel.workbenchButton.visible).ok('Workbench icon is not displayed'); // Open Browser page and verify context - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await verifySearchFilterValue(keyName); await t.expect(browserPage.keyNameFormDetails.withExactText(keyName).exists).ok('The key details is not selected'); await t.expect(cliPage.cliCommandExecuted.withExactText(command).exists).ok(`Executed command '${command}' in CLI is not saved`); @@ -53,16 +53,16 @@ test('Verify that when user reload the window with saved context(on any page), c // Create context modificaions and navigate to Workbench await browserPage.addStringKey(keyName); await browserPage.openKeyDetails(keyName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Open Browser page and verify context - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await verifySearchFilterValue(keyName); await t.expect(browserPage.keyNameFormDetails.withExactText(keyName).exists).ok('The key details is not selected'); // Navigate to Workbench and reload the window - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await common.reloadPage(); // Return back to Browser and check context is not saved - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.expect(browserPage.filterByPatterSearchInput.withAttribute('value', keyName).exists).notOk('Filter per key name is applied'); await t.expect(browserPage.keyNameFormDetails.withExactText(keyName).exists).notOk('The key details is selected'); }); diff --git a/tests/e2e/tests/regression/browser/format-switcher.e2e.ts b/tests/e2e/tests/regression/browser/format-switcher.e2e.ts index ac6adf6898..f5b8da73d4 100644 --- a/tests/e2e/tests/regression/browser/format-switcher.e2e.ts +++ b/tests/e2e/tests/regression/browser/format-switcher.e2e.ts @@ -62,7 +62,7 @@ test await browserPage.openKeyDetailsByKeyName(keysData[1].keyName); await t.expect(browserPage.formatSwitcher.withExactText('JSON').visible).ok('Formatter value is not saved'); // Go to another database - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName); await browserPage.openKeyDetailsByKeyName(keysData[2].keyName); // Verify that formatters selection is saved when user switches between databases diff --git a/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts b/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts index edc3d6d16c..b0ac5b981c 100644 --- a/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts +++ b/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts @@ -27,7 +27,7 @@ fixture `Handle user permissions` await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); await cliPage.sendCommandInCli(createUserCommand); ossStandaloneNoPermissionsConfig.host = process.env.OSS_STANDALONE_BIG_HOST || 'oss-standalone-big'; - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addNewStandaloneDatabaseApi(ossStandaloneNoPermissionsConfig); await common.reloadPage(); }) diff --git a/tests/e2e/tests/regression/browser/key-messages.e2e.ts b/tests/e2e/tests/regression/browser/key-messages.e2e.ts index 2e83e3b9db..e852bccc17 100644 --- a/tests/e2e/tests/regression/browser/key-messages.e2e.ts +++ b/tests/e2e/tests/regression/browser/key-messages.e2e.ts @@ -64,7 +64,7 @@ test('Verify that user can see link to Workbench under word “Workbench” in t await t.click(browserPage.keyNameInTheList); await t.click(browserPage.internalLinkToWorkbench); await t.expect(workbenchPage.queryInput.visible).ok(`The message for ${dataTypes[i]} key is not displayed`); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); } }); diff --git a/tests/e2e/tests/regression/browser/keys-all-databases.e2e.ts b/tests/e2e/tests/regression/browser/keys-all-databases.e2e.ts index 142dc7a315..b1e6b2da52 100644 --- a/tests/e2e/tests/regression/browser/keys-all-databases.e2e.ts +++ b/tests/e2e/tests/regression/browser/keys-all-databases.e2e.ts @@ -129,9 +129,9 @@ test await browserActions.verifyAllRenderedKeysHasText(); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Go to Browser Page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that keys info in row not empty after switching between pages await browserActions.verifyAllRenderedKeysHasText(); }); diff --git a/tests/e2e/tests/regression/browser/onboarding.e2e.ts b/tests/e2e/tests/regression/browser/onboarding.e2e.ts index 8bea2dd9b8..0d179c7350 100644 --- a/tests/e2e/tests/regression/browser/onboarding.e2e.ts +++ b/tests/e2e/tests/regression/browser/onboarding.e2e.ts @@ -5,16 +5,18 @@ import { commonUrl, ossStandaloneConfigEmpty } from '../../../helpers/conf'; import { rte } from '../../../helpers/constants'; -import {Common} from '../../../helpers/common'; -import {OnboardActions} from '../../../common-actions/onboard-actions'; +import { Common } from '../../../helpers/common'; +import { OnboardActions} from '../../../common-actions/onboard-actions'; import { CliPage, MemoryEfficiencyPage, SlowLogPage, WorkbenchPage, PubSubPage, - MonitorPage, - OnboardingPage, MyRedisDatabasePage, HelpCenterPage, BrowserPage + OnboardingPage, + MyRedisDatabasePage, + HelpCenterPage, + BrowserPage } from '../../../pageObjects'; import { Telemetry } from '../../../helpers/telemetry'; @@ -29,7 +31,6 @@ const memoryEfficiencyPage = new MemoryEfficiencyPage(); const workBenchPage = new WorkbenchPage(); const slowLogPage = new SlowLogPage(); const pubSubPage = new PubSubPage(); -const monitorPage = new MonitorPage(); const telemetry = new Telemetry(); const logger = telemetry.createLogger(); @@ -52,7 +53,7 @@ fixture `Onboarding new user tests` // https://redislabs.atlassian.net/browse/RI-4070, https://redislabs.atlassian.net/browse/RI-4067 // https://redislabs.atlassian.net/browse/RI-4278 test('Verify onbarding new user steps', async t => { - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.expect(helpCenterPage.helpCenterPanel.visible).ok('help center panel is not opened'); // Verify that user can reset onboarding await t.click(onboardingPage.resetOnboardingBtn); @@ -76,7 +77,7 @@ test('Verify onbarding new user steps', async t => { await onBoardActions.verifyStepVisible('Command Helper'); await onBoardActions.clickNextStep(); // verify profiler is opened - await t.expect(monitorPage.monitorArea.visible).ok('profiler is not expanded'); + await t.expect(browserPage.Profiler.monitorArea.visible).ok('profiler is not expanded'); await onBoardActions.verifyStepVisible('Profiler'); await onBoardActions.clickNextStep(); // Verify that client list command visible when there is not any index created @@ -90,7 +91,7 @@ test('Verify onbarding new user steps', async t => { // create index in order to see in FT.INFO {index} in onboarding step await cliPage.sendCommandInCli(`FT.CREATE ${indexName} ON HASH PREFIX 1 test SCHEMA "name" TEXT`); // verify one step before is opened - await t.expect(monitorPage.monitorArea.visible).ok('profiler is not expanded'); + await t.expect(browserPage.Profiler.monitorArea.visible).ok('profiler is not expanded'); await onBoardActions.verifyStepVisible('Profiler'); await onBoardActions.clickNextStep(); // verify workbench page is opened @@ -121,7 +122,7 @@ test('Verify onbarding new user steps', async t => { }); // https://redislabs.atlassian.net/browse/RI-4067, https://redislabs.atlassian.net/browse/RI-4278 test('Verify onboard new user skip tour', async(t) => { - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.expect(helpCenterPage.helpCenterPanel.visible).ok('help center panel is not opened'); // Verify that user can reset onboarding await t.click(onboardingPage.resetOnboardingBtn); @@ -134,11 +135,11 @@ test('Verify onboard new user skip tour', async(t) => { await onBoardActions.clickNextStep(); // verify tree view step is visible await onBoardActions.verifyStepVisible('Tree view'); - await t.click(browserPage.workbenchLinkButton); - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(browserPage.NavigationPanel.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.expect(helpCenterPage.helpCenterPanel.visible).ok('help center panel is not opened'); await t.click(onboardingPage.resetOnboardingBtn); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that when user reset onboarding, user can see the onboarding triggered when user open the Browser page. await t.expect(onboardingPage.showMeAroundButton.visible).ok('onbarding starting is not visible'); // click skip tour @@ -150,27 +151,26 @@ test('Verify onboard new user skip tour', async(t) => { await onBoardActions.verifyOnboardingCompleted(); }); // https://redislabs.atlassian.net/browse/RI-4305 -test -.requestHooks(logger)('Verify that the final onboarding step is closed when user opens another page', async(t) => { - await t.click(myRedisDatabasePage.helpCenterButton); +test.requestHooks(logger)('Verify that the final onboarding step is closed when user opens another page', async(t) => { + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.click(onboardingPage.resetOnboardingBtn); await onBoardActions.startOnboarding(); await onBoardActions.clickNextUntilLastStep(); // Verify last step of onboarding process is visible await onBoardActions.verifyStepVisible('Great job!'); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); - + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); + // Verify that “ONBOARDING_TOUR_FINISHED” event is sent when user opens another page (or close the app) await telemetry.verifyEventHasProperties(telemetryEvent, expectedProperties, logger); // Go to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); // Verify onboarding completed successfully await t.expect(onboardingPage.showMeAroundButton.exists).notOk('Show me around button still visible'); await t.expect(onboardingPage.stepTitle.exists).notOk('Onboarding tooltip still visible'); // Go to Browser Page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify onboarding completed successfully await onBoardActions.verifyOnboardingCompleted(); }); diff --git a/tests/e2e/tests/regression/browser/resize-columns.e2e.ts b/tests/e2e/tests/regression/browser/resize-columns.e2e.ts index fad90e768a..d8ac79e215 100644 --- a/tests/e2e/tests/regression/browser/resize-columns.e2e.ts +++ b/tests/e2e/tests/regression/browser/resize-columns.e2e.ts @@ -83,8 +83,8 @@ test('Resize of columns in Hash, List, Zset Key details', async t => { } // Verify that resize saved when switching between pages - await t.click(myRedisDatabasePage.workbenchButton); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.openKeyDetails(keys[0].name); await t.expect(field.clientWidth).eql(keys[0].fieldWidthEnd, 'Resize context not saved for key when switching between pages'); @@ -92,7 +92,7 @@ test('Resize of columns in Hash, List, Zset Key details', async t => { await browserPage.searchByKeyName(`${keys[0].name}*`); // Verify that resize saved when switching between databases - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go to 2nd database await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName); // Verify that resize saved for specific data type @@ -103,7 +103,7 @@ test('Resize of columns in Hash, List, Zset Key details', async t => { // Change db index for 2nd database await databaseOverviewPage.changeDbIndex(1); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go back to 1st database await myRedisDatabasePage.clickOnDBByName(databasesForAdding[0].databaseName); // Verify that user can see the list of filters even when switching between databases @@ -111,7 +111,7 @@ test('Resize of columns in Hash, List, Zset Key details', async t => { await t.expect(browserPage.filterHistoryOption.withText(keys[0].name).exists).ok('Filter history requests not saved after switching between db'); // Verify that logical db not changed after switching between databases - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName); await databaseOverviewPage.verifyDbIndexSelected(1); }); diff --git a/tests/e2e/tests/regression/browser/scan-keys.e2e.ts b/tests/e2e/tests/regression/browser/scan-keys.e2e.ts index 05ace1293d..5b13cafcf8 100644 --- a/tests/e2e/tests/regression/browser/scan-keys.e2e.ts +++ b/tests/e2e/tests/regression/browser/scan-keys.e2e.ts @@ -23,7 +23,7 @@ fixture `Browser - Specify Keys to Scan` }); test('Verify that the user not enter the value less than 500 - the system automatically applies min value if user enters less than min', async t => { // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Specify keys to scan less than 500 await t.click(settingsPage.accordionAdvancedSettings); await settingsPage.changeKeysToScanValue('100'); diff --git a/tests/e2e/tests/regression/browser/survey-link.e2e.ts b/tests/e2e/tests/regression/browser/survey-link.e2e.ts index cec4a20e7e..7c00f5ab2e 100644 --- a/tests/e2e/tests/regression/browser/survey-link.e2e.ts +++ b/tests/e2e/tests/regression/browser/survey-link.e2e.ts @@ -28,16 +28,16 @@ test('Verify that user can use survey link', async t => { await common.checkURL(externalPageLink); await t.switchToParentWindow(); // Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(browserPage.userSurveyLink.visible).ok('Survey Link is not displayed'); // Slow Log page - await t.click(myRedisDatabasePage.analysisPageButton); + await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); await t.expect(browserPage.userSurveyLink.visible).ok('Survey Link is not displayed'); // PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); await t.expect(browserPage.userSurveyLink.visible).ok('Survey Link is not displayed'); // Verify that user cannot see survey link for list of databases page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await t.expect(browserPage.userSurveyLink.visible).notOk('Survey Link is visible'); // Verify that user cannot see survey link for welcome page await deleteAllDatabasesApi(); diff --git a/tests/e2e/tests/regression/cli/cli-promote-workbench.ts b/tests/e2e/tests/regression/cli/cli-promote-workbench.ts index 7291f48dae..e308c45008 100644 --- a/tests/e2e/tests/regression/cli/cli-promote-workbench.ts +++ b/tests/e2e/tests/regression/cli/cli-promote-workbench.ts @@ -23,13 +23,13 @@ fixture `Promote workbench in CLI` }); test('Verify that user can see saved workbench context after redirection from CLI to workbench', async t => { // Open Workbench - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); const command = 'INFO'; await t.typeText(workbenchPage.queryInput, command, { replace: true, speed: 1, paste: true }); await t.hover(workbenchPage.preselectArea); await t.click(workbenchPage.collapsePreselectAreaButton); // Turn to Browser page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that users can see workbench promotion message when they open CLI await t.click(cliPage.cliExpandButton); await t.expect(cliPage.workbenchLink.parent().textContent).eql('Try Workbench, our advanced CLI. Check out our Quick Guides to learn more about Redis capabilities.', 'Wrong promotion message'); diff --git a/tests/e2e/tests/regression/database-overview/database-info.e2e.ts b/tests/e2e/tests/regression/database-overview/database-info.e2e.ts index a3223a50da..1919535d2b 100644 --- a/tests/e2e/tests/regression/database-overview/database-info.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-info.e2e.ts @@ -39,6 +39,6 @@ test('Verify that user can see DB name, endpoint, connection type, Redis version // Verify that user can see an (i) icon next to the database name on Browser and Workbench pages await t.expect(browserPage.databaseInfoIcon.visible).ok('User can not see (i) icon on Browser page', { timeout: 10000 }); // Move to the Workbench page and check icon - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(workbenchPage.overviewTotalMemory.visible).ok('User can not see (i) icon on Workbench page', { timeout: 10000 }); }); diff --git a/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts b/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts index 366ab94a1f..1591a9900f 100644 --- a/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts @@ -32,7 +32,7 @@ fixture `Database overview` // Create databases and keys await acceptLicenseTermsAndAddDatabase(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); await browserPage.addStringKey(keyName); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addRedisDatabasePage.addLogicalRedisDatabase(ossStandaloneRedisearch, index); await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneRedisearch.databaseName} [db${index}]`); keys = await common.createArrayWithKeyValue(keysAmount); @@ -40,7 +40,7 @@ fixture `Database overview` }) .afterEach(async t => { // Clear and delete databases - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneRedisearch.databaseName} [db${index}]`); await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteCustomDatabase(`${ossStandaloneRedisearch.databaseName} [db${index}]`); @@ -59,7 +59,7 @@ test await browserActions.verifyTooltipContainsText(`db1:${keysAmount}Keys`, true); // Open Database - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneRedisearch.databaseName); await t.hover(workbenchPage.overviewTotalKeys); // Verify that user can see total number of keys and not it current logical database (if there are no any keys in other logical DBs) diff --git a/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts b/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts index fa1f08c9bd..563c184e4e 100644 --- a/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts @@ -36,7 +36,7 @@ test('Verify that user can connect to DB and see breadcrumbs at the top of the a // Verify that user can see breadcrumbs in Browser and Workbench views await t.expect(browserPage.breadcrumbsContainer.visible).ok('User can not see breadcrumbs in Browser page', { timeout: 10000 }); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(browserPage.breadcrumbsContainer.visible).ok('User can not see breadcrumbs in Workbench page', { timeout: 10000 }); // Verify that user can see total memory and total number of keys updated in DB header in Workbench page diff --git a/tests/e2e/tests/regression/database/database-sorting.e2e.ts b/tests/e2e/tests/regression/database/database-sorting.e2e.ts index fdcbbc3ada..92530042be 100644 --- a/tests/e2e/tests/regression/database/database-sorting.e2e.ts +++ b/tests/e2e/tests/regression/database/database-sorting.e2e.ts @@ -64,7 +64,7 @@ test('Verify that sorting on the list of databases saved when database opened', // Connect to DB and check sorting await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await t.expect(browserPage.refreshKeysButton.visible).ok('Browser page is not opened'); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); actualDatabaseList = await myRedisDatabasePage.getAllDatabases(); await myRedisDatabasePage.compareDatabases(actualDatabaseList, sortedByConnectionType); // Sort by Host and Port diff --git a/tests/e2e/tests/regression/database/edit-db.e2e.ts b/tests/e2e/tests/regression/database/edit-db.e2e.ts index 597554b5c2..4d34b8c5c3 100644 --- a/tests/e2e/tests/regression/database/edit-db.e2e.ts +++ b/tests/e2e/tests/regression/database/edit-db.e2e.ts @@ -32,7 +32,7 @@ test // Delete database await deleteDatabase(newDatabaseName); })('Verify that user can edit DB alias of Standalone DB', async t => { - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Edit alias of added database await clickOnEditDatabaseByName(database.databaseName); @@ -65,7 +65,7 @@ test await t.click(cliPage.cliExpandButton); await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Edit port of added database await clickOnEditDatabaseByName(ossStandaloneConfig.databaseName); await t.typeText(addRedisDatabasePage.portInput, ossStandaloneBigConfig.port, { replace: true, paste: true }); diff --git a/tests/e2e/tests/regression/database/github.e2e.ts b/tests/e2e/tests/regression/database/github.e2e.ts index 0f12efee19..beb47f85e2 100644 --- a/tests/e2e/tests/regression/database/github.e2e.ts +++ b/tests/e2e/tests/regression/database/github.e2e.ts @@ -26,15 +26,15 @@ fixture `Github functionality` test .meta({ rte: rte.standalone, env: env.web })('Verify that user can work with Github link in the application', async t => { // Verify that user can see the icon for GitHub reference at the bottom of the left side bar in the List of DBs - await t.expect(myRedisDatabasePage.githubButton.visible).ok('Github button not found'); + await t.expect(myRedisDatabasePage.NavigationPanel.githubButton.visible).ok('Github button not found'); //Verify that user can see the icon for GitHub reference at the bottom of the left side bar on the Browser page await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await t.expect(myRedisDatabasePage.githubButton.visible).ok('Github button not found'); + await t.expect(myRedisDatabasePage.NavigationPanel.githubButton.visible).ok('Github button not found'); // Verify that user can see the icon for GitHub reference at the bottom of the left side bar on the Workbench page - await t.click(myRedisDatabasePage.workbenchButton); - await t.expect(myRedisDatabasePage.githubButton.visible).ok('Github button'); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); + await t.expect(myRedisDatabasePage.NavigationPanel.githubButton.visible).ok('Github button'); // Verify that when user clicks on Github icon he redirects to the URL: https://github.com/RedisInsight/RedisInsight - await t.click(myRedisDatabasePage.githubButton); + await t.click(myRedisDatabasePage.NavigationPanel.githubButton); await t.expect(getPageUrl()).contains('https://github.com/RedisInsight/RedisInsight', 'Link is not correct'); await t.switchToParentWindow(); }); diff --git a/tests/e2e/tests/regression/database/redisstack.e2e.ts b/tests/e2e/tests/regression/database/redisstack.e2e.ts index 521a6f0406..78c654639b 100644 --- a/tests/e2e/tests/regression/database/redisstack.e2e.ts +++ b/tests/e2e/tests/regression/database/redisstack.e2e.ts @@ -50,7 +50,7 @@ test('Verify that user can see Redis Stack icon and logo in Browser page in Over await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await t.expect(databaseOverviewPage.overviewRedisStackLogo.visible).ok('Redis Stack logo not found'); // Open Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(databaseOverviewPage.overviewRedisStackLogo.visible).ok('Redis Stack logo not found'); // Check modules inside of the tooltip await t.hover(databaseOverviewPage.overviewRedisStackLogo); diff --git a/tests/e2e/tests/regression/monitor/monitor.e2e.ts b/tests/e2e/tests/regression/monitor/monitor.e2e.ts index 6ac6ed7379..2f04487e48 100644 --- a/tests/e2e/tests/regression/monitor/monitor.e2e.ts +++ b/tests/e2e/tests/regression/monitor/monitor.e2e.ts @@ -2,10 +2,10 @@ import { Chance } from 'chance'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, - MonitorPage, SettingsPage, BrowserPage, - CliPage, WorkbenchPage + CliPage, + WorkbenchPage } from '../../../pageObjects'; import { commonUrl, @@ -16,10 +16,9 @@ import { import { rte } from '../../../helpers/constants'; import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi, deleteStandaloneDatabasesApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; -import {WorkbenchActions} from '../../../common-actions/workbench-actions'; +import { WorkbenchActions } from '../../../common-actions/workbench-actions'; const myRedisDatabasePage = new MyRedisDatabasePage(); -const monitorPage = new MonitorPage(); const settingsPage = new SettingsPage(); const browserPage = new BrowserPage(); const cliPage = new CliPage(); @@ -40,81 +39,81 @@ fixture `Monitor` }); test('Verify Monitor refresh/stop', async t => { // Run monitor - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); // Close Monitor - await t.click(monitorPage.closeMonitor); + await t.click(browserPage.Profiler.closeMonitor); // Verify that monitor is not displayed - await t.expect(monitorPage.monitorArea.visible).notOk('Profiler area not found'); + await t.expect(browserPage.Profiler.monitorArea.visible).notOk('Profiler area not found'); // Verify that user open monitor again - await t.click(monitorPage.expandMonitor); + await t.click(browserPage.Profiler.expandMonitor); // Verify that when user closes the Monitor by clicking on "Close Monitor" button Monitor stopped - await t.expect(monitorPage.startMonitorButton.visible).ok('Start profiler button not found'); + await t.expect(browserPage.Profiler.startMonitorButton.visible).ok('Start profiler button not found'); // Run monitor - await t.click(monitorPage.startMonitorButton); - await monitorPage.checkCommandInMonitorResults('info'); + await t.click(browserPage.Profiler.startMonitorButton); + await browserPage.Profiler.checkCommandInMonitorResults('info'); // Click on Stop Monitor button - await t.click(monitorPage.runMonitorToggle); + await t.click(browserPage.Profiler.runMonitorToggle); // Check that Monitor is stopped - await t.expect(monitorPage.resetProfilerButton.visible).ok('Reset profiler button not appeared'); + await t.expect(browserPage.Profiler.resetProfilerButton.visible).ok('Reset profiler button not appeared'); // Get the last log line - const lastTimestamp = await monitorPage.monitorCommandLineTimestamp.nth(-1).textContent; + const lastTimestamp = await browserPage.Profiler.monitorCommandLineTimestamp.nth(-1).textContent; // Click on refresh keys to get new logs await t.click(browserPage.refreshKeysButton); // Verify that Monitor is stopped when user clicks on "Stop" button - await t.expect(monitorPage.monitorCommandLineTimestamp.nth(-1).textContent).eql(lastTimestamp, 'The last line of monitor logs not correct'); + await t.expect(browserPage.Profiler.monitorCommandLineTimestamp.nth(-1).textContent).eql(lastTimestamp, 'The last line of monitor logs not correct'); // Run monitor - await t.click(monitorPage.resetProfilerButton); - await t.click(monitorPage.startMonitorButton); - await monitorPage.checkCommandInMonitorResults('info'); + await t.click(browserPage.Profiler.resetProfilerButton); + await t.click(browserPage.Profiler.startMonitorButton); + await browserPage.Profiler.checkCommandInMonitorResults('info'); // Refresh the page await common.reloadPage(); // Check that monitor is closed - await t.expect(monitorPage.monitorArea.exists).notOk('Monitor area not found'); + await t.expect(browserPage.Profiler.monitorArea.exists).notOk('Monitor area not found'); // Verify that when user refreshes the page the list of results in Monitor is not saved - await t.click(monitorPage.expandMonitor); - await t.expect(monitorPage.monitorWarningMessage.exists).ok('Warning message in monitor not found'); + await t.click(browserPage.Profiler.expandMonitor); + await t.expect(browserPage.Profiler.monitorWarningMessage.exists).ok('Warning message in monitor not found'); // Run monitor - await t.click(monitorPage.startMonitorButton); - await monitorPage.checkCommandInMonitorResults('info'); + await t.click(browserPage.Profiler.startMonitorButton); + await browserPage.Profiler.checkCommandInMonitorResults('info'); // Click on refresh keys to get new logs await t.click(browserPage.refreshKeysButton); // Get last timestamp - const lastTimestampSelector = monitorPage.monitorCommandLineTimestamp.nth(-1); + const lastTimestampSelector = browserPage.Profiler.monitorCommandLineTimestamp.nth(-1); // Stop Monitor - await monitorPage.stopMonitor(); + await browserPage.Profiler.stopMonitor(); // Click on Clear button - await t.click(monitorPage.clearMonitorButton); + await t.click(browserPage.Profiler.clearMonitorButton); // Verify that when user clicks on "Clear" button in Monitor, all commands history is removed await t.expect(lastTimestampSelector.exists).notOk('Cleared last line not found'); }); test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionAdvancedSettings); await settingsPage.changeKeysToScanValue('20000000'); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneBigConfig.databaseName); }) .after(async t => { - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionAdvancedSettings); await settingsPage.changeKeysToScanValue('10000'); // Delete database await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Verify that user can see monitor results in high DB load', async t => { // Run monitor - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); // Search by not existed key pattern await browserPage.searchByKeyName(`${chance.string({ length: 10 })}*`); // Check that the last child is updated for (let i = 0; i <= 10; i++) { - const previousTimestamp = await monitorPage.monitorCommandLineTimestamp.nth(-1).textContent; + const previousTimestamp = await browserPage.Profiler.monitorCommandLineTimestamp.nth(-1).textContent; await t.wait(5500); - const nextTimestamp = await monitorPage.monitorCommandLineTimestamp.nth(-1).textContent; + const nextTimestamp = await browserPage.Profiler.monitorCommandLineTimestamp.nth(-1).textContent; await t.expect(previousTimestamp).notEql(nextTimestamp, 'Monitor results not correct'); } }); @@ -127,14 +126,14 @@ test.skip await t.click(cliPage.cliExpandButton); await t.expect(cliPage.cliOutputResponseSuccess.textContent).eql('"OK"', 'Command from autocomplete was not found & executed'); await t.click(cliPage.cliCollapseButton); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addNewStandaloneDatabaseApi(ossStandaloneNoPermissionsConfig); await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(ossStandaloneNoPermissionsConfig.databaseName); }) .after(async t => { // Delete created user - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await cliPage.sendCommandInCli('acl DELUSER noperm'); // Delete database @@ -142,16 +141,16 @@ test.skip })('Verify that if user doesn\'t have permissions to run monitor, user can see error message', async t => { const command = 'CLIENT LIST'; // Expand the Profiler - await t.click(monitorPage.expandMonitor); + await t.click(browserPage.Profiler.expandMonitor); // Click on run monitor button - await t.click(monitorPage.startMonitorButton); + await t.click(browserPage.Profiler.startMonitorButton); // Check that error message is displayed - await t.expect(monitorPage.monitorNoPermissionsMessage.visible).ok('Error message not found'); + await t.expect(browserPage.Profiler.monitorNoPermissionsMessage.visible).ok('Error message not found'); // Check the error message text - await t.expect(monitorPage.monitorNoPermissionsMessage.innerText).eql('The Profiler cannot be started. This user has no permissions to run the \'monitor\' command', 'No Permissions message not found'); + await t.expect(browserPage.Profiler.monitorNoPermissionsMessage.innerText).eql('The Profiler cannot be started. This user has no permissions to run the \'monitor\' command', 'No Permissions message not found'); // Verify that if user doesn't have permissions to run monitor, run monitor button is not available - await t.expect(monitorPage.runMonitorToggle.withAttribute('disabled').exists).ok('No permissions run icon not found'); - await t.click(myRedisDatabasePage.workbenchButton); + await t.expect(browserPage.Profiler.runMonitorToggle.withAttribute('disabled').exists).ok('No permissions run icon not found'); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(command); // Verify that user have the following error when there is no permission to run the CLIENT LIST: "NOPERM this user has no permissions to run the 'CLIENT LIST' command or its subcommand" await workbencActions.verifyClientListErrorMessage(); diff --git a/tests/e2e/tests/regression/monitor/save-commands.e2e.ts b/tests/e2e/tests/regression/monitor/save-commands.e2e.ts index a7ca2f27d3..1a2f3fd999 100644 --- a/tests/e2e/tests/regression/monitor/save-commands.e2e.ts +++ b/tests/e2e/tests/regression/monitor/save-commands.e2e.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as os from 'os'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MonitorPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -9,7 +9,7 @@ import { import { rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const monitorPage = new MonitorPage(); +const browserPage = new BrowserPage(); const tempDir = os.tmpdir(); fixture `Save commands` @@ -24,34 +24,34 @@ fixture `Save commands` }); test('Verify that when clicks on “Reset Profiler” button he brought back to Profiler home screen', async t => { // Start Monitor without Save logs - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); // Remember the number of files in Temp const numberOfTempFiles = fs.readdirSync(tempDir).length; // Reset profiler - await monitorPage.resetProfiler(); + await browserPage.Profiler.resetProfiler(); //Check the screen - await t.expect(monitorPage.monitorNotStartedElement.visible).ok('The Profiler home screen not appeared'); - await t.click(monitorPage.closeMonitor); + await t.expect(browserPage.Profiler.monitorNotStartedElement.visible).ok('The Profiler home screen not appeared'); + await t.click(browserPage.Profiler.closeMonitor); // Start Monitor with Save logs - await monitorPage.startMonitorWithSaveLog(); + await browserPage.Profiler.startMonitorWithSaveLog(); // Reset profiler - await monitorPage.resetProfiler(); + await browserPage.Profiler.resetProfiler(); // Check the screen - await t.expect(monitorPage.monitorNotStartedElement.visible).ok('The Profiler home screen not appeared'); - await t.expect(monitorPage.monitorIsStartedText.visible).notOk('The current Profiler session is not closed'); + await t.expect(browserPage.Profiler.monitorNotStartedElement.visible).ok('The Profiler home screen not appeared'); + await t.expect(browserPage.Profiler.monitorIsStartedText.visible).notOk('The current Profiler session is not closed'); // temporary Log file is deleted await t.expect(numberOfTempFiles).eql(fs.readdirSync(tempDir).length, 'The temporary Log file is not deleted'); }); test('Verify that when user clears the Profiler he doesn\'t brought back to Profiler home screen', async t => { // Start Monitor - await monitorPage.startMonitor(); + await browserPage.Profiler.startMonitor(); // Clear monitor and check the view - await t.click(monitorPage.clearMonitorButton); - await t.expect(monitorPage.monitorNotStartedElement.visible).notOk('Profiler home screen is still opened after Clear'); - await t.click(monitorPage.closeMonitor); + await t.click(browserPage.Profiler.clearMonitorButton); + await t.expect(browserPage.Profiler.monitorNotStartedElement.visible).notOk('Profiler home screen is still opened after Clear'); + await t.click(browserPage.Profiler.closeMonitor); // Start Monitor with Save logs - await monitorPage.startMonitorWithSaveLog(); + await browserPage.Profiler.startMonitorWithSaveLog(); // Clear monitor and check the view - await t.click(monitorPage.clearMonitorButton); - await t.expect(monitorPage.monitorNotStartedElement.visible).notOk('Profiler home screen is still opened after Clear'); + await t.click(browserPage.Profiler.clearMonitorButton); + await t.expect(browserPage.Profiler.monitorNotStartedElement.visible).notOk('Profiler home screen is still opened after Clear'); }); diff --git a/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts b/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts index 082c1330d3..9e6d93c5fd 100644 --- a/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts +++ b/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts @@ -15,7 +15,7 @@ fixture `PubSub debug mode` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to PubSub page and subscribe to channel - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); await t.click(pubSubPage.subscribeButton); // Publish different messages await cliPage.sendCommandInCli('10 publish channel first'); @@ -38,9 +38,9 @@ test await pubSubPage.publishMessage('test', 'new message with no scroll'); await verifyMessageDisplayingInPubSub('new message with no scroll', false); // Go to Browser Page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go to PubSub page - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); // Verify that the debug mode state is reset to default auto-scroll await verifyMessageDisplayingInPubSub('new message with no scroll', true); }); diff --git a/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts b/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts index 674ac18add..a5437771cc 100644 --- a/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts +++ b/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts @@ -26,7 +26,7 @@ test await addNewOSSClusterDatabaseApi(ossClusterConfig); await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(ossClusterConfig.ossClusterDatabaseName); - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); }) .after(async() => { await deleteOSSClusterDatabaseApi(ossClusterConfig); @@ -48,7 +48,7 @@ test await addNewStandaloneDatabaseApi(ossStandaloneConfig); await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.pubSubButton); + await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); }) .after(async() => { await deleteStandaloneDatabaseApi(ossStandaloneConfig); diff --git a/tests/e2e/tests/regression/shortcuts/shortcuts.e2e.ts b/tests/e2e/tests/regression/shortcuts/shortcuts.e2e.ts index 6c2ff2f680..e84a2c998b 100644 --- a/tests/e2e/tests/regression/shortcuts/shortcuts.e2e.ts +++ b/tests/e2e/tests/regression/shortcuts/shortcuts.e2e.ts @@ -20,7 +20,7 @@ test const link = 'https://github.com/RedisInsight/RedisInsight/releases'; // Click on help center icon and verify panel - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.expect(helpCenterPage.helpCenterPanel.exists).ok('Help Center panel is not opened'); // Click on Shortcuts option and verify panel await t.click(helpCenterPage.helpCenterShortcutButton); @@ -35,7 +35,7 @@ test await t.expect(shortcutsPage.shortcutsPanel.exists).notOk('Shortcuts panel is not displayed'); // Click on the Release Notes in Help Center - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.click(helpCenterPage.helpCenterReleaseNotesButton); // Verify redirected link opening Release Notes in Help Center await t.expect(getPageUrl()).eql(link, 'The Release Notes link not correct'); @@ -43,7 +43,7 @@ test test .meta({ env: env.desktop })('Verify that user can see a summary of Shortcuts by clicking "Keyboard Shortcuts" button in Help Center for desktop', async t => { // Click on help center icon and verify panel - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.expect(helpCenterPage.helpCenterPanel.exists).ok('Help Center panel is not opened'); // Click on Shortcuts option and verify panel await t.click(helpCenterPage.helpCenterShortcutButton); @@ -69,7 +69,7 @@ test('Verify that user can see description of the “up” shortcut in the Help ]; // Open Shortcuts - await t.click(myRedisDatabasePage.helpCenterButton); + await t.click(myRedisDatabasePage.NavigationPanel.helpCenterButton); await t.click(helpCenterPage.helpCenterShortcutButton); // Verify that user can see the description of the “Shift+Space” keyboard shortcut in the Keyboard Shortcuts diff --git a/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts b/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts index d2b0b37328..8e842e76af 100644 --- a/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts +++ b/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts @@ -12,7 +12,7 @@ const browserPage = new BrowserPage(); const workbenchPage = new WorkbenchPage(); fixture `Tree view verifications` - .meta({type: 'regression', rte: rte.standalone}) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); @@ -36,7 +36,7 @@ test await t.expect(browserPage.keyListMessage.textContent).contains(message, 'The message is not displayed'); // Verify that workbench opened by clicking on "Use Workbench Guides and Tutorials" link - await t.click(browserPage.workbenchLinkButton); + await t.click(browserPage.NavigationPanel.workbenchButton); await t.expect(workbenchPage.expandArea.visible).ok('Workbench page is not opened'); }); test('Verify that user can see the total number of keys, the number of keys scanned, the “Scan more” control displayed at the top of Tree view and Browser view', async t => { diff --git a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts index 6aa4a9a7d7..7bebac2247 100644 --- a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts +++ b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts @@ -13,7 +13,7 @@ fixture `Autocomplete for entered commands` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database diff --git a/tests/e2e/tests/regression/workbench/autoexecute-button.e2e.ts b/tests/e2e/tests/regression/workbench/autoexecute-button.e2e.ts index d369e610c0..15513c7954 100644 --- a/tests/e2e/tests/regression/workbench/autoexecute-button.e2e.ts +++ b/tests/e2e/tests/regression/workbench/autoexecute-button.e2e.ts @@ -12,7 +12,7 @@ fixture `Workbench Auto-Execute button` .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Clear and delete database diff --git a/tests/e2e/tests/regression/workbench/command-results.e2e.ts b/tests/e2e/tests/regression/workbench/command-results.e2e.ts index da2dc908eb..d46fb0af07 100644 --- a/tests/e2e/tests/regression/workbench/command-results.e2e.ts +++ b/tests/e2e/tests/regression/workbench/command-results.e2e.ts @@ -27,7 +27,7 @@ fixture `Command results at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); // Add index and data - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandsArrayInWorkbench(commandsForIndex); }) .afterEach(async t => { @@ -121,7 +121,7 @@ test('Big output in workbench is visible in virtualized table', async t => { test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .after(async t => { await t.switchToMainWindow(); diff --git a/tests/e2e/tests/regression/workbench/context.e2e.ts b/tests/e2e/tests/regression/workbench/context.e2e.ts index 7a2b67fe59..6b09a5b3b7 100644 --- a/tests/e2e/tests/regression/workbench/context.e2e.ts +++ b/tests/e2e/tests/regression/workbench/context.e2e.ts @@ -18,7 +18,7 @@ fixture `Workbench Context` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database @@ -27,9 +27,9 @@ fixture `Workbench Context` test('Verify that user can see saved CLI state when navigates away to any other page', async t => { // Expand CLI and navigte to Browser await t.click(cliPage.cliExpandButton); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Return back to Workbench and check CLI - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(cliPage.cliCollapseButton.exists).ok('CLI is not expanded'); }); // Update after resolving https://redislabs.atlassian.net/browse/RI-3299 @@ -43,7 +43,7 @@ test('Verify that user can see saved CLI size when navigates away to any other p await t.hover(cliResizeButton); // Resize CLI 50px up and navigate to the My Redis databases page await t.drag(cliResizeButton, 0, -offsetY, { speed: 0.01 }); - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Navigate back to the database Workbench and check CLI size await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); await t.expect(await cliPage.cliArea.clientHeight > cliAreaHeightEnd).ok('Saved context for resizable cli is incorrect'); @@ -53,9 +53,9 @@ test('Verify that user can see all the information removed when reloads the page // Create context modificaions and navigate to Browser await t.typeText(workbenchPage.queryInput, command, { replace: true, speed: speed}); await t.click(cliPage.cliExpandButton); - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Open Workbench page and verify context - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(cliPage.cliCollapseButton.exists).ok('CLI is not expanded'); await t.expect(workbenchPage.queryInputScriptArea.textContent).eql(command, 'Input in Editor is not saved'); // Reload the window and chek context @@ -67,8 +67,8 @@ test('Verify that user can see saved state of the Enablement area when navigates // Collapse the Enablement area and open Settings await t.hover(workbenchPage.preselectArea); await t.click(workbenchPage.collapsePreselectAreaButton); - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Navigate back to Workbench and Verify the context - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await t.expect(workbenchPage.enablementAreaTreeView.visible).notOk('The Enablement area is not collapsed'); }); diff --git a/tests/e2e/tests/regression/workbench/cypher.e2e.ts b/tests/e2e/tests/regression/workbench/cypher.e2e.ts index ab14197f21..4e4c17d888 100644 --- a/tests/e2e/tests/regression/workbench/cypher.e2e.ts +++ b/tests/e2e/tests/regression/workbench/cypher.e2e.ts @@ -15,7 +15,7 @@ fixture `Cypher syntax at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Drop database diff --git a/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts b/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts index 2d8f47a56f..79b6bde9ab 100644 --- a/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts @@ -13,7 +13,7 @@ fixture `Default scripts area at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database @@ -59,13 +59,13 @@ test('Verify that user can see saved article in Enablement area when he leaves W // Check the button from Hash page is visible await t.expect(workbenchPage.preselectHashCreate.visible).ok('The end of the page is not visible'); // Go to Browser page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Go back to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Verify that the same article is opened in Enablement area await t.expect(workbenchPage.preselectHashCreate.visible).ok('The end of the page is not visible'); // Go to list of DBs page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go back to active DB again await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Check that user is on Workbench page and "Working with Hashes" page is displayed @@ -84,13 +84,13 @@ test.skip('Verify that user can see saved scroll position in Enablement area whe // Check the scroll position const scrollPosition = await workbenchPage.scrolledEnablementArea.scrollTop; // Go to Browser page - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Go back to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Check that scroll position is saved await t.expect(await workbenchPage.scrolledEnablementArea.scrollTop).eql(scrollPosition, 'The scroll position status is incorrect'); // Go to list of DBs page - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go back to active DB again await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Check that scroll position is saved diff --git a/tests/e2e/tests/regression/workbench/editor-cleanup.e2e.ts b/tests/e2e/tests/regression/workbench/editor-cleanup.e2e.ts index 24e0ff310c..8d9e7b4c45 100644 --- a/tests/e2e/tests/regression/workbench/editor-cleanup.e2e.ts +++ b/tests/e2e/tests/regression/workbench/editor-cleanup.e2e.ts @@ -28,14 +28,14 @@ fixture `Workbench Editor Cleanup` }); test('Disabled Editor Cleanup toggle behavior', async t => { // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionWorkbenchSettings); // Disable Editor Cleanup await t.click(settingsPage.switchEditorCleanupOption); // Verify that user can see text "Clear the Editor after running commands" for Editor Cleanup In Settings await t.expect(settingsPage.switchEditorCleanupOption.sibling(0).withExactText('Clear the Editor after running commands').visible).ok('Cleanup text is not correct'); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Send commands await workbenchPage.sendCommandInWorkbench(commandToSend); await workbenchPage.sendCommandInWorkbench(commandToSend); @@ -44,7 +44,7 @@ test('Disabled Editor Cleanup toggle behavior', async t => { }); test('Enabled Editor Cleanup toggle behavior', async t => { // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Send commands await workbenchPage.sendCommandInWorkbench(commandToSend); await workbenchPage.sendCommandInWorkbench(commandToSend); @@ -65,7 +65,7 @@ test await deleteStandaloneDatabasesApi(databasesForAdding); })('Editor Cleanup settings', async t => { // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionWorkbenchSettings); // Disable Editor Cleanup await settingsPage.changeEditorCleanupSwitcher(false); @@ -74,10 +74,10 @@ test // Verify that Editor Cleanup setting is saved when refreshing the page await t.expect(await settingsPage.getEditorCleanupSwitcherValue()).eql('false', 'Editor Cleanup switcher changed'); // Go to another database - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName); // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionWorkbenchSettings); // Verify that Editor Cleanup setting is saved when switching between databases await t.expect(await settingsPage.getEditorCleanupSwitcherValue()).eql('false', 'Editor Cleanup switcher changed'); diff --git a/tests/e2e/tests/regression/workbench/empty-command-history.e2e.ts b/tests/e2e/tests/regression/workbench/empty-command-history.e2e.ts index d5ebd3c886..646b95d1a2 100644 --- a/tests/e2e/tests/regression/workbench/empty-command-history.e2e.ts +++ b/tests/e2e/tests/regression/workbench/empty-command-history.e2e.ts @@ -14,7 +14,7 @@ fixture `Empty command history in Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database diff --git a/tests/e2e/tests/regression/workbench/group-mode.e2e.ts b/tests/e2e/tests/regression/workbench/group-mode.e2e.ts index 939e81179c..d8a4479acf 100644 --- a/tests/e2e/tests/regression/workbench/group-mode.e2e.ts +++ b/tests/e2e/tests/regression/workbench/group-mode.e2e.ts @@ -20,7 +20,7 @@ fixture `Workbench Group Mode` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database diff --git a/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts b/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts index 3aa18f2e4c..9829b720dd 100644 --- a/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts +++ b/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts @@ -21,7 +21,7 @@ fixture `History of results at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Clear and delete database diff --git a/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts b/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts index 89a171c057..e234542522 100644 --- a/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts +++ b/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts @@ -23,7 +23,7 @@ fixture `Upload custom tutorials` .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { await deleteStandaloneDatabaseApi(ossStandaloneConfig); diff --git a/tests/e2e/tests/regression/workbench/raw-mode.e2e.ts b/tests/e2e/tests/regression/workbench/raw-mode.e2e.ts index 0c41648308..78d61f6168 100644 --- a/tests/e2e/tests/regression/workbench/raw-mode.e2e.ts +++ b/tests/e2e/tests/regression/workbench/raw-mode.e2e.ts @@ -29,11 +29,11 @@ fixture `Workbench Raw mode` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { // Clear and delete database - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); @@ -62,7 +62,7 @@ test await common.reloadPage(); await myRedisDatabasePage.clickOnDBByName(databasesForAdding[0].databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .after(async() => { // Clear and delete database @@ -76,10 +76,10 @@ test await workbenchPage.sendCommandInWorkbench(commandsForSend[1]); await workbenchPage.checkWorkbenchCommandResult(commandsForSend[1], `"${unicodeValue}"`); // Go to another database - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Verify that user can see saved Raw mode state after re-connection to another DB await workbenchPage.sendCommandInWorkbench(commandsForSend[1]); await workbenchPage.checkWorkbenchCommandResult(commandsForSend[1], `"${unicodeValue}"`); @@ -91,7 +91,7 @@ test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .after(async t => { // Drop index, documents and database diff --git a/tests/e2e/tests/regression/workbench/redis-stack-commands.e2e.ts b/tests/e2e/tests/regression/workbench/redis-stack-commands.e2e.ts index d76c6bf202..cabe9367f0 100644 --- a/tests/e2e/tests/regression/workbench/redis-stack-commands.e2e.ts +++ b/tests/e2e/tests/regression/workbench/redis-stack-commands.e2e.ts @@ -17,7 +17,7 @@ fixture `Redis Stack command in Workbench` .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Drop key and database @@ -51,7 +51,7 @@ test // Check result await t.switchToIframe(workbenchPage.iframe); await t.expect(workbenchPage.responseInfo.textContent).eql('No data to visualize. Raw information is presented below.', 'The info message is not displayed for Graph'); - + // Get result text content const graphModeText = await workbenchPage.parsedRedisReply.textContent; // Switch to Text view and check result diff --git a/tests/e2e/tests/regression/workbench/redisearch-module-not-available.e2e.ts b/tests/e2e/tests/regression/workbench/redisearch-module-not-available.e2e.ts index 4240ee283c..29d162fee7 100644 --- a/tests/e2e/tests/regression/workbench/redisearch-module-not-available.e2e.ts +++ b/tests/e2e/tests/regression/workbench/redisearch-module-not-available.e2e.ts @@ -17,7 +17,7 @@ fixture `Redisearch module not available` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneV5Config, ossStandaloneV5Config.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database @@ -42,7 +42,7 @@ test .meta({ env: env.web, rte: rte.standalone }) .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneV5Config, ossStandaloneV5Config.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .after(async() => { await deleteStandaloneDatabaseApi(ossStandaloneV5Config); diff --git a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts index f60c47e181..170f68cfb5 100644 --- a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts @@ -21,7 +21,7 @@ fixture `Scripting area at Workbench` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Clear and delete database @@ -37,12 +37,12 @@ test('Verify that user can run multiple commands written in multiple lines in Wo ]; // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Specify Commands in pipeline await t.click(settingsPage.accordionWorkbenchSettings); await settingsPage.changeCommandsInPipeline('1'); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Send commands in multiple lines await workbenchPage.sendCommandInWorkbench(commandsForSend.join('\n'), 0.5); // Check the result @@ -64,12 +64,12 @@ test ]; // Go to Settings page - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Specify Commands in pipeline await t.click(settingsPage.accordionWorkbenchSettings); await settingsPage.changeCommandsInPipeline('1'); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Send commands in multiple lines with double slashes (//) wrapped in double quotes await workbenchPage.sendCommandInWorkbench(commandsForSend.join('\n"//"'), 0.5); // Check that all commands are executed diff --git a/tests/e2e/tests/regression/workbench/workbench-non-auto-guides.e2e.ts b/tests/e2e/tests/regression/workbench/workbench-non-auto-guides.e2e.ts index 9c84a22013..1405c6aea7 100644 --- a/tests/e2e/tests/regression/workbench/workbench-non-auto-guides.e2e.ts +++ b/tests/e2e/tests/regression/workbench/workbench-non-auto-guides.e2e.ts @@ -35,7 +35,7 @@ fixture `Workbench modes to non-auto guides` .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database @@ -44,12 +44,12 @@ fixture `Workbench modes to non-auto guides` test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(`set ${keyName} "${keyValue}"`); }) .after(async t => { // Clear and delete database - await t.click(myRedisDatabasePage.browserButton); + await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await browserPage.deleteKeyByName(keyName); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Workbench modes from editor', async t => { diff --git a/tests/e2e/tests/regression/workbench/workbench-pipeline.e2e.ts b/tests/e2e/tests/regression/workbench/workbench-pipeline.e2e.ts index d7ab5022d1..bc51201bd0 100644 --- a/tests/e2e/tests/regression/workbench/workbench-pipeline.e2e.ts +++ b/tests/e2e/tests/regression/workbench/workbench-pipeline.e2e.ts @@ -20,7 +20,7 @@ fixture `Workbench Pipeline` .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); // Go to Settings page - Pipeline mode - await t.click(myRedisDatabasePage.settingsButton); + await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); await t.click(settingsPage.accordionWorkbenchSettings); }) .afterEach(async() => { @@ -48,7 +48,7 @@ test test.skip('Verify that only chosen in pipeline number of commands is loading at the same time in Workbench', async t => { await settingsPage.changeCommandsInPipeline(pipelineValues[1]); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(commandForSend, 0.01); // Verify that only selected pipeline number of commands are loaded at the same time await t.expect(workbenchPage.loadedCommand.count).eql(Number(pipelineValues[1]), 'The number of sending commands is incorrect'); @@ -56,7 +56,7 @@ test.skip('Verify that only chosen in pipeline number of commands is loading at test.skip('Verify that user can see spinner over Run button and grey preloader for each command', async t => { await settingsPage.changeCommandsInPipeline(pipelineValues[3]); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(commandForSend, 0.01); // Verify that user can`t start new commands from the Workbench while command(s) is executing await t.expect(workbenchPage.submitCommandButton.withAttribute('disabled').exists).ok('Run button is not disabled', { timeout: 5000 }); @@ -69,7 +69,7 @@ test('Verify that user can interact with the Editor while command(s) in progress await settingsPage.changeCommandsInPipeline(pipelineValues[2]); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(commandForSend); await t.typeText(workbenchPage.queryInput, commandForSend, { replace: true, paste: true }); await t.pressKey('enter'); @@ -88,7 +88,7 @@ test('Verify that command results are added to history in order most recent - on await settingsPage.changeCommandsInPipeline(pipelineValues[2]); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(multipleCommands.join('\n')); // Check that the results for all commands are displayed in workbench history in reverse order (most recent - on top) for (let i = 0; i < multipleCommands.length; i++) { diff --git a/tests/e2e/tests/regression/workbench/workbench-re-cluster.e2e.ts b/tests/e2e/tests/regression/workbench/workbench-re-cluster.e2e.ts index 05b6c599f7..cda533ca50 100644 --- a/tests/e2e/tests/regression/workbench/workbench-re-cluster.e2e.ts +++ b/tests/e2e/tests/regression/workbench/workbench-re-cluster.e2e.ts @@ -25,7 +25,7 @@ const verifyCommandsInWorkbench = async(): Promise => { 'FT.SEARCH idx *' ]; - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); // Send commands await workbenchPage.sendCommandInWorkbench(commandForSend1); await workbenchPage.sendCommandInWorkbench(commandForSend2); diff --git a/tests/e2e/tests/smoke/database/connecting-to-the-db.e2e.ts b/tests/e2e/tests/smoke/database/connecting-to-the-db.e2e.ts index aef69f7cf9..ff7b21f486 100644 --- a/tests/e2e/tests/smoke/database/connecting-to-the-db.e2e.ts +++ b/tests/e2e/tests/smoke/database/connecting-to-the-db.e2e.ts @@ -44,7 +44,7 @@ test // Check that browser page was opened await t.expect(getPageUrl()).contains('browser', 'Browser page not opened'); // Go to databases list - await t.click(myRedisDatabasePage.myRedisDBButton); + await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); } }); test diff --git a/tests/e2e/tests/smoke/workbench/json-workbench.e2e.ts b/tests/e2e/tests/smoke/workbench/json-workbench.e2e.ts index 6ebfd88aeb..995a2682f7 100644 --- a/tests/e2e/tests/smoke/workbench/json-workbench.e2e.ts +++ b/tests/e2e/tests/smoke/workbench/json-workbench.e2e.ts @@ -16,7 +16,7 @@ fixture `JSON verifications at Workbench` .beforeEach(async t => { await acceptTermsAddDatabaseOrConnectToRedisStack(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async t => { // Clear and delete database diff --git a/tests/e2e/tests/smoke/workbench/scripting-area.e2e.ts b/tests/e2e/tests/smoke/workbench/scripting-area.e2e.ts index 9bdcbc6d88..e955582ea3 100644 --- a/tests/e2e/tests/smoke/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/smoke/workbench/scripting-area.e2e.ts @@ -20,7 +20,7 @@ fixture `Scripting area at Workbench` .beforeEach(async t => { await acceptTermsAddDatabaseOrConnectToRedisStack(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Go to Workbench page - await t.click(myRedisDatabasePage.workbenchButton); + await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); }) .afterEach(async() => { // Delete database From eb45c5da5ddd216648d715a9371a04a3cccd59c0 Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Mon, 10 Apr 2023 16:28:11 +0200 Subject: [PATCH 026/106] updates for tests --- tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts | 4 ++-- tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts | 8 ++++---- tests/e2e/tests/regression/workbench/autocomplete.e2e.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts b/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts index 9c0af2b715..aecd605846 100644 --- a/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts +++ b/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts @@ -92,7 +92,7 @@ test test .meta({ rte: rte.standalone })('Verify that when user enters in CLI RediSearch/JSON commands (FT.CREATE, FT.DROPINDEX/JSON.GET, JSON.DEL), he can see hints with arguments', async t => { const commandHints = [ - 'index [ON ] [PREFIX count prefix [prefix ...]] [FILTER filter] [LANGUAGE default_lang] [LANGUAGE_FIELD lang_attribute] [SCORE default_score] [SCORE_FIELD score_attribute] [PAYLOAD_FIELD payload_attribute] [MAXTEXTFIELDS] [TEMPORARY seconds] [NOOFFSETS] [NOHL] [NOFIELDS] [NOFREQS] [STOPWORDS count [stopword [stopword ...]]] [SKIPINITIALSCAN] SCHEMA field_name [AS alias] [WITHSUFFIXTRIE] [SORTABLE [UNF]] [NOINDEX] [field_name [AS alias] [WITHSUFFIXTRIE] [SORTABLE [UNF]] [NOINDEX] ...]', + 'index [ON HASH | JSON] [PREFIX count prefix [prefix ...]] [FILTER filter] [LANGUAGE default_lang] [LANGUAGE_FIELD lang_attribute] [SCORE default_score] [SCORE_FIELD score_attribute] [PAYLOAD_FIELD payload_attribute] [MAXTEXTFIELDS] [TEMPORARY seconds] [NOOFFSETS] [NOHL] [NOFIELDS] [NOFREQS] [STOPWORDS count [stopword [stopword ...]]] [SKIPINITIALSCAN] SCHEMA field_name [AS alias] TEXT | TAG | NUMERIC | GEO | VECTOR [WITHSUFFIXTRIE] [SORTABLE [UNF]] [NOINDEX] [field_name [AS alias] TEXT | TAG | NUMERIC | GEO | VECTOR [WITHSUFFIXTRIE] [SORTABLE [UNF]] [NOINDEX] ...]', 'index [DD]', 'key [INDENT indent] [NEWLINE newline] [SPACE space] [path [path ...]]', 'key [path]' @@ -103,7 +103,7 @@ test 'JSON.GET', 'JSON.DEL' ]; - const commandHint = 'key [meta] [blob]'; + const commandHint = 'key [META] [BLOB]'; const command = 'ai.modelget'; // Open CLI diff --git a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts index b9290a2253..68e90d5a1e 100644 --- a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts @@ -151,9 +151,9 @@ test ]; commandsArgumentsToCheck = [ 'AI.MODELDEL key', - 'AI.SCRIPTSTORE key CPU|GPU [TAG tag] ENTRY_POINTS entry_point_count entry_point [entry_point ...]', - 'AI.SCRIPTEXECUTE key function [KEYS key_count key [key ...]] [INPUTS input_count input [input ...]] [ARGS arg_count arg [arg ...]] [OUTPUTS output_count output [output ...]] [TIMEOUT timeout]', - 'AI.TENSORSET key FLOAT|DOUBLE|INT8|INT16|INT32|INT64|UINT8|UINT16|STRING|BOOL shape [shape ...] [BLOB blob] [VALUES value [VALUES value ...]]' + 'AI.SCRIPTSTORE key CPU | GPU [TAG] ENTRY_POINTS entry_point [entry_point ...]', + 'AI.SCRIPTEXECUTE key function [KEYS key [key ...]] [INPUTS input [input ...]] [ARGS arg [arg ...]] [OUTPUTS output [output ...]] [TIMEOUT]', + 'AI.TENSORSET key FLOAT | DOUBLE | INT8 | INT16 | INT32 | INT64 | UINT8 | UINT16 | STRING | BOOL shape [shape ...] [BLOB] [VALUES [VALUES ...]]' ]; externalPageLinks = [ 'https://redis.io/commands/ai.modeldel', @@ -185,7 +185,7 @@ test .meta({ env: env.web })('Verify that user can work with Gears group in Command Helper (RedisGears module)', async t => { filteringGroup = 'Gears'; commandToCheck = 'RG.GETEXECUTION'; - commandArgumentsToCheck = 'RG.GETEXECUTION id [SHARD|CLUSTER]'; + commandArgumentsToCheck = 'RG.GETEXECUTION id [SHARD | CLUSTER]'; externalPageLink = 'https://redis.io/commands/rg.getexecution'; // Open Command Helper diff --git a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts index 9a4db35aac..af15e9b8af 100644 --- a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts +++ b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts @@ -27,7 +27,7 @@ test('Verify that user can open the "read more" about the command by clicking on 'Read more', 'Arguments:', 'required key', - 'multiple data' + 'multiple field value' ]; // Type command From f0ecf0a585086003e5726038609da9f8dabaf157 Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 10 Apr 2023 20:35:27 +0300 Subject: [PATCH 027/106] #RI-4318 tutorials images --- .../LazyInternalPage/LazyInternalPage.tsx | 2 +- .../utils/formatter/MarkdownToJsxString.ts | 5 ++-- .../utils/transform/remarkImage.ts | 23 ++++--------------- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx index 0598f3c772..0d594aca38 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx @@ -64,7 +64,7 @@ const LazyInternalPage = ({ onClose, title, path, sourcePath, manifest, manifest const { data, status } = await fetchService.get(path) if (isStatusSuccessful(status)) { dispatch(setWorkbenchEASearch(search)) - const contentData = await formatter.format(data, { history }) + const contentData = await formatter.format({ data, path }, { history }) setPageData((prevState) => ({ ...prevState, content: contentData })) setLoading(false) } diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/formatter/MarkdownToJsxString.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/formatter/MarkdownToJsxString.ts index 8dcb73687c..a2b0e2c393 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/formatter/MarkdownToJsxString.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/formatter/MarkdownToJsxString.ts @@ -11,13 +11,14 @@ import { remarkRedisCode } from '../transform/remarkRedisCode' import { remarkImage } from '../transform/remarkImage' class MarkdownToJsxString implements IFormatter { - format(data: any, config?: IFormatterConfig): Promise { + format(input: any, config?: IFormatterConfig): Promise { + const { data, path } = input return new Promise((resolve, reject) => { unified() .use(remarkParse) .use(remarkGfm) // support GitHub Flavored Markdown .use(remarkRedisCode) // Add custom component for Redis code block - .use(remarkImage, config ? { history: config.history } : undefined) // Add custom component for Redis code block + .use(remarkImage, path) // Add custom component for Redis code block .use(remarkRehype, { allowDangerousHtml: true }) // Pass raw HTML strings through. .use(rehypeLinks, config ? { history: config.history } : undefined) // Customise links .use(MarkdownToJsxString.rehypeWrapSymbols) // Wrap special symbols inside curly braces for JSX parse diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/transform/remarkImage.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/transform/remarkImage.ts index e9b22c37ab..ba5aacfdda 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/transform/remarkImage.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/transform/remarkImage.ts @@ -1,26 +1,11 @@ import { visit } from 'unist-util-visit' -import { IS_ABSOLUTE_PATH } from 'uiSrc/constants/regex' import { RESOURCES_BASE_URL } from 'uiSrc/services/resourcesService' -import { ApiEndpoints } from 'uiSrc/constants' -import { IFormatterConfig } from './formatter/formatter.interfaces' -const getSourcelPath = (search?: string) => { - switch (true) { - case search?.indexOf(ApiEndpoints.GUIDES_PATH) !== -1: - return 'static/guides/' - case search?.indexOf(ApiEndpoints.TUTORIALS_PATH) !== -1: - return 'static/tutorials/' - default: - return '' - } -} - -const updateUrl = (url: string) => url.replace(/^\//, '') - -export const remarkImage = (config?: IFormatterConfig): (tree: Node) => void => (tree: any) => { - const sourcePath = getSourcelPath(config?.history?.location?.search) +export const remarkImage = (path: string): (tree: Node) => void => (tree: any) => { // Find img node in syntax tree visit(tree, 'image', (node) => { - node.url = IS_ABSOLUTE_PATH.test(node.url || '') ? node.url : `${RESOURCES_BASE_URL}${sourcePath}${updateUrl(node.url)}` + const pathURL = new URL(path, RESOURCES_BASE_URL) + const url = new URL(node.url, pathURL) + node.url = url.toString() }) } From b95863690528d911dd01e0f12d8b39d857b9ad5c Mon Sep 17 00:00:00 2001 From: Artem Date: Tue, 11 Apr 2023 09:19:53 +0300 Subject: [PATCH 028/106] #RI-4318 add UTests --- .../utils/tests/remarkImage.spec.ts | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/remarkImage.spec.ts diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/remarkImage.spec.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/remarkImage.spec.ts new file mode 100644 index 0000000000..50474b6c75 --- /dev/null +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/remarkImage.spec.ts @@ -0,0 +1,43 @@ +import { visit } from 'unist-util-visit' +import { RESOURCES_BASE_URL } from 'uiSrc/services/resourcesService' +import { remarkImage } from '../transform/remarkImage' + +jest.mock('unist-util-visit') +const TUTORIAL_PATH = 'static/custom-tutorials/tutorial-id' +const testCases = [ + { + url: '../../../_images/relative.png', + path: `${TUTORIAL_PATH}/lvl1/lvl2/lvl3/intro.md`, + result: `${RESOURCES_BASE_URL}${TUTORIAL_PATH}/_images/relative.png`, + }, + { + url: '/../../../_images/relative.png', // NOTE: will not work in real. There is no sense to even support absolute paths + path: `${TUTORIAL_PATH}/lvl1/lvl2/lvl3/intro.md`, + result: `${RESOURCES_BASE_URL}_images/relative.png`, + }, + { + url: 'https://somesite.test/image.png', + path: `${TUTORIAL_PATH}/lvl1/lvl2/lvl3/intro.md`, + result: 'https://somesite.test/image.png', + } +] +describe('remarkImage', () => { + testCases.forEach((tc) => { + it(`should return ${tc.result} for url:${tc.url}, path: ${tc.path} `, () => { + const node = { + url: tc.url, + }; + + // mock implementation + (visit as jest.Mock) + .mockImplementation((_tree: any, _name: string, callback: (node: any) => void) => { callback(node) }) + + const remark = remarkImage(tc.path) + remark({} as Node) + expect(node).toEqual({ + ...node, + url: tc.result, + }) + }) + }) +}) From 2af0b8a801e90156245627ccdd536c9c3b6deccd Mon Sep 17 00:00:00 2001 From: Artem Date: Tue, 11 Apr 2023 14:34:18 +0300 Subject: [PATCH 029/106] added missed rules for transformation from ASCII string to Buffer --- redisinsight/api/src/utils/cli-helper.spec.ts | 13 ++++++++ redisinsight/api/src/utils/cli-helper.ts | 33 ++++++++++++------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/redisinsight/api/src/utils/cli-helper.spec.ts b/redisinsight/api/src/utils/cli-helper.spec.ts index 2f24ed4b38..71437f4e34 100644 --- a/redisinsight/api/src/utils/cli-helper.spec.ts +++ b/redisinsight/api/src/utils/cli-helper.spec.ts @@ -321,6 +321,19 @@ describe('Cli helper', () => { }); }); + it('test json data structure', () => { + const json = { test: 'test' }; + const jsonString = JSON.stringify(json); + const jsonBuffer = Buffer.from(jsonString); + + const str = getASCIISafeStringFromBuffer(jsonBuffer); + const buf = getBufferFromSafeASCIIString(str); + + expect(jsonBuffer).toEqual(buf); + // getASCIISafeStringFromBuffer is analogue of JSON.stringify without leading " for serialized json data + expect(JSON.stringify(jsonString)).toEqual(`"${str}"`); + }); + it('test huge string timings', () => { const buf = randomBytes(1024 * 1024); diff --git a/redisinsight/api/src/utils/cli-helper.ts b/redisinsight/api/src/utils/cli-helper.ts index 0c7b3b54b2..2b82357262 100644 --- a/redisinsight/api/src/utils/cli-helper.ts +++ b/redisinsight/api/src/utils/cli-helper.ts @@ -297,19 +297,28 @@ export const getBufferFromSafeASCIIString = (str: string): Buffer => { } } - if (str[i + 1] === '\\') { - bytes.push(Buffer.from('\\')); - i += 1; - // eslint-disable-next-line no-continue - continue; - } - } + if (['a', '"', '\\', 'b', 't', 'n', 'r'].includes(str[i + 1])) { + switch (str[i + 1]) { + case 'a': + bytes.push(Buffer.from('\u0007')); + break; + case 'b': + bytes.push(Buffer.from('\b')); + break; + case 't': + bytes.push(Buffer.from('\t')); + break; + case 'n': + bytes.push(Buffer.from('\n')); + break; + case 'r': + bytes.push(Buffer.from('\r')); + break; + default: + bytes.push(Buffer.from(str[i + 1])); + } - if (str[i] === '\\' && str[i + 1] === 'x') { - const hexString = str.substr(i + 2, 2); - if (isHex(hexString)) { - bytes.push(Buffer.from(hexString, 'hex')); - i += 3; + i += 1; // eslint-disable-next-line no-continue continue; } From 22c4d67754bde60d65d963c0f3bbe13d1ecd8f7d Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 12 Apr 2023 08:50:27 +0300 Subject: [PATCH 030/106] add tests + change endpoint url + fix bug --- redisinsight/api/src/__mocks__/redis.ts | 7 +- redisinsight/api/src/app.routes.ts | 5 + .../bulk-actions/bulk-import.controller.ts | 9 +- .../bulk-actions/bulk-import.service.spec.ts | 175 ++++++++++++++++++ .../bulk-actions/bulk-import.service.ts | 18 +- ...T-databases-id-bulk_actions-upload.test.ts | 145 +++++++++++++++ 6 files changed, 347 insertions(+), 12 deletions(-) create mode 100644 redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts create mode 100644 redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts diff --git a/redisinsight/api/src/__mocks__/redis.ts b/redisinsight/api/src/__mocks__/redis.ts index 0a74898f37..77afa68301 100644 --- a/redisinsight/api/src/__mocks__/redis.ts +++ b/redisinsight/api/src/__mocks__/redis.ts @@ -1,6 +1,7 @@ import IORedis from 'ioredis'; -const getRedisCommanderMockFunctions = () => ({ +export const mockIORedisClientExec = jest.fn(); +const getRedisCommanderMockFunctions = jest.fn(() => ({ sendCommand: jest.fn(), info: jest.fn(), monitor: jest.fn(), @@ -12,9 +13,11 @@ const getRedisCommanderMockFunctions = () => ({ unsubscribe: jest.fn(), punsubscribe: jest.fn(), publish: jest.fn(), + pipeline: jest.fn().mockReturnThis(), + exec: mockIORedisClientExec, cluster: jest.fn(), quit: jest.fn(), -}); +})); export const mockIORedisClient = { ...Object.create(IORedis.prototype), diff --git a/redisinsight/api/src/app.routes.ts b/redisinsight/api/src/app.routes.ts index d3d0fb05a5..9efb786fd9 100644 --- a/redisinsight/api/src/app.routes.ts +++ b/redisinsight/api/src/app.routes.ts @@ -6,6 +6,7 @@ import { SlowLogModule } from 'src/modules/slow-log/slow-log.module'; import { PubSubModule } from 'src/modules/pub-sub/pub-sub.module'; import { ClusterMonitorModule } from 'src/modules/cluster-monitor/cluster-monitor.module'; import { DatabaseAnalysisModule } from 'src/modules/database-analysis/database-analysis.module'; +import { BulkActionsModule } from 'src/modules/bulk-actions/bulk-actions.module'; export const routes: Routes = [ { @@ -39,6 +40,10 @@ export const routes: Routes = [ path: '/:dbInstance', module: DatabaseAnalysisModule, }, + { + path: '/:dbInstance', + module: BulkActionsModule, + }, ], }, ]; diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts index 9943a66c2f..00110f1792 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.controller.ts @@ -1,7 +1,7 @@ import { Body, ClassSerializerInterceptor, - Controller, Post, + Controller, HttpCode, Post, UseInterceptors, UsePipes, ValidationPipe, } from '@nestjs/common'; import { @@ -18,12 +18,13 @@ import { IBulkActionOverview } from 'src/modules/bulk-actions/interfaces/bulk-ac @UsePipes(new ValidationPipe({ transform: true })) @UseInterceptors(ClassSerializerInterceptor) @ApiTags('Bulk Actions') -@Controller('/bulk-actions/:id') +@Controller('/bulk-actions') export class BulkImportController { constructor(private readonly service: BulkImportService) {} @Post('import') @ApiConsumes('multipart/form-data') + @HttpCode(200) @FormDataRequest() @ApiEndpoint({ description: 'Import data from file', @@ -35,9 +36,7 @@ export class BulkImportController { }) async import( @Body() dto: UploadImportFileDto, - @ClientMetadataParam({ - databaseIdParam: 'id', - }) clientMetadata: ClientMetadata, + @ClientMetadataParam() clientMetadata: ClientMetadata, ): Promise { return this.service.import(clientMetadata, dto); } diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts new file mode 100644 index 0000000000..9820c96b60 --- /dev/null +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts @@ -0,0 +1,175 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { BulkImportService } from 'src/modules/bulk-actions/bulk-import.service'; +import { DatabaseConnectionService } from 'src/modules/database/database-connection.service'; +import { + mockClientMetadata, + mockDatabaseConnectionService, + mockIORedisClient, + mockIORedisCluster, MockType +} from 'src/__mocks__'; +import { MemoryStoredFile } from 'nestjs-form-data'; +import { BulkActionSummary } from 'src/modules/bulk-actions/models/bulk-action-summary'; +import { IBulkActionOverview } from 'src/modules/bulk-actions/interfaces/bulk-action-overview.interface'; +import { BulkActionStatus, BulkActionType } from 'src/modules/bulk-actions/constants'; +import { NotFoundException } from '@nestjs/common'; + +const generateNCommandsBuffer = (n: number) => Buffer.from( + (new Array(n)).fill(1).map(() => ['set', ['foo', 'bar']]).join('\n'), +); +const generateNBatchCommands = (n: number) => (new Array(n)).fill(1).map(() => ['set', ['foo', 'bar']]); +const generateNBatchCommandsResults = (n: number) => (new Array(n)).fill(1).map(() => [null, 'OK']); +const mockBatchCommands = generateNBatchCommands(100); +const mockBatchCommandsResult = generateNBatchCommandsResults(100); +const mockBatchCommandsResultWithErrors = [...(new Array(99)).fill(1).map(() => [null, 'OK']), ['ReplyError']]; +const mockSummary: BulkActionSummary = Object.assign(new BulkActionSummary(), { + processed: 100, + succeed: 100, + failed: 0, + errors: [], +}); + +const mockSummaryWithErrors = Object.assign(new BulkActionSummary(), { + processed: 100, + succeed: 99, + failed: 1, + errors: [], +}); + +const mockImportResult: IBulkActionOverview = { + id: 'empty', + databaseId: mockClientMetadata.databaseId, + type: BulkActionType.Import, + summary: mockSummary.getOverview(), + progress: null, + filter: null, + status: BulkActionStatus.Completed, + duration: 100, +}; + +const mockUploadImportFileDto = { + file: { + originalname: 'filename', + size: 1, + buffer: Buffer.from('SET foo bar'), + } as unknown as MemoryStoredFile, +}; + +describe('BulkImportService', () => { + let service: BulkImportService; + let databaseConnectionService: MockType; + + beforeEach(async () => { + jest.clearAllMocks(); + + const module: TestingModule = await Test.createTestingModule({ + providers: [ + BulkImportService, + { + provide: DatabaseConnectionService, + useFactory: mockDatabaseConnectionService, + }, + ], + }).compile(); + + service = module.get(BulkImportService); + databaseConnectionService = module.get(DatabaseConnectionService); + }); + + describe('executeBatch', () => { + it('should execute batch in pipeline for standalone', async () => { + mockIORedisClient.exec.mockResolvedValueOnce(mockBatchCommandsResult); + expect(await service['executeBatch'](mockIORedisClient, mockBatchCommands)).toEqual(mockSummary); + }); + it('should execute batch in pipeline for standalone with errors', async () => { + mockIORedisClient.exec.mockResolvedValueOnce(mockBatchCommandsResultWithErrors); + expect(await service['executeBatch'](mockIORedisClient, mockBatchCommands)).toEqual(mockSummaryWithErrors); + }); + it('should return all failed in case of global error', async () => { + mockIORedisClient.exec.mockRejectedValueOnce(new Error()); + expect(await service['executeBatch'](mockIORedisClient, mockBatchCommands)).toEqual({ + ...mockSummary.getOverview(), + succeed: 0, + failed: mockSummary.getOverview().processed, + }); + }); + it('should execute batch of commands without pipeline for cluster', async () => { + mockIORedisCluster.call.mockRejectedValueOnce(new Error()); + mockIORedisCluster.call.mockResolvedValue('OK'); + expect(await service['executeBatch'](mockIORedisCluster, mockBatchCommands)).toEqual(mockSummaryWithErrors); + }); + }); + + describe('import', () => { + let spy; + + beforeEach(() => { + spy = jest.spyOn(service as any, 'executeBatch'); + }); + + it('should import data', async () => { + spy.mockResolvedValue(mockSummary); + expect(await service.import(mockClientMetadata, mockUploadImportFileDto)).toEqual({ + ...mockImportResult, + duration: jasmine.anything(), + }); + }); + + it('should import data (100K) from file in batches 10K each', async () => { + spy.mockResolvedValue(Object.assign(new BulkActionSummary(), { + processed: 10_000, + succeed: 10_000, + failed: 0, + })); + expect(await service.import(mockClientMetadata, { + file: { + ...mockUploadImportFileDto.file, + buffer: generateNCommandsBuffer(100_000), + } as unknown as MemoryStoredFile, + })).toEqual({ + ...mockImportResult, + summary: { + processed: 100_000, + succeed: 100_000, + failed: 0, + errors: [], + }, + duration: jasmine.anything(), + }); + }); + + it('should not import any data due to parse error', async () => { + spy.mockResolvedValue(Object.assign(new BulkActionSummary(), { + processed: 0, + succeed: 0, + failed: 0, + })); + expect(await service.import(mockClientMetadata, { + file: { + ...mockUploadImportFileDto.file, + buffer: Buffer.from('{"incorrectdata"}\n{"incorrectdata"}'), + } as unknown as MemoryStoredFile, + })).toEqual({ + ...mockImportResult, + summary: { + processed: 2, + succeed: 0, + failed: 2, + errors: [], + }, + duration: jasmine.anything(), + }); + }); + + it('should throw an error in case of global error', async () => { + try { + databaseConnectionService.createClient.mockRejectedValueOnce(new NotFoundException()); + + await service.import(mockClientMetadata, mockUploadImportFileDto); + + fail(); + } catch (e) { + expect(e).toBeInstanceOf(NotFoundException); + } + }); + }); +}); diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts index cdaf305fdf..1deefcc0a6 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts @@ -72,6 +72,8 @@ export class BulkImportService { duration: Date.now(), }; + let parseErrors = 0; + try { const client = await this.databaseConnectionService.createClient(clientMetadata); @@ -83,12 +85,16 @@ export class BulkImportService { await new Promise((res) => { const rl = readline.createInterface(stream); rl.on('line', (line) => { - const [command, ...args] = splitCliCommandLine((line)); - if (batch.length >= BATCH_LIMIT) { - batchResults.push(this.executeBatch(client, batch)); - batch = []; - } else { + try { + const [command, ...args] = splitCliCommandLine((line)); + if (batch.length >= BATCH_LIMIT) { + batchResults.push(this.executeBatch(client, batch)); + batch = []; + } + batch.push([command.toLowerCase(), args]); + } catch (e) { + parseErrors += 1; } }); rl.on('error', (error) => { @@ -109,6 +115,8 @@ export class BulkImportService { }); result.duration = Date.now() - result.duration; + result.summary.processed += parseErrors; + result.summary.failed += parseErrors; return result; } catch (e) { diff --git a/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts b/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts new file mode 100644 index 0000000000..c07440c91b --- /dev/null +++ b/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts @@ -0,0 +1,145 @@ +import { + expect, + describe, + it, + deps, + requirements, + validateApiCall, +} from '../deps'; +const { rte, request, server, constants } = deps; + +const endpoint = ( + id = constants.TEST_INSTANCE_ID, +) => request(server).post(`/${constants.API.DATABASES}/${id}/bulk-actions/import`); + +describe('POST /databases/:id/bulk-actions/import', () => { + requirements('!rte.sharedData', '!rte.bigData') + beforeEach(async () => await rte.data.truncate()); + + describe('Common', function () { + it('Should not import anything', async () => { + await validateApiCall({ + endpoint, + attach: ['file', Buffer.from('baddata'), 'file.json'], + responseBody: { + id: 'empty', + databaseId: constants.TEST_INSTANCE_ID, + type: 'import', + summary: { processed: 1, succeed: 0, failed: 1, errors: [] }, + progress: null, + filter: null, + status: 'completed', + }, + checkFn: ({ body }) => { + expect(body.duration).to.gt(0); + }, + }); + }); + it('Should import 100 strings', async () => { + await validateApiCall({ + endpoint, + attach: [ + 'file', + Buffer.from( + (new Array(100)).fill(100).map( + (_v, idx) => `SET key${idx} value${idx}`, + ).join('\n'), + ), + 'any_filename_and_ext', + ], + responseBody: { + id: 'empty', + databaseId: constants.TEST_INSTANCE_ID, + type: 'import', + summary: { processed: 100, succeed: 100, failed: 0, errors: [] }, + progress: null, + filter: null, + status: 'completed', + }, + checkFn: async ({ body }) => { + expect(body.duration).to.gt(0); + + expect(await rte.client.get('key0')).to.eq('value0'); + expect(await rte.client.get('key99')).to.eq('value99'); + expect(await rte.client.get('key100')).to.eq(null); + }, + }); + }); + it('Should import 50 out of 100 keys strings', async () => { + await validateApiCall({ + endpoint, + attach: [ + 'file', + Buffer.from( + (new Array(25)).fill(1).map( + (_v, idx) => [ + `SET key${idx}_1 value${idx}_1`, + `SET "key${idx}_2" "value${idx}_2 \\xE2\\x82\\xAC"`, + `SET no-value`, + JSON.stringify({ something: 'bad' }), + ].join('\n'), + ).join('\n'), + ), + 'any_filename_and_ext', + ], + responseBody: { + id: 'empty', + databaseId: constants.TEST_INSTANCE_ID, + type: 'import', + summary: { processed: 100, succeed: 50, failed: 50, errors: [] }, + progress: null, + filter: null, + status: 'completed', + }, + checkFn: async ({ body }) => { + expect(body.duration).to.gt(0); + + expect(await rte.client.get('key0_1')).to.eq('value0_1'); + expect(await rte.client.get('key0_2')).to.eq('value0_2 €'); + expect(await rte.client.get('key0_3')).to.eq(null); + expect(await rte.client.get('key0_4')).to.eq(null); + + expect(await rte.client.get('key24_1')).to.eq('value24_1'); + expect(await rte.client.get('key24_2')).to.eq('value24_2 €'); + expect(await rte.client.get('key24_3')).to.eq(null); + expect(await rte.client.get('key24_4')).to.eq(null); + + expect(await rte.client.get('key25_0')).to.eq(null); + }, + }); + }); + it('Should import 100K strings', async () => { + const b = Buffer.from( + (new Array(100_000)).fill(1).map( + (_v, idx) => `SET key${idx} value${idx}`, + ).join('\n'), + ) + + require('fs').writeFileSync('_data', b); + await validateApiCall({ + endpoint, + attach: [ + 'file', + b, + 'any_filename_and_ext', + ], + responseBody: { + id: 'empty', + databaseId: constants.TEST_INSTANCE_ID, + type: 'import', + summary: { processed: 100_000, succeed: 100_000, failed: 0, errors: [] }, + progress: null, + filter: null, + status: 'completed', + }, + checkFn: async ({ body }) => { + expect(body.duration).to.gt(0); + + expect(await rte.client.get('key0')).to.eq('value0'); + expect(await rte.client.get('key99999')).to.eq('value99999'); + expect(await rte.client.get('key100000')).to.eq(null); + }, + }); + }); + }); +}); From 0f40f21fcd883d7d87ffc5c38e360403b3906d4c Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 12 Apr 2023 08:53:11 +0300 Subject: [PATCH 031/106] add tests + change endpoint url + fix bug --- .../api/src/modules/bulk-actions/bulk-import.service.ts | 5 +++-- .../src/modules/bulk-actions/dto/upload-import-file.dto.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts index 1deefcc0a6..491634ce39 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts @@ -56,6 +56,7 @@ export class BulkImportService { * @param dto */ public async import(clientMetadata: ClientMetadata, dto: UploadImportFileDto): Promise { + const startTime = Date.now(); const result: IBulkActionOverview = { id: 'empty', databaseId: clientMetadata.databaseId, @@ -69,7 +70,7 @@ export class BulkImportService { progress: null, filter: null, status: BulkActionStatus.Completed, - duration: Date.now(), + duration: 0, }; let parseErrors = 0; @@ -114,7 +115,7 @@ export class BulkImportService { result.summary.failed += batchResult.getOverview().failed; }); - result.duration = Date.now() - result.duration; + result.duration = Date.now() - startTime; result.summary.processed += parseErrors; result.summary.failed += parseErrors; diff --git a/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts b/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts index 92b997a7ac..b4d289514a 100644 --- a/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts +++ b/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts @@ -8,7 +8,7 @@ export class UploadImportFileDto { @ApiPropertyOptional({ type: 'string', format: 'binary', - description: 'Import file (with list of commands to execute', + description: 'Import file (with list of commands to execute)', }) @IsNotEmpty() @IsFile() From 223af60b3db5eb94a130ac970e5f1b3d89f4e327 Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Wed, 12 Apr 2023 17:38:18 +0200 Subject: [PATCH 032/106] [refactoring] - move cli, command helper to components, refactoring --- tests/e2e/common-actions/cli-actions.ts | 48 ------- tests/e2e/helpers/common.ts | 7 + tests/e2e/helpers/database.ts | 12 -- tests/e2e/helpers/keys.ts | 58 ++++---- tests/e2e/pageObjects/bulk-actions-page.ts | 1 + .../instance/cli.ts} | 124 +++++++--------- .../components/instance/command-helper.ts | 79 +++++++++++ .../pageObjects/components/instance/index.ts | 4 + tests/e2e/pageObjects/index.ts | 2 - tests/e2e/pageObjects/instance-page.ts | 5 +- .../e2e/pageObjects/memory-efficiency-page.ts | 3 +- .../browser/consumer-group.e2e.ts | 9 +- .../critical-path/browser/context.e2e.ts | 28 ++-- .../critical-path/browser/large-data.e2e.ts | 9 +- .../critical-path/browser/list-key.e2e.ts | 9 +- .../critical-path/browser/scan-keys.e2e.ts | 10 +- .../browser/search-capabilities.e2e.ts | 60 ++++---- .../browser/stream-key-entry-deletion.e2e.ts | 7 +- .../critical-path/browser/stream-key.e2e.ts | 13 +- .../browser/stream-pending-messages.e2e.ts | 9 +- .../critical-path/browser/zset-key.e2e.ts | 9 +- .../cli/cli-command-helper.e2e.ts | 90 ++++++------ .../critical-path/cli/cli-critical.e2e.ts | 37 +++-- .../database-overview/database-index.e2e.ts | 8 +- .../database-overview.e2e.ts | 18 +-- .../memory-efficiency.e2e.ts | 19 ++- .../memory-efficiency/recommendations.e2e.ts | 12 +- .../memory-efficiency/top-keys-table.e2e.ts | 15 +- .../critical-path/monitor/monitor.e2e.ts | 6 +- .../monitor/save-commands.e2e.ts | 5 +- .../critical-path/overview/overview.e2e.ts | 18 +-- .../pub-sub/subscribe-unsubscribe.e2e.ts | 17 ++- .../critical-path/slow-log/slow-log.e2e.ts | 11 +- .../tree-view/tree-view-improvements.e2e.ts | 17 ++- .../workbench/scripting-area.e2e.ts | 11 +- .../tests/regression/browser/add-keys.e2e.ts | 17 ++- .../regression/browser/consumer-group.e2e.ts | 7 +- .../tests/regression/browser/context.e2e.ts | 14 +- .../browser/filtering-iteratively.e2e.ts | 13 +- .../browser/formatter-warning.e2e.ts | 6 +- .../browser/handle-dbsize-permissions.e2e.ts | 9 +- .../regression/browser/key-messages.e2e.ts | 7 +- .../browser/large-key-details-values.e2e.ts | 7 +- .../regression/browser/onboarding.e2e.ts | 14 +- .../regression/browser/stream-key.e2e.ts | 15 +- .../browser/stream-pending-messages.e2e.ts | 11 +- .../regression/browser/ttl-format.e2e.ts | 11 +- .../regression/browser/upload-json-key.e2e.ts | 7 +- .../regression/cli/cli-command-helper.e2e.ts | 133 +++++++++--------- .../regression/cli/cli-logical-db.e2e.ts | 46 +++--- .../regression/cli/cli-promote-workbench.ts | 12 +- .../regression/cli/cli-re-cluster.e2e.ts | 7 +- tests/e2e/tests/regression/cli/cli.e2e.ts | 47 +++---- .../database-overview-keys.e2e.ts | 6 +- .../database-overview.e2e.ts | 6 +- .../tests/regression/database/edit-db.e2e.ts | 9 +- .../database/logical-databases.e2e.ts | 10 +- .../tests/regression/monitor/monitor.e2e.ts | 16 +-- .../regression/pub-sub/debug-mode.e2e.ts | 13 +- .../pub-sub/pub-sub-oss-cluster-7.ts | 9 +- .../tests/regression/workbench/context.e2e.ts | 23 ++- .../workbench/history-of-results.e2e.ts | 7 +- .../workbench/scripting-area.e2e.ts | 7 +- .../e2e/tests/smoke/browser/filtering.e2e.ts | 11 +- .../tests/smoke/cli/cli-command-helper.e2e.ts | 68 ++++----- tests/e2e/tests/smoke/cli/cli.e2e.ts | 39 +++-- 66 files changed, 669 insertions(+), 728 deletions(-) delete mode 100644 tests/e2e/common-actions/cli-actions.ts rename tests/e2e/pageObjects/{cli-page.ts => components/instance/cli.ts} (60%) create mode 100644 tests/e2e/pageObjects/components/instance/command-helper.ts diff --git a/tests/e2e/common-actions/cli-actions.ts b/tests/e2e/common-actions/cli-actions.ts deleted file mode 100644 index e882782028..0000000000 --- a/tests/e2e/common-actions/cli-actions.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { t } from 'testcafe'; -import { Common } from '../helpers/common'; -import { CliPage } from '../pageObjects'; - -const cliPage = new CliPage(); -const common = new Common(); - -export class CliActions { - /** - * Check list of commands searched - * @param searchedCommand Searched command in Command Helper - * @param listToCompare The list with commands to compare with opened in Command Helper - */ - async checkSearchedCommandInCommandHelper(searchedCommand: string, listToCompare: string[]): Promise { - await t.typeText(cliPage.cliHelperSearch, searchedCommand, { speed: 0.5 }); - //Verify results in the output - const commandsCount = await cliPage.cliHelperOutputTitles.count; - for (let i = 0; i < commandsCount; i++) { - await t.expect(cliPage.cliHelperOutputTitles.nth(i).textContent).eql(listToCompare[i], 'Results in the output contains searched value'); - } - } - - /** - * Check commands list - * @param listToCompare The list with commands to compare with opened in Command Helper - */ - async checkCommandsInCommandHelper(listToCompare: string[]): Promise { - //Verify results in the output - const commandsCount = await cliPage.cliHelperOutputTitles.count; - for (let i = 0; i < commandsCount; i++) { - await t.expect(cliPage.cliHelperOutputTitles.nth(i).textContent).eql(listToCompare[i], 'Results in the output not contain searched value'); - } - } - - /** - * Add cached scripts - * @param numberOfScripts The number of cached scripts to add - */ - async addCachedScripts(numberOfScripts: number): Promise { - const scripts: string[] = []; - - for (let i = 0; i < numberOfScripts; i++) { - scripts.push(`EVAL "return '${common.generateWord(3)}'" 0`); - } - - await cliPage.sendCommandsInCli(scripts); - } -} diff --git a/tests/e2e/helpers/common.ts b/tests/e2e/helpers/common.ts index b7d511136a..749f722e9e 100644 --- a/tests/e2e/helpers/common.ts +++ b/tests/e2e/helpers/common.ts @@ -159,6 +159,13 @@ export class Common { await t.eval(() => location.reload()); } + /** + * Get current page url + */ + async getPageUrl(): Promise { + return (await ClientFunction(() => window.location.href))(); + } + /** * Check opened URL * @param expectedUrl Expected link that is compared with actual diff --git a/tests/e2e/helpers/database.ts b/tests/e2e/helpers/database.ts index 37b8cd06d1..e1d36441b2 100644 --- a/tests/e2e/helpers/database.ts +++ b/tests/e2e/helpers/database.ts @@ -7,7 +7,6 @@ import { AutoDiscoverREDatabases, AddRedisDatabasePage, UserAgreementPage, - CliPage } from '../pageObjects'; import { addNewStandaloneDatabaseApi, discoverSentinelDatabaseApi, getDatabaseIdByName } from './api/api-database'; import { Common } from './common'; @@ -18,7 +17,6 @@ const discoverMasterGroupsPage = new DiscoverMasterGroupsPage(); const autoDiscoverREDatabases = new AutoDiscoverREDatabases(); const browserPage = new BrowserPage(); const userAgreementPage = new UserAgreementPage(); -const cliPage = new CliPage(); const common = new Common(); /** @@ -232,16 +230,6 @@ export async function acceptLicenseAndConnectToRedisStack(): Promise { .click(addRedisDatabasePage.connectToRedisStackButton); } -// Clear database data -export async function clearDatabaseInCli(): Promise { - if (await cliPage.cliCollapseButton.exists === false) { - await t.click(cliPage.cliExpandButton); - } - await t - .typeText(cliPage.cliCommandInput, 'FLUSHDB') - .pressKey('enter'); -} - /** * Delete database * @param databaseName The database name diff --git a/tests/e2e/helpers/keys.ts b/tests/e2e/helpers/keys.ts index dcd37c3248..ebea7c2c3d 100644 --- a/tests/e2e/helpers/keys.ts +++ b/tests/e2e/helpers/keys.ts @@ -1,15 +1,13 @@ import { createClient } from 'redis'; import { t } from 'testcafe'; import { Chance } from 'chance'; -import { COMMANDS_TO_CREATE_KEY } from '../helpers/constants'; -import { BrowserPage, CliPage } from '../pageObjects'; +import { random } from 'lodash'; +import { BrowserPage } from '../pageObjects'; import { KeyData, AddKeyArguments } from '../pageObjects/browser-page'; -import { KeyTypesTexts } from './constants'; +import { COMMANDS_TO_CREATE_KEY, KeyTypesTexts } from './constants'; import { Common } from './common'; -import { random } from 'lodash'; const common = new Common(); -const cliPage = new CliPage(); const browserPage = new BrowserPage(); export function getRandomKeyName(keyNameLength: number): string { @@ -49,17 +47,17 @@ export const keyTypes = [ * @param keyField The key field value */ export async function addKeysViaCli(keyData: KeyData, keyValue?: string, keyField?: string): Promise { - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); for (const { textType, keyName } of keyData) { if (textType in COMMANDS_TO_CREATE_KEY) { textType === 'Hash' || textType === 'Stream' - ? await t.typeText(cliPage.cliCommandInput, COMMANDS_TO_CREATE_KEY[textType](keyName, keyValue, keyField), { paste: true }) - : await t.typeText(cliPage.cliCommandInput, COMMANDS_TO_CREATE_KEY[textType](keyName, keyValue), { paste: true }); + ? await t.typeText(browserPage.Cli.cliCommandInput, COMMANDS_TO_CREATE_KEY[textType](keyName, keyValue, keyField), { paste: true }) + : await t.typeText(browserPage.Cli.cliCommandInput, COMMANDS_TO_CREATE_KEY[textType](keyName, keyValue), { paste: true }); await t.pressKey('enter'); } } await t - .click(cliPage.cliCollapseButton) + .click(browserPage.Cli.cliCollapseButton) .click(browserPage.refreshKeysButton); } @@ -72,7 +70,7 @@ export async function deleteKeysViaCli(keyData: KeyData): Promise { for (const { keyName } of keyData) { keys.push(keyName); } - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); } /** @@ -85,14 +83,14 @@ export async function populateDBWithHashes(host: string, port: string, keyArgume const dbConf = { port: Number.parseInt(port), host, username: 'default' }; const client = createClient(dbConf); - await client.on('error', async function (error: string) { + await client.on('error', async function(error: string) { throw new Error(error); }); - await client.on('connect', async function () { - if (keyArguments.keysCount != undefined) { + await client.on('connect', async function() { + if (keyArguments.keysCount) { for (let i = 0; i < keyArguments.keysCount; i++) { const keyName = `${keyArguments.keyNameStartWith}${common.generateWord(20)}`; - await client.hset([keyName, 'field1', 'Hello'], async (error: string) => { + await client.hset([keyName, 'field1', 'Hello'], async(error: string) => { if (error) { throw error; } @@ -114,18 +112,18 @@ export async function populateHashWithFields(host: string, port: string, keyArgu const client = createClient(dbConf); const fields: string[] = []; - await client.on('error', async function (error: string) { + await client.on('error', async function(error: string) { throw new Error(error); }); - await client.on('connect', async function () { - if (keyArguments.fieldsCount != undefined) { + await client.on('connect', async function() { + if (keyArguments.fieldsCount) { for (let i = 0; i < keyArguments.fieldsCount; i++) { const field = `${keyArguments.fieldStartWith}${common.generateWord(10)}`; const fieldValue = `${keyArguments.fieldValueStartWith}${common.generateWord(10)}`; fields.push(field, fieldValue); } } - await client.hset(keyArguments.keyName, fields, async (error: string) => { + await client.hset(keyArguments.keyName, fields, async(error: string) => { if (error) { throw error; } @@ -145,17 +143,17 @@ export async function populateListWithElements(host: string, port: string, keyAr const client = createClient(dbConf); const elements: string[] = []; - await client.on('error', async function (error: string) { + await client.on('error', async function(error: string) { throw new Error(error); }); - await client.on('connect', async function () { - if (keyArguments.elementsCount != undefined) { + await client.on('connect', async function() { + if (keyArguments.elementsCount) { for (let i = 0; i < keyArguments.elementsCount; i++) { const element = `${keyArguments.elementStartWith}${common.generateWord(10)}`; elements.push(element); } } - await client.lpush(keyArguments.keyName, elements, async (error: string) => { + await client.lpush(keyArguments.keyName, elements, async(error: string) => { if (error) { throw error; } @@ -175,17 +173,17 @@ export async function populateSetWithMembers(host: string, port: string, keyArgu const client = createClient(dbConf); const members: string[] = []; - await client.on('error', async function (error: string) { + await client.on('error', async function(error: string) { throw new Error(error); }); - await client.on('connect', async function () { - if (keyArguments.membersCount != undefined) { + await client.on('connect', async function() { + if (keyArguments.membersCount) { for (let i = 0; i < keyArguments.membersCount; i++) { const member = `${keyArguments.memberStartWith}${common.generateWord(10)}`; members.push(member); } } - await client.sadd(keyArguments.keyName, members, async (error: string) => { + await client.sadd(keyArguments.keyName, members, async(error: string) => { if (error) { throw error; } @@ -200,7 +198,7 @@ export async function populateSetWithMembers(host: string, port: string, keyArgu * @param port The port of database * @param keyArguments The arguments of key and its members */ - export async function populateZSetWithMembers(host: string, port: string, keyArguments: AddKeyArguments): Promise { +export async function populateZSetWithMembers(host: string, port: string, keyArguments: AddKeyArguments): Promise { const dbConf = { port: Number.parseInt(port), host, username: 'default' }; let minScoreValue: -10; let maxScoreValue: 10; @@ -211,7 +209,7 @@ export async function populateSetWithMembers(host: string, port: string, keyArgu throw new Error(error); }); await client.on('connect', async function() { - if (keyArguments.membersCount != undefined) { + if (keyArguments.membersCount) { for (let i = 0; i < keyArguments.membersCount; i++) { const memberName = `${keyArguments.memberStartWith}${common.generateWord(10)}`; const scoreValue = random(minScoreValue, maxScoreValue).toString(2); @@ -236,10 +234,10 @@ export async function deleteAllKeysFromDB(host: string, port: string): Promise { if (error) { throw error; diff --git a/tests/e2e/pageObjects/bulk-actions-page.ts b/tests/e2e/pageObjects/bulk-actions-page.ts index 1dd6bf08eb..fe94be76ab 100644 --- a/tests/e2e/pageObjects/bulk-actions-page.ts +++ b/tests/e2e/pageObjects/bulk-actions-page.ts @@ -37,6 +37,7 @@ export class BulkActionsPage { * Open Bulk Actions and confirm deletion */ async startBulkDelete(): Promise { + // TODO remove dep from browser page await t .click(browserPage.bulkActionsButton) .click(this.deleteButton) diff --git a/tests/e2e/pageObjects/cli-page.ts b/tests/e2e/pageObjects/components/instance/cli.ts similarity index 60% rename from tests/e2e/pageObjects/cli-page.ts rename to tests/e2e/pageObjects/components/instance/cli.ts index 8a88a49b72..9cb47cdd46 100644 --- a/tests/e2e/pageObjects/cli-page.ts +++ b/tests/e2e/pageObjects/components/instance/cli.ts @@ -1,12 +1,8 @@ -import { t, Selector, ClientFunction } from 'testcafe'; -import { Common } from '../helpers/common'; -import { BrowserPage } from '../pageObjects'; +import { Selector, t } from 'testcafe'; +import { Common } from '../../../helpers/common'; const common = new Common(); -const browserPage = new BrowserPage(); -const getPageUrl = ClientFunction(() => window.location.href); - -export class CliPage { +export class Cli { //------------------------------------------------------------------------------------------- //DECLARATION OF SELECTORS //*Declare all elements/components of the relevant page. @@ -16,38 +12,25 @@ export class CliPage { //BUTTONS cliExpandButton = Selector('[data-testid=expand-cli]'); cliCollapseButton = Selector('[data-testid=close-cli]'); - expandCommandHelperButton = Selector('[data-testid=expand-command-helper]'); - closeCommandHelperButton = Selector('[data-testid=close-command-helper]'); - filterGroupTypeButton = Selector('[data-testid=select-filter-group-type]'); - filterOptionGroupType = Selector('[data-test-subj^=filter-option-group-type-]'); - readMoreButton = Selector('[data-testid=read-more]'); minimizeCliButton = Selector('[data-testid=hide-cli]'); - minimizeCommandHelperButton = Selector('[data-testid=hide-command-helper]'); + cliBadge = Selector('[data-testid=expand-cli] span'); - commandHelperBadge = Selector('[data-testid=expand-command-helper] span'); + cliResizeButton = Selector('[data-test-subj=resize-btn-browser-cli]'); workbenchLink = Selector('[data-test-subj=cli-workbench-page-btn]'); - returnToList = Selector('[data-testid=cli-helper-back-to-list-btn]'); + //TEXT INPUTS (also referred to as 'Text fields') cliCommandInput = Selector('[data-testid=cli-command]'); cliArea = Selector('[data-testid=cli'); - cliHelperSearch = Selector('[data-testid=cli-helper-search]'); - //TEXT ELEMENTS - cliHelper = Selector('[data-testid=cli-helper]'); - cliHelperText = Selector('[data-testid=cli-helper-default]'); + cliOutputResponseSuccess = Selector('[data-testid=cli-output-response-success]'); cliOutputResponseFail = Selector('[data-testid=cli-output-response-fail]'); - cliHelperOutputTitles = Selector('[data-testid^=cli-helper-output-title-]'); - cliHelperTitle = Selector('[data-testid=cli-helper-title]'); - cliHelperTitleArgs = Selector('[data-testid=cli-helper-title-args]'); - cliHelperSummary = Selector('[data-testid=cli-helper-summary]'); - cliHelperArguments = Selector('[data-testid=cli-helper-arguments]'); - cliHelperComplexity = Selector('[data-testid=cli-helper-complexity]'); + cliCommandAutocomplete = Selector('[data-testid=cli-command-autocomplete]'); cliCommandExecuted = Selector('[data-testid=cli-command-wrapper]'); cliReadMoreJSONCommandDocumentation = Selector('[id=jsonset]'); cliReadMoreRediSearchCommandDocumentation = Selector('[id=ftexplain]'); - commandHelperArea = Selector('[data-testid=command-helper]'); + cliEndpoint = Selector('[data-testid^=cli-endpoint]'); cliDbIndex = Selector('[data-testid=cli-db-index]'); cliWarningMessage = Selector('[class*=euiTextColor--danger]'); @@ -56,20 +39,11 @@ export class CliPage { cliPanel = Selector('[data-testid=cli]'); /** - * Select filter group type - * @param groupName The group name - */ - async selectFilterGroupType(groupName: string): Promise { - await t.click(this.filterGroupTypeButton); - await t.click(this.filterOptionGroupType.withExactText(groupName)); - } - - /** - * Add keys from CLI - * @param keyCommand The command from cli to add key - * @param amount The amount of the keys - * @param keyName The name of the keys. The default value is keyName - */ + * Add keys from CLI + * @param keyCommand The command from cli to add key + * @param amount The amount of the keys + * @param keyName The name of the keys. The default value is keyName + */ async addKeysFromCli(keyCommand: string, amount: number, keyName = 'keyName'): Promise { const keyValueArray = await common.createArrayWithKeyValueAndKeyname(amount, keyName); @@ -82,10 +56,10 @@ export class CliPage { } /** - * Add keys from CLI with delimiter - * @param keyCommand The command from cli to add key - * @param amount The amount of the keys - */ + * Add keys from CLI with delimiter + * @param keyCommand The command from cli to add key + * @param amount The amount of the keys + */ async addKeysFromCliWithDelimiter(keyCommand: string, amount: number): Promise { //Open CLI await t.click(this.cliExpandButton); @@ -97,9 +71,9 @@ export class CliPage { } /** - * Delete keys from CLI with delimiter - * @param amount The amount of the keys - */ + * Delete keys from CLI with delimiter + * @param amount The amount of the keys + */ async deleteKeysFromCliWithDelimiter(amount: number): Promise { //Open CLI await t.click(this.cliExpandButton); @@ -111,9 +85,9 @@ export class CliPage { } /** - * Send command in Cli - * @param command The command to send - */ + * Send command in Cli + * @param command The command to send + */ async sendCommandInCli(command: string): Promise { // Open CLI await t.click(this.cliExpandButton); @@ -123,9 +97,9 @@ export class CliPage { } /** - * Send command in Cli - * @param commands The commands to send - */ + * Send command in Cli + * @param commands The commands to send + */ async sendCommandsInCli(commands: string[]): Promise { await t.click(this.cliExpandButton); for (const command of commands) { @@ -136,9 +110,9 @@ export class CliPage { } /** - * Get command result execution - * @param command The command for send in CLI - */ + * Get command result execution + * @param command The command for send in CLI + */ async getSuccessCommandResultFromCli(command: string): Promise { // Open CLI await t.click(this.cliExpandButton); @@ -151,38 +125,40 @@ export class CliPage { } /** - * Send command in Cli and wait for total keys after 5 seconds - * @param command The command to send - */ - async sendCliCommandAndWaitForTotalKeys(command: string): Promise { + * Send command in Cli and wait for total keys after 5 seconds + * @param command The command to send + */ + async sendCliCommandAndWaitForTotalKeys(command: string): Promise { await this.sendCommandInCli(command); // Wait 5 seconds and return total keys await t.wait(5000); - return await browserPage.overviewTotalKeys.innerText; } /** - * Check URL of command opened from command helper - * @param command The command for which to open Read more link - * @param url Command URL for external resourse + * Create random index name with CLI and return */ - async checkURLCommand(command: string, url: string): Promise { - await t.click(this.cliHelperOutputTitles.withExactText(command)); - await t.click(this.readMoreButton); - await t.expect(getPageUrl()).eql(url, 'The opened page not correct'); - } - - /** - * Create random index name with CLI and return - */ async createIndexwithCLI(prefix: string): Promise { const word = common.generateWord(10); const index = `idx:${word}`; const commands = [ - `FT.CREATE ${index} ON HASH PREFIX 1 ${prefix} SCHEMA "name" TEXT`, + `FT.CREATE ${index} ON HASH PREFIX 1 ${prefix} SCHEMA "name" TEXT` ]; await this.sendCommandsInCli(commands); return index; } + + /** + * Add cached scripts + * @param numberOfScripts The number of cached scripts to add + */ + async addCachedScripts(numberOfScripts: number): Promise { + const scripts: string[] = []; + + for (let i = 0; i < numberOfScripts; i++) { + scripts.push(`EVAL "return '${common.generateWord(3)}'" 0`); + } + + await this.sendCommandsInCli(scripts); + } } diff --git a/tests/e2e/pageObjects/components/instance/command-helper.ts b/tests/e2e/pageObjects/components/instance/command-helper.ts new file mode 100644 index 0000000000..a3f2061155 --- /dev/null +++ b/tests/e2e/pageObjects/components/instance/command-helper.ts @@ -0,0 +1,79 @@ +import { Selector, t } from 'testcafe'; +import { Common } from '../../../helpers/common'; + +const common = new Common(); +export class CommandHelper { + //------------------------------------------------------------------------------------------- + //DECLARATION OF SELECTORS + //*Declare all elements/components of the relevant page. + //*Target any element/component via data-id, if possible! + //*The following categories are ordered alphabetically (Alerts, Buttons, Checkboxes, etc.). + //------------------------------------------------------------------------------------------- + //BUTTONS + expandCommandHelperButton = Selector('[data-testid=expand-command-helper]'); + closeCommandHelperButton = Selector('[data-testid=close-command-helper]'); + minimizeCommandHelperButton = Selector('[data-testid=hide-command-helper]'); + commandHelperBadge = Selector('[data-testid=expand-command-helper] span'); + commandHelperArea = Selector('[data-testid=command-helper]'); + cliHelperSearch = Selector('[data-testid=cli-helper-search]'); + readMoreButton = Selector('[data-testid=read-more]'); + returnToList = Selector('[data-testid=cli-helper-back-to-list-btn]'); + filterGroupTypeButton = Selector('[data-testid=select-filter-group-type]'); + filterOptionGroupType = Selector('[data-test-subj^=filter-option-group-type-]'); + + //TEXT ELEMENTS + cliHelper = Selector('[data-testid=cli-helper]'); + cliHelperText = Selector('[data-testid=cli-helper-default]'); + cliHelperOutputTitles = Selector('[data-testid^=cli-helper-output-title-]'); + cliHelperTitle = Selector('[data-testid=cli-helper-title]'); + cliHelperTitleArgs = Selector('[data-testid=cli-helper-title-args]'); + cliHelperSummary = Selector('[data-testid=cli-helper-summary]'); + cliHelperArguments = Selector('[data-testid=cli-helper-arguments]'); + cliHelperComplexity = Selector('[data-testid=cli-helper-complexity]'); + + /** + * Select filter group type + * @param groupName The group name + */ + async selectFilterGroupType(groupName: string): Promise { + await t.click(this.filterGroupTypeButton); + await t.click(this.filterOptionGroupType.withExactText(groupName)); + } + + /** + * Check URL of command opened from command helper + * @param command The command for which to open Read more link + * @param url Command URL for external resource + */ + async checkURLCommand(command: string, url: string): Promise { + await t.click(this.cliHelperOutputTitles.withExactText(command)); + await t.click(this.readMoreButton); + await t.expect(await common.getPageUrl()).eql(url, 'The opened page not correct'); + } + + /** + * Check list of commands searched + * @param searchedCommand Searched command in Command Helper + * @param listToCompare The list with commands to compare with opened in Command Helper + */ + async checkSearchedCommandInCommandHelper(searchedCommand: string, listToCompare: string[]): Promise { + await t.typeText(this.cliHelperSearch, searchedCommand, { speed: 0.5 }); + //Verify results in the output + const commandsCount = await this.cliHelperOutputTitles.count; + for (let i = 0; i < commandsCount; i++) { + await t.expect(this.cliHelperOutputTitles.nth(i).textContent).eql(listToCompare[i], 'Results in the output contains searched value'); + } + } + + /** + * Check commands list + * @param listToCompare The list with commands to compare with opened in Command Helper + */ + async checkCommandsInCommandHelper(listToCompare: string[]): Promise { + //Verify results in the output + const commandsCount = await this.cliHelperOutputTitles.count; + for (let i = 0; i < commandsCount; i++) { + await t.expect(this.cliHelperOutputTitles.nth(i).textContent).eql(listToCompare[i], 'Results in the output not contain searched value'); + } + } +} diff --git a/tests/e2e/pageObjects/components/instance/index.ts b/tests/e2e/pageObjects/components/instance/index.ts index 1f355a3eca..8b7eb49348 100644 --- a/tests/e2e/pageObjects/components/instance/index.ts +++ b/tests/e2e/pageObjects/components/instance/index.ts @@ -1,5 +1,9 @@ import { Profiler } from './profiler'; +import { Cli } from './cli'; +import { CommandHelper } from './command-helper'; export { + Cli, + CommandHelper, Profiler }; diff --git a/tests/e2e/pageObjects/index.ts b/tests/e2e/pageObjects/index.ts index 86f3504bb7..4d9c1a8e73 100644 --- a/tests/e2e/pageObjects/index.ts +++ b/tests/e2e/pageObjects/index.ts @@ -2,7 +2,6 @@ import { AddRedisDatabasePage } from './add-redis-database-page'; import { AutoDiscoverREDatabases } from './auto-discover-redis-enterprise-databases'; import { BrowserPage } from './browser-page'; import { BulkActionsPage } from './bulk-actions-page'; -import { CliPage } from './cli-page'; import { MyRedisDatabasePage } from './my-redis-databases-page'; import { SettingsPage } from './settings-page'; import { UserAgreementPage } from './user-agreement-page'; @@ -24,7 +23,6 @@ export { AutoDiscoverREDatabases, BrowserPage, BulkActionsPage, - CliPage, MyRedisDatabasePage, SettingsPage, UserAgreementPage, diff --git a/tests/e2e/pageObjects/instance-page.ts b/tests/e2e/pageObjects/instance-page.ts index 8f6982f18e..618fa2ac04 100644 --- a/tests/e2e/pageObjects/instance-page.ts +++ b/tests/e2e/pageObjects/instance-page.ts @@ -1,7 +1,8 @@ import { BasePage } from './base-page'; -import { Profiler } from './components/instance'; +import { Profiler, Cli, CommandHelper } from './components/instance'; export class InstancePage extends BasePage { Profiler = new Profiler(); - + Cli = new Cli(); + CommandHelper = new CommandHelper(); } diff --git a/tests/e2e/pageObjects/memory-efficiency-page.ts b/tests/e2e/pageObjects/memory-efficiency-page.ts index 7af45515d3..0baaf5c411 100644 --- a/tests/e2e/pageObjects/memory-efficiency-page.ts +++ b/tests/e2e/pageObjects/memory-efficiency-page.ts @@ -1,6 +1,7 @@ import { Selector } from 'testcafe'; +import { InstancePage } from './instance-page'; -export class MemoryEfficiencyPage { +export class MemoryEfficiencyPage extends InstancePage { //------------------------------------------------------------------------------------------- //DECLARATION OF SELECTORS //*Declare all elements/components of the relevant page. diff --git a/tests/e2e/tests/critical-path/browser/consumer-group.e2e.ts b/tests/e2e/tests/critical-path/browser/consumer-group.e2e.ts index 9a8a7bd78a..245d0e16b2 100644 --- a/tests/e2e/tests/critical-path/browser/consumer-group.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/consumer-group.e2e.ts @@ -1,6 +1,6 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -9,7 +9,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(20); @@ -114,7 +113,7 @@ test('Verify that user can see the Consumer information columns (Consumer Name, ]; // Add New Stream Key with groups and consumers for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream consumer info view await browserPage.openKeyDetails(keyName); @@ -140,7 +139,7 @@ test('Verify that user can delete the Consumer from the Consumer Group', async t ]; // Add New Stream Key with groups and consumers for (const command of cliCommands) { - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream consumer info view await browserPage.openKeyDetails(keyName); @@ -163,7 +162,7 @@ test('Verify that user can delete a Consumer Group', async t => { ]; // Add New Stream Key with groups and consumers for (const command of cliCommands) { - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream consumer info view await browserPage.openKeyDetails(keyName); diff --git a/tests/e2e/tests/critical-path/browser/context.e2e.ts b/tests/e2e/tests/critical-path/browser/context.e2e.ts index 2b7e0b5ce1..fd08238f5f 100644 --- a/tests/e2e/tests/critical-path/browser/context.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/context.e2e.ts @@ -1,8 +1,7 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, - BrowserPage, - CliPage + BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf'; import { Common } from '../../../helpers/common'; @@ -12,7 +11,6 @@ import { verifySearchFilterValue } from '../../../helpers/keys'; const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); const speed = 0.4; @@ -20,7 +18,7 @@ let keyName = common.generateWord(10); let keys: string[]; fixture `Browser Context` - .meta({type: 'critical_path', rte: rte.standalone}) + .meta({ type: 'critical_path', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -33,16 +31,16 @@ fixture `Browser Context` test('Verify that user can see saved CLI size on Browser page when he returns back to Browser page', async t => { const offsetY = 200; - await t.click(cliPage.cliExpandButton); - const cliAreaHeight = await cliPage.cliArea.clientHeight; + await t.click(browserPage.Cli.cliExpandButton); + const cliAreaHeight = await browserPage.Cli.cliArea.clientHeight; const cliAreaHeightEnd = cliAreaHeight + 150; - const cliResizeButton = cliPage.cliResizeButton; + const cliResizeButton = browserPage.Cli.cliResizeButton; await t.hover(cliResizeButton); // move resize 200px up await t.drag(cliResizeButton, 0, -offsetY, { speed: 0.01 }); await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await t.expect(await cliPage.cliArea.clientHeight).gt(cliAreaHeightEnd, 'Saved context for resizable cli is incorrect'); + await t.expect(await browserPage.Cli.cliArea.clientHeight).gt(cliAreaHeightEnd, 'Saved context for resizable cli is incorrect'); }); test('Verify that user can see saved Key details and Keys tables size on Browser page when he returns back to Browser page', async t => { const offsetX = 200; @@ -80,16 +78,16 @@ test('Verify that user can see saved executed commands in CLI on Browser page wh ]; // Execute command in CLI and open Settings page - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); for(const command of commands) { - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); } await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Return back to Browser and check executed command in CLI await t.click(myRedisDatabasePage.NavigationPanel.browserButton); for(const command of commands) { - await t.expect(cliPage.cliCommandExecuted.withExactText(command).exists).ok(`Executed command '${command}' in CLI is saved`); + await t.expect(browserPage.Cli.cliCommandExecuted.withExactText(command).exists).ok(`Executed command '${command}' in CLI is saved`); } }); test @@ -122,18 +120,18 @@ test test .after(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify that user can see list of keys viewed on Browser page when he returns back to Browser page', async t => { const numberOfItems = 5000; const scrollY = 3200; // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Create new keys keys = await common.createArrayWithKeyValue(numberOfItems); - await t.typeText(cliPage.cliCommandInput, `MSET ${keys.join(' ')}`, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `MSET ${keys.join(' ')}`, { replace: true, paste: true }); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); await t.click(browserPage.refreshKeysButton); const keyList = await browserPage.keyListTable; diff --git a/tests/e2e/tests/critical-path/browser/large-data.e2e.ts b/tests/e2e/tests/critical-path/browser/large-data.e2e.ts index f72a00d139..406ee67ca7 100644 --- a/tests/e2e/tests/critical-path/browser/large-data.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/large-data.e2e.ts @@ -1,12 +1,11 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { Common } from '../../../helpers/common'; import { rte } from '../../../helpers/constants'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(10); @@ -25,13 +24,13 @@ fixture `Cases with large data` test('Verify that user can see relevant information about key size', async t => { keyName = common.generateWord(10); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Create new key with a lot of members const length = 500; const arr = await common.createArrayWithKeyValue(length); - await t.typeText(cliPage.cliCommandInput, `HSET ${keyName} ${arr.join(' ')}`, { paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `HSET ${keyName} ${arr.join(' ')}`, { paste: true }); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); await browserPage.openKeyDetails(keyName); // Remember the values of the key size and length const keySizeText = await browserPage.keySizeDetails.textContent; diff --git a/tests/e2e/tests/critical-path/browser/list-key.e2e.ts b/tests/e2e/tests/critical-path/browser/list-key.e2e.ts index 7b58178c33..c726d07c25 100644 --- a/tests/e2e/tests/critical-path/browser/list-key.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/list-key.e2e.ts @@ -1,7 +1,7 @@ import { toNumber } from 'lodash'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig, @@ -11,7 +11,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(10); @@ -53,11 +52,11 @@ test })('Verify that user can remove only one element for List for Redis v. <6.2', async t => { keyName = common.generateWord(10); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Create new key - await t.typeText(cliPage.cliCommandInput, `LPUSH ${keyName} 1 2 3 4 5`); + await t.typeText(browserPage.Cli.cliCommandInput, `LPUSH ${keyName} 1 2 3 4 5`); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Remove element from the key await browserPage.openKeyDetails(keyName); const lengthBeforeRemove = (await browserPage.keyLengthDetails.textContent).split(': ')[1]; diff --git a/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts b/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts index 3bde622fa9..e8c0669573 100644 --- a/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/scan-keys.e2e.ts @@ -3,7 +3,6 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, BrowserPage, - CliPage, SettingsPage } from '../../../pageObjects'; import { @@ -16,7 +15,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); const settingsPage = new SettingsPage(); -const cliPage = new CliPage(); const common = new Common(); let keys: string[] = []; @@ -38,7 +36,7 @@ fixture `Browser - Specify Keys to Scan` }) .afterEach(async() => { //Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that the user can see this number of keys applied to new filter requests and to "scan more" functionality in Browser page', async t => { @@ -53,12 +51,12 @@ test('Verify that the user can see this number of keys applied to new filter req // Connect to DB await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Create new keys keys = await common.createArrayWithKeyValue(2500); - await t.typeText(cliPage.cliCommandInput, `MSET ${keys.join(' ')}`, {paste: true}); + await t.typeText(browserPage.Cli.cliCommandInput, `MSET ${keys.join(' ')}`, {paste: true}); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Search keys await browserPage.searchByKeyName(searchPattern); const keysNumberOfScanned = await browserPage.scannedValue.textContent; diff --git a/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts b/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts index 353a09f2e2..e98a5692b0 100644 --- a/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts @@ -1,6 +1,6 @@ import { Selector, t } from 'testcafe'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage, MyRedisDatabasePage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage } from '../../../pageObjects'; import { commonUrl, ossStandaloneBigConfig, @@ -14,7 +14,6 @@ import { verifyKeysDisplayedInTheList, verifyKeysNotDisplayedInTheList } from '. const browserPage = new BrowserPage(); const common = new Common(); -const cliPage = new CliPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); const patternModeTooltipText = 'Filter by Key Name or Pattern'; @@ -24,18 +23,15 @@ const searchPerValue = '(@name:"Hall School") | (@students:[500, 1000])'; let keyName = common.generateWord(10); let keyNames: string[]; let indexName = common.generateWord(5); -const databasesForAdding = [ - ossStandaloneConfig -]; const keyNameSimpleDb = common.generateWord(10); const keyNameBigDb = common.generateWord(10); -let indexNameSimpleDb = `idx:${keyNameSimpleDb}`; // index in the standalone database -let indexNameBigDb = `idx:${keyNameBigDb}`; // index in the big standalone database +const indexNameSimpleDb = `idx:${keyNameSimpleDb}`; // index in the standalone database +const indexNameBigDb = `idx:${keyNameBigDb}`; // index in the big standalone database -const simpleDbName = ossStandaloneConfig.databaseName -const bigDbName = ossStandaloneBigConfig.databaseName +const simpleDbName = ossStandaloneConfig.databaseName; +const bigDbName = ossStandaloneBigConfig.databaseName; async function verifyContext(): Promise { await t .expect(browserPage.selectIndexDdn.withText(indexName).exists).ok('Index selection not saved') @@ -47,15 +43,15 @@ fixture `Search capabilities in Browser` .meta({ type: 'critical_path', rte: rte.standalone }) .page(commonUrl); test - .before(async () => { + .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); keyName = common.generateWord(10); await browserPage.addHashKey(keyName); }) - .after(async () => { + .after(async() => { // Clear and delete database await browserPage.deleteKeyByName(keyName); - await cliPage.sendCommandsInCli([`DEL ${keyNames.join(' ')}`, `FT.DROPINDEX ${indexName}`]); + await browserPage.Cli.sendCommandsInCli([`DEL ${keyNames.join(' ')}`, `FT.DROPINDEX ${indexName}`]); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('RediSearch capabilities in Browser view to search per Hashes or JSONs', async t => { indexName = `idx:${keyName}`; @@ -68,7 +64,7 @@ test ]; // Create 3 keys and index - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); // Verify that user see the tooltips for the controls to switch the modes await t.click(browserPage.patternModeBtn); await t.hover(browserPage.patternModeBtn); @@ -120,12 +116,12 @@ test await t.expect(await browserPage.isKeyIsDisplayedInTheList(keyName)).ok('Database not scanned after returning to Pattern search mode'); }); test - .before(async () => { + .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); }) - .after(async () => { + .after(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`FT.DROPINDEX ${indexName}`); + await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexName}`); await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Search by index keys scanned for JSON', async t => { keyName = common.generateWord(10); @@ -133,7 +129,7 @@ test const command = `FT.CREATE ${indexName} ON JSON PREFIX 1 "device:" SCHEMA id numeric`; // Create index for JSON keys - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); // Verify that user can can get 500 keys (limit 0 500) in Browser view await t.click(browserPage.redisearchModeBtn); await browserPage.selectIndexByName(indexName); @@ -147,10 +143,10 @@ test await t.expect(keysNumberOfResults).contains('10 000', 'Number of results is not 10 000'); }); test - .before(async () => { + .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneV5Config, ossStandaloneV5Config.databaseName); }) - .after(async () => { + .after(async() => { await deleteStandaloneDatabaseApi(ossStandaloneV5Config); })('No RediSearch module message', async t => { const noRedisearchMessage = 'RediSearch module is not loaded. Create a free Redis database(opens in a new tab or window) with module support on Redis Cloud.'; @@ -165,11 +161,11 @@ test await t.switchToParentWindow(); }); test - .before(async () => { + .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); }) - .after(async () => { - await cliPage.sendCommandInCli(`FT.DROPINDEX ${indexName}`); + .after(async() => { + await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexName}`); await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Index creation', async t => { const createIndexLink = 'https://redis.io/commands/ft.create/'; @@ -213,12 +209,12 @@ test await browserPage.selectIndexByName(indexName); }); test - .before(async () => { + .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); }) - .after(async () => { + .after(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`FT.DROPINDEX ${indexName}`); + await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexName}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Context for RediSearch capability', async t => { keyName = common.generateWord(10); @@ -228,7 +224,7 @@ test `FT.CREATE ${indexName} ON HASH PREFIX 1 "${keyName}" SCHEMA name TEXT NOSTEM description TEXT class TAG type TAG SEPARATOR ";" address_city AS city TAG address_street AS address TEXT NOSTEM students NUMERIC SORTABLE location GEO` ]; - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); await t.click(browserPage.redisearchModeBtn); await browserPage.selectIndexByName(indexName); await browserPage.searchByKeyName(searchPerValue); @@ -253,16 +249,16 @@ test }); test - .before(async () => { + .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, bigDbName); await addNewStandaloneDatabaseApi(ossStandaloneConfig); }) - .after(async () => { + .after(async() => { //clear database - await cliPage.sendCommandInCli(`FT.DROPINDEX ${indexNameBigDb}`); + await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexNameBigDb}`); await t.click(browserPage.myRedisDbIcon); // go back to database selection page await myRedisDatabasePage.clickOnDBByName(simpleDbName); // click standalone database - await cliPage.sendCommandInCli(`FT.DROPINDEX ${indexNameSimpleDb}`); + await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexNameSimpleDb}`); await t.click(browserPage.patternModeBtn); await t.click(browserPage.browserViewButton); await browserPage.deleteKeysByNames(keyNames); @@ -287,7 +283,7 @@ test `FT.CREATE ${indexNameBigDb} ON hash PREFIX 1 mobile SCHEMA k0 text` ]; - await cliPage.sendCommandsInCli(commandsForBigStandalone); + await browserPage.Cli.sendCommandsInCli(commandsForBigStandalone); await t.click(browserPage.myRedisDbIcon); // go back to database selection page await myRedisDatabasePage.clickOnDBByName(simpleDbName); // click standalone database @@ -301,7 +297,7 @@ test `FT.CREATE ${indexNameSimpleDb} ON HASH PREFIX 1 "${keyNameSimpleDb}:" SCHEMA name TEXT NOSTEM description TEXT class TAG type TAG SEPARATOR ";" address_city AS city TAG address_street AS address TEXT NOSTEM students NUMERIC SORTABLE location GEO` ]; // Create 5 keys and index - await cliPage.sendCommandsInCli(commandsForStandalone); + await browserPage.Cli.sendCommandsInCli(commandsForStandalone); await t.click(browserPage.treeViewButton); // switch to tree view await t.click(browserPage.redisearchModeBtn); // click redisearch button diff --git a/tests/e2e/tests/critical-path/browser/stream-key-entry-deletion.e2e.ts b/tests/e2e/tests/critical-path/browser/stream-key-entry-deletion.e2e.ts index 292678bdc0..10f8d1e2dd 100644 --- a/tests/e2e/tests/critical-path/browser/stream-key-entry-deletion.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/stream-key-entry-deletion.e2e.ts @@ -1,12 +1,11 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { rte } from '../../../helpers/constants'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(20); @@ -36,7 +35,7 @@ test('Verify that the Stream information is refreshed and the deleted entry is r const fieldForDeletion = fields[2]; // Add new Stream key with 3 fields for(let i = 0; i < fields.length; i++){ - await cliPage.sendCommandInCli(`XADD ${keyName} * ${fields[i]} ${values[i]}`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * ${fields[i]} ${values[i]}`); } // Open key details and remember the Stream information await browserPage.openKeyDetails(keyName); @@ -57,7 +56,7 @@ test('Verify that when user delete the last Entry from the Stream the Stream key keyName = common.generateWord(20); const emptyStreamMessage = 'There are no Entries in the Stream.'; // Add new Stream key with 1 field - await cliPage.sendCommandInCli(`XADD ${keyName} * ${fields[0]} ${values[0]}`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * ${fields[0]} ${values[0]}`); // Open key details and delete entry from the Stream await browserPage.openKeyDetails(keyName); await browserPage.deleteStreamEntry(); diff --git a/tests/e2e/tests/critical-path/browser/stream-key.e2e.ts b/tests/e2e/tests/critical-path/browser/stream-key.e2e.ts index 2935fb683c..6710ed3a4a 100644 --- a/tests/e2e/tests/critical-path/browser/stream-key.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/stream-key.e2e.ts @@ -2,7 +2,7 @@ import { Chance } from 'chance'; import { Selector } from 'testcafe'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -11,7 +11,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const chance = new Chance(); const common = new Common(); @@ -44,7 +43,7 @@ test('Verify that user can create Stream key via Add New Key form', async t => { test('Verify that user can add several fields and values during Stream key creation', async t => { const keyName = common.generateWord(20); // Create an array with different data types for Stream fields - const streamData = {'string': common.generateWord(20), 'array': `[${common.generateWord(20)}, ${chance.integer()}]`, 'integer': `${chance.integer()}`, 'json': '{\'test\': \'test\'}', 'null': 'null', 'boolean': 'true'}; + const streamData = { 'string': common.generateWord(20), 'array': `[${common.generateWord(20)}, ${chance.integer()}]`, 'integer': `${chance.integer()}`, 'json': '{\'test\': \'test\'}', 'null': 'null', 'boolean': 'true' }; const scrollSelector = Selector('.eui-yScroll').nth(-1); // Open Add New Stream Key Form @@ -53,11 +52,11 @@ test('Verify that user can add several fields and values during Stream key creat // Verify that user can see Entity ID filled by * by default on add Stream key form await t.expect(browserPage.streamEntryId.withAttribute('value', '*').exists).ok('Preselected Stream Entity ID field not correct'); // Verify that user can specify valid custom value for Entry ID - await t.typeText(browserPage.streamEntryId, '0-1', { replace: true, paste: true}); + await t.typeText(browserPage.streamEntryId, '0-1', { replace: true, paste: true }); // Filled fields and value by different data types for (let i = 0; i < Object.keys(streamData).length; i++) { - await t.typeText(browserPage.streamField.nth(-1), Object.keys(streamData)[i], { replace: true, paste: true}); - await t.typeText(browserPage.streamValue.nth(-1), Object.values(streamData)[i], { replace: true, paste: true}); + await t.typeText(browserPage.streamField.nth(-1), Object.keys(streamData)[i], { replace: true, paste: true }); + await t.typeText(browserPage.streamValue.nth(-1), Object.values(streamData)[i], { replace: true, paste: true }); await t.scroll(scrollSelector, 'bottom'); await t.expect(browserPage.streamField.count).eql(i + 1, 'Number of added fields not correct'); if (i < Object.keys(streamData).length - 1) { @@ -148,7 +147,7 @@ test('Verify that user can add several fields and values to the existing Stream test('Verify that user can see the Stream range filter', async t => { keyName = common.generateWord(20); // Add new Stream key with 1 field - await cliPage.sendCommandInCli(`XADD ${keyName} * fields values`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * fields values`); // Open key details and check filter await browserPage.openKeyDetails(keyName); await t.expect(browserPage.rangeLeftTimestamp.visible).ok('The stream range start timestamp not visible'); diff --git a/tests/e2e/tests/critical-path/browser/stream-pending-messages.e2e.ts b/tests/e2e/tests/critical-path/browser/stream-pending-messages.e2e.ts index f06653cd2f..18d6527079 100644 --- a/tests/e2e/tests/critical-path/browser/stream-pending-messages.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/stream-pending-messages.e2e.ts @@ -1,6 +1,6 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -9,7 +9,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(20); @@ -40,7 +39,7 @@ test('Verify that user can acknowledge any message in the list of pending messag // Add New Stream Key with pending message for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pending view await browserPage.openStreamPendingsView(keyName); @@ -63,7 +62,7 @@ test('Verify that user can claim any message in the list of pending messages', a // Add New Stream Key with pending message for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pendings view await browserPage.openStreamPendingsView(keyName); @@ -89,7 +88,7 @@ test('Verify that claim with optional parameters, the message removed from this // Add New Stream Key with pending message for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pendings view await browserPage.openStreamPendingsView(keyName); diff --git a/tests/e2e/tests/critical-path/browser/zset-key.e2e.ts b/tests/e2e/tests/critical-path/browser/zset-key.e2e.ts index 7231034bb3..acdc11f786 100644 --- a/tests/e2e/tests/critical-path/browser/zset-key.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/zset-key.e2e.ts @@ -1,12 +1,11 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { Common } from '../../../helpers/common'; import { rte } from '../../../helpers/constants'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(10); @@ -38,12 +37,12 @@ test('Verify that user can search by member in Zset', async t => { test('Verify that user can sort Zset members by score by DESC and ASC', async t => { keyName = common.generateWord(10); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); //Create new key with a lot of members const arr = await common.createArray(100); - await t.typeText(cliPage.cliCommandInput, `ZADD ${keyName} ${arr.join(' ')}`, { paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `ZADD ${keyName} ${arr.join(' ')}`, { paste: true }); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Open key details await browserPage.openKeyDetails(keyName); // Sort Zset members by score by DESC and verify result diff --git a/tests/e2e/tests/critical-path/cli/cli-command-helper.e2e.ts b/tests/e2e/tests/critical-path/cli/cli-command-helper.e2e.ts index 71e34fa2af..9ea1e5341d 100644 --- a/tests/e2e/tests/critical-path/cli/cli-command-helper.e2e.ts +++ b/tests/e2e/tests/critical-path/cli/cli-command-helper.e2e.ts @@ -1,12 +1,10 @@ -import {env, rte} from '../../../helpers/constants'; +import { env, rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { CliPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -import { CliActions } from '../../../common-actions/cli-actions'; +import { BrowserPage } from '../../../pageObjects'; -const cliPage = new CliPage(); -const cliActions = new CliActions(); +const browserPage = new BrowserPage(); const defaultHelperText = 'Enter any command in CLI or use search to see detailed information.'; const COMMAND_APPEND = 'APPEND'; @@ -26,73 +24,73 @@ fixture `CLI Command helper` }); test('Verify Command Helper search and filter', async t => { // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Verify default text - await t.expect(cliPage.cliHelperText.textContent).eql(defaultHelperText, 'Default text for CLI Helper is not shown'); + await t.expect(browserPage.CommandHelper.cliHelperText.textContent).eql(defaultHelperText, 'Default text for CLI Helper is not shown'); // Search any command - await t.typeText(cliPage.cliHelperSearch, 'SET', { replace: true, paste: true }); - await t.expect(cliPage.cliHelperOutputTitles.count).gt(0, 'List of commands were not found'); + await t.typeText(browserPage.CommandHelper.cliHelperSearch, 'SET', { replace: true, paste: true }); + await t.expect(browserPage.CommandHelper.cliHelperOutputTitles.count).gt(0, 'List of commands were not found'); // Clear search input - const clearButton = cliPage.cliHelper.find('[aria-label="Clear input"]'); + const clearButton = browserPage.CommandHelper.cliHelper.find('[aria-label="Clear input"]'); await t.click(clearButton); // Verify that when user clears the input in the Search of CLI Helper (via x icon), he can see the default screen with proper the text - await t.expect(cliPage.cliHelperText.textContent).eql(defaultHelperText, 'Default text for CLI Helper is not shown'); + await t.expect(browserPage.CommandHelper.cliHelperText.textContent).eql(defaultHelperText, 'Default text for CLI Helper is not shown'); // Verify that user can unselect the command filtered to remove filters - await cliPage.selectFilterGroupType(COMMAND_GROUP_SET); - await t.expect(cliPage.cliHelperOutputTitles.count).gt(0, 'List of commands were not found'); + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_SET); + await t.expect(browserPage.CommandHelper.cliHelperOutputTitles.count).gt(0, 'List of commands were not found'); // Unselect previous command from list - await cliPage.selectFilterGroupType(COMMAND_GROUP_SET); - await t.expect(cliPage.cliHelperOutputTitles.count).eql(0, 'List of commands were not cleared'); - await t.expect(cliPage.cliHelperText.textContent).eql(defaultHelperText, 'Default text for CLI Helper is not shown'); + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_SET); + await t.expect(browserPage.CommandHelper.cliHelperOutputTitles.count).eql(0, 'List of commands were not cleared'); + await t.expect(browserPage.CommandHelper.cliHelperText.textContent).eql(defaultHelperText, 'Default text for CLI Helper is not shown'); // Verify that user can see relevant search results in Command Helper per every entered symbol - await t.click(cliPage.cliHelperSearch); - await t.typeText(cliPage.cliHelperSearch, 's'); + await t.click(browserPage.CommandHelper.cliHelperSearch); + await t.typeText(browserPage.CommandHelper.cliHelperSearch, 's'); // Verify that we found commands - await t.expect(cliPage.cliHelperOutputTitles.count).gt(0, 'List of commands were not found'); - const countCommandsOfOneLetterSearch = await cliPage.cliHelperOutputTitles.count; + await t.expect(browserPage.CommandHelper.cliHelperOutputTitles.count).gt(0, 'List of commands were not found'); + const countCommandsOfOneLetterSearch = await browserPage.CommandHelper.cliHelperOutputTitles.count; // Continue typing - await t.typeText(cliPage.cliHelperSearch, 'a'); - const countCommandsOfTwoLettersSearch = await cliPage.cliHelperOutputTitles.count; + await t.typeText(browserPage.CommandHelper.cliHelperSearch, 'a'); + const countCommandsOfTwoLettersSearch = await browserPage.CommandHelper.cliHelperOutputTitles.count; // Verify that first list has more count than the second await t.expect(countCommandsOfOneLetterSearch).gt(countCommandsOfTwoLettersSearch, 'Count of commands with 1 letter not more than 2'); // Verify that when user has used search and apply filters, search results include only commands from the filter group applied - await cliPage.selectFilterGroupType(COMMAND_GROUP_SET); - await t.expect(cliPage.cliHelperOutputTitles.withText('SAVE').exists).notOk('Commands found from another group'); - await t.expect(cliPage.cliHelperOutputTitles.withText('SADD').exists).ok('Proper command was not found'); + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_SET); + await t.expect(browserPage.CommandHelper.cliHelperOutputTitles.withText('SAVE').exists).notOk('Commands found from another group'); + await t.expect(browserPage.CommandHelper.cliHelperOutputTitles.withText('SADD').exists).ok('Proper command was not found'); // Verify that Command helper cleared when user runs the command in CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Enter command into CLI - await t.typeText(cliPage.cliCommandInput, COMMAND_APPEND, { speed: 0.5, replace: true, paste: true }); - await t.expect(cliPage.filterGroupTypeButton.textContent).notContains(COMMAND_GROUP_SET, 'Filter was not cleared'); - await t.expect(cliPage.cliHelperSearch.value).eql('', 'Search was not cleared'); + await t.typeText(browserPage.Cli.cliCommandInput, COMMAND_APPEND, { speed: 0.5, replace: true, paste: true }); + await t.expect(browserPage.CommandHelper.filterGroupTypeButton.textContent).notContains(COMMAND_GROUP_SET, 'Filter was not cleared'); + await t.expect(browserPage.CommandHelper.cliHelperSearch.value).eql('', 'Search was not cleared'); // Verify that when user enters command in CLI, Helper displays additional info about the command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql('APPEND key value', 'Command name and syntax not displayed'); - await t.expect(cliPage.cliHelperTitle.innerText).contains('STRING', 'Command Group badge not displayed'); - await t.expect(cliPage.cliHelperSummary.innerText).contains(`Appends a string to the value of a key. Creates the key if it doesn't exist.`, 'Command summary not displayed'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql('APPEND key value', 'Command name and syntax not displayed'); + await t.expect(browserPage.CommandHelper.cliHelperTitle.innerText).contains('STRING', 'Command Group badge not displayed'); + await t.expect(browserPage.CommandHelper.cliHelperSummary.innerText).contains('Appends a string to the value of a key. Creates the key if it doesn\'t exist.', 'Command summary not displayed'); }); test .meta({ env: env.web })('Verify that user can type TS. in Command helper and see commands from RedisTimeSeries commands.json', async t => { const commandForSearch = 'TS.'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select group from list and remember commands - await cliPage.selectFilterGroupType(COMMAND_GROUP_TIMESERIES); - const commandsFilterCount = await cliPage.cliHelperOutputTitles.count; + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_TIMESERIES); + const commandsFilterCount = await browserPage.CommandHelper.cliHelperOutputTitles.count; const timeSeriesCommands: string[] = []; for(let i = 0; i < commandsFilterCount; i++) { - timeSeriesCommands.push(await cliPage.cliHelperOutputTitles.nth(i).textContent); + timeSeriesCommands.push(await browserPage.CommandHelper.cliHelperOutputTitles.nth(i).textContent); } // Unselect group from list - await cliPage.selectFilterGroupType(COMMAND_GROUP_TIMESERIES); + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_TIMESERIES); // Search per part of command and check all opened commands - await cliActions.checkSearchedCommandInCommandHelper(commandForSearch, timeSeriesCommands); + await browserPage.CommandHelper.checkSearchedCommandInCommandHelper(commandForSearch, timeSeriesCommands); // Check the first command documentation url - await cliPage.checkURLCommand(timeSeriesCommands[0], `https://redis.io/commands/${timeSeriesCommands[0].toLowerCase()}/`); + await browserPage.CommandHelper.checkURLCommand(timeSeriesCommands[0], `https://redis.io/commands/${timeSeriesCommands[0].toLowerCase()}/`); await t.switchToParentWindow(); }); test @@ -100,19 +98,19 @@ test const commandForSearch = 'GRAPH.'; const externalPageLink = 'https://redis.io/commands/graph.config-get/'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select group from list and remember commands - await cliPage.selectFilterGroupType(COMMAND_GROUP_GRAPH); - const commandsFilterCount = await cliPage.cliHelperOutputTitles.count; + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_GRAPH); + const commandsFilterCount = await browserPage.CommandHelper.cliHelperOutputTitles.count; const graphCommands: string[] = []; for(let i = 0; i < commandsFilterCount; i++) { - graphCommands.push(await cliPage.cliHelperOutputTitles.nth(i).textContent); + graphCommands.push(await browserPage.CommandHelper.cliHelperOutputTitles.nth(i).textContent); } // Unselect group from list - await cliPage.selectFilterGroupType(COMMAND_GROUP_GRAPH); + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_GRAPH); // Search per part of command and check all opened commands - await cliActions.checkSearchedCommandInCommandHelper(commandForSearch, graphCommands); + await browserPage.CommandHelper.checkSearchedCommandInCommandHelper(commandForSearch, graphCommands); // Check the first command documentation url - await cliPage.checkURLCommand(graphCommands[0], externalPageLink); + await browserPage.CommandHelper.checkURLCommand(graphCommands[0], externalPageLink); await t.switchToParentWindow(); }); diff --git a/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts b/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts index cf7e2c3a3f..6cb975a3b6 100644 --- a/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts +++ b/tests/e2e/tests/critical-path/cli/cli-critical.e2e.ts @@ -1,7 +1,7 @@ import { Chance } from 'chance'; import { Common } from '../../../helpers/common'; import { rte } from '../../../helpers/constants'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { acceptLicenseTermsAndAddDatabaseApi, acceptLicenseTermsAndAddOSSClusterDatabase @@ -13,7 +13,6 @@ import { } from '../../../helpers/conf'; import { deleteOSSClusterDatabaseApi, deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const cliPage = new CliPage(); const common = new Common(); const browserPage = new BrowserPage(); const chance = new Chance(); @@ -45,30 +44,30 @@ test })('Verify that user is redirected to another node when he works in CLI with OSS Cluster', async t => { keyName = common.generateWord(10); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Add key from CLI for ([keyName, value] of pairsToSet) { - await t.typeText(cliPage.cliCommandInput, `SET ${keyName} ${value}`, { replace: true, paste: true}); + await t.typeText(browserPage.Cli.cliCommandInput, `SET ${keyName} ${value}`, { replace: true, paste: true }); await t.pressKey('enter'); } // Check that user is redirected - await t.expect(await cliPage.cliArea.textContent).contains('Redirected to', 'User command was not redirected to another node'); + await t.expect(await browserPage.Cli.cliArea.textContent).contains('Redirected to', 'User command was not redirected to another node'); }); test .meta({ rte: rte.standalone })('Verify that Redis returns error if command is not correct when user works with CLI', async t => { //Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, 'SET key', { replace: true, paste: true}); + await t.typeText(browserPage.Cli.cliCommandInput, 'SET key', { replace: true, paste: true }); await t.pressKey('enter'); // Check error - const errWrongArgs = cliPage.cliOutputResponseFail.withText('ERR wrong number of arguments for \'set\' command'); + const errWrongArgs = browserPage.Cli.cliOutputResponseFail.withText('ERR wrong number of arguments for \'set\' command'); await t.expect(errWrongArgs.exists).ok('Error with wrong number of arguments was not shown'); - await t.typeText(cliPage.cliCommandInput, 'lorem', { replace: true, paste: true}); + await t.typeText(browserPage.Cli.cliCommandInput, 'lorem', { replace: true, paste: true }); await t.pressKey('enter'); // Check error - const errWrongCmnd = cliPage.cliOutputResponseFail.withText('ERR unknown command'); + const errWrongCmnd = browserPage.Cli.cliOutputResponseFail.withText('ERR unknown command'); await t.expect(errWrongCmnd.exists).ok('Error unknown command was not shown'); }); test @@ -76,18 +75,18 @@ test const commandToAutoComplete = 'INFO'; const commandStartsWith = 'I'; // Open CLI - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, commandStartsWith, { replace: true, paste: true}); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, commandStartsWith, { replace: true, paste: true }); // Press tab while we won't find 'INFO' command // Avoid endless cycle let operationsCount = 0; - while (await cliPage.cliCommandInput.textContent !== commandToAutoComplete && operationsCount < MAX_AUTOCOMPLETE_EXECUTIONS) { + while (await browserPage.Cli.cliCommandInput.textContent !== commandToAutoComplete && operationsCount < MAX_AUTOCOMPLETE_EXECUTIONS) { await t.pressKey('tab'); ++operationsCount; } await t.pressKey('enter'); // Check that command was executed and user got success result - await t.expect(cliPage.cliOutputResponseSuccess.exists).ok('Command from autocomplete was not found & executed'); + await t.expect(browserPage.Cli.cliOutputResponseSuccess.exists).ok('Command from autocomplete was not found & executed'); }); test .meta({ rte: rte.standalone })('Verify that when user enters in CLI RediSearch/JSON commands (FT.CREATE, FT.DROPINDEX/JSON.GET, JSON.DEL), he can see hints with arguments', async t => { @@ -107,14 +106,14 @@ test const command = 'ai.modelget'; // Open CLI - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true}); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); // Verify that user can type AI command in CLI and see agruments in hints from RedisAI commands.json - await t.expect(cliPage.cliCommandAutocomplete.textContent).eql(commandHint, `The hints with arguments for command ${command} not shown`); + await t.expect(browserPage.Cli.cliCommandAutocomplete.textContent).eql(commandHint, `The hints with arguments for command ${command} not shown`); // Enter commands and check hints with arguments for(const command of commands) { - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true}); - await t.expect(cliPage.cliCommandAutocomplete.textContent).eql(commandHints[commands.indexOf(command)], `The hints with arguments for command ${command} not shown`); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); + await t.expect(browserPage.Cli.cliCommandAutocomplete.textContent).eql(commandHints[commands.indexOf(command)], `The hints with arguments for command ${command} not shown`); } }); diff --git a/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts b/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts index fbff5043d8..fc693c94ce 100644 --- a/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts +++ b/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts @@ -4,7 +4,6 @@ import { Common } from '../../../helpers/common'; import { MyRedisDatabasePage, BrowserPage, - CliPage, DatabaseOverviewPage, WorkbenchPage, MemoryEfficiencyPage @@ -18,7 +17,6 @@ import { verifyKeysDisplayedInTheList, verifyKeysNotDisplayedInTheList, verifySe const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const databaseOverviewPage = new DatabaseOverviewPage(); const common = new Common(); const workbenchPage = new WorkbenchPage(); @@ -41,15 +39,15 @@ fixture `Allow to change database index` .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); // Create 3 keys and index - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); }) .afterEach(async() => { // Delete keys in logical database await databaseOverviewPage.changeDbIndex(1); - await cliPage.sendCommandsInCli([`DEL ${keyNameForSearchInLogicalDb}`, `DEL ${logicalDbKey}`]); + await browserPage.Cli.sendCommandsInCli([`DEL ${keyNameForSearchInLogicalDb}`, `DEL ${logicalDbKey}`]); // Delete and clear database await databaseOverviewPage.changeDbIndex(0); - await cliPage.sendCommandsInCli([`DEL ${keyNames.join(' ')}`, `DEL ${keyName}`, `FT.DROPINDEX ${indexName}`]); + await browserPage.Cli.sendCommandsInCli([`DEL ${keyNames.join(' ')}`, `DEL ${keyName}`, `FT.DROPINDEX ${indexName}`]); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Switching between indexed databases', async t => { diff --git a/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts b/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts index 6ffe849f9a..f018f6b531 100644 --- a/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts +++ b/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts @@ -5,7 +5,6 @@ import { Common } from '../../../helpers/common'; import { MyRedisDatabasePage, BrowserPage, - CliPage, DatabaseOverviewPage, WorkbenchPage } from '../../../pageObjects'; @@ -19,7 +18,6 @@ import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi } from '../../ const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const databaseOverviewPage = new DatabaseOverviewPage(); const chance = new Chance(); const common = new Common(); @@ -32,7 +30,7 @@ let keys1: string[]; let keys2: string[]; fixture `Database overview` - .meta({type: 'critical_path'}) + .meta({ type: 'critical_path' }) .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -105,19 +103,21 @@ test //Clear and delete database await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await cliPage.sendCommandInCli(`DEL ${keys1.join(' ')}`); - await cliPage.sendCommandInCli(`DEL ${keys2.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys1.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys2.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Verify that user can see total number of keys rounded in format 100, 1K, 1M, 1B in DB header in Browser page', async t => { //Add 100 keys keys1 = await common.createArrayWithKeyValue(100); - let totalKeys = await cliPage.sendCliCommandAndWaitForTotalKeys(`MSET ${keys1.join(' ')}`); + await browserPage.Cli.sendCliCommandAndWaitForTotalKeys(`MSET ${keys1.join(' ')}`); + let totalKeys = await browserPage.overviewTotalKeys.innerText; //Verify that the info on DB header is updated after adds await t.expect(totalKeys).eql('100', 'Info in DB header after ADD 100 keys'); //Add 1000 keys keys2 = await common.createArrayWithKeyValue(1000); - totalKeys = await cliPage.sendCliCommandAndWaitForTotalKeys(`MSET ${keys2.join(' ')}`); + await browserPage.Cli.sendCliCommandAndWaitForTotalKeys(`MSET ${keys2.join(' ')}`); + totalKeys = await browserPage.overviewTotalKeys.innerText; //Verify that the info on DB header is updated after adds await t.expect(totalKeys).eql('1 K', 'Info in DB header after ADD 1000 keys'); //Add database with more than 1M keys @@ -135,12 +135,12 @@ test .meta({ rte: rte.standalone }) .after(async() => { //Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify that user can see total memory rounded in format B, KB, MB, GB, TB in DB header in Browser page', async t => { //Add new keys keys = await common.createArrayWithKeyValue(100); - await cliPage.sendCommandInCli(`MSET ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); //Verify total memory await t.wait(fiveSecondsTimeout); await t.expect(browserPage.overviewTotalMemory.textContent).contains('MB', 'Total memory value is MB'); diff --git a/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts index 0f90d9047a..0d213a6fb8 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/memory-efficiency.e2e.ts @@ -1,5 +1,5 @@ import { Chance } from 'chance'; -import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, CliPage, WorkbenchPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, WorkbenchPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; @@ -10,7 +10,6 @@ import { verifySearchFilterValue } from '../../../helpers/keys'; const memoryEfficiencyPage = new MemoryEfficiencyPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const workbenchPage = new WorkbenchPage(); const common = new Common(); const chance = new Chance(); @@ -63,13 +62,13 @@ test if (await browserPage.submitTooltipBtn.exists) { await t.click(browserPage.submitTooltipBtn); } - await cliPage.addKeysFromCliWithDelimiter('MSET', 15); + await browserPage.Cli.addKeysFromCliWithDelimiter('MSET', 15); await t.click(browserPage.treeViewButton); // Go to Analysis Tools page await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { - await cliPage.deleteKeysFromCliWithDelimiter(15); + await browserPage.Cli.deleteKeysFromCliWithDelimiter(15); await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.browserViewButton); await browserPage.deleteKeyByName(hashKeyName); @@ -134,13 +133,13 @@ test .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); await browserPage.addHashKey(keySpaces[4], keysTTL[2], hashValue); - await cliPage.addKeysFromCliWithDelimiter('MSET', 5); + await browserPage.Cli.addKeysFromCliWithDelimiter('MSET', 5); await t.click(browserPage.treeViewButton); // Go to Analysis Tools page await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async t => { - await cliPage.deleteKeysFromCliWithDelimiter(5); + await browserPage.Cli.deleteKeysFromCliWithDelimiter(5); await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await t.click(browserPage.browserViewButton); await browserPage.deleteKeyByName(keySpaces[4]); @@ -230,7 +229,7 @@ test await t.expect(firstPointLocation).lt(yAxis, 'Point in <1 hr breakdown doesn\'t contain key'); await t.expect(fourthPointLocation).lt(yAxis, 'Point in 12-25 Hrs breakdown doesn\'t contain key'); await t.expect(thirdPointLocation).eql(`${yAxis}`, 'Point in 4-12 Hrs breakdown contains key'); - await t.expect(noExpiryDefaultPointLocation.visible).notOk('No expiry breakdown displayed when toggle is off', {timeout: 1000}); + await t.expect(noExpiryDefaultPointLocation.visible).notOk('No expiry breakdown displayed when toggle is off', { timeout: 1000 }); // No Expiry toggle shows No expiry breakdown await t.click(memoryEfficiencyPage.showNoExpiryToggle); const noExpiryPointLocation = +((await memoryEfficiencyPage.noExpiryPoint.getAttribute('y')).slice(0, 2)); @@ -242,14 +241,14 @@ test await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async() => { - await cliPage.sendCommandInCli(`del ${keyNamesReport.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`del ${keyNamesReport.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Analysis history', async t => { const numberOfKeys: string[] = []; - const dbSize = (await cliPage.getSuccessCommandResultFromCli('dbsize')).split(' '); + const dbSize = (await browserPage.Cli.getSuccessCommandResultFromCli('dbsize')).split(' '); const existedNumberOfKeys = parseInt(dbSize[dbSize.length - 1]); for (let i = 0; i < 6; i++) { - await cliPage.sendCommandInCli(`set ${keyNamesReport[i]} ${chance.word()}`); + await browserPage.Cli.sendCommandInCli(`set ${keyNamesReport[i]} ${chance.word()}`); await t.hover(memoryEfficiencyPage.newReportBtn); await t.click(memoryEfficiencyPage.newReportBtn); const compareValue = parseInt(await memoryEfficiencyPage.donutTotalKeys.sibling(1).textContent); diff --git a/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts index 1f59fb121e..aeb9f0daa5 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/recommendations.e2e.ts @@ -1,19 +1,15 @@ -import { Selector } from 'testcafe'; -import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, CliPage, AddRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, AddRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi, deleteCustomDatabase } from '../../../helpers/database'; import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -import { CliActions } from '../../../common-actions/cli-actions'; import { MemoryEfficiencyActions } from '../../../common-actions/memory-efficiency-actions'; import { Common } from '../../../helpers/common'; const memoryEfficiencyPage = new MemoryEfficiencyPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); -const cliActions = new CliActions(); const common = new Common(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const addRedisDatabasePage = new AddRedisDatabasePage(); const memoryEfficiencyActions = new MemoryEfficiencyActions(); const workbenchPage = new WorkbenchPage(); @@ -43,13 +39,13 @@ test // Go to Analysis Tools page await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); // Add cached scripts and generate new report - await cliActions.addCachedScripts(11); + await memoryEfficiencyPage.Cli.addCachedScripts(11); await t.click(memoryEfficiencyPage.newReportBtn); // Go to Recommendations tab await t.click(memoryEfficiencyPage.recommendationsTab); }) .after(async() => { - await cliPage.sendCommandInCli('SCRIPT FLUSH'); + await browserPage.Cli.sendCommandInCli('SCRIPT FLUSH'); await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Recommendations displaying', async t => { const luaScriptCodeChangesLabel = memoryEfficiencyPage.luaScriptAccordion.parent(0).find(memoryEfficiencyPage.cssCodeChangesLabel); @@ -89,7 +85,7 @@ test.skip('No recommendations message', async t => { const command = `HSET ${keyName} field value`; // Create Hash key and create report - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); await t.click(memoryEfficiencyPage.newReportBtn); // Go to Recommendations tab await t.click(memoryEfficiencyPage.recommendationsTab); diff --git a/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts b/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts index 60117ef8b8..6a9e1dbdb5 100644 --- a/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts +++ b/tests/e2e/tests/critical-path/memory-efficiency/top-keys-table.e2e.ts @@ -1,6 +1,6 @@ import { Chance } from 'chance'; import { Selector } from 'testcafe'; -import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, MemoryEfficiencyPage, BrowserPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { commonUrl, ossStandaloneRedisearch } from '../../../helpers/conf'; @@ -11,11 +11,10 @@ import { Common } from '../../../helpers/common'; const memoryEfficiencyPage = new MemoryEfficiencyPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); const chance = new Chance(); -const keyToAddParameters = { keysCount: 13, keyNameStartWith: 'hashKey'}; +const keyToAddParameters = { keysCount: 13, keyNameStartWith: 'hashKey' }; const keyName = `TestHashKey-${common.generateWord(10)}`; const keyToAddParameters2 = { fieldsCount: 80000, keyName, fieldStartWith: 'hashField', fieldValueStartWith: 'hashValue' }; const members = [...Array(100).keys()].toString().replace(/,/g, ' '); // The smallest key @@ -38,20 +37,20 @@ test await t.click(myRedisDatabasePage.NavigationPanel.analysisPageButton); }) .after(async() => { - await cliPage.sendCommandInCli('flushdb'); + await browserPage.Cli.sendCommandInCli('flushdb'); await deleteAllKeysFromDB(ossStandaloneRedisearch.host, ossStandaloneRedisearch.port); await deleteStandaloneDatabaseApi(ossStandaloneRedisearch); })('Top Keys displaying in Summary of big keys', async t => { // Verify that user can see “-” as length for all unsupported data types - await cliPage.sendCommandInCli(mbloomCommand); + await browserPage.Cli.sendCommandInCli(mbloomCommand); await t.click(memoryEfficiencyPage.newReportBtn); await t.expect(Selector('[data-testid=length-empty-bloom]').textContent).eql('-', 'Length is defined for unknown types'); // Verify that user cannot see quantifier if keys are less than 15 await t.expect(memoryEfficiencyPage.topKeysTitle.textContent).eql('TOP KEYS', 'Title is not correct'); // Verify that top 15 keys are displayed per memory - await cliPage.sendCommandInCli(listCommand); - await cliPage.sendCommandInCli(stringCommand); - await cliPage.sendCommandInCli(setCommand); + await browserPage.Cli.sendCommandInCli(listCommand); + await browserPage.Cli.sendCommandInCli(stringCommand); + await browserPage.Cli.sendCommandInCli(setCommand); await t.click(memoryEfficiencyPage.newReportBtn); await t.expect(memoryEfficiencyPage.topKeysTitle.textContent).eql('TOP 15 KEYS', 'Title is not correct'); await t.expect(memoryEfficiencyPage.topKeysKeyName.count).eql(15, 'Number of lines is not 15'); diff --git a/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts b/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts index 23d44894e1..fc7c2563e0 100644 --- a/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts +++ b/tests/e2e/tests/critical-path/monitor/monitor.e2e.ts @@ -1,7 +1,6 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, - CliPage, WorkbenchPage, BrowserPage } from '../../../pageObjects'; @@ -14,7 +13,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); -const cliPage = new CliPage(); const workbenchPage = new WorkbenchPage(); const browserPage = new BrowserPage(); const common = new Common(); @@ -46,7 +44,7 @@ test await t.click(browserPage.Profiler.startMonitorButton); await t.expect(browserPage.Profiler.monitorIsStartedText.innerText).eql('Profiler is started.'); //Verify that user can see run commands in monitor - await cliPage.getSuccessCommandResultFromCli(`${command} ${keyName} ${keyValue}`); + await browserPage.Cli.getSuccessCommandResultFromCli(`${command} ${keyName} ${keyValue}`); await browserPage.Profiler.checkCommandInMonitorResults(command, [keyName, keyValue]); }); test @@ -63,7 +61,7 @@ test //Start Monitor await browserPage.Profiler.startMonitor(); //Send command in CLI - await cliPage.getSuccessCommandResultFromCli(cli_command); + await browserPage.Cli.getSuccessCommandResultFromCli(cli_command); //Check that command from CLI is displayed in monitor await browserPage.Profiler.checkCommandInMonitorResults(cli_command); //Refresh the page to send command from Browser client diff --git a/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts b/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts index 14c06717cc..252afdd645 100644 --- a/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts +++ b/tests/e2e/tests/critical-path/monitor/save-commands.e2e.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as os from 'os'; import { join as joinPath } from 'path'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { CliPage, BrowserPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -11,7 +11,6 @@ import { rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const tempDir = os.tmpdir(); let downloadedFilePath = ''; @@ -81,7 +80,7 @@ test('Verify that when user switch toggle to ON and started the Profiler, tempor // Start Monitor with Save logs await browserPage.Profiler.startMonitorWithSaveLog(); // Send command in CLI - await cliPage.getSuccessCommandResultFromCli(cli_command); + await browserPage.Cli.getSuccessCommandResultFromCli(cli_command); await browserPage.Profiler.checkCommandInMonitorResults(cli_command); // Verify that temporary Log file Created await t.expect(numberOfTempFiles).lt(fs.readdirSync(tempDir).length, 'The temporary Log file is not created'); diff --git a/tests/e2e/tests/critical-path/overview/overview.e2e.ts b/tests/e2e/tests/critical-path/overview/overview.e2e.ts index 9ac9bb3555..a3b09f8916 100644 --- a/tests/e2e/tests/critical-path/overview/overview.e2e.ts +++ b/tests/e2e/tests/critical-path/overview/overview.e2e.ts @@ -1,5 +1,5 @@ import { Selector } from 'testcafe'; -import { MyRedisDatabasePage, CliPage, OverviewPage, WorkbenchPage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage, OverviewPage, WorkbenchPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddOSSClusterDatabase } from '../../../helpers/database'; import { commonUrl, ossClusterConfig } from '../../../helpers/conf'; @@ -9,7 +9,7 @@ import { Common } from '../../../helpers/common'; const overviewPage = new OverviewPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); const common = new Common(); -const cliPage = new CliPage(); +const browserPage = new BrowserPage(); const workbenchPage = new WorkbenchPage(); const headerColumns = { @@ -17,6 +17,8 @@ const headerColumns = { 'Version': '7.0.0', 'User': 'Default' }; +type HeaderColumn = keyof typeof headerColumns; + const keyName = common.generateWord(10); const commandToAddKey = `set ${keyName} test`; @@ -39,7 +41,7 @@ test('Overview tab header for OSS Cluster', async t => { // Verify that user see "Overview" header with OSS Cluster info for (const key in headerColumns) { const columnSelector = Selector(`[data-testid=cluster-details-item-${key}]`); - await t.expect(columnSelector.textContent).contains(`${headerColumns[key]}`, `Cluster detail ${key} is incorrect`); + await t.expect(columnSelector.textContent).contains(`${headerColumns[key as HeaderColumn]}`, `Cluster detail ${key} is incorrect`); } // Verify that Uptime is displayed as time in seconds or minutes from start await t.expect(overviewPage.clusterDetailsUptime.textContent).match(uptime, 'Uptime value is not correct'); @@ -47,8 +49,8 @@ test('Overview tab header for OSS Cluster', async t => { test .after(async() => { //Clear database and delete - await cliPage.sendCommandInCli(`DEL ${keyName}`); - await cliPage.sendCommandInCli('FT.DROPINDEX idx:schools DD'); + await browserPage.Cli.sendCommandInCli(`DEL ${keyName}`); + await browserPage.Cli.sendCommandInCli('FT.DROPINDEX idx:schools DD'); await deleteOSSClusterDatabaseApi(ossClusterConfig); })('Primary node statistics table displaying', async t => { // Remember initial table values @@ -62,10 +64,10 @@ test const nodesNumberInHeader = parseInt((await overviewPage.tableHeaderCell.nth(0).textContent).match(/\d+/)![0]); // Add key from CLI - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, commandToAddKey); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, commandToAddKey); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Verify nodes in header column equal to rows await t.expect(await overviewPage.getPrimaryNodesCount()).eql(nodesNumberInHeader, 'Primary nodes in table are not displayed'); // Verify that all nodes from BE response are displayed in table diff --git a/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts b/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts index 0dddaa2a7a..d722021a48 100644 --- a/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts +++ b/tests/e2e/tests/critical-path/pub-sub/subscribe-unsubscribe.e2e.ts @@ -1,5 +1,5 @@ import { acceptLicenseTermsAndAddDatabaseApi, acceptLicenseTerms } from '../../../helpers/database'; -import { MyRedisDatabasePage, PubSubPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, PubSubPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig, ossStandaloneV5Config } from '../../../helpers/conf'; import { env, rte } from '../../../helpers/constants'; import { verifyMessageDisplayingInPubSub } from '../../../helpers/pub-sub'; @@ -8,7 +8,6 @@ import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const pubSubPage = new PubSubPage(); -const cliPage = new CliPage(); const common = new Common(); fixture `Subscribe/Unsubscribe from a channel` @@ -59,7 +58,7 @@ test('Verify that the focus gets always shifted to a newest message (auto-scroll await t.expect(pubSubPage.subscribeStatus.textContent).eql('You are subscribed', 'User is not subscribed', { timeout: 10000 }); // Publish 100 messages - await cliPage.sendCommandInCli('100 publish channel test100Message'); + await pubSubPage.Cli.sendCommandInCli('100 publish channel test100Message'); // Verify that the first message is not visible in view port await verifyMessageDisplayingInPubSub('first message', false); await verifyMessageDisplayingInPubSub('test100Message', true); @@ -80,7 +79,7 @@ test })('Verify that user subscription state is changed to unsubscribed, all the messages are cleared and total message counter is reset when user connect to another database', async t => { await t.click(pubSubPage.subscribeButton); // Publish 10 messages - await cliPage.sendCommandInCli('10 publish channel message'); + await pubSubPage.Cli.sendCommandInCli('10 publish channel message'); await verifyMessageDisplayingInPubSub('message', true); // Verify that user can see total number of messages received await t.expect(pubSubPage.totalMessagesCount.textContent).contains('10', 'Total counter value is incorrect'); @@ -97,12 +96,12 @@ test('Verify that user can see a internal link to pubsub window under word “Pu // Go to Browser Page await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that user can see a custom message when he try to run PSUBSCRIBE command in CLI or Workbench: “Use Pub/Sub to see the messages published to all channels in your database” - await cliPage.sendCommandInCli('PSUBSCRIBE'); - await t.click(cliPage.cliExpandButton); - await t.expect(cliPage.cliWarningMessage.textContent).eql('Use Pub/Sub to see the messages published to all channels in your database.', 'Message is not displayed', { timeout: 10000 }); + await pubSubPage.Cli.sendCommandInCli('PSUBSCRIBE'); + await t.click(pubSubPage.Cli.cliExpandButton); + await t.expect(pubSubPage.Cli.cliWarningMessage.textContent).eql('Use Pub/Sub to see the messages published to all channels in your database.', 'Message is not displayed', { timeout: 10000 }); // Verify internal link to pubsub page in CLI - await t.expect(cliPage.cliLinkToPubSub.exists).ok('Link to pubsub page is not displayed'); - await t.click(cliPage.cliLinkToPubSub); + await t.expect(pubSubPage.Cli.cliLinkToPubSub.exists).ok('Link to pubsub page is not displayed'); + await t.click(pubSubPage.Cli.cliLinkToPubSub); await t.expect(pubSubPage.pubSubPageContainer.exists).ok('Pubsub page is opened'); }); test('Verify that the Message field input is preserved until user Publish a message', async t => { diff --git a/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts b/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts index 7d4ed5915e..c5dbda7407 100644 --- a/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts +++ b/tests/e2e/tests/critical-path/slow-log/slow-log.e2e.ts @@ -1,4 +1,4 @@ -import { SlowLogPage, MyRedisDatabasePage, BrowserPage, CliPage, OverviewPage } from '../../../pageObjects'; +import { SlowLogPage, MyRedisDatabasePage, BrowserPage, OverviewPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { commonUrl, ossStandaloneBigConfig } from '../../../helpers/conf'; @@ -7,7 +7,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const slowLogPage = new SlowLogPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const overviewPage = new OverviewPage(); const slowerThanParameter = 1; let maxCommandLength = 50; @@ -30,7 +29,7 @@ test('Verify that user can open new Slow Log page using new icon on left app pan await t.expect(overviewPage.overviewTab.withAttribute('aria-selected', 'true').exists).notOk('The Overview tab is displayed for non OSS Cluster db'); // Verify that user can configure slowlog-max-len for Slow Log and see whole set of commands according to the setting await slowLogPage.changeSlowerThanParameter(slowerThanParameter); - await cliPage.sendCommandInCli(command); + await slowLogPage.Cli.sendCommandInCli(command); await t.click(slowLogPage.slowLogRefreshButton); const duration = await slowLogPage.slowLogCommandValue.withExactText(command).parent(3).find(slowLogPage.cssSelectorDurationValue).textContent; await t.expect(parseInt(duration)).gte(slowerThanParameter, 'Displayed command time execution is more than specified'); @@ -84,7 +83,7 @@ test('Verify that user can set slowlog-log-slower-than value in milliseconds and await slowLogPage.changeSlowerThanParameter(slowerThanParameter); // Send command in microseconds command = 'scan 0 MATCH * COUNT 5000'; - await cliPage.sendCommandInCli(command); + await slowLogPage.Cli.sendCommandInCli(command); await t.click(slowLogPage.slowLogRefreshButton); // Get duration of this command in microseconds let microsecondsDuration = await slowLogPage.slowLogCommandValue.withExactText(command).parent(3).find(slowLogPage.cssSelectorDurationValue).textContent; @@ -95,7 +94,7 @@ test('Verify that user can set slowlog-log-slower-than value in milliseconds and await t.expect(parseFloat(millisecondsDuration)).eql(parseFloat(microsecondsDuration.replace(' ', '')) / 1000); // Verify that user can set slowlog-log-slower-than value in microseconds and command duration will be re-calculated to microseconds command = 'scan 0 MATCH * COUNT 50000'; - await cliPage.sendCommandInCli(command); + await slowLogPage.Cli.sendCommandInCli(command); await t.click(slowLogPage.slowLogRefreshButton); // Get duration of this command in milliseconds millisecondsDuration = await slowLogPage.slowLogCommandValue.withExactText(command).parent(3).find(slowLogPage.cssSelectorDurationValue).textContent; @@ -110,7 +109,7 @@ test('Verify that user can reset settings to default on Slow Log page', async t // Set slowlog-max-len=0 command = 'info'; await slowLogPage.changeSlowerThanParameter(slowerThanParameter); - await cliPage.sendCommandInCli('info'); + await slowLogPage.Cli.sendCommandInCli('info'); await t.click(slowLogPage.slowLogRefreshButton); await t.expect(slowLogPage.slowLogCommandValue.withExactText(command).exists).ok('Logged command not found'); await t.click(slowLogPage.slowLogClearButton); diff --git a/tests/e2e/tests/critical-path/tree-view/tree-view-improvements.e2e.ts b/tests/e2e/tests/critical-path/tree-view/tree-view-improvements.e2e.ts index 63b2415041..94174ddd70 100644 --- a/tests/e2e/tests/critical-path/tree-view/tree-view-improvements.e2e.ts +++ b/tests/e2e/tests/critical-path/tree-view/tree-view-improvements.e2e.ts @@ -1,7 +1,7 @@ import { Selector, t } from 'testcafe'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { - BrowserPage, CliPage + BrowserPage } from '../../../pageObjects'; import { commonUrl, @@ -14,7 +14,6 @@ import { verifyKeysDisplayedInTheList, verifyKeysNotDisplayedInTheList } from '. const browserPage = new BrowserPage(); const common = new Common(); -const cliPage = new CliPage(); let keyNames: string[]; let keyName1: string; let keyName2: string; @@ -48,7 +47,7 @@ test ]; // Create 5 keys - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); await t.click(browserPage.treeViewButton); // The folder without any patterns selected and the list of keys is displayed when there is a folder without any patterns await verifyKeysDisplayedInTheList([keyNameSingle]); @@ -80,7 +79,7 @@ test `HSET ${keyNames[4]} field value` ]; - await cliPage.sendCommandsInCli(commands1); + await browserPage.Cli.sendCommandsInCli(commands1); await t.click(browserPage.refreshKeysButton); // Refreshed Tree view preselected folder await t.expect(firstTreeItemKeys.visible) @@ -119,7 +118,7 @@ test await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); }) .after(async() => { - await cliPage.sendCommandInCli(`FT.DROPINDEX ${index}`); + await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${index}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify tree view navigation for index based search', async t => { keyName1 = common.generateWord(10); // used to create index name @@ -133,11 +132,11 @@ test `HSET ${keyNames[2]} field value`, `HSET ${keyNames[3]} field value` ]; - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); // generate index based on keyName const folders = [keyName1, subFolder1]; - index = await cliPage.createIndexwithCLI(folders.join(':')); + index = await browserPage.Cli.createIndexwithCLI(folders.join(':')); await t.click(browserPage.redisearchModeBtn); // click redisearch button await browserPage.selectIndexByName(index); await t.click(browserPage.treeViewButton); @@ -171,7 +170,7 @@ test `RPUSH ${keyNames[3]} field`, `SADD ${keyNames[4]} value` ]; - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); await t.click(browserPage.treeViewButton); // The folder without any patterns selected and the list of keys is displayed when there is a folder without any patterns await verifyKeysDisplayedInTheList([keyNameSingle]); @@ -183,7 +182,7 @@ test await verifyKeysDisplayedInTheList([keyNames[0], keyNames[1]]); await t.click(browserPage.hashDeleteButton); - await cliPage.sendCommandsInCli([`DEL ${keyNames[0]}`]); + await browserPage.Cli.sendCommandsInCli([`DEL ${keyNames[0]}`]); await t.click(browserPage.refreshKeysButton); // refresh keys // The previously selected folder is preselected when key does not exist after keys refresh await verifyKeysDisplayedInTheList([keyNames[1]]); diff --git a/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts b/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts index e928912f73..f4e1ff46bc 100644 --- a/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/scripting-area.e2e.ts @@ -1,20 +1,19 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MyRedisDatabasePage, WorkbenchPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const cliPage = new CliPage(); const common = new Common(); let indexName = common.generateWord(5); let keyName = common.generateWord(5); fixture `Scripting area at Workbench` - .meta({type: 'critical_path', rte: rte.standalone}) + .meta({ type: 'critical_path', rte: rte.standalone }) .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -66,13 +65,13 @@ test('Verify that user when he have more than 10 results can request to view mor const commandToCreateSchema = `FT.CREATE ${indexName} ON HASH PREFIX 1 product: SCHEMA name TEXT`; const searchCommand = `FT.SEARCH ${indexName} * LIMIT 0 20`; //Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(workbenchPage.Cli.cliExpandButton); //Create new keys for search for(const command of commandsForSendInCli) { - await t.typeText(cliPage.cliCommandInput, command, { replace: true }); + await t.typeText(workbenchPage.Cli.cliCommandInput, command, { replace: true }); await t.pressKey('enter'); } - await t.click(cliPage.cliCollapseButton); + await t.click(workbenchPage.Cli.cliCollapseButton); //Send commands await workbenchPage.sendCommandInWorkbench(commandToCreateSchema); //Send search command diff --git a/tests/e2e/tests/regression/browser/add-keys.e2e.ts b/tests/e2e/tests/regression/browser/add-keys.e2e.ts index 477352ce49..2189401c95 100644 --- a/tests/e2e/tests/regression/browser/add-keys.e2e.ts +++ b/tests/e2e/tests/regression/browser/add-keys.e2e.ts @@ -1,15 +1,14 @@ -import {rte} from '../../../helpers/constants'; +import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; -import {commonUrl, ossStandaloneBigConfig, ossStandaloneConfig} from '../../../helpers/conf'; +import { BrowserPage } from '../../../pageObjects'; +import { commonUrl, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -import {Common} from '../../../helpers/common'; -import {BrowserActions} from '../../../common-actions/browser-actions'; +import { Common } from '../../../helpers/common'; +import { BrowserActions } from '../../../common-actions/browser-actions'; const browserPage = new BrowserPage(); const browserActions = new BrowserActions(); const common = new Common(); -const cliPage = new CliPage(); const jsonKeys = [['JSON-string', '"test"'], ['JSON-number', '782364'], ['JSON-boolean', 'true'], ['JSON-null', 'null'], ['JSON-array', '[1, 2, 3]']]; let keyNames: string[]; let indexName: string; @@ -28,7 +27,7 @@ fixture `Add keys` for (const key of jsonKeys) { commandString = commandString.concat(` ${key[0]}`); } - await cliPage.sendCommandInCli(commandString); + await browserPage.Cli.sendCommandInCli(commandString); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that user can create different types(string, number, null, array, boolean) of JSON', async t => { @@ -61,7 +60,7 @@ test commandString = commandString.concat(` ${key}`); } const commands = [`FT.DROPINDEX ${indexName}`, commandString]; - await cliPage.sendCommandsInCli(commands); + await browserPage.Cli.sendCommandsInCli(commands); await deleteStandaloneDatabaseApi(ossStandaloneBigConfig); })('Verify that the new key is displayed at the top of the list', async t => { const keyName = common.generateWord(12); @@ -73,7 +72,7 @@ test keyNames = [keyName, keyName1, keyName2, keyName3, keyName4, keyName5]; indexName = `idx:${keyName5}`; const command = `FT.CREATE ${indexName} ON HASH PREFIX 1 hash- SCHEMA name TEXT`; - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); await browserPage.addStringKey(keyName); await browserActions.verifyKeyDisplayedTopAndOpened(keyName); diff --git a/tests/e2e/tests/regression/browser/consumer-group.e2e.ts b/tests/e2e/tests/regression/browser/consumer-group.e2e.ts index 430b14a8c6..ea6a12bef1 100644 --- a/tests/e2e/tests/regression/browser/consumer-group.e2e.ts +++ b/tests/e2e/tests/regression/browser/consumer-group.e2e.ts @@ -1,6 +1,6 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -9,7 +9,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(20); @@ -108,7 +107,7 @@ test('Verify that A>Z is default table sorting in Consumer column', async t => { // Add New Stream Key with groups and consumers for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream consumer info view await browserPage.openKeyDetails(keyName); @@ -136,7 +135,7 @@ test('Verify that user can see error message if enter invalid last delivered ID' // Add New Stream Key with groups and consumers for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream consumer info view await browserPage.openKeyDetails(keyName); diff --git a/tests/e2e/tests/regression/browser/context.e2e.ts b/tests/e2e/tests/regression/browser/context.e2e.ts index 74dd60f961..8b589c08b6 100644 --- a/tests/e2e/tests/regression/browser/context.e2e.ts +++ b/tests/e2e/tests/regression/browser/context.e2e.ts @@ -1,8 +1,7 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, - BrowserPage, - CliPage + BrowserPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; @@ -12,13 +11,12 @@ import { verifySearchFilterValue } from '../../../helpers/keys'; const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(10); fixture `Browser Context` - .meta({type: 'regression', rte: rte.standalone}) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -34,8 +32,8 @@ test('Verify that if user has saved context on Browser page and go to Settings p // Create context modificaions and navigate to Settings await browserPage.addStringKey(keyName); await browserPage.openKeyDetails(keyName); - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); await t.click(myRedisDatabasePage.NavigationPanel.settingsButton); // Verify that Browser and Workbench icons are displayed @@ -45,8 +43,8 @@ test('Verify that if user has saved context on Browser page and go to Settings p await t.click(myRedisDatabasePage.NavigationPanel.browserButton); await verifySearchFilterValue(keyName); await t.expect(browserPage.keyNameFormDetails.withExactText(keyName).exists).ok('The key details is not selected'); - await t.expect(cliPage.cliCommandExecuted.withExactText(command).exists).ok(`Executed command '${command}' in CLI is not saved`); - await t.click(cliPage.cliCollapseButton); + await t.expect(browserPage.Cli.cliCommandExecuted.withExactText(command).exists).ok(`Executed command '${command}' in CLI is not saved`); + await t.click(browserPage.Cli.cliCollapseButton); }); test('Verify that when user reload the window with saved context(on any page), context is not saved when he returns back to Browser page', async t => { keyName = common.generateWord(10); diff --git a/tests/e2e/tests/regression/browser/filtering-iteratively.e2e.ts b/tests/e2e/tests/regression/browser/filtering-iteratively.e2e.ts index e1b3aa23e5..188da5e12a 100644 --- a/tests/e2e/tests/regression/browser/filtering-iteratively.e2e.ts +++ b/tests/e2e/tests/regression/browser/filtering-iteratively.e2e.ts @@ -1,12 +1,11 @@ import { acceptLicenseTermsAndAddDatabaseApi, acceptLicenseTermsAndAddOSSClusterDatabase } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossClusterConfig, ossStandaloneBigConfig, ossStandaloneConfig } from '../../../helpers/conf'; import { Common } from '../../../helpers/common'; import { KeyTypesTexts, rte } from '../../../helpers/constants'; import { deleteOSSClusterDatabaseApi, deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keys: string[]; @@ -19,14 +18,14 @@ fixture `Filtering iteratively in Browser page` }) .afterEach(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test .meta({ rte: rte.standalone })('Verify that user can see search results per 500 keys if number of results is 500', async t => { // Create new keys keys = await common.createArrayWithKeyValue(500); - await cliPage.sendCommandInCli(`MSET ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); // Search all keys await browserPage.searchByKeyName('*'); const keysNumberOfResults = await browserPage.keysNumberOfResults.textContent; @@ -37,7 +36,7 @@ test .meta({ rte: rte.standalone })('Verify that user can search iteratively via Scan more for search pattern and selected data type', async t => { // Create new keys keys = await common.createArrayWithKeyValue(1000); - await cliPage.sendCommandInCli(`MSET ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); // Search all string keys await browserPage.selectFilterGroupType(KeyTypesTexts.String); await browserPage.searchByKeyName('*'); @@ -55,12 +54,12 @@ test }) .after(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteOSSClusterDatabaseApi(ossClusterConfig); })('Verify that user can search via Scan more for search pattern and selected data type in OSS Cluster DB', async t => { // Create new keys keys = await common.createArrayWithKeyValueForOSSCluster(1000); - await cliPage.sendCommandInCli(`MSET ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); // Search all string keys await browserPage.selectFilterGroupType(KeyTypesTexts.String); await browserPage.searchByKeyName('*'); diff --git a/tests/e2e/tests/regression/browser/formatter-warning.e2e.ts b/tests/e2e/tests/regression/browser/formatter-warning.e2e.ts index 036b563a77..a09488b7c9 100644 --- a/tests/e2e/tests/regression/browser/formatter-warning.e2e.ts +++ b/tests/e2e/tests/regression/browser/formatter-warning.e2e.ts @@ -1,12 +1,11 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); const jsonInvalidStructure = '"{\"test\": 123"'; @@ -22,11 +21,10 @@ fixture `Warning for invalid formatter value` .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - // await cliPage.sendCommandInCli(jsonCommand); }) .afterEach(async() => { // Clear keys and database - await cliPage.sendCommandInCli(`del ${keyName}`); + await browserPage.Cli.sendCommandInCli(`del ${keyName}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that user can see warning message when editing value', async t => { diff --git a/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts b/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts index b0ac5b981c..faf37d1fc9 100644 --- a/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts +++ b/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts @@ -1,7 +1,7 @@ import { t } from 'testcafe'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage, MyRedisDatabasePage, DatabaseOverviewPage, BulkActionsPage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage, DatabaseOverviewPage, BulkActionsPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneBigConfig, @@ -11,7 +11,6 @@ import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi } from '../../ import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); const databaseOverviewPage = new DatabaseOverviewPage(); const bulkActionsPage = new BulkActionsPage(); @@ -25,7 +24,7 @@ fixture `Handle user permissions` .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneBigConfig, ossStandaloneBigConfig.databaseName); - await cliPage.sendCommandInCli(createUserCommand); + await browserPage.Cli.sendCommandInCli(createUserCommand); ossStandaloneNoPermissionsConfig.host = process.env.OSS_STANDALONE_BIG_HOST || 'oss-standalone-big'; await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addNewStandaloneDatabaseApi(ossStandaloneNoPermissionsConfig); @@ -47,13 +46,13 @@ test('Verify that user without dbsize permissions can connect to DB', async t => // Check that user can see total number of keys in browser await t.expect(browserPage.keysSummary.find('b').withText('18 00').exists).ok('Total number is not displayed'); // Check that user can search per key - await cliPage.sendCommandInCli(createKeyCommand); + await browserPage.Cli.sendCommandInCli(createKeyCommand); await browserPage.searchByKeyName(keyName); await t.expect(browserPage.keysNumberOfResults.textContent).eql('1', 'Found keys number not correct'); await t.expect(browserPage.scannedValue.textContent).contains('18 000', 'Number of scanned not correct'); await t.expect(browserPage.keysTotalNumber.textContent).contains('18 000', 'Number of total keys not correct'); // Check bulk delete - await cliPage.sendCommandInCli(createKeyCommand); + await browserPage.Cli.sendCommandInCli(createKeyCommand); await browserPage.searchByKeyName(keyName); await bulkActionsPage.startBulkDelete(); await t.expect(bulkActionsPage.bulkStatusCompleted.visible).ok('Bulk deletion is not completed', { timeout: 60000 }); diff --git a/tests/e2e/tests/regression/browser/key-messages.e2e.ts b/tests/e2e/tests/regression/browser/key-messages.e2e.ts index e852bccc17..a91f28a68b 100644 --- a/tests/e2e/tests/regression/browser/key-messages.e2e.ts +++ b/tests/e2e/tests/regression/browser/key-messages.e2e.ts @@ -1,13 +1,12 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage, MyRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); const common = new Common(); -const cliPage = new CliPage(); const workbenchPage = new WorkbenchPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); @@ -41,7 +40,7 @@ test('Verify that user can see updated message in Browser for TimeSeries and Gra ]; // Add key and verify message in Browser - await cliPage.sendCommandInCli(commands[i]); + await browserPage.Cli.sendCommandInCli(commands[i]); await browserPage.searchByKeyName(keyName); await t.click(browserPage.keyNameInTheList); for(const message of messages) { @@ -59,7 +58,7 @@ test('Verify that user can see link to Workbench under word “Workbench” in t ]; // Add key and verify Workbench link - await cliPage.sendCommandInCli(commands[i]); + await browserPage.Cli.sendCommandInCli(commands[i]); await browserPage.searchByKeyName(keyName); await t.click(browserPage.keyNameInTheList); await t.click(browserPage.internalLinkToWorkbench); diff --git a/tests/e2e/tests/regression/browser/large-key-details-values.e2e.ts b/tests/e2e/tests/regression/browser/large-key-details-values.e2e.ts index 73a55e7ece..6239c1edd3 100644 --- a/tests/e2e/tests/regression/browser/large-key-details-values.e2e.ts +++ b/tests/e2e/tests/regression/browser/large-key-details-values.e2e.ts @@ -1,13 +1,12 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); const common = new Common(); -const cliPage = new CliPage(); const field = common.generateWord(20); const value = common.generateSentence(200); @@ -33,8 +32,8 @@ test('Verify that user can click on a row to expand it if any of its cells conta const entryFieldLong = browserPage.streamEntryFields.nth(1).parent(1); const entryFieldSmall = browserPage.streamEntryFields.nth(0).parent(1); // Create stream key - await cliPage.sendCommandInCli(`XADD ${keyName} * '${field}' '${value}'`); - await cliPage.sendCommandInCli(`XADD ${keyName} * '${field}' '${value1}'`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * '${field}' '${value}'`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * '${field}' '${value1}'`); // Open key details await browserPage.openKeyDetails(keyName); // Remember height of the cells diff --git a/tests/e2e/tests/regression/browser/onboarding.e2e.ts b/tests/e2e/tests/regression/browser/onboarding.e2e.ts index 0d179c7350..b18e24409f 100644 --- a/tests/e2e/tests/regression/browser/onboarding.e2e.ts +++ b/tests/e2e/tests/regression/browser/onboarding.e2e.ts @@ -6,9 +6,8 @@ import { } from '../../../helpers/conf'; import { rte } from '../../../helpers/constants'; import { Common } from '../../../helpers/common'; -import { OnboardActions} from '../../../common-actions/onboard-actions'; +import { OnboardActions } from '../../../common-actions/onboard-actions'; import { - CliPage, MemoryEfficiencyPage, SlowLogPage, WorkbenchPage, @@ -26,7 +25,6 @@ const browserPage = new BrowserPage(); const helpCenterPage = new HelpCenterPage(); const onBoardActions = new OnboardActions(); const onboardingPage = new OnboardingPage(); -const cliPage = new CliPage(); const memoryEfficiencyPage = new MemoryEfficiencyPage(); const workBenchPage = new WorkbenchPage(); const slowLogPage = new SlowLogPage(); @@ -41,13 +39,13 @@ const expectedProperties = [ ]; fixture `Onboarding new user tests` - .meta({type: 'regression', rte: rte.standalone }) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { await acceptTermsAddDatabaseOrConnectToRedisStack(ossStandaloneConfigEmpty, ossStandaloneConfigEmpty.databaseName); }) .afterEach(async() => { - await cliPage.sendCommandInCli(`DEL ${indexName}`); + await browserPage.Cli.sendCommandInCli(`DEL ${indexName}`); await deleteDatabase(ossStandaloneConfigEmpty.databaseName); }); // https://redislabs.atlassian.net/browse/RI-4070, https://redislabs.atlassian.net/browse/RI-4067 @@ -69,11 +67,11 @@ test('Verify onbarding new user steps', async t => { await onBoardActions.verifyStepVisible('Filter and search'); await onBoardActions.clickNextStep(); // verify cli is opened - await t.expect(cliPage.cliPanel.visible).ok('cli is not expanded'); + await t.expect(browserPage.Cli.cliPanel.visible).ok('cli is not expanded'); await onBoardActions.verifyStepVisible('CLI'); await onBoardActions.clickNextStep(); // verify command helper area is opened - await t.expect(cliPage.commandHelperArea.visible).ok('command helper is not expanded'); + await t.expect(browserPage.CommandHelper.commandHelperArea.visible).ok('command helper is not expanded'); await onBoardActions.verifyStepVisible('Command Helper'); await onBoardActions.clickNextStep(); // verify profiler is opened @@ -89,7 +87,7 @@ test('Verify onbarding new user steps', async t => { // click back step button await onBoardActions.clickBackStep(); // create index in order to see in FT.INFO {index} in onboarding step - await cliPage.sendCommandInCli(`FT.CREATE ${indexName} ON HASH PREFIX 1 test SCHEMA "name" TEXT`); + await workBenchPage.Cli.sendCommandInCli(`FT.CREATE ${indexName} ON HASH PREFIX 1 test SCHEMA "name" TEXT`); // verify one step before is opened await t.expect(browserPage.Profiler.monitorArea.visible).ok('profiler is not expanded'); await onBoardActions.verifyStepVisible('Profiler'); diff --git a/tests/e2e/tests/regression/browser/stream-key.e2e.ts b/tests/e2e/tests/regression/browser/stream-key.e2e.ts index f23089c171..6dd5394a71 100644 --- a/tests/e2e/tests/regression/browser/stream-key.e2e.ts +++ b/tests/e2e/tests/regression/browser/stream-key.e2e.ts @@ -1,12 +1,11 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { rte } from '../../../helpers/constants'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); const value = common.generateWord(5); @@ -36,7 +35,7 @@ test('Verify that user can see a Stream in a table format', async t => { // Add new Stream key with 5 EntryIds for(let i = 0; i < 5; i++){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open key details and check Steam format await browserPage.openKeyDetails(keyName); @@ -52,7 +51,7 @@ test('Verify that user can sort ASC/DESC by Entry ID', async t => { // Add new Stream key with 5 EntryIds for(let i = 0; i < 5; i++){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open key details and check Entry ID ASC sorting await browserPage.openKeyDetails(keyName); @@ -85,7 +84,7 @@ test('Verify that user can see all the columns are displayed by default for Stre // Add new Stream key with 3 fields for(let i = 0; i < fields.length; i++){ - await cliPage.sendCommandInCli(`XADD ${keyName} * ${fields[i]} ${values[i]}`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * ${fields[i]} ${values[i]}`); } // Open key details and check fields await browserPage.openKeyDetails(keyName); @@ -106,7 +105,7 @@ test('Verify that the multi-line cell value tooltip is available on hover as per // Add new Stream key with multi-line cell value for(let i = 0; i < fields.length; i++){ - await cliPage.sendCommandInCli(`XADD ${keyName} * '${fields[i]}' '${entryValue}'`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * '${fields[i]}' '${entryValue}'`); } // Open key details and check tooltip await browserPage.openKeyDetails(keyName); @@ -119,7 +118,7 @@ test('Verify that user can see a confirmation message when request to delete an const confirmationMessage = `will be removed from ${keyName}`; // Add new Stream key with 1 field - await cliPage.sendCommandInCli(`XADD ${keyName} * ${field} ${value}`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * ${field} ${value}`); // Open key details and click on delete entry await browserPage.openKeyDetails(keyName); const entryId = await browserPage.streamEntryIdValue.textContent; @@ -135,7 +134,7 @@ test('Verify that the Entry ID field, Delete button are always displayed while s // Add new Stream key with 3 fields for (let i = 0; i < fields.length; i++) { - await cliPage.sendCommandInCli(`XADD ${keyName} * ${fields[i]} ${values[i]}`); + await browserPage.Cli.sendCommandInCli(`XADD ${keyName} * ${fields[i]} ${values[i]}`); } // Open key details await browserPage.openKeyDetails(keyName); diff --git a/tests/e2e/tests/regression/browser/stream-pending-messages.e2e.ts b/tests/e2e/tests/regression/browser/stream-pending-messages.e2e.ts index 96e1aff4dd..dc13d5495a 100644 --- a/tests/e2e/tests/regression/browser/stream-pending-messages.e2e.ts +++ b/tests/e2e/tests/regression/browser/stream-pending-messages.e2e.ts @@ -1,6 +1,6 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -9,7 +9,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(20); @@ -46,7 +45,7 @@ test('Verify that user can\'t select currently selected Consumer to Claim messag // Add New Stream Key with pending message for(const command of cliCommandsForStream){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pending view await browserPage.openStreamPendingsView(keyName); @@ -68,7 +67,7 @@ test('Verify that the message is claimed only if its idle time is greater than t // Add New Stream Key with pending message for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pendings view await browserPage.openStreamPendingsView(keyName); @@ -93,7 +92,7 @@ test('Verify that when user toggle optional parameters on, he can see optional f // Add New Stream Key with pending message for(const command of cliCommands){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pendings view await browserPage.openStreamPendingsView(keyName); @@ -124,7 +123,7 @@ test('Verify that user see the column names in the Pending messages table and na // Add New Stream Key with pending message for(const command of cliCommandsForStream){ - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } // Open Stream pendings view and check columns await browserPage.openStreamPendingsView(keyName); diff --git a/tests/e2e/tests/regression/browser/ttl-format.e2e.ts b/tests/e2e/tests/regression/browser/ttl-format.e2e.ts index b63ca567f3..1b8ce25af0 100644 --- a/tests/e2e/tests/regression/browser/ttl-format.e2e.ts +++ b/tests/e2e/tests/regression/browser/ttl-format.e2e.ts @@ -2,13 +2,12 @@ import { Selector } from 'testcafe'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { keyTypes } from '../../../helpers/keys'; import { rte, COMMANDS_TO_CREATE_KEY, keyLength } from '../../../helpers/constants'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); const keyName = common.generateWord(20); @@ -38,14 +37,14 @@ fixture `TTL values in Keys Table` }); test('Verify that user can see TTL in the list of keys rounded down to the nearest unit', async t => { // Create new keys with TTL - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); for (let i = 0; i < keysData.length; i++) { - await t.typeText(cliPage.cliCommandInput, COMMANDS_TO_CREATE_KEY[keysData[i].textType](keysData[i].keyName), { replace: true, paste: true }) + await t.typeText(browserPage.Cli.cliCommandInput, COMMANDS_TO_CREATE_KEY[keysData[i].textType](keysData[i].keyName), { replace: true, paste: true }) .pressKey('enter') - .typeText(cliPage.cliCommandInput, `EXPIRE ${keysData[i].keyName} ${ttlForSet[i]}`, { replace: true, paste: true }) + .typeText(browserPage.Cli.cliCommandInput, `EXPIRE ${keysData[i].keyName} ${ttlForSet[i]}`, { replace: true, paste: true }) .pressKey('enter'); } - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Refresh Keys in Browser await t.click(browserPage.refreshKeysButton); // Check that Keys has correct TTL value in keys table diff --git a/tests/e2e/tests/regression/browser/upload-json-key.e2e.ts b/tests/e2e/tests/regression/browser/upload-json-key.e2e.ts index c2fcb03ea2..fc6e41ea8a 100644 --- a/tests/e2e/tests/regression/browser/upload-json-key.e2e.ts +++ b/tests/e2e/tests/regression/browser/upload-json-key.e2e.ts @@ -1,14 +1,13 @@ import * as path from 'path'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import {BrowserPage, CliPage} from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -import {Common} from '../../../helpers/common'; +import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); const common = new Common(); -const cliPage = new CliPage(); const filePath = path.join('..', '..', '..', 'test-data', 'upload-json', 'sample.json'); const jsonValues = ['Live JSON generator', '3.1', '"2014-06-25T00:00:00.000Z"', 'true']; @@ -24,7 +23,7 @@ fixture `Upload json file` await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); }) .afterEach(async() => { - await cliPage.sendCommandInCli(`DEL ${keyName}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keyName}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); // https://redislabs.atlassian.net/browse/RI-4061 diff --git a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts index 3f072dffa1..c0fa87d8c7 100644 --- a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts @@ -1,17 +1,16 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { Common } from '../../../helpers/common'; -import { CliPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { env, rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -import { CliActions } from '../../../common-actions/cli-actions'; +import { BrowserPage } from '../../../pageObjects'; -const cliPage = new CliPage(); const common = new Common(); -const cliActions = new CliActions(); +const browserPage = new BrowserPage(); + let filteringGroup = ''; let filteringGroups: string[] = []; let commandToCheck = ''; @@ -33,51 +32,51 @@ fixture `CLI Command helper` }); test('Verify that user can open/close CLI separately from Command Helper', async t => { // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that CLI is opened separately - await t.expect(cliPage.commandHelperArea.visible).notOk('Command Helper is not closed'); - await t.expect(cliPage.cliCollapseButton.visible).ok('CLI is not opended'); + await t.expect(browserPage.CommandHelper.commandHelperArea.visible).notOk('Command Helper is not closed'); + await t.expect(browserPage.Cli.cliCollapseButton.visible).ok('CLI is not opended'); // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Verify that user can close CLI separately - await t.click(cliPage.cliCollapseButton); - await t.expect(cliPage.commandHelperArea.visible).ok('Command Helper is not displayed'); - await t.expect(cliPage.cliCollapseButton.visible).notOk('CLI is not closed'); + await t.click(browserPage.Cli.cliCollapseButton); + await t.expect(browserPage.CommandHelper.commandHelperArea.visible).ok('Command Helper is not displayed'); + await t.expect(browserPage.Cli.cliCollapseButton.visible).notOk('CLI is not closed'); // Verify that user can open/close Command Helper separately from CLI - await t.expect(cliPage.commandHelperArea.visible).ok('Command Helper is not opened'); - await t.expect(cliPage.cliCollapseButton.visible).notOk('CLI is not closed'); + await t.expect(browserPage.CommandHelper.commandHelperArea.visible).ok('Command Helper is not opened'); + await t.expect(browserPage.Cli.cliCollapseButton.visible).notOk('CLI is not closed'); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that Command Helper is closed separately - await t.click(cliPage.closeCommandHelperButton); - await t.expect(cliPage.commandHelperArea.visible).notOk('Command Helper is not closed'); - await t.expect(cliPage.cliCollapseButton.visible).ok('CLI is not opended'); + await t.click(browserPage.CommandHelper.closeCommandHelperButton); + await t.expect(browserPage.CommandHelper.commandHelperArea.visible).notOk('Command Helper is not closed'); + await t.expect(browserPage.Cli.cliCollapseButton.visible).ok('CLI is not opended'); }); test('Verify that user can see that Command Helper is minimized when he clicks the "minimize" button', async t => { - const helperColourBefore = await common.getBackgroundColour(cliPage.commandHelperBadge); + const helperColourBefore = await common.getBackgroundColour(browserPage.CommandHelper.commandHelperBadge); // Open Command Helper and minimize - await t.click(cliPage.expandCommandHelperButton); - await t.click(cliPage.minimizeCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.minimizeCommandHelperButton); // Verify Command helper is minimized - const helperColourAfter = await common.getBackgroundColour(cliPage.commandHelperBadge); + const helperColourAfter = await common.getBackgroundColour(browserPage.CommandHelper.commandHelperBadge); await t.expect(helperColourAfter).notEql(helperColourBefore, 'Command helper badge colour is not changed'); - await t.expect(cliPage.minimizeCliButton.visible).eql(false, 'Command helper is not mimized'); + await t.expect(browserPage.Cli.minimizeCliButton.visible).eql(false, 'Command helper is not mimized'); }); test('Verify that user can see that Command Helper displays the previous information when he re-opens it', async t => { filteringGroup = 'Search'; commandToCheck = 'FT.EXPLAIN'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from the list - await cliPage.selectFilterGroupType(filteringGroup); - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandToCheck)); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroup); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandToCheck)); // Minimize and re-open Command Helper - await t.click(cliPage.minimizeCommandHelperButton); - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.minimizeCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Verify Command helper information - await t.expect(cliPage.cliHelperTitleArgs.textContent).contains(commandToCheck, 'Command Helper information not persists after reopening'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).contains(commandToCheck, 'Command Helper information not persists after reopening'); }); test .meta({ env: env.web })('Verify that user can see in Command helper and click on new group "JSON", can choose it and see list of commands in the group', async t => { @@ -87,14 +86,14 @@ test externalPageLink = 'https://redis.io/commands/json.set/'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from the list - await cliPage.selectFilterGroupType(filteringGroup); - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandToCheck)); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroup); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandToCheck)); // Verify results of opened command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); // Click on Read More link for selected command - await t.click(cliPage.readMoreButton); + await t.click(browserPage.CommandHelper.readMoreButton); // Check new opened window page with the correct URL await common.checkURL(externalPageLink); await t.switchToParentWindow(); @@ -107,14 +106,14 @@ test externalPageLink = 'https://redis.io/commands/ft.explain/'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from the list - await cliPage.selectFilterGroupType(filteringGroup); - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandToCheck)); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroup); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandToCheck)); // Verify results of opened command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); // Click on Read More link for selected command - await t.click(cliPage.readMoreButton); + await t.click(browserPage.CommandHelper.readMoreButton); // Check new opened window page with the correct URL await common.checkURL(externalPageLink); await t.switchToParentWindow(); @@ -127,14 +126,14 @@ test externalPageLink = 'https://redis.io/commands/pfcount/'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from the list - await cliPage.selectFilterGroupType(filteringGroup); - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandToCheck)); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroup); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandToCheck)); // Verify results of opened command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); // Click on Read More link for selected command - await t.click(cliPage.readMoreButton); + await t.click(browserPage.CommandHelper.readMoreButton); // Check new opened window page with the correct URL await common.checkURL(externalPageLink); // await t.expect(getPageUrl()).eql(externalPageLink, 'The opened page'); @@ -163,17 +162,17 @@ test ]; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); let i = 0; while (i < filteringGroups.length) { // Select one group from the list - await cliPage.selectFilterGroupType(filteringGroups[i]); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroups[i]); // Click on the group - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandsToCheck[i])); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandsToCheck[i])); // Verify results of opened command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql(commandsArgumentsToCheck[i], 'Selected command title not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql(commandsArgumentsToCheck[i], 'Selected command title not correct'); // Click on Read More link for selected command - await t.click(cliPage.readMoreButton); + await t.click(browserPage.CommandHelper.readMoreButton); // Check new opened window page with the correct URL await common.checkURL(externalPageLinks[i]); // Close the window with external link to switch to the application window @@ -189,15 +188,15 @@ test externalPageLink = 'https://redis.io/commands/rg.getexecution'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Verify that user can see Gears group in Command Helper (RedisGears module) - await cliPage.selectFilterGroupType(filteringGroup); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroup); // Select one command from the Gears list - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandToCheck)); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandToCheck)); // Verify results of opened command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql(commandArgumentsToCheck, 'Selected command title not correct'); // Verify that user can use Read More link for Gears group in Command Helper (RedisGears module) - await t.click(cliPage.readMoreButton); + await t.click(browserPage.CommandHelper.readMoreButton); // Check new opened window page with the correct URL await common.checkURL(externalPageLink); // Close the window with external link to switch to the application window @@ -229,17 +228,17 @@ test ]; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); let i = 0; while (i < filteringGroup.length) { // Verify that user can see Bloom, Cuckoo, CMS, TDigest, TopK groups in Command Helper (RedisBloom module) - await cliPage.selectFilterGroupType(filteringGroups[i]); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroups[i]); // Click on the command - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandsToCheck[i])); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandsToCheck[i])); // Verify results of opened command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql(commandsArgumentsToCheck[i], 'Selected command title not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql(commandsArgumentsToCheck[i], 'Selected command title not correct'); // Verify that user can use Read More link for Bloom, Cuckoo, CMS, TDigest, TopK groups in Command Helper (RedisBloom module). - await t.click(cliPage.readMoreButton); + await t.click(browserPage.CommandHelper.readMoreButton); // Check new opened window page with the correct URL await common.checkURL(externalPageLinks[i]); // Close the window with external link to switch to the application window @@ -253,21 +252,21 @@ test('Verify that user can go back to list of commands for group in Command Help const commandForSearch = 'EXPLAIN'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from the list - await t.typeText(cliPage.cliHelperSearch, commandForSearch); - await cliPage.selectFilterGroupType(filteringGroup); + await t.typeText(browserPage.CommandHelper.cliHelperSearch, commandForSearch); + await browserPage.CommandHelper.selectFilterGroupType(filteringGroup); // Remember found commands - const commandsFilterCount = await cliPage.cliHelperOutputTitles.count; + const commandsFilterCount = await browserPage.CommandHelper.cliHelperOutputTitles.count; const filteredCommands: string[] = []; for (let i = 0; i < commandsFilterCount; i++) { - filteredCommands.push(await cliPage.cliHelperOutputTitles.nth(i).textContent); + filteredCommands.push(await browserPage.CommandHelper.cliHelperOutputTitles.nth(i).textContent); } // Select command - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandToCheck)); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandToCheck)); // Click return button - await t.click(cliPage.returnToList); + await t.click(browserPage.CommandHelper.returnToList); // Check that user returned to list with filter and search applied - await cliActions.checkCommandsInCommandHelper(filteredCommands); - await t.expect(cliPage.returnToList.exists).notOk('Return to list button still displayed'); + await browserPage.CommandHelper.checkCommandsInCommandHelper(filteredCommands); + await t.expect(browserPage.CommandHelper.returnToList.exists).notOk('Return to list button still displayed'); }); diff --git a/tests/e2e/tests/regression/cli/cli-logical-db.e2e.ts b/tests/e2e/tests/regression/cli/cli-logical-db.e2e.ts index f7a3578a32..f75b2fe122 100644 --- a/tests/e2e/tests/regression/cli/cli-logical-db.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-logical-db.e2e.ts @@ -1,5 +1,5 @@ import { acceptLicenseTerms, deleteCustomDatabase } from '../../../helpers/database'; -import { CliPage, AddRedisDatabasePage, MyRedisDatabasePage } from '../../../pageObjects'; +import { AddRedisDatabasePage, BrowserPage, MyRedisDatabasePage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -7,9 +7,9 @@ import { import { rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const cliPage = new CliPage(); -const addRedisDatabasePage = new AddRedisDatabasePage(); +const addRedisDatabasePage = new AddRedisDatabasePage(); const myRedisDatabasePage = new MyRedisDatabasePage(); +const browserPage = new BrowserPage(); let index = '0'; let databaseEndpoint = `${ossStandaloneConfig.host}:${ossStandaloneConfig.port}`; @@ -38,13 +38,13 @@ test await addRedisDatabasePage.addLogicalRedisDatabase(ossStandaloneConfig, index); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that user can not see 0 DB index in CLI for (const text of cliMessage) { - await t.expect(cliPage.cliArea.textContent).contains(text, 'No DB index is not displayed in the CLI message'); + await t.expect(browserPage.Cli.cliArea.textContent).contains(text, 'No DB index is not displayed in the CLI message'); } - await t.expect(cliPage.cliDbIndex.visible).eql(false, 'No DB index before the > character in CLI is not displayed'); - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpoint, 'Database index 0 is not displayed in the CLI endpoint'); + await t.expect(browserPage.Cli.cliDbIndex.visible).eql(false, 'No DB index before the > character in CLI is not displayed'); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpoint, 'Database index 0 is not displayed in the CLI endpoint'); }); test('Verify that working with logical DBs, user can see N DB index in CLI', async t => { index = '1'; @@ -53,14 +53,14 @@ test('Verify that working with logical DBs, user can see N DB index in CLI', asy await addRedisDatabasePage.addLogicalRedisDatabase(ossStandaloneConfig, index); await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneConfig.databaseName } [db${index}]`); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that user can see DB index in CLI // Verify that user can see the db{index} instead of {index} in CLI input and endpoint for (const text of cliMessage) { - await t.expect(cliPage.cliArea.textContent).contains(text, 'DB index is not displayed in the CLI message'); + await t.expect(browserPage.Cli.cliArea.textContent).contains(text, 'DB index is not displayed in the CLI message'); } - await t.expect(cliPage.cliDbIndex.textContent).eql(`[db${index}] `, 'DB index before the > character in CLI is not displayed'); - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpoint, 'Database index is not displayed in the CLI endpoint'); + await t.expect(browserPage.Cli.cliDbIndex.textContent).eql(`[db${index}] `, 'DB index before the > character in CLI is not displayed'); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpoint, 'Database index is not displayed in the CLI endpoint'); }); test('Verify that user can see DB index in the endpoint in CLI header is automatically changed when switched to another logical DB', async t => { index = '2'; @@ -72,26 +72,26 @@ test('Verify that user can see DB index in the endpoint in CLI header is automat await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneConfig.databaseName } [db${index}]`); // Open CLI and verify that user can see DB index in CLI - await t.click(cliPage.cliExpandButton); - await t.expect(cliPage.cliDbIndex.textContent).eql(`[db${index}] `, 'DB index before the > character in CLI is not displayed'); + await t.click(browserPage.Cli.cliExpandButton); + await t.expect(browserPage.Cli.cliDbIndex.textContent).eql(`[db${index}] `, 'DB index before the > character in CLI is not displayed'); // Re-creates client in CLI - await t.click(cliPage.cliCollapseButton); - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliCollapseButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that when user re-creates client in CLI the new client is connected to the DB index selected for the DB by default - await t.expect(cliPage.cliDbIndex.textContent).eql(`[db${index}] `, 'The new client is not connected to the DB index selected for the DB by default'); + await t.expect(browserPage.Cli.cliDbIndex.textContent).eql(`[db${index}] `, 'The new client is not connected to the DB index selected for the DB by default'); // Open CLI and verify the database index in the endpoint - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpoint, `The endpoint in CLI header not contains ${index} index`); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpoint, `The endpoint in CLI header not contains ${index} index`); // Minimize and maximize CLI - await t.click(cliPage.minimizeCliButton); - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.minimizeCliButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that user can work with selected logical DB in CLI when he minimazes and then maximizes the CLI - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpoint, `The endpoint in CLI header not contains ${index} index after minimize`); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpoint, `The endpoint in CLI header not contains ${index} index after minimize`); // Open CLI and verify the database index in the endpoint - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpoint, `The endpoint in CLI header not contains ${index} index`); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpoint, `The endpoint in CLI header not contains ${index} index`); // Switch to another logical database and check endpoint - await t.typeText(cliPage.cliCommandInput, `Select ${indexAfter}`, { paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `Select ${indexAfter}`, { paste: true }); await t.pressKey('enter'); - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpointAfter, `The endpoint in CLI header is not automatically changed to the new ${indexAfter}`); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpointAfter, `The endpoint in CLI header is not automatically changed to the new ${indexAfter}`); }); diff --git a/tests/e2e/tests/regression/cli/cli-promote-workbench.ts b/tests/e2e/tests/regression/cli/cli-promote-workbench.ts index e308c45008..d13492f720 100644 --- a/tests/e2e/tests/regression/cli/cli-promote-workbench.ts +++ b/tests/e2e/tests/regression/cli/cli-promote-workbench.ts @@ -1,5 +1,5 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { CliPage, WorkbenchPage, MyRedisDatabasePage } from '../../../pageObjects'; +import { WorkbenchPage, MyRedisDatabasePage, BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -7,7 +7,7 @@ import { import { rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const cliPage = new CliPage(); +const browserPage = new BrowserPage(); const workbenchPage = new WorkbenchPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); @@ -31,13 +31,13 @@ test('Verify that user can see saved workbench context after redirection from CL // Turn to Browser page await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Verify that users can see workbench promotion message when they open CLI - await t.click(cliPage.cliExpandButton); - await t.expect(cliPage.workbenchLink.parent().textContent).eql('Try Workbench, our advanced CLI. Check out our Quick Guides to learn more about Redis capabilities.', 'Wrong promotion message'); + await t.click(browserPage.Cli.cliExpandButton); + await t.expect(browserPage.Cli.workbenchLink.parent().textContent).eql('Try Workbench, our advanced CLI. Check out our Quick Guides to learn more about Redis capabilities.', 'Wrong promotion message'); // Verify that user is redirected to Workbench page clicking on workbench link in CLI - await t.click(cliPage.workbenchLink); + await t.click(browserPage.Cli.workbenchLink); await t.expect(workbenchPage.expandArea.exists).ok('Workbench page is not opened'); // Verify that CLI panel is minimized after redirection to workbench from CLI - await t.expect(cliPage.cliPanel.visible).notOk('Closed CLI'); + await t.expect(workbenchPage.Cli.cliPanel.visible).notOk('Closed CLI'); // Check content in Workbench area await t.expect(workbenchPage.expandPreselectAreaButton.visible).ok('Enablement area is not folded'); diff --git a/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts b/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts index f3419798cd..51bce8f76f 100644 --- a/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts @@ -7,7 +7,7 @@ import { acceptLicenseTermsAndAddSentinelDatabaseApi, deleteDatabase } from '../../../helpers/database'; -import { BrowserPage, CliPage, DatabaseOverviewPage } from '../../../pageObjects'; +import { BrowserPage, DatabaseOverviewPage } from '../../../pageObjects'; import { cloudDatabaseConfig, commonUrl, ossClusterConfig, @@ -18,7 +18,6 @@ import { Common } from '../../../helpers/common'; import { deleteOSSClusterDatabaseApi, deleteAllDatabasesByConnectionTypeApi } from '../../../helpers/api/api-database'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); const databaseOverviewPage = new DatabaseOverviewPage(); @@ -26,9 +25,9 @@ let keyName = common.generateWord(10); const verifyCommandsInCli = async(): Promise => { keyName = common.generateWord(10); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Add key from CLI - await t.typeText(cliPage.cliCommandInput, `SADD ${keyName} "chinese" "japanese" "german"`, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `SADD ${keyName} "chinese" "japanese" "german"`, { replace: true, paste: true }); await t.pressKey('enter'); // Check that the key is added await browserPage.searchByKeyName(keyName); diff --git a/tests/e2e/tests/regression/cli/cli.e2e.ts b/tests/e2e/tests/regression/cli/cli.e2e.ts index 991f789446..845a4e6816 100644 --- a/tests/e2e/tests/regression/cli/cli.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli.e2e.ts @@ -1,6 +1,6 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { Common } from '../../../helpers/common'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -8,7 +8,6 @@ import { import { rte } from '../../../helpers/constants'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const cliPage = new CliPage(); const common = new Common(); const browserPage = new BrowserPage(); @@ -28,28 +27,28 @@ fixture `CLI` await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that user can see CLI is minimized when he clicks the "minimize" button', async t => { - const cliColourBefore = await common.getBackgroundColour(cliPage.cliBadge); + const cliColourBefore = await common.getBackgroundColour(browserPage.Cli.cliBadge); // Open CLI and minimize - await t.click(cliPage.cliExpandButton); - await t.click(cliPage.minimizeCliButton); + await t.click(browserPage.Cli.cliExpandButton); + await t.click(browserPage.Cli.minimizeCliButton); // Verify cli is minimized - const cliColourAfter = await common.getBackgroundColour(cliPage.cliBadge); + const cliColourAfter = await common.getBackgroundColour(browserPage.Cli.cliBadge); await t.expect(cliColourAfter).notEql(cliColourBefore, 'CLI badge colour is not changed'); - await t.expect(cliPage.minimizeCliButton.visible).eql(false, 'CLI is not mimized'); + await t.expect(browserPage.Cli.minimizeCliButton.visible).eql(false, 'CLI is not mimized'); }); test('Verify that user can see results history when he re-opens CLI after minimizing', async t => { const command = 'SET key'; // Open CLI and run commands - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); // Minimize and re-open cli - await t.click(cliPage.minimizeCliButton); - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.minimizeCliButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify cli results history - await t.expect(cliPage.cliCommandExecuted.textContent).eql(command, 'CLI results history not persists after reopening'); + await t.expect(browserPage.Cli.cliCommandExecuted.textContent).eql(command, 'CLI results history not persists after reopening'); }); test .after(async() => { @@ -62,11 +61,11 @@ test const repeats = 10; // Open CLI and run command with repeats - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, `${repeats} ${command}`, { replace: true, paste: true }); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, `${repeats} ${command}`, { replace: true, paste: true }); await t.pressKey('enter'); // Verify result - await t.expect(cliPage.cliOutputResponseSuccess.count).eql(repeats, `CLI not contains ${repeats} results`); + await t.expect(browserPage.Cli.cliOutputResponseSuccess.count).eql(repeats, `CLI not contains ${repeats} results`); }); test .after(async() => { @@ -81,17 +80,17 @@ test await browserPage.addJsonKey(keyName, jsonValue, keyTTL); const command = `JSON.GET ${keyName}`; // Open CLI and run command - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); // Verify result - await t.expect(cliPage.cliOutputResponseSuccess.innerText).eql(jsonValueCli, 'The user can not see JSON object with escaped quotes'); + await t.expect(browserPage.Cli.cliOutputResponseSuccess.innerText).eql(jsonValueCli, 'The user can not see JSON object with escaped quotes'); }); test .before(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); for (const command of cliCommands) { - await cliPage.sendCommandInCli(command); + await browserPage.Cli.sendCommandInCli(command); } }) .after(async() => { @@ -100,17 +99,17 @@ test })('Verify that user can use "Up" and "Down" keys to view previous commands in CLI in the application', async t => { const databaseEndpoint = `${ossStandaloneConfig.host}:${ossStandaloneConfig.port}`; - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that user can see DB endpoint in the header of CLI - await t.expect(cliPage.cliEndpoint.textContent).eql(databaseEndpoint, 'The user can not see DB endpoint in the header of CLI'); + await t.expect(browserPage.Cli.cliEndpoint.textContent).eql(databaseEndpoint, 'The user can not see DB endpoint in the header of CLI'); - await t.expect(cliPage.cliCommandInput.innerText).eql(''); + await t.expect(browserPage.Cli.cliCommandInput.innerText).eql(''); for (let i = cliCommands.length - 1; i >= 0; i--) { await t.pressKey('up'); - await t.expect(cliPage.cliCommandInput.innerText).eql(cliCommands[i]); + await t.expect(browserPage.Cli.cliCommandInput.innerText).eql(cliCommands[i]); } for (let i = 0; i < cliCommands.length; i++) { - await t.expect(cliPage.cliCommandInput.innerText).eql(cliCommands[i]); + await t.expect(browserPage.Cli.cliCommandInput.innerText).eql(cliCommands[i]); await t.pressKey('down'); } }); diff --git a/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts b/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts index 1591a9900f..ffd99561ce 100644 --- a/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts @@ -1,7 +1,6 @@ import { acceptLicenseTermsAndAddDatabase, acceptLicenseTermsAndAddRECloudDatabase, deleteCustomDatabase, deleteDatabase } from '../../../helpers/database'; import { MyRedisDatabasePage, - CliPage, WorkbenchPage, BrowserPage, AddRedisDatabasePage @@ -14,7 +13,6 @@ import { BrowserActions } from '../../../common-actions/browser-actions'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const cliPage = new CliPage(); const common = new Common(); const browserPage = new BrowserPage(); const addRedisDatabasePage = new AddRedisDatabasePage(); @@ -36,13 +34,13 @@ fixture `Database overview` await addRedisDatabasePage.addLogicalRedisDatabase(ossStandaloneRedisearch, index); await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneRedisearch.databaseName} [db${index}]`); keys = await common.createArrayWithKeyValue(keysAmount); - await cliPage.sendCommandInCli(`MSET ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); }) .afterEach(async t => { // Clear and delete databases await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(`${ossStandaloneRedisearch.databaseName} [db${index}]`); - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteCustomDatabase(`${ossStandaloneRedisearch.databaseName} [db${index}]`); await myRedisDatabasePage.clickOnDBByName(ossStandaloneRedisearch.databaseName); await browserPage.deleteKeyByName(keyName); diff --git a/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts b/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts index 563c184e4e..8923243ac1 100644 --- a/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts @@ -1,7 +1,6 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; import { MyRedisDatabasePage, - CliPage, WorkbenchPage, BrowserPage } from '../../../pageObjects'; @@ -12,7 +11,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const cliPage = new CliPage(); const common = new Common(); const browserPage = new BrowserPage(); @@ -26,13 +24,13 @@ fixture `Database overview` }) .afterEach(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`DEL ${keys.join(' ')}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that user can connect to DB and see breadcrumbs at the top of the application', async t => { // Create new keys keys = await common.createArrayWithKeyValue(10); - await cliPage.sendCommandInCli(`MSET ${keys.join(' ')}`); + await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); // Verify that user can see breadcrumbs in Browser and Workbench views await t.expect(browserPage.breadcrumbsContainer.visible).ok('User can not see breadcrumbs in Browser page', { timeout: 10000 }); diff --git a/tests/e2e/tests/regression/database/edit-db.e2e.ts b/tests/e2e/tests/regression/database/edit-db.e2e.ts index 4d34b8c5c3..005f71e410 100644 --- a/tests/e2e/tests/regression/database/edit-db.e2e.ts +++ b/tests/e2e/tests/regression/database/edit-db.e2e.ts @@ -1,5 +1,5 @@ import { acceptLicenseTermsAndAddDatabaseApi, clickOnEditDatabaseByName, deleteDatabase } from '../../../helpers/database'; -import { AddRedisDatabasePage, BrowserPage, CliPage, MyRedisDatabasePage } from '../../../pageObjects'; +import { AddRedisDatabasePage, BrowserPage, MyRedisDatabasePage } from '../../../pageObjects'; import { commonUrl, ossStandaloneBigConfig, @@ -13,7 +13,6 @@ const common = new Common(); const myRedisDatabasePage = new MyRedisDatabasePage(); const addRedisDatabasePage = new AddRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const database = Object.assign({}, ossStandaloneConfig); const previousDatabaseName = common.generateWord(20); @@ -62,8 +61,8 @@ test // Create context modificaions and navigate to db list await browserPage.addStringKey(keyName); await browserPage.openKeyDetails(keyName); - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); await t.pressKey('enter'); await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Edit port of added database @@ -75,5 +74,5 @@ test await t.expect(browserPage.keysSummary.find('b').withText('18 00').exists).ok('DB with new port not opened'); // Verify that context not saved await t.expect(browserPage.keyNameFormDetails.withExactText(keyName).exists).notOk('The key details is still selected'); - await t.expect(cliPage.cliCommandExecuted.withExactText(command).exists).notOk(`Executed command '${command}' in CLI is still displayed`); + await t.expect(browserPage.Cli.cliCommandExecuted.withExactText(command).exists).notOk(`Executed command '${command}' in CLI is still displayed`); }); diff --git a/tests/e2e/tests/regression/database/logical-databases.e2e.ts b/tests/e2e/tests/regression/database/logical-databases.e2e.ts index c24a6a70ea..caa5ed909e 100644 --- a/tests/e2e/tests/regression/database/logical-databases.e2e.ts +++ b/tests/e2e/tests/regression/database/logical-databases.e2e.ts @@ -1,11 +1,11 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTerms } from '../../../helpers/database'; -import { MyRedisDatabasePage, CliPage, AddRedisDatabasePage } from '../../../pageObjects'; +import { MyRedisDatabasePage, AddRedisDatabasePage, BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; -const cliPage = new CliPage(); const addRedisDatabasePage = new AddRedisDatabasePage(); +const browserPage = new BrowserPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); fixture `Logical databases` @@ -28,9 +28,9 @@ test('Verify that if user enters any index of the logical database that does not await t.click(addRedisDatabasePage.addRedisDatabaseButton); // Open database and run command with non-existing index await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await t.click(cliPage.cliExpandButton); - await t.typeText(cliPage.cliCommandInput, 'Select 19', { paste: true }); + await t.click(browserPage.Cli.cliExpandButton); + await t.typeText(browserPage.Cli.cliCommandInput, 'Select 19', { paste: true }); await t.pressKey('enter'); // Verify the error - await t.expect(cliPage.cliOutputResponseFail.textContent).eql('"ERR DB index is out of range"', 'Error is not dispalyed in CLI'); + await t.expect(browserPage.Cli.cliOutputResponseFail.textContent).eql('"ERR DB index is out of range"', 'Error is not dispalyed in CLI'); }); diff --git a/tests/e2e/tests/regression/monitor/monitor.e2e.ts b/tests/e2e/tests/regression/monitor/monitor.e2e.ts index 2f04487e48..58e506579a 100644 --- a/tests/e2e/tests/regression/monitor/monitor.e2e.ts +++ b/tests/e2e/tests/regression/monitor/monitor.e2e.ts @@ -4,7 +4,6 @@ import { MyRedisDatabasePage, SettingsPage, BrowserPage, - CliPage, WorkbenchPage } from '../../../pageObjects'; import { @@ -21,11 +20,10 @@ import { WorkbenchActions } from '../../../common-actions/workbench-actions'; const myRedisDatabasePage = new MyRedisDatabasePage(); const settingsPage = new SettingsPage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const chance = new Chance(); const common = new Common(); const workbenchPage = new WorkbenchPage(); -const workbencActions = new WorkbenchActions(); +const workbenchActions = new WorkbenchActions(); fixture `Monitor` .meta({ type: 'regression', rte: rte.standalone }) @@ -121,11 +119,11 @@ test test.skip .before(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); - await cliPage.sendCommandInCli('acl setuser noperm nopass on +@all ~* -monitor -client'); + await browserPage.Cli.sendCommandInCli('acl setuser noperm nopass on +@all ~* -monitor -client'); // Check command result in CLI - await t.click(cliPage.cliExpandButton); - await t.expect(cliPage.cliOutputResponseSuccess.textContent).eql('"OK"', 'Command from autocomplete was not found & executed'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliExpandButton); + await t.expect(browserPage.Cli.cliOutputResponseSuccess.textContent).eql('"OK"', 'Command from autocomplete was not found & executed'); + await t.click(browserPage.Cli.cliCollapseButton); await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await addNewStandaloneDatabaseApi(ossStandaloneNoPermissionsConfig); await common.reloadPage(); @@ -135,7 +133,7 @@ test.skip // Delete created user await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await cliPage.sendCommandInCli('acl DELUSER noperm'); + await browserPage.Cli.sendCommandInCli('acl DELUSER noperm'); // Delete database await deleteStandaloneDatabasesApi([ossStandaloneConfig, ossStandaloneNoPermissionsConfig]); })('Verify that if user doesn\'t have permissions to run monitor, user can see error message', async t => { @@ -153,5 +151,5 @@ test.skip await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); await workbenchPage.sendCommandInWorkbench(command); // Verify that user have the following error when there is no permission to run the CLIENT LIST: "NOPERM this user has no permissions to run the 'CLIENT LIST' command or its subcommand" - await workbencActions.verifyClientListErrorMessage(); + await workbenchActions.verifyClientListErrorMessage(); }); diff --git a/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts b/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts index 9e6d93c5fd..d00b747072 100644 --- a/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts +++ b/tests/e2e/tests/regression/pub-sub/debug-mode.e2e.ts @@ -1,5 +1,5 @@ import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MyRedisDatabasePage, PubSubPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, PubSubPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { env, rte } from '../../../helpers/constants'; import { verifyMessageDisplayingInPubSub } from '../../../helpers/pub-sub'; @@ -7,7 +7,6 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const myRedisDatabasePage = new MyRedisDatabasePage(); const pubSubPage = new PubSubPage(); -const cliPage = new CliPage(); fixture `PubSub debug mode` .meta({ type: 'regression', rte: rte.standalone }) @@ -18,9 +17,9 @@ fixture `PubSub debug mode` await t.click(myRedisDatabasePage.NavigationPanel.pubSubButton); await t.click(pubSubPage.subscribeButton); // Publish different messages - await cliPage.sendCommandInCli('10 publish channel first'); - await cliPage.sendCommandInCli('10 publish channel second'); - await cliPage.sendCommandInCli('10 publish channel third'); + await pubSubPage.Cli.sendCommandInCli('10 publish channel first'); + await pubSubPage.Cli.sendCommandInCli('10 publish channel second'); + await pubSubPage.Cli.sendCommandInCli('10 publish channel third'); }) .afterEach(async() => { await deleteStandaloneDatabaseApi(ossStandaloneConfig); @@ -34,7 +33,7 @@ test await pubSubPage.publishMessage('test', 'message sent in the background'); await t.expect(pubSubPage.totalMessagesCount.textContent).contains('31', 'Total counter value is incorrect'); // Verify that when user scroll away from the newest message the auto-scroll is stopped - await cliPage.sendCommandInCli('30 publish channel additionalMessages'); + await pubSubPage.Cli.sendCommandInCli('30 publish channel additionalMessages'); await pubSubPage.publishMessage('test', 'new message with no scroll'); await verifyMessageDisplayingInPubSub('new message with no scroll', false); // Go to Browser Page @@ -50,7 +49,7 @@ test await t.scrollIntoView(pubSubPage.pubSubPageContainer.find(pubSubPage.cssSelectorMessage).withText('first')); await pubSubPage.publishMessage('test', 'message to scroll'); await t.scrollIntoView(pubSubPage.pubSubPageContainer.find(pubSubPage.cssSelectorMessage).withText('message to scroll')); - await cliPage.sendCommandInCli('20 publish channel fourth'); + await pubSubPage.Cli.sendCommandInCli('20 publish channel fourth'); // Verify auto-scroll resumes automatically await verifyMessageDisplayingInPubSub('fourth', true); }); diff --git a/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts b/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts index a5437771cc..de6bdc2183 100644 --- a/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts +++ b/tests/e2e/tests/regression/pub-sub/pub-sub-oss-cluster-7.ts @@ -1,7 +1,7 @@ import { acceptLicenseTerms } from '../../../helpers/database'; -import { MyRedisDatabasePage, PubSubPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, PubSubPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig, ossClusterConfig } from '../../../helpers/conf'; import { rte, env } from '../../../helpers/constants'; import { verifyMessageDisplayingInPubSub } from '../../../helpers/pub-sub'; @@ -13,7 +13,6 @@ import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const pubSubPage = new PubSubPage(); -const cliPage = new CliPage(); const common = new Common(); fixture `PubSub OSS Cluster 7 tests` @@ -36,10 +35,10 @@ test // Verify that user can see published messages for OSS Cluster 7 await t.click(pubSubPage.subscribeButton); // Publish different messages - await cliPage.sendCommandInCli('50 publish channel oss_cluster_message'); + await pubSubPage.Cli.sendCommandInCli('50 publish channel oss_cluster_message'); await verifyMessageDisplayingInPubSub('oss_cluster_message', true); // Verify that SPUBLISHED messages are not displayed for OSS Cluster 7 - await cliPage.sendCommandInCli('10 spublish channel oss_cluster_message_spublish'); + await pubSubPage.Cli.sendCommandInCli('10 spublish channel oss_cluster_message_spublish'); await verifyMessageDisplayingInPubSub('oss_cluster_message_spublish', false); }); test @@ -57,6 +56,6 @@ test await t.expect(pubSubPage.ossClusterEmptyMessage.exists).notOk('No SPUBLISH message still displayed'); // Verify that user can't see published messages for Standalone DB await t.click(pubSubPage.subscribeButton); - await cliPage.sendCommandInCli('10 spublish channel oss_cluster_message_spublish'); + await pubSubPage.Cli.sendCommandInCli('10 spublish channel oss_cluster_message_spublish'); await verifyMessageDisplayingInPubSub('oss_cluster_message_spublish', false); }); diff --git a/tests/e2e/tests/regression/workbench/context.e2e.ts b/tests/e2e/tests/regression/workbench/context.e2e.ts index 6b09a5b3b7..99a1276896 100644 --- a/tests/e2e/tests/regression/workbench/context.e2e.ts +++ b/tests/e2e/tests/regression/workbench/context.e2e.ts @@ -1,13 +1,12 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MyRedisDatabasePage, CliPage, WorkbenchPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const cliPage = new CliPage(); const common = new Common(); const speed = 0.4; @@ -25,42 +24,42 @@ fixture `Workbench Context` await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that user can see saved CLI state when navigates away to any other page', async t => { - // Expand CLI and navigte to Browser - await t.click(cliPage.cliExpandButton); + // Expand CLI and navigate to Browser + await t.click(workbenchPage.Cli.cliExpandButton); await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Return back to Workbench and check CLI await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); - await t.expect(cliPage.cliCollapseButton.exists).ok('CLI is not expanded'); + await t.expect(workbenchPage.Cli.cliCollapseButton.exists).ok('CLI is not expanded'); }); // Update after resolving https://redislabs.atlassian.net/browse/RI-3299 test('Verify that user can see saved CLI size when navigates away to any other page', async t => { const offsetY = 200; - await t.click(cliPage.cliExpandButton); - const cliAreaHeight = await cliPage.cliArea.clientHeight; + await t.click(workbenchPage.Cli.cliExpandButton); + const cliAreaHeight = await workbenchPage.Cli.cliArea.clientHeight; const cliAreaHeightEnd = cliAreaHeight + 150; - const cliResizeButton = cliPage.cliResizeButton; + const cliResizeButton = workbenchPage.Cli.cliResizeButton; await t.hover(cliResizeButton); // Resize CLI 50px up and navigate to the My Redis databases page await t.drag(cliResizeButton, 0, -offsetY, { speed: 0.01 }); await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Navigate back to the database Workbench and check CLI size await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await t.expect(await cliPage.cliArea.clientHeight > cliAreaHeightEnd).ok('Saved context for resizable cli is incorrect'); + await t.expect(await workbenchPage.Cli.cliArea.clientHeight > cliAreaHeightEnd).ok('Saved context for resizable cli is incorrect'); }); test('Verify that user can see all the information removed when reloads the page', async t => { const command = 'FT._LIST'; // Create context modificaions and navigate to Browser await t.typeText(workbenchPage.queryInput, command, { replace: true, speed: speed}); - await t.click(cliPage.cliExpandButton); + await t.click(workbenchPage.Cli.cliExpandButton); await t.click(myRedisDatabasePage.NavigationPanel.browserButton); // Open Workbench page and verify context await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); - await t.expect(cliPage.cliCollapseButton.exists).ok('CLI is not expanded'); + await t.expect(workbenchPage.Cli.cliCollapseButton.exists).ok('CLI is not expanded'); await t.expect(workbenchPage.queryInputScriptArea.textContent).eql(command, 'Input in Editor is not saved'); // Reload the window and chek context await common.reloadPage(); - await t.expect(cliPage.cliCollapseButton.exists).notOk('CLI is not collapsed'); + await t.expect(workbenchPage.Cli.cliCollapseButton.exists).notOk('CLI is not collapsed'); await t.expect(workbenchPage.queryInputScriptArea.textContent).eql('', 'Input in Editor is not removed'); }); test('Verify that user can see saved state of the Enablement area when navigates back to the Workbench from other page', async t => { diff --git a/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts b/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts index 9829b720dd..92b53fbabe 100644 --- a/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts +++ b/tests/e2e/tests/regression/workbench/history-of-results.e2e.ts @@ -1,6 +1,6 @@ import { getRandomParagraph } from '../../../helpers/keys'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MyRedisDatabasePage, WorkbenchPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; @@ -8,7 +8,6 @@ import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const cliPage = new CliPage(); const common = new Common(); const oneMinuteTimeout = 60000; @@ -16,7 +15,7 @@ let keyName = common.generateWord(10); const command = `set ${keyName} test`; fixture `History of results at Workbench` - .meta({type: 'regression'}) + .meta({ type: 'regression' }) .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -25,7 +24,7 @@ fixture `History of results at Workbench` }) .afterEach(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keyName}`); + await workbenchPage.Cli.sendCommandInCli(`DEL ${keyName}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test diff --git a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts index 170f68cfb5..b61d0d9d71 100644 --- a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts @@ -1,14 +1,13 @@ import { Selector } from 'testcafe'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { MyRedisDatabasePage, WorkbenchPage, CliPage, SettingsPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, WorkbenchPage, SettingsPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const cliPage = new CliPage(); const settingsPage = new SettingsPage(); const common = new Common(); @@ -54,7 +53,7 @@ test('Verify that user can run multiple commands written in multiple lines in Wo test .after(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keyName}`); + await workbenchPage.Cli.sendCommandInCli(`DEL ${keyName}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify that user can use double slashes (//) wrapped in double quotes and these slashes will not comment out any characters', async t => { keyName = common.generateWord(10); @@ -99,7 +98,7 @@ test test .after(async() => { // Clear and delete database - await cliPage.sendCommandInCli(`DEL ${keyName}`); + await workbenchPage.Cli.sendCommandInCli(`DEL ${keyName}`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); })('Verify that user can find (using right click) "Run Commands" custom shortcut option in monaco menu and run a command', async t => { keyName = common.generateWord(10); diff --git a/tests/e2e/tests/smoke/browser/filtering.e2e.ts b/tests/e2e/tests/smoke/browser/filtering.e2e.ts index b2e229b99a..6fe3e17a03 100644 --- a/tests/e2e/tests/smoke/browser/filtering.e2e.ts +++ b/tests/e2e/tests/smoke/browser/filtering.e2e.ts @@ -1,11 +1,10 @@ import { rte } from '../../../helpers/constants'; import { deleteDatabase, acceptTermsAddDatabaseOrConnectToRedisStack } from '../../../helpers/database'; -import { BrowserPage, CliPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = `KeyForSearch*?[]789${common.generateWord(10)}`; @@ -16,7 +15,7 @@ const searchedKeyName = 'KeyForSearch\\*\\?\\[]789'; const searchedValueWithEscapedSymbols = 'KeyFor\\[A-G\\]\\*\\('; fixture `Filtering per key name in Browser page` - .meta({type: 'smoke', rte: rte.standalone}) + .meta({ type: 'smoke', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { await acceptTermsAddDatabaseOrConnectToRedisStack(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -43,11 +42,11 @@ test('Verify that user can filter per exact key without using any patterns', asy keyName = `KeyForSearch*?[]789${randomValue}`; // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Create new key for search - await t.typeText(cliPage.cliCommandInput, `APPEND ${keyName} 1`, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `APPEND ${keyName} 1`, { replace: true, paste: true }); await t.pressKey('enter'); - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Filter per exact key without using any patterns await browserPage.searchByKeyName(`${searchedKeyName}${randomValue}`); // Verify that key was found diff --git a/tests/e2e/tests/smoke/cli/cli-command-helper.e2e.ts b/tests/e2e/tests/smoke/cli/cli-command-helper.e2e.ts index b3cf7647ea..9a5e3c5ae7 100644 --- a/tests/e2e/tests/smoke/cli/cli-command-helper.e2e.ts +++ b/tests/e2e/tests/smoke/cli/cli-command-helper.e2e.ts @@ -1,9 +1,9 @@ import { rte } from '../../../helpers/constants'; import { acceptTermsAddDatabaseOrConnectToRedisStack, deleteDatabase } from '../../../helpers/database'; -import { CliPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; +import { BrowserPage } from '../../../pageObjects'; -const cliPage = new CliPage(); +const browserPage = new BrowserPage(); const COMMAND_APPEND = 'APPEND'; const COMMAND_GROUP_SET = 'Set'; @@ -22,74 +22,74 @@ test('Verify that user can search per command in Command Helper and see relevant const commandForSearch = 'ADD'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Search per command - await t.typeText(cliPage.cliHelperSearch, commandForSearch, { replace: true, paste: true }); + await t.typeText(browserPage.CommandHelper.cliHelperSearch, commandForSearch, { replace: true, paste: true }); // Verify results in the output - const count = await cliPage.cliHelperOutputTitles.count; + const count = await browserPage.CommandHelper.cliHelperOutputTitles.count; for(let i = 0; i < count; i++){ - await t.expect(await cliPage.cliHelperOutputTitles.textContent).contains(commandForSearch, 'Results in the output not contains searched value'); + await t.expect(await browserPage.CommandHelper.cliHelperOutputTitles.textContent).contains(commandForSearch, 'Results in the output not contains searched value'); } // Close Command helper - await t.click(cliPage.closeCommandHelperButton); + await t.click(browserPage.CommandHelper.closeCommandHelperButton); // Verify that user can close Command helper - await t.expect(cliPage.cliHelperText.exists).notOk('Command helper'); + await t.expect(browserPage.CommandHelper.cliHelperText.exists).notOk('Command helper'); }); test('Verify that user can select one of the commands from the list of commands described in the Groups table', async t => { const commandForCheck = 'SADD'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from list - await cliPage.selectFilterGroupType(COMMAND_GROUP_SET); - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandForCheck)); + await browserPage.CommandHelper.selectFilterGroupType(COMMAND_GROUP_SET); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandForCheck)); // Verify results - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql('SADD key member [member ...]', 'Selected command information not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql('SADD key member [member ...]', 'Selected command information not correct'); }); test('Verify that user can click on any of searched commands in Command Helper and see details of the command', async t => { const commandForSearch = 'Ap'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from list of searched commands - await t.typeText(cliPage.cliHelperSearch, commandForSearch, { replace: true, paste: true }); - await t.click(cliPage.cliHelperOutputTitles.withExactText(COMMAND_APPEND)); + await t.typeText(browserPage.CommandHelper.cliHelperSearch, commandForSearch, { replace: true, paste: true }); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(COMMAND_APPEND)); // Verify details of the command - await t.expect(cliPage.cliHelperTitleArgs.textContent).eql('APPEND key value', 'Command name and syntax not correct'); - await t.expect(cliPage.cliHelperTitle.innerText).contains('STRING', 'Command Group badge not correct'); - await t.expect(cliPage.cliHelperSummary.innerText).contains(`Appends a string to the value of a key. Creates the key if it doesn't exist.`, 'Command summary not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.textContent).eql('APPEND key value', 'Command name and syntax not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitle.innerText).contains('STRING', 'Command Group badge not correct'); + await t.expect(browserPage.CommandHelper.cliHelperSummary.innerText).contains('Appends a string to the value of a key. Creates the key if it doesn\'t exist.', 'Command summary not correct'); }); test('Verify that when user enters command, he can see Command Name, Complexity, Arguments, Summary, Group, Read more', async t => { const commandForSearch = 'pop'; const commandForCheck = 'LPOP'; // Open Command Helper - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Select one command from list of searched commands - await t.typeText(cliPage.cliHelperSearch, commandForSearch, { replace: true, paste: true }); - await t.click(cliPage.cliHelperOutputTitles.withExactText(commandForCheck)); + await t.typeText(browserPage.CommandHelper.cliHelperSearch, commandForSearch, { replace: true, paste: true }); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(commandForCheck)); // Verify details of the command - await t.expect(cliPage.cliHelperTitleArgs.innerText).eql('LPOP key [count]', 'Command Name not correct'); - await t.expect(cliPage.cliHelperComplexity.innerText).eql('Complexity:\nO(N) where N is the number of elements returned', 'Complexity not correct'); - await t.expect(cliPage.cliHelperArguments.innerText).eql('Arguments:\nRequired\nkey\nOptional\n[count]', 'Arguments not correct'); - await t.expect(cliPage.cliHelperSummary.innerText).contains('Returns the first elements in a list after removing it. Deletes the list if the last element was popped.', 'Command Summary not correct'); - await t.expect(cliPage.cliHelperTitle.innerText).contains('LIST', 'Command Group not correct'); - await t.expect(cliPage.readMoreButton.exists).ok('Read more button not displayed'); + await t.expect(browserPage.CommandHelper.cliHelperTitleArgs.innerText).eql('LPOP key [count]', 'Command Name not correct'); + await t.expect(browserPage.CommandHelper.cliHelperComplexity.innerText).eql('Complexity:\nO(N) where N is the number of elements returned', 'Complexity not correct'); + await t.expect(browserPage.CommandHelper.cliHelperArguments.innerText).eql('Arguments:\nRequired\nkey\nOptional\n[count]', 'Arguments not correct'); + await t.expect(browserPage.CommandHelper.cliHelperSummary.innerText).contains('Returns the first elements in a list after removing it. Deletes the list if the last element was popped.', 'Command Summary not correct'); + await t.expect(browserPage.CommandHelper.cliHelperTitle.innerText).contains('LIST', 'Command Group not correct'); + await t.expect(browserPage.CommandHelper.readMoreButton.exists).ok('Read more button not displayed'); }); test('Verify that user can see that command is autocompleted in CLI with required arguments', async t => { const command = 'HDEL'; // Open CLI and Helper - await t.click(cliPage.cliExpandButton); - await t.click(cliPage.expandCommandHelperButton); + await t.click(browserPage.Cli.cliExpandButton); + await t.click(browserPage.CommandHelper.expandCommandHelperButton); // Search for the command and remember arguments - await t.typeText(cliPage.cliHelperSearch, command, { replace: true, paste: true }); - await t.click(cliPage.cliHelperOutputTitles.withExactText(command)); - const commandArgsFromCliHelper = await cliPage.cliHelperTitleArgs.innerText; + await t.typeText(browserPage.CommandHelper.cliHelperSearch, command, { replace: true, paste: true }); + await t.click(browserPage.CommandHelper.cliHelperOutputTitles.withExactText(command)); + const commandArgsFromCliHelper = await browserPage.CommandHelper.cliHelperTitleArgs.innerText; // Enter the command in CLI - await t.typeText(cliPage.cliCommandInput, command, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, command, { replace: true, paste: true }); // Verify autocompleted arguments - const commandAutocomplete = await cliPage.cliCommandAutocomplete.innerText; + const commandAutocomplete = await browserPage.Cli.cliCommandAutocomplete.innerText; await t.expect(commandArgsFromCliHelper).contains(commandAutocomplete, 'Command autocomplete arguments not correct'); }); diff --git a/tests/e2e/tests/smoke/cli/cli.e2e.ts b/tests/e2e/tests/smoke/cli/cli.e2e.ts index a3d761633a..20bbd09b1c 100644 --- a/tests/e2e/tests/smoke/cli/cli.e2e.ts +++ b/tests/e2e/tests/smoke/cli/cli.e2e.ts @@ -1,12 +1,11 @@ import { env, rte } from '../../../helpers/constants'; import { acceptTermsAddDatabaseOrConnectToRedisStack, deleteDatabase } from '../../../helpers/database'; -import { MyRedisDatabasePage, BrowserPage, CliPage } from '../../../pageObjects'; +import { MyRedisDatabasePage, BrowserPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const cliPage = new CliPage(); const common = new Common(); let keyName = common.generateWord(10); @@ -28,13 +27,13 @@ test })('Verify that user can add data via CLI', async t => { keyName = common.generateWord(10); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Verify that user can expand CLI - await t.expect(cliPage.cliArea.exists).ok('CLI area is not displayed'); - await t.expect(cliPage.cliCommandInput.exists).ok('CLI input is not displayed'); + await t.expect(browserPage.Cli.cliArea.exists).ok('CLI area is not displayed'); + await t.expect(browserPage.Cli.cliCommandInput.exists).ok('CLI input is not displayed'); // Add key from CLI - await t.typeText(cliPage.cliCommandInput, `SADD ${keyName} "chinese" "japanese" "german"`, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `SADD ${keyName} "chinese" "japanese" "german"`, { replace: true, paste: true }); await t.pressKey('enter'); // Check that the key is added await browserPage.searchByKeyName(keyName); @@ -43,43 +42,43 @@ test }); test('Verify that user can use blocking command', async t => { // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Check that CLI is opened - await t.expect(cliPage.cliArea.visible).ok('CLI area is not displayed'); + await t.expect(browserPage.Cli.cliArea.visible).ok('CLI area is not displayed'); // Type blocking command - await t.typeText(cliPage.cliCommandInput, 'blpop newKey 10000', { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, 'blpop newKey 10000', { replace: true, paste: true }); await t.pressKey('enter'); // Verify that user input is blocked - await t.expect(cliPage.cliCommandInput.exists).notOk('Cli input is still shown'); + await t.expect(browserPage.Cli.cliCommandInput.exists).notOk('Cli input is still shown'); // Collaple CLI - await t.click(cliPage.cliCollapseButton); + await t.click(browserPage.Cli.cliCollapseButton); // Verify that user can collapse CLI - await t.expect(cliPage.cliArea.visible).notOk('CLI area should still displayed'); + await t.expect(browserPage.Cli.cliArea.visible).notOk('CLI area should still displayed'); }); test .meta({ env: env.web })('Verify that user can use unblocking command', async t => { // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Get clientId - await t.typeText(cliPage.cliCommandInput, 'client id'); + await t.typeText(browserPage.Cli.cliCommandInput, 'client id'); await t.pressKey('enter'); - const clientId = (await cliPage.cliOutputResponseSuccess.textContent).replace(/^\D+/g, ''); + const clientId = (await browserPage.Cli.cliOutputResponseSuccess.textContent).replace(/^\D+/g, ''); // Type blocking command - await t.typeText(cliPage.cliCommandInput, 'blpop newKey 10000', { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, 'blpop newKey 10000', { replace: true, paste: true }); await t.pressKey('enter'); // Verify that user input is blocked - await t.expect(cliPage.cliCommandInput.exists).notOk('Cli input is still shown'); + await t.expect(browserPage.Cli.cliCommandInput.exists).notOk('Cli input is still shown'); // Create new window to unblock the client await t .openWindow(commonUrl) .maximizeWindow(); await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); // Open CLI - await t.click(cliPage.cliExpandButton); + await t.click(browserPage.Cli.cliExpandButton); // Unblock client - await t.typeText(cliPage.cliCommandInput, `client unblock ${clientId}`, { replace: true, paste: true }); + await t.typeText(browserPage.Cli.cliCommandInput, `client unblock ${clientId}`, { replace: true, paste: true }); await t.pressKey('enter'); await t.closeWindow(); - await t.expect(cliPage.cliCommandInput.exists).ok('Cli input is not shown, the client still blocked', { timeout: 10000 }); + await t.expect(browserPage.Cli.cliCommandInput.exists).ok('Cli input is not shown, the client still blocked', { timeout: 10000 }); }); From 98edb4d2b3a4b2a2293e99eb795d62ae6f0bac84 Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Wed, 12 Apr 2023 19:40:00 +0200 Subject: [PATCH 033/106] tests for RI-4318 --- tests/e2e/pageObjects/workbench-page.ts | 31 ++++++++++++++++-- .../upload-tutorials/testTutorials.zip | Bin 1062399 -> 448299 bytes .../workbench/import-tutorials.e2e.ts | 30 ++++++++++++++--- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index a1b841037c..36c14b8c05 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -33,8 +33,8 @@ export class WorkbenchPage { customTutorials = Selector('[data-testid=accordion-button-custom-tutorials]'); tutorialOpenUploadButton = Selector('[data-testid=open-upload-tutorial-btn]'); tutorialLinkField = Selector('[data-testid=tutorial-link-field]'); - tutorialLatestDeleteIcon = Selector('[data-testid^=delete-tutorial-icon-]').nth(0); - tutorialDeleteButton = Selector('[data-testid^=delete-tutorial-]').withText('Delete'); + tutorialLatestDeleteIcon = Selector('[data-testid^=delete-tutorial-icon-]').nth(0); + tutorialDeleteButton = Selector('[data-testid^=delete-tutorial-]').withText('Delete'); tutorialNameField = Selector('[data-testid=tutorial-name-field]'); tutorialSubmitButton = Selector('[data-testid=submit-upload-tutorial-btn]'); tutorialImport = Selector('[data-testid=import-tutorial]'); @@ -233,6 +233,7 @@ export class WorkbenchPage { const actualCommandResult = await this.queryCardContainer.nth(childNum).find(this.cssQueryTextResult).textContent; await t.expect(actualCommandResult).contains(result, 'Actual command result is not equal to executed'); } + /** * Get selector with tutorial name * @param tutorialName name of the uploaded tutorial @@ -240,6 +241,7 @@ export class WorkbenchPage { async getAccordionButtonWithName(tutorialName: string): Promise { return Selector(`[data-testid=accordion-button-${tutorialName}]`); } + /** * Get internal tutorial link with .md name * @param internalLink name of the .md file @@ -247,6 +249,7 @@ export class WorkbenchPage { async getInternalLinkWithManifest(internalLink: string): Promise { return Selector(`[data-testid="internal-link-${internalLink}.md"]`); } + /** * Get internal tutorial link without .md name * @param internalLink name of the label @@ -254,6 +257,7 @@ export class WorkbenchPage { async getInternalLinkWithoutManifest(internalLink: string): Promise { return Selector(`[data-testid="internal-link-${internalLink}"]`); } + /** * Find tutorial selector by name * @param name A tutorial name @@ -261,4 +265,27 @@ export class WorkbenchPage { async getTutorialByName(name: string): Promise { return Selector('div').withText(name); } + + /** + * Find image in tutorial by alt text + * @param alt Image alt text + */ + async getTutorialImageByAlt(alt: string): Promise { + return Selector('img').withAttribute('alt', alt); + } + + /** + * Wait until image rendered + * @param selector Image selector + */ + async waitUntilImageRendered(selector: Selector): Promise { + const searchTimeout = 5 * 1000; // 5 sec maximum wait + const startTime = Date.now(); + let imageHeight = await selector.getStyleProperty('height'); + + do { + imageHeight = await selector.getStyleProperty('height'); + } + while ((imageHeight == '0px') && Date.now() - startTime < searchTimeout); + } } diff --git a/tests/e2e/test-data/upload-tutorials/testTutorials.zip b/tests/e2e/test-data/upload-tutorials/testTutorials.zip index 60192fedb87432a8229d9aee984437c21a5ba54d..365ef7c425185f03d618763c4094f04b00cecd20 100644 GIT binary patch literal 448299 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%0DeNKiG)QH4G9dgi%RYtQwpCNNJLMdM7dj5O&_ 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 z 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

!zU#Y$~3tOANpAtf|%rn|`%^ex@^ zZFJJk=^GrK2+wg|->2ulg4fQ_$I zu-$7OfoN;HOn*=+qK*P_sg@OE9B_W2Or``zDsM<}FV_hoaUT?4lyRrpkAv;*2cLQ= z44PA6G2IpvLU|ltS1w$Zn$bCx?t9sAAnkEX^ff_bFGr~lQZRH=qm}5v?mBUkHXxn# zffNBdxE?;5t#U5NAvQO9xX9SvV3HTp)Gvgl_jwYz|Y0oxW;$Euv_1?@~ zX1_$iUbSabjV)PCUEL&IxL27oj3L5J)DyDNJtmdx(B2&nu8_>YHo_%DPRa1K>Li;< zI^T_cLk`6;;R|A^=Qkf+o}c|wFZvp8NrFa)1bn(`*==T;2gY~!t>NHP0wH z<3Zi8xBC`186$(g#yf!QOWspf`8G!&=S~63;69#J&0nJXcSynmmu1g5>L;Zm#UM_q zCaeNoLG!vkvWfk$n0F!@Hf%u$Pe-Y%NEDAjYE|dN6xs6Gm!3C*fKMs~XLUHN0P-SO zq55%vWg+l6yLks<&7rM5q&UyhKMJK#Zn06w}4Z*mq9 zO_=t`>my+U^PZxCIW&D}-l+U77zv5Ad0VvyhIn$m`2!Ow#A;B*&)>+PM&A<`=fy@~V zPI;=$JrLC<7*%XAS?|oQ_)0r#uAKwjxztk!)a-R?OCkl-l~45B{Xo=N!Vam9%4 zU#QH9l7}VypZ0w1*qyc+M66?3wtV2Yy=0(P@(p!@$d;pG$}Ds#;|`ebL58MN6*X%m zt06gK+1u>tBAo6_|8jg4=)L~2m`ca!0PRmml26f#&Ca?*do1c@Y{r@vYSXp|iIICxxEFH0<3BLAl?H`O_&>2~%V}F; z>Ie-u#^eY+^>_c@%Or^MGg}mBPspCbW%Z4i9au zSvCO8(-#^VaKMjBYdFoP%l?k(1(2kwHcvuTh^@?CMJ%_2*VGqJJT)lW=Y>=d-^K?i zbTMmD95fei>-a*Si)`>)A3{>d2LY0<^HG@bMfgDIS@9XC3fQE4hV7=8rcHIfui^e@ z*ES_Bdxxi^IH>QcT~zAEa_e;32~~XImSnJp?#~~t7I$?igh&$Il18Ox4<(AA_vw!NsgmAKEQoU^2;&o|P#jjukZ(kg$NwBI8EDRg-dzt_He z8~)@;A$E>uEaQ-H6rxZ-Acg%iWC+UvFjG`qL*`JYu2>Kt{+kXJMK{UMGRuvibbtW3@-n#Jkn|aJ0DRAw&QOc2IvXZhPkDcGICHQ@$cB|?0Z&b zXK|b=WHq%LzR%;?6fmIbb za6|Yjke3?vJBdO%N_LSMNzBhEZr3eJJ*5S1yWsIe5O z1=ejc*S&w-sh4y|br8aqtt+62k`rZoehOf=;Wikjd{-nJFE^(R@)1)w2a*lMIV9p> z!{Xzeu-0kQJbtTeCIx{qL42(|TqfYa7|n-r1l-(!V2aoyAiPMl zH-EZ_wp`jIjpg(yYD7AE+7wa32D-A4TP3)kX18_yl2HiLYR|fHIqJ!J7ee7Jr?@^& z0;XjHxLp!=qJUcCwuL0<#MF}TZF}yT?n#B(&So71A_^)@7DiLly7nzBVXoh=fxp=pKisfFd1vz=oI372u3hS*d$&Y_ku}!vt!ix@A{Hf zqJ}Badd~wlLJDj-!L$IIU*CHCYeW}MzHqKF9FQkpX~~2QBW|R{VG0~QpjJ&qG64+i zpr_-BIaxl_K2n>ru$(o4eiU^C>4A_D8?)-gsnMs4;ZY8lC-1|LEA?{?QfEffLvHU# zyvWr-0Z}=AX*=YXoe><_@_fG-Nx@X<)%n^rZD3|;NA?-T2-73HD$R>a2R~9iJ5yZ2 z{)GEDOr&b+r+e}=vDcMFGif7hsNT2w(&2jZ=3Qkrxd9N9OvM>2nk$R#4?-Q|*GLhY znS8E?VWlnIE#8mjd&%lxu}fMRTf|-^xyp1Qh$!$Bd~Pun4?r@+8m08jy!d6Tyc~vH z72fG41ucUjnp0Mgm@0PoRJDP7qo!6k96owBEbpu;=P&q$!z9q%@cnRyFyM}C4RKO8 zVMY;O(#q@XD6;A!VmLNhZ&-zr4UR9#Y8SAjLL5@aOxAo=~v-~nJM z_pIXBZim0L#s^gtotM)t(ZEc8E-0I(lhPw5urSl>G`}530O<&lP^J=!Lf}QNgdnlP zMT#XIH>lP^0_hPCRi4GmAWopF=xi{1R@@%aPWJ;USF`v0;PD~Wi~UH6BSXmQcnAI9 z+e5t>CXkxqPsnxz!sHRlqAE+jsidDM7?L)~A4=G{Dnth4;I*U|f5?)DoF9iswwl4i zdQO(TMn38x>!ea!2Px#-m!xrmckE7yQoG+FZhb1MFH2}f(gJ#c|6`wCqv-0 zn*8FK@lXR0B#9>8v8n=$zd6sWnEyJS{fvT_U4Yv_?GVtX?~i-CI`T3)70D5)w&{*G|-zNk=SlG^!Ig@BLr6?ZTmr4|97g|pT;~c1enQJUYb3M=p zO;|Z3y9ooGVtzhaSBn4u($BO-2RN&*{FZ=$a*09RacjLmAUVEQOhjQs*9KRH11rA| zT0aeGHTS1`0gjDssA@V7nxuD`mm7&E+HMS6fd9<-o_`KwOVMH{`w z_uuh7O*s)@=~_jOWgQPkvWze7U4!`tl2N>A5ZF}rb1u#&U`M5LGK8zC))dtlmL!ks zTXk_}qgM{Dn$igyGJhLL#VA1;QlccjlYCU5VI-f3SGC=I__LQ=QDpI9s+Kv0Y3Yo* zhqu<{=89w+pRuE;lrUQOHpme&sEQMZcn?M@>_X`(r5I>>$?prIz&WZ(lR|scMM^HC;`+V@p{r1QMxES+`PR2% zxdyyNh(=j%(f~+Zi_m!V;dyzc_H&axVgU8^he2$0)yuk{4-plmd^j-!dvgzLPBm`^ zSKcn}@nRYViJGge>lxi&`9VExQsR&lZU_XE_4&0$QnCdKs@P{|^L`kzOpEJV_u_9SS1)KY zXLO!eMFpirtN!K>-A{(FG$UeRP3B$?5GIaOg~(4&FEs4j^EYaHl94&U!2<%thNyCz z=lXR0>N}zs4biPel}>-Q1s0FOO=<#8X8;MF9y@GXNd}1eB`sGljbCW&e0yaD_&X%T zF%f^j#L3IeLTI7(hRclSg^q&o+J!(mm7 z5Sv0GwjQ#`B%!0d!J!#k4rPp02FM~*oypU|@>2Os@HwJ$yYBe|eQtURyoFO&e<~wo zBjf9-{yZs$$e#By)R`-QM?W` zTgsf{bw*CRUp2B~2?#pDSohL=SAP_NUUVlyJ<7PV$bzT>$W(^+@EinFjjcRI7R~qB znV^qC33n8i80zNHP}pEPdDX5+mg|wyg;tx&pK&DNQ}0+J!Ye%I>QWjOOEHDb#HQFB zmdEwIvomEcBqGrcTO#g{bv$wSm4rRC9>smVH z@MD36XbeMRoBb8_uKD)ipcFb~o1gN*^5CNYE8p~)!(Aa{`ft>m8(YcZC4rFfMGi?g8`xR8Cw%7#u}2pLQ4Y3kaQq!%DEB51X;K&VS$Z zW_NGr%SOWkX}+`99fqaQd+3novf;iV5Zl<+2EMkMoW-ahZFK*_3b-ZUMLwh9GFxf( zSlq!LU)|akypi5F4;_5)mQN*)B3Qv9}x7EPBFn?Z|((mt4ZRLPpHLozYLIvltJ z3#&n%fI3LQFbYsfL(NYtwhwveQcQVKg)#^hLUmXmRde@Oe6cLUaBtopTn?Xt^U*Z` zjLJ|tMU!daH_P%>AszSJmcc0eP%3;kI6Gh7-IZ!it|8EpC9+0lf`X{U=a<(%G@o17?8AtREf1C)`Xp1 z!JMkWi-O~#ktb(vh2|Q3V{=0s4gqr$Cv4MqiHXn!wOILA+Gcqn+D!P zL4|TmYE-JVDq~gG^Pj<~uzRZlXa{X--`Lk%`VR%@y5f8|KZ}XUA$AkFi6EQ^d~|9m zD2Ley8`7J!1D^lEwPP@GEyEA4LROSe!92+5>&h2hH>n}ox8XI`*;o&txJXZss#C6w zB&VxvZ*%BqH68BF=opMRp8R&iOvO*u{*YIJ-0sJzaJYpdPH+|4RrfyrGuRrriYkxF zmSsANIOO3e%DcLhPRi=@#|U9gEmR#5`;g(T8p6Rtvl{V9oxPJilswec$L}00aR7qb zK>8I9P{f?kyCm>t&aPe1VADLi;h{ykg-G}WwyL!JW%hUXzlt6ZXLla-*YGs(H zN|dy6(rD^F5S@fb**k#3C**G>MCv<9^1EnPCn-v_0zo*7M)UUK@$r=t^bVm`NJ52M zgW*n~D=v>zbe0#_&zuN93qe$QI@M)`JB+og?j9;J!oBbkenV_AAm+{WAyuF%bp-3_ z_Bt=R0-#?BFbM^IZTVqYd~dCZ?`f`_Do&EsWkpC5Z8<#!7cQpAAeTLv-k|&Dn!m9~ zRwZL;XNK(x1JQ6}-n+u_4kRqIWG}p+&h~hm!Vc6JR@DU+tsukIxnXhk+TSMZ6-6*L z9EBW0C8egrBs$WR<2(J~U5lb7v^Dn3rt-mD33tMe5VYMdx@{9)#ASslqSt{>r3SOh z(-g^=yqbwh2wl<_m0zw3fzlQFfE>o(A}5IsMU+H&eN97M1EZZ(A2h0r6^hL^#m;>)NCya4Ga&RqyhnTQS`U?mg8%?J=_&iRIitPZ4ZgT$OoQD%xDh^|o z69b0}M^7!ps?E2tMa4U!-YD7tqhb|_0zlpx$+l&ycwRL=bKFNR8Ql=rjo(%BbgUX? z1k6W*JSb#RU4gKrT^y2y=HD-NmGS1N$MY|iBJDww+E|dc^=+tl9dWqt&IDA3X8+KCEHgpixNlD#K6TLiKP1a2XZN`guL_$>^UAr;P zqz_#2758ETJj@M;QnJOD&$ai3ue1i*j1)JTTV&_7f6`9go})XSuKk(_I@^?%?x!z$M&{t zU=*mSF`KL7h2SlYB#0F)pXsWO{bF?TB-ZasfLpFf7EkBfPbG$^beFOz`+dW$gsgc? zqCVmfC6jJ=ws5KdKtt>Xc_L(C26u6i8X3-F6uYRFr)7yCKbSQ?%?+Y}JW$4qy?b-b z;~0}uhGIN71|dy&4Nf5Bk;ozFs&&05{reXs9_yz;fhp158%d01pqp2+uW*!;z)5(1UKMx$ zB3q)R=3%Y_y|(gJRb*ALCXK?^OYG)X04 z??=sRWeoI?sj7Jc%&2PC0)omoX3FsL>Gym3$t4|gXg|Fx#-2i_p~Up|+_s~HPc9zb$Y!AnSfcgmJ!UJdsYe3x;~TrE+hHGT{>Q3;a-}=oY4ZfICZX zS>geMqfL5d;={1WQ6GVVRCYKmbQrA%;zKx{MQKbnd1}$FAsOxn*2+fZ-W;jW4F=ov z?7h==e5>j&L`okvvTxg+B36$~p*ZaxM*-7ZXPqW(sMIX#mu zbH+L}SiTWwPGQEUn}hJe(x?9rAwp$1Vy>4k&Rq zvSEF>5_C$a8{^Zcl9ayRT%!GvTL(5M{E(OW)wMI?y4eXa%6pONV#;u8Y_1~NnElGT zT+TJWbsId4dIabm6)D6u<+D{O)Uw*Tq=9K(+*GKlqz|VLmM&N7TN>>rj3pSVmT1N; zxhSs4#rT6KnK*W{x&gdG{952tVY|U+e_6{a#ztF8uCs`8<4U&o9vZ-z=*GI zXTDfHcW<`-hgM(QRi@B^sMuJU`V(I~KjHLGfYbQt|$if>SW`BE3o9t^s|#7wP4o|H|q<%@0Gd zJQZ28UZwgwq>qPp3pA>mktf>(+e{31w-+zbr4hlA(sWx>CEN=DaU+8KAuxDXq6Z?H z2#}gMcg?=bOm%xU{1n9OWjd`LHKP_Sg6Gem9rRuoZ@~TU<+)=lDj4-DDd+$E>F|}h ziRKEIklIEW_{DTiz_}d(~WsB)CR z#)5L`_414^R)`aNv`X;>paWrM$?9~h{K;5hF)y%moI;+j0?}9hfrg_2yBH{YuZlax zI`WOY*KBGDI)aNy#ePNt*-p{ZAbMg*UyC~@#mMSEVnCN3x1?&fo2p+dhFx?y4XK&l zidQ(Mu7ELC)PT$8p1M*ljP91`Gt`6E3jRme$_M(=1)?CNc~f2YQIVB|tay>$DT)T< zeSPR;8{lMKT@Gr;x%?_t+i6?*{Dx5xu#Lj`OEZyMpAHL!p4h)To#d*SMlQB>yzF%G zkQCXoi3J*?6-+Ox)tv*{B!D)lKSv+fEIyiVP#|n41K-!ukM*vnQq}7!0IHhx$D7nx z=-iWd$RO{D%CPdTE6xNF+;akZEi+ItB)NFF2D~#Y;eAjG&eYe{>-$E` zqZ&B>UA+(m<)|7)cHQ-D4_#rDX&q`Ar0WV>T?vbVO1V%P`i{=t6Pv*xY4|9-Tp{>99Ny&nlJ>>&28#{W)Hd&yREf<1tFg=FLQTLgqLQ-zRmOfKc;OBl;pxsD z*|79VATyv}b&(D`^;qg<2oj^N?!Od`EXzGErkp+ucgRXQ^_gkgD_?(LJ%%R-&Z)f^ z0NvR%M%T;s@Kr%~P~Z<}g#}@IntvNgHHZ|OHWYdSAbH5CKxdh`^}%Il8lnT&8)=o~ zTcsDSH#<=aqm`R(i>LeNI-5kEBYhm8S5BDxZJzOFA^xh`oW8=^|twM-%O_Q{3J2>xDwNzn}a(uqCcnA62=q~J)IbL36Kb=ZEI z_M4VvT+g1+UiTDXSsEx`vC3olX?j&V|qLXSWhfh=oPHaGFobHnH zR1nI)@rF1-i=_=^j!_o?Dffprc351ryfwcuzy0#2=WMlVanCC_2B{M@bmvG3WnUeS zc?4k&{hdG6*`#>S+#O)WXJK31c4)qEAQ4MpPK1=WIiFjn&O)Fe)$SN+9E=!;lpPw! zr_nMgWBQpnN;0@MN3R%qBzL%zD~U8d3gdf90LFm6NN-yZi6xjVtvDNe^i^vidpE*6 zr3j|(1CZzF)xeqm1;{fv0`iobpV}?{IYRRMzN2<9ag5b8OCyk{-S|JZ(8>P0DOT-% z0FFfPOk3`MQy&^2AuAVzQelGB=Kjt~)gFBOsKu;&W0aPLVzt{lhaWx~g7f(hfX)g? zB8|biwDPBBQvti#+^Fe^^Kql&4@doQ)b3_K%#4bia@5@BxGzl^re=NpxWONq9lpx% zwfnaG6uQ;Wg2!)V&KE6xz{=EnrCR$4NhIvi$GYW-_XN1vQgfffP0haA-*2~AU9)m_ z+fbY@JDZ0>>TEEsYwyqir2P};0-`8R(*lIEe{i_Rm@2yJY_$g~EZtw;|KGL7S$_B! zu0K%93ED1*P;2K*uu#{~B*n@vrz5kJx73iLCSq5QANKSd{8D)ygkKs(Za$@7#?B zSN+E@ypv`-^EZ}ZJhqP)Q(q3WcdX`iys`<&+duBt(sv|kWaLlX0Sj1!!Bok1d|Ev*CK?0VQ~rI92?C!I#anEl4VGwRrB9h{ zj{U5YRm)qfpmso87qko>8nV*s#RIfl9vl@;Ax?+KknPMV0CF`NfJ)W+aw0V1of`Sx zhSQT4k)-0jClGb`poHdxIBz0HK@yt0kVPw!uLU3+1R@%iDiPgHH7%Zf2tnHKpE+!P zR6eAdbvgV?Ds^5v9Mh=+^Ya3Ct?ZJsaf~_}=yW0V{PQ*Wl#NO~>QV9eN3Su{uNaHO z${EbWvn`NixTF~NmYgUN>$X;^+i_quXjlq^{8u=51wNAMq)xz!>4)FFw_Jq9-n!eH z6G88s4#Xpcy!u^VWsA6D45@@Ppfs(|>RQA|MEE&PKI%Eg0z8U~$E2&WZC$a3)>q?= zzPNa?cjcXYXENZK;D&y_j-I zeNfqvR~@iS(xuW4U1(3?CMsQX19hwG@aI*#TfM#aFKwbiCUhEGLX%|WhO7pCv{0+Z ze&3#Hjm19TSP2HTa~WvK2}oT6!A(kJjV;S?J)s8V#UnjXZL2m_SukaX1|b{#aWK*a zx_C^SQ>mkC!r+-;e3U-Q0;#b&e|nSSoQjm}iEDhD45{z^4X6)*(m)FREWiB5OE_8K zk99Mthtb!)*8$%-2`I~P^z6OE8kuu4liuJkh}$e8v{u;QC4;&n=gBb2|HPoFA7I&F zh(Qvvt3u=2@e9R~LbJj?h#PG2dSsu)@6j3wo#oGag{<8@r_n^;6I@&EZn`&+w*!p?M&mu$Ga*{2|? zfOy@vKHpc>9LLwCmrl;Fet4m;SJe71M-uUhF0QK;Y+DCwsfQ@ImjaTW5QGX{i)H>e zHm{(SR0NVI5!lx`L~!5LHz5xY;{fh~wcNtzmHjlNFGt0o=lll(T|Lc5-TVT`y49ro zBP>~ER4xG|2+471XMB-D>-oot3r8evGW~8K95feZDqJ(8T8!-tFz7HPCM~&}%EW0TLpNQIAF136FyL1wUQft9aW4v`NC1K2iizjC-D^Lhp9F2LDob2!SuUA4$qVf`svwc2?7U?LxzCPV;pJ_2SeutWVlSO7pkZ0+Z1NipQpn*m_Nd67fYxy zP5;n$C4-G6QD(`_hNm^PUN#r3o{>k`3iL+h=5QaR3cKV|e{}DqUHApvd-dEr+-PVX zJ0~>I9@1P!A*1T24&TfMd1UGd0Q2}hJ!M{48!?WcMjSeIHoP;Roj#{mOI4ri zd24y0JZ6|Kd3X}$@)DSUnPtYDDl{$Tq!g#LaFyj4@>4ig^wx_4xbF?Ay(Vv?XmisK zG{CZ+J{RXp2Z_sM$HJGBD$rm?RWVWpjjSr7gfGOW>FiVeJ$7a6;z^O`m#(}1=fSx%RW5bnUg9I+PIkx;eNHBeDR42Dz?&I+3- zAy-**5J*;tcBII+haUA)o7@)ret0?t4e8QR@g4cTU|l{oxD`>fjihN6R=@y}?L>Yw z%;3v{O~>U*1k(@ASPj0@PFU0uiK5->W{!F=D`O;S4$qzt>-|z}KX?f_8u2KAUms>0 zJe1g}TD%$v-pw!=!YDJyF}0EMCTjJ`I>pNO{w#PKCJ$WD3>3%Yo18FpA5>g~FS$^XXT0KB6Q z>Exo!9Uhu!)Eh^El53^WDS$k2frNzO=sN7R<%HYjrXmN)$k_R@n@`+B#N@{&?^$FuF8}5l_IRJc9WM;RxdeNvU${- z&gDRMQ`P**LxTm7Q4=Wv7jzE23it2=QxB;iRg{kxrr&Mgkk(vF{5Z|LtR?DoO&g7u zK|@C@rh+Trqxo?23~Ho)4dW{>zP6w=6y#vYJy&TsQqxfT*B}2X`b>ZKi->)~WFcE3 zl6**mJ~fv|*2vUOinBiU_S^yyCa-(r}nZKJcKV|u#E*B5bi!MgZY_5F>i z1?~xuN{y@3#%L);lku9f)$7Z5;zea)yP=!CwCLoHty(#o^=#|JF$TmsR`2ggwG52d z>VlT-Kau#WcI|O|whkA0fwgy4hMsf-PMXFzV|wbM81B3iJGhGCYaEmX2oH4A*+t=l zbk)Y-kAicTE^w32s5H|6Iu8V*BTb}xa%x5c6v?#kfNPTkSr)(DxfI@N`giUAXJ|nB zs82X{a@BJ3;X3AUi{`4)JFfN)sg_Xn>!WdgNL^wSV%OU-U8be7D@=$BFUrSvqrQW~ zG90XCdnQAZ0x~ae20lZ0d&# zyQY*fQp&C|EY(MnO$zfODP#6Mh?W%)63yHqvy7iu&fWwDA{xXiDfeXBqaYRp;lAYB7)u zZ!I)-VGtRqY5o{(EjvB00_U2B(P204AG`Fmj)&y>IX$P!&c2e}BKpnry$abfhwQ-v z_?=k%l(cj8LhyCTN}#w^I#L10FhMeNO!4SU5XkwiRH1uDT|VH=@cQbtFi&zy~GtS8df*3YS)e0 z^Cf9gEmT4-ZgPgfi$TsLAs!~f9=eoS5E!P6^1Dvn5@$08nhzW1hGUgcSp&d=ez$?m zs!}!(5=S;yD%nvhH97iv`-E02vCQTie+4?aNGU1jZ0Y2uydyGU^$1Y1SY0VL-djTK z>&335$X_m8Ck;bfjg^UwLJxKe6vTb_pwEO<-I<`bDjg{K6>8Ab@#gFw5=--wkFmUX z`tlW9swXN%)Kw?RpL1F7+^ti(pk!Qk?!J3Im%*{2(|GQb4l9>w2krK4&)f=n=nZ}q z!iWh|&Q79z(^A%K^$mhkW{p%DH$o%;rr=!N63cdm69$7tojr`38saz z#MSV(v0+#z^q1=rP4d)`&w51UM}AZ18um(SgRA;@GE}r()Y4o9eM$Krba^5&48U`l zl+#Vs>1M63c2-^W^6D2nfOC=r$_9VW-~DwM3c47{V!971I$XODau~+dMQuE-UM%M? zB&-x2&qnSjkrH?0CJcIah+USTA~pzF{apRm4X+ta3NRb)1&^5Lf?(@Q8WvWcja)vS zzj`B@*K*$QemN*A`K=Oqd9|a6;1g?lp7KCu1P~%Zs$ccaC+_&}&csm}IG%u2jy^^! zXwN#u6x~W->F@@imC^JzzsA!gQG;4_Fp;oHGI_)f*OlgPm$RD^3@7Gc(Gr2K1Y=Tw z+Ak%^Ila8t(@l%Gs!PAHwejqBU{o0L8!8y_AuJBf#YnU+J>On7(jrLX3)k+_td}S- zyw+=3gn*vs=8+^XX&xNDxV#|1My*f>x6duRdL~;^of9AypTdisrRj@FLT&VPr?+t# zEG(Al3n4SNjOI?^>@%1n_=qa&#s@ZZoq!@Xpwt7NnLa>AUW9&A72ikt)J(;y+r{F@ zo@U6hqF2Ud4KM11p-j>8RB;IhI7*RY9yUSDBbhbDkm*e!cKzh<*Gh0b`}TEq@KP4( zU?F3RGt@|AtR9}mD{JvA{p2*UWx0r8Dk2QtH6pB@=J(|n>Kv2q29_P9I>;(~8Hei) zid9{=yuqf@b*$^DCk1f9pH}4GzVxIIVbg0l#0(j@S`Qz$S+7k~J4m*MA=vskvbLGM zdH%b`eTFt%GL-q1#yd`P**iaJp)IkO&p!WiRvBlUh3eA3ngF@l4wELn9D~ZPG9%MZ zKWnn_#PysatcijxsiwE42Z#l4H~P4x;A3TVY!1jYnxv38l)ThrDPMyvIE7oU$7N;>j8Gd0B5m>fu8a+PdHH00uX zG$N;O}V6y;|bRw7S>9vK2NL>!E4<}S-fpR=r&|v3&c*Zs(fm$ISHg$uRz7T* zzu|c5YSr8`{ae_?zB9Ffd2pSqyG$(DR`=Hl71R2+N?C)HHMusm( zVOKm`0Dbe7=RqY*eX`|ZQ`4W-uMWIXn|9mmTCy0oQo=89ABEqv%{O8MYr=8ac=?J* zQU*kVCrY9&zwwe(hfUnUoN(@vHUOYNr5gxl=%WhLvWxMpj2=9k&qo3Vf5iB#Kc_en zjeJMUGmF8FNkL@LNkR?;h!>SMnqebMJ1mQw$%_iv(rwrGO_`SWy@qa<@43E$| z510ydgxtBgS?=$Hg!%fBAARgGJcCKnV|X6z9Bv<|2h4vn3hQudWBWf2L9j&h%?7EU z|E47m4Ry+TYoobHGnp^#rhCe4g2XAmwR@Ugbx`{g9pkUc{ew>jdpqU9CM|Q+e}(~2 zd+rhA5mlcL^`lEG*JCG{fH+#I!+&=UKWeBHV{PNKEB^cSxKqxhqhVJ83iMH(c!bm0 z{`3yGk@mmyHJroBM;6Mznt&J*vMA2wIvUG$VP$`(Wipk=T4_8NuQsIU*80k`uN(XO zD{G@^va+|a6}u2=sMQ_%3(<^+Hae9X`RpI;?3WwO1$74MS{=<+-@@oW9Z8s!<+tlW zAffj3-*!a^DE&#Gqw-*5lQu`;Ov9r#+7$tfn!gVB4+Mk?K&IFzXrDko>h^!=t|R&E zFeGNMC{SdrnAB7{FIdY@<<~*L)p-;XQi$@9Ax@-W|$mBmNHI#rB<}H}ld^!lHbESsUP4QaZXsahAoGu1tX6O*1 z3W;iAp5-#iUGKV0*H6^F$J{m75D^i0eT0xT0EE6XYFz;@qkq31O2Ei0Imv#7v~aGiYs(X3tyv6ZrB;7E0xm%S4}@;= zbQinU^}l3`^XVJT8rgw7w32Cu?Mw}0CE|wR=<`7XT0w${y%P-DL^N&S6p4mtw87kG>wM`ts|-b2ZTuiCu-^7u~&r+)Mr|JcIjt=kFp7;ie4)LXnoEm>HXM zP~dn<8)vCJDVxewkv+w?#yTYN$&6SGM*j<{`ofd_y`Zl0K2Bw?lHd$`FYu4F2plP_ zBOLX;^~J$q@$Ry6bM{9e+dhWS!?L0HgG3cmsT-{AipCp57O~2=e>c)YIE|LoED=%kQE1^DyAe=?Y zF2#(nKK&*Z?QY!YFno+toG64ZaZnD&a(&^=Ci~&=Ej_E_1xKAP3PW{&ChgUgou>Ir zRsiRA`A5!mr`H+M|}h*@88)bemlDN9kpUlc6eYGFqCzfs7A&LJTB5 z!DHtQ-d~oUijN=j{?3FV4M=6!oh#$_@E?93I=B{cHSr1J=FHZF` zckgD;Gv7h@)4Z^_dCI1|GqV33>^@`M)})#(Jpj|M6Ew_!ahC4qOB zJQ#}_6sA_CyhX+Di8krkS^ZkuV(jNCRx%&eG3JZo($!Je1AF{Ao6m1=#m`mM3vssu zPxixU4QMB^YX}vHC}IreV#v#QY7ecvbDa>Nu=!9ztd+~+BH2S#JC_>yC5lq@RF!-S z@}npA)cJ~$oP$M@cUQj_eL?6~WF}IsAD-m=98Pe+7Qw5H%R)#q*dFfU7P{twYP5|e znGQHYeGH))Y9$wEYNQkrLIHtP_34wfxt#Q{w%K__7po-7!f=!)~32<0p#! zDjc-o8T6J8^!g{m|5p8R zyH{jd$t8KDTpRz=s(Dg~9%dmoVu4hh)^o0N#~39R^tvcm20vb1llzi%!we?5}c zL0QZxOH7fI{Gt@CVK6XW=u_Oicu|e|%r-np!FXaF+D)ktd{%vtU}~D*o~Sz1wayM% zo(x=Gb@mEX2pB(VF9P0npoR5eh0F?(EaRdnj4?7;{Y7?xw&sd`^7Y);Z{cT-fBSsw_hnR; zY7rVnY!920Bk+M~WXUI|3z*f`^rzb5HiOgp1#g)?+M9_VVuL;~ek4fg*(VYpK!@ii z6~Ps{{36jry|gT@(|*syrr>m*h-J{7Nu?4iiwcQI{UjP>zF>$5!}Qr@%T!&#mIc<% zuqhGNe2@9N%SM4+L^gkoXIm*_)j4!e?|;mKpe&^22M>ivs!6nU$e7O(fMqyJP<8}5 zg=?_m7|;T=aA5dFniZ&dic|xw=Sp|wU*|XI^~N(NI=xxAT1yP?=-uF5WJVbwa_3o- zU;wUZVTORHfq21}%b0V{9_-wU@s(DF^ymT1u-qnnGWj|)8~N?~Vex%K<}zK;4(1=f z>FUBsntP&PoTu>%PJ)F-&3#4go;G$*rl`DNP7l#nU)d_~B> z!KRnVV#=M;noeI0JuraBnyCd%5GgPP&g)qn4(HGBD)p_FYLs;s7^n zz{A9rCzGN$sl*G2vi1C9vH9%eh}&e|>hNt42v&QH0n=77jlhZPnX{v0P5M5HfqMCf z%kt<6MN<$}ZQcC!n%HE7AlGW}nRoN^6n_by4sN{R-umt(!GIQAmqaDEzW73vR4_KZ zl^_cvO(i#Z2dH`vmI3#~7~ljT&YuwvAIsp6MqJ398T=t3B1ZiEiZOqrCCXYn=91*R zc>J1qc~b7s1)YB)o7YmhY=Vo>Lc8coAPfN#kjQgqn&5e$`4o_IL(_Y6#a?VzxOb4^ zRaIG>`2vM|syRl9$DTVZHtXb|w2ks9{XrxAgzu$$A5mLcu%8ewgB+~uZ{}bp5j4}&d`nGJqQoGndJj`+2YL z2XqDwp7rNTK%8Mps$&M36v--RDKy@)BkQpW?4F~($MKfbY)IJ28H1!IV`H1?y7Y1u zZoO=t%r9%LU0f$BvTm;yfuI(mK>INoSeC(Cgx`?L#1CbCkLS0gAn_*h42h*q8P52K z1g3X%Zq4NDUo!151(PoH6`J_xJLJmYuElQE-PD=bJc|6Q=qMf}CwD4*23sEoU7KPP z-#whor5E{GecxYefBFi)5c1oiyUj!RWhTu0%PwwWV`lnVV zMemu2&27>-@lf5=D!>ZP|GWYuH7~+OASRR&#?ChhPuggh#m>V2`Fy$G1b z-D+_WiCf(kqfckO2cC#JlEa)pHoswY(<;jGJX?d;A@_Xxm1IZ%@Z3?HC|HD;5fB># zKt$08c%aPR5b4sj$A-kaAO#CY?N`(SbLftvXgxXxpeT~o8!TFA1GTD8iP_Yg^yUKpwh`G ztBZ4^D0Cc&Bz;xJ#-5b}ZzMNh-%3-NL(5rn)leGZ`)57(WzT5uvD?uwk`pAz;$*XvF(e*<5}(d}G?3j1_WpKG{^8U(5$ zp|v`a8?)=0Ktfz}Rbd8(Ly(9^t;&9^b!9f@K9DUNT%4a5KF-$lJrUB)c*dR2n+$}y zXRY=!Odd}6LIUkXJ_y@n!=?p*-Ei1jF{AwY45>-`I2pqH9|FRCFDjbd@#7}!&YB~C z9X=DrXq39Lw-D1gfqiEtwZz7WO& zNm%zcOlk?sXZD%%4nkz4KA%vm?ecuo+e8R)6V$Xgt3&Co1OcxI3BeZ21Tu1jetEV` z25P25niSd^UT`c7y1{)Sz{xVRTeKCj(&Vwy52%9r&0PAkc@GIJ+fNY*l|U{uVhP7m z)~?VFPuW%}%tA51(d+qERTNi5%_OfNTuFWkL%#2=LjcjWRm{6SgaCR&!C=i+)>Mx`uPgK;B2(l=^jKBQ(J}yR=Bi+rRjZ> zr@R&`ZkeYmuyI~LPgeCI=kkLtAP&ajSvaVCJ~56CN~x~wtPy^|Wm`_)6?{lh^C_0w zPic&$fPp(R=5}X2LZUL*nK@-9x+EF-{-~$D2!652Y zV+e0D5-E z3dLCyMjpr*?J<>|y5sa+a0}I$*w7M^I~yAMA@*HfD+tg3V&LvxaTZUp5oD|I#)nOalN|Ige9Y<1v$TVQ1=4czwx=`&ep!U0KN?Gzch|HFg}KYW!lxzm z9ohnl;{7$}Ad#Y`xym}Y*hOWN7`vq#%s2-49^ydufjwgj3VgAyR2hc$K*N60k(Yk_LZ?U()p5jM=sJo3K>1$WmDmnXpxT7#oMh=V#(u1aEGhy0*ofLd)H zlPDIKFHRHxaU*%l-l>YoMV4K&W=-(955m`pZ9~bHOwdmLE)Sip*g|N+YYmWhn<-X| zO%MIqz+!qrbv0uEcvz1wdAp1Tdlm$7ZB~M6yR0bb0EIH=LxZ{2VHjcF-!EKalgX>%#jICxi-qn^ zSjj?0(Z7vFoAQE%CAaSM8s{1GC^2g({ZpiA5`Ij6XaabssLw>sa%ul|gn^_5YIUSF z$ttg431TH`RcC7~9sTu;dn&0K@mWjQgRnHJd|X(}-GI9!4)OkR|r zRSrogWYYWw>+HcNN1$U__>wQ!ANl0wvD|M4=g2}(#-Khsk!%A;l!MlG0Y|==@UNn| z_Eo869jh}*E~T4j!XWyOlmgfwUyxiBCVK2>D@JdxSq(J9Vh?GB?fNs*jV=_L9v0tO zmkMvRg8Jny=6710kn-4*+HRBt@tM4H<_G*xabZ*9AKS&d46$~}o57RW46JuAa2*&F z>vZ#Xn4OrR$hlw1F1*aP0A}nitMjV-Sw0u3uNnd}8Yt)6h#pAN}H`+bJRrcHMjh(%H_3t^{Z~uSn&i^Oa9T(b6;8YZ~L~)~R z78qNaM#7DDMfQ@(kjb zW5CyOOcNaT#gQ@E{w9wd&pH4AESyUhG7eL2W+Xf&+7Y9wNUR-Y=oe76zlYCy7g_>CuFO zTv}AMzFN+a5upl;oK2C${_#~rS$0Lpfl(xsnGt!9K0bJAe|$%WXso(w3b09y3m4cC z7iRG;C(j^59Iam@c=HXLS8cR4Nf0mj8xOB5pJ;&@zANrszdYZQ|E0_tJDJ^9cU!pYCFMTO#4&3m0f)Kdr$XuPUVr)ECFUYq3&{usYbU72ei@8?uAEm6?Zf^1E)In2 zsw(xkC+;&zAN~;+Mj4qJ>~b6yl&bR72X^RPuQ$&ul_3&S6C5Z*t5x_Mp26dggKGSO z14ilnrpB-hRkk7{L?ad)&_y^2ZpS56t7~QBYf@?w1@j)TCd&X#BuLr_SVpRmWbYy3 zNs50?JJ;!$l62OaxhNjaoX~UZh11O%6BbxA7UUEc&(rPo;H8FIQ1RkPU!}adkm%Z|HqkZ{m%CeSQQlziR4_U)d6f!` zm$y(CWO%k#nJlJ9Ekv8^h$pu#44T>zaVxN{Q-xgxoieB8wqZ2ydZWaX37v zqL7@e$LfDl!CP!3hD!`Z@C7aD z(qCPr)RX-_?_yrf`*nrIk~&k9Bx&McjYv_cvES&WWlB6{wKUw(k7wIw=QoL&AY)NL zwAjx7jYo&rhX5OF!9%A%m0G z3}+%xtS{)4=i&F6O1612TQeg?+JA{0O?f3exzl)hf0abB+D(Zm4EbA`kioD})Wmjk(3r|TEP0%Z#P(SlUu`iiWZZOAiFN3--`wZ1~+TrFsPkdHw(cD&aGg+O1HdWQ2lVS&Ho@IoMXY zCj60plGF>-!gLzCqAO*#%BU69^@>w;sWCVdYtQ-8qzjio-kbWXRY-YpzW@8}u!v>$9a$Tll*$qL8vdLs1c3!U+S6uwN|{)0u2uo{3s!)w zjBl`0bZB}ar>kj=S35gp#V$Kkbup;!tbJVkWSRA(NG65FWKb&ylrG+r5#o)R`iorK zhH9a@?m6rLMo4$pPKNcuxxiK;9U5C88OOtcrdcwy7*x}XscW1pvKAxN$(L@sC7F^` zItM(AE^>pL(2PDvKXnI$%B`FT=iYmxBaw{uv#RdJCn)E)!@g3LGJq&Jbo|Bp{ku#c zvN0G{j{nxfNu?3SDodu2mbcTNd3f{*Cq$5sHiit=1^QliYo3pVT2@8KYoWHV%0)PU z4Y@>&Wvjq=g!ry%xivW|9ht0s4K+acPZ=O8Ty@!Y`91tr!cO+&ofJ$cS?XioXHTO> z9EFp3;P675SDyY9ElHB%$FWu%)D+RRVV8K?BBQd%KN6lIhP<79iv`8S`W9kScI=$a zc)$H}hH2Rhx;r{Wp2Mk!W08_>L%<)W`BO1pNH`_tUA?c$mR!$Nnv#GJ^08M1I~^uo zbm@^Q8#b-e;-v_=%!0!;rRi~pn#q6YL5#3Ra`ex_Mz~g4(wVN|j&z2rr&}^mdP&4xViJbcjy8WU{wBWiiUF@QB9Yr? z@wTa8s@DBw^7VF<@oN3bdRnoc~cejfE z1m4%-$1?&**IS>VwR(u#WR5Hxl;I_?#v<~_OCC-r69{|*`ZV-$J)7Oxw}m=5rwear z1-rHR)3Ekr8jw${ez&z1-o6~}2W7t+>;q2Qb@e2n4FYax73Whxrr15*r6*uhkE&>W3)GvBclB>P6lATIi~I8%NE<4EKzO8HYT4 z8x7?RUP@iCtJoGVL|M*G|8**Zf|D!QSAcko%DZ^Ddu^#n^uZIq$aYOH&#&o-Inp|T zC8>Hc6<1i=^{jj60CCSd%^d0PQESL*?&>}Ys}nUJAP7OwE(c+@@{}&>viSPR@cU`P zz&80Ab23dy9T`CmN)TOyU(ef6lI@09{w`K-|0B)W1{!omvty}uSP_^Xcc! ze3zUWV8$HXqq7d4gzHKO^Xe4;W_v_a!XKECjE+i&I*MG>ZR6tyN*n~fCj&PATI^{R zT%h7LHpY`1#UD-Z1XW=^GLlSwYbOsV=1v#)PwFR=hs0BI+!h|q;)8vARE)6NTyn9p%xkvu}&cj)QV}#7Q=sod4;ko`K7A{NKCyfh1UZ^KlLM_LIE9mPZH_wuB=;v@b+ zsfg?iv=q|E9HPDYs`wdPOi~7f8Q@*+*g`fz$5`HEIlGG`OFgWz3pyzs%tD?cM5a2n zn&P6KoHb-3aTzPuEUJ4j@BqyF3#Bn+?8YRmzDS$xhU+io;^*yOi(D8OEjZ}C;I)`* zq|B1}rncFmu++^`ad||J1{`ho=>3Tdb^*vZW#yERgu%<7khiTjvhUL%WynLu9TR5smj@P>@mrE)VN;?wqxpg;m* z$U*P1?9M|?Y>7yu%BFksEr7{Q++oR*5?*p1;PTeq?9eIA^WgAJwBxmIuaE+;_|!Ww z*m}&%oS^@JcuHv(`O2yJ8G?rA8*5Cz{GoS$`hH%V{YW)huab5L*S$`AlAwp-diGf+ z8v33LKBfYD*TZw`L5G#ujd?JZ{#0M+P^G=sZuI0xm^-&FH%^t%wBogPT7`Iztl80$ zhGJ<~7nJNO;=4+QB;s%{EH~QeOC{Tr`k54lqOHOF8hR$wca9v?QK#KXF1*l54B7Iz5{}YxdSWj{_k-duJ z?zHr~xQNOwN`81a@;e!^&1 zV_hSj=&E|9U(ZQ|gr0K~zR64At~VCy1SKFo`vL!RSPF}l;)KR1)R~je7Y-i_o8dGR z=>xcqks4f%}&YaED36DU>uWt z@agb>_!v>;u^V*ZY^01ug@F(_b^>H6Q@Qyjh?by0WH#jF|!7s02uLbrmQOCNa z-OMWEoP?o-oqHLob4&q=4oMbv9wC9fWKByBdx%dD7&(j^fv%BdrFmQ=fJ@@CCGW`` zCm8HY27)ZcYA!LJAgeS$mhJW&_-wTPb8v$Z^MBp1(2gZcb#rc1-HC#Cu zY>*u|iTM|oUHnJu&iG#JgLcVDG9O40Dk<>J{LdZ~uepK8iB3o_+H|my4(GoGX>gDO zZ#t(yBq5F~_%jcNYaBO4Z7@s;XLZF^)4kJ0kkYOj&c(Kv z7}bbN$~3R}8rM@6sG9%tL22EB@?tu;picO45~cud9JESItwzZp`yic^mMN&jFC17H z_le|?IjVMfiR6-g_Vxj`*vkJKpl5sx=()4KUA`}m@jU-CJ9Ss;%wbzz=7k0NN34a!Y&VfjK#ND&Cvhv~6&fD>& ziSR~n_|)$MiOn%vle40+pFKQ>Zv8R5IBzLq;|)XrFui4fWUiGS~+{-?X^=IgP~;u0zR_ObZsX zPre=NTZRkEP&E$fC!2EQffo&b?)^r8bL_KmsYc4sGjL;f_POcS zKffb8rgSUDO9yWn>eb5M%NdfA$(j?rg;1D=cNZ!+^aq4$Seswc#R~;c$;%>|npQnY zcql4K1hjN`xlE+@0cxt)9O9v%Ae|GF-oJ$Q=?hTu-I(u;;&ZrAt*y;3Xpz{4)Vc)c z-1$;klJ#GELGlc&!b?=kv=~3<-Ed`6DBl8~NDoqB+_iA5VSvG{tXN(VwNUeF#jSNA z^$kypic|C-GCr2e;^!2i(=BNdf&zANr1Cz?)rYgq^xu75_o^>Xe~#ZGd)aHvIzEf=h6{u<;n0C^V5#^7Be_Y5&Z=-C6HQUw2?ZC zh9&7ocpYq6$+zz%Tg(W+#xf7WoiyeG1Kfn5sVrQMBP0bss>W?4TdY!e34oYkn z;4e_1stJy<_7K`Qnp2)4Pv2deg>@s_e+9zenNupUy+7BS9v+yiwk&s8*Txf7gvBEx zMh9vPxw4X!4V$=fLD_j^oaE;!=2V$Kr9R||RMVNF;Xy1l^Xqm}J*{4FgVvQ0NTpRt zQF0?u@k*4Vn|3MXn8@8CkRKH7{O)tX#;SwMl1%AdU5iUm zXCGCTAPc^nKv2x9?yVD#&_O}T>LBDs^=QZsiAO5rnXcw^k3?-+4A-v5mCrze6vr*jQYY%$N<0O+t@SAU-&`?7 z8%lPj|8+ct=?xH9)>OOPw#D<)K_iB<5g0$_VLuIy=q>apAWU237e-O}h-xUcJKwzi z(JP_uGRswounO%)O*I~@wnV}S;*?cZKWhPTLk1Nb@_X_lEUG zD;l{1R7)2TFM#vi<$FojMo>blTrCz8UHu<#&9Y5_b6B+{Dxql|4r2&XWZp%`O0^E$ z1p4T8ue~0iBBSNNo%%dWBi>g?@%I>~T1>Hh*M*2}~-FP6|ri^^6>QXn8debl% z;YZS}FLX<+va3C&^gT^KKjN#qNp<9CUO9s}Jb?yQBe|$c$`R8VX=}Y|i`9#yUVELP z;}g>4YoFu!bb+Hyly%KpcjxOA5`PjwYQ9OerSzNf9WCW@hLH8CVy?NnRF)6U0hSFf zaFG@_N!1>2pI_>&b;%RfR@`q!k5gpU;iQ_w(>REm_b)h67g`dt-0i%Nx+se)@NNti z^e(CQX7XpPi7`q<$<}~JR4qa;RGMW(-{5#LD$;cQkqyIPzeMS@B~6JK z8rW9fuwERrKlNl#ROx*QRxdyZX9-3gC9{N@WQgU?v*mK5878D;n*bVM1o8J5tLF;u z6`NL0?iFhSpm;`076A3iHnFqvzp*`v4-}+}Z@#MU0@*`sL*4?Hx@la7p_y4ZhzM2*E&D_#;EbiW?s4;csmAtj?jqia+mg{m%uNw>ur5sCs5L_OL_r(UE zshUqV5pUv?1$ryD*U^j57@_j?T?J@BSM>Is_Ra{O=(aO8;2udDJnAD^!8Dnuy?&9& z{%cz*t;;}lSrI4&H7H;a#res(pL3-l6}z^#`UiE6s_tMxA2xtH2-Zu&(i#o1JrT+&vGY{XMt=D*4sUCBLzBSdJf$QCI+`JmUp*JaLtRuP@P(~G!DB|wK_ zYO*5k`jKU6*CRXRpnuE1c?>BbP578HWOM$G2ws=WkFD$@D z^@bB2R^i==nLK7XO)!9@fw7P9H({@I(8x4z&JS^*u)wwA@>Nw3A=RZcg@gN7cn%(- z+N%KlM;LJ#=8@<@n2W2PV4Y!aUcLRBOnW!*V`{VxuGu+yJm?#iy--4S1-rc(P(X@| zXo63g?Bj#6ycXn+QWZ@-^>x>!fo5V2LZS8~F8TBg)L1wf zQ>g%tTYJjgN`>r+ z?3M_7P%gH)!CQZ!i#=Ag4poPB(c#omLQI6@G6fGI~ z6>=>{BX}NHzV!-4Q%^#@T3m3)BRyr4nw!oj+*-t$#~}_YenW*)ageDY9Yl$M@(urM zx_b_ST?QVB7SeStw%GML@;~MH95=2>-R@=FQT$u=oVT^kQA8AzcG=cg+twSHot&{-zS#M&kJLAb({VRe2%diraF z;s=lHPABawhzT7)bd*pNJ3j$Tn8o$Mt*AR_Y{!3{uD`p6Wfa`G)))z2wuX5!A6~P- z@22?y(l#y_7Mz_VIid<&jV4L-03MBj#+om*nOT*840UjlE6N?9DwPRtMj!Rx(MX0mS|(*rI;vyp)ekyR4T!dBuv@(d9kasv(KLf_31Fn=h1H$ zOJ0O>u#}ZOYGe}{o)#&}^ze3Tr!U2k zL;}Q0j)$|B_c?kLxpHF9`%+Pu{34 z6E_uP#AiZPByGSLPAW@^n;uSQ`P;>gjMxFKY>VY=8-=30BPNU?&I8C^z^U*vvj(>5 zx!KQ0if3}=EaBmLa_zBxx7_AU)F0b054q-a-|_ADq;N;!=3%PS<+-55EEM+g{9js7 zY3t^!&fLd{MEGw%dh)8u%MBjlJ#ZZN2uq}9{LDM6W#oDzmXx(IqON;SF zC?=;^Op({{8VYn8Z54qW3yTu#3pEao*mvuX!%1MOK0_62T7+Af_~DZ>dVQC53(sg zS>dcbv!$OasWE*lGp!^zyP@?d++{JgReo^P;)H)Dd;3nDUsdypBt$itd;Zn&bgUNy zR%REQ26bfB-@=f{UdaK&1HtL9(0h+7l@#(?WY3C8+fG2R(5uAlh39d)Etq!M7kS~< zaP^VnJd#CROHhU-xgG2u$?m6*<`;uF9!U31iz`0_A;IF>tyPjra6v>yL?(El{u&v; zN?J%3f3w~FzP_hd{!>4AE%AIJcNS?>OD2|?DG;qTgDg5;5lwEK&o#j;vSFXnmqD>I zmx+w0(6tCxA*ZB;Wlp^#Ux+u&r8eDr5n;~~x#UD-6(&1TkdGrz#l5+j+mKMn0v)HBdqbAZ1NHHrio8&dh*ZprP!yRhA(Nyq0N(h@nVEy zAek>V!}$ppnFa&b&oEiCD145#yUY$qN7wZoxxAQM zzmofKhR@#LwssPB%&~+iZw9b^_I-RX4HK^P>vThwn2W@i6mKbR`Ll>D#Q7X~f;-ycl1vj44q^x@0?*2+F~s2^H} zM0E%4&i)F_JdBvy{@4bTjhS%t;q9IJ18|wf*qhx?`%H0S3RTOeFX-{wa)0~3&TkUz zhD)1I=NMvQY|XFvS*io?yuGke?yoeTj5ql;1*_TKueGu*1GPSEZ6A;e)5NVyE02uQ zSpk)^a`5SG3rZzme9GgoS{}jWd0kt=t^g7u_sHn2t*@HlRhK&gxip9S46@qZ;{vR3 z7|ewt``-XtUMrt?BPeB?*m0Cj0%x>Pf^kQe<|WN^kZONop%m}Qu!w1+3xKdRsLDR$ z>@)<-U760L3~HDmp^@q_xRtxl*n;9bwFb(si-xA`wz|htmffws1DK9!>OnXLb36te z6lKA!D@V`GX~m<6yx_Pzq%)>eWp9u(&%XF`iBfAsyh^qUZs?NVS9k(YvDUW`! z3)jEj*(q(}!o=9iK>NYknK&G^-4*xQN2x5-K80T`vNo}li{Uh?JRu4{w*A_4U?FU~ zeAYsFLiK`=nTA6L@?!jKjfh@_IfcQM0@sq+$>Kt&WT!pB`;pdBxq8eYF!@wDJUf`| z0TBt;{}$gJL>~x;FoFRU znBvYmAX_q49^24aq*-SCN>_l67)KN2zN2apJV!Zp_UFl{*vN-f{5Z(SoywG$cn>$A zif1Lz6J7izIVxc8sUF%qi{NR0^ZVh|uzT~Nu>Z0q(%6gib@=h#=3>lpC8azI#<%YY zfRGI5C$CC;i(sCXi|ZUfK$LKz;fUBF(+Sh7_Ws29yJUS9oyk#5WHe&yFaWvFVdyrg z(U#^1SF$RgGP)3iYFOYk-7Tr-XXE?ecV7#NhEFE8^AVhJ#m%A-QNJi!r<-P+lNfXC@mhMo z(rj6nD>|DQws&7=<}mJGIk_EHt(?l*)hy1k#Q+5+$;ppjnaVYFT4;IOf|OA+S#t($ zr2U(z#-#*a3_udIC55A_LJ;~?#sC|cG$U8XPX&G4r(S&K@aDbGab_4EqV>q+QRzaM zZqJD#gSM=fF7j|$A2Zz*l?6Nkxn(ue_};ds;z-|+Mww{+c8gzOQ$mI*EUQ{@3dvJ=<+ne?wz9n17Jn?sGTB{GO)oi@gz>K>@$(aU`(EuKH{P=G{DBN~sqsqf z*!im|0$LeKbJzq@=|%nY^Iz2sE+#r#8=)2|8O>>-2;KFwA}iBMqkFv|1S4UDHpzXA zmDL5!a>7X9NHNuDe4d3US#z9;di3;J1FF}}w(NpEa>UM@0a8@$@B%L%Y9$m_u@V@2 zn(UOWXRsf9&V$Ekx5g}z&f)W8qRGKk0ejr{;M*L2#hCV>9u$G?pNb&X&At6@Cc~>m z3i?mi0dJ&&HT8F(zL!G8ue)auFH_%fw)^)YdHNAkE~t=SK>2`j^g&T?jN#JuHwE{t z^3Y3d%V4+~XoUsjS6LgYsWjPTDhO_V#aolsRARF2Oe!I@GUz|d&1uv`&Vnh`J6eSS z*1AJsn311NRNEyuh+R z&R`r^(ga8My{^EJsE|vwZk0TX89wot!zkHdjicIYj-2zr0kayEbv_cHClA)T^U&2n zyiYR_=C2xE?74r(H*_54*A%qJZY$iLM8z}MOZ=@zagA5G10LnQ+j|Q=TJYfJw`LEj z9znOQB`0pZmyI7dH!KTRepwv*5P<+r;L$kk%8&$= z8$aqc1B1#tOGuo082^lnhb{|!tS98{#_I=h3kT0Fw}F0w;whtC-QB{PmP-J07Gx71j6Lh)N z2_}U0ltm9y3BkMU?NT^I?X>sodaw>P^0+*tA}#O4{kqZ_jT*gPExzBw;59l$`R$O! zSd~+dBqwy*%H!XT0046RQlH07BQ2}9?38IqU(w-cKasa1S8zsqwQjWXi>xK%W!S%H#o@8{=%LO`(N(VWbMA>;9Tp=J1U@oO;6AXL{EpBEa_%a*uM zzM+=hR9dX8UouH{(V%J_VMxPn3=x&-E`Q)J=@`C8^s&|gwa`Z%X3$d|Nt`FOsOcKmR0j)`kK|w?nuV)SaageR@HGJXoYQhE6la9A1+B6MaVa$&Zx!oiLVxfN@$kRKt@zg+TRb6q)J%oO1L1wty9EJ2K>T}`Sy=+ zW|oJi1{VnHNp;5WT3e_uV<{STX}PN2d8~YWapUXB`IXPTI{GGGDf9Bn-IBJf^23M* z=-tMunf$y@q#Le@L?}043r`q4sP1y%MCKK+I?ei9r@x&>J+J|ibrb&%1Aai zMzm?HX2Sz<|-;<`!ofW#(4%_1kg8TTF_B| zFGR*vca6poB*~c~9IT|;jCU@1RF2iL&dcuy1pX&*2$~cy757k+ykV17fJqlWEU&%4 zX=a#IT48qi<1hVXST{ltdbD)U_pykVC&~n1=7lOws{8a_PKdhkw#{T_Cu#82!Du*D zjZ!k)X1VA@r`m|LIaAV`e&T7{l6QzJ?#UYXbXNaT-}yfRBuVZVf*uYDWgjVmR3Kba zR??qyPwfMJjNrQ4FfCqhIY)3QIp>+Cou?v9_%aU5vWkzVmv^_lfl!$o|D@fgJmz>_ zha}+f{-h|(eaMpGEGD3r+^v>I9gn+?nK=7KCPm34*>q=fjBAmMg{ zn2LUUNz_|-*-XbE!P2SD#zN%iZy|kkF90fs)ijg zp`8`&@(|UYOp3ezND@>ovlaJ;=++wsJ%P)2IZ~|juDv)7+}tMnRuy}Yu7H)MDp~(} z6PQk2n9?)}sSD$RGyL#`=t~i))Kv;6$${YWEjaOIsq<`}k8$`8IT9P8_ltu&;^%0~ zU-t!jjZUPzGho7S%zwR4ANjGi^N{8riz*B_gb>m_4rBPQPA1Xk0*_C^{P8F z`w@PGJC{XBQ=p8*R!`K)mrQ>^NN3q1V&KRHwXBhuXy6___2eDP@--#{{$XUYCb_ zxn4c56y${90cn6lJ=~rP4au`ER{y~eYLPqE?<8ubpSS%2*Rnc^gMN4zK7l}8Uyuc| z*VULbPfmhl$AJ4}P4k?Jd<(~gC|EoSN;)o-ERt5z-ni96>!KQUGQkbngGVG!1mpm- zBVUqfluf3&gI@BC>b0%}$05`9Ug2B5Kv;AId|$coIB$;;m#|Wa{26!k80bM&$lq1Q zO8J%Ka#1QpLr4(<8X#jMZN{ly8m$}Aqz-%XTTGZ%^uUs=&84ShebVoDK-8#2 zjd*m~iMiyJKQ=ov5<6-nnW#}AZU4O@9|NipoL5p}?qk+d{ljCbT?{9GqyBMM3Q(_SUB~yhwpfzrSPQ_ddCaI8;Regj()rsZ|FS~p9 zSvPKhHQlT^VQ6j*DqP?rNO)y?-27u(UIO}%LisK7$hm=p=M?WUBOIA>!$k487mBCM zY^F7%9D#+WQiZF>c(LHb;E%CsLbB#R!b2pYt{D;~@v$9pa~xkQ2SNe+l)`fv(*@?v z$YrmoY=9r=?f@85B4PLGFf5Pws*!tvEkYErVR{-3y zc^ctkCK)HmFu?bt)Oyk8s}pfIz3_;~&pUsBkiDhrdw zf_>`Bmr}+|y$!W*w_(d(Ev^4i!z9i)c*k8R&bNp{qN~Su!$bpyIh5r=R4@?rwVcd% zgnLn&AaWo6nbW)BHhZf~r5_vR->jddSH`oGlyThBP#WqOJzgv{AB>nydH7dJ-by*(nFo0I=25x>LPfq5Iynhf?o@@CDUI$uB1f4^c##iRg zjnka3-H;W_LJvHuIuEcU*}&m@Y#6{t~0u#N&s{b_UD6s`EMYc z=`jfB$*2F*SgAqsf0!%vzo2lkOZoo_!ueKz{RAfF;{I-1Z+F`uQ})OjUfd&C{RZ(& z`LR7HR~RYP?(emAyL|{yW`Fzbjy_uMeB1r9`*yEv-tT+R)F2rQ%u2KK>FY+ARJDJw z-F2EnWeS@X=!__4-be7v@%KUB{HaU4zqBGu&i@RS+1>kexZSL*>;li(BWv~E1Gf&g zzI@nEhm9dM+x1G>9s==!5#}q;U4PnXOkT5p;o$4m_6Im$4nBU{C3swE_P{s6sdKOc z*A0*8xmsV|0-4$R1O}-5)Ip*1VSoSsBU}zX1Q~F$$DAjUh*cf%r!E3S;auJ0m{71$ z@zoeF{Tv8KO<63hRTd*_$auY|Ep(=PY;M+p8|aBMa<^vF{5E!S9~-wZEnci}RCAnM zU@1%W1JukA2a%5N&HaSDOPk`sK}aZyQBLPS`il9ORqyT>4@Kk2v-rnPPsjqd!#~MT z!0fmBt*`2i_ff( zIA~4C9@70V{rn%=0?3~AO3gSPuf$lzFM}QuDTZpG+>~1w5(=GCPR{RjFo7Cc&X??+ zDgLxm|6Acm5I#FBjhNPLSup3+Xz_?gM_ABBON$xzW1G#q+j@G9c(x=B^sWh5A2ace z%BIC10$k&dp~P9IJC3}$!96*layPZPN^jx!yJO7Gf((e_n&r6wxyaKG)nPY2gPN;~ zC*ceBhIIdFtM?6b^qau-$wlLP@IWP2l*;LoF!jj;!m?8_og|i5NR3^z~Hoy{59+y>O-JT{-#m!I=%2ozn72 zpf_{%kI8s*KWkfDvfnQUkkJOCr-Khl z7aKmOqy$+THEb1&z4Ml`l^rwjB#UC_K5j2z?k*WfAJ%~Ec{Bpr7~9IZ%~SK>C5BRC1(9v>ov$-s`779D+ZJP`O!K(f^*%)Qr>4iYp&K(jXw*; zv-PNW{qG`FcYKaOW``RQ%2(-wU|kU-VhMkVZS%}wPXCaA7xI?4U@T&hCZ3_1h81Y7zc3lH`dM;|yJIL-Z$)3|q=;j#_L_2QAdm#(<@k%L*Sar{O2L(PC4hE@1kmcC!M=EMXL16U7eQmq#@Mjo|X(I(f;_<>5z*v z2tGB68KDE`AZ9nTN6?Xh$o!8?y{d~AYh;R26z?5(7)xVxL#_tEjG=JACDixnLnEEn z6LBcK4s2RIE{LSBqlHNvEp519&xmIXPhO+NaVwk zbn_^PTdL^K1u*obR8gBgXR*OydgU`~Qs=BRd?yt}aIZboRAbab6-Uv4#X;*h74QDm z(xmAgcP6KaWpF2_79U3mh>kf%)MeX0bGz@GFLu+=CGR~a{FL8*BPuO@7VU`fn#)@f z9|lBrNoz75)-x(B0SNKvt0n4lZ|p6-z^}>6lr|Ic zB}Tn)Nwl7E?U=%L<8XeNd34ffW?ew$7CXuoY0AnJkq8anx+{!F$1XX(2kaA#W@n3Y zSZ;Z(eJPvS&*VH>0}DFKa^bMtgD#n>X3tO{u071({AE(Em(m+b$fP-7kiI?y{x>Z} z^QiSmupbOzSWU*_TSNVX6%sXzc1j|Nfm5DPBJc8nXtr@#RYor!mQvK4TGWJxA}0=HsgB zlDF^l((|9+bd7bt#m#uLUI$AsDRbr;mp1-|I}B%~mz5@GK5HstC83iF(VO?Jgo5KQ ze5yWBNwCIl#nv^;0cf!!OM69fgj|fGP1p}xt?*cB09P_eXJOkzVJwh048xn|quGn! z00W7|9$4Rmlobmjb;|Y>A5%QN2v?vBIa?AUSf9%xC7ONQ~AS;`A=a#VUo?&6pJ@ zF&C_9^~`r8RVHySo6+zij-AeBGPE$=e55%#X?}u3;dJLkWzpmh>+q)s|o2q1sjdA{^~_{ z2#a&rO)^w3e*c)>|7EhAsvi_h7RnmXMY=53Y*)>dugWQuWk^{kf=qOJM{XOK8o%o0 zd`sszqWa3RM%AxXyNaLxT8o}znO#ygQ>5DBj1AfOqb?erYI@s6%NKfX3Pr?0BDv@I zabCB(bhdZ(XV?H_=Oi^=R1waWC);+sCbzu{+biyHBy1cO}n?EOK=E#dTrB9iQnkI+B~37%V@>jJpC z$^VhizY%ASHI_wGm_VO5bZvV{Rx?UW3UNWz2uU;NObH~X^YJEI&F_a_^ljsa8I^ws zs9MqYyMHI{dceq^-nKG(Z;wi+LLt6=Fs)^_8+N*C(iXa(7TJ&QePbC zLENE{ZQcz(YuX3D$KT518(*bFkuJXf5q?&xxawpH-39LDr+5|g?JOQxH7GP?=s+Pf zr?6J?3I{%?w5-kVPxB8uhr?C%5+8IR*|IrWB=@Xr;y=98>!iAb!$FWcUgVOCI2dwr6K|QOVV1 ziNN4ifEcbj!WsJ;WVwi1v_RBhmi6hP)q#>jBP1C#Q!+d|3cSWw2O^bmxrk5ebZm?^*I6)F03ed;B=v&7k5Gi@ScqHl- zaH(=mpM@o(d=5%vL?87`LM$C^Q~I(Ztcmni0O42Bs~c<1a9r$k^$ z1LZ|mef1ba?bKRtV&lF zQQY{Gd=L&JA8tpU52d^wK82SD0hR|F^pljHp3$j+>Ly=A>dPjDrrA>(coH74Oq~W( zFA9-jITEFm@dih%xg2tue1e^mCUJPpn`rJI!V=boD)))If2}WpHU{H6{4??#fRmS# zl;^j2?vxFL`Hb9Ub{=n7(m0y$-jCQ9D!n>Ja+23Py}%BMd1Z8{nO1Bb z$Zme5vAs@dU_J;6-W_FgQz7XV*$o14PX`-GEz|7kMQX#bz#XdY^=G6_W=K(+%E50o z|HTWwr(j2hi6k<6f#CT{Y1sHaNhiX}!?Fs5HB0<7NrfYcg?|Cr-5RURc;O>1!a*0e zXdruNx+knoXeJ{d56#{DlB%s!d213`rH5Em+P_8cLz0*CqO;8~De}@d%amEsGpsQI z1eAO{fwr_$Oj=*X+za!`DfHL_yA4wOe0Is;MTXgE37j;aigeV;UUWve@Wz?I1z!q; z4sO4=O`JnBkP=DjS=*=GYoa=dcRH}=VArwj=gnT!&9rPc(61-(P;E+(jX}SCr)=^MW0XX*n@+C|eXQULYrkkz(0d`!gR%R$= z_Ga;er6r?@sl*U@J#^%?5;9b{AKE}ApeK0l7+}@n#MRelPi9iQ8>LDyNQn@)}4*gnkEt-)sEzN0=E810oGn`Jy zdZau#gd~-xo(RYiFvB|bYMAlbD2v_26)_ijGM)7cS9MP#(h|TImoHP>d`Y@|P%;tQ zniM&p5qLy_L_bSWu4Gcdl~-^07+Fe}0HAftw$#G7xPJ|{nJ)`8GF3Z7C{!(2Vr%GW z05QE6;nf(h5uJvdRi(_934%2B`mKYD5_M|#svA^~&Z0p*7=eYrz@#B)zxfD3x5$R~ zE2ohE!9%7eyfmvqzitr1Q%{Jm)CoW>K?4f*D4BSH3v$tfL7pnBVI9u+Unz$jUpZ0pM86>+2VlwVUfNC)5cDyIMRp*6+b3t z{aHcfv^eE?ZJ#6tgiGE#&q6X130w{PE!DK6cd|6xAtR=xXw)!)ct+gLYf11E4x(Nq zMVL?#ZFxFJ{?CzWcl6xY*Uak zH{W=EE9_8UNQi9pifrUyAbN~+<|sKjAR{ZKQD$?jc1S$WiQfInVt;N2*U!wq z#bp3zr*kJKwba{SypV-EnG8xu^!zv6PIipjdC=}2eA#J_>2n@@+G~3LoIy4n#KBSb zwwwKAu<~W+0FIXbK0oSzV$sPjjs92sj_@igzrQ_r3p8hc<-M+1zBNc^x$;f;l@CVA zd}u@_v%;vV5Bn!b=15%>F_6M7Q1Q#w&LZA{@x~i|en<{^Oa=ouCqJlaJTB{_Zxg(eYq5v=Inp&e~fzcqrM2A$!A=bp3 zOs5Z#ee2za=S)MZ$sv@ZWCROA1OW6l!<)q^q_>~F>jX(W0#$Wu`*Uz%l4N$G*KY3P z=lJXVboH7NE*x$gx9uhRuFO%U>VNfL3@WjTl#eD_?&hhV^SN|~fIn)74e>ufRmG>8 z0J|DnB;xTBvj>DTTv`hCOZXs~^XCN|{b5D;rm6=)^#IG5Gm29fehigq>+a9x`qSZdk5;&b+6ir^83 zj_Ac8OCD@Rbs|?lslDpU;ax{bJTtkxVJvyK^;rULtssuCUn;S;O^|(^p`N!>7)7j8!ag0deW&aGZ8{QQL)PF^J+$3lu_H` zInfQKU`GONC&z6-^#~LIOB0|ve6OSC>=dt37M~Hy&kT1O8CT;>=CR}=2~b$<5y&5V z$7;>MP)Q07R0ohNQr{|y8^P3tMq)%#E)=|R&UzZ{oIRQ0z`1;+Xr@Z9uC4zEXeY{| zaxCmV;UJ!kc5JGp>V()%hw5i(2zMo{I9li8At_aMa9LX6_Huk?PwmOQnEEO}`DBXP zu?7l>qa3RXXaLb~-$Iq*07_e^^eYVuWT_fZVuM%z;bkVt4|bUv*P5CdmiN?H`bxHY z{Cjj0OzMkY`FE6q=4g|JXp8;*O^r_oV7Bmm*NzDrHmdo%xu0Aj6_^bYsYB~)EZWi(Vd*P6T zq!@};tcgymw9v>OXVJ_ho0^lSe$nS0B@6aM=0RNu@#)A~K~tqBPL&>})$`w2Z4_*y zA?tmDO`%?89(s->@?gD*UbB*zNOjDwhv!$pe2q`2k)A0#k`}ijjY5dfjELWQ|Gk#; zJJrfI)eF9Y<4!_HJDL~4kkI9YKN$-{x&)zpQ_db?P-J6*CUs@MzPnxh8=^(M5y?q4Qy_F3w-=+Q#6jTEbpDs8R{v1-9EhEo zzxQ=cKs1UXfqEGN2$;JBY)${-MF}*unVS#b@DvOj_m>c;X+e2LWB35IU%2q zVxKN{eiYFm9n>=vFs=k?Z2VsZe;!IMk2>G|)>noR2uht2d3k;7Y&}HIEd&Jr;5?fyiZZku6_LGnxN6?4^X7daW=`7K zokPtdJrm3VL=xqJT6kpJu-)E4#cr}FZ6~OWp?8FOB!;;#Yoq@HHVa<;hcBpJKM_ww zpT0G&$OIG~P{wq{ZKV8?BI>p3Yq&^v88wogy(V;=rZbuDN$44jcM75IKiLqLMdD!kyEdE9v01XF5ckvJ|{v_y;b&Q9Y=>lNXGk^Z?V>SCj-MnkQo$c zm%7!>Cw-L{$4)&$T#tM!uZBEKt8?Vw(YE|~UR)#vWvbe^&!dpkl0&e{<26x8u|NcX zsABO8mYq#L^?hTuVv!{p}$!Ca{Cf%A-C*rof^l z357Rxs$@%b? z+SE_2X*J|rj7&5)B!#1iO9A4*#h&FCU8Bm%gZbJm0l^YQ6owI%xA#xZPi7GVp35#% zc-2Sd^f@}aXUv5jPUE|B<-61}EJ+@|z!R&VYCYZt3>d2ui4Til5k-hEZg?;4K&Mvw znh$4jxuF{`$hI*|};Oo?KZ`tXOoivAsS~{_s|O zMEo)7v3gSc9{!ZHhVNp}C|EJDPzIYnjtV)C&2L5evJqsdPt1kM1h3V=kV7*zok?CRd_H{ng3W^RwuAVDJJYFDZok1tEwAabST* zNd}w-2ObmYrUGCxQoSolxC`-gg=hitW(r=B{WT>Kc{c7#Nx zX`!PyJunt@Tw$MY%uj@+=!=a~*(m&h-oB9M2@a$S(ykqhukD7Epi?Y}p_O8X~zqYI% zv$IJeaWL2w63+8|_rcQ8e*2`?OSooaC|9vZpg)CLZGN;qk784W=B2Vc8MJMtpiUWr z1eKn(@FbD-&6gT)W2lUZ;N@aZ`Z_r;!t0`VMgov*u=N5DOjShiHXrl)L$9{9G@xf$ z>}OGmWtpn{ZL~UengMf?LpKL)T?#YI>Ye0PxTniju109(&0|exx*jcrXOmK1S-qgo ze*CvzsdK<)&8UQB(=wHDAK0j@zRp^QbTrR_NQ5K=5g-$bFn>0M6;L7}Ce)~vOl}e6 zf{hkT4Q9M5z#wqztU7<(a@J)OG8s z)T;oS&G+VmTyn+zb7l!5J_h^8Pz?zw7ujhVbYiS8)C)E4gGlj`b^{qlHsn|xTR9|8 zRgjPboTQ0M=WuzKcV1qdZ-_8M;vludG3x4dks%>`+0a`9{mdqd;8RSMC{M>0KVkhk z&mme{eHh>=u6W75^~xA%{wxr}akqSk@DJ*!utuSk|6h!b-oXcUwiqku<|qMHQm zBg_u=!hc27d`$l}Sg844oY9MJxE_feku^WI>J%s#^gHLy0r99E8w+!+VG#Pj`z`CwjjkNT&gsLUdDJM=6u_ zLSE%NNFVVNe3QLk0kn~N=9K==e0VYbWjgwg!X;8vjzw!>=u+Y{R^N`f{No;;W^(S@ zJiI<#Y{yk#f@?U&oKQF^WksjrjX3q9!F^6UHSwW4m$3bifX_P;K8UW0(MU@yOxyVa zR+%k+LmmX80H{SMMx&(M!p%>|Ve0DhKNYSz&b0-YJd>;UbUt5Bi1eAw9BdxZuH`VN z@<3rtr|WcB9Y=ro)hw8vn&ZvjT4Ow1*2DR3# z8C`lBejr!U4NvkF;J20nhf-8KGd@d$$y6Cj(=Ey0CBTMUVO(e0lDHPSU8vHHPF^c^ zes07&sV^BqJ(McU*os{$ZIUXOX6pBBz`>_o0=nMzp zJbvcQ%^%b!Je_vS&cZ~j6}6lF89$c>5JA5{@=rAZO|m20s43K=C9)I65g z^);lL! zm{8(4q)ovdIOCJ7b$JGi2%`GXyqSVO;-oj59W;>(uodI&mg6uICFT_OmF*xKR zBFrsf(mDHh7Z|>po{EnTNiJfoS09B{*UD?%FDRqH_$@NjN;+CN)%r>lfD83`bYlL% zF`!Y6g9rSOlz95@t>Om)AZ;@Q{K@m^dP)7d2=5T^juf+4xuVIG>#hff5B&tVsXUR- zI&zw|iZx|1Z!_G{_NWnL>_vwFzVWWE|`YyhjQf8Kps@#tOFiD2^e$eEW`EL@kEIy3fYZ z&=D6=-=21tqm~}ul#(-DNv8A{O3tXh%I|&E&!X*>K+*mq2lzmKvL`O!o&NTkDm7zq9Dv1bB!I5=S14h6GuWPn{28wo}{^hK4aq$ z%e&7P$3EAVD<`({im~JtcPhOLF|#?yU+9ePFwPR+r;i{Rp@wkP9I^n>SAIyR3bE*q zNwxsyB$09cvLa2YPSp~#Oe0KAF^c$Uxs^Wn-EEeg45mov46LmR@U}o*rOp4;gSu%- zN7wZyZ`v}D%WW#|^HdB>4WK+BU+qiok^Vu6d0(nM5(m`?yH96-_o0&ybR$dd6AQRGi z^O^Js4jfOeqm%%2uA2XbsL78JH4pddFZ;)M8W`B#1FzYxk3lul>G;2ZYVz@=$x72g z3v+3Bu>EQ0f5y`M4+E*hBm?9H7|k&u&ZjtZ$uOFohN(;|`*aL5PAUw4`l4Ty+aFD7 zVW;-uft_l z_QRwt9)0(KrRfnqyL;PY?RUOzeOmd-v@g&$u;F}I`B?7khz`dCu|9nIy3&2wXMEPz zZGO15y^Hq23Xrtj8Wxq{rW|y!g>X3Q+jwO5C=JSJu52yB7#LS1JiSS3u)X&y{!F@m zqqVLp+%@b-r_5R_tjsZdM8lMA=5P~H0+dzh02|E-H!a9zK}g)O)yo(=`0en_ zn4QDWOGuKG1OUTtjD$Yp2_p4hzoL#j^;iQpNuHja-~@AsZ2z!ca)@^mIY#}&!Z3e0 z=&l2uecSc>hv<~?{LT;Z6nb7p_`o7YSwPlDg;Mie=Ci}`cjFviECQmZ8{Rq-&q6o- zSEr6|>vnbMB!)Fi#$#cV(dg9|=he`6xkA=6s0B#Fu^O=z$rB^A|MH z1@G1UJKxFyK4W>w@fYCs%?hpZ)C5d3h5S`@u#u|p!?lw)#nRni3c2bZf)@+b#5=D8 z;kFId>Q!#X?MRjoY?*Qpwv=X+q$7PaU)rO znk`yy@ZsbsP4r1rOy1p%%Q_h1Xf2fIhJuKM_3&r-MLBjBb*>hZYpf?bM8HcJM{R@( z|L(?7)^Cmdl!`LD`p0;>OicD!H(RDJ=VU#egrD**2e-r9v0AL4hM*adAU`XUiqcIA zp~%DO8yD9OMs_cV*4!GI(MXqMcuClD_R92#v#m*Q$aU0*dhhHirFr&}t-g+A-9y{N zNvd)UyZY~0kd@YT4A0=ZAI}P5dCX<9UaQl;9eqfGVbox&HCPh9MClzw4_!m>AbDt; zlS;ETjCCPL6$F5Ck6zNTOWE%H6yO8bXNk0cDo`1=+>a|ZB|3c+B3!u6-B_bHVahl0+nnp7t=h?x-#(AuyY0T9#`!?^8YBrHc4g$-Ih{?f~W z4oP}{7WOC4%+t?abbTE|PG6h9oXhd+@0d(q@e*ESy}g4j9zL1eoz1(ekpvQ{M}3UK z;LUMsxj93_n`j`~&8v1I>H4kj8?`t-Q! z{4kuWV>cNMA!}hWnnRkeYLMKRn^xg)KA8P}k6={sl#&KYA4`_2Mg_?3Z7@CR$-^V; z0U&|Bo4+qM*rC@Dok$ZhIEhM`M92jWWnOeB5Uolr5FU!r-qh=HDXT<1wMG8<2c^i> z5L^c1;Z~6}G5oPfO=jN&J)vqP@oCe@A0CN!(xoex+iyQ}LJDNNSx4iMHscZ4MD75? zoM1U)rxNGn>q0=5=aZN5Pvc-=0t`I7jjgG#`C^y%+(1|iZa^Y?>CDS36aXu=p)y(+$GBl3W$ z!+S!-D6oE(Ta?>E2j0^={zR_Ksw2gE@_YU?Suj(3~X>*rejPTklT|wAKG#C0r zg}jpLjJ1Kw;nlc*z8D7ib)$7wF3_>OY+U|ekp8@RpzP0l75uber#N-23Vd8mhwr!F zrAMut6ReabE!E?LTX?dJ5;yFy&!Cg2P~qvinnaXnhY<6`iEHhSTirx<(pA^m(cf1X zJN6K!wg_26g=F*$=KwnJIm^T5r5(#lfEmk9#w2gprx_a$mWEbb6cz=ayU;PCYmSqRdB`OlK*&eHWvl3&Uw5}8=y0k201uYc0Xq^ z)znd;HBl3p7(ScP!6iYX{I;a2+}*D2ntbp=gx|DXdNLBi5x)KYNUtmyiB3ybU3FKU z@qJV-7|$8ipL~I1!jA&a-}Rh&*$|%Ba~#Ql!E}HJ zy2~z07WPSDznPza1Saig@~3LMLNc@b;_rM9t*Pvq(mLpo>6c-?_ANJxFfadZUSKHe z=l8ut_n(qHRDcFNK}VzY;gzP(L?^C?Ec=f+hQryRhZ}WDb9gsw=M@`rs&sK71SgFBr`5cdI&woH4JJyx?S3r!`)Uc!WVmxkj3qPA^ znXxGh#iRB#toE+nQn-L8#SsR;7O;EbOESiX(*}42@zI^zbGr?gG@g_bUuLGeR1GI| z$KKQdiC0f)=wIwk@~=O|yMxrEQI%9vdP<<<21B51&DS5(cpiY&XN4Igu>-Ij(Kt;R zB(yy#?3dLm^?vpCRs0PuuOUowHrsNgdnHNEgP<4M$rHTeh=&8hG~jkJsLwQ(S%T9y zZ_~tzrB#b+P+70FqgTTPdGj51GM9e}q|KAeZDo|w*6}kPN}8rVGdm+i5%c=0aQ2G0cz{1B5S{a>{qf~Q zR=QDkoReqr)fU(Cx$#{JsHEtdH?q;37y#-c3z z#MLDvS2ahL1&(?>Td%sV7PGRwJ&S%-;QTpDCaEc=K@GSqpznlqclPW}{AAjQRa|%= zj6bLXsvY`e5e}*8k90}S-oD=EXvNx^5%P8-EMPx_y|-<0ku!5_<1t`Hcl7bRI*7j{ zQQiTGlF56KIwLfK1namG6t~R|Ybm#;PB)|KRaHM5sWrju8-9mrP!dW5+T&qIi_y)) zC`FVB5Lv}q&bp~=f`11+7HcQ3#MJ=q!woV1ltS>Q6aFUw=HMu17Z)3UKVS*VVyENY z?uDk|-gtJvfSUcg)U|qj9o2h=BTC(KN|D<|{~~9gs(&2U@X0rfBw@;)^|!6@H-o!o zuFHyyO*uU4HO9-vfdTQRK4?p1NUYTqY?eb>b0AOH*`@0G?ch;+Rdrg2_z2#I#7~7) z!@GiaRHd2T8}6*cD0ryVx>UYJPdxtXS)MH34OXMcG{J&at8uwZlNYo3F$s$t(R4^p zg1#%2Dq}~veOS#9sL8%H=aate%PYjHODJ8KH)6^C); zVzSgq7^p4W;NZ8ZUBqYAM3YjK;KYAV(nkCxK89nIc*XOi@$W>e*L+;`$^vJ0=Avm7 zGB2*p!=SNX5BI5F(`vvnTDs~1={GY**X0f68hZnpF0H1S^C|si)>ve5z9Wx`P(or= zmiObcp$25an}PKU(w>e4o*712V9O(!amslk6EmJ^7=*bQM#`YNK;F(|Jd#tL3CKH5 z11SuctSL|j2Uv1%K%*noS|sTw9gfk;w;P?Al60@X!Q7~#LB>HbW~~S;!s$e;G16QY zX94P+UH;e$nfD|74tdO`vaEu|?GZNFx5hNHEP>HYaav1&v7omC<(td^F*-N;4EU_n ztMNEPSPu>KX;ah+aHp47L($`^WK^iD%)oGoxI9i=XxO1;82vofXm9kPnc`R#SkxAz z!eMX-)qYWZJ*3i{<+qMV;oX|P+}2?anuLHYQM9C*fP(>2DaJXD?#$xhVn;Zm|5|F7 zeXE(+ZK|m}HS%)(HyN2qv#q7+1)W%j7m8VwiZYNvZf9I;A{S1X)=7C3b2P{=L_(6@ z+xVGY#)Q940BMjRp8s26J=%GGRY?NDbCrb-d-nUc&#Do~nAZk_BrcRNewmO~IB>i| zUK_QXCex$nZHxlVbk5?8C>>lu*Z*xRqUu_ z(DWHMEh91q>#K(|n#9FAQXl9@4@EBfdi7)_?4s0D7n5lCfYlVr95ku6BvmFpxCL7A z9+ob&=l)og$`@3kW2HkY)31PKB11!^0e8y7ue?YoY}k}hlX8_5&Ci`5Y#zrh4Jq<+ z38o)foBqi;Kyqe9KRlW}SJW`d?`kb~#bqew>|U3eJJA3i`ijvxraT`xec%fsmJj*B?YqnJyJ+nfyEuqk1o^DeU@7pp%az7pKTOQE-P?v zR`yp6%3g(q~2;dar)SZJBEy*(Ly0 zIe0HN*@d!Vx=C`RZDxh-nKU*eK|!hkz~M<@)}#vM&5Qvms70Q)-?RFdKTDhE(c313 z6&Wd+egxE523B$~ir?nAl?){=WC&=t>J9r>Q}E$<`lK47?5I*H4+>364qe_$qW!nB zRUwKW!%j25XWB2qZO5WGGR|xkPyeiz({Honc8-eXTg~V;-`h#gMa`O}!epm0 zuvxG$__J1BL^Y63&gZW7H8+(r^8QeOY6pKRgeWba9<4cuA}q}qU~N-vJxQMqh0UM2 z1dbpKWL#%4HiFI;;MVNkn`r*aIxVScCPTNxj)z7kvYAE$vR&0&CBpVrG+;Ha&2zCA zL}Z+8+tO{-u63Q2mU!nf zqh7)u9jRrqIhw!1A*CNjaZq{p-2A#&@13qtxl{dJlds`+?QpAu4jIMOKY=AEmVrvP zg3dbN6zmvPK?^J<^JjvsbKp33E?~u<_+DG$)KTIhC2O>^NS+>v|Dzdy^Ocs7Ok~Rj z$=ZNY80hxvS@rsHxU78Svfj|%YT&LGMO``iF{^hDA&NFe;XwLlcs>aKgx!=IpNwmF z@rq|^L?kzwUEmZPHq(o*jO-f)MTzT1pS@+&{(UcOF!_gc$E>y(M@g98^g4Eg45xmj z5L9osz;8NR{YNNHKRJft+%LB3Vxv6<3_#(!@#Ku*i3|>6bJhsw|Cd~zh4Hhvaz$k8b;ei4B z?8CPM+s%iK1_B#?yag!dU#OqUNwIzKacTGC_o9CKaUBrO_EIky{c9A~2bgenG>j|W zKK!@(J{)}(uqRB;`u4GD04#khc&LwsA0cr3#6exhbGj}s?QQFp^Z&7%CYsm9t$|c6 z6?dL3J^i-MdctFoEbR)|~ z2iNp3vSkbgEN}Q z6-Qc)kZ5`zhSM*2;aFAS8%pIy?Lwr=!`P>f1}o8gVov{N2*(?F_KJt)W6h(wa=t>R z(^H$03X1#tNAHY1QLj|; zGqi}&Jn-@j?hMZ70?)#mVrZ5|_`18Yu`ncF2=n91>`9P`i ziLmIjhT1{?xEdD);#}J0s_q7=y#p!9=6am$-_VnGG&FkEI22d4c!V`Iwb0w=Ysep8 zjzx*i3^ze};Coc4Z6gBaQky)eTpNbY-zU3ii_J&n!sP{h=QeWmPgw(J!_TL}>sNqp zJPdohx$fs^v)AiIN->ox7rIrpkls`5jYvT%`nsQXulDWm#NNtXowO>!W+{I5e4JOe zoTXFZu3KHl@wD-gGu2a7z@%ZLti#ckT6XkEKbnW4y0hD!#R8|~ja2iiC))IOCF~FT>$E@X1)w-A9%XzoK^%~BdOfUL*M;X) z(kRMPjceoT#>6asU1dQG$wCDYVuby}%4#x%aW|RT6)e()A$rgsR$d!Cybhg4(t(s3 zYuV=5d;(VOo{b{+6SVj^tk5zw>APHeh2W4azI;HTXc=4+iv^&A7)D$h{U_0+O)i^2 zhd!M!aWOg-6zSS9=Uictd?!_m5Ewm!f^Mivd|s~M7coLN?0l-xXG)hjph+QdC*N?E z(Ue8CcO_goH40CMPs~?YeMX?y(NJD)eMTZNOe;p!G~!*Xt84G3$)PH-Vi7JU-mimC z_yl%;I|BCe;nIGA@N~B4#M?q#XsEFAj9%kw-|occ7;l@sApV zAjb`11>r+k(H;6Rcy-&P{)~jknJI^AKsiSs+&SRr8FxBX;dB`uY2{4t&o@#pKUgNB zJtq;YLTj>eNfIbQkwsS}lXO#4k`-7a{h!wI)I6udg{mX-fTa0~+=RYOh3~^xBHECW zneV=z>5NUgfJjozA%<7&0`mzNwn0w7ua6r?%sDCSmQ$%HjLk~FUI?E^njZu)!WQUl zk-E67W$%^dZb_7R8n$6&u=hFMT@9jyQjUV1@zdj)=A#XZ$*H3uFv$siv#?8ra$2<` zFNn)bd0OVbAwYf~sHOKNuq3eVptEQHD582|ns-SS}Ny(<>2bLkf9n*v#op=`LK_phUNDF^4Gg{Wj56LB@ys`_a|m;d7Y67JMf zYPY0jh_@-|NM#J#{BUp~Mz>>i{K+X!b!I$8DqbEm*R$}OkKt&AVEfs7ZJz9~EH8Hy zh<|y~`&*}}PWMmZ%C@&4H`*P$+BPPNy3}T^B$uM2WOB}BakkYN0|&l8f{2^5y&g#8 zAn{0BRcRn)hcpA{%Jgtq{Sa5u{P(a`7-l1-J=QNs7Lfjz4IRw6iHqlE+ZEh+^dN>* zQjVc)^j6ijR!MJ@&BYs&QOFujvO!`=`{my$Iu=tMe$jEzoW6GQLb=l0KSIV7@{)P8 zGa?8nG#|l@a+6tLKZ1LQkwr2fZE`rxU{5Y8 z)sV?WQBg;C$_9@R0=YL;v&I(GsUMH^;KkTx5yY5DxoV`qGmTHw>B@A3sw?ll$YmVw zc70w2(N>od@hy^Q-_wy&=$^ASiO1e(l{6e$i4}!|M<>`v;}YahH2IEv9>tRu(81p! zmHQx;1vC?~M#+(i@>y-?;zX^rhZ7k)j~o%yxUBDHpQbvUa#;2Lt87N2C(v_c6o2$q z9Vyo{RU0vfuSlf;`on_;y?|2_(yanzqcCu?b(OZ=EM~>)J}cTzI?tgR@@;=J852nQ zZcxM*7#Yb~)~tk?AQJ4IY>7`qfLNpXkz_eoE)+3G->D2^G~b>&KmfEB1%4zY5}N~* z`Lh~0qqtDccJ#twY6%|fkvD>;#Ih;N8fH3{FJu)2hn_yadm}zxACFskPCpVwIu&H_ zX{Ay&yAGpU90H!j5Zx@frKyb`SRu&I9DSte;t9w|A3WZZP+~uq3($)%Z?V&gm`An| zKCfw_YGxgDw@#{ggpyK-6I_!|o}HpwORgI-&*biWnnHbSl(Ucle$otq)HqKf{j3}{ zh=oZpVx6E7oxP7o|6kU$!7$PlPodo)IEs&`*!CkRbdvwibm{B|DO0Uj0s+>o$0(w1 zN97eQMB1$&rSLgn9T2e8WmJu>Ryvv^xy;;{;0q=FOBch#2K1{X;gzIHub8#J%fG5_ zsNwmV#{`_zh&jm|-~@rYN!K%0Pkvah8YA z;aaoQw8m6q?nm*=2Eh12iiy%b5piDimkUJLr(injHG~pI2nDgVykB4#_<&zlW57mw zOADW|0Ufv`#ZDJ|3dG4cUCP&Q>slBwa)5mwv+EpOQoV$4oX$b`v2m}`0$eB%W#nIq z;1A9hFMscBJ&sR<3kiNLA4`I2x^#m`bLOkQui2=e@2xsx0}PPoo^pK_rOj&Wdg zEr&PZxW)jJiftVp-`i5N2Korj(qHGe6t+{R-5iW&7tk#!-q(ZMGcju65rmpy6*Qs! zf9c93x#aM#r1T%EvAeIM8X&YYB*17_wcz3-6MqQKg9qaV)yeU}A$YJ?S=Cp3@)WEI z{b-7MfG=dZF(#aJ&TUYHIh{Eqe^HEA!V*!N<2$S3rFFo3hYyg4WO^-vlR3|uohQ0^G#_gUZL9&>l4o^*L~dUN?sZe0p2EOpri&Z7%5fq z+`TtAvZn3F2^6J>@Ff+=WlN5hdaOVto&J&nGR>81u2UiyE{pCv4UdH*k@-R|`9;7+ zc8Y)eRExkp+=Ac3}bcc({zPt4}nw>c$6F-%vYcs6K;{}BGxT*%%DJaNzT4W z7uHhsXscCcvt4O9$ja?-tm*Ad=E>Fgp*E<3V^}4xjirj~dWXYL+6*{20ZKW#GL=&U z2+uxYb!{JIVX*u{J|-u0zIe>PoxIVPfS?688CrTBc)RQJAhkHvgzaBgQrJmQ>v&>#86E)aRs(>XB95^d-?V>gFlo-k^S8{4br&gg=|)&sKZT`F4QZ^8*ws#p;x8ZDaS71Z z_ZuP*H0i#?D?qopcP0Rthi2!SEIZ%rXUF4p!zrAUS|B>4y)^Lt`OONL!{b73fw4}g9d?WMq zsbO9|g0e#O`)B-nO&C{8u$(1;o(xu9XT&rL&k1Ws=o)Nhry-4-v(Pi4wJfJ1ETI@Y zd!^MzW7`(f&%i;55Qz8^-wxGChy-VSlB(nPW~-L{1OIEp26Uwe?`Ob+i_u;6hNI9A1p8t-DnJOb;9( z;ZIcFtF%M-re|ulMo;YyR2OA&E)}fJ2hIU4&6nS!M%rQ1{5e~?1*%D=-1sqEW-zw< zpE?WwjB}@2w>WNk>3J#*X1h@?ZE#@*+o8^>^2?1n0E!8WzLJPWSu5kw!nLWklARX8 zopx5t2p~!*0t~LH#yz~iw?==??y>6V7rIw8-$tXA zv+SbGw{T=C)cd?REn$eZ!%ojIs=~ClWMM%bq#_JQZN@)d=rr|zbpu?YGNV+dgG;Z- zCpWAVXCK6;bAVs+TKZ*N9ODO?7`G)7 z_>2B(7JD0>*ZLjZS#(MfSU-Ms$SJDP9ZIJ<(&udMlvMJ3a>U__Yt`!_r5!bLC<(Jr zl_Cs)VlBe7hgAingn40?EQ2aONZHKCpIc1_E zlp}F2SHJ?LB1Ms|g)fHS(|U1rzH8TxFl)Z{BwofnT>L}{5h6k_Qx7{L$b?mdq*j($ zaYNSoOl?MBtgN^hVi!g`_R*oVKgKodb0j;finVBy+XhWa2*XS`3X>=Xw@BHnJsAF0mM2GoN2#J#jlfIq=&Poi zrWm9=3u0k{C6dNejWfBF^2S;X8N_^0q|rOw3A)@)4smnc9Fh)Fvv|YropoB=0C(7f zI3ujpJzr;As#A&1mXxxY^y15BBc)_ayV~Cu`p^_#5bJ<@#W?H6?gnYvSB&#b_b>bv z7d;+$(k9k>bE-)CaA6lmI*qu*JHo&Jz^j)NDu~IOfnshJ8QlXnEQgm=vG$sH#=*Q7 z3s+NB!fxb7>a49jFILHy8Yq!fv5jK?(lC)s!FrsRqY8EP4&#*-K?z6W;-e-Hpcv0& zILqJT+Beazw-tV)bmj@i($>A>qVleEcrRw_lmOr;Atk)IDnLU_D8cyI@(QOx%j>$i ziu!!YDplw!VuyZ{ti0u?JV!bduk|S8s)Ja&$qS40h8-)@JN9xzej>>iNq1nRGw5DN z^|p2mcgu$z%IZpV>k8h#mO2~Au1v$yw`bMjYGsa^z|H&AI&zUf6}L7 z>lqT>+^HG~;AC`!rF907i6=M*5E=8}0(5H`9p_8fOt%=6{|PzNJ4OyY-risu?m@+L zsLM;BR^ZTiw!OdCk@yU<$?*RddT4TW{C_2QXld_z)ggpdH;P@rPN~?60Nxx!gu*ni zosDJ-;L>)x^r7K%toeuLBP>4qjPTlMmJD?Ylf1SzcANj_fBr8`+uGhVMriY({%}w* zxUAYWl1XE~`0h3^qX+x`s0Mu*jP)N_gvxD@Rt#xcueO`5%isNd>`GCtZvf!JO8@t; zo>~^We5@pH7_f`CYJ9DeE=VgL3;I);qx{y_4(tCJ&jgXR&9#UU4$|kI86z6821n?% z6rysqtKRc%Fe3PQ&)RbDq=3_;H=t8zt~}zui%!C}ZbX;GP9=TiE}kaM>rc`6an7>B zDSTY_7Jt#*CGA)y>k)~F23zb{X&ALeUjT|C;g|x))<9E^J;%sCXV(8oGG4!-4MPQy z4k66uBH%ciCd&Fo!JG(+E9vaLn4ta5|x*mGpoz z`2c!A`GbD=(bZX0(@c_(-LOU?K%g{3S27BYswUoOX9H`E&$Jfcp`qx+-s4vKMrF{# z*(ATvV_@h2B?v6tp9yhyylT;~%VN#W1{dRtr*{K9N6HLS;pM>@v}Kt5t~{9Zs2o_` zN&cq^K3q-u@FC_I+R-UPV`L6O3Y(`-SEFS3)fA5L`iXi2vw_=_BsHp~97Bv-SVs7; zw^cV%Y#7L0w8iS#HLBBdakuVv;F!VBzr*^~)vdUQV(xR+Uxv46n45$(vMC+sDrWZL zO*AUjdAV`^8ICqva2J5mhagbziB^UjiI$@u_CGXMLL#R{=}Ky(XGN#2fD4Hh$0#xf zbnP&x?+(E(-r_hDMbUfd*I`+-?DK(|7)aPE>KI)Ug^gAr%MA4{ujDv5vcnjbW6TtS zT(I$lrEP5oWL@xdIDAJhY z1m2xUz=L=n;IkEYhOtSv#QD5~rgBv1m%>pa05IOU8f@12mp!#9IcqxTkjwi)QMG1o zA?C2Jn@um=zc8Cll@w7rQCXf4+}zNvs(A?4*twldzHVpP#UebkuM#_hIP#w=LGA~&cka z>ip2ht;#4bkv;p%ZCQe{=?>+=xqHqoP)*66Y5nD^#(uD>9eoO2Ez8;kQoQPWwU?hN z#S3J_l2$h#&+EsJg_l7bnev9)SkaLpC-)1kbTL8B8WFQBQrg+uQ$R2wVG5tKQcT0{ z73RcBNbe~Pm6yL*OcvpoU4xfU=RXzR`)4KIdf9$<*d0|Bj@?Y7%Z+}U-C31}%XgON z$zIr+MfGP;5lT1lG;oTTRH=N=+PeQKyeT?O3&j~=gbb=qyB^xb{>1>JAsr(z;CHjN z!2?VRBMhMl3))1wk=TJ6=Me6#uB|9dzMR+|!55e3<@JeWPMBY21J1ZFZAGX-dUhu- zp{lc)3LT-4mn8jdwJ6OP#G+fQ#VD`t-#CF5*Q54XkZ@R1XcDBMqs=a#zn-&M!^1am zD@Ur!m2>iV?l)>@*BVE+Yb*$-x%<@ns5gmTrRH1`Wh=^Baf0eDhzG8`3jaD*>J=s* zT9|{7yg1b;@bzc3VVZ0}^w_7S$^`C?w-*;+o+-a}Z8*6ljcg_5p&>m1%ajb|6t zEhad*=xP!#1prBw<5u{FDfk>1@)Xi4wgRfi6)Gh){Rh;b_*T;Y+Bqk4MY+A|K{Q zHoJgRnEJA+DCNEPzre9-?MzM^juuci8*x{FJd}^e@8^$BujHqET*=Q^6-@S2Vup-Q zUdghg@J%i}2b#kKgmbou^hPdYR1b6c5+noRRKH6y4*Gyl!FdxN-)2?m+Ek@DwS6g@ zeBwh~(U-+?)8x1kMwH;`;%h{Z6B(L0>J)5^^M z0bs9d)jwEm@pqZpM*47gS$hIol2*Q(Vv5!x8=UloJ?U{h0$&KW@-q)7al;5g#D%h< zRgcL(tk4!G8+;0gS4uCqVs2=yCK~$~DL}j%5vWfHee9uN15P@sv@Qs*vJ2^A8W!iQ zFd!9!EqOFeERBA4fmsqtHL{_H`y}O!QY;As3vhwRB0cKHLRhpfDsx&skrS=;D|#pw z_e3U>GjYG+#ICc`dXVC!{1qi{WN{2+j%-~n)2MW+3bb@ahTlCsPHh6u!hxh-YHb!CLGJDvs@E@A2-eiM{0#8BgF^rGq0I($t^bx?mXR81fDZ{*u9=(I12=FWA1Ba7ysJA40N-6zCol$$s@e8VXe zG!iNAui6sO=%P|RHqFWNx3W>YcOiZD@pee+hce+$r@IBj#|49TQ8JEx4xb|gqz*#} z2q}jfL)B4?OZ92<0xJTuWrz=K62sw908rYC zl}%;KJ$$l1VYx5lYti%Y()rs1C#ewpEIPn-yYX|ecwMMe6EJr^+sKyMP*0O5SJA#3 zW*L+O2e17dU+|eC^g-`?? zFV{|6mY)2(0ax)6H0o?QZgY=r6n_cq!18upeO;Y>+ljdd!ixSI9Ohu?c~oUD<*W*y zEy?QjK%{F+_dR(6%%Fc0*|s=2%aQ?+x=33x*N(B(48>tfc}hr#uJ`)EtSS|e4DmTJ zV!d{DRc^+HG86~#ba|X;Z}>+DH|Uu6*WJJ``|mQ00nvk1y>Ru9X!l)P&O zLiCe}DVq5@hg;>MPS3yB*gq~lf1(a}H(*sO`N~b9&gi@Bka<4Z(g7TC-bm4HR^90y zM4j$vN03N?!DevR5TmXKzmm6!17Zv9puUv$OAHx`L5c#W)1`x|yfBaSZ}o3~3-Qq4u~w6)NVDegOn>K}4wYbO)q2F`U8vEy zBdAg~TX8hml5BsTLVzUfNR=8i1N{54YTbNj5xTNf;5XY4Khd&~-zW9`GrXH?tP@qq zvE1r?7KlA5XX(Qd@qGCva z_iz}%nW%WFr8c;2cn4i6G>_JkXNKffPV1X*pJ!BkPADaLK4X0(;pIM3i5d!k$a}%W z2PBZzx%>?@2`*o`pkNw?Y+&M9X|eWmBv^WG)C^rfx~kS{s}TH(nqDzPfJja|+Z(8L zeph-dhOpi<>ArcAx=m$Vy-7NA5|J2yVejy62Ur?;AZ-$7c{Rn zv4_{=bB>>n2!+Q>^u(T8KfIy2>%Br`fqH^!@P)Obn8$!fRDz6XJPf6vOm+TE2hBCG zi!_ws`wFG$DCKFKxB|*0?F2mJ}!r>w!rbm(8xPu&J_u?wzd+A{+gHOn%TUJGU>H24j;OZ|1%m&6e(FX7^ zMgK3{JpGBh=PHC849$_hv>HS}*_*s%){Y!bwx*3wK}17##0fMN9EEAa%LJ(Q6M_rr zRWk*Re4KX?2}AEaF4@$gI>ZW;dm02;3HsL#L|H3kQ}hEA2@&x*)5a%{XWPcCNr>ef z#;6WoC&@-M1cV|degqaGEmcI&8;PW{wKIVbq=ZNuZchDtBG!;*Ofo!rg!4nU!E)S- z`nw;-luGIB=DX8sD#5D`!oybi5Y>5i{)(0Sl8ENP4G@OuXnG;MW~14sU%z7-cwGm% z+}@_EzNV+dhek2_zYv!w{D%6REK(iXDbb@H$@xbyC)@+N3Q8 zs`aTaYEzjcYYq7zQbUrU^e}#OTz{8vE6OBWKvus97*KZj-fisYctyV*Z%V_l@~v5o zbq^^uo}VE5PXWa!vFIECVXyn^U5sAfoa~H*(W-|+Pm)zY#c=}rTC^H_@#7iHaq zu-+Xeh0RrYIO1`XS}R5?r(ewv<)Z*p39?RhEU9Lk04annKWDUIPtCC=nAgHqE8_8? z)=El<@t@evWn~n|ODZ}UnP?;&G|i-Fr3%>1Mj36nhAQ%Mw9|>Mkg7X_XvWd}ppUn1 z7B3wFL~fC`FVBQ)>xeEKoT@fExgQmddKU4F!v1OX`uMuCo+a%`d{eDb82R~GNhcIb zcki9Ryfoq3A-*Ca#jQ!u>zF9E!j@K%!2NseiaQuOgqM=trFN z*!^8i^e-qAYaN)m00MS)db%X!a50W-R+1+pZuIOUBb_ELJ5V+Zh8SbEq}o+IwD$Y) zIat?Hl{Ytgc^|HSk?1IvDSFpuOw{6y*`M;+r7r8uA<-g*TF&p&^DFWB1TG!h?XuYB zL7Ho2qe{(wl)I2lRvt+AT?mgRMAu{^U9^LcQ@ReI^lWBtnRel4eT>e@VJwX43d1~8I9b!sQIf%)LCkG0CsZdy>I@S(eaI(5^v$#d#S#ry9LWG^v zZOVL)SE*n3Vn*-7tDGb!E`c;vA`4RA3ahu6VUFBGb zi&h?pS6HhwyrIQ7{TrPe`;3dE_YY-ZPk*xoeJDnK`GqyDOnmNqFkAC<`ay@EfemeS zer1mgeOa7~UUTTb=PEL!$>=G%Ol{n}nvWFwdcg7;B@J0*i+t&5Vw+KcIQZz>RK!&F z)U&Br78Pu(n^&eKeHM#oSkJkReOiB|ROuD%lfvP=2{NWSd^*A8@qc6&MER^pjDeNp z>O^(y1?li+&dVqhFcB93Nl?*QH0lLu zM$-fG9c7wd7b@)w5^O+EHO+lk7?woxs;aI(Qykljva?}2MwZT2XFtP|qgm)F_=V(1 zn~&8*RfIJ2e}ee*k0CzKnhnrB+y5oL2gYfKG@n9|IUBn2l}rDb@hf<`~TMh zeX3%&3G_PEE~)K7eR-5z84QKQ0cBHtXB9;WB#ch4cV*D;ejzfR{r%>nfIyxzR_uMh zvc1JrvW+Vn&4;}uP&)hDn*kUkB#*g{;QzVY0fNF5vo8mQP&-R6*7-QY)Rx}Bd9uE{ zy|mAF_QK`MVx!oqL~fK)sGjU!eXyUbpAh^oLhK4WNIN_2Zn4=^mzTB=c9%Ar&21=` z+U;V~^hlSN%7e|FD_nCO>YuIsrM-{a)#m^{5|t1PPGFf}8G>NRU1nPcn`P2$u?+iS zRC>@JlNo85b|Drj4{FgVZSRW&Do$&Ib7>pmB@j_UF70d9n`O}COV#$lMlBvBR2bgY ze@Q*``QYKoOpQEqCBw2XR1fRp=+q1;lXeLOfZ?Ht+)~^B0-uR2LOoVW&~?o;V$s=suKj&GQUtd4Zmk}S@ob{&Cw^_mKJ^qe5W3iuB)WNo+kyg)F>)cT zE8>LR=%WjpUf}%V3owgFIb+O05q*kq(dW{pgoM(lj3JWd2=?Jt@EW?7p)z@&%cYh< zAS!|o0Ee*yf}rU#81V1_F3iz>FHtJe;l)VG87(M_+?%}mpimw)SBAn7`H~qcXmjIYPxAmW3b-gte}O+Y zEVsrT1NibBGPfli@V9SrPQHXsm z{`N!V9bz>VArab;e^wT5;v^Uz6pmm8P#G~OiO~olRTpuuLZxiQvE$Nfw5*ESoH=P{ z)2A3qr2~prFO`GBQBsyCQAnfx;FToywI-L4C703fNXt)LM=G1^z5a#ZN3x{EQXOKI zg(4LsAgz+8a^r}hd0w0;Y@o6x-U~%h%C+In8Ra4hK(994o%%v2fI{u>meJ)TBZphM zk7sXdtLu6^3C}Dto?xK0ciF`tzIAKNLcJB9#_nb+hJvoTMTVfx>!Vc3WZaeDh=ooA zur~_sURU|f_voFJl;6_!mBQ~akzwc#{UfRc<&;WiJH+A_69(P2JuBk$6q5br8I z)7+hr{;~!lh#lm6O3zQm*_e#W7UjcX8ZS4zG~EmO1s?`++1-36zFeI*rY%12N0F*l z`Z3fBoK|`eX`A%!bImD_wQ81=_nRF3LNy4cmo~R%f5QjkP{9MoB~!IY?z_>r>EMXa zNhLNrdB~;Ts~Y||nZXNdiyxZBP0TlP0t>n6i$i#pp&DB9yIG6>QJHgbs=o6jO z$e%KM(`BV*VY`os;B_9=*bg z1>@#wbK7?t4}bNBsI_r4*}J|KUPh&k(s4&eP&WQ~U6*|DDi%Pf{^K6<=B_0uX~?-J zO#HLybjfcQL;WxJBT=tOcR2n6k%i+`c61w<8egRM&_vRJPKpVik6I%QkkIukBsfP}z0`n*cW^&myesT%X{(&;3aFt<)Ksds}E{yb5mNKHev z10@t7wjeuZ6O%g0!s-T)+JoRZ*dC)@=g0C0KNUKQ7ssg};h&7X*+YgO9dzCS`Kqki z$p0WIIoZ}D-u*+i0bv)Z!04g82^5>VyPNy@2RR&7@Li~e$c0Fm1EW%3bej^AJ}#%& zPN6`=nxVv;>^k7W{n?|%N9-ecY+S|gQ;Lf++QMSuhU$-Xa_u=K8I+i)V+T|EoqG*a z-}O5!BMGTe#-%jp$GH1V|6xos)|zn;d^DvBSiWK)s0%KgoVe>0P-_#XxmG6gf>0Th z)sg&?juL}iZ!%4iH{_r&*nku1LhA)3YB51d$)0fngD|Ktr-X+x_C?C+hfP?@DEziJ z{2}|)H^-cQbX7WZnBT{nv1B56HC3j=jA~ET1APN$g?d@ULSAYrlPeoK2Hb-YSIXKPBQ zILgY*#|J0jddLFCg~w+B2ERk)sAm6Rslid#>}8xj@&OCdIX>adP^NHx4v9$cns;NiAnQHiIaNxu zIC9Prq)T))vARtA2qwlO#tfuJ8nsvpok(W2&)-0`W6PmM1GW~snUT)n_mepQ0RwP4 zT)OB#f07@PDz5I#K3rFR6a?X7d(snCNnRRtJKG87)friKfPp5RZM^-y%MFk20ZLYi zv3hbossUKVfpeiSISHsR#<|J$o#vM|xphnS$tMov0E=uji}UB*Dc4BE3zY3r0ivPG zgAPRpW8qw(T6hTk3|?FBAQ?(T4M3%Ae0A-?Z?-u|{k-q{FF%-1j&oWuwpe`&|vTn%tc|Ej7Y~FhiN`L9lJS|Etw#?D27=$Mf*2x_dEP z`Si_)cl+_DnXt-U6s(5ir|x3(Is;%5U^MeFir6$6nmLuxTpiZ6$&bV^Zk{RXpxVT+ zOx$I+{7dD-jEamg+7{OgknZlQPN#FpL4Epi_F|@p49N(_|Lem)F`VqE8R0!%&2<~x zAXGi7U#%OQ!g(_#oj_43&9JFbD~_PFs<7{ClgZv&S5&?HD7-`Wn^x5h)gq{62HZ7O zzCcPYDwxz&N=bh9P?9Bti3w}!%leIq0*DpIj*v|OM_aB+JnCbT88(v8t(Zt4I=?1`sgBxVe$x;&J_ZUdVT}09#MWI0zEvlv%_`F#RRD|Hf6{;ZcUI#+G$$o(<$20=fsMai4t^5v7E@ylt&186Fjww zQ{zZqjZ}ecWL4Q82)I|mrGzF?Wlz=gdbG|S*3V8Mu<}dm(XTH#hYh*aNp}QSw|)Gh za1QpQ_Ev)aH2luTKqiBYurpf(K?(e%Jb2yQDrbMcA?qgVz9s~_hKd~NxUp+gI{4Qv zCg5ARrE#fd0j=-nBJ_5>4kHi$*B@^Fo;-76;5(8l8U$s3rk9Rf%0U;k{by%ag01zs zO~M*-vgKBA5~Q$p+4V}kO%zK7p17~nU${?a>+u!5f=Q1qdVY!12loV82OTkg6OB-p znGDvgS);hIBTg=bM)=XHJJ<4tb13MJ@R+!SHlw&Qd!mJUDw}vyws}zRbF$nlllqZ$ z;$-}7Gi8_hBDxWd99jdRgofc@@XW-dMb*uvcb7Kd1)fzO*hLDV2H2H6sDZlD;Pzxd z+U&SwEb?TXfB6cW5F}iiS|l$~Z<*#XH?+yW^n)LlnUssLGd$5+H~;E3)L1}rClkc$ zcG#U>s!YPlc8$v(=?$AJw6ugvGcdsmO+%r#ChjS$wV9D{gOEXZ&9CFa3Bf9Ww@E^jsmU6-!*xcy~%dPuBLS4 z8sLp=cxmRO_-7{rgVZ5TXQCB z;o}E<kJ${7TK1afhD}Ub zRI+RC-cMmA<4r5&z>^#KJEUx=79+i9FkhKuvxc&`kqn|ho`23`@13cSRwF3k#jmea z8c5UhE^8~9&cfTNaGK=L?e3Q6^{C18-EApAlrTIo*5TmRG6>azV1ph&4nr{J7>OSU zaam8wWjPGhyC8%i@wNGnHjUm$l@97ldoQ(jy{jRgI$zzn1dN;ndAIq5Hpd=~aj_Mw zdA3HL2OKbLl^s?@%87+`viA4C4k!D?kBwVGCIwTb+WeThtDM`WFB_)Th_x>1bb!a zm+yLtms)1cjv%rzv_!iQwB0iN%sNmGrP$=Qj>+dnKt{uAfm?-Yxi)NiNP4|JL!hpq z)?xrZZg{4#fX|8d-Zp+I(PU`s~QTd znho_9NUugF8s@Yh6RadM%F;~Z)NLBMb4JNpbLeE%`I35pRCwYb0yA3O8&~eBi)YJB~{={-6b*Ex75@1icz4Zy+hD!s)lELa-IzIXfiRjNFZ5 z`mWj~DMzBCFDFTPD*!{q$!3CXc*fp96_)vRSO2Qh?9EvEK)63`-!bl*ah1(PO&#*A zb%IHZlV(ZOS1kG$w06*T`VCZaq!QL71}JA;!&x$LNA_uZ>FgeBCg`$~u1Z6Q!>|L% z)INE_ZZrCXfDnC#u=M2>EP8t<@Oc^8nqZVOGD&;{>qRcaqw=fKtEmT@-I#R0jyg*f z5<^gyjqa1(dS3sow>{4!gPvZ4C381(QN%0ZKEXYO%fqy)w^y$Rel~Me|;sJh3o#H6w!wQ04D~E);#ovF;PEsAT%}BPymVyd}M}K62;K_#!^E zi=(p};Cw|+GPINYe?H%d8@&+fxSDRhI>7FOEZ&haa00s&#d^1oT7Fv}yCGP!0&)i( zPq@Bk54lU10W4G38L|JGdUY6_bOl#@f2Wn*HyOa>c#D>=+}6=o0%e5@iTsn)22tHyPqEAMX*oRMYSvPCNFdKXtl|w?vTS4pS=|0mDH<;U4_@ zvpZK7_|XadPe#*1l~{PfIdt&cpS}*xjAzA!T2MTr1gMMwiAXKIjTBIm=lw-8e9QKD z62s(e?rcPIdDiux!Kp!dE-U>T7D#*^|B7;Py%LU55-*Wzc9IAurmWakUP7 zMzxFLA}i9Lo!-#_WaMLwVF>eIX6{B}SLUn#36?ZCh9xnx?E7X@H^;c7#~RnQv{P)H zunz&B`Ts;G{fFsg$<^e)!zHzvA_n`;#t!qvDj`kwzd@D*RA=X4w^@3%x&)t&#*^Lu za5)m}?C%!q8~zDsmi;x5Djz>LOW!YtX=A`)b_HwUQ(r%>Z=LV;Mw^>UyQ1|m_NSll z*LHV%YyU#H;Fp8->a!?+8qFmO!@(YJ9PDWbT3v7OVB77!=B90b)n(T=Wp<+QYwgw)c3FkK5lgKkc#}t||7`HT0|gbO2z7v0sM&aOpiW4DIRpdAq=!cHH`5qF&EFrSD= z`Wv6>c~Dt}^1BVNous9+XQ8ju<3F4T6+}1@(1*+!YDJNea$BQck;#{jW`*-0op%*U zZ3`8dv#5r%a&=$EN1)4QJbfo?popz{D!)e)1$%Nk$)_`-@TSIjLUSVy%}<1B%0x83 zbP!j>Dc+?$Xrv}Ns+2|jXY6nj?~@cVGhTVD`B=`)ooMuuWT33`-O%gUnA5b>At-k6n+fsLrL z>GfYIG=O*AtGD!;TPnNf@e>D*Q(vQFQ|f>e^PP5CM|Z3)q=%T){n_)XYsfAR$e7Xm%@*W$s5)J zp)SkYR0%j7>>aVyd42uSRQ7p(J>PjM`JU}0Oy*$wRgoWrgyT~%#Pdw?G6xqkD7)R7 zx1pMf%*V&CNYr>aP^q`>xSzDQN^b4c*(u6W)QI54!ayb31b6TrXQw|10D%SoV+`vF$Rmareqe&}v z39}fKTDy9L57vQxlquo;)D_LcU1VqF2$o7{I{M3$`f!~>@6XU)O$ufN*>AbAjshhT z_16;Mf)bKkeS2N(O8-ihYj;Kp_!EWWtiR%yG}AaeDYeOL>95N{nzH)SiQ8GEhtX9h zA4pBv`IT3{oeS=}CtBhB(SC-I>lVOGTCsLGaivx0$b*M3?uIAa?K~Wv3VlV)RUD)i z@$ZfADPUG8tCS;Rrm9JE&lT1%97`-tFCze6qIx~8y zu1Z+PHUoxf~1x&<6hbAApIMlgjCy+UYv0|B_fDrLtG`IZx_|0*Nb?GC7?l1>PeM-o3x-~ z!$N&GyrQRU8Oz%CAF9f1@)4G#uKW8kSE%`3^SyIhUBQ~<>eUWim^UT%r%+wh?|ORv zNoLGUJMOpCd2PBlkk&N4P&rzJjm1JA_vR~WAfs{|(kY(+2jlR$v}g7CcFdtVf*Rf? z-Be!)FA^RE)!>|iv!#hr*ap=ol9Va#d9R@+$&KD$QMsI%DBh+Ts*S6h=gZT$C3=a;QZNFR4$xKhCL z)icT^YX+Z)Na+A3N7uU<_OMYzE&J?KD4WZGL<%|FAC&+=aQY$`PPUkFFFdNA0|Uz! zzK6FCP`hc=cu~5t;ctJ;uCPVL&wO+3LH>Qd%=!tms)e?U@ou~2Hz7XVRN-TJq%Lgl z0ZASzLsz1m9?$OM60xdoH?($fL#5M?W;pInGFNTYU|osvpVI}2fsX4K!g37d>u6U} zkF8_f9oiFM_1o3M@jpy*lu{>v8!EHFg5k!6`cN{MNdD(C!vUBXmco`a=C{F=2G7Gf zQ=>IR8?AwT3;RgAJbFP`qF$K;w5wBLGHTJ)h9blLr>l8W?LSn)fv3_q1o!q&+NXE) zGjf1F$6usIO#+n6z68l?l)@`DRlO4$z*81d^m*{0_rK|prj8Z^ahj^X^N9pT)fJ1H zBiAKz4OQ}Y;IUXMcS*WIkC=PgFUjXCfzog&;BBWkxK_TqMB$p`80)6Bh^y-V_D_lz z%?P`zH@6^>Kwl=~i_B|Xfi>83khTPliA`1FM&5hfjNZ6ZGdLp`qTB$UP!_Yz^_a0&NwMKFen$9=RB~QlknwXlQUm!s z`bsv`i`dVfJnhQSsu2wyOoMF7WV(-`f@8(6V$YR7)xRmxC;OsvGnWlwagi%AJ!f)a zd;RH0Y)4V8gm+8Eulcod4wF{77$;RmY@dYDs4y@MA+1$yc#$`>-w3tDC5xx46KXxT zjj@c3ry)#|xXG-zTE#j|ZfsQ>g}3P)k#G=XAZySW2rCLhtIpnuG@X4YEBRIZ-@|W8 z(NvIdoY0?#Ivd?u=~O%#jv~%75nAt`*y0y0Qq`ZXgrgNy6tihgWB2<^i%_Gq7C$s{ zaMgM5`)vtX_Ds&On^UdU_>QEu8;PJswY8yjI>*fCI8g}G47<0MM>e$MEUDKi1YL-; z(L7Y1-N=eDHImoF33VyIqJA9(gw>UTG*C(VNbyOW@X!qK$m1bS^dZ4^m2i6);jqS9{g_NkNgkl9ONH`U; z;EgO{h&MS7)Va_sD9`H0qi|e#U|P_|6t5Mtu4i$me&>}s;;Y|Pwyn; zFsuP&z__Pix!eFUONaskMmb7CRff))unb?z!2WMbl4t+k~0@z zXVH@;&gFfmX7SJT?j^9%jrBl!*8`|HN9G-q>%FUgPok|j-;qND56_2YjQ zg=`c$Mn}aePko_!;xR2ntm?OmVS5}BaHjORF74XEq_lmdt7LSX)6V#egfv~2hnwR0 z<#BzG+IU?VMKKVC+v2?Qm0J2WndATsdjh8C^*5#*XxVGEDaihzbfWx#O^hlokYq`N zPICYI#EnSB4c7T>r4T)#T`I~^2?z)3NEb#~4aF_s`N=RNu&fNEG61(xqC1Sg6Fq&O zYTOC{CoF8|%yec6s&jtR_MULORdpttnT+8{nz-@!{iAS2^V=fp6%N8JwQ1U48B5B; z2$SnLR?ZlgDrR-1S8RrD}T9%-)VF~q0gyq7x5(pt?_^Vyi} z6ChCR0`R2XM1XpX21i$@lfdbMJSwO_oxjU}+wM&B`l;uNQ{7ux2f^d{C!R;H7AC&v3?l@L5cYVLJ#B{KL@7Yq}pM_bzp0ybSy(E4CuVr!Q)qL zZ{$`$t%8&7(A1eF%`(PN#Pm-ti3(JE4Q(M&aBS_<|85DS=6gPFna2guRp) zrf;_7?m29cg5fe*{d&G8k!wf!+i*X(hLCyGuxqG4coW#o;dQ+}eSg6&!+g1UZ9&}P zs@5Y3BcpJYc?WHvcFh9W_0<7Z>jkmIA?Rzfo<}_~aFr3+)kmA|0s=Wr1g+2yD*WSu zq{mek5Kh|+N^>tLP$xs@8)R@$7&_E&)7tnPw^^ySq%**CWiB#ffjj_OQiJZGt`i@7 z!p?`RTG=oV+v&&b&!g1-bv?ay+fTWNsB3o(!qAyy@fgoau+?PFhH>J;HT5)nvh@^^ zDo5Puu1xLaHD|ht=V8>)y(y@@f`e%LQi+CHusqK(F2M#&nr%1&rSy8|0vT!RZqf)Yeeogs{6*~Q8GbqiKz1dhAP?PP-&P0~jmdNvrW>yKGG6))7_NX0@XD$=KjjgTLP6IBV z9XSVL{77t9iovEBdu1L)Eg;QR>8z*5ac~QK1}Ly>yRIT#%2hP}fGiEJpR&oks#+M0 z^g$}5PdKT^92)`6Hs6|UUK7kHCwZRq7jfZ=98kq={pE)aq)Gt}&ay+C811_%9AMRd zle~S2UlJunTTIWrMk0Y6?BX0aqr|VtG>fr=B+uY{{4^UK+isEWrv0W^X!O-TWu~@e z&oc`!C7G6Ylt2IRf%o6VdDj-!sQ0<-1&P^x)R}%{lHbm@I^=I~>GhkwP=dx*=%UWJ zV2h4fa--}!LqXsP=89Un;TS?LvvC~0#XakwhaV*M`N~xyBSpv(E1fy|7R_Dii^p6a zHVM^CiCu{c?MVk=%dW$lD!D7uZ|@c{+pZ&?P82}s?DvxHbY$x<^S2is<&TLm7WM4F zNF8+Lbp83dE<7Z47|zv~10mBZC2Kps%sCo6GMG9qc^f|0j}%v zy9*o#R-!Cu3{(ueqo_4ws?qS$bLMZ@dlATN6gL{g0C`Q~1I{lnKV@s3Q^GG78#eC> zL{C&+FbOHAt8FFGT;RgkDOptcE8XtA`YW7Qv-aUJ?SJd=F$qbIQPX_M=OpHNLz%s1 zMl7s&7-2v#RyJa(sCqLva6VPa#f2n*TDnFfFD%Orhsr%bJPNUv;*a+d&iXVh(}J-b z_xlJW!|Q|u*~_q>Za43ZPIX&|O;9+hk5%GaRe>zf@}$8afZD+{G|5p|%B;8?p^S6N zP$4-xJ;@~09@mD|21q7iUGx%eaSgAMkOrui@gGxM!)?&>m@)Na9-lWU0aMD6w)6H4 zftwmMNwGtd(_onq0v&}0dZLBw&6q5qD*1p=Wirw2U}X|aYv6R2B5oeYw)aNAr0-FK z+GF1F+tMqaV|f&_9ExoOL;QGIdXJ-7Js7)hQIlk$72lw;qTZ z0R?};D?^e(9DQtj5_t{n!f+{Z3t6pTy*bDFaewPJdE1Z~bU8(@TjywDo5Y7YE8w0? ztQRG(looy!q2KKsMCXQ4ADXoV zoMWLBbV8GPJzIPTe^I(D1?$G~X6+4K29c$gN-S6((Y!3ba3HOE2r8K*9-;Y)EADxt zDp7ly1JrL}zu$&qP0|AJkg#MEk@8i8cPxB@5v)y?NE!!*1LTAf3;%7K{3#m%fwMAn z6>$8PaUsXxMEkxH)seFCTDKm^I16`bST#;DD}1noFV;2GWQdAXU>h};BW|j!vWF!b zq4*yCS)cpH2o6r5q5$E+czZ=7=OziVL%EAuf|XFfQ~tJ#6oLgL-E5g|nZJ&@ZlS%G ziYYUY!IPJG>dFFCgEty_z;pT-p?uQ3ZK3;iIuAL(zgy%qDy#*+NVyuR;Kl`=GvN)B zcH8^a5Ln{tC|is2`r(v&q7l?@c1=r@5U0JXxxnJ)?Zqx3_wOgU$7=^@Gj5&2n8(oSpP)`o9By zZY@y?tOr%pNo}M($ksSR8B!#j<(8_XPd(C@ITSu zfYaHB)aSpP<`rN`o5j`^gTn$A2|}Nx_Fxa_&^P_?{lE>@+ zyNYl)hTV~PDv?Toa&cKkpb8E|J6Lct1s%iVr6BN}=0YofBLU=de%s3{<*bSr^9F z(dSDgYK-)6%ItCY5k6PsDt4O*7?=hBAjw27RmP*V*Act4 z!$%JS_}+;jjDVZGd*xB|SqsT=L8@d?-3b_$AR;`Pf1KgfavU&$Y8B@HgLk8H`(PTJ z2#xBbbpdNXI_eyFEj$vg&x1|rOZ;$jbCWY!osBK$$Q z&z3YELt%@^J7$xmuw@4L_Tu?2uMSU`juzxP>Y?Upa`76UtuNIM{otnv2zp-0T`=YBT(Br43Hs4`1;pJtF1C00jUGu z13|5Jxayr_@f1B4ujFIGirlZyDV3s_KbxF+LjW%2CKI_ok{cd!0)SX0@hm zhXF4R7VuPQJlD=hDU9dG^PbY=Xoec%ZbVpbW>5YJ%U`Px+Z4YOv8&*q0*vM{RGm;5 zSB<)yF_W;hn8=KEAr~r*URVA_!Hh88lyKfEt6c_`$blds`$D#x$n{SYstrMbqp74I zS>&h^+}7s9tIrJOpD~&JSfQeTP3eUwqF(CDS>Yk zcaZpH{84puli@T1MG;B95nD*C#fP+w-7s&cp$aq~N}rIhMINqz*D-g#{Rc?FWp{JR$(SpeO=lzJJa+iOvA!r;6bXL?>_XnE za-O`r63ij-xf;2d>_XDSss~Mz=pR2|xgkb2wp6K0=1}M_v+wV8%mw%Qg!(Z8Uz>dFe3r(4m|b zN~LS0epc=#6ev8?c$AJ`=zK?g>!h;9=xm?wA9@R1r6!gLuVsIybMivJz4i|hD~1<) zj(l!uJ9cf@K=tJy)z`wlpvq4RV8(yh5(-$)>$O)wutWcwx)lerFD#2vnz8Q1lE9VS z1RjWTLt29mtpc7<-=Q7lXW=hlFd?BI(J^b*`??`}v#LxV&RU8KhES15!V&dzC=oAU zmtAdTu<_|mupcBArMiL(yY~YnCU;9#-pu|{?xm!%@gG{$pJ%tDq5;GiBve)9MB6sZ zA7!l4?;K7Kmo5I};yj}|5>tYTX!&)2E~ukEt5r$p(px6s(&1KTzZ|m;ek$usgCyNI z#q3t~L3+F$T?;v}i|7LFbJqy(;uym+^LN+pkwT~-u+ZM2ll!;t=&*jBM1ktLqsY$t z>%eqHO11yHe{l3$$B%c9#%G>bN{UUs@j?F?{#ND>=n5jCA*H(+DR>OPYhso%wapBt z(hzFStYpIp0zYtjF5ldJmH*g(tH)x}B|$puWjYtzA$x^F3EOHh(FrW~FUgUp?|eQ> zVnE9>4k{ry``Ch zYwgf>POB>iKUKCDh;`;ALW_tB!##_Q26uI`TqUPN)>pxvq%9vYOc2?O=CV)SU%0vq z4Mqm=5Yw!JHjlO${$l3sp;XUQTGb9Wi6t+ZK0ls*QI1)?*L4PPCb-)7!Y7!}M$=<+ z@3hRrvC}aMN+C9t?jt|WDmsNb9?9U=WL&i{Wx=cP*V(i)WXcg=XXy)@xa@}=dp=Yq zj}c@;bkDIU>L|qQ`x-d!2W@r5nNJBwI{)K_P#0PZG`F}1AY3!$jmOpt?jeO-l|gm864cTFDJHDN+Lk6n zN!fYEX`OEBXT;e8L-sB!-H-^VT7R%A45Qb=b9yh2C=^3475YxGkE))H;*&Z@p+D>H zh_hp8ljW)ZS*`|dPcoXtzksmrGTC6rNQYZmI9xbF%lX%NK+W`42-0>jvWxf$E^vs_ z3NnZ@B9|v4rk3)1EnOFH)G^C7#jSfz!2iF@z4>+&+0y0tDq^f;O!pYw6&_3i5=cfN zhJ+x&M`lS#0)j+n)ob+Y^^^2(?{i$b-@RXTul}P~b=CUvA}PX$bL`l#ZJQZeBL1kl z&6U$jN0BgyiNA<-Iu~}ZWT6-d&V4~m?Gxu%!{Zt%1oNBHzSX_pPxVF8)%d=WI+Y+r zj_il2&X|COq~LxHH4~obSbSGKy9Fm{I$}#lt~rR zkskh-PdASSKX)GK(P-4Pn@TwOD~8xI02h9B(sQr{`*se3_=OxfzQqwfJDjP{!~1K* zq9}x3z0fJus>KR@*ElSNHN+y=PWnjjG;YaESL@+dm&3d3RE|Tbs7!uXg_2TuAV=3{ zQ@k1Q2Wq$MtFg|F74NjuCpjKtEs!`Cw#3sMb;bE*}Ekb?-F>8b}NDb(E zu{^>0qxYhi#(OoHf|zE;i)twZ3hgx=p$S(d(%MCo$zi@&I;A8&hF4Mkk*r#^dP7IA z=wxZ5D^#a1j>#!{`P*CdjBCe#VNGHggbk&hvw5Uf=8({ewW)svl|_W*CLomt`p7ph z2;g)JUlC8K9=o+()BX9kzIXGCKn3HAxKP%}TAIOw7eg#jJ9)J5qzcCaWT&=CI?2_U zCRD%#${^`Q!2@!p!VA670oX6xnQbz=7DbhyNYBzHe;)pe%LzU~K13($j^=^Mx2n2T zxbEt>k@XIBy4X}#t4f`i!wg~VvXgUx1iUhTDXV^vxe)|%+KQtz+?Y3ed~mTdi)u?q z>bSsq(MeInF|pRrsi*RS91pK5zn;#7*zW8#xuR~l^~BVDIFr+w&<*vu`5w`0P$Bh- zj`K%Eioa&+T^v$NPl0M!ci@|`LSt0b4y7U8^4dBIMe$MdkJO3+P&ZFfm5}2K^>8B) zTZ}AU?S8m&o4x!w>pMy$wsUnQ6`^QG1GQaT0AZJ?FDdwr)Wg^-cMvwqxG($;s0u3!(5ZkLJ|3 z7!~3d>G&Kr1jY5?+!rf9pJErf^u`+NT_+!UG1BIqyILea`d&5DA7GQm^*(t~-OyE4 zfNVR+W6@3vRUwZMXqtCOG0E}{@>hV=ruJ%bKOcbKQkt>P`B#ZXQrGL?25I2<4aeuk=k_aJ=D9ynQ=w%RoF5`ME1bs0_}pqIT~vA`Or+)4d; zZ5AEj!Bh9MRyjsPH$#w}y88{;GEJ_mS7w?stK5kQ1=)0+MRTTYD_9}3o!#KhZC87L z#5>fAWr$V+`(pl})_wXf0c-uwqi|6~rn*3d zPi3~vV$q~CKOXckXY`aA zeh=LJpje*mL$+?F5~*zbHcm4~MCdXX_02-9HcMB~G6Mnes0SOqYWj+`=Z&@e`C!Z4 zxni?IO&`@{ibmDO#wn9-t>0RqW?Jm%QDu`e5*4lkB%Qte`TGpJ>p$vuT)WFY0=x>T zM>ampg7oH&HR|NOHgop*v66zY#*OYlUiW0qpG|3kJ*mg=Px3r73vB z>a`~N;%3`2xFu(%9l3rAbZlOUpNE!Y;-h&$88h~K!%JMITl0Iyz z-HS>kF)c;j!a^+o@cVN5i+QEZ6bl&ADrl%>SAHR1wE;{b!COD8Ag)Rwe-?6iOB!$F z(|_PHX_RdSYukC4raZJNp{ac5eCp%TSxxMqgaTl1k8tJ5IOx=YY(QsOIjQRfoIp*P423YN_z|^6a&0Eo8 zc0!Y$t*`GiQmPD;854fqwY1Wq5f7{Vp2ddxRP@dC&KUs=$ znrWw2g}Fv5uzfThyn(L88207!SfxiOiJq($Qb!`E+7b{qX4Q&>qW%GsL=ckzC@1fR z3(W+S2kOSI_E`A%ztYS-GDVyTZf&j0CvH8YtPUG!?uAN41Hoz7Gi2lEU4i@TT*6yV?C)sXRQ=}lufuE zw2<#_l-X}Icdt(^H~IN~z8*NLdHAx5%t^Trj!VMuCizB(8b*G}AtRPVigas87^)1Z zyga`k3xLwc1?DWL|Lmi{Y-upB!Ti0X2T9My6zV0-Pu@NZrf)Z2>r5*qg;hb62*+~B zl8I$3Xw}(&Hp{+|%Wu1X&{up^?zuIFZ7hgZH+((6Rg7mp;0J|F*j9KcC-X&01T>5` zAS@@4v;ai2Z43a`w(xgRPUDyHVW=jox3f%4sN5BP8aDzq6ut$W9lr$%vrGsI?m259 zKDo;2m6U1g`JLyBgN!%G-B6F>$A?nY$go>?Y99?@n_1kfY76YJb`9^TRvk51y{^F_N5)o<|!4c!ec-B+nWB?IZ! zjn-!w*+^|e5)E36w>S`FXs8ULic}6=s3414p9E@~7Izg`ktV@~T=b3DLo5DvgF2)| zbM0kTyFo6Zq6#ts0FCq@6N;QC(^+w!lqUX{L#`Sh%r!t1vNlQaLDb{Lfm=W65iunp z$&J4X& zuh_41Ix_rDhrJ~M>Jv%-k;Vs$0|M0o)-2}qqIx13bvDm6oiPte%FSSnpVMBAYQI@% zrB8>dv2*Al-#1l8E@$YA(z;{uMyf8_TN5NC?IIocAyB9CzZOCr&8hEl#nR2nOvg;+ zCq(ZiBst!EtBW3U8YmQ&2^3TJ1Hl{%oDc@Kg`T|A|@0sOyiAQFxWc2t)M>s%0kigS*KbI=DR;#=DQObV&yf#7zE zS&kq4OEJ}p)!+mgr5pCC-0AuCkkqC95c8UlGf6W2!wnX|hW!zYRBjM4vD$OOps0U- z*cU=1azHCLG&P}O94=?4FMq|R9Axdw#eufD>IuBXbw|?! zQBw^o>6*RP)2T*9Mgop(&uB07VAs zEfu23U!j>hR5@cVLZ5wf%(C_zV1NXj<4OZGD>W-V-74!IK4%Gd{3?B;S~pLl(Y~TBq>n34 zYwLFw?ktuLR`9&q&^c_Te}AEKaM+Eg)G`|XxcP<5YBdt{=G_qV622S6Te$-7FBmQh z+(q6JoAe}x{7HOG{FwONxd`Oqd47@)7#1#}R0#!v_vcWIBB0Wjp z;xGv*^)U_>@pkesYW%djoy@!AKdj8V7sH^_ow3WPKM|X$5knq57_b)AW7fCk7yq;? zAPcaw-RG|!OT~`Vl!KeW?Io{>iZcU(qs6SPn?Wn8o=rQoF;)?AGkQ=+(eN_4%IK8r z*ItAm`ymVq(eT|=`~hS1v@xTwfgoXc5a0_7r7+q4F8hSG(wZ0GFQ#*H4D<;_4e5j| ziw!rzZNaFyAo_6$V0M?Yizm$>4uaff@S;FW$DY4UR{^dFueU3*>Ws)%9ejC@Q_@9| z0UO4FG%d+Pt*^fTQ=)BAlelbB9B(<6OICn94|!!n3Al>9EMyUN0OPk&&;X!05zFcv z;;qNGhwJ?kZV=A)BQz8_2~2%b)#nG%Ppxk3=#qs}tkvc47(TpdTrgBv)qP%sf!;Y& zzju_+$cAT+_C0lPJ{k1`$~L_N6~FVsS(Fq**L zNg6bY3>3&jR9Oi+H48@O6n6CkT`S)p`$Q5yR*z#ZI82O&*BeJo(9Gu!P4C1-^vnTN zPNQA|mQ-Bgv<&U%k7H%iCH)LxRPD*%(3lHQ97Dv~zbX^8L4JrEEFlu8jr)mR zDRu^e!jU9?kxcenvQY}eSh`j@;Eu^4jtT>KsblSDMH<&a4lMjr`h+iJ*f_=a0vBI@26w?@IEBJIX2 zF(npJ>1!>^x1R-h^6u?DiF2~b-VUe7=fWg~E6Cs^lM8(h=>;3pPBx44;Y1&?bFWf0 zY?k=kHS!70u+%gsn&MUd*1SP@w~yei)M14rrxSzX(0`lU=)2Tz>k{vo!_dh{-FG#}SBG5$$aS#Q0r;<6myACn%NN+LG@Kju>wtYDN^sNsd^-u#^tKj;Q zG3B5`fKwnYP}I%ROLb)gcnx4IgIG79c`dvQ}5s_D*Yu?6{rEb{L( z&shv{!1J=G@ptC;A4wa{UIaJH>28IiQ)-3|HLCtSdFpn!l`^-=1;Jeuh)Zk?N7c@? zXbjf51TUE_lJM{5lSnIWTHOUS`}lnG`R6_e7R5`6CwnRKv|9&6#!YV{T%Jj!?*u z1tTE+<$ALzPTip=2Kr(dT~I4Tp=YN3wS6P4sDB5p;wkAHBg-68eog#m89`r4xI_8Y z!GVJdoI;!mO3bRAzrx3CZ8BNU$f~1rdR4uJJX30LNd|?$+#9+=5pt{ifK4sIJ{Gnn zwDFXwvM!W7j+tec!7kSN(N=9;4&^NzbeTs;t^~NG*3hr%5Rl6!q(1R8u0efwRZ`qd z3S0uu6`WiR=#J7h$}@JOO9c{%*-_h|VEehEvXt`Ty848e#b@R)ezA=k2tTL{b~uY3 zkFG;Y8?xq1a}11X;UpGU)>OT@C8p{0I^WSf2_@mC5{4J_ufX-Bk$qS|bIFx&a0oVy zQK@v%{2OXfSMil5|Gb(1>BCwa&5zjjMNkO%DOve0-m76ge6P)PaEMBy%DEd(lcN=5 z8$^BfU{I9Anmo9Vx#Ch_F#J=3e64Me+sl8xUhKh=$Xilse#Jr9K&yYgN%vITam_Kv zzc{O$wQfhzDl!tN8U7@@JdzPU_Iocyj|QNPKa&g35a^AA)aWOB$ldPK9)0 z=e%HqCSyFZ|JP5IImk`LS*shz)Z;7jW0#Jsk|}`WQ)&oTPhN%f%!d09=4Y}~UH2T3 zYuaO~R79=Xg(H4Y@p@H4mtmG$unU=}InEMkWUNLDetdC2@E7DZnVjQPqwJ<7Yk3%8kZ{77pGO^j>>DI;RUk+KcN`*V_7Zl8+8`XajUtr}rAqT+_CZ?>H& z1440U!8tEel5OZ{PAxnhKrK+#*<(UCgheW~xqdH5TAf1Ace2MMKZK=6n~4bi7KY&E z6iWy0#0-oktZSuq>zs}y*VGKnYRN%u?7ioVw?bB|9j=At1)}-RGh$C(r_`o;ehHrM z4%Sr0UhJsUfz0HAB}Wl2=3oGf$Ey7d4-uIC<&&pj`@8%?U@wCJP0k~3O?O)XL3ZP< zY8;%=%Dtc(;E0ZRi{;ae`fuT2%}+;}sp9(xr1HqjZWx}Rw^(won@SZm#!7{;7Ou-#BB@T)8-Arn+&H;P%>rhCcHB6JY5{TKmAh1~L zOPD?GOTGomApRNNG>#CDoPkRj3a}z9XR2?I`cIVGIevgWS_K!;8V{({^6hykf-B6a zNmke?g$zm789PDc646maf$cx9f3@KuaDgUaCoHzCfovn>s&M;O-&R$#_j~XP5|QW2 zjl&gyCK#kPjY_W3P|WJk0^@S+=xx+Xi|d-7L+rON&mR=pk|ViG)t*vKVnEFZIC)F8 z)?)DS&G1?`k0vG9f{rb_f3M(&G-Sl;{GL&4nc7{|FndHGH?PpjOuMu$AI)!Ne}oGP zuokOnY5S(`Dvgak1JHYG=Y8MA*W{>~hf=|6N6g*R5-~=7w~x$)R&6uWg-oESNEnM) zgb=rG*Z~V@xQ_V)_Us9LWw{YnLxn+d_5ynP{CDm}+e81DwB(h-A6--_yKKNPI==GB zXxBqG^&)7!G&!cpIL%@7i2{T7dO#;M4L`-Matvw)cqT^*(egG}iM#9t|H6W#`IdFD zBv6V6aiZ-JO0dNVXzBxFD1(~qTxYv2q587%MlccC53r*h(HJ`?OhxSZgN3+Q{3TWU}{cdp@ z^+Ry4Bp4wduVv(ecY|Z}7oyA(%c5lE%cu|y!nPvY8L^k6LBI@ztdIH(dEBCr2RC4@ zU$n|1^4FZ@LnI=%3neN4E)dwsA(rD~b8+ZHFn=Ky*EwU7T#R@hv~LqhJCD!>fmTr9 zX@v^D^YKW{{Dc-^hV>%H?Wp*_^)a8`QPd008MA_|yD(DqB7^Ot-)8WiCA%TRL1d@( zimcZykU=s?AQoFLzt6wOST*faD-h~r#XO_@?evRaB9^JDE=6(82XEpH#GLVzvrIYw zOk1|DbO)Si)QD|web}+3yv61gxlZ{NRs9w{B}EN=`3CW&Dcq-D>Yxw}OzIOZA4r2x z^C_4>bUcKFLs@Dzu?f$A>eE-eb1F@rpa0y;b@efP!Qz6Z;D5J)oczLGSM_M*6~QII zbe)|JYwV(zoHr%kn=cMjnu#I9P2A~`K5fXgeTrcAc_=p>g4KjnX5*jYoq++FzdB?# zG8@|~>qAwg^^qt_Gx|Jf&v-J3njtK-ft#@ ze{WL5yqRii^RPornqD0J*A_MFbm-ZA|8}!&4qLnok^za?72WIy1EkKkd;PSgmG_^w zp{nfi;VtG=we2pX6}~>slJ~J!48IaF=0dr{Gc_wmQ>$o_v-lt1+LhMxr1Z_kqnqB1 z)CI@0tYRCTZm0Yl$3=0W@CJIgk8#!&4V~%Hv%(E1p*jDant`399A5l!apiv#F((t2 zt*W? zTmXl7q0k5>N-Xi$!AtXBwxT_E+COL!duUJns2VFX+ZIM71*F4EHF~2T0J{G|@m1pj zHV3DcA0_UhRAd>(YrY=$k8|CItC5(#<=SURPNc54Y53Cp@95N6*%gq_a4~t zyxAg|q)avTcDtDbN)jCeh`g2u^gWYdX{VnhC9bsyT?U{QAvJC$qt9CB z<5Mz9QRPWjj72!Ql$lwovzwaOVwk#SUCxOj^gL{`NA%QDT9TFL@tH>fOUCPbt2MbD zel1>xQ0Qbp1hm{&JCzj`*L3zFSVmO&aYRxuBw$6FJ~?lr8WpX|UjTZK{|LhXfI2m@ z(AzHiCofRe6Pju;2!p$B*mC2PUabh*St@1clmz7tLbN!*SttZ+!{GtByu7xc*wp)H zz|kV`Ja}V0JmE%ma$Cz;SRW(C>HL0lZqi~gK1{5~7b*umXhC)mAw)LO#CwxZmKga_qyQT6NDk6kl&_7Y3 zCL-zP`8#_c8*&llgFD9eQUCm$3Z>+r8pL!|IqAU^N~`lO)twr=q&!!7h8l1voT}>8 zGmHSv5g}-)9I<0kh%SU1{jFbUQfG3bfR0K5aW=g|VKRsL_;k1@L}8qtir>`kAe|gV z`hj@sM>igaeX6EV>H=#|UdG^4_(0bVEC$!ktB!>n1ip%d-*6(Y9^~ig;*l$;0$uz^ z{I%f7D!PsMlSEL^GYG*PCHBrS;f)<UA9b5 z&2O%($CqKlb$;_HO;nGgXT*Z)6!=c#4~~^|B!;U`BAzNxz8=Q16%|32EwF4~65O`0 zB9xwrR!{K*ARh6GTvTN+${7O&+`2S+URAgE5~8_3s97R;k^U359Ip~iG#v_nLa-_l zl<7pdS%IP5c=fK8J#y!YK5FQm>oi`0Pb$|C^;Wz0OY?$)fW9i)ZL6i2?bb=>sVh%K zcV#CkU8kFkzEXatRx>JBRX)TgiIHY)d06-u6<8^qu0_hTFC=)_gs!{_XKev4+k#eL z{;1qlt0!{JOd5P@f?*nLk}=q%MYTgqA$6GyBQ7I!1-K>zIxyOifj4th8nRbTV_@8M zpD-1|Zpc74sQ3)H^SjziPJ55lWrfX0MHVPQH*4L;o~!c)k5*U5c=bA!F=dC*Siy**d~c1$4rQm(>c=!IrCYhYp^4 z%e1QF#Mu4qlqa5m&j!z?>(GIJQBdg&3&*Fv&wtBOqpsx_sV%-w0&y<`3(tq!rNh}H zU@0#0Xs;ioH6EUJtoJ;@ZR5plR&=VA(P=097xXXMy=$8S9(zkaoL7g^3^7?wt?UUB z(d+0S77XAmP!;2pb)fllbO&QAp`gfarsJ1vgujw&BK5Hq@N!{c;yAsarww}Z!!mqE z?gB$ofaNn0c0nNNtC^2C!F);4DFtbQ1ATaAcziszRzf1dAAD?8fkFo<8<)@^MQw!n zja@;GCTN~cQXq724CQjk!zB{*1*S+IO-!CXzG;oKC_iGQ#*fi&`m;_jbG`7{v=wFV z*`;I3p8C{Qp8mZx59ReRDgtiRO>bQdPGFTh;~}E9;r#eYp}6i{?Ws+4 zJJuPho=3HS^Jf($JieW9idFVOZ53(hWn$l8^vVO_xVms*S#=U{Fx0}$&)_DNS$3249XLqI|DD@Y5MVz^pi7*o^uW~dn2DCby zs|o%)qjS>T9Zm~R`n7%9CoONWPu4Y3z1rK@<4epA1f!g#ANy>oBZ!)M6q!GEB z*hv!sV4=#O?yjOkb|WYBaE~g4hjV3K`==+KDG`NBdV-j zcBAslq-0f&eroT;J)Ij)ePu22J#KalHTCX+;1!3c_{Pt7(ACF#BDMo^W zmg%>v!BUlE(ht->& z5Q5~+OBs-2^zpK(T6oGI#qU|hnQg5#{@J%w2*?i%Illfn5C@ zr03>erS7M*-!PSZ$e@=-^0W`3Ho4qlT3QD4)U zD8i|Qso?cA6SWaIzV!1*}}xD?Sh<)@@s8=w~!}eYf#eG zEn_)t+Ba$2l2iq^n0AkxYcj{2q?L1^INt>l$O9)y;GtB zrY8+KyXS_26%lCVp$Sw^sy+E^MlM8q5R(;<#3>-kc>dh$-Ko60sg0f##3U*%@{j|w zgXA#|i|6oa+w}>lD{3T|k|!SrU!qjOKsjE;L@d-V%{@64&()_0b5IRbJqP!=4-o3G z6iCjA;GN~^O{L4b>^m>h)Z<+iJ@)W%9v04~X#D8?QhG?q_B5OQ5iC^igu3^NR&~1S z?)a<`9k|saWCw63RJSXa=$V;~=onol3ek)Js#!iXVS=F020~I*-Ipfdsbac@uz{(X zzx13^wA228h3oKisvws`I+o<5>F;vqzW$=PDS}*hQ=DfiVd(dw{w|!_C3JiZ&@Qv# z1yrMk6KUm@yxeFSh|eKJrKxVSt*bIHUFN+y!^mqkI26~YzDTxK0R>u84}F*slvEkH zoz4!fyy&S5eG;R|=;xt^GiEo(av8_;&3kl!MmSR$zTHf3-{$EuwY4Ku;VqzObHjkF zB4?yWGwH&>;dpjV&waB}4|ARgEw?X^M;+LNd{^ZQ(>zNN``XSi?UyGksgu-z(;VL< zB$xkatk}0WS!h6Wy%Xio@ia&Y_?=k>TjZb z&&!J@Jpj<7zgE@AlM};Rh8M(bv(S|7oFs2nuZLfw?b3X5U-@)GN$p>sF>fTcJw7NF zGu2@2lKoIfY51koVB}N|U#mQ>vzealg-k6<8pG@MZ2_-CO6rQ(imJp*NUI@iNWd+7kb2TCeX_WfWuvX%=iTHo zgLa#jk;;tPUDR*iiWCzF&=lNO=tuhflHpC~w?45L+>e!G`PWAR`e3dWAVnduL7bgT z?%>JDvS-O>E@xl!^s|3a79*%a3M@Zp-RFD;Og9=ccZ?tDINP;BqBN@YT*}W_>!+=iCN`z;q5x9Ton&5>oOYf*-U$d(D^v&kX22hdjnV$ z4>a;RpMU4ua_Ab(flC%BU_bHjnfGi33(JywTDX~6tRc#ZwU?cAc&K&6 z;qLr;*rqoz6lv=B>V8gO0Z4F4&%p;47T;n3juoUk1l9;)n6;^`QhO*Dp;Q-xEG|0; zgzu0FJ*Cunt-^zmu)4PT85CfZygb8uVfKCObhfgyXX1-lm=P+<#K3&IBdS)Lym5V{ zG-zXr_ZZ9Qx1!FF5de+=@9DIN(cvIqgb7UvWy`T#0<5Tz#c|=kDK+g&g#O8cd2<~zD0*~>UERRW1tor%rlC0D>Kz) zd;0B#(|re-bb%S~yHMjbf~$lcQhM$VG)@B1vj==@7JO+E;$_~HCvz*Nnt&yS;%s%- z3Px#E0EGW+#9!GM@d&V0Dm_IBN(bxm#m<))jIyv`6pz?6r54BG-o%5BdQk*iS1FL$ zmwi3b>{$>ogagO~TcxQXy2157!WG(PS4_kTf0%tP9?KyC?vaO)W*_8~+o-c%{edjA z8_z?O%V#0eDHBBP3S!!g!g&`)-L6xLO;oBW&1{7=jK^=z*pv)X&|ecA#3c{Z9ol!< zis^4SXc&9M8`RHw^meyKikXRev7NGt7Aq;$jwiKdaR`pN5W~EgMpp*S^(p)lui61{ zq&nI^aIGgoLzcBgKR{nX*6uH%Z&byNv(ZxU*5Isg;AF8SvUpQ(=g(YpDN#+F z>QugH?}^oyW8g{$RakdZPc#)i;C)QJ{tSaO_e$ZJ?aC*9!HFwJ1!f^{Rqj#ePjO<* zAk_ln>FAW}CQu9%4t`|@AjuP06Y(8QfOVPw@bPJcg#7o|zCjumw4I(ibbfaJ4tS!Q zii^I6%TrQg4vf!I(vjo>kiK!PW(1NQh%y`y%bo(9HhsLVjGYMrJRr={>(YCqf~{Tc zPYKaV{&}WRg$5W~&C*s`5f1gcU(!7Je>A0;9x`PfRPByPE-ODqFj2PtttriDI?dw{ zr*-}Be{f_x(CLsOlV2SESBA_+KLY8$VXAEHd|v6wdT(pzJd>e5zTbSS#xQNU`@Y?A zYnR=2^ZnM&E`4I!ue zHY?lhPRFyBn>Ej{a(hqLjjd-ssof4eY`(wSTKQgX?(MErTRbC!+TYjj+f4>y?XakI zNrV6QpO|Ka?gD2%UJt=J=`&C8rgCR_lj)b|v4NVXTkYEnRZmhO6lDEE%c(+nDpsiU zLjWByuTlxHRvv^;;z_ybTPP>N^Nqrm&N|GRCXh)Wk<(zv zOc4+!CO=Ax6=3`A@U4W-imL2gB4Z*j zm%sV!rr+Q6KH0Ng?PJNx5n$D2y5^p2dA>%zSLN^}-&0=t(e0`hKPv3eKJDUp85w4O3gBe$t2(?C`I z=Q{~Ll#CNx>Ija#D5aBSSos5f>x{W|dNFCwUI9w+!%MJv@#4xg)vG$8F&MeRLud%o zFA2E^yL>c~ksG5We%fczpaGQnFyx3>b>*K?$OdQIMAa52ta?X~J}Is=t?&d0kE z%Sl2)?VQOp9AvqC5sC>_&((tjWX?dL93U^H{F$b`~8j`P*a2Qra0EvzJ2c3mp{rW0%2^-P0@ zdMdd+<@@+{IOm#%&e4ggkU`7u=(^)PK;EbhjD^6HI2m7D)CHa|8+_BB4lccp5&{?x zYPk$;QQ0z(kQyhK)jIK2Ikudj&eSF%c~KSE(mD<4=rztDaeL>a((sO*(y+qamW~r# zXx{u(LBol~D@(8yf|yuk1WIV2 zHTYl>i7L~4a>4-~QZ*QQ9FBrpBGr50`9i~?i%uOZ%NFek#C3c&AKw3^D?Pp+lmal@ zmA-cD54F2h_y@-zAN`1FjB2c5z%>Mxb#1PmqYR(XG9*(k`i;;x8p*&U)bI}2`1Mge zd-P>b3r|t}IyxKX-P(PlKq$n(kdbk#Ytlggz;8d!Lk*vb44b~40NTyAO17dNUl^&M zQB$dK8S%S~3rq?~XLpG*@71cvXND1#=xUTV-yilTHY{A3Y-@A6Og%glD6_?H?tKVa zxJjPtfoEZ1+T@n5Vj6}-*BL{!BdvFLAAsNTfaX_gD9=EzkWbI}xn4o(Aq>3L!3Te$ z2PM^*VR`$YXfdD>fCJV%Xh}!=f)n&gG900CKb~{|^jZF(py=up1USTq{j2T3eW&jT z23~j_-~hxCy(Bu4xFXRM@-Sc!8OqDzs7hZ4ezK%(DBmO`l1uL_XM8nVC;IRA(O#Eb zricM#$ic?I1b#wE$mwcC!zl*9cISW9gc?z*)+GINqay|b!I47~$EdD2aDvlvuv)hH z{D((a*lNmA?AZa08q7nTLj2OjepB`-x5`6V2)n7Opf9p9ldA!vqQ5%2Mcr;tKkRln zR10wPjBCYLrr9k2f^sY8O!2r9)tX*&X$YWZ^~5PiRxit52!bKaCuXQ@x(OHw`Fo8 z>rZ~g@J6su)UfCnM_PkyM=g9oIz*ICeb3|?wpz~vFG+r+ywkM&L$gLK`aW#$WD%9r zOCGw26e^q#aQ}({kG))677FTuW-V6oKpwa#Z~P=|LoO%Q-U`qdlvq5Cb~_&77gGUh zX%Q5S;Se8-n_ozEN-onlwY5}LpI>dd=EK(XCKo%^h88rj8uR# z3i{s>uX_AnvYjcfj;zouA7dFJ(bvP4_Ap>(7YPgW^TlM?d40^3{(=uadmd0 z2$En%il6TK1)>79mLH;|eW9bD za!F^{Vqbvw4voJWI#B5lA%Ecw9;`ktXv!r^j%$rC^3Q{5e9*La39Ul$=bXVyhHoCt z!ox4wkc@_aHM->eDU@Y0N5s4INAc{c z=p1L;cjV|mH}fhKu8R%Lg}sa4F=4%ejvV5d~)8tB;MBNeBr+_a`M z0O@a;D7;!C2uVu*Si8ZWMR@djrntI?enwmE|KWobWVb1cpCR!T+T;*bhV_RZu*@Ga z)>+S0vCAky%mNf*C=NU8%&Nk_^G^lu*^GAFPK73-E&wb3)p+v+Mg5b1$MzV<#om3qwB zo6-MLlHg)}U|D||m>C+25Rn9TmUMQLqI$)cz+;BA>*Kh4);YfF%G!K!Tp5-zdCNMx z?^GUdv!+Q08#F87H8gu({bZ8vbhv9)-2_-6RTwsp2n!q7>M-UJAWnu~c;tK-PI7CY zqj_|5K2jTY{nTo6)x*qtHh%Ui{3}PD^+iXUYkG3UtGMy%AV`%r|G6CY8h@Vn0uxAL zKq|H_?=mC~Z8MnDxj=b^s-676_DQ>P^pAi_hXa1GsWB6E8L-c^S!8KU<6NiLrx*TdzQ zH^mEQt7vXn9|p#VR?cqG;P0YBvEGuyKoa#t;L-==6&SEmu zJfd>G@Fc6Xts`aRZY*x>16Z)wR5likcM9A5BJP$nC+I4bBI@leV{%C60~#~em*cFm zE*Lk*)0rWfY<%&oRM4Nuk8=~OWW9r$X}jWaz8#Ej8I>qG3ltKRP%Wwb3yL|lHift) z^&2fzMuHJC$0_ZBdN{hlCOb+xJrMizPxE~Wo*WlGrzg20up%r~@B#{qfV#x>3=}zr zI_N=C@2rqbQ*p8tJSX4BV;FlAMrai3K| zN>la)h2YI`GpKwu8n$r9tL&fAQC)oU81WU3)a84#@EmF7Se(#S1e2=Ax$Q|7uo~(mSgXRnWi-xyC&1b`yU zmw((sSC~#t9qHt~IV+mCpm^mH%`~t8q@NUf5q7aS=1;+sA}4@h;SdSj+1UJk5%#|34g%1Y5}!TRj5kHO#yf!Tu}yPQVaEzPRrjQ)j#La?5W zrG@LK&w`60s3h}aY)}t@7mYwijgzXr#1E|vkV0qhgBv5HQ&kZ;@5r`JyQ}l$Hm!hB zx-`OD>g7b<;L}MhcA5ZA{y(#r^m6E5^0YyFHTf$}mN_pvrGnAa)GO=$cEjWGU0zy7 zi@j*^6SL;7l+obJeKcRgC|LUB8sBwLG;c;kaVSp zt8Z^i+Kc~({LfU`C}!0MjjhfS5dfOu^r>za9hsypV$}n6Vo!NvRv<0sZ*HU6oUO%i zv7$%baFT(|ypxi@gt;X_JReDZJaa_j(M8WHzBiB-o{Ds4sQl zJV30n(ie%T3V$)trYQ#Q&WlDF5U-hvri^qpJgx3Q#0MxwrF!h6oyK@0<`?nwY%Q%Ip?FpG@GcI5^@`Fc^-7>yC`M@7EzGiBa6QMxNYztH z1xUG+WBo0>MxWr*cI4T+{uD&`n6=V(0jQvyTTRa%DO=3Bg&oT)pTZ(^>4o)3@~H01 zU{>QZ5?}fPseh)p0LxObBQ+=NQNTYZnlodu9R#HhaU(p-6{EBVE^!CWtj8w`*hj*n zK0YT&M9J3)G2@bIJDzKfqJt)-td`|pL5A$m*&{=@^xDHGS#FB9MkR56$zGDTtMeV=5mCw`n2D zx5??dA+4ENUTjousE|kj!m?&&DwxGm^j;18)DdWvOX2PF$>00IJImFNhUcr#w+l&w zIr}c8K*SWeE>zm(Lp=Yr=P?C0)20 zpLb%WPlo&I#IE!T5ub3B@N=Y)1AOe`SbafM#P$*h&Zi(Jh1KvN)x1;Z!{+S#j{YY> z{nFw~&Q4(2#IL2gf#<2ihL2}Hyb7c^jtfK2oM~uPInj163NUnaiqnZvkH&iV+fkDS zH)$R7mh7O)|8sUm3dF2X>)tL}G}CakB0iYJD5?`>l|ZmeALImtJ^~cuV;XwY!J{Lc6ohn~v)ug4PtgATR?%UH$i#7X!C`Ix#RjQ;W-TvTlI!D^MY+VLPT%K(gIG?zuz%uRjGqBg zlnR1zAWy3rXjq&?KrpvRo4mLnkBI_<$YPv@BVgiM8_*v*j!W;Mm9wN*+s(cjUny*z zYL-~PWXK;SG|D^?4dp=a(ImVJEQJe;)XdIfMOsxP9V08p- ze)h+Wxe{rSE4v^-o~x||+`r=>0tzE`fz1#Y(<}~O1 zY*2VU{a7g*-C6x+YEg^0w5dFY4RHdG2G&fuyT{0?ol^fj|Eb*Nseb4I-~DKI%CE3} zR+{&_wHNo|Bv5=d+K+oXTNhWZe$vx;n$-Kf#s5${oxab``){ANx6Art`L;b|>$v&P zzp{;Zm; z$Ui!nVE-ntVVH?Wk5~TY4~hKDTn0?`6&=EPsH|x-=O)`1kGN8G?qjrE_0|)du4*pr zA~YkJzy1~H$R^)t-^gjZa0!@6oz==-A4Ot2Wj`NuEB#+2H5h!s3NnOq9fIk2&F$9@ ziT{!1jPXEi2?saTo(_FBqjHVwaxEO?{yTZ-%q?UjNlkxj-@E{eU}2_0HXX&}$*DfE zgh50LE)?xfXTjxMWDo;KsA|*xJkIm}ZzmP4L za$=v|$t{F~e40x%{nyM(iRxB=$h_0CYDzue#e}-rzn*=VpIci5fVHNf7b-r_1Se#P z8U-sxDAQB4#tE6o_%cnsN~a_TUdkENqjwsfT3on*<4)1(IEth^b!3A%0YXFtmMV&f z9Y%1osB-}khnu)e?r;OGbc9!N)%sQ{#^V$9flCL$(I9xDdNjBsFK`hQ`D(4Q=~J9* zbwec0w`sYPHPW~N82$%Yr2CYtfU;DioSq^Q?(+?DV-IZ>+63oHq$eUn(?Q8 zR?5TRI8svJ2}br{M?7;}VtIe^@|7J%m;F@Kr%t96>QF?dUJB$F+R24EE_>ZQFJ3+& zpF!Rb$Uq2@+nD3lVE#=Or0F7!wh#pVT;r;04SN4IWVrjE9}8KRZLcn#=5zf4k&KEX zhpJX&DOuj5Dl^6n=70ePcxy=N6Zvv! z!Bxujh#g4VCxPMdq}=ii_Wp@9M;!Y)$zEzH;86Hz+B<(49v(r1$1WO`Y6h#C4Az>l zhkX1IOtz`d2aTr5g@O#s(Z;?6U962qnY8)*?766oBzzNX{D@5;F9StM8d&;LwSz*W zq>iiRlM)pv>s@D>s!a1@sRU&N5MlS0ijjwO@wB@&zs^1d<#UI;FtQR5&Jzyc0Cc3y zE%l`3|Q%ws0@7P^HQ~LyIjYPdDt`&tOXK%KKO z!-dF!$)>Q~Bz^`w4a(OGLte|Lll0wMLxXj!6w#S5v8*W`{&^`pN~0r#u+d6e7ZKP~ z7IVSEbL1S93PtagotB$AH4tr+0|SDDp-{hHeDmjabdnDM^9R#avAI1T1R&B%B}{2L z|Ao#bn%AW1r)5CGzJzC{87r?R+s$~AYBDQ=ZBla@j`eXY6NVOf$m zApli%`%m@lvM&t*MnIFEzhtl2Lj7<}QYlneZ)r9>4pP3n^6*H}I1`~UNy9n7kqlJV z&L6SWq`Y^7FoMC1$0Q$4Z(m>ugng2B(CwSW{TMw@G{%tVlsXf;ES9?Bg1&X9i_gKRE?$}D=HDDga zd7j3r$5lAqTVGQ_088&R=&;Gn>i8pj)py5Jc|Q8O`oCn*VKcc|t^y83m^#AHLO_YIi++ygN+xUhF(Shsq`{{x&-0+WKNzynQ5Zhd5}BI&CG@z|s)cjN7B|2|^W`(r4r01<907@^r8FeRhqsd)?73<$desDsS7lD5h0ogFUCz=HkRutEGD|#ihpx~23($z=yg@1 zxK5vKzd{D^rbJW087K>+H&V2nXhybbl z_ty*)$6khsa@NP$Ut-}h(TNg&020sWFCPw7JJKo%-_IvNm>|{uILOp;*H6QnFBzAp zqpYIE0Cv`2Zj(`k>ezhk_g8B+Sp9mdx>T2|;W696IQ+F5JlvlDxYjELgi}0#4fZN% z#)%JTNU!Lvoke0bllc#JO=p}1wc5r~WUUVitB%WdiT+n1!bB}E(;X~1pAg0C1CJ!yjZ- zNcV7nc%@wP=fP>MjbJiwgjVu3JQ=6{hkT}_9zrtChVs7CD@v(oHi~{{)t;sM&g9Gf z=)z+X&sH=tYEFqatOcME1gm0gOBS5btP~00Si2dCL?1KH%HS4-$x(RWFdQhT;u1vi zM8tYIx^aKjt@?2~VQ>SRxx*II=|c}S*)ul0$4$^}a_6P1bgg!@t+sHMN{99w4N<SQ!6vNj93Trx`ahX}fJKk-$Fh^GLQ^kH+%a(Xmj^$xk1y%{0XARDmoP z`93Acj8o^(D_=tqwN*d+-DHqbJA=8X=3$)g?N)aEt&6^(rVnVT+( z^PWsU#z#i=NRR0_0J^YtGKNSXJuZ=*I*b@qdJpMIyZj%?$Y1;wamcGbFSE{)Mo$+8 zzJr`{?zmR4-oN^UzcuxxqhpnHtfc)__$4~h+RDH$5|&myEZ)R*m-aDjV0?a#g6&vE z_a|qq%TbUtDj-VFBkI-=Qqm*wzngpHV{*)y$ZB9NqJUn5(1d8y z2w6L;=V<6ZkDNq5wiNu*6So|gPd{V%2w&wgHf~CTMpJ@VCf{6iiAgz9p^kzy&7j6V z`h7+Ax!S^I)Bse$c*y!BVk=b5>uoelZJ67u zs>2wiq+W5R~RC9X4Q^O&0pVWvrTAM(4at=8g@A3)x%zV->ENwv5 z8yN9+*%=fz0}$R!h{!K(E9;#Ju`|eRYK#2%vGQ?AW;E#BuRek>9(YeF|KMxP9tXP^ z%z%Cvt;}C@B8?m9A;N@&Ve#YRB5*>p?Bh$d4kDEsFw^zv)k8E8N#@N7kw6W2^!l5I zlxU|tO5Cqp!{H4TFk*1n)mf;Yj#_g}M5ht89SCJ}{`~dN@E~?Jk-XreT+Gpn(!VUF z6o~NK#zaka5nx~c;XKAl)v%?~<9Vj3w+bYzNV_&ZztX=Tl-55g*i9DJ)(4m|TV`OCujiFdaI-oI|4BazUrI^XO}-P8LuQ9h)kSBPMfcHeP$A zmCKgH(Hqz{OwE$tt7ZgYH}n?M=Sq8&%zr15#8ooEt;1qMAf|qLo1Geg7Y8PK_;0zq zi;Oe?+j=Q3P+D-M$>M9**n?A7rQma1Xmx zQ%Ntr+YZ0-ifR7_@II_WZ2m`!Use}pcD)L@DxL`EO3(^q1MGscMSc}%Q4}$;u*cQms zj)XH`sE1M2>?t?CCYecZdZ*Ut7)F#KjCSz`Yscz_^MO!(YweZt47#7764qUNqK%^Y9d)8~T3Cb|eT#&?_G$sIyR<;t;w zZxSrDmDNxJ0L)Ifm;&18219_+wRjf1v$}4tBm1$ zEn0~53q)DTUMbE2e9Ge|;+rB4(hed;EB4MNn=^(V0BgrrH_pp)^oS{lm%Omv_GhXO zO{OZ4V_mmX7EtDigNvq6&)Z__>}_pBf_ck0kI-c1f7d9dZt_e9N^SqeFovU+t~6u< zhNqjHgY^CZM{>r$AL zwO0fcOEFE#VZnbeA&Peb_iKFN_xbskzj1uTw0Mq{ZzBNtvXA$O(j?#t`hL4#pz)8 zdZvcrBLf)K{1obI_*#(A9xHU1#8sbyCZCBNOZvv^q0~%0)Lj*d>5%k>%?wYeaGXo8 zoY=&n8fg4nl~X88TszT8NtdD7%cWG4+e_hIH>I4O<`NItl*N*_ahOs7xo{liS_hIs zxJcRb1Q=Tb4@cVV}BXN5muwBAFrU7P3vV}WL*QJcrVx& ze8BIxHrS;_HM_IlR|4znsTLqC>~4)tdkCIhJvi5pdwub zfhgc^1Q}!5sMlF{UU8{2uQJ}H=Oe-VVMr1|6ALdtKScigyZOZn$TtJUW1;{Or<{br zxFP)Ost^E+nQ{>!5IBH?hYAEf&%3{~0gLSJ9vDg}ABMMiY4sN(^Rcgim+kN@5P?gX z`ty)5r?g@|M0NK5VKXNU6-4GyIDH+XZhl+L!r^`rJ{j4C zw4<>au{)8{-53clrNE*Jrn+oSE2``cSE$6J8~MJgoT!@rm^&~>@pyUsJdV251?%|P zB}Wy`Q+Dv257uYwFC5oD>GQ2Pi3AcSmml&_dn09YcaIzkYGA_^#szv644YV&j;p`| zx!Y@su)y(^OGvTT@YRkUyD@WfA8gGn-!)|A?zL+t&Bx`Nhpa^;f@n}Q@ccZ=nnp!oq7kU`cVMwx+eCA zBlB#G58JO@&Gr|SPK|Q_n0*aL*1l9~ybP&`& zr>vRGG~bb?t-3bQ`ZsA%dO@L^hXn}-_=#Wm@)T9>{ zwxRyu&I51=msF*BL}R)X$P4+Mzxy;tS$4G}{3y9prR*ZIq_o$eMyT4Y9S#}KSP>&q zjls%lyo@M`^;j%mLRataRAXsGP07^%t9BD<*GRj_MdD2-8VH#9v1t+|CrvlrIzXYi zhpm+J$QE%>#$YJ=U*1slyG*SFt!T#lj=M&rXDDlKVp_i>MCw4pE{?LNyd0 zhje?GRAAe{yh`d#M#P`)&7sF?)=r33%|E8EelK7P0=2K61VRNThr;VA2j%2@zyekF zB*WO1e}rl5U3vc|)F+*wYi>E>e_jS=!Ay6k6>ht8LXss%NvgI#hz8{*(Fgad0v2!p z)ZT1?3Ek{_6L?B>rG`_rRrm>fxX8(J7K2B!nYHI*OL0|A&Kv^CBQv> zK4h#XL77W9tPieoYkHkrwX-Qn5~3Ykm43FBY2>(B&J;>!btRF;${3b4`UEf`EsVC7 z=miklgVt^Ffjth>OqK)5*m640P9Ft;ZcLHEW9*81|CW~OZEYoi&Zj=1SFXONmxwMr z*3aaKCBdnRr`tplDOF)`l%rh@8K&VZwkBsaD=(yfWRY-It_O2OHvmqBVADkyTd4>w zc6_9nL1h+0rwm7hpTcpZ^1BRcts|M|&(GND4A951@Co5-Z7tdiSm`=uN$QW=q<8NW z$T49C{&_;Oh?Xw@h4dt3ZEz!$AWqJ%{Mes3 zv2ks}1~6uBO_>~w`;+v|yk#icA?dA)dL93$Y1SF^>;0BL+-WXoi1gNcOdd&diUZKR zy}{q}dT`@!(GIN0l*8cj3udz89cl2Fg2qS7g_3v~u4TrZy8K;)aoNHXD$mzJbgHZQ zc}bTP#pR36>W0pJ{3>(nY2P806_VO4YsdUT+hcLVH!2q}XmNn8A&!9UwfkI7d?B5z zdVF_&?m9~*{i_*jVz0=@^L{BE%Wn7aAW~qjlw8~v*LGb5(yP}pddgWSF{zthW8`?$!XTpfs&P*_>{nJ# zqwW=t90*f&rs=5T0E*ijnrU~i}o&-mSLMlH>p3Dg6~Y9vrrR5F4d*<&lc+w}6LRPk!}Djm5}Q6Y{Z!>4<$mo&~6Vdbw{J zB@cop4mxJUeA+&s&8Cf5>y!COd4SxYoZkd*Ck3PufsLF8OK9_T>+-eu3&^^XJhRqP zB4bEh2Z`R@&M!Pu91|tLdJ3@=8dj^ogR_NKRFVz0i_>%%!}sY>jm>gxksf7YgcB$ zeu)*(O*NOa%2q-H)UMPBhGs_m-~-Bn$e(X&AviK1?R+UcXRe?+Yc%zNHo*mOs_~0X zLR!6jR|vM^^8p!DCj*z_sMs5=1EG#J%ce|J!`PR+Ns@NNje8qVLs-2Iwm^d$$hwSU zAa0JN5H=cp=6}bR(+h$gp;J}J+ek6kWW8-1i>l`hlBF&;0s6u(^z!9*ZYCu-H z?zl!kDy+A2o)$LH`j3okGN(_LbW2}e*;c1wvJ>@*1dZ#j(hnGPwdWvrbgURTF;N9( zcrm_Ngq9b%nbDVoKg9KWIaktdTf;@M#rEj@wWt%gi^%^|}*z}3LU(BzZv z_&ggqoxMI8S3(eq<9w%2=2u|23#*!=@=)ImvQ#mCZ>%90pPkCpKvB`otw;Q>;UBw^;&$F z)Ywdec9?qPfM;;$7taO+NEs>#Ja#LQ@FrO2T;@n!1(>kO2NSLx|5Ygt{63dSZ? zTT20;r~r1-ctDk|O3Nyp`%Dje3;-dtD5D_kIgc+S0?`*T*~9$v*Z8pdIO#^)3MUAr55p5e zMgh4(E`{?;b7r<>rYuc%3IjA+yk;U!rK1F>M{XC8b{AH{MO?o_hdGFipicj4ATT*7 z&7h{GmAdi#BxZv9kh|buNAH5-*Sbx`tHa+|OFUh#*+a7%sjk&VRkGgH$579qZy1`* zZJgW&`UFBNo5(R$ZWc98;`5b$__mF@t%^cSBmy7hQkF3JJ<)TJ zN70Vj(;@s>L>c9UDAsK|R+2=~K)#&ipF^1j5O;(AZKWboK!y88Lp0A*i`(vm4o-G0 z|0NZFYuxu)-dl%02L(UImOE;s4qNlfL}nTx0r~dERn||k=)blaxm7zlB+eShqtdb< zlfX9c&>VBzKdXT7`+*{H8S=qk{&udJsT9f=pdZ!M6Mf?WPNL5gj1ZA8 zu51@Jp19G~=e&B66_-E7ptg;Mgg4nDweXcGA|}(v`;tcAc=8z9QMyRyA|e}!;*K(WJ>(QU1H&1=s$gIy z^SU|Kumz`)F*CG{ml_mt`Iqa%OuB5H*FjL5m zPf-ws<_M3^%3>QZ z8=FccFK~EB3PyiIJi@pY73>RLme+V2r3N&(ip${5Qa+`tAq<<8aRO2;&+doi@L;rM zW<(zFOO&WP(c6R9&2=kN)&{aq*UOr5u$r457!YVGNsG_-0p?kJuV3ZxtCj14bFJ%A zOccqsCQ}2g66vQtNRAMMrV3P&!Vd?)z0%?wmqI1+UEzq11e8l0-zP3FHsD|+27v=< zJ0VU2&RB^-_hn6{m$#(J|1(}@m>lC}?w7kQ?OculGu!tzHaGXT+#aROM}s)>slAbp z>A1plCXacduMF6f&CCB8C^P)eK$-hpQtlki|Hoc?+;@h4G|Wlb+^t%g(S(LI{M|1| z^gBM!2ll212_0(GF2<9b^bNW%ZPe|hgM;<*VEqg0T>99yyL!R;-p=NxfG_^+`p#CX zFMrwD`*>yP|HVCR*0j<6a-+GlRc$PF?fS;{!M~A5B~!Edra3zY>q|=;+x_W=X;k}d z8+!e0@3$IcMPnTep9&`!9`%u%`41g>+*c^#ivFuEIM{R32UOiCD7OMIU2-=w0-c^0 zIApEP-YDu3rw`Uqe?zk|)dM6Kl zDg7$HZ3_>PNtRLY$@z-KeSf~1%!1-x`Sx{oxP%%=-H81+RlZ30cb?>sI&I*QKq~a@ z!6sJ0I4-D*(@3EaDfA4ChK=1`A2*Jn_|?fHE8!D##zYzP8qxORARegdNSrU5aa6?n z?0WSbqtlZ5&Jg@Oh3z(qa<@{4&OUZzQqXbZzR2lm76 zJEy7`w*lgZeVflN9m!a!Z&0P%b}TnT3}j8bZ_$TO2+%=6gQil&N*n<>09}!A=%yYa ziK`nyH)FNYshB-u3lJlTn@xze6R@$?#5u;`9-a872>y1*ksuKeAsT^!EZ1v zwN}F>aH}45|9+H^r#WH`A1ZCe(VA&YaBo(>@($`RtW_Ke4Gq!i!+aP z|Mg!6p2!O1`eH7d1PlImg~ByDyPdtht2Nij$CbDzwbgQ+(mYwMpDqye%=1YKrvuSM zkbtfjLY@A}b-C3;Y}F)JN^^p1cTiX+pJnIoX;@20kw+LzGvpweYB{FvLNl5tI zy)VSolbLQCrP56b21Vi4$%~;q^n6^F!W}V40e=A24qd)5RxBD_UnCY(uT5`R3(Qu@ zvncCJtUE$bpGUHf=71581YIS#swiWH5yBN`4cTr!-aX<9#OY~bW|gF2Uv`HP232z9 z{A`(<3voG-SX=tnXPFC&5$2l;5MW}BDfM>7uB|E^DT*v{X%!| z+3sH&!t2{>o)B~J_?1t$UiQlZP6(YzgS6A%it~Y2kBhKkgqK9)b(-rD9056VS~pUq zq34F85omY>fYTV5sl|n}2eXJPs@DpoMWYt+#S$)R^Ru{FwScxMu?eXKMvElFGw~AY z-4j>C2}^+gN+ELHB1vS{rTp)LFt7vYsf;#t4hy94o%Rg~h){#ejq9f>}bwcwg8p~9Kl`g8wy|C)q2=9sha!Mc9#gJVL*2VYv!KvBZ zK&%T_xTU-O9prCF)z{^{KVuMsO=SXt5m3L!RVUv=e<_;2sHXj7Jj0<#;;Pz6e} zGZZwflO-%eHCO&mXcwj5TG59ICTV}6+CEAgTbfeOwB zIk^BEE;?iWxsTEz7p(`vLJa<#W?gt>uKx}LZOyxHY_q+UohQoT**wP-KosYpg`L%ZSo+0`o| z$Js^2Q%B3|%lmQ50z&bBfHIZOGm4Hg*=>h`ul7E^Ls+_X2xfukS+A_BzwgICB|M%J zYNsSWtM*Q(u$~}38k(e!8YqEkmo&}hheue}la*#y1+vz$FYR;R#WLms`#>PP2#tM> zpRvxHFPxgl7@2!h>JF-fS<4U3e9N@7EsEMX2A^gKfOyM_L&>`3cnQ8^f2VYdaMB%P zmFp$P;tXYu(OaODgzPEvC^$+Er_3%0i0tg0?qFQ}W6I7H$C8`OsbknT!{e0w$3f5*T8L5~7{DC$ zw3V&5=K5X90-BzyaW4PZF|~mUCu(R==XANI;>MhEFv3H{Kk6cHUdn*W4ODG{#3h%g z5q=qJqBo6FW$ha*0;#u3;?l+Agnr8-kd6RPYP+=cc6I~6ISt1G7e*pjalB^kWeC~ z@PUg*LwhFa0(vCfn9$AY%1`&odK-kiQ}ZfRa0USZK5tw+5m^GK(;Uz`(%g3umZ%!2w zct%AyY>XC2heF%eqcCg5!UBji06y$=xdhSJYDCG?&@Nx8ftnx=)XLp7H=b*vXg8JW zA!2Y-cCeLcRc>NG$Z7Y;#2>$+Y0Y^5xw8bSm>|0r{4S8x0VcN`R?aWzqwws@jTySo z&xt5}S)g&!FDu|LGA%__jAJnu&*R zsN^H7G{4UF-$JyHLX`zZu!i$uEy-)oIXBcoWWil_ay;Bu6*-$57AxGI%0JB6+(s%O zkHlb;dDir*S~5s{X*>1)*o>NP5=0AiD7YSLJMrpafn+XyaBLPv`l%+bV>{m<210lY ztfah^odMg-oh)5lPZ zq93SF0+X^{#Bsuw(%s`8Mq2gSo&jq~XxGV^U5Q4NfltAkekrB06yy&vHsHN=_)td$ z3cS>Yc&%;U?c(Z>t3{MTqgTa(MjGEvDV%%b>~;O;>T*c`9+ij{^yX&8Cw^X@y+vL2 zUH5Q07|H%__WclR%IfTmW`asg3#zD4m5AI4HDwZ;>>#X8XR4%_F(vi#!A4wk^2deQ zvSbKdEG`w5}jid4u zo3%P8hD?V=zzM)CRP?5R&%8q9%m)t@U1(E}A@P9iD%7XQ15djL#WPSWo_W_!*uOzf zMo(1Iu+CxN)rvh;t8(xzzR&RmTAs_6kef|@l33@=BboxF;06ar9Jw5;Qj>92${iY) z5_LxhuO}lszLDnpDYx*FOf)6{IlQ?AOX$xKL(Z;W63P3_1zZ>{55Yu+QY38nBgxv^T33t=1!{1WMcmq09>UaG`zAGty8 zb>->TE4Ov4G79NuNr3S}ac%caI1dFUw1Xha?xUk=8H(=`3@@E)qo&AG83YD?;LTwW za$F)Fa9MopX6G4DJY$WIXJ!M5(t4d{JS-ro&NM5xs!9@y03-cWU|M(U$Yq9QTrI^t zH}i7kGS+@2#7Uc9kB)&;*K(%2;*BWdV-HD`+>6py86Y*bAwEHCNSMZPfV?YcdDoIV zfxFb>&o#)p{n~?Pr~Nh+1{Ma04bY;GEB>Pwc>HjL%VofBC=a?F&xIl={h*P7Ctl9@ zLC|B*7V4wdj1D@?mS#ac7CQswq}n9$gpv-}oV+TG>nwje!<{KIc~g<9-`Pq;QR)TV za8;7`^WC_<`b`kso@DMWA(G620q+vka2Wy~?DqU5iuH&$L({CFzPCqr7Bcz>hcAeW z^bdzoLK(b%e*|Lz0N|@m;u#`|L#8U?6;2Y?#172bC#(|{P-z5R&@XyJ@)+SLno(ye z3|jDJR!7W=63e9%<4RyV#?4jvQ^73j1m{yUR|#%IT23%IlJN+4kqPdpqfTlHR9CBI z{!&M%uAx}w&ptep#Uhk%74 z5_GIauTfyB%CMdSd!rhWOdiz7BH0|$4=Qh}%u;9atH?&DoC#bKX|kK7wkDqIu=fhQ zCH{m^cK?|C3>#0IKK3*^A(0D;L2FOD9Y}y!PN#Ofxcu@ zsrubxz$gQ;9ijg2NRZoky%P}$3s<|=^L);bmtZqksV?S$n>qt}r|4IM}+zt>iC^91T zSno-pvf{SbM;+Qttg6T2S%oiLmuLGfKWi3yk61>ReK((}5 z86d6C<@z-6QJxJi*veTZeBeD-^*%C_C7e_TpoTI?aay03g2?Efo6au0Q@3jgtZq2` zbpwc6QsU3#_YSrRwyB$%^32ve~L z!Ft5(Jl+6v)BLN)P5t#_57|kF(@Dha+}>^u_jdl<=~C6kNANtOU(==N^mb*m@qW8) zj?pB8WRS$Se{IXXOaB3e;u%YP*ti{rLje%-n5Tcurm7A$b}pAJhUrfSd*#Mvz@5VJH0m%?x4*&|X^F->F%_{^2f@t2Wh1X9MI+yIpSA!UOF9h1uFyr=2f)iN;bL@P{i) z_rcKIegD7y=YPP_d|BVw*-io89Bk{=1|n^=+x1s}F)!wQ!=0x6-@|1@vEa~(_eZ21 z7r|M*AR>@#N7j@RTih!#%~HeJ^Xa?UyIZKa7%~^4piXZ`ZXaAEls7#Z-WOZ1ocVxy z6u?lVEu=B!TOW39PpOjz4-tdbkxDUi5Uco+SBv+^Z_(v|T^Z;g^{Ry$!LiL^~$spC|BR{EfHJ8eiW5J!}m9p_WE4y|BRVL7^5 zvAqyhFiKTSYF{3);xihBVlPC#6V zW!mpZyUAIeN9lOi-J8U78J#nYJeCeiV{oAprnbiH_S(oMgdxozSrG_oo-+@RtlL#)QZc9!S&W`Rw+tMHqRRIgXfYb?S}QWH z%DERPn!xkiEmmE7&Y}7*DCrR4R-Z#U_&{zWy3bw<&rbTZ)}r371B=_%nmIxWm&oCl z=|SX&L(9kh`ky+6pYd?SP-#oG$^3b>FKvg8B+rdkA!hy~=qEB-#4KdTgc2f3WTnG^ zwT9Mgcu|f6;V1EaGNj=*DqO*#(Oa-vz#9{?vP!ab}uZz)Gaa}6}KR} zwzKbrhG$GqPN@`OH`HthcfVifanZ`d2_NhM@<6t6Y%&Lq8}Eh``SN?}O>kmD%SGjR zdumoV^g*hYTy9)fLX6~16!nlx<}?Ru2NRDAWeZ$cD#P52kkuJp3|FVFS|B8#m={>7 zYFgP>k@enNQ@wZ*{G=ugoW*2#Tx@SK)L>TG%W!}`=~ixHwLxNE#iBaIJjyy>{oq5iuiOV45tCI` zYPWt_P%-WV`8oFnUQn$M-Oebh?)Dp??D8g`K#UDurOrHBVu-wkXJ$r@Iu)q^6PJ7( z7C=}lsA_3%yHT52%uYCBZIc{Ve&Mjg*&zFHbCD%#M*)dQ%dxTE#qz@ZG;+UISotg{ zn4mbtV8lbzo}<+)5ju(C?A~Ft1k`{!bHW^ryb;*|3sf<7XEoXo%t-2k;^FMKC<;bo zHbo2R;E6)(xDN!j)DZ>J5ryUv62}kD>%HWAOrD0)Oyi;P+3lzJC@_d1b@OAPr@Bo1 za3UH29=YLWK&XNMSQ!NXFRq$X`)1Qc_-sf=KRd5tDGJO=c|GRQ`uW9oFhKq$d_Qy@ zq2=9a<(^Ql&Sgh3bsPOgj%8AP{29++^f=lQN(hNWU60xfzWrSs;6+1Zu3fd9#g+-U0aAhfI!l1MxT!Aoc;9dE~)%cG8J{7JE z1&7ax-$55~-XZYZUNXQB8mtRW;8I?v4}KlO9;c;BGLueS)Y@o0em)NoI;F0a>QO^= z?81d2Bs3M>;URQk46XBm6heqAC#C@@ujTUeMjY3t`_~T z?BpMNK>6KG{n$=|s>o8LKP^1n(yN(N^ln$&lcRCMw${vasWP$49T_6n-7n2{9|JYI zu-Un0F`%Mbi$r<+$eQ&iQ$G*sRa`t7Ou`+fuVO}-Hay-`^ix1w0bZp z-i5?XgM-PM-bJG0W5T5cOt!`G*>y3K{VoX|tTv4*HOmO$RF#KlzkmJ-lH1g~rbzB< zuF{pi!>ZEfJUzvC$wK<^OVO7<3AJNqm&4ijK#|KjjnJfkZDN*f=Wv zHy&Y4#TfLH^p0I+zT~!b(-vV*(J$w?>}!?O*5KF4J1>CkrJJayujIs*9})7!=p<}} z$<#H6BHLO0nNTw4g(QVLaV0~>gjFr-Uvj2=jP3}cMQKl>tm+T&;u?7pC~iL5p#Ygm(5@j}9)&a*m<0VBWJT5ITorY~tAGr!8)Z}CZE0^{4cWdNNw0DT6 zA?@ENUaoWqo$LW7sp$>c-Kb}xh#dl)yz$6A=LuY}5TQ0uglJUQQ7r6MDS%Em3gBzN zwZD%V-<%t=3!zgM-({c8m;3aKQ2+q(ByJBbonkV?r$2+27w!*l?0C*gsAIUu2a#_; zyy0ZY5wdfuRcFDnD-P75)@rE}>#=d#a3F+uXu`ms5jO%{CeXwwoI(ksX88gomym|? zITP9hh-o9NY z1PytSz#-bsLXc25)k2DiYvJd+4p!{+iEDetijbVR!w$YW z5s%0}B~x*mOjAUhiqMfr)wRBTfCGCFT3t5hSyl+;DC8VEBb^-uUGx1Oa*wy0HnQ`NC@)P|$jI4$pQ&}nFUJDvvYh4%|tX|*NSBWm1AYP9zGHqVg_gw1zS-vK^%uC$G-jx6697Yp<}@c78VIM#g@<-v6Mp8KV$cEi72h?HPTCL7dQI{@{s*m5C$()5r$lPg>?G`mP)w zM(aXa)3POBVQMKBY#a04eSR^SzPMc++=3ZUAsRd~m1t;h#=nRchQFz;33yOYDIqD@ zh&-^&jgTF;VND_5^f?GmsK(Erhyf^qQ__TxcGg;woKu0P#4F;0s`L zbKQ(AB5aT;-!z}=7RM`OV=U;kp7ED(oQasKs}+-Ji=Ph!N0LyGhq#-~f1rZImx?{) zSRsrJS^02;3lz%qwk^XgR+V_oB-nLka>4rqs!WOu48H7x2hpzK1W;_?mj}h)NMA|> zhksv)(qE6pybB3>EjJ&oNLO`;CQV#KiWPr8J0;&G+QlIi_iYy1r1QgS^jyhXro2l; zts<@EDJs}uNS}tSkh5Q;ng<~ds8bYB4tImTEhP&>jQkdOy-|07L{F9(E)aXp&aWPP zigK?0>xqs^$vG#v#xqXUDopk?R)IvE>r~WOMBQ%W7GsR5SRIjd(V zKN0KWcSu+koV=M|>k;hAHRGhuFV{t$pIUi{YA5i)O;4y|(X~|7o`h2?oxCMNLxDq> zwMIq5=-S!*fEm|pROnN(%-Vwhe*-ch;PL$x1r;u188w8_!|!QWJ#Cj)9B0QNp|64L zll@iV#!`M^3-nm~^i1~vJW;C2k_`h4%-h0OPC2hPumlXLc^=Ycw zDVA0V7s*CCZaj;Blu6&q!I8oC|ND$qDA&S)sqBz{0) zD-dquvd#to ztN$*-1vUNciu0zwwS@;be6m3U$SD{h!Ga}v;m{$(Nf!Gt{+XKa>6V(Q**Fd2!f7w- zTmY)LgEsC)Rua-8mpOjim@$Dm5(B~{&(B%p!TdJLJky1yFq&UO9Pry z!Fsw#Y42Rj&y_ba9R^cKe_xkY-51B@#ihp(wa2hExHzvosh|#TF`J1BxG~?}48j@A zHvnM~lb0bqDj7#h#kcZ1sUS5vGUM|pjO;^!Tqc&{FDb}lD>}7EvPs4vz>0CLtGE&2 zMGEz&$E$+38wxM#$!MP(i(C?|rySf|39mCQPXrMi=KYS5%2kMZa2yc#6P*&LA}8c`OE!;a@)hPl*I++lzzA zz3@1RNb)Up;4?Fi1>fH<!s7+m#LW%UKFH`;-)9_^gY+wNuPwNi(z-o>6Qle#BIaM)w`-~lxQ-Oad~qX9|&q7 zCuwLr(D~j+{i)1PFkw3T_&LV>v-ZLK+CI8TC|uza!{}Y8K`6tuKGz|vl%ky=k>kk* zIz+#oLQg34i_yn)Z}AQdwEy@aWvf2M<1(dQIJ`V}gI7|}4Too7tELAs5BWx7%PdKQ z(=`u4s=+1XfVGvQr*w?aCBg4&+yJ3^CC4Cu|JeFwa15ily6w{x-(K(A{PaSjyK+OB+jH%cj{EgkNC6B_gY1{xS%^FDU=+1~l0SMO|X9Uk0TTYCCsV}E~X zbu>-bB^VpOPz%1Zv$u7)SuU*~R{K}fsHT5F+3CCGQgzs93kMtZ(#}By83Ed<*!xcR zo};U^pGsgI4wMboAc`8jd-J~n-ZX=={|fM{vPg17@r!oC)3KeO5N%?>ABq`xGjUlp zN1*@9S!oZ%0OgX>VInq;^_z-5{$=J+e~ zNrlCuiMq+;^Do&F8W3C|3nD%yk0mwcNxrgTCP!d<_?3F3K7C8Iz$(}1w2_=6DqEyH zt?>4OX2F`G7Wb^Q9$Vz$1X-hOag=z`lHt?70P;5gR>;N>HE$WA-JEtnrHS^=@fmSW*d&=Uii1KPRtP=tURwyz zLMR%^u5sDC(^g#ocUbQn{48)x!;Y_qBuO& zN54SDVcX~3KXEO2%9utI7{`;)1;+O-V?3Ec%`FXs{bKy&z2TXHPzTnT!u^b_4QJd_ z2!7}f7)G-63cBd@= zC`r(>6}q4`CVH3zkjCT~-HKZm>T)7}Nd_iPPj{imRo&4G$Wjt`P>29NCmk$g^aL@a zWS1+s%XR%uDIN(^b-s7p$&|DeO^Nt^XCG3ZG@ck1C5Bf#cqQ(UMPZpb8$7cxn)HNC zhS`e~KDYPJ<9_kiSJexgJX!kuAiUheMJG%8%Qqj%Uif+GniMdTT{ihat^Ne>SjS8o zp(Y*8P96T5H48qB*%)0R1h^a3SM9ZV9N2f|2M9lLQoVNjzW#HBXu$YVayJCDe9!!4 zySTMBZvu*3FXZg!UyQiG;#0hOHJfbEud@?>4hW@46gRYSm3gVUjC}Z)Ze{pb1b&B; zfyvwz0rM3Fpe05wkw|J7{X=Ov68?61WA^H1?~%Mz!eF5jrc+9FKx8Ew)@r*57_+Je zSe~%4!bd2*=x)*i2R%W6-b7`qv@f6$X;Ha8?^!~uwn%RTX&C|#=;jzqOxklBvuGMx zQN)k2*^~V@IN=Cst5ln&mS!`CjZuh^O*SpYcmv1$WOddypz-*35{bqe@Y^OElYGgA(abj2UlWO#ZC(sU;LM~e(rKSEwm*X&* z;5|eO3v8ZI!>vv!CBzyy4hq%RgnvOac@_dHMHL~B%wD5QLer9ix1EHVT3+w9K9y>E z64RP}Zc2VJyfbF@sR!qsClx9SZ)X@_v2|U4w-!QbDWQ1NktV!(7pVk32!Z6|9=^%= z!^`61&iQy_jwgWlV8$61Ki!o51{0$$HYrvsBUe6jdlzQa1<&V!anDB{%oXG>r!QiE zV4T3p7#*2gW?^raB@Yq;BuNaeRq8tuu->S>lEhQ5Qhejxxu9QcN{Yk`&74Y}#=}XK zEf@8w%A_m@LUJ7l(*}dtL2ZW*FNM<}ShdTK^GryUTEJ%I`qdvemDMdHfPKo?fL+*gf-uzwLMm|oj~^!Ms0wZ5RKJv|$*+Ea z_62^{7I(Gw;s(p%;M}HJ1l-wTQPro&4FtsHc-TEB@S!YQjmkD+C>&i-@pYVJi2l<0 zrFQeO_>i_ub_trksYrn4dCKNWyafV63WvY@33=D~6RRWsn(5kA?o+A`@K{QQNMiBf zsitNDp_BPUKihdG4<%`D|4Lvps+pLEp1Bf^S|KX;nbRM1T<{%y0F+qdMr7oqXugo2 zM7NXB>M3`)sVSdpJNB6z>a@NuV=hks5K#f7N0(wA3$_fRadO1n9d#C?0XyFjE7OGq z3>xVz3Yl4@&G&5%PP^aYD>WR zfba@7_tM{{4SYJmb)?+1(+Z5LC|r)0<9bd?u)ZN1526^2-~7sWiZMYf zsv?Xo0|L7?S+RA2c$9a|y`@c3U9$+yrnjGS_uJl^Jvt^f;k@1squH4tF%#_3pLJm? z{R3o~(Y%3dfGfVX_7U%zP$mq>v!4A$))-T6+&Kzc@M;NvAKSxOm}bg#y~1D9hM^^z zxCIqtPqp597w$s_JdIgtX)TOVy4QHF=Ja#%_AHFe+hn&Svp??%*PrTq+;+XB^*a9; zBrQeft`@pO$iiXkVYTuxJJs0)mb}8Cj>(>kS8CGRp;0&kWgfC2VLSjA_dSdYlTt1o z7VR3T5yF;T`gC^v&=QtBF&wKYnW7H()|LRako-h2x;Mx}QenVW*p4kUqvh*(Qo~Qm zGb%CHq^Ct%>5D!}{7Kq~Z`naJ=@pSR2OtIeVodu5k7j)fo@>kwW4Y7r0|p>{N(F44 z&ah$>k8GA_2L!3d@mM?^R))TaRYU0PDg{$os80P}+0ta9*ki(}bU6(*lGzFUoXpj0 zc2o`F0cPjXGDa`t2id+8Hlz4pnrO8Yysl{yTBovy#AUKukq=n`kXtC!45N$HM4 z0}Pk0ItN>ezNl_08_64_4~nHf70D@tPsrl8_;mc5oGT9BRPU?K26fg=i*IsMj{qEG z>j4FyB*q?g=Y0#6{RW=9w9hm((<%A&K* zTSWjgH#niGSfg~b2xnWmWWp_UdAK($KRhbjm5GxAgJ{gjEz(jdxvTZ?+p?wK{J4Sd z_Vr+N2o!>{tn2JChAKMA@Pq6=Ri!4HHb^6~1U8QwN zF!Ugd#pvP3f4AsgGUNu+6H+E*5(8_$MxD0~9LOm!4}jNY>W-C3nh zpKryBkHSbV*}e;DHj`lhkSNns4$UlIOm$I5)ePjSKy1+?s!1$U&)ndx-XVPjWkVZg z(M}&}8G@j;gQxQYY9&5k*6jNwJ@BIl$`6@>*iYw1IUd3@x*Q5sM#CRWs>Th zA@=!#Q!3H*#^ zjKYQ0Y7kQqEpwnd_XS@iZ!aki!b2~|6$w2zO(*WY?7m$@8pMla8u!RyyQpm{GanxI zBgc|ulUqgn*r17=tZWb0;^GV6sN|dbI*4J3ih*rYCMua+(?ag?3YrugkJ9Ly(9|^X zr7C=ep*tP1G@!_@g{0Wq3d+FQeK{hmk+3I_01YPfR5HrGs0JkhjIP2tMxkQdVk{>@ zUszIPM5rWFk8C~X8|OC zm}y)@bbcWjni@{dLPNvuM_=}Z#fC0*;G8bL_s`Iws<|^473XfSG6h!x{zk27>Q7i! zXj}dQvU|FFE1oTFO!&AiUm}H=7597we(SwW&e>*=wgLi;<(NWz%>yjgfMmMxPE)uA z$dhL;(@O^QZ$UrzY8!0+s_GfKCI%6{Jc zEP|F%qgY4%nwGUI7;S@s0$g3B?Q%~T0%*!*12HX7; zR!fl*l|MIvL>x=yi+Fmv~|@yho?O_WhjduVDHosQH`3R$vdF@)W(iMy&_m=-6XYt=`_ z!*TFCRq?(a;T$rUJUlnT{kDIK3!V-Vq40q6mq6s*Y z?K@&R2tu)L9>T8>DddSY2yx_qpvNtv*G#gIx%sw z9I<%w=L&H#F9UeKuLBX3pm@w!20`{*kFlZUN!XzhmAZ}t!^4mB-aB$tZCgAHJL!YRRU119*e5jKVmCo(_MYj{IG@Jj?hr!_?+R24 z_*q5>2y6(BlHRy&$X_F$tj*o&GFj7Qy;k@SdAi0(lW+iS+!rrU$lg!{@vhjF%lEiP zUZCGKSU>;+ZK6}#s^dtd*VJHOs9Ajy=GKW^{?{dV{l8Lts=G=kIYlRsMX&vC5z~fng{(0X*C zA}!ubNDAh80U5O#?a5vD(;nQ&2~|p1*lXtcK@kr~9~TD~fsxH-?|5H7 z?mEkvAk}Mb@iU4bJP4^sFgsgCOOTXpcj$af=7m*wFI|+(GmI(&+Rt(V4SDrW?65P$8)G2?Wn^IpcxP@gESvS9L~d?Lxvq~ zZ2xyyoaq%#s?yZz^P)SUfx<(UYhSpRKs^fQ$e@1$|gyKA^@$F`Vr#Iz3S11%M0v8lyq02>c}lR%A8R0!@HltgAf8cPVp2kL>hkn^;=Nty;x1u%SDF36wBr zb|vB_$RZctnrm-_ha4BQDLSDRrQ7p>hn%RzNL5-qcRS29JyDJyFzhrb7b$Hzkf$6x zYGXf&LhHBHpn$FW({QUsnpfS;+lWhjrnzLu-WbW1*Mc)!iCSblKQZ4E79tHZ9T)TI zDYnw}DgnSitC)`rm}!oD!ECXxm5g-RhN2A!NyRtw=?P*9Sf4I-Qr~%myBAOgB^KauiQeGGNrNaYN?WpvVPxNGkeJXa^AeO-vVqxH;|{Z=Zt$LcfL?)tG%q=hK~cp z=DP=HNF(Pb3Mg9jA>7zw`Cm{8*ADq%1SFInv0{m6dpIbHX1p{TKexTNk8jP+Mssxq zsth3R*rk#C*s$@mo^biwGl}xSgRpbeYL$cA;V*T%ehiC-iUX1iA}@!c8=?Q4kr9@l zO=OheWhi_(S3fzm>w^M$T!~#mzjyUZn;$%g>f4Z6DPiMcqK%t6W=}d*4sY3tm#A(g zfUWn`$qjUlT6EO2LGt_*u^_F$lemT(M=d8uFoxVC#6yp{H<3Kb;_%1u-B?h_a9|zK zEE2f`9nlE4gk2m* zL#g#r=~Fgx=SRSf`V=i&JKR3gMQ~i`G^O8J@>EDuqYr4hLI!a`|BMRx-nTTfvf>r_ zu(%)mo-9(jbFj%gX2A%YmNH5SaoIwpzK75Y|4-b78tLnJ=GW>5d8Zg|JGd%%LOrAN zP5+|WsrM)q()5UqM16nS45NK=LVSo^xS1x310V@#_^anDn1J*~j9oGP(}9B{#?B-- zE#HP*3;ii&T=MsFxIA0O|1g{CkPPrPo&FY{8iMNJaxCJ=G~0M3-$yO+Gj5JHJb;&| z+m#7Tz!CoMhuv^YIvfcGGZGWxC4T6_O!I!-8@dN)gadFFivDV8G@;7nd42vxfUl+F zpATn*CGzNv9!ny8=>FEtZdZ}_yuee~Lum??@+|V;54@nNIn*JHXXpNSiuKzHZ$UyH z&(67msBwJv;xsdbip_ejAxe1XB7&i##~{UN z;_)~nuSDuAkqDT08E=B)9-O%l^h=sO0*q(rNtmpSZ~}Bf^ zB=Z;fob2OdG5PkZK-Oj*gy|CE3T=l0+SVWNzVq&k=#%b!$~@J$w~H{k`M3Esx5cV5 zLvS>i!QxiTECm&DsAd4iX1INIkgD%6FGQMF^whgx22Qfopox|!FR`??+L%zSGh%?Z z*mx9p6eJbvXt1kOAbyfm6dw}*BDA)~#t&BYadbSYrJ)P8vrfG=(J(vV81Mq0YwPU~ zq2#Y4I~rb7r@HV_Pl403-(9FaU0zX0r(v27W!0`tx{UNtS&c$FLy0ri2w#VQO5Q)X zih4r7BrC>LLD=@1el2VMdwPc3Wy%xTG1jhGD8Qvg)iao~N z;-r9%g!d&3(Pb{j^5IQ-M3~mwB+mrKBAzMT1hLXLN$Nx?&WZPmIf#1r5@aLR9NmtfcOs>Di)>e1bLDVj+97fWyv3V zN0OYfq{Xn&UPa z)X>A%_%8(i(fSBT{IFa6)2uvYEQlJn&{_-)A~VZ%OSB(XbQiH1{Z1)2M|DKrIu)i0 zD2(J}g_SVX03E-ey%|+k7#8=k?u`dFMvVJeme6Ian|vNxu}nWO(vLs-E2Hm z(mhKbU=nz;&h<$5K4CcIQZwefG{BV zt_5GxS)Nq>OgsonX+G^4(_uGlP%`C0bXz^aanXyfJ*PtmKx2J#)~rxILRHe z3akxa=08kB8w~cZuDY;;2cr1_$E=5wTMmCj&hdL z2riX8$scft))FOdG+D0?G1EH#BbteV1Y*NAS-w*X=@Ok2w@+){Q6Eh}x)%VOKbA)w8RxjFLv9ew+J4Gs)IEgn-Im>4R+Ek2)1)w_v9^hxXf@MiZgfJyW@q3om4?0wZ}ynVL|DgxT_` zd1taK1>?RtA`g@KeH^v$r{DF3cppi7e>ZLyRXiBP^t$uZ6M{j7*wa=Zp>L8aV)4ze zB9A}Ao}#J?F!_Vos)ABZgC_KIvyF{WC(3Bjf=ek=Z1?dmVTWH-w*lHN@EdPBsRj`| z4Z3(XpGflxamXvxC1i5P0HCjCw@rMaWPh}BfzgB0YXv`aYb#k35c`^~S;Z}@sQfy7 zS>Ff4dI^_w0wCbq^60cJK(3PhLoKK?oVvXR8(QC`OCZF?&c{LUySwAS@2hW#DB;AW zU5{5(fi4LKk;rRs4?~=X1SHwdUjV~;V!?mQLDe8-o?s$~*fn>Moq_DKJ@U|IN4@HI6Ny4y=rQc(wdvA6% zm`cIJ{RAy>c)^5}U4Sk`&~hhi_P8CnA=O|Hn2SnFlLf6>sb?zpMLRrsKK{^GaBV*8 zub0C_*BJtWDOF?jxueeTH?t97ghTEls_&+{3wjTxeDVzKpd~be>B@PXunOxX&ATiL zyO5o`pd3M3FS&o?#7jPbx^IDJa`)(*K4ZxF+DL5LH&C(8!6!ZXRv@~DyFY`xaTh|( zs4Uy^H#A=U_Os+7LGE+d-q3fiJ`v(#8Ho1&Z^5aP&hrbCcVgzrlM4*HF?*-u*^3)g z8%CUDQ?K620KVv1gB1-iUWHxg8sJ9d#u=6o&fW2(cA^$6d|3bGeTY|Usq}JK@}$0g zXZH2P&G5H&$|3Lhun5x1EL1!2ZhFVlL4kq*wT{{}IYCcyUp@{%D4Kyr=GoWc-9>7V z1tpN2gK4?s&RF_#_V)@$Cq$Yh75C=pyJh5ms*DRWH)rtidJ9>FSZqX`AiioVO;(9-{ZPjlkz2XrUqeFt=TPqGi(bX$gTBop2rCX32H=Ki}Xce$p#{y8somFnd68eME2V`Ozdwe zU#d)nRIVG3C`(WcBP|g-|ACc(Q>fXQHiQ~*g~6`YeGY!yS$U&_aGM0F>g-fOie6Nv zbdSq7Cjwzf=GvslKN1k*cLHqOB+T^XCzgayNmmYq_Si~^hq6`QamByt)?)wkK!%by z#w8RoRAe|OPlQ@4n+p>4ni<%FC=Zr4dF$ae52^2jdk#ue@@jE@s}O4RS1?kN^HiV* z49>KZF^$S$(vfAJ!Il3XS2xX%z5Si8~xh#*@wdp8XSK4ixAD6cnL4 zX2@~Og%>Kv^mJ+4Xph^>G*|F1$pohspfUPi@t#g`7ZW*pg77nsI+%wz0QD%`t-{_u|=3i&iAoEr3017x!L1B0b-a&4#VNE24QYG=gkY30j z{FANT|J-__NM$ex22dzflsLMW@pSy5FfXeESV71xdgR`X@n2ec(DHH~TBoGljVRpo zg#rSrO~SX}E!m)$E0Fq|UnF5@bsOb|mRtdG2nQ1m$)n_BG|}XbXF_9H5BADlN$jXh zB8}2Xri*Q040k>Rmi=~r1N++MO$jl%&%OWFB(FhtaM(JPMfDC*E&GZlm7E<=!hE!n z1cm}VqagAm+9I|-w3PA6eEae@__WE^e?zZL@YQ6=e754tBqK~AB)1}oYX0bg%7RP+ zSry|s%?~ACoANb2;Su<(<6-F%Sp!E+xR7l6dcKef35R-DBz!G?l{|1rgN=jmWrx~k zw~L%is9OCwdvl7;9Az;Mhp*U#jj(zk`Kr}6A%RD0Sj{KNyP`bRK_?w;-w=a}kcL`x zYq~2zM})R)S*_cx+B+*hLDI!;@=gC8qD!*)tZS<8NH#Zu4G2pJ{tq8b6Svv@MH z&#)$0?|gghjb_LYp~UnB#)caLAE(28fW!pAd~gVZK1g6&w~dWe9c@5t1S{y^^@-*!4ji1y*v5^-0rF-*e}GkM&{vRkgD{ywZ2dNw3hD;@@bWCCz%;ZkOtH z{kYw3A_}EEJXoj04}EwNchG4+Z|pL;>dw>ErTxSGT?SF@O%K+0H_HQly(O#*gq7oG!Fv9!;tmkthTaZqi(S0kYN2XyJ# z=lB2a8$@sVEq#LTZEju;M|C3~U-@_`ys%aiq5UOK25USM%Y(DN{@>Y=$Dv#5%J5Mv zL;HRcHX@mCBQb(1s_q9ObgdtWa^fpOTc`vCMg}ISun(?R-AH=pFQktC35;WxmOLQd zFwr#HgaE#@H4zLPdWGjPW8lz{B9*GVS-7n=gP0Z+7sW47W=V?KkbuD*WKi0i-@*fs zPt^C&?~83igqqCY&oj*G5CiW_KWwf8Q>SYE!XVmJdbNT0cb+S_IuuplCcz1-6T2-9K_tc z$I{{3dzvK>`gri_jJ1MYj91ZoV^s3|l!|zQj=Fv}mRe7!%IH(DE}v`Oa8A;gxVON~ zu_l@NXpxK;oOf%Anh{@B=(+R&5cadEuZ44_*3b2xm`u_&n$|vhU`sg4b_ZL!rFMQm zgF0HhzEj;oqtWW_xY;=qjTrS)s1eRkB+Ya=sM2I0_pqk-zyXGd?LUGb_`(!Q`#Ut% zm$f2Tk^)gWY2{^s*Q?KDdq-W+=oP1sM+cFqp#4~8XT?914q;+Bsff2oAn>x{2#uA@ zKR8Y0^pRp=?%(R>py?%&b66qFdt@0{E#>e*ahs$X;+v6*BGvS%{&evYkT>3_8lgru zE0W)&M8SXmY1{=4N#@aUNip&_POn*no!R{0Zp!YWweO|y`{NF6gt9~{f#oua=jyJY zMus!c>(vrg$_5jK|B|YJTRF~0ze_Fd{IArM@f4kFoo#WAaFmha!qlgo(*=LY z9df@JkfDl3@nLh^@X;waGrDY@-iChiKMJpf}?mVTG9+6b&E0h+i0Q z$m3YSfv7z%)<6LwZG*D$ugEaaLy#urctbsVlkY;AX9H7MDIS=1jI`APyr|@%=5EzB z?P)-+fzQ5xJD}f|_SYdvNdB6HL=Q=8GPQ!i2*&eKdvpFmJOOOv)gVQ=JIn@bM@UI7 zpuj7PNP>QQzQH6+x`5b~!Le5<>2v)4M+ zm+H%_Jh6jW9$yUscJU!)Do-F%LQ_f%<{ih_W;V9(2AKle)4_=~B132Am~Q?3BUtz{4i&*x+5B{T^zB#3jcNd(@GfV@Jp%8bqM7}^YC^IlsgPW& zZYiRpBZ3o*doSlvJkxj;r4^W`PArn?^YHCtP`o|=>&OheVkUqx>BgWtj*@?q?aGPT zq?8znT+~*Vp6T?`#u*4K|D`|!r0%O^u&++lwhG!Z5D9kG46mC3z&vB6G z$vS8b^7x%Lkge+qCM&1(fK4syQ@Fek0=OsJM?15?$v6zDQd-o1A>dH{Bw&Kr!+s&N zXPwRx^ZLhDROkT&by3ZTs?jOwK4C3;CnxlS6CF2KCzC;eW=YAcdZiUQFwECaW6sz=)jcwyM{O1*L&t?uMUp6!*?WCVtf7O# zmLul5CQwCHzeHF<^sd&TbOn{#%TOy}p#cJh`$Gt}RKqRN5ATxS*iB_2@z8bv{ySJL zYZ{Z+$?{Uu)kvZYj?pZuunPy}dHamb(tMqN_~l%G2FJj}vT zNfk#VCEbneL2XOAyWa!=`L>>fji1HA8_j-O9u~NOP$$3h-5&w zI?|4x`PbOdbU6G}_nZ`OxpI~+9=bHWPN63B%Uy}$k#l#c)nepi@fK1pYSnn~?D-V+ zWsZLVeAyKf%Tg&_Yo=?om_n5ixW?a~@^IPVdsXr$hERSGh|jrC$KN?5#)u=Ngv!%qmUidwi+3Y8x2vSB*|ASP&a?)txv`CfMTiYu1f00x|lTSMKsB zokBZ8w}lpSBD-U*LXit)?($Am*@TYvqp((3npn45UI=szEJavV*`Nr;leWVT?|}pg z&{g`Z$QsIq#o(3*QXdw8!52M#rILos!?#!B?w=Bl9U0vfxVKb>5Vv(;2I z{`9aER+CSjM?Pe^Et)exwWi;tW1h|~s}%_1TinwiH54$aT)e054goi~9fX5|Zpv|% z&67v^0?}-QgwEFA_P9AcZ3>jF5s?wReiDCxs5?sPdq0plim_;y>qH z>KIpZieO@&=EUET);oCv2qL5!dLaErt6P4_vD_1&k6@e=(}G2eiYtGu;x%Y5P4`B> z{od^Zj6Wp`N^TZEjjjvVEOXlE)CFqIXp6yoFV2avr+W!b?FzcKz(64o?;!5#?B268 zY=v+2J{rgPV_w4qV!<9S+(db6+r{ba!w{>+mEfUb)=nm-)JK`FoRN8TID4u_j~zoM zA*$U|qZ0z${t&&t571k*z>&C+(!A%=0x>wLmAw3en`Np`mOOxlJk-I-7;I>@7HZC_ zvczyyy86Ij--p0wuI*bCPZ)!Bv#U{U^=aM=>> zBK~BE17b5m2xTc6B!+*Jip4L-X?X4c#_Xw5H&0wu@ZDz_a-*bdNTud=|{T7SlIIW>Npd4VH&D z;mqpn%?})xq#yA;d#;4K168j+=mw&b|dp_iM_zWT;iRML%%QohKD zg!XzfyGX34p3 z_E1-s6_3T>_3{^<8#>I#JN?1l-5{|g2V81GU8_g4+2ck)>Rrk{gIK`ylX&QNoEiZL zx*$((i>c&&PCHsa=(N(XAX%-{9`T~tg^zlE@#H$qCol=JAQgJt+UafPJG%kK_!HwYYDGtVoyk!=3CGW6v)MMIe7fE5` zMRf_e7x0f>wyT|WZ+lM&Z;Mt^uoA9=uB_IyoT}DDJR6vXf&s{pt*ShXrKAiEEi$jt zuxp-sDl(a8dq_1s;}t^@%;06}`5^U(%&> zj%8E5#(KbXX@_rv*64H(jT&8uA{3fbdLsDH`q=d#UEN@$mccm!H;U#OtNAoij3%@$ zt5kjVU?*-%FQ5naFM8(Fq3zR6i3Ad#B4$C+0mG}!TGmOnITI^#v#GI7%Y$Q$foawvB z-x4en`pWj~;dVImoe!BkUC5i`c4B!pxgUwjaM7{zUIxYul(1x~Gh*km)CuB*>(*7ZfLfMHkQ;v#=_ z<+*r|gf^hOMdvW|j0eP%3^6|hfB{p=Bt=rl}H!cJBQx#b(! zWN88&I+nx;SvxTAh!rK3bM+lDRn@a^nB&9{2OPD~xJX$`qkQs`Rx`d+KwtkxMVo=t zI!HzgC67hlr9z5YRt43ite++>2)%XWrH zcllE$eR568sc6GFMCJ$s0_4!33Xlb;G+So&w*SUlMT0(LzUHvyo@$zsOueO z2Od1=YLMw!XOp2oR^b&^&Bu=hxCyl(SEg#dzTu@Lb@tAP0=Ra{8fdhh&1hNa>Ht|= zpk=#ygJHwU_psDJ79_X2eDcU^!~}yVd;FtEB8)u{rXHN9_a2SOK())L4^hh3fh&9R zZ-*DQbOu-8}9BfxMGt|I!rn#z(mmURI=GPM?y+R3;OQ?(8`uuq8Ac@b?g53Y4%6JVt@MCvqY>Dmh^!=?w1ZMhi=aH)0hQ6i{dz1Zm9Ph>8X*!Du%;vEeK75vfwn*Q^D=ULO?{gytQJmxx zb$|nDOXt%lU9#cs2mP2GdDtww$f`rRQu-7A1>}9R84<1!aXY~X8eK7k?*z6m82ff| zWbs_guC{y{ydYVP6Og8da<9wkHuR2ehS*3hOY|t~n>9a>IUZ@HyB_}T4;<`Xa_1{l zRR9{QzP z>*DAQ6t3iR=6q-~yR;oST^wi!!>MVt*b~|^o1#lNi`Sv{;zCRYIzW<>4kaK#{b+Lj z9_Kh+u18VZX5dunl*pV}#Wm%lP{iz_F77$B?n2~9_O_o2 zR!p76f=yCgp?HORbcDJi=;5ToEc#HRtbmogIPG{wEHWr#O3!sVkPWYqoMbyZZ;!qT zG5`T+Pz7fs+2Tt-74Rm{!D0$Z0R~M%9_`OTrnwiS7!wMAX-S95pvnZhi@HzM%pkVJ ztfdBtbopcR-SW&&R{ds4TyA!Hs|6uRXu%-PI=K~IDyWTtm4P`XZ zAPdMh{gH#d3x<#6QB!Gf>v6|ng>@Ul zMhHzDHV>_)*Vg;lk&*!tC==%y)fLA?J^_s)*;Yj%L$#lEZr@@YaZsjG%E0vqe@-qmI>udKl#ChxVg+;L4a(K zBFmYi?U;A-QmX4KA&NZvfxx!nKqyNXwb7a=^L6YjDG~v+!=z=L1>I!ozA!aU6g=kG zqLFtukz?cw;8A^KtPUztNg4yYz`^a!N1N@_|xhE$q|cCnPSEI1!1hLQ>@n!O)iu2 z7`$*Xh^yO|!t=4vYBZ^aOYau{N_ug{V!aY_NH&Aui)>akzIbE0Oz4E*;1dIV2Gc;b zUjFf;t$dqu{89}QE%uq;U~EW`xxt~QMUF1qE_4@Gwxq<4QL>;1dEu+!omc&%eAS^p zKX0zffIMo$E|njZKI(BV<|IhN(`qV42>byBqIv8uCFi?p-T2!%7?!$;i{<_gBVDLwMs+kCYDX|b|vcmWN^ic1#IfV z!g_)DGI&Mm+vW2ZDkz+^%?gVhADR~!jZ(4)YL5hOnvQ7oA_HL?zVy4p z-GNVM^3$ZponSoFGxW1BJSqfu=5$hES}_cjd||dy(rh3SdW>utmD9J*tytc==B)sU zn}YmO!(`>X1vE~Tpk3m`^-j|x&^k*hJALODwUzH%&Ru)ZU!OvBWkx&*M=>I7_wB{+ z)#R=59`ZT__pF<+@a|?m`ib&UE`>m=?!6+e7WS~Lj?M}LXN5srlEfktIgf<)^+It* zstnnsH*QNlb+skOqp+w({wwGtMhN1N*~w~EtEvWSFD}8&n6&g=hM~C_mCZMQDTC(_ z3Zt43=1L5P<__tem3(B}Yo-@VKk3MYQ&QWVAAbaSY`B2&WlNEr*Q=QBh>eCI`veFm z?@ts=N?gM`d+=L>@hRyVOA=47vG5?1ELnlpGj?jy0k?FraJ0xQ|6JnquJF66C#{iX z>)$iA*A(XAZ$uU`L`T!oGL94nncUna zo?DpK+X&03k|0hwzcJ0g1sJoXu~WnlCYT5(5a>uX@lXtqgG@&tw=nVICTcQQeW`FF z?=0_F!u?F92S6jbIt}OhP-G#!-_Az5)5sQeeNmJo;bGWQKtEc&)j63W(opwjQ*%Hp z0n`8X`@Q8RA3%ofFFW?XvwjJ&dZ?JAwaSrLArPoW2vTnu%U-&5!*Pu za}lZbolthRVp_4xT}ACXD$o8prKYyx735Hk&>yW{7mPy-TZEI9Dj6XmjB}s_b*&9D zoWtn7AH6o|y8GG@zdWhRNhnkUvQS2NgE&srRrqu!`})WkPrDctAYPb0 zA?BbMeeH){uU@|vT!g|HrAL+<%JpERq+-^{A0F{0V>piZ4%$(qAAATREc-AqS%C+h*TT5 z6D{pc!UoCzInAyRW~kPVh?<5&-edY@=R}hMb$%nJ9trX%P6el_ zXeQRFNcBXr*)-3)l+OW=i;85P+Dx=m%2(@IqVWQ;j4ib}Fx8Ja@JuN?WBSqzVRZ*l z9!umk=!Y+1^YgLny=B9Sj=8ZM5mzZ+1`m<2WPdQTopP*f`lC!C4;n9*n22f_)qamH zhFB+-`{P)y@tIM!V=iO%l~t8@##w&LOX{U`U7)>XttHGe4FfwjeNU3hTC|eUbLV!R z>&!;x8bNEyCw`y{*~Al=lYpeESfItr_`+;|s<3)|(y%cw{QCG4sBmr!=N~7!>qJKn zP{m42SlDDTe707_3ZLOYlV-ZyUPP)u`eKGpQBk`>NNJ}?tJ>Rec2d=OF>L>qjLPX7g z=q7YyjG57t%7Kuicg>DX)Vn-+`*uV2_dYU6|6QRWE{&21A-^q!VP;0R&{o=5!DN{{ zi?Rbo1wRa`ng+1n(LHN&jN*rL(+#661g(_e`c*?v8mXNPiAI$z-SI>D5h<68Q4Mjq zq(v|tr`wrjmn8QU)8IGw zyj6#yef94iR*(L;XE`4>79-lVPtlo(HXUEoDlYo+Sk*yFUW9E;@mX{#O_ta5awPeu zwgym8aKsBTKw73wy?ILZ3AzQJu-k^i=$A3}`e36}_1sf2|3xhB(S4Blbo3YaTD+}BAs(yuyrav>~Gqx*IGk`2>aIIs1B?hMs$ji-uT4&n(A zTm+rv_HIa{BSqXL_-YlCyq0?g8AUTFc_2DL5%6KL__|+g)ue{@La>=!kfg;1ci$F*AB6A zPn1Acxi_%vTYZ%<7`YwEND?XHF7Dx{$IT+y_HzT80|_&b?7{}KeBwg_Dg|duk=}Lp zNq~3Q5_QoR0F^BwRE;EskTqZ9ZSDSs*fwLLl9qZUXfQo?%@LUg zFm$6Q>Ks!g1;G=(CWR)&qOzM(j>37iL)4tK6dZQ=MZ@W5w}L)`qcaVX?8;a{%v0m| zR|9N#Sxig>zNo51rc8=%jD%a6Y~jvnB0VLhY{)f|tYpaSYq=#YB~b%P81_WMrQJFS z+vVeuO5iy4Kj3BAC*}AIl9&3~*ZVkgoL51_a3|Jn0`K72RHwjlp!~QaJv9np)3TKH zynq0|q}CI`wX_Ju>e=_{xo>c+8Qn0Ng@cUS&mHCZZ});PB-&i|RuI>ZR2fw&>?ZJx zi_1Fx+9k?Z2K~_`1dK>zmjyv;(z8A%#>SBF18ZN<9bk;ZZYnXUxQ=lM^KFck*J^Xp z&Frg5fF=eJCU}F;U!nl&Qhf+tMl%Oh6zxCVw|}_WVoZ!ZJGZcEwmO^#VPjCb{45$N z<69 zzdl@Hi`0-ZQFG)!yvfZ+HtJF>1ygtq8TCoJz z)`Q=xWUx<4qF`kt*o0UF#|ATmc}@%34v!bY<4YY34ey|HSId>D-(O+S5{ARt{k7LST9C zdG~mgzk$jHD`k|ns0{b)Y_~yq+ZAvC?g381$WpkDZX?)wtVo-LVZOn;C!2ByQyb`4 z-(H7L@gGK?wZ-(M@0|@@?v;L8#+1ro+58qyy6gORR>}gI?HYO(2Y_2fq$LUQti^N z$8;)VY$qX(?yFk*EQ;!rGl^cVq@cTx@x zkW**i-^ypwq`iVwmtBlAJl3>O4LcoO{TUPr^~19h8-xWG#-_l?lXhsTDWhj#j1&i3 zl$q=uWWlr$xQnBQ$9bt^uc5%e%Luo41=7iep)~b&Uw&#48#7 zkOaOFX9z>_n)nDEY9adGhOr*r%U?!>hp=pos)ty*78$4y=z>! zLam^v#h!CfZ)awl_mg#VpZbiy5}pnaM?R_MC&FPG@1~W3%Vb=2nfeJP)RdTDo$~1p zmV-pL#hNxX+s!&(vT@O1PZ3XZUY}0TRSwCLu`35J>@|ot{KX~0ibtblbD|VNhqN_b zC#y)rwAtWCDfs{(k2VdtKzN$i4PL8~Z2~6|m5b`RL!oKq%JiSmFH!YB*l}Le*?E{v z_j6Ux4RFJ9Ub6aB!+Vj%u|2b5mN&sN!-WM;rWZQHDO;)I+|bFX2w1ZD84ut@3-O+!8aXK;&Qh_~TeFlQi&6erlqsmJTRD>*}K zAm5daj+RmIu~BnQ_yYpbtQ>~Pn4^WRZsMy$&4*?_itx&RBrmBWDC3FRajpq{ODXMW z{A@z7CEYoK9!M!QOIwdhuX05ihjDoc8c@zoEsYobV9n5W1PnK*Fi33GP+rGOnMJzK zvf6zmMZ%e)0kjIU*rgXbB4S~4Al+cLs_EJMg$$Rq3|j(icq-dwhqWxopvjR9#|nO~^3Gb5DDb^#>5T!X>kl-zIZs6Z z!_Cdp4iACFN_rR3f%dCG54!Uk(_5NupC)8LESfS6spNvzr>~^apo@V8?m64nB(n^0 z264#$gdG#K!V40aTgbL=&-QNbO?KzyIpofEqs`_8KB|WA_})mGiY}ZkvNc$8+bnMB zO@m;Qv){Sbf96sSD3-f%PfPzQf6hV}Z#_n3ry1-ox=!LDZ85(|6LGW4Ha)4ZwQKD>MN-V{_Op?(OCR4r{!=X?IiyjHI#Rt0+oiNEz zqn(n$R}n|m=cVn{Sr63<+ERb0=kP~R&npCI_r6=e9IH^8_E)sv7HyN^uvbm`hINka zfAz()JGHX2Fg@UYSSKbyl z$Ly2UUFD|5A@LWL*R*o=BR3%2Jt?dEE~ZI%PO0A5%Uj3i5rVP$YuRfg=(J0h%CgBB zx?AR{99`s#-apE)^Y zW~L0QQdDJT>cYzLTBBm}bAcr&bQFt6GAYxK_c!#c)$up~ECh=xrZiG6J)O7u;}7Zh z>Fb3~cOa5128*-SNyK~@4s`X-SeHW6M+0`HW#U=zd zjLzDw_p80RcB9xbvKxo`K((_`ajV_E{r`U`)&J&DszL-EL~E-5(}Ij<_d8omK7#yD}4|oLWS`aw@WpDvJMJZspyWY0YIDR_myz7^7_}m(^dachfh!1EAOYj z_U!Y#HEOP4a|U&J_=YeqUiL^C>Oazsy6gO&3I6mwkDYX1@bOr-0?TpU6bLRQlnHr;4>r16*YtR!56D;61=wA zCKf`fP-se}?FFAwkDsd0axK*w9d zUQ^XFj0B`T`4s9!tc&SzvL=bJ#2&kENbMkV;+5gMG{t7G*>Q72mH7R$<$C@Pge;AQgEdQbjI;@QJ{;p*cc+bjgwTMB-BS|9*~ z%Jcz5<=Gi}yF19Sb&qg(V{=u(V(9rIpHIt)^c>~0eEw|~4n-5}3u3F+Z${=WnWH8j zR|3ju#OsjI#5XkQf}_u)7f-bsr5_K^JjFB*^N%~n+!{%+s`JL!5eHWB7)lXd3j3{>>S7urI5m7qwNK}WRFeq28og`O z>4y95_7o&fLVeyFGZl};P*&-&Y?Fe2@%Xi&<)2hn0R4G)YvM^;z)Z=3sZHd??Tj~K#e~hK$1(kAPE+m_XbeVYb->O#6 zmQMdqW4Ivje(N@!8gGIrDmi&Nx3n;yzWzj!nhe!jX=aIkla0u1lSA3E$`r$eM%Qes8|b&f#}w6ffm{@U4#5c;OUK!w z-QL2InvA(3q8MB^6&s5*#2;0&i?AdakqnK7JiBFfg7%XH#bYZ;7)deaSP6lm_f)2P zDzM9^mF&}VA!2Q~!sxfz+%LRr!)Gh?pNk5*fL}UE&Tt&6hM;Z`dt6_Y3B+ck7 zKg3*&^+s43t*T8g>X5O9x*ib8NkJeq6-++#RH7l`T##l^+MaP}Q5!1kni6eR8MBkHEJTSgAsr^X7y~CXbh{hPZH|Y0 z5<_W>KLin)A>g*E$qFtx)XK2HEp6(dK-MbaWO;2bJO1K|={dHS#oP661KJ%lkt^7w3g`@@UcUmM8(XIj|&q3atZ34((4xc+cb+3?U}xW?*&O-7iE-LE6t z=)V=9nnqui<%h}u^w1aR4jyRVpWU)vxM$>ZE-!tM5VeD=*SuoT4h}x}pAg5hUT?KU zNj^0cdWUT;mk17mhn16JwAL+g!uNR^dXyeJ>z2#LuJ06Wla~5idY!cuN-MgvQv)Y3Qz_eU` zr+*(z$O%(6zL$j7SdipDw`}xn^n_F>ZY`-S2M2!Sk=O(b7{~ATPiq`Pl>?Z>-9IX9B1=~1}(b>ppOO( z0S)1`hRg^G(t7x8!jk1B_rk09$))S3R@c&DDF=f3+flkkILwiat>>65{%V)2H&y}w zT)qy1mbs|+)m^~L^v+zK-hWJ?o6Iyb4Ie6DuXQrNILu}@eQBiH!DDKyMqYon3?IlU z7f^`W52p8mzooN-3#1|u=pA#D8`$1$9 zv5wlwBaqhRmYKDe^!LoF!>?BKZ=a5NFhmCiw0nEmFR4j?d+K4jKpQREDcv)vCvuex zq&-oZOKVH>QIADC)}3=3{jzu{*@9|_K&3nfWwv-Z%JO%3N|$0fh+DyHQ`Kh;GBy4x za0pKhxWyv`J%Gw$C{My+jMxhoA*Xh@kNM&xz%0!oaNZP&ksT@9e|txY^Q~j`53Qsz zF>(WbniJ8}PYV)wI&pF5MM^5O<^~(!QfE?TLR-cYpe33i>N#eKgWU|*XnNPC-~;Qy z9KY4Id5R)_sGp@Q=-DLGPLDcn0y$RtF~}KR+j;`nZYyof=d`IS^tx~4bcz+4@!}8P zjM#J$g?Y0qLj(-1O@rZy(-WN+;h1H?lRc}8vykE!U8AGhHq1mIH6*i3zvv=;^WTPd9-E8G zi;`$NCIT>MOe{e@p=Q#vj*kf|(b+~_VJUIrHo^E&s?RiI$l^ZYQKi@#b?aEEi^GR6 zESxUt-oP{WK&%O>QrBwwvf8DbUUKdgYnD~Lw-ksqr)3Q%jx%T97m=No)zO!-ZRhSz z`)jXw;r^)XaI-pO#cR}DaA4>f%fFnq8RvMGm4p$Lw6qWpyYPf4lEAnVY5Q>PB zvT8w)%Nrt?iWe22c?Fjfu{w^j$GDZf9TDD~r3YQFC!~>vk|V&NU&`tx?z_$V(L>ka zt;_Pj-vSexi*S<*9J3kIN2`kRNt96qH9?kFAi1diab?9(Utk6VO1xB0KYNix7lX`{ z$Syh5jJ7M;Zoe>0t?i*g_fiuKyD=X|(u7EBLB~hdxsJTybEF{ z?zmQfZEnle>4&#;)yIpU!m)0O^V2hHw9)8Hq~vS4LY^I;!-1+xg9DXqc8fGvUtg@x zl1L^Sh)kk6ZD3S=Usp94U#j67jss?(Xnv||Q#ppFkVxB%3W1vB5~@}`8in{; z!7%sI`k16K6;#L0a>P=R7yvTu1nbKK^+`sOZ(c7c7<5g{DV6Xw9EwmF)l12b1>uT@ z?>}HW%8XUFu&Xgmz}N1}L#f6)tZFXjpw*_8=mEU9^p zC*@KE+fro3r!RNxN*ijb^Y)ggTKyCDACXa!z?vzm_w*VemG&};3~k)Y272ls7~@t} zEK&mqafZqeqCZF*g$zyuJ5-@^*p$r#m&&A=`JUI#>XLW-ty5FB(e>JBHjrEtuRU@c z^Qv*p;xUG#Te=nKrTuVo&3^BZsNhVQbHF*3fEQx}3_**m6h$p~pH68*YcQqQw2@7606U#bcaEN7BP`}t%l^LTAvIIUl8d$VVR+T!HzLcLm~!j%ffxFgc|Kt? z5yDp0W0B9YP9dDuZkw!O2#Dqt0p*tC?d>0kRThv69#(xum!>aImxeun@z`VlNa%>z zIYR~n&BKSRcb2k`&t(sRf#LGuVxE>ZyV%bng(o-Wp0l}6);8@)xCe}BGH9H-R8+$( zGTzK9{cwK*X@Y+s`X<j7NO>HlS0jG}Gkc^t8Z>xZm_kEX97KbNYW2zg07p>|ZYHyv~|9_nFbz}b#1jl!B<$N6LU z!j}l12f=3V#8uD3UJ|NeqLf?{LNl=I|#k%Z#MGMGZAg(^Ih!_x2NpMnoZmr$E2lQxfM%Fw(OM&HT$lX`o(9s#$KO z%*FXrmD`?-aYlJ*dV|eH zKL(f`_*As~U!@}I#RvKPeS$zPA$O10!O_Y;K+Oy7?um{Fr`z(8bxOo>TGZsSA^&TO z;cw2$KrCL9VIV7%U&a_G%nOwBUZ`mRuZxo0g}*_bqDY^VjljQ&5rMon@I6cikEy0v zmTUaPcu;IA`BcL^4R6!WDqkZ4y4e+}i@`W#T^rdCWSA3ay$&FW#inRTP1_I>B$!0p zJjHjUT;O6c9p|rLE0G>bef{u@@TGVF!dNE6{vigT1&&GdMtu_~6I`j3;{8X<3gt(# z?wReGlJLlQO@$HdP1L4DbUGpmoiYX>ed$U)O$H>PBI~ZN<{n6aYvG1=u|Ii7V4BiS zj5HO(F8gUx$_%Ci^GSy-31ki(6J^i%OH zrp-dyQ(jy#n*L7Al;WZN+={2;M=Xpg{3?b;)v4ecJ~0iJC><_+^Yeg~?V~LyxG2SD zE`E!R`!5vDcaBckGz?x=mt2vna z+01MXRHKnm@u2tp``io)mn(DeDB{oUY@5ka{QoCJa~ptfwzs|%?e=%(S?z8@)Y8lx zbYoMYHfBw;y}t_w%vLii)_Lr??UIR68(T*DQf%(R`SP9dQCoY=YU(ayA^vH-KO|Ic#4N>24)YGGxDWPJBJCxp@ z2wWhMq8|Fntw0fJqKdpL8ohq~)`MpgS@jT$*}Aa{HASs^`3YllGHigTDErOYlH@lp zTLwaRA{AJ6^9s5Wn<}Sq`kKN7B?>IMKZd=#oa5qS!AJ_p&I0C5bqZ|UVQ=VfO6Qiq zJL#s zAT8S+IfX4IgED1>vZ9Y z@Wa68^gs#881YS8SVzo9<75~<4fh5#2CylRO|xvs;S|_c=!vcFU<8PItd667caZ3XEBlz!rK> zxkF=W(Ngq#j_?>mfWsS6T_?HV49dZUAg+?`8;`|)L6=f%SztRuGi|8w5opp9UF8-$ zO%BXsK5*5nY=RVQlYR`Bw*%Safvxnfw2zt&0_L3$`W?GOX4f9tIL%z>Kx6XFVk4kL4j8ddjm@;UUCC~G2kpY_`)AJPA&Xm(KYsbaG4yr)JHM;W~Q9HBK;0( z1@~9bg_~ho0OIV&KfwDkngC^kdZIKN19RTC1krdg`E+1UepRftnZFuk3do+zVwq2e zS(Ff(5tr(I(+Lcy)~g^8ttugeBNj}E!2&OC{t$#BRE6WyldqKV^U*_5O;{sYW1V$K z&Sb&2Tm|i3S-XxQi0yw%rOeT*^i&;thdar-a)-B2_j=d5D$&7f3l9L(fh~r@xS=_w zN$=e+e>mJsRay=qi6 zxU}6^Us3E0E#IJYq!q(+hQawok=`i`e$@bnRkbHSkp#vek%^Pfqe!m<3Ki*(_wsj5 z1Boyyi7z|P7W;AWhR{S}KJxh&CJTEP9AebUY~zn4moVOxo5&ape@K=44LUj-TcP-w zL}C1wL8Ljn7DUxd{TP~`Z7`0ymclFRD|$`$QVf60EScI>ENiU3HgqGxIdrA!F4>AJ zFY}%a8bAK1Ib!-FJHr5mH#?Me>`>qJ?MBEyNR|#yE^k#$gEW|X0h>HYT;q()u1#IE z@#l+v>fflxw{y?BwxjEAI?DRu&ktE!AHuC>1#^5bSdWY#ig%4Q4HwRYKD*eVZ9Q^+=BH38hSI}K5QyZgppE1!!+ zAt2gb5|@EoW1crbc~(dEsAV$K^S{+Y-uE9ygMakd?7DUk@<)A;`gkxu*%$6cldiC= z5#vpNOd0$~ZZ9>Imz_MV9!A!5eZBJC(nsWszWNjJb~h>mP7U2sxeH0#O~0|2K~zopZlgDn;-RZk~H}2ri@OO;sUv>mZ<$O!C zpioM<3>f)tDl(Lgi($WP!BP=aj=FrAa&k4L_q9!y9_OEIP(No(kEtmR#^DsqGX4c_ z1!7=~RkAjAcjwl=!K zQV=wx`4U(5i2ZKRw!>_TOun(AWh*wW$rm!Azt{PgtbWN%dN=pCFTM7=`6NLhZB+7? zCnMi_G-HaaMUkwL_Q^B=`h*t-R#!g;lY^p19g#hd)s-EsC6uXR4GqRq4tgxXSm@n+ z+x=GGS>jCy_~cPK)0wj1QZxiXJjJe7L*Faw-)0H$BdBqvZk;~LHIzIU^=K`ud8yU| zMvM7!oNBn0XRwM>GNeq5>KU}lLLj`R^9IT`v?}_fSMTp5GNs3vvDu6i#m+F#^CLHARK|-jq>3+l)SYO+R;GFf* z0%7_ZIzm1k^Oc#T3t(0)SN6syg-a!xs$>#RDM4E5iD^reeOiW(0GY(^({U*zmC10_ z&-TuHYmgqT8ao4W9#Y}=O?Zv)U4oH-2L7P;>CW*khOm0{>+ zBjl+YdHxLNa}DBjbn8KJ>A+F9=qE}dBanV1YyYX1QiXn02%uOak8}5^8e?t_qs5Ct zm9N%hlt4MLYL?uXe_}Jv+lAZ#iR?-oG1obKRZ=mWPPRNed#UBn*}*NOJ^@hvFuS8A zcoQ6FBaPt2_j#te;GlRj?v~4;nF7vp-X8`#CuR;rl8L6XIR5o6+;r5*E6Nc>TsEyN zpw$K#t%<4*(B2}vq4XSjt2OXPg$7(0l+W+`Vk~oYhU?{se~Bl4qV$1*EonQjb8Jr) z7SA$Qn)B4=pYMeeBwOrPKoDvg6tSCDHZ_X8=T zEY;y>k7}mFQxrR7D7sutQ$3;01KFssoqN>gc(vO$7fLYN_EqI;+ft17HP-X@@-@kc zy_vmpn>%TU5?DQPTZXJBM zA!9EiHI>UH*5nel2lx8RZ+-9GWup{{&enZuw;nth{`Tss}Nb*H$4|zg}DCQ9k6D{pC=t&xGF_wN7JUJmK;go zfiZb<6hk#S7nWNRE;j){oziVkJpEfsx1OG1gmw~YKP4^Bgy`28{=6q0VfmKCoOB(< z{O~W@_0qkdjN|cNNm}ny<4xl7v<55JGG95{ZXAr#>|UW#WLtd7ZK~adip6b$ch4$> zV_22skeLE{`^UB&@u4VCL#C;>Ed5a5-MtHvNy!j{c1)G?h)we%S_w5mqQ^>h3t5rh zAWuX_7vt{XaH$@`=kV|iW~G}rR}#&!j-oKSjInVA8jm05|3-HZi^X)HnjhpDrGlZU zJd8M)P6&@)=*Q>6F_d~J?wy={^iSD5F_K0+IFf+|*=gtVdy+k<;mKi+qqBA(i|OQ# z4*t}S9!f)yQ>#l_Rs>G-`f%dQAcqZGW>Shk$K^0w&9V#Vc64%_FA_T9&=n7*divAZ z1ANt+!P`+R0B~fh_SI?!m-2thW#Njo9NIj8F6n()kNEg(GZ)u$O=)-^fmFTJ*QMi- z9$m?Q;I39U_Bejy`~(SF0+N}}=hz>O_tH^UMMgPU6+(Jz)SlTwyx!xrEv=2|GCdiPf20~v?K5X zw#r|{A*_-I?eyr_4I*Nrn1nF99Q9YnlwJYL+|ysakU->l9nYNfFJ$jtQ1l_B9_m}wwA^$O+x=8;Tm95;P zKk%pJ0uVCr)HuS_aj4muq2OiU&im^M)0{q*v}wnZKqb$N8j^kdWiIHrp&tFw3?ZZ z>iE*>+p(|8+N-}_nqa)E21Q=FXFZ|tas|K2!e@L~D`V8QuQP5^CvSvsm#Nb$U-f%RLP-SDS&X2FuBx+MO0kEpN{<56*N{rYCvu{wYx#dLG3qvH z`Y@MjkR~y_P!(uHSf14aG4cH8bILPalS%-TGZ%J3_V95?=*$mbV7}tl61;hU(zi_{ z&jeJG!)5&}JQl?^D>grp0SlD}rD)_;*8K?)yP`?@>Gr5&*$Y+0A74`P73SFZYBkkN z{?_=ndr1~K=m68@cC>8Cd6O3T6FN+x?LG*Ab~ih$NaUSpq*&FmF5{064JHuGYvL(*)xMvKd!7${iv z+TKQ&wT+XcQuT*=I^}421N7%=JRg^8R&J73_P*U91j>8bIQf(gDGc&!)r{gxuhi4~ zY=Ymu_GpW)O(U=-)7{+Vr-ubI}iey;GYm9wPit7uH)T?Ach)In8LpOs3?K^l2|3QzFoYLbQ z?J%9Fn3dcABSB8T7cf0fxA(X91U~sc4W;^@P(9;o@qdGQ=H@`#fLZyzQC|(H9saX7 zD?sZUIao({96r$&{Csy$Xc~ThTX>-~(XE*b~bX@*UzY&adw1lp7(*U6=Gglv|9@;S-&oAF^FJ|wA4 zI#UNL5yaDEYclsa_>0vK>CzwWiqt(ykSHLlNsfcgaX$rg+m1IJ;IE~tp0NOSih8sx z;5@0Cg^IHUQPV1g$elePiL~5g=ECaaV$Aa7mfuJY9rO2IzQs69M^rkpVyx77Rc+@d_5GrGda9M{_|EAK|TZzuX_Qs}e2L zqXUruF&e~Dgva>nSVj0ulmOt}EC@d$Z-SghqHl4f zkze#*H$RnDv2^J50#~nz5?1D&D0eb?0-(K2#wd4=S3Z9|S6WK`n2Z2#Mg{;7l0&sd z{<+&-uOvZbHPjEwD@(`{8I#fSe(vb@D7!|s4m}QE56x%F-&uu6_-Rm5TH9aG>}SHl zmoFweqGYF;VQg^F-WfTr>9wnZhO&gs#rz~xqLD~ZX{D^3iLM01{F`d>G~C`|UjPeo z3D5)$QtfhiQ6dZpJ$!CIR2#5*FLmZNN8HXkjv#HJ5sW}Qtj6sU5SJjlRlSmx8 zsRA$9>m%3Iew;A0kwdvpf&_@BN@^8NLg*tLxRnfq3fh5FIf$9DU?luDY`aUkioXF(s?=Az2Yl)skxo+=`G}%WgXkpX8Rm)G?~>`626%gqSQ1 z-H+%VD5Cw1=+B3?8GBf&BhU<%$WY5uz4W+~vbs*{;Yz3aB&*MqCZdhI8DBm-UGg{e zhPe(VO+L;lC7&DUob!DGB!$sLYKHV*gECzA^tuj9LAjb-#*UR5bS^9=j8q7Mi$c?7 zQz{qW6kQL}mFxx04hu;uNi$=O;ORV8hCQg@r-kF4R(M=9)`Z}bt)K&J% z&I-1H4x)Nw;gC#x@j$zH6QXzC$lH?c5qS*fBnvpo*rMs7DHVE4c?o}}V)SXG$}KOA z@xvzuLhJUkY(>bRWsK|R-Oyx9O4t}A4glFfK8}GF(WjJQJM^%kPUEqhZ)GzoWBILo zIotLul)u#`YMbDS-}^1)f+vRWmpN!eWfzS`lE`-a5^$73XOld=?N)%YvEGj&k~pZz z4J}EOEH)Dde6yr`RBf58>ptN5qvFX+{p?dvVUWoa7lXySkIn`i%B+bqr%_guzBqZ^ zV(~}j#@%VQ;NK|@Bwzz(vWPq+Fi7#t4%Mvgy3GzHb#nPUVRKKcP<6aRY^%dsmrCHq zgR_ben{-Xny$MjqV?v{;JS$6`;z>!6lfJjC^%!^db0XE!C?BnC3b;i_L{!ap-6QjR zTiR>nE2y?F=@=VPSL6a-&>-AOnOY!7g>ly2ba_Dc)3W8QDPm494RPuKMx~xXP$=2N z&a1V%My2Ii>S8W;-rO=cO;~apHLq^hB+7nG-FjJXO;Fxer_&}A9@$o;(I2VFVnl)} ztD?E-GdUtO4G%JBR*>R*{n6duc$sFW~6gV$szrdvwZw#D?|@D2yOQvco7dt&YuomfFEJMCl2;e)6hxM^nKc zF;i4%b51&-`Lrplewp^?!Xqdnly=;h)H=k!V^3~|R0%}SgODK_4->Tkren1cO4GZ8 z7z?M7;Bawv;7tLGnr83Y{i*ik2JnI#stuwfl%EF3h_)KYlhKowYiwkXQ`@9dzXi$Ln!eM(9w8}M3MZvZU!9r} z5MRl-NhbYg0)(*Dg81RcDxSmZt>0^%^)h1kh0l$rmx5m7Um{IDG5{sb-`3(WScngG zUgY`K^)=TGQie%w=17Y#PA zoCjrDt-k^{J9NkgJ=0CA@Qq|oiJ~A_CBJpJVtiYYVX8Ft!0iZ*Jbf+dE!v5E;7Xq6 z^Xj1i8R}pTW3^Qm>R|&m&E>Z9kd4ESo4;~6yOfFUaA2kij#U7-RzT`9Ih_LtIDjz< z!7L&8JZhYJCT|BP7O4lEWE)=#qe%bu1%K=?o_Jmru83*!fpM+(66;UiUWZ&E20d~P z8pF{i+ekDP3h78{zU$=@&iN>7CeLF?r<2i&^k?}}lZMje%n)@JI|V|hI(dMh0{96P zPOO>f<_h;vlmY>mg#^_pLLCnRQ}Pzn6Z5ivmj+@b(~9c*b%lr0PRS$xT+%xOeqJ5D z&bvnD&A8##K{25MTdarUiXA(CdmEbsTc6D6M z9lT{ZO}oI?KxLOO_b@ub7to?hheYq(wI@sL18l6d8r7@aE%b7RPXxz+YdWg-w8oy^ zPexLURd#SO53>luwnzWy#pU#%qfHMbs+!R(ViB_YV+EkG#8_(l6<7fuxR}HXOD2{- z4t4qS7ZhykY14dud3u|&nNk>+VKO93E$zg5Ou7RV5*(P`wiu^k>lhePN#6dr*GPJ> zjSV!Z)Y#fDv~Kp$=cbq2Z1kP1EBG>43I44Jd7sR%DOEqQ^CsV{JJYKyJq(uvhnpbA zeqh<${0`8e{FD5%!OfEwuZ9*FcKQS(QvYp%E1*L5`dX~X5T^z3`!ruUG766-S+!9* zeVfU>2BVv@G_+0`+d_CBNWVzh6ysC+KTKFXLQu+uW4nQ!h9aB{xf7eymE0$@#?$v} zR((j`>nD@$5TY9{w~6&fBfFd^!5p!s+6Y_r;g#v{HeXm%3}@pK_>kumKDxwU2qa#k zj~)90e@UcU$`8eBturb${@W8bP-K3oHnR9E(Ugug8NWEiAqZN#xvJmrLh2Jm1n^yZ zALUak<4{rGC$)2Uj8uI`ztdwW zwp?kd%tFLr*$i5?CJRSaPSTVG#*-}g+N_!5^d<$%g_Nu7A8mrJK_y0gQQJBj67OyD zismH;5Tb`Y7eera^Z-V9x@Ongzu?!UYfTHB5u~n47IlQuKW-qU*3kC^l#b0sG6=3x zIpSsZf>KhNPgSHuCrBldZm?}kYGp8tF$4SwO%>s4`e*_Wlpk77($bVllW>#+GS~sT zl(FoCxS*nAT%#ens0VTk_2NyWbdl*{`KQWr)SSw;QE+YKvO+zw3f_Ira6>f#@)q$j zSfVPvb3z9b9^7G)Off0>Q$d4&cA!zr=!DV_#dPX^3Yn)tqYhJ1fH2BanTn34>eFsw>dBOK_GILUJ4M$F%WDj&i<&)h95iFad@3Nc01rR?=zpnSeT`WoFd1?j<9l|&##SSDo zjT8cqPH^VC`sjwgOww0pM0cok$XJ`jQ`5k+meyu9bg2gN051C_Ca24~S*snU`niE# zRK@L?=P`aEnaR$$5&*syx0W5tS!k&s6o`NUYyzmjuz{Do-htE= z00M0*v~mvEN5aK>0`;sF%*(oizgf$IyjhaQ>1ZHcex9@c8KcWqt(5$*b(wR zN(D7??&@}LYe9V`6sx&x+$As2;z*|b)i?smZ*8Gx;% z-}_+Bz!>d@<%4BBaiJ~ zZ(NY2x{RIo_63P+Z(&i_xuwC> z)9{3hB9$E%lHW*{!Q15~He|7(E#h6UCQ@YXtmRwo?E=s!KPa70$GhkJ{qvbORMd1_J%|fQOH)kM8ZjoYbCVcSF|<6rKjA|e{zF*3gbv*aCQ*KkNs&l5~jD5 zaBC8!QM+alnWTn7d60l!m$93_Mf+1PyLuIPRav759ao{;G@xQ64R6|JA10@^qNhD`^ijs)pC&E^y?Qe-qbMf$S`D_>s(caYaSMTlv z-Pe!|Vr_B>D`ABN&T{9T|CZN+SwNqT7>;_P&JgG|>>lP&qBY>vc~}F}j=$@Y z!;*G14knu>xhg}mEyyMxtwo=89vI*->b;gy(>7yHC=HW(kH+ZpF-o{{1R>dUH` zAkl|9u2c=9n5|mnQN-UkuRN?3FDTozF}Nu&^A1k^I$PGkZ|%B>^eQrUI#GH8xj5#P zwG@jE!Mv&3)(HaL_cUemuLQay&<$Ba9E-goN%S;grv|^X%L@Wq)x(8#2tU-~DEqdi zf1rV|Rpg}Z$m3?{C9rJQ%DV0_*uq|T4G1Bi$f}0tLk@%#L`3?vtF8VwswO=_)!bPx zz_gxVYVQ3kwr90QK{dT()XkiFyixBmrRskNR}=R(zWpb#=H>Td)0t&Dnwhz6hnxr} z2l|^OW0cv|*Z9PoASv7Xd(D4hX|`Laa(0h)_nPl>kZLy7p71t6akiV? zx#9r84!k!T-H6%ir$_4;Wb+TI}tc98`4;Bad*$T{7qo}ZKju%v2lF~^Ivz_lVjX=+bGZdv8_ z!}KbWh+A?%L7KB?$4ti1a6!Y#2Yt}|+lkZ<7bk7QqqOFt*>7Kvu5fI-tOPn)08`9I zO61y+lc^f%RV#xQ%24>JgU`l*jkrEl&mA!D6EFR;Xx=1?qBXPx?$K<&A1f2RE`KZJKF5>3??-Z~{}BJj^92NfH(99X6nq-Bzp><-b*<83K5O zNvw%?K4h2_p3!{UCUZ590w%XUxsdnd7%N5D=I8QxjSFA^L!yLHd*1(o2Be(2H&sS0 ziiG)N;vg6n0tNDiq$bDrdbhGZ%?~gt44(`7G9BX^Der*?OKt0!dYnZu^Me$M!We5q zhQ6@AU(Uggz%-4wN{p?UqiF6c)g|h8SWs4m_M(^7#J2##rr?_V32Qc5e0A@Wf4U>^ zz)7LYpr&_7>oAgeFi>o;h0cm$*iIxf{R8WpEwONKikD->>7d5-f^;+QKg^469Fk?^ zSxf+_7*C9`E-%0&dqR9r*lNB=^S{e_S-LVXa#{>(xY$$oQYb*_K{f3b>=&k62?ydC zE3lk5>S)LV+fS-}=y+VCTu!iMsizc3{B+&?dMK-GUlIghF~FO8O=*wyC9t7=>1 zzbuOj;koEq%gi+~fHTU(PP@)xo!mxa^cJ7`S+xj+n|ENb&ehVXDMrzO?bjIy{Py>O4LQ(>H4Z)rZa=Ny6&+Iov(I8yXW(r<2LW z``OyV3#Rn7Br3ZEHHz|O{!n&d^NS#iTu_fmNI>)`S!CUoVOq8y>Ul~;&zon)Za;ym zUZhvMOW2@-%uSC0U81_F%%_*t3M{&wp#oqKk-yw?c&Xpkb^`SJ{VsRGtSoh``={}% zNk>W5!Yg!*c0Pg=Z#lE)CYli+K%Jj-B#Z?=D5CEYOr1rmCJ!c`eLWh)VC_0RJbZ|9 z$WNj55oUCZ|4e(yI-cMaiRHn^JZ4Udy?_?3H{E!Q{}Na_NqeDU)dfZZ;zeD4)RtOa z*33Mxs;E^Pg~7C%=OVnwUj6wfich2293|voizlxxhG$Z48Iv9Pv<~8kmzK+=<&^3m zObgBp$|A(9hns{9U5%(oA3h)CC-VWz_=4V1@G!6!eTVzuls%o9zF49ft%CTW;*!5< zBFm!@pn%TcZDTyahaEc_2$fB4F3US+1+Ar=yx!kTUAmB7WFXu_#9_@m2#NOElra}+ zdiU~^^q1!=Uxs&;*E3LfgFtFvl;V7xfi*OdBF}1kFx~abQ!^L&3Fp>4FlDo-t_6<{ zQ`lC=(ZC(tr9qyAwmnoA^ z5Fi+Gr5WbS>h2L^F=Z^)qeGx$Fbq|v&tl-nma?IWFoxrj<>RPhw?YOV$01q2qot2N znf4y9j`e=Tn)9g)vCzhUMOF@v8|^f|^{)%FvxYB?8&i_{R|-ndAPd~Vh{1BMne?9B z(J2;UL1BM8`6Ew(+}CFS4lxi#PYK%?Dhd>~nkKq5-*lrZ%kny9@la*f#5SB4gr5@cUB za^qHrk)Hv3`3xYjxQV>4`G+b{jLFeX_r7-8^!`$ru&_4Yi`8*Cu-Zfty|)G5s;sV;V_^3Z!-WuzPIy zLs$I;0Q%70FX-NUep5_&DuQVc=)GTZ7;P|GdN^?-%(L3rc?Ihpry;SDNZDVK%2r!k zV$-u=EYl@~1dsc2kjAgW+$`(6XgIL46xt*Yg(P{>3hjM~K+j(h zH4k@aR0%;U%N$$~xxqIWDx#90S^pblg|=jld-E)rd_<-@u(Gr`dv!SQW6nuBBpY@s z9MbA9Ftig9;QWvx?`eCLI-(Jtbrhnbp`vjomq`I26~y2%32N4@TBbs7Nhb4Arr~XL zmeTCSHxOT>Y5!Ei<)6MTPURPbPJ2hP%$7zB;7Kz*W+q(9s+UdPo$Ml2#Q=}4RyD+ zet0P?Y4l6G6b+uY)9Q8_zFCZj>(iOFpo>?p$wtqiBVYxouOi}ZAP|op5aB6c1n$kH zrCap;9EEv>=ytC%_R{lLzRjxO{BV0>)+voGNLSL_<~DLjslt=mm(E>wiSH$3Z?Rjv zrEoXe6qD2Ii-6Izq=b9b8*+ZF;80NQO&)#MVON#2ipUq)t3qWbgG3P(%PF}X;b}P;&aMppdyQQJbn35Y)}PFn~&B`U8rP`&u&fTwz|*q zp#bZt3J!GCUCuW30mLZ!Azq-8uaznkhK{SuS{tL@@Gj7j63-!G{+r@YD#F7rhHEx` zsNpL?Xx*^(Qx2P=*^9mY;*w_3uW0pk# zu>gc2qoU4sX`H|}Xv1S`-^%Fw#HC7Cz*V_Rou?!Om`NeDFfE%XBcih+y3f<-g_MhG zXk*p82R#Sb-Z9ZKh%9^+th|Oksk~0QYnoUFLYKGq0{!Zv|0dRPLbrUJJ@t!v3hohQ zZNY{sQM9ll#^Gb;@c|#k@U)}Fw=Ul{m5}q0-sUaMNvKt-?QR?!gxBCXg&7M#5nZ>q zNblr|k?vufYvj7fE7Vodlhk73>xhncM95^G#Gi1j?I05&F)emBS`_b%fgq-ukKNKY z@#LDD&+r_yE}GwpkJ?GB5I*Hd=@APdh^urE=<;Ch4b}rc0Y#DYri(ff+5{A2-2Awe z?=7FB3S?+f2Hdd5d{I%cpGkQrSRYM004h2~-%+AQF_K7$MvoQ3$t#y@65COz>LrDy z1#Rv2Xwn%tc5B4@RZ%^X)e}*FF-)bXtp8Fr6o4@{ra8bRg(tcxjr=Zt(=D#ygi$X7 zoa(F;h&VA1ZXSg&G)`O#)dnV1;(L-n9~S+C(d37{VTcz|qwHl!Gf3x7N)D zifxH#=>f#ufy@t^jX1Q$UEi=$5xtlyC7pDwWc{90!BrptR@$DPKbHreM+CmSDt@Ug zfVm)jJ$e20F$q#ru^5hS3&a(H&?HmiFjHU$QCiq?-!M6##VGTGs+gxHdCG9Nrni>8 zk`q(eWQN{3mR~Q%VJX_@IxVi8I!*{8Q2H5=g9N%9Naq^ui(16g{|z^=J{~c<%{?vUieHOkxFYRxHatQyn@+FKPK`{VYPJRC zv3Pnq;s;4z)5xq?&WS`8%DI9Dt7u1Sb^vd!TkCxMj)C0GltnVXD>x^TN-M_(Ma$cm zL+UUrl5bW?hy`pyW6&$47;)rJh2mn=8oH$XTTL$j{YZ=;p0qjN>!C$uQ~m7KW79YO z7v0Y&8+cG`(px%4+1hbFdPjnR4bol`mvUl=Fx7^KHPL3K(Pyo_JQxlj=@rccl~kmb z!D2j#6uO@?G9k3L;0IT2ul~#)E2~e8S1>}Z_pqm`rsDz3BX0dB_dJ)88ofyRU^=`c z?4ym~L-<$arj4in5L|ePggUBmz@#@Sdu7=4WUso~tAvR14g;QL`g;gv{0(8(1E?RT z-_M>u4!c&~K7fnwka~?SBw8Zc1pJ*TPD>9H>EKi%IQV<_6<2|5GQYNf&+dW*?bv^& z-;LCNW9C=-qIJnD>%A}c9G!vf*Kf;bdm%{CsXjMxE5YI-(|VMa2yNW44U-uJIg`3wz1Z~jIryEicrFbR=|nyG(db3?Th4*jOARSV zU{FLu)<yIC+|#=X z^R7eYhM10G3Yl4>NFg752~Zwjm?x4P%4D>}I&uu1N2kNl)9| zvy4`qDC{aaZC&jkHswJ5)dtd|>Cf*%o?D;O!Vs>vG_{2rZ9h8o&dp<}EX@Do>K@D< z{JU~xJeJU5OhXFZuzg)Gl*Nzzx9NhP3lJ;jQOcoL3IKCyXQ>{&I#m+U=;n6#7%jCD z9^-Q82C*4c0`G2z+N!F7@XkOZ;Rg4ak0G1g)Y(_p_eC{%ffY;6s9vFkk|IQ0kIWdv z;RNAHudcy&tb>go_^h=NYxVGj>#u0|BoDNj^l|jlO@Dl|r80n{?CRI&;b*e9)h{t{ zu8w!{n{ChGBW2hV)9bkYW$PYNzpC{TS>H)C#$?)(v_pRcG?&#iD?4Sl)2us5b$&=q z98*j63c4`?)9n9H{{oyspM`<7)|f=yB2OkRrm!n3y0nHjEXtFx0a9$Gx+9I$R^#g zHs0xH^^x=a<(A|ymPy^TKK=)kYn^%SC%lJzJhl%ovZ!fE25~H5OPk2G!T4?Cr|QIU z9;u{lC?%cr|2e4%>tX290Z4*A=B!aL)@Oyb>axP>38y}nxANrc=h;50Fli>*;o-5? zr4MAm$Sf>uZo*+q{!}}1K->&2j2NBY>-18{kufMdOdfW!v<^QI$ z8AK<*n-}}V_P+sdmX3D+^%C}#XD9HR;R&P7{}cF4|Jv|B;WvBh;0v5UJ-54YICliFW!E4s+nZGFA&05=XNEi31opB|qLOJ?d%NHN69g16IvcaOc4M}? z2gF7cJ&nOHAh7Q&nUT|)` z_}TEUJt%FMK&5x$12c`a)Z6r^#~UuF843bL2Ia>TjSZ8r7< z3OYI+-UX}p|C(<{b0lz-$)etUypctJq=A$Af~U>kl|+%WJ)*8#`TS4(@{$nW9S}Qk zf}6`CX*>(6S}~B@A$UThWe%Ystfy^HrE>Yg$C!IgC*0v_p`He2Sb;q#vkz;oBP@~_ z_)}1{Yl&W?DJPQ)muP|J^H@X;Z5_1n6ZL`*)!9ueHG{o_hbaAN%s$}i?1g;JAwF5H zut9H#DIegzR&>7mt3Db_sdVNyd8or}p?UAhG!e~k&o#B;SPR;q+#59$JwP$tlJyLV zNSCk2mQ(!e`I&*SB1jweNX+K6H_+v&qk`D{_EPTJLqsmb_-y4}kW6~V6K5PjE{Lth6aYYMCH)Kd|= zckgSOF5}z$N>m8som5lC!P>H??HL|I89=98R zRPf_MBDi`lHx(>(XT4ZmB&bp#dt+II1{M4667~q}O%EOntQbruHEBx*Ew2oq2 z04j_iw4eRdug`mXWiEaf@`p*!ywh|WiV4fE$ZxiG&1iHvBe2C7r~Rk!Qt-qg&d&|m zYj-4Mid#rZI>ld+b_w?2{7|M;Q?*QAo8?s#jl5xa0hNJyNs+Bev^M2qCBxP3kCI;y zRT&@gc$7*qr^c`>g&9OpIM`s%v|Vmuovp%Jb*!FA3^g7Nsmj^BcFV&dWcSL9_Ir{C zG)K1*IxRDZGW=e@oLgu;Uuoy%7Tg@k1KINfqYxTr_cy+0o1b)8GCixcNz@{lQry<& z+hhgHyFv{q?c9-Wq}6RbKPwP7eltWLo=R(ww}-~nv2US6*oWarPbhziZ6SoA7a&e)$-Tp!hP8F+$L=K%5HJxMG7nqi5iMiP4ETNnePW$bqFet7<7bIM=pqeldfF)kKDw=d`+mXK*kvCVf<3m+pRGBx>(Z=NeNSH?q!Ua;bI{i%-+h89i`y>w=>9H+6*G&Q}$ z_%Iy`NcAI-!7japQic|zQ@W}^4#9YU;z1rLS11Z>`oy;;Wpyrs2FnrFrDyk8QT2XN z{IiK0war9IUdTnN1OTysluk&Mqy~CyWgS^Lwl~Ron$o0AY0v{)ccNooPxL&r4V~~d zw}a=}DMUn90E5r`9F-i0$5mZ3gQ$L?2N2#%fdPp-XSy^(2Ko|3BQh=&p9xAz4>*)f zEBP7jOFo@#vRx00L0?<$*b0(QEmjB-&keb6OG?YEm)I>!ZV#h8N%@mx7$!{X4!f2; zJ%MEnVTGJs0wLMkltKwGLWvridP4ioM(AxZLq=js-|=%!xb3AT!Vs`X$?Q=)%a^9t zujPjwH@PI$XhVnLt)x(^1%3SbTReJ;$dxWAZch*eL*3*nHdo2*vWzX3S|hDPxF^q_ zjiFaSo1$k3HUT{TMSp>!{bjuv3K@uctsa?<9-%x$O&kwDU2?HPb=&$8N51rv?BlmI z{la@no%AE|Bw#-O=e@@*6(bHoprdu~_JZCiV{B1ABmsuioWY5^j{ zOHMCg5h@~qkU#+>QuA&2_IxFNdY`kz{?2Ls-0bEb{^7IR*&9hK%$jq|5&P%^@~rXa zQ#^_p0%O6uEy;z2IVnSU1Nm)#Z_@Tmd``Xqf{aZVKSP?pLYzG<{LDZMT_j7Udt!Sk zZ(w88@Suu=1C6mL#GA2xAN5u~zKWS-9bL;Cz8G3@bLCm^=szX^;Att8QCMWwmGk>9)0U<@a=D2C>wFKrb)&h@6_yGGC8^e z+eGeW6mmz<*}KVO6!+Wk>1xACdBHA?6jdZ{f`dUglmse34>)R$&Ifp4zUQe`zWbsrc2oq(J-Xr>ub3+ zyAs5k$zz?rJY7csQr~O~;S|~!beZCGw97yeF7KeMId~)=i#*Xaufyfe1{X2BmsgJJ zIc^pUi8ahEcckzdnCRWP4xII9m#%V4Gx-K23lP)*zs^SQ?(3z=dr>-N`M(#GYC%E3 zsa4;&xj3x2X6;L-N+^;?^-VtYXub;0l6eEd4@}1Yac|XdGpI&Q1zw z{C$1Ukn9m=!KfhUcjOfb^w8ID)A7RyJ7jN`A3GC3nFRzSnmUsMowhG@!Rkv(Lgn$S zl5Ti}1eWCD%Xt7vrwd4xl1|MeeJ*V|hBIv86m|BS$9291$CoR~{dEa6)r11(n;CE3 zjA>mqZHJ_ad&`RJ%%}$Lo>^8I)VHb(jl2qQV=kE~K_X^t0c1Hf?gb>!N|=m7yzoCV z29nby1PdRXi)_ecShUMc(r%;d-pVmubo3mEjH9x!DzDIYuCF46EQ?8D<=(Y#V#ZwdbMM=}6E`Z@a zODnnS#pp{uA9_DvLW3{y$;HBy_>Pz<06d2@B~G_ixmow;=$V|An0Bl3HfOS!ox7m( zP5kYlVfLE@1gflYTdpeD&&OQdP&hgW3qMq@w1TGPaXzP6phyhLAy+5n6)-sgL?(er zZx}U;s_2HhI;ZB7?(1j?2IyATKPQTfwE5|U3;6q(Fu zfptrF+}2PXTZHbS-pO>Mv^+|kDb@|scCqSeO7Oj_We5%dBSBXpom z3n?m%O2q2zK$cCNmI~ZAa33~Od1Xf32#DkhysMr@2Jf?4)6tCs&BVz5<|yw z-pn|1ZD%I*WAf+;X|PneA#IdvMpd{_v}&TW!cN%3F5efy#jpcjasb8Jc!Ty9CZ%DV9!#v{Gw5KJyT>vx_9o(Wsw|D7&Tf(eXE&v4 zhG+|eA|%q~V~#_YwYiGzfeixFpa1HMuX%S(P7Jv__%l!&OVitT^os{~^~kellr*{7 zP3Ot&jos)h?5|$)()=#)M0a$%H&sI)v(*41vrFb zf*99G*oV|Ta720Y!JT-eqRtU4RM(;tcGYv!*t^}^K@)V;<%J=CVi>I zcJbyhP!jyo2s5EQmKuk;&)umDa7qv#jVO~r(oj?E3_ z_RN6LlcsY6rjbclLR=p}l+{K+zhsPCx>1BLB=tmKRsjf7Fq|osAmWWbfJ3nydx(Tz zpiJO^3+)=NMvA1YGKZP6rAyBN*N-U6GjPT|Tym9R>U0TSfhEG^r9+dx6#!AU!IcI85 zgQA0Hl{hEI!e96VxE60%$Lt0VzwcH`%%IpO!>;4_w2-51pEbchmYukHF|ENl>4c0M z#r<&9D%GvQfs?8L9Ec&RZSc`k6FS?wr;r-i+pOZsCgEJ=X$S2+6y=&!F|2%k0G3${ zaai5KSj%+^p2Qe-XyBkscj*QSg7qF~%cTo50c)+C37An+YE^2x_u4g}LlU1K0|AkE zhhis!d8?IFa-z_30B<+U%4pXk^A8VtevuRD8nn8QST@u+kOO5I5lFL080|YBMh-v4 zM1(rW!uV>50DyA%#&C)88iltNFs=EcMp~T__ku%WD_~os*`hglTOLW$9eC4tY5q{# z6Rd%=f8*D>*xh$st@h3aYW9y&A+^frs@q+I1_7cS*-l{ z4IE-2k9(lozj9e7@e2ym;x_VVbNq+!(2i8(!BuVfu5g4^75|3sMCm(^Uu7@sQCyS+ zL_Mdp^uV>OB>k*TBt0WKD|}6Y>p;tCP|-XyR(x4)g*F^XP^tLVm>Cp0VP7K}Scn*$ z5P@!5nPp9^wC^~${rFaRDL9RsR6o-Y#meR|XK1?a{P7$`?dDHr@V*a58Gi7uXMCY| zV7VyvYlf2#olLtGSQyt?d!eya#Dd*c1uiR*6R3X#o_ZQ>& zc9i@~aTl_J0TFPSv95~i1vn)d!T{;R2P)5iT#Xc}F3O{xdXipeL2>25!NVy0fg?a; zhDLynT3OFGZ`WH_ARdIU!#{x93^d}y-W|Ovm6sF+EPpi{?H0o=a=iPDRafJHUK#qc&Y%y?DkIt22EQsOJOvHp;*Z#Qgd2041`FEW-z&=TX&}B$>6f#$Drm)sStXe zyc;Ds7u-+w80S>!+RC2-YTtA-I9ORrNVQ*Z#Dm)@9;>n!^{81^Lq+AU)4RrYGLXFzs>b#57IKsO1{WtJx!xEQ5ian9uNm0eQ<&Q&rXKDv+3`kevm14XkR~EeHC3a zH^t=_iy*mf(~($#j~Sd2?&Evs1K&ql*9-FKgVq)UVKP* zy5mc;i|EX56n>%OZpPWlxnO#c5VFWJ!sTf86>TzZSM)POr2-F!i%BNge|M|@Dy^*_KhO7His{wO>oPByEW@F!~w0Qp=ggo7c zq3EmUnuu$l8l-cxe^#WKD|ye|16l4jy7NLpr1^TUfpok6A*+~Gk?NDQ)a<{I;*8Qm zY|ecibeaqfS#i!T9gJ>**4T!qMVOrcPGNrKD9)Vvzd-1KGpY5y%>Xz_C;xTm)ci`MHrN_G9%6Z z=ecfF?n5Vl85YA7T`B`SfB`pW>6{wrK@Uzp8<8 zu-XGR(|8qem@NKUUr=86lzf27QQ%H2(@(wNRGcWChc-i3j$ln71X8vlC~L&~->ELq z?99Dr51FfxKr<^OsVgY9jNiThn;579Zx8#=Eco5drbM&Qj_!zo!M;80+LN>x-xd+Q zA(A9HK|rLC~J7~`d6{vTfD6Q!)Ug1L{%w;&XalFlJe_C z0ByDnVPLdVa#r{aL>(*dAo?O$I(h4p_!{ghWGgnetY)B`&i-SkWKm;eWf83tQ0THR znWQ5Gv`V}e)ft&0%|&`cNQW*#ccxyj|AJ`lMj*Vcw+v(ScG^#W*C4jcJg1Cihsi4}29opK6K#gsC z9O1X&+#_{`o$BGda0@DR)c{$MCB~^EFgf#v1d6k^7uB)}j% zyP_z8)@~Ubnq9$nxF1c=qdv&6b*_ucUe?IBTy3;j}SPKnH1W zPf%z1m};g{B1c$%Y3C=tD$S(ng_3;BumG?|Ke!f1w5Q!6J!GR4;XQ$T#101DTDPsf zdi)CrE2D9==c8wC!uy(L769sa*ds9FA@4rE)9;LgCmbe^!P<}`Q6{>+o>6lT6bJU5 z#!9C(9nodO+#sejnx{^Qg>(w*mLJ_b^Bu-b6>6lQ8#=dQyq7EED?m_T1Qe$&_2HMN zS-KTZT5Ec^62om-tdpobgwVRB8c0??!xNTI=5ihxt$k-nfB=fzDqgKxt7ItMXC~?{~Nc zIMH}paV`XU;u%i5+q$8h=cdaFRZq0GnIz)IoH9@`%XgI#Kn7Kda&$?8_A4c!t}a)l zI0hlOQSrN}L46@3X;S}C)`Q^!@2gKRm=lqiAz>(oux57yDqI+n(6?>>`aBSk2xo}A7ewv z){r?3z9iae9Z+A4%_p~_DBB?&9)v?^1{0grw@^CJ97HgIU{Q9LUwe@m;8AddRnisE zRidIw^NYG%0)Nk4onf35lnjy1d~xXXD|ZksX53u2XxNEgv}S%ncn>*^%P@-|6UMH} zw_j1(8W8!^V}&(MUb*)bUE<- zEYz*mCvZadsGNxrg)f`Vbo*Kp_h z$i7zw`8Jz2=ayi&#d>1OTWyD=sx&P^lij`@zR95_Vv5qhht&nC?Ia=LsInF(22OQl z+*;s_VI6PhXXXTh{(3D8@$r*(YQQ?=KPwq9#1AyigeIUD> zo(eB;CL9=?nls+6uUvSFr%a$sL1(n4)vtzy03)#OYlL5*ekIMrfoHkeJOYztR8rOy z{&oWlw0}joGD)RG9ZSE7y#qv`1z_#%e;9f3JAPNCkan50zyaym}KarH5O22FZdY6C7yzllqaFzf)FW$x}=i009h%Lo$yD5Km7y3 zq1_G{bct>|xHc!ZWiUyYfjE`;UDqpCf^hVC28|_{i~+oZG2W-X2xx#zhOvwPe(_h5 z_Zp&hQC?0GLM_sBUWJ6N7?;)XgUBo{zK?>ckw^Qmw=9HzoBDdc{#WJZr27>gy!z9_ z?mZQ|e;(joILYddQoM44lC)?%q=?K{(Y-CAx*8pe$BG}t!i5LQmwYZf0RCwyth-$r z;gzP^;_|2TOng|BreW+XZ?SFd0jUOgqeiUkH;<3 z>eF15pcMgIoj*kwCiXIcDmfkU{$bkm5o_T*al>UMN}vC8-E1oaN?B0^%- z@oRNE-N8aj)E3zzo7`j9G~Zc4^82N~hzi|OaH~4bly1MeTHz%soi&ZVcLb*bZvTie zXCV6OSH+F5GBE|`QLb9VIjQ_+P$pF)BdvY_Q){(crZVQfYzER;5uex7So2O3MSz5g z%Xa#3!3cYk-JqRA>xvYsLa8tuheZ}gN*!$pECg4f(%x25 zlg+vKiOzGx+d=JzdTw*#On{{joUv7`y`3F#d0Q9rP|TV$;t$YaRk_IpIQXo01A^gwMWR zFk+C9TI954yCoT$htq4vH|H;e?0}!R9i`W{mG|T!s8)qV8viw+UZ$o#wOp6M9i?Px|RrR1oyGoR^ zUz)iSK#m&Q^)qO|a8^5S?NsXrN-)r_pF`@prSK(fevLP%f`_J*jx_(4WoRYpL{SEc zc}ezD7tO~3O^CD=Pw#o9PoxJ-#Owh&I=11Q*)7`h2SDm@QIu&&RIV(D>qAkZ0)meV zVq|#?{?UV*-`JX_d)(V~<=Kbv$vX}Gw8!o}Z!cmhWFX|IhlKt+>+CA7IlmlX_*!UV zO3mgJ&K0^}C_ub;bPEoFja^%I69 zBm=pm?ruXe8R5h3(s!U#6jobzn~>5Xhk5GS>8tqJgEO&4qV*vM?dX27NuLEDot6b$ z{D<8fDhJda2Ln>m_BZL3;;rLEnH+=k@q>w(FKz)1A`a=d`WoGJMyePJ(xH=oB+^x76u^T$+JgMf|8ms=b_xp_?>oma(-5-C6!$T zGAH)m=0MdNnWgVJ6geyJI5=gJY(yJ+RS2B8rr|ceekJwbs+%-HJ--95mbWa8SBtR% zNr2$sOZsVDXmh%9o*w6OaSb)zH)~Gqgts!G(Lsc%#S}!8<9G9mOqqeEB7dxOa+V*T zM|r_Ot6T#?OYa3p@iF}y%T<@Whj-4qp^_5S82$i{oDcARt*m9PB=PH zAx+^W?RcC~?@$;-%SQq}(mo@K87YI2lvf1tN{n8|!kC@?T(7oXk*TJ7N$Ej8N-w!8 zCaD0WTaHp*76pVeHAA?Ia2J(BlCmbWVU6~VCyOw32Q2WVw0&8Sm5$xxBK-~;8q1Y= zH?+?5+x*QlU)arH65OF-!VhV4zJ0Jb6`nF+Ql9Ah-p-P@59Ysm@B$Y=mpv0hDrkEe zB%-gOgqaL@G7u4)9;3T-etzj1Jkx%i)r=Bqb}j*^kQ|{5`);wSET|PugF8`>-x0r+ z4S~*Q7+%RE0hb0Jv#>9~E{n3e_=K+1PKkyez-3UnHt@IIL#7t*!ls64Zjk(nv2ynU+KCQOzm z3*uqSc`D&9H&i1eQ7fs*NADbl9&^fnklZ8d%#r#e+>X;KjG_Oc9yi)4Wgvc7zTcxe z`nra>7C~@22x@*#pM=QPXlgQ6F#W~j0Nj*NTy+<`DJYeYaJ#>uWQ(kC&bGm9{4hL|Kb4OG zbM#ujdG;ter>4ve_two}nxQAUx9C4G=au;a8WDg(NXv;Zocr^j`jUYkg4{ixQ;0b_ zHE<{-u9_`>hH}-8vFfAK_!>pBEei&=R6Tj%zK(99E;~J3p7meV4qC6Jo$a5WXe|AI zlJ7O`AB;=YTw*Lt=xG*f24Z2d2EsD%TQodD6D4{GGif!D9EB~-$Tn~qgdoCS4ye?E z+NNgFPOlaR|N1TH19>GBX~sc)^iA)Hybmq_Y#B6g3d`7@jb%EIydsh(?RlB_1r49n z#r`R7Ua6u(TgsTZ6I4Y499?yG$(60O8448Ibk)KMuO@~{V}B06c8tbBJN4O^$ZqHE z&V=hNIc&^@Wo$4it~F6(6BHY9zXsu`>`vR1TLYm8lMweEnrW`PG@jkanE#iGX~v3+ zO|lf0-O^4Gj?j=3lo5{q$kh%I%?g^2T5*03>vTspbUDlz5Qkh^bJueBPQ3mYn-H5n z`WN~qyT@9LS20J@v+(733C)ea+$YmtB8<|RCi&9-M{tV+vxHA3bEQcdM{C{tzZE=V z7p6A_Xs<|=RMJ4;&8=XZZcz}z;5sa*4H1L}N%P=j@4HA%51;&fkJBxAvBC2JET%3{ zhrN?96J`Rg3VN3DOx_GH70YiFLl8t#`-k!D;3HTC@3DUCRxw?mM`%Au(5N{53SeQh zc4f9J9+qTu?0k%}l#d)i$$LR&=hPCli$Q1w zo;CZBjt*|4B-`Q49yO0~X`i znZQ)-#2Ni^Tj$CSv})rVcl0<)2;~`~I6}8Y`}k};N=TjL>Im_r6svi2Ccl9d8#7y= zPA2V_>)Q0$wU>+~7X3S}5NwJu95elcc2&@)QpvABBCB&eoLvbTHtDwFuQN4c8N$9e zpf=-yEcF$syC%Mr3(vghGUO|?IGr=_J$C96&-DD6`!Uq2F*z&Ds`45W>7@B=iCnqr zkL!c{<6Kk!?YvdCQLFqd*z@$_|yYv@D?I|=J8h9Y{KBe>tR7*?$Q!-no`g! z-MRmYof)4`{wuLfyYzjF2~X#CzO?mvw_cxJ0%F#lB(Jv#HatC#OD7tiH$^V31y?92xTh|I$p;_!y`qlT-DEh+b%Lfa!M;w(6$ra z5ugevL`iHNm1H^nq?>sfh+)tVe^l_ka6-mKy2TDRVw`jgwltMhMhGD9f{(Ma>PvTi zO}1!$5dSos{cDF7m*JP3%j|owU_&l^nW&KOti#wI9ixnWTWlH7orh@*O0oNlkPoWe zZPm4FH54=DohelY6>acg%4T-{qns)6ewx)IUc@XFb%4w#3x)@QU|<>`Hh(Gj1*S`7 zTk-*pE6x;qEKi3}((H|-dR6%)XTM(!{_^gp%mKtDWVQs26fO-bO|7X2m90P*AFQrk zd{9N-hC>5K-bfR%Hv-NmnuD8-NDy*#88doo-kp?FCqPCu`p8feYaa$oc1Zw@TW5hZ zaUT;kU?!7@^tJlb4Ww;N-BuAo<0|S5`_T=wKG1jOtk)2Cm4rGUt$C$`o5epb&j#<> z3U1J6WzuM1-47OaK(3UDCuvzh!GX1xs&i$7?EX1mNpzB`2SW!m-oySjHM8b22W@7aQP*xRhO8 z{9$j-0$L_PuH`HYM6Mkjp2n`m9^x|n(eLNnm;?e3jLbQ{7@qEOl5WmV#S}C~iY!1X zObP2(p^>^2{-~fo!(5GeUGgkCNbaqWBULeBK8Vh+2)pHuRdR_GP57w3GDfZpWbbtL zQNd+CSGOJl<-VeZ_9r>_1_&jSTQ=bg=hZ$0^60Q{CNK9%%D>mXL5t4u(76|^zmqxH zY%e^7BRxv83IY^(s$t3;l2lcu6H6GVJ-H!)B42()^bV`~^r;h}p!-^IEc~DkS3)Mb z=k*q`g`8dd#| zaDQV;QWv5jU<-%gs3JQeRMdl5edQ6;F$rq8Qt5E^qN?`So4~gKHwr~xT{K-OKRdbT zY8nHPWcW1dGG%$hwi_}8OFEQes-4yu<`X6%RSP_~WI&iAEh-9mTtO5cTg(#>1vNw1 zar^9DGhWrezQELP{1DI^-N85kj&1LuwUi0IG2V?tG$H{nBfs8W=D@A zBo@xassuRcR>Wjo*Y$i`Ncu{8=xHF-fXrUi7ndWr=}4*$BO3&YFb#2~f|aK#7Abl# zSfUA0S(05-ZcJjW#d?kEB$x#%?8a3cWe7mDd=~SUm|eS#ri5SpJ(67y zHTI20j_Ev}zH)7FbsgG`j?2>iM_#p=48?sqODJV<=Bln*Q}-tDA9K#Y`Th?asdaM= z20B2q?8U_g7Kw3C{Im%WO3F6h)*z38f_K3a2swyW`3C0z@ndp&S`Tw`PGZoQ;lR!-QdlVIMmH}tXIBVJ@_fJGuC6st4oussxQdyU93{K-)VE( zCz2fs#QxN7BQ{cH0U(xZD#;xkHnmt`T$S($TaUh^Zk`PODT2o5a~rVRJ^`bpC*Wu3 zhpy(;FqVg%+A^a+NB|~0&bEe-i5`Z+mA|5Mb6yW!pB7ZIIx~Os@sQySsd*2ehcOcCiDHe zlC4LALb|co?lnm`(KcFCWt5WY0c7vkKFJ`DazuUG1#R~v_L-J47m0$@)6fm!TJ9if zqP%{oq#Di*m!5ZT1_f0Q?!F5j1_J?^(=d#IiT1%G;wzB?HJa1GBf->Km$g1wl;*^- zW3xNQ^`)ZGGbRcrTT8R{Uwl`MOcr?j$@l(`q>*G}nm!~+D+P)6*`CcGL!DF{2!FFX z`iI;UJ7sEe&3dwAV9Z&yjxL?fx$V_xb+I2#M~;sWb}MI4V`@O~$MWi%N;NyhrY$=p zDbsnA9}AsO;1d9e*z4fDqAy?}Tv?p&_b?w`1i2?okY)db&zFDU`m@!BSk%Rwg+oCL z(&Xs;($k)oot2?}P_mSSM&OhyYH2!Zr=+v?(xbTL%EVav`?M)r<5+>cKt;(JtX|H! z<9wHg+j2TVjdA*2Ds+vEk7+VYGZc85*jqNit=ytYr;0(s90^6$kqE~naE_D5)ZQ#uk~d6V!rJkZwj)4vA^4js_h;F$I9U1>`Qs5l<$oaXT# z{VT_bD)*Y5QjWZBL<<-jj@DnOXrnXyuLVE} zNdlf9Syp8VAG;Zj=X(u4?S1(d(k7}b${6>sY>h!%8(8jnNj_cyWx_+Bs$I42n#)c> zP|?1JYN1(RegmaF63W^av+55U-9nT>)`To-SANwI;nR3D1R$=QtTIsx0dpu=9?@4M zKzb5mdb0l0AZ8aJDV}UT{^ZU5m%bqt?nZJshIIaTz*9D!KbwbZpO4NJC(a@*GPv|8 z`>M*2;ljcV1#b?9CQq-*?FF*TJ#Ge%!w=;MBM8I?hJSv|yo|%fN8JeAk7f1lNGAp_ z|3eRrlOWyDf$3@!&+%<6>-qsftxI@=6IyX~F6v;%?9EIq+~|}|Op7EujVDdP55sG9 zL&BMqh`8(fKsFoSm$=NIhKmbBCSQFiI~V#hwag4MS8jjVMV-w_lsC=g*hruKqohc1 z`SbFQ;xc|MqOCQt3eX1zwUP>CTn9O3oQ<{YFd7xr*t%(-@V;`g_q>VQxF6f|+jd&U zb1@*vfvn0eQW;D0v#=^mJaY8ej>u6M1Tvwv&2;K{TIxdO=?hg4>L1$S zmvfTdZT2LrS{(z;0<@al{qE?4`J;b&Z*P7l+DBv?j>s(>4Bz{5aWoWd_Q|p1Vfmrc z5u`#df~X!&ah?26t6%3P3?$0Dn3=Z_QV}Q`z_qqtPm*GzJjnweWF*EDB zR2C(xyqHRwT3xq>M!Q`<*$$-{ zlv$aF%g-zCN%6DtA!Ffet!}pL571t!`t9s%lj%lRBbCO|>00>WRsjX)h;9|f4ufp1 z2=eK%cK-Pnwa$^cErbfD;!IxiQB;VQsja=8;-T*uN)WAx1op?y03LccoN;0L$(R{G z#7n_G8Tu`JVLpg?Z142H$Q>AxtTY9PMPG`MM6aMy@cbUuhucdZiVF>eUxB;PAPS7R zV?mwpuk=qabbLepUhkV%=a0qD>YljoD5?2_a=>)0J?c96+WWy?9)XkrsRZgt5+xJ= zvvvjMGPY3yjk+HLLg#FvxCQ76wCqk8zqzDf= zrZK;R!}WAia5QCb2#A^E}Dm7c_VYdqOntj;gpZP=F$Yvqv8x#!zr7B*0n?O zdt3^AbyIu}vfMYyCZn4QqJ;r+jA_mDfxY?LA%rp1p1Uw0R$iX~zexrUNvjKZ1;u9H zV}RitQFBcX=J!9DoA}I^?NEhS%6{II_aOq5wA_a!xGJ9%QI(~04&*3!hH;_C zD5ESG$Iyx&oCW8}raV`8E78NaiE=$S{Cs%`+B%!+vu*{s`s-;tiD!7GK8|oPY$AmuyN~xW~V+ZRc z@at`o54FaNlUB=)>Tn0)i+e^iI$D*g6Q-V)mf)D6N*gk@SjliU`#57b?vuV*U(f~y z$+`iQw3!|EzD(iH+0i+z>MOaFve)f0=EL}bl(ODei|651m!rXPUX538us`Mz^<)Hq z)Rmg@Qp=K_2xkH0*Tdi2;h~xRfWzth5oH^FykRf4E~7UgcR!)^Nt@vRpNUin6lOp) zN2NG6mTY(nqtFxkwc(jC$i}THCzdC=X7y|OYXaFg#P^xuV6?GhLE+dH3vLpc1cf8_ z0x1=6r42>@{5rLw7L}PVNT~Qiqb>S`K{Hvo5w1Fik&&M~gqNtqq_+k5)zk18Ep%5y z(uq%P>3o~t>g$)HJ)OMxZCWN&SGdj_lugEm8}nX|Cz>>Oie&LPh6J%;`)T5pmqby? z<;|fUC-^2#)&_(G`(A#MKp-;u9L4vVq2L@mj%|q^CiONti_%A?v3(2RPTA|AI*9$g zoaw<1@XWCuzQp@RiwvQG`+~?Mj~y9ps17%?8(mS;tW;yN$$PP=G8EWoG_-O>daH2jOxMB zRlV>L#jeA~z)XX7RgKaO6MWzOOH$vBdW`61QxqhF8M^vJGcmji9|8gk-`z5+Bbs~= ztaotFuLo67$t~-;E62j;W1pBEVQoQoQ)oaW!Gu+I(2HWkTPlJJ z!~Jw*C51m`o8V!XO+@jOX*8z61T@yoqtnIw<2vTtMpAj%M&bLTdis zqodh9zjR1I^8xF%v~#et+kRdG$KBRzyWiT4gQaGx1!nWTJc!ejHkl&@1ZWcoP+jiq zw7a{lM=~)AYMmKR?b629cTht7*lw1ZHMP6B*=ib-Xm7sjON8Iq_t6xly{b#zT0WvL=-w*=)cw-k+>#Jz7RTqH&5}z5 z9spy6euwq$r^u~ML()8_^Tmx%gXK^9Op?bCeS;?$$cAK0bL;qYVx}uj$q8QrZm?8} zZXz3G&YjzKAD2GPcB0~qTp4Zp^W^;9qj&T1N!Nhk-D$J8s6KE5cnNKBilHsm2+bFF zHY%91f6*=uXN1av{6*2+4Izx0BZu4H)=vMu-)$i7_!v(so&5~Y9{S0&;Z(D`)UKL* zSyX0~O<(%q&xa5auZzCS6QBqJ?(sXW7GH$#yaDM2YhtP}8BTdz4i|YlOqdDQNDi@wrdEpDOZv+>pP;d^!#P@MoAA(xf<-D;vg^(%BteTN&++5 zP;4dCkdVWb3NH>DP@lum`lD)8DUm7r`U{VvV_Vpzd5MweAum9|YdTrNGF6B& zmikx%eyP?C(qI^z#|o}RgV;53j|`{8hnbV7&LH+vvQrmn^>HQtwQh>5(L{v7S5!{Z zu6Ta)axYwujA@A>GKN}c4(2gZAPd4PXO*BHQ2_QpJe>6$4ysx1E6*qENmcx@mO?g) z95Q#T92h;6?`h@(e%@*)j#2m846uxS%cSJGZlwuy%_gU#gzM_dB*S!Gepc}-&6U(2 ziXBTmz}bmn*l9LOp8nK(iy$2&-_S&}6UkBCWp`9?rqgk$7}WJCrumZQ$WB_AZ(|h= z7@;o+IlLMqr<$zOiLq#&Z$}GXzk2u;kL2G ztN0b1Y&&*cq{d;#N0={YI}2QTp|#)CnCu_arlxO~55ZSK);`GlR=hlW-h;-e_Nnzj zHFxtsi7^>B>B_W<*|ET&$U5WlnVQDlc>8sJ_Oxve~va3U_W?rCx1xs!vB*GjBiEq2CJp6ckXd}u?nab8 zx4xh%eK$(aVEj-VJc01-^n73Uxv$;mEIrWN)U$-Tu0J>3%?tCL@8}K`CfM0-(n1Q3 zP74SFCz)dp8B1WDgva`sX?G1Mx_RVR(m83ra9!bF#e0$D=ju%m`w}%L@Q>#Kj`A|$ z{5FCUpwU>DPD&GV5c=el^tPk2M5#pJVQx}xr~Nw%>yc)rRL~-JG}2wLc!h_NAXD2eGsPcWekV2=*<1>4;)<9At2sVT74}ulDIMsM zxQ$w9t_YLxTAxzk~H)&r=dS`CWD3QrZNYMaC&;hN>^S=!i10V=JDPAwlbq zYu1bfr4;Bh8dkUYA^j2B5&#X^+_~k+(G+7j`_MI?y!RtczOnUgt-ZI=HE*~iciX4rL+6tsp?(^*o=;rsC^7lz#7Qb z1k4WhSQuM>K-qkjhu7<6;(B&z>ZyvdaH=%fbPV3T36VakFK7<|)5zflHLc8NhRd$M z!ZH|*gr9})1mO`-*TJYR;UvpED=N)T%SFSKQh5PZrNeB(pGhN?by|cY%+n{unHvaX zPX#jky%;p)FPF1I-xAon7oDHBd=x%BYp;_<=-)93#sGRI8Y|HhL>S91Ws?C5y)dZs zuKgAlR`w|!UC|~kP0uW!N&ctj5`ho5Hp-%+Fi8xPaJYVJZ^?bMVxe)Ct5*Z5^p9Hp zGF1`bALo*3)5bxwddN)~0L51YosPC!&aqu*eGc0R?I8T|@!2@2oAp#3a`uM@(Vn#R z!{f^E91w%m0gomRW5Rq{>8N~gLFP$gPz*WI6C?M6)opg{~HH@{=JUd%jeSq#~%7rHiKC1+J0e*6?vdzu%&15Lx{_` z^v-Eoe`1V6h*S$yBOux7p`Xrhs zpB8FDu@>j_vCP|ecv zU8&HBSomf>KGn3#52%a#^2(bT;`3tCPmKQIj3pKw~^=7HoiF zr*SE^#r+MaR}mNB8Xix}C6F1WJcoJ6@V51gqjeES$z5v)iscN!3sAfrO6JJ9mg^D^ zo{WyzvTvp0o7;&pKa%S!XFRU>Ngnen*{&8VQ?(r3F_Q)B&$Mida+%QgECI_G!O9 zN^w#fD)=G>m*`dmIW*T|g@ z`QWJ5Q#`q%i^5HbDD-M^id;z;!sS||t(B?8ov}Mv#&_RaBNx;(L0>Kp99uiA}->KXMEXN;^ zv;t^!N(;26v5XJw4OX9sw2JW|OWty@U`W-2AIIbO(m(+eG) zNaIp7t3XY;)RQ}$-Cu-BZAr1loosV?+25q-My!*gPjK}ELW#0^KD{tfdtxYH#a)Tq zkI#cW<7R;5uD`x2POwdf4xb_pB}NDZni>i_q#W3MC!As5IS>#a0J)G$1$6Ui&_@ii z^7F(fnBEVfOj6sEc^eMh7>G8zKw-#^3)ne{A32_o%h3nYiF@cv8W>VG$M|610f~Ke zA}CJc^{cw}pRH|q02B(o8|RPgDUSx*(96@JEmJiY#S1%f5%dOf171K^2h&Jj*Rqu* zT~Mf`F;Ys9@C9oiCu;~@59-hnU$wq3H)gXLy#6u<`5*d~#KFT1qW(U4W?+4Fz5yu8 zK4tw;Rw-DZC9KDa{1eQsdtS z2}_Hk%h_$OKcw5=zzi*^?_Jbj3b#vrsmLyPytoctqi73*NG~_{Vk~<#DMW!YJsJ{h z?suE^)Da_yR5?L-m>)IcaG2UNEvIyHbhtX4%U}Zm$n8l!KBc8eJ2$UhYxGd_;A*54 z6k=J5P7C@QS#JgdmgwX9N!P)@AonH$eohLr0V*oieLEPyNo%vlre68*ab0d$HGDPS zsrzg*waj*WB5arGeMgQ*Ki?-2qlBKb58V7wCJliV^$nBvPwG>TQnhkKq@$?OXv|dW z!F!?|nsx^(>^BGCgHQ-q9pg7%f2pw&sjdS{ChI!6*aa5Ez3+FNx{_>PUIh8!yte_% zG3X6Y6v-P#5!%c#>l7%5^pXJPAr0_W!u=tpK=CkfRe6m_(0+WEikgMX)lFwnkf`12 z)i05ZLE+M}C*}Q=otTd0LAh;cpjs4qmXw4(45we3l^v;vGu^U2Yf%li3_NEURrwwW zJtty}Zkb#EW&QE{aJSu+j5jSM9>T?!B22m=93Rq_`Io$ivVR%i_>ML zsL2NTUXP32Q~%*?!9Yoap>R21vghNnxb{PoNBjqAowd&!7uS?lGG zi{smsIcxvZL#r&mhki6vh{<7fGQdu%v=%83VdrGhSNsWqJQyD(&)Gf;~E^42xRx>Vbc9gr( zdA?_^E?}z(zERPG#ctTCKCeRk7Sh7op>CiwNXY0E0NZ%s3jyFOoq--8h4%&LF&tSr zn!_%pkc``m13G0id$`Xp3A~#lQmu(DUrQxfPVZBlWX$GN1I=PDHLI)~5vzs$JE|-K zsf%htHLEWc>Q)wJ!9mh>h*{{hlDTt3EUTLjk1&EG+|^vK1#3q8vqe1?A>|9|w3=FE z54z<^b>p_cx30O>?qP!D)*^<*VYB73H`E^WRHR-{_Q)5VpRyFBCGq!0-xq&7mE6-U zAw`P?6R#pI@r?EIH1bFqLqgmX^xFyiMS>)|bG61X^&IqUb+SEC$*(>oxE@6omH=MJ=a_EL!-j&UHSSX%;Ac4K$0VZYg9W z+9q4iSUd^Mw(9#d4p5UKK_Xjz$UNZ&q-5yg#`vB3)9jUXmZkp&iWwb(Vy^FPZ-Ln8 z8D^et?e6rDnBkDg^bC6^A9r=@^Jme^{CAd_6o#3D!`V#Pe;v*A^laCztuGPW3xBe? zyY!`H^Xs+s+MlRlN&M>zaFX@f3^L{B!PaKG^bxunkSbf1UeRuCR(nmUw}0HKK)mpR z)!p@7eRdco^<|4co^AOWzp^|;&43=?`8&F)ZPq@(lk+7)WtJX48K=ooy$v6Y20v+D z)6&j&QcxQ^5Z-)i`LA83Jne+RQ<16Wkm$y+nx*y454XFd6yXhv+|_!oJzaY8eSK$V z>G5cqED2i^zi@lAyRo(Xd9V4rw^3F*=a(Mt?S5Y0?aGaIYj=ycueAYw^Y=l#clGWP zkK1m15eE;`H`h0{OnwIg&r$_$M>_&}4%|QemVEf1p>KR&xHoGHiL6ioX>3FXt9QFv zKWa%<{5zT7`xM;yHBAK(jhY8xQyA{&0hyhd;$I)V%RB6vojI*g^f-~Lfv3{9D3sB~ z5m3G^b|`sL+2M8`1BXEj?$igaujN+3Uzk55O_BV@BbMDs%ae*MhAfZOb4S6}P8MpS7o?H4MqrF->RdX#Cw!>wBpmcI9x$ocr#MqxI#nAswTw$F}JOn#!)E z?()Xsv8mLkfXL8D^BhuNWYYuX2AY?$%4u$9WC%R4xg5j_gDO+|do4 z6u;59;+BwJ2(VTLn=j*kG2jX_G+zfve8?jqmC!jW%;{k;>Gg}{J2`fN#zj-6W0iL~ zEY|O6x<@kk&HG?{0$Nc?9chEf~sLRP3Ns!UgY%Vn#I z)sS?Fq9hQn*}^o`gJ?0>tLZJGQM)~uL^%F@>Sk?*PS7vT{MUcmt3G z3y`VyWFdhm5y_o}19XZ2m)+h(m|T2*>Y;m6gio`d^hM#n44$OrTKWw)Ww7(=vtB&XucA5RV6!`{r*rqHg zz;cPNI8&REyywIMM@oho1oMSX$+2~Dv8j>fWU?}(2CQaZtaPduR8K(tS|G~No{ybQqA6ev>OxJXK$&7l+=q{08)BZD5pVhw z&cca8ykkv<;FN^V4HAX6NEe=@aL6yGLZuW$?~S@^gZ7J%|G0VvA#ut;j;d*}==)a~ zmQI{o{e+V-`bh?&5?Fa~L9uK4X@TJ4aH2M^NjfTG#cVQvaPDik0osjhc$B0RA7*rl zpL`a6AiG1jY>g+61*N~d4kAde&D?&sSovF>tp{^$%ZR?|#q9Rg-djF(%dj5UF78uo(VhuA5;hMx}^95jZDk!N`F z2}u{_2GVXWQ)c|yJQbNDO? zs!~J7Ky~+m^r9m@E>_}2E*!R(Vlf~owiuyadi;V#eRN*~6VT;Oc6%>rd&a)F2Sy`q z$1-p|z@!u(CzPrW-fu=sN&V?O52r^Ryi?oga2za2zXatU>-@C;QpXrS|@pD~mA|;ml#JDus4=I!)?vh22VF0?fOvZ8)V%e6+M2tu& z*rt1NNm^)qH+;2CxQq9ugsl?hFG-yf}yUvaxP>;pVeYKpik(v{ZFN&Yc1owHY>lL|emzd>>Elkz5RD%X^uy)fZN&ec2mT+3sO-6*t z;M8ZK;vrAS3j z2nM4j_g5Z=8{suZGwI3I-3$#O-^U;CGYC)Y5F1f_-;R3Xkuv-JJKPJStU@l}>mt=v zwPTk5La95mTx+lTyq`RrWN<&`o47TTaoF%-wb)h7NC?bk^5UCzTPp-J{0J7OURlc< zB6iRPbs7gPT-U`17&$@;NiEFDNgWX4(s{L`;?=h!AsbYeK`oGDy>6N{if1?zg6-l( zA~;sGZ-tx}5te`>;$(}?OEqO@lJdvBNdQj$w_dG#dK2|J+C4Zf;*HiNBh zN1{pz8bYJR3r8>dY*YCNwky?ChFhvqAGyX>iD2*1g^#y=?F3dCBU1|qi$s%YD~_RmXt=PR5c`; z?n4I zg9r^=8%Jcf1kTf9;bwt8G-|^EfiGbQ<--?o_#I6YL6?|;a}7fj6Y!pZu(-rW_3@IN zVHcOE`%I{WG3o*rk(90a<~>0ss|#F5;pkOPs?H39x$4!IY8lAnW^oC=KkKXJ&%?hI zMY;xUqAhS~TGBIAW4p>&R1CwyX$;Wo`V=|vRIzeZI8zdXwEI4Pb}a5v*dkisCbh6; zp^D02Uv@-=E5ZWc;jxzt_;*URvM;O1u5#5>X7#1!Wo6@uAr93q$9i_~(^25lvWA0jIknecDe zX|;0VkqBIxxs)o!kUw6C;T~cLmxy%(5=FuUb2JhSLq>JC!Uf!ws!|xrf((Bc{jsh2 z^gu(25i|0|%Mgs3%*DY_DUMm0C-BJlOQ<+Nwk4z)-N0j$Tty4N4bR+EZ}}SL1Z)RC zARn3OR@=c{j8;_56@7VF%bD1h)@9H>a-O`|S=oskJ6`Qrmqu1;7p7y{3kZ$XDMLII z4Na4KGhF52)~5S=Pni)}OxU(MFuSKttyJZo?4gkM{OdXhmcVb4Ftz3nokXx(J0 zFBB#y!|!MYI^dO{tfh@$?dP15uqIOQI9`!@%R>#U=!fUScU9S2C3nL!7%r(DNQ;Y7 zbKphV(;BEt+h#Wy7JI)P-CQ5)-ptGE*8JBL8A*;DM|xZFoMd6+&iIVl+jA-`PRru} z&LkjsNM-&l{E$proZnh3Z|LSCUd_;5 z@-~7APN1)wJAYiv8&D9~=16<5@wFhdJ)A<}2%4J~atXeM|C&KlG?*aw)OMZ>=g+pp z?XR$Ablofe@r0V5kZalaF=+?qPoa!#|5O1jjpz-DADX7Wwk!gs`9yjeNx@pu^>IVL;X-{ zm#DVt(d+yX<~G~zC**XQu#<8ZxF=ewLt$4=tJm|*+gLFiU(jhXNT?x1I4j)gEt7F0_ZJnWk$@NTO1nBIrn_JOeu35)=~ z0xc@_Yz>ZX9LdvAsT-ZhlTyw8mO&&Lkg3X5jl&cE-Qy3J^<|g;m0OauD|`msf(alu zORUF>lnbWJ?3vtm539_ax$udQe}SA+15iUwGunfR{#OEWn9-91gZGe<7=G$bd>Zoe$17o*A-ex*#W&5vxJz~nTnF`vAV&6qsBQUu+MZRqBM`Rfn*MO#s- zwJTkYzuX9BBNNGRKAzv=ZsV(hqoF*zsK8jLUtbi8!6(PH7a}P7k$tGf1GNRGN&=cF ziKW-4(N)hWG@_(KFhD}A7Jb%eenVR>z@v{}-=|8JRR5?7rZ(&Ww-v&_Wb1^&dvqC? zH`%~+Or<|Je{CKCUZ|_7SQ)-wG=&9S) zH+r28$%;xI6t9&*q2$?xV@TiQ#uMR6?$vYT^oRUi7JA1RX6~WurIQn3g1qj(6582t_D+KESsSd2*2Bn4!_#zs8T94n z=Qm{c>im@mPwGY^ubT9$c3c4;(eIa89(`pBAzyQTH$Mnah27*E;m>BS3cVg$58uO+`+m*#wc}i z638G(mzxAkuwHTGHM4%G`GYVpx0W$&(vP(!7lt-tifY*-78|fnlXW?iC>&)|b*L)K zco&1#i~9tO`mO9tk&}bmM-1iDDwV~Mo9$j7Nyzr`>M#=BZFv}Gl*uJrnV?YB0@6z( zcm^xy!UYw~P&zl&oURz=qEs>*1(8>UKPo5FCZd4Gw4BC$lj96YMoWvpVd~vs@Bqz| zum#}rCgX)`+pdjCJ7v{X_-zb9N|)XQI+U(@s3vWtxyY9*ko|V400-f)=!uYeA4{`i~}yEcc?iLBJCuzJV*1Q`Hb%!N9cX>G}o&Zozw?U@oU6 zgW~Q_4Kk3r)k#b8B%=nj3lPGXYAALDl0h-Q5?hIq43tMnh6rz&5YrZJSisq}rN&}& zXnsd%Qw?LF=hq)SgNP{i%`cu)X1b_n_@A{X!$1<=%5S+#vSk z_g^fkygalDu(G(1LW~e@%IuHs75_d#T6KO4rPY1EV-6N;S^?nj!f6@s32VczD}NT< zlRDiMY7R!fD*M>)$k{>kD%3g@@;ebZtb0oh$2@`DK-!-1T}R=MM$YJ+`sn5fm~g16 zd(WlR^zA%VC|_qc`@>gY|Fp?h0Ut9aWwGf3TwK z`b6nuq6h87$|-3zwNNR|6&^LOikqV-R!M84qym#xo>{Fau|twldu`<~qNM{vfkF>J zZ=Wb3q94*hrTjWQt=Bd<&?80TqrHW01v{s$@R3{LO%-$0z$V@CG88p}`|jyqROzv* zCDf9*TKvHVZgDL0k)%rcwBx#Yb3}fh8m!;P9k1Eg=PWgUNA02qu#@P zcdpjS8l6+UbO*^A%q9hLJi?FE;+BJ!kdI`}KIHZ6FZ2_@$1VxPXlka>JA&nq>JbEw zGAf}009KN}cyL%<6t_N5WI?e`BhP6-oeTRH8k^Ag!u&dMYXF-I(+tPkxid3_7R?ai&t;rZ>YrB%_y@XcSq0qw3XeEDioJklYe=L4V1cW<~TaERhTN|LG8n8e+yW4y98r!&Y#F5s zp8gweS!(^R!kB)~_g`Uk+1LK*0&`6*Ym)s@_6 z-`$(jM)RZSvCCwwUMZ>lQvr*5t2(y1Q;C)i`~Zk|N>r`oIDnJ{+*gAG=Lv;9jxsXJ zMJBv_jD}}Q9wjTbx$F+4wz6LUoXj_>Mo2QnxUvB-n4@$8*TyMoz0oW6Nv6Y%;LYSh z6CYMHb1DcE(Z%}!P<6elUMbwv=vLBOxEBd%H$Oey~LiU7~JfB+Kl@B+y3j% z3C(&gY>?W!gmiSv92+Vikjr`!uy?6BO61e!bzSG51s@}X4^oXmXPv-z?Ps!=C zZLxG2V$Dw1z|MFASm988B@#sd+lJ%+KIwK)x=g<-s%T4oO-@Id8Bo| z70+!T-#?*7vmoU()M2ZZRGs{%Uw;t(eo~`vZ0?gV}(T9_pq!CJ(`0|9~mqs^;e}!-sn3hf3C(mtwf4 zb`wR&J!ykiGoW#)ChWLVg($Ss7`!K8h`UYZ%C|>C75Q@GuqmQ z8PcPmJ2VE2op}3?j(^5mO-B%)Sr4X`_;J-x=*_Z=VJWFd(s9@VqRBK{laTgOAQ9L&43GcU9`>fh-rjcM(vz~m^jwT25`FUbDX%)p6_2iblB<^|L&^T+gP4Hni zT~FFfHnp)4RViO_%;_|>DmSb*Bs;7b*rHxZa@&;k9D6WD@@jE7M%jWx)xTbd0)#>& zy$```kZ)#veIJEbDoQOe|Gxe=<<{vO>SR9nsg;#<7RVO$Ia6is7~w8;GkGe1cBlXi zh@(s0ZS#xgFdNCIpIVVb0=NO?j|`pVpKWF)bTGPiMvx6=f=u`bQc8=Yz{UWxcgK&+ zMWsOx_CHw@Sv=+%CYs#q1dei~yr@-5FP+Sf{vhH(N~E)-sI$I1rC|VzX0RwsRK`sk zM1w@3WF38>`!bt4ARfiJ(YyT@roJ&elOoJ6V zk_VF$Ge)vi^6LfCATFhXbYgy&E=IKb`LD-V`C{#SbP>u{nn8O4Fi{ILjF=%1dM}wy zOii+^pU&gUq^=^vKOt4wV;dZ#lO8LlAW|g#(i5OWG|x|YO4K?kM!gJKa(5%{Hn*m( zE~%*|y>2417eSSIoJ@zsAYDpLu|%-*R;-e-}D^w z4_~4t)2C1V?SZ^+sZFcs-OdIopW(ykIXwz3R5`wf7XWS9mgFigpd?W;RT`30LYQG9 zsp_vGwJ{9e5^}~@*CUFG#4}|)<;erG)lGY)v;C@DOs>ix$hxWzWDNVgOjhX9tArDj zDU?7^(WLk-)qY*c(~l7#k?Yz{k4%a$b{UJ0>?%QVOI7~G-|5_;gsCl*s{#+v{1t=? zU4^PWI(ZmM4@+c96_X8%pb;=t)2?#cm*%^>WCfprO8CHgGI1_eC%5+k1Na|W2!bc; zl+09(h`Nq0S5CuUddO?Q*}R|>(dMeRiho)z1XL(DIz{FdYhCuJx7=8zlPV!%f$N4v zWMfbMi#JS|qf%x4(Z?%)G*SmkiyI*?q|d(rz6^+uaYLz`jmL=&J)u;7!0KAW%VT;t zU70jn@}Q;cLHH9mdG5BvmMxPA8vE1+hY2#zGqV>j*7eiPs58x{A;nd0iQym>jO+j?@ZKV_YLc5B^q^cjY6VUN;Ld$7f1Hpq_UeLY!sD*r3 zJjQ=;?Lk1F*5DW?X3peeM(*iSsLjg~9wDRI$+$tVt}Ni8a7e{x_$fjf{RD+##$s|+ zZI?B}6Y;Dk+oyC>wsxWx&usnUlI!UV`zl$Hh82RV6q(0d4rz~q)Vztj67VA*z0puc zUfL%?Lg&GiqjI~Hg4IFmNy`;c?(-om#f)i)O1%S-U5~&^!70tzRihNbHQPlIiBO5V zBUx+IbE+pn(c!hm#Hb1m(!7J&D zHH!2u#MP8xi~8uR?KlFwYkJ5AJNn1F@cpX9G>MFfOQ!mJJT?b~g6V9lra77uBFbSX zCH3_<7`+}YWbZ-@QwadWW!p`Oj?%;R_(c!{VB<*cSYxJS1=%3n#&U7groo`lG~oaa z5v#a9Bm5>IQFGW!1ah$hqj_KvfONK=e@Ik2j;X$ITer&evwJ(58T)bqfq(?U6t|%tq;Pw$7lH<@#IL zPr`Fkr1EXspXbLu5f0=3A5{5?zr-Qkn4Zm7w}`F`u~#d4VkUOH zF1X>k`g!1#(smpbPZ%_PXfkKq1w*6}VH83lfig&}2UA87!n++PYT#JIt!u_+VPd?9 zKEXwS$80HAm~WKZ*FEUp4JuG-3zQ%tbo&N=NO^^-fg%OK7(SRPZpl!}cc$5T<`5Gv zhqjIQScQXM;b4`AVQMAbRSyoz+xyqm0gpxR^12qgNd zDwUMJu>L;T9~5VvOU8;zvD2iTflY`1FN9+G@K|7|(f<9j6Qr4Y1kwooh;%IzKmAdA zfa_XA>K5|a>cN^yk|E0E(!)PZUslx|$UzU~9uhHZPM_|wId0D^_RVeOVsDB%;z((n z1OCJjvo*^^nB=UXS9i}6Q1zr6z9C^jELq9INoIgT0Kr3h+JGfGB;H1-o@X04Aa(xE z`?tCV?CZf5ISiuNa6_LGUgnV-9?^D*)uWP$mAx@=9YvxWm1alc@hE@i&B7GuCS>Dv z)?{q{zt8@Xaa5ywi@%g#E|{kH3QT-1;_Cko>fW?$l7OLT}1hubrpWC?6cJ@954Pd@cE1gD9Jl&E-k2***+S!UD;cF|BTp>sC zNirC9LYaJ!BupO$*`~alocu@C)sl>Zk`7W6Bd7|%T*kR^mb0B6An}iJqEp)c7<}B1 zU#KkVn={p{iXYklb}eZS#b@c}Zd z-1pqGU8Ke7S-nx_m%scJPkDdO%6fQVO%J>tG-an#aXYOUCtI-Ka(8(1xZG%V?Mu+4 zHeFaDu5O+}0AI>A8yH8VN5hm(AFJ1P6!y}y0<4YQkWefW9ggz*$gg_?%H%Ge_v&P( zGB1(`2%x-^QeE-Ue6G*807TH$f)9vMtJ8cSF!8`c)GqDC?V$($)ZpPXh_3mDek_uF z)vJWYh{s_OomFnL9nE!>&u~)ekvlOw>xGVe{jA0GK^W_q4pLKMYp@BBUz?oH*Z$6? z_rvML*8?pimV)7vNCQuiQT-rgpV{Pcsa($RY2B`myHQUL)6b@HDoGOd3RcfE^kUS2 ztMOa_T(>oua_qG*Smc)V98QNyu(% zAJf@QJQ~huP}Js()!V7I{~YR5S-0R*)3=~ksv{Ux4+jhg7&+G}K=})hA2P8I$-r5O zF;@Ko?_B-79VN0YK6AZEzMXfzB)LI}hD$8LGkY{eS9uPJ;lAa-WY6@Rfd*+}e%)SW z_I;`p0uHtHxr?{1NTlu^=;hE6P^Bhqc8u4MN+L}J_af(gvE%drCfiP)s83h=y#GE2 zO}D%#&2ld{TOh}-!KAaCmFrUi(*%~hrPN>}xA}24wBXt7+>znLR_Zu&lu^yYU~YfL zQ=|mXM5)JGI3qxyr+er^R^#)U9RV#-dP$5&QZk%nOf^HK87xnb3y__F0h5^|iW6dk zO)Khk$7p4c?@C8UAJdAp&1w3_S=I2+LW8D)O?5n9B(Yv1i|ekULE8)prL>dr<0*J)- zpo@Ve=vklWYQ{u_UV)DmD9H#RXbDxW9>-m73rWt+v8Scj7{h3dn1 zQc2QO)p2CY^lSFJSzOnfl6GMwQU~h&$Ki*Ghi^;48+)M>PLi5VskR12TMu>@1@S*c z#+!CV7IRfK8A#~$suf=$)&aFB2pwk+c~KT!I#Ag;FhC;a8=cXwFWh6BVgOyLl-S{U z3bD}RDLAzmG9wg7>$uc)oKmeDY+{^ZIpqLqjkX2?t+TXc-}@!H~kQ z#K^P}4&51hA=28{k2rAc!#F@5zX&M^Vlt!2yF)o{SM&TPuiRBhQoF<|7EFr$L}LXt z7q%TJ6M;VmPEQyrlF;M!r9we@@JIeWR9?1EPTR>%OJm|MDKBf~)G%o5t-ROjP7u?^ zi%m|HHiC4#qrdzF+i^4M2=}Yj@{{3>WWIzkZMNJr2 z;qM`ZB%L`Dj*$ok(*vp{QvUV*YaN35$8q2oOqnXpU4+Jm*>x&O#dHsLIYMd3Zj1Xe zDYFlE#BfkozgJ@@nNC$qk?PEP9!me=hjjex^;x(uEOJ2KrQlO9G>KF?3zQp4?vu~> z58Tb@2zT?c*#VAo1iV?^_+Eq0sSYZzA07N=l#TwM4SV|U^fu}6a{vF$Sx?7IHTBAN zCFszqKrLGvdrV$xwl{wQT7mOe_>|GkS2$z@I?<=hlC#&W3#IcD!W}Rv^@?FA7Z-kl zdf5)_IsJW7&08yb&CZqpM;nZhGBV|>U^3NLC~UTxh@Am;a~)`pF-Z&L0T#ZH3jmhG zu&A%iO0%%?lRFg$7Z=LioeeYbn5pKc@IWP330LBA7WDgtgNudrs16` zS;AOonY+p{g98&@~ZhhQ;o>b>lg4dnYIO+44);$S3Re@x*pn=qW zojWsdhm*nljgHYKnIzI0;ZLwo=6Sxy;2bc8)u49E`9wJNpF`2mBS`g^i5N z?Zt_QT#WSY>ZN??PZtJIHA$W*;Y@xuM!eKRWtJ4FQXRdhZW$J zM931eN7B+QB?qi$zqt}@wLR2H|J85J8Y8UsE3o@ zH+oFG7sR>GN+G^DTr@rQp4^&8EANmt9QH~xfJikqiQog^Ao9n5>u65#jDF8D8XwCL zdOU_(hMox0jUvxLPIJnQ2IZIwEn|w4vS$!IEH&lJ33zc<>B9jg--i!f)a`{yo(M=RP z)WVsJ6~U-X;u6$ck}}!VXWnSN(I?s&c}|>qYFavYtKVZjxE=q#Pn71vgi4S;HLsGK zyPyxAudd4tt39`{2Y}9~yZD?c4@gh+6P1eHM%&4`?n8|dA&@3$f6v0-tMae>?D>B| z=X7g=utVryoCWlxRY$7=B@t)S`%;+^8Q&83)o(K~Yj-n}>6L$u8xCS##j-jmoX=#r zNuZ>~;t6st?%;R^Dx~Qjio{u%nKsQ&(7q97SL>q*Gq!As5~p73H9e%*%oU$D=@pu# ziEb$QiUnD|=s0M-j@E?iD?XqMs|hI-h*z`4OKwQx8G3s+XK&8xduVD?Kj_%W$a&T) zD~}zct+`JtGxf7aTq}vlb*Zst(9W(sJ;S2b>{IW>zW#MO9Pxk#P#{f153=Aq5RKAw zE}uijSU2~x*rFEo7sVsR1+=A2NJ+Lp_I2DA^fbuAXt_L$uNS_IdD}Uj1H#-z+8KH7 zEpU9QiYTI}HfbE@(98Li)(Sc{q+_o{mm%h-nz<%9S246~i|52}lX7@lvCZXhYzbB{ z+O48Sbxu{Z(@6Jqv)u~jy{8kil@U|QqPcEdiPoy4JqUv(=PXCjQZ^yb0$dE~gGQM-RjMO_E2# z%AiMiH~Jtpr4VDf_nbh(E zTB>?+m8SnxzkL@rq%i^e=++!Yd3Ml%@b-nCMXC^=jswU!FFlDHz8pEp^)Rv?rGtB# zC|?*)AjQu?VugCD^rSsaMv_N?<@BpbRY~`>^>qEd)P_MR<+9eJeef;ce-4vN2)bWu z*Jq1Y{{;?#L>V2nm7jp_5_pNPn5LbxDo1Vt+mS(F_xj=BbxB*vZJ=0~#nadWDjKa% zQ{MKWTzVU-g-hXqG4*&CMR{YYJ-I;EQV7!!+Ekrx$4Aso2Cm0W2a|i%=@bH*gQWG7 zxU#{TmO+VMC(RlEWU!{02&Lj{gCOFrH==6BY*1C6y#kKHn@HO6IHGi9k}Z*mC&eu(=_=@y|6^Mf6kLfwlUa;b?QG$TpRl&NbR)i&p_<1ptIdFKej(uUh4{d4w@c93nV0Zy#w z#9(QI-xNBbh4s*{IaL~f>ljSO8a)rLARI`55SY8Tl{KNWwd=`BEk`V|Nj}o@;0m)y zXf7maYex=9WpE>7UztM?yhv22mUy5dv@-e(raZ1MG80|8jM*(X8-E3<3IJuj!X7uw zW{)tDE@zUYm-|~Kdr^m#sk;obPs*|3dMFr4B`3WZpeAR=TJ0<^$3viDK;=<^CFQyt zK0N9uf!H30QF8=Wt6CR}IgJ{=#3-za^QS6zg;SOlqn-Hvt~WX5A9hi;h`@xD7aySc zYv18z&zE7cwtav}=vv%YiHhVUts25sJ|}FRGCqVkBfsF4%mp1 z^&N&uTh=L|wsV%lCubvZi#hH2*%zd%m-V^39>vAvG(ekt{j% zBf}=94_Oh2w_!qNvrYUI?r~_S;{-W|baHU^S@@($K6IYtYs&$e%Q=gBvXXx^Vf^BL zF}em|PH5ifUlEx1G_QcPBU}d6&h$e58MQrx=AgFd$e=~RHE-q6Nx9^Y2|D!fDUeuF z&^#~uc$^KEa_HThUcDwNS($2d0d=x)IEw7$seGG%4?fPC=RvuaJv0qM=k= z2HM)^3$YR;C${Oz7=^OpRw&Y6Iy=F0r?Ej>9hzYjP6Ffxi=@Kp0NT-9Xj;*31->h$`tmF;twAZYOD&6BrQl#lrmw`ls4C6qdJRCh(#Q@bl4F#w4 zv+_r^c)rjUfVy2(Z}TU(zS27vr1;DGZ)MZvkOy6pZw6N+JUFK9;0}mkxr%5J_B=F@ zH+1Q0Gpr*nZp{O2XPSMs!MXJ>Mi#&+i7tTi-W~LmXXAVY2P448q)unbc40y?Ep^*U z1mzvT0i+U;QcV{YU&_iTX6VkBw42SVYOQ2c9_08&{KNa%SJDvZVx%){sQ;|qH+N?@oj|w;o4$*n zr>IfoyS2us<2PA z%vflo6>R~QT~BIvN+6&4qSj{IUj8F&4pu))Ev|S~&R{@ruEnaAjtB;Yl!Sz(PQ{hQ zke2z%yvrJ--(C?O!xHtLdg13*rIoqIAPb@%#>dFV2(hv(Ql_pl8Y|V+Gbz?|scCv= zH^g-Y@(hm+j^`VgGVc(3p+q+FQi;K0#k-Y^qd8cZy+nuFXeBkZt=geFZ zVXz#2dl0A)X1^@1EDD@x+C<$VdI(u@y}KN~6w|Y2w^1+rGenH7rou-RCXa}?0#`tr z(rUT8ArEyQ_A4k3HC$zBq;}F|6m*TbEtK~=sfX|{U(7v>C>hUoR&{KNSAf;JEGxan zH*sF-=lg#}%_&v^^4eI$IRZ%)l+L_r46XBM=3cRrHLW&OD?P;cUm^8Gmd?N+$v3ik z^d_7cx>i{{yW23|U@ZcX2rV?0&rO~7i(khb#?$qS!#PCa!N+D&z&r1Vj&Zt^M zw?{DpX^}Ydy1->H!RhPoy4fA6lQ%QmJvqQ?31f3%nG{Ne^koRO5f!&$lNA;k#W79A zjA*WIrtav5%1^FBm^HrjRx3T}6O&f;m7r}y2!W+Rv0S(0%R5qJBneTd(9)S2mZWU1 z2rE#@0sEmwIbJ}vb^K6FRd(IRao=V40~44(vlV`A+{UE%{WxrcK9K2w@9*D0&1Je~ z{h;Z50gBpqlO)&JY0WrM%U*q0TzvzuRS9Zz0S;7I{bRw_t0{t@pau=nqxnhHNf3}Z z&Exd6tMOGT!65aCOiRTb+`I(#USUW)5z>3yQ&onhmz~+uQ%S0`@#0?je#+Q$p{@j#yv%^)Nf;lv(OcupawrXf)(m9wvwvZ|&eBK8z9 zH0zjSi6=ve8A*mdvzJj79J?ZfIk5_6K zpc_+}%R!dF*_Yx6kEvV9zGOWASsJISWl5rWqkf8gKR8}(D?M77IA)}I&{;!E(huGAmejWM3QlH{QYTWG zHz$#>j^e0ldBO{>mjYqs3 z{*{g8g{Q-Z)PRJwmv`7k37g1zgsxvIH?nQorIMsltCq2OwJt6k%O)qZUA!>b!pExa z4a5JAl=U^)yfux!ANC$2T(*xzU*H%;xfltwoG*;jKqx2~H0~8@(o!yGsm))BDgKN)Qp((r#fElT_;m;P5;oAkefYF=La&pA=u zFqFCO$JTuF$SfNc@z<)Uu2zOl3LV;9DjqtQ;j^qQ~GREFLBBpBA%CLl7f+eEgS zr{8&&g>4FXu+D66v|M3(VFNN9W;SV@l^Ah$x8sLb0!2){@PbQiLI`tl9Vm{dcP{D; zn__!Kq%*ZY!wSNSI&oqNpp-pUjk}gwmhQsC z;Jjfe2aH8?=j=XaX^VR16uu3TLGmnv|MVHRmX!8&sb1wIRaB*z{5G(mseZ&Pf_UZC zce7hQJ7j_mX_=JA-33F8B6*`<<9qOSiXjyul|2UWCDl69Ba6Y*$C0QYR@S!WhH+5N zB2oKQx9v}@7Yoj_ zyC^2qZEt?ipJJF7kj~0m)k7fa&@m9O=;_SX2feI;+xu3^b1L|BqqQB{^g z?<6(Xt#qE;rLy^aC@3kuo`$B&n`ZDjtAT-69E3jr@vkZqq!WTYbl#{=sjCU+L|+CI z=62cYc1mW!nN&rrxC&!{|D$2l@o8b(Lfrth4zUAG*&goBpDPqz*ArxuPWEI#DDO`y z(d?j4uY**f5Hp(W!s88MD|#|9vo&g&;e!~QQDAV^R*$r&k}O^e|7vk3=ywA5&sxwl z+s6?&dG9!kmr^yrKt(ZmgdjzFb>+Ia1Wd)o3u-H-CK%y-AVpFWQ^hVx{?7=MBg+uzRPXJhn)Kgj2OAw<7|F0n!dRgR)Jc zFjMYkrh68o8l6=gw-*RBYj^kr;PD-FuRO4(j&#rs*Rz}(mz-A44w zN(~|&c)a;JE$v3Wv}mjK>c~Gz?t945$du7eQ?bd6GOp?U%TCSKZ$(k6S3cp0)YISW z1$Rw_DhHn&#@MqK3}Jkk23tFd00jLRm6nbjik(gkbWeyU?@? z5(g)V?2yx_p>=gG8Chm8qV@S&PoqOY@odD7~BB)3Y$~X&ICv!EImLrlr7_dTJH3qa~MPr5(qG z)wWFfCzSBhyOTq9PQOe?PuD|4o{1Gt&Tc>7k(@XkG~AFY$9F@7jI$EY^d#NonDXoz zpCGTAz76MMsdH#A9EB-RONUojqWUTBJ@@S(0|sC6*G!E9)`6q@q+4|K_%`Ix@dpO< z>Zmd>T#28j?>J;J4Gs{?hSN6e^%6^-SPS`N2`?ND(#x%P%5t z<*NJ_P6dQ))a!axf~v+IQjn2gLFh@75*U~wM*3$U zQfGpqijx_jx!!%QTcy)`57*V2jwMSAgy7_tr_%#OfmsR^p_ks_8!5Rcw&3w|y>Cvw z&VGmzUQ{A4amaM^VaDcJ^t{kT$dHVLIx4GY49-wGUiN-c z{2_as2o~6TRp}Y3qTOwRw}5Wf(z>YPTgt4 zjpDVDUH|F0_BPP80)=lP7k6Jk~#XjhF)d45{1EUd={-w zJ=4id?KAy2r?i~0C|S4BdvS?~Q_}J-$emGd_9m!jtQR%vcTq7&m}ydhpF9d({YDuL zB|g&0!V~><7*7yA+0dEo9M}BlTQ3rvv#VeDz84bp2><_zRAei2D&<`lvaXowt&3eD zaT8fG5eE{!)jC_DBY`eqUe4@LN3amKm{){yVUbd4eNT+PWqp=qbh(G#M+u^652(%H zpNt;RHsDvga}e!N{U_*bZ%5HI{12+cf6&livL(=VXZJ1H~nO6S{5NjRoL zL;7R&05e_GR7m;slkmui1T!=g%JZTOsY0U8nRcbP)7AQk$7y^70u>196ERrZ$t!Qe z$}q&q?x|FTI)HeOg}9-T7A51OdZ#+fs^m90IM`Hq!@?t$y>+1**vIg775BFKeuMP& zc=|pZM)I4aJBQ1_bc4yi=68A@)s9}h9&qXp+Fb`bD*xiB!2py&Q7Ah`Po>}W z2n^1eXGu(m+eI)^GCWt$u+JgUs$JzOVTepv-m6ca%j2rc<&flcjuu5s>4C#y$eJOp z?JiQTFjhKO&9qDdqA15CCUu?9j9vBu%7}MBu4-_Lp6qHd$h#MwJg640<0=nc@r_Us z4uSIpeT67m@BlRDqwuO-btX8#ROqyo3UREhlgT=M#eSnV@!62pN=n*x~C z;VHW9L1G0Ik;6j63)G@V4TQ2v{b&p`f`)L|%kl{cYy#lW7EBv1JNkh<4*&C+Jq`?i zw`8%Z{L`6z;6P?0M>@od{i{ z%tmRXAZ|x9(k?1*Q3;^b4KN@Ayi>HKY52efNMu&}{ys+uL2!cLjBdV3X-i7f{rwsi z0l&L(qoYWWV{$!iADoiEg8^Xe^trx2yN-ql7FQMurT7tsT`bqiBPoS6TfMue&EV;H zXe_&hz&*XBQfw;#qVqC1l!{0*2($!A& zYO6Zhm&w7Q@ekt)aXMy3I9c4pg(Cp2=eMXd;~6vVug3pNnZ@OC<~4k(dSVLI7sD13 z$;qa)f9V%#d(rdnXt#gv{18$e(*@|7za=%sY7a%a+qwBb>>Tm+8LJDo#WOt{wzes4 zq0W5&A|)layzI^XzAe3K#J^tIf>#Aaf_0e?SAZcD@P|fs33zC91L+7k67PwGbUQ}4 z4hJ*s@CtHpwvk}k(E!H47qh-0TgzkhZ@$Z4-`)!!OoVFcRJDZ1V>az`scjCa^lQ`T4N><2K){HF;Xi{_*R49#aWbCA&BAE>}MD9%R=%`K~51JNskgTYOCl% zQx2KMfd<|Amejhk?_K{-fCt;ke47Ih67;fZ&rmnzyb{7A0ppb=6}c<9RpoJuiUW>B z#Hw|@Ayy#yT-iuKyCRGp*7;CoXxv77HffjDi6TVuP>-OXXz&28TU=}>yHWkJUda=vlT8`!2)^&Klp`*H(saWh9)oiAr2w*W3{=Qx=CDCV zKE8AOK3dkk0!B0Xgk->0n||>l{G5a6CF|FYH~*k~Dcv;5{TuSnsF3S}nejb(Zl^Np zk3nOW(Y?9=Y!qP&M}RIRCgqZvwYqaMRk!lS-3#Z691}h3WO633E`=uM-rZZXYsn6l zN8Obe(z-`Vw&|5i!QA?DUpYjhR(x#c^#T$3rmGboiGGB%fD$ClImt{OgU+$miS)i} z9G@$JhAIWSl*lj?qwlxT(o#^3x$uOmGWL!$3`HYk5&*{q3!|6>FOvNH zm6y&EX?ce95(*XO4x~x=C=L)I64+&{X9GY6>MwE-C>ap3)*MOdVkJ@`^;d+aTrh^uPD~Ad~}DAGYlG`$-ekrlv+DW^BSx5?Lx5crCz$>Pb$9(>a~aKK{V;hHF9btmP-a=I1K$ zo8VLki(fu{+MN$~2ahi2KAh1MNtL2YgqMSmpTcNZYwNP~wp`5ex^@JAQN2^nr*wFv z6wnww2|<|f4n|f&Y~KC(dwDY_;v(Xpy-l=BT%{U)oaLG0kfwb%JN=Co5Cv3{NktE2 z;I!{J3mxj4LqHSuv3p_^mw%R;Y@bo$P3D7_a{|4Pi&F)VOm4{Z&(Uk;P))LqW3cD2 z0d_bhCX6C;0csw;WB-auUDn+C5e*YZdG_&zj{zgJg26^lz(YnoBn9*rMb{Dlku7GPBN;{kc4XXq?75z5$)3~ z|L5GQ|4y1Sxjg*u@Sc0E=wRmm1!Cs=#)d&OZHG7!S4_3Bw#GQ6Ef6?dc};)g^Ma%d z_5^v+fGWdQj8PFBrCET21~MG8&#Y>O6kk}_+W77vQ~vDN4MtFb+xfY%wHhW${r?oB z^Zykqk3eg9kvPH#n!D>w+9ahkxW*JtNg4iejy`UOIxL2AGi@YvoF4F(u>gGT(iFbI z{gi#Y7#V%5pmKkrGZ+B>z3+E|gp(|LN7|GdAfkBnnmRLx6D&KKAdZ5%qTEi9-W~lp5d*qiXE2u;?vUV^faS@J*N; zP$+QK^{o;=tVcg(PBt>>|0N|={E2&Be*JpAuT zcb`=+QIzmfX}&66y4YoprmaJw#{@&dZ;a2@mYiGm0!+5*BKpIN&i|BkqjP4 zg(kh1@)pR5$+Q=PfnD-lV45yC;^}9Zc+4i6PUOBEElM`}l?Tn5l~03n2rR&EdsQnZ zqXSbbgh4i)o!9W*=kSfj7p(gWqs5n3o`u)d(ZMSMv#DUZWke7q`1II;k{7e(iVC_v zOrhMFfk&3*QbEH2gSl1Zu|3fv8JkgHMn+OJ4F&y$#A^7 zG-r$D6>AZhQxYq>uypk9krgka=_Wmy7_FskQ!c^380D&<>jG&m!w+~(#hYEJ$|rK6 zvVSh+#K$Ou#%U7Cx~?=(Ap-=}dNLGyw>uaoJ9v*a=89K_`QXq}a6cp;2nMUj+$`4%Nu>L8 z;PP^a@KxY*g(9-kQ-isRU6TL8FdAQ`YzBG@d7ApA5(5*ZkJ>Tv<(`pnpoWWTW^C@x zHdK%mk!>0nS=eoYL!E7*cqa0dSYC`pGfaj;Rq&u&S0Nkqk`;QJ7b0Lyyz_Nt*gFlUOZY@7%-729z&UsVx%0S-=mG=2|FF5#*9)uVMYDvSZWKkKFF$v z^A)h4$RZ*;>FFlbMRcnsbl4zdY%I%-zeyH6#c&Q%R6GQjoh0n|@J3sbrY{srQhp^> zB~mn$qHK!ODjZ9oYlFc46ZNNVkE;1ewG%C5%uE>dra=O2|Aq(LH<#FErcrTVt^wJg z*Os%i8zcz?0n@SSKhwbhCXzM0Ki95nPkD^Suq{ShcY!hSDR@H4SNdOnYN%p412HJ+ zeuabBi>EsM*qjT+z%qP3T-!xY1g)-boSWS{f0uHJ4yYm_?McYuQ&ljuO{e4h-}Y9T zu!yBvhh1zF*coD#N3&L9rWBO2EKuR_n$SF?+1!RUsLqLuDVa346UBJgch zhhn=0u)(Y188ygnU3UjnsC(3;wa7ooL$D7{3eUSG^^;&n+eCIh8-H-ia5@q_$7Dzo zob6tD4uR$oHThf;(;mw|qTAoKPYV zK$D56d*a-|CxRmhxnyzuIJ$=X*yseOYSTm`K>Bkktpau~dn!!CqK~!g0tcDa@$G zQlGsFgs^z3rIey#-U0p<{Brt4@QjzbhP-(B!H&k8RxB$PbzfiLAiWQ}URGCwqVJy8 zF{4Bx;qxHID~2&PJ}w zN*L>4b*9G!Uff8Yi~ON8#*^983-5Ia6oXoj}0(!}>F7S$+TOLrO~fBCi^55C0}OYMgjB#y)gj_Q2Qt$@@e!ih!UTQpXg@Th4MM4Y9c(>s&wR#07wd=p8aOwTIN!; zGp!y?w*r_Quy(w-)N58AUgiMtKz;=^jwoAE|J)>}L}+twpS|0fDWzbx+yr2Qen*9b zmJCsUa3a{HWi{1!V;mnPCscQp29EX$e24!vjam^Ac zzp|ynX`mpOlD^7OqZ>I!B+0xvd*P%_Tu$sq{UkBL=aQoVIvElU-xrDR?+O=UC)MA6 zeC-z{KnmszS%e-Y)XmV>+4o_-uhS$mo9c2(0VXOhFkg-{HaWd&bt2R0u9$%O!z;IC zM2oXxs2&`1iuQn$1$zkkJF2@%^c)--ECl%;_}8J57K$j4zE)?$W2$Vv6&1Esw9|7R z!j%(c9b01@=u?snPwfT`^boJqeO|V|X4may=`@#Lev8Ah?B@zQjb`vZAR)EpBxxBS zX+xWx$-{{;!ok`sS(VeM#2A9&M1wQ|-c#HeJ%_=1+P3mSkWlgj`*(bc%`1Pc_x%le z@M``GoWAgAOBoH`#y{#<$TY}vqr4^j4>dN9v9eg07{NH_O}=-DnXkzA{Jr}plp!f! z1c@MllHzK3;|v|LC(d^01ex-7(n=J2YF}t2=t0$J;e$38VZ7Z(i0AvR$ZU zq9Ip3!I^YkSDn2<1v{6!&s6!td56jp1gLqfIXj#$zpdpM(Mqd3n#NRVkciJhKdg!) zhN^vkKD>y#?n@>_a3Z(oj_W8ZL-vDX9i~*AznekOBVV%Y$(i9cfO!;U8d#*32^1|l zXF59iW|y{1C(jPx6NaK~l6igrhf*<^{T>nqFguC5p8ER`y;>CzYg!k0dKed`(ioZ@ zL(O;mefEsNCwXVHMy=VcUc|YfPLETf_FaU}%Ls?hv!MPa{n?t;#PoskX38<$7j~o_ z-P6IRaxu|mwPR#j#J(43y+>B|wy*I?l^y{2M@>B?k8`qK+x2mBC{ zEfrbtsltXECmRK?=${aimeBi1JK<_wD+j3qEC;A5Mc1fi=ngEgfLM7_@z1LFmuspJW5-JK)Q^;*9 z7*Owlodt5In^IlZ2_vK(4(d(vyvoK(VcX|G8FV0i%P1zr$*uxF8WRVyzzIf1FDUtb zuX+MF71u!v9;K`ZC97|{OL*Y*Rg+5WM6)e z!I$`EBRc@Uq=6N!Gpv$CrBWFsr1CjOnE2-{m;iitpJ6PJt9bSa_?6^H{|=o37m#$I zdR(C%i|SHOEw3=1((W4a_=WjGYJ!Br8uE^^M!;&Eng@r{p*o?6+G^{oQz1y8lU2)D z$)qbiem}ed`N$oDu_a}pGVsbnqX!&Gj=w727jcea6}lwNE6HQ4LV-h$pUZ)4aV;d7 z$$B`ap~~Nz+WAh)+tYu-BLxMHcQsHUp{%~+_VSdioXRD|X!0Og$k8RdwRf{O1ZuRZ z01`zcXYrKj%sj^jGry`gIz{4Pd0c7KS{!XGMobw9Vbh*Az7kMnvF1_hw1 z=H>I~+VJN2?=@kgIf7(ij-#@F{VW)sE1->H#utT5sxJEQeBQ}$!v0|_i#=Rqeip~{4SW3rG*e6Xcie- zr3n^o3H3J)%1d-XcY@l<`Ptp~KFYhgF~48u^mb9Vl_0jyhfY9>{>_KV{G6N=VpjDavjY5l9mCXW8n>SBBJFlF6*KkDeDtc&?Lq&EoK zn$63zy}PHv8-`vEDjON-8`%pUsu+O^^M^{v;KYa>p}fLkIyRBHciH}vAMai21`(6tyy@w z%ap2}1rOHR_|llnM~fo}(HG6v3U~i1fYI0H`zDk+jIe4~7_GIT$Evt>xv*JlcvfW2 z**?%Lt#tQ$-Fz>oLKS$E{jdETzy$PWgv#Ja-C#XpW;I#lo0lC$|NEq8)y31(aPUJq zZyIzewr@N+#B_bcnMDl1#6CX8>PeAXWbA;+QBGc&x{)xgEhJTwu__t(Sz{zEG3LZ( zQldoG@#y$a_25H-1;U156Cv;@-)Z1V#rvV06W$>Fx*HfoxG76Rl!&$215&FVsw}^= z7H~i>q{U1H2Y!<_|KDg=#vZyQB|0|PU>K%PqVv(}gV}eS2w4j`KgylpK#<%dEYM;1 zVAQg{;*^K{EXTx@{bh8jzi;PRc&^n-~JQ{v8rdWH6;YtzxN652~mg z@ljEiVxPlhZrb|_CMg~0dd>KudmiM<~rE@{W35Lr|9`$HRNQi(v(eJ>{&x1;{L%xZrs!TL z+u~4}WDk~NZw>@C>5Wdv3lV&bO+IwCOcOh^85UCPrg$&!g0(Br-a-{Qve4c5 zgGkJKI!8o5b87n}^~C->*?FiZ{-~Gd!~~<+jHy4cWDK447E)i=Y0?+q4PnsmU`0Et zvO8ZJ!KjSe0?$zMD=%Nk3&>ZOI_K!d%H{C&jXCc4I-Z*;@}viVp^#wgYi>&a3_Gaz zoV2+YrmNg)|LUvC6Vm7g74Y<&=q7mL`TUdAf!zzT=VW9;-lVDjanZrvD{C=+uDaxY zh};m(@s8iyf)L&*OQ!^>R7{u{=K}EL$NVG-SUGr{`<7qM=D{DPP@pTZG%N`7NbtI8 z6e2oGD0)~6Qe`4H58sVJV9nt5eUt+s>8R$rQTHi^Bz(i2Wz{G1fAAV&ri!o~4-GF- zxj-t4c@y(~Ik7e9n3PGOr%4Ua?I=HoZF?oJ2*vC#5(G-D7;WK;wH;Oe*;6 z9fx_Fgss5O*h!J}SJ^ZD>pHGFM_~>_0`4SHyfWGqx={L&#s)ecqBN*zOqfeT{KofA z2?FB4?NAKh2T6us=24`SQE$p}$o}hp=MR5)hj>0?@NhwpQSWV8H%FV8l0NH5KJVfJZ}L>rIF|1ESG#{tdsZ71{;;mI*oQ)<^rK#(-2>?mA^_F90M zy4qWuXEa_GR9o_2(*5Z9K{b+(TP&`IjmyUQSIO^DHAoh?uQ5EZfLa4FrMLz<$+UMN z>Zw-}xH?c)kEldi8oRC7S(y)Q$2|QSE-pU3@u&2}iMR@Gha-}Z%L@xuk=1d1a~ z>r%f`I5vZAf5E3P5DSnnfa8xg@%fl;LqVt0pH;WbsGMG?9$Lz({++l&*qV|Q(P22M zJPZSC+re!1ksE1WMDjWrLE-?DI#^{r9O>-#3hYoS#q#ctsqMmp67AR_}5e%#ZtN_S9 zrZ8*vH8cxrUi6e;YLunpwk~yw$A@AV1J6+N{2=B8Yi<2}HYj^^1+TB}lsGH~1q`l) zQ$_4R|8@a1T#vVOMl89Q2mL$`BYfqtU@h92CM0sns#%PZAwB@!NO1}V3Im%qi1V%d@{8_O*Dyt0 zY8+|r&6Fi3`vohJOM*F>LKqmSDO9!dw8B^Db1YH6Xjr?j9Hw@lU17L^*Dg{h%dd_o z-V(`?&Nwf3YE1iwZVLDQyL(wz70Ev3l*zErd2 zX&lT=+Rq=p?!_(x5fJk}ICN%b?k!SBgL_ojTEC{Mba<8$3wrL=Lrhhw558SF2%;EYRudC)Dh+4 zkRg=vfwXfdp^rbjHlSm#e)&#riejlKy3`H@_?5zba6%^F9|f8i-k%z%&LN}QoIR7Y zp$Y_W+w<$7)X3+}g%b?k{d0Ctx}$DR-dpP=$hIe)H3M*qlzKf&fgX{a4|0WpPeq4L*p1B-tMP60l<)=Db&D z?=mDnjV>9f$oWj(K7@O$*6Ue#Z`KRy2|7S|Jem7pEF0JBEd%jrGVW-4R_47OW~cjMhR7g^*HNC-zOGBeXt z^T>b~*IMm$xIHpb>w5m0@Luaz!@2}k3l|Yqr{h9W@tw4+;udZou16jOyL;zlxTQ># z(h|3|Yr-9;s_JaMRvm7>8TZtltJ*}m<2ZaYBX2PK{fCV~&p1ahl2-3YT0>w9QXUso zCpJl+tMnH-EA(rcnt@3g1aIAyheb3X{$zEp_;+?z zj82)-327|6meFv8-fWe?zU@!aMEvRRj>6sv~8AQX$J3TVyt0^6c zDQ_QWL{3T=U#XY87)yb{*+ol>7Jf}yGkgf4;}x^*JnBKfYPCxEjxw`t1K5Dovs1y5 zP^KPEslQ3ZNIlL&%R_vF#rf_M3;#Ua(|AF1*l5qFbtWRkl0Qqq#g>Y3HYG>9tgHIH zAP#a8I{j3Pyoa1A(VkG*xXEjewYiW6uq!@sNYPycn4lkrPU7vPz8Yx@8mI;CAN=Y-=3 z`Hp&|WR?ZU8c4nr_r#1_-vbo1L4ezVDQMiKw1NqODaRp;#b75MT3zHkbqvgtvH^wN zB5mn#YJCtkzAR;wLOX||C*fP#_mA$|Rybop971t|2PEO;7)(Ji$9=Rl?faN0Qhf0~ z9Eh^G@zw&s!PiE}w%fCG@rK-tO+`-%**%DpPtrNlr`m~+GCjNtm}eOMyse5inFj?g z!4aNCThcyypdz0s?|NILQHF`B7w9#AVT13?m`5j&YH`O14v?Cj z+}Lg_j22PhLuyX1?Wna=C2*BsU*~`SRu%>*hp$Or{BrWw_;-A>Q51tZe-Tug5kj&; zoNXN+QkrQv92S?FLX3{)Z0zmVcmf*}_lfj7aipz_>#XkF?Lj@YSlJ$IsPpUE7|6(vW4)*vQ!W>^*kb`LT8{+y<(!H@YK& zI~ylMW!dV%^4x+akz>3YEk-^D%Ff}{q?7kx_OpI)0Ow7vBQCe=IgLdBNX;;KRqNtn zB&Atp-2{+-jzQMjl;xYCMZz58;ahr!s8FI0D3+~?+C|BI9e*dRNM6ehIlDlinS4Sz z&bdkOZO`K#@seCS7wpoJV)|@8hF6#Dwi5YNx#dXs{L%f?Cg4(HE1@3|W| zYLq=#aVhX8;)E1WJs=#8+4aZR4&+nk5?wqgB?wv# zDcF$az=UZ>`pN9}FBIkJ=vtd(PzPDydU=lt?vn(LMI^xkKoBrHo)@BAacmM3P9yKknl9pajeET}0>zp+RGf^)(+MxB~kkH7dx$ zINyPwZoiuP=w)_Mg?G;<)1!qc?L&6kg2p9!X-2lZcn>K^A`j$Y56+| z+{Y!xKf;|+`e>S{Gvx@h=q(~biVT69e=0vl$0@FvbB2c_nU*0dYQxW6ukt=UGWlC@ka?U=0+fZ93w&eKw~r%ztke^L&-J-q=? zWaw!0-fw@?2RPzN_$cq2UD9V}4_<}mY113G^)FTXSuYSJ>a@?U#+9x{quJo)6W)P` zn2bKi$jW7r8HkYUAXVBiMI%N3!u;fPS>I4|fj*0KDpU`x4cZ7n)3ez_6q`grh-~%o zj=Lnxe2Eh{iSD@>(S|SMx5>vu0_5PlQ`**%Pe<65)e@9j$Rk0Kr1lblu?7#kbWB*# z$L#pZpHcMd_NT$0Y4P0VLFeFCJlz~oxoC^>QNuHS-?=sWpkHSB{_4MAXk@tCL6qVw z?iRTWdI^;t8y=%7%I2diLw$MXO5gLrJ6N;5yfqD?XbyaJGgge zgD!{I_4f^9!g%f`E8HX#Lu0c~BW?4R#2lqSg+4O-0v3v2o1zYYCT*Teb-0l~;PaIaj+|4LAH@R!OTbl{+C_X&j703hjhYdOD7s%Senb z8!~!l0`m}s23L~QOEKxaBf~}jz?l}L>7A~lhQ0FUJi_JeGk=gED=UWMA3^>c5ptN6 zOMBm>x637h3d7tgpx@Q#=M0)j)H^Q{iv7XO8BZrRU*-DNIR)FRU(bXyB8!Rdu}|7c z4BsPXVl}y0=9MusTjLA zn2ljSzyUZqU4cQp0qyukgrw?CT-&zd)~QcV>v`+_8*TOVVEexo?iHKOfN`Nm5Sv@; z6}XRjcjE|W^LPX1YlA|1BqAo+zachj(A;?V)PG=Y{x{RI2A5$O=s|{qLaMgLFV+^e zzZygHbL9(Yo9zW*W)=z|SGHI77Y@+W+l}xn8w~RL`L$T6cejqFNbQ!*R)1%EEoDsl zzn-FrIF^;Ig?43Y8*t42Ca9NYT}(Uc8(+7IYBgMx@l*#3)zO5w zmf;iaO7p$m-nlGL5VvYH0!&{i+8rKom|W@)p!LyYsp=~uxV9OkrKe5POZ{H=hhm#w z?}QiRui%!p4=!!2UrO4QOW&I>o=gQb(83p9*3Vvj7gdqxU+J+l{ff7|^kcWsq^gD2 zD{J(rgJ=4iJnqUCKdtbXB456@(@p5&h2Sjuc?lTP=0dwAywb%5 zE!7&su(l4kbHQ#j#ZI})(`;VSHN$W+Mw4|bR&A{BHS4UUMwV@UFK`Zdz}+a=tK^-gB!fe`ZH*q7bqvv{O1 zbDgYYW$VdovyfxZemt|Nb}*S6GNC7}r=F)KiNMjtXrkw`ZS$#;XTvY(1(Sjs)>>sK z8BoTr(SgCUxvEMN7J8Pfiu&1QO78o0Lz?0AJRYNuv_f?7%#;+!!C(WbZZ2D zXzPNU>+#tDx#wjRJXPoM2&8Nj_@@cP__J{Xu{Qn+&26&9qh%a;&{6c8hmI*w;k2a% z_r)mIkP2|7#ThX_%*-#ggF@}ke{U;mR;ys`K5mnbj)k|h_2EhSU~X6zvHuu?J&Mb1 zUyyPP^?&6W%HgJQmZSbU7fL(nE#sjnn3tz|Gqhp;M!INU~dJqYM zbfQR-_$A+xxfd2x?+k1U^FEY{wnb7}8}6k16ucbVihH>nGk!6>s_G-ZFokZl~#Od0H#*<~%^_3t%*KlHzL)VH%c+cP|Ob=gEX07Rb)<$6?!H%4AM ze>{78V=~|A%|;J_*m~j>T+(9hR+mhpM`uBt5Fqs)Vzw;}@bNHgG4d&9z(>F+c&Vv$ z5jf0LH)4u5-7&aJtMmI}=VNF6;eE^<%Sr|xDA4`SUG;hRL-DrX-AgtHmrY}g>}nd* zCiU>1!h+$CifA-qfJhe)_l_V-C)w$dBv0|9IUC7~=(7V$z{PODI!Lqpq-MNAF`hny zeIjdZQ}q)5|S96pk z$0I3(scKkq9G1!CS@rg@zDEjF=;S^F!o|uFsIg%~CKs~3;0vP{_D6aC=~`S?V5Sn! zkbHd=%q(8g^E-MNEmL;E@Q>^f#W**4GJu`o-GNQDUFw=n)lGqyB~U`!9LkB}fAM_R z{7i`Wuu6ZSL=Ic!$GQxUaxESX$foC$f1ucBUERr}Fcd|`#v0r3kNmSt1#%o|ksR11 zB}YEst*N7hO4awCnKlWm~e@mG%v!W!Wc0)tE3)f(o*BX9etFth;rNUMf_Gh z4S-;|9GpkaEn~Ul!`M{=n6wL6LG3D*osIFekjLR$lQlYE^xV>sU1mUm$A0g^Tv<|N zZG$Z+%jLB-g`O>(QKy#WNg5u;C;vHE{ib7HUs*(+om{xMeq7K@%LR$64iZioAZXf+ zb^5Zw#n~02yVRXZo4x1xH7)ik(MOq-q;-gl&|l|{wZ1rW=1geSU<@g!fiNWh=vl2) zmi0+icAmc03sF(%PtRS~NfNsZWh9ay{GeWVB@%G_pRzfuXvD}-{&_`0<^|q!2S6Y( zIb^o5N@i}McK3lWsp?(nc1>F@V z896t-BlSF5d<>ya7(qhm86C>^H0477(0_t0*k1K+g&$Na+@DY<@S~(hnS7Q5Uoj+m za9ZuX4#IbjgaJmFWWK2>kZG``oZo+}h)Kv$c87uqyRc6)_7^hZqdl$RTu?z&D*FAU zTi{`clG-cwnb81xcT!TXqq4{}h_I?5vdp#)yHxfhizmM5JyR|?)CSVw2O@^+@rOCe zyrYlR1^#g>i%=DeR6|!Wrbgx8p~4`2rzTBg-Ap;S9NH-llwAsj1$wLWU3W?XPSC$E z2TOyNF8-NI!Qpl+*+2P`it9@~cr-HrBVpnli{U`x(W>*$Juz-?di8AV5QN=JXGiokawxgt&>mE48vE3ZFM4S10&v`0^`s( z&_ab3-uOD}w&bVRdc=4(qF=$)1zJ_MhjuwWjW;B>M?X*UTjwndH%WurIdkPcs#>vq z)P25l{;p;_apsG`841iNtJHXtlN-YD-`|%@%m^d@#YDDBjZhgw3Q+Ve))Z0YSoi9> zL!L<+sjexy-M6fSZds+Gl#UqjtH8;x%_OrFHWm5@<^D)&crcuPT|Cn2d8seF{X1WR zy}!DiqhrG~32ni}uz^g=Wci^gXuti|^^|tE2~H;$gr8+Tsfvd1k`JbUu%KC^%c)uF z3NPZu0jU}40j0R@z(45}k@;J#0`+YgIVV+4b$pyDPvt)1@7!+a>&%YD>s zqP-#gaMD&V77GXjMrb;kYxJm^tcl(ociQgE+x6Ms(PG3huX{~H&8pw~O1?v;Sfc@i zrq|?e8CA6mjf@_jyziKwtuhy4Z;mn7)LN3n5;L--Jd4(>n!zF*c#VWx!yX$?b5Uzt zUyF4sTQUq%KAg7GfL8?2A;QJpSM9XKAf6uPe$g;kZpEF3^pf5$_Saf~LKJSBYI}&Q zsyz~45=!%Ya3!|RvI7}e8YZ=bYm9?fkWnM6iQjf~tMaTK;eudNtQKh$N$hcjvy z+E>l*vi_wWPxok19T(Up)$$3{BBeHf@S&PCE%cz6@L+iHztx1r&n!PSAB|9NdJIcH zp`N!IpH{o8lh>0%Lh`Xgaw&V^cG%a0U%ERvTG3}vA=0VR1;j{ktZVDRwbSt~L!B_3 zhOKu#HXMw8+*BN*dG#TjTy*ZsO)a57MU&#^lz*eknOZ19PfbP^--HB^*(w2#-FM810J&V8D$UHCAC~o#PMXjuN<6psaMU%n}qZ+pndNz z(Gf?m*VfcJA%kQhDnjkXUj|CFPO%}n^Ncd9_G-eg0BDuQH^6$nd=wM7?wHjp$^;** zQ^VATKx0|w+5mnCC=mTG&Oo#YueGP;?60up45j0E348cI_QyJ<<;P&a!Ylz)inH-{+3)u*Zj!^^BP${s`z221qcWlfc~2 zQRxjb{@}}rBIo^){M;gnA?97l78Nz%4H=*$Oo*=sn{3uw0qh$y{Ky0C7v(fcoOjOeQC)o>4u6N%> z>tCJ!ZQ5gk8@m-f+5zvac zuk~Wdi)8jhBJ-YpYpraXU6Xh9AZVKoFe1=~!%LM_st2zrQW8~A!z|~j)n<4qNT534 z{DD)~zs;W9(bAi2?ArQtgM>9zDZZ>SEHTGOMV2giDy3B)exQq1=4E~(C~VJYsr8tG z9W60kkC3r*Z^b@?Mu$`;x-tm?+v4%|F>#PEvh4Yk!lz+XH&i<=!)lsQp{&wfETh0e z)aXMtLH#VyYK)~xim>7CXo!lyl-C>+0$}QTG@+H({^hMSLJBGvRjh@gQA&)UC>$#U zOYYMI)T_g$6!a85BY+vn4p^4L4CjfGQ6R?9D{ABD&%W)=M=xTPGc7+|g_1x&I;C0=OUAiXeS1>Y_m8^z>3)tQqgkKD|DwG0pFv;xT+Iu1B*?4lUqM1DmMTwH$QV z6+-zEr?$mztH*XwE3AALJZ0x zNtt&P4R!lrfjxshTWJA3me0K|U(uatJjZChb1)BWDZcDkt!=Y-@3j^7?xAh6CQ~L+ zj1k&ldPVY(zj$(qyX&ny{a~1Hu3fY-SS|;Fs0(Z%Edp}MAiieQtt1Wwv>fgTB}p}Y zCh2E7v5~j7{=p#k^!C%1R=WQ{DM$YxxO2^=9uF^!g@)0Tqg$^xTa?^ zs|JijqA}Y7y@34}k?k18L!s6ghtOMa@AQmb1NqPVhq`dZzMi~e|15uMbg_b|+*LUd zmW0l$0R(-R8NVwRRheI5fYa6dK@aaH?{JV?&2p>UXd@0UCO=?c1R8xrcCMIG zt7o+~*JqmNw)*SJo4e)3j~a|_raPyBJtdLgQ-uGG`3~t>8b@;~Ha5=;4P^WUj}c$6 z=`BY_*RoG?@~9&-Ny%Rx)!eDl>I+^Sw$X&w%|dwFMq2~E6ptIkx8<%4bxR6{pJYKi zdq9aBUbC#8YC)OT=+zq^biZ~IkiFFs^M6Uo2xY93t?+Xh04lN9Ql>SK8`bY@l1ybT z+Kse%unN#*Zxu6Z2YT^-h7Z^d|{G|V6`cik24mN38X@ALd*80kt9Wi4KHmiCm~hNMuHnoUnDmLtH@KM-~lAi|uvuEJebZY3b z`C-JCnE+4W{j2S8v7qgs=H0@3 zgY&v9u3vHE27w!j6X8J~F`T4Bbe05lXp%p(x4K-?2dmZ?`Ux@JR487i5&|Mf?=Qy= zuR+jPK!I!E0QWpl6{Uu$(KHAk?zSX8+BnJ2dhS;!f<~EDLY}l=oYn(w2b?EJcYnFM2$ebWmr@G?)>%I~9#HlKg zTnlE-oM}gn{KI`WHN?QVHssjn0DDXF6mI!F%uQ{Sb)cJaODq8fEy>Z z)<3+pkn-AC(r-S-f&`ti>vLhK;i${izPD+$0&V12W`NJ55WX_O&AN#2$@=8Z0E#HB zI$}ps@5jaCdg!K$FM}URw&3r`$+8^3cGa*2Xe5c%0JwEF=>tZ&1&H7HV4MxE>9QE% zV{)@_)-7`-jV>3~6cC0$yIj>5)Q$R43#q;79fMY^UE(*AB27m6(8PbRgUIis9OKxe zWOOZiAYIkx(GVlF$WDHhNJPiT8hv5v7#<8{Au3?syvGwiD^y@xxS!_hBl6+&jF6qd z*CE*SsKEjR8?I?ZFp;23e5+UL=n{YYS9_B3zax#}W2DiYa`SM5LwyW1D!(-4`rLN8 zzT3l%hSO;BC*0`2p^W~0TGzk9i`v~*Grs1^o$Z}=Z|~6HH$Za?jRFhK8t4~bD_e6F z96Eco@I>jN|987-cpw3KzV5Gag#bQ+#b<93^iCkkncLo4+x!>Gou1Msj>dn``mFL8 z@b54>Y;9wIx14+Sd>lu@5^a7FDUgGVzJF@l_1(EobRX-JVh)%lg9G=(rZ^7 zWW#wobElN;Pj726%s+ja-_#W^X-yR6MmOYhJv^&b%NfR+>+s)%y`nP@hl9_kpz6HM z?Rklk@gXAFbu)KYh@c4&$dZ8~HzlE+kl~kS28pVoq-*>AyMj85Kc4m7usRL_qURi? zpGsN3hkgeCJu&I|-ox6+7WOewLN6C%RNvYb|%gnAmr zO4ge%4?($;7{nRTV4*3BC7RHnb|fwTBlE>I41rPZ*jyPCrXOFVII+EhWt;fWX(&)1 zI3Jnq#l0sip+VWx*NZMC=H)7NZ1-39aPI+>VR4j8`#90vBG#Uy$gXGthYAY@Z`ZSG3Sk4ohuI?4U6nlc zq{6Kj&Jabv%9$yRBr<~{kyKBpIrPySk$&xspbH0jKJ&C zC~Yri<{OfU#Mpxc53Y#`W+HDE6(go~9GiW-1A1$cgI{lhL{LtWivio+gKA#vRakt6 zOO(;`g26$Wd9%6+z?h@f9Q=mxiOnw3zu)_}#jsPxlswGGu%aL3lm%))6hF`f_*ab; z5`Apxz?D|7u<$xv-Kjj%sC^d<1NmT?WA9N2E8*UOj`0MyTnR)rzG*cLyv;5>czCi* z)}g8FH)qV!0dbR`zYuh0Ocy;(T*pN<9m2YAk0f15Zj+9@Pjlu@&|9_i2ffVn!Ht=e zAjh;GFq)7sja8-P#-1kngZYQq2?tP2itZ*)uRTui3eA5F_eM=V%94FS`f%hg+CuKtWS;Q#LgmJ~Jz8#S4+AnIc zL{gwDq7&lLPJ_XZyCvG%gpK-7GQPhmpb&z(YUP zStJ9y$jxj)7~PbTNFF`&uPv)EPqSF9%V0tdnqvNb{!6nA&EAsN z^&XJ$KKkfrdFK0fM72zx)6yh=@utK<#6BinR@Gz&eezJbd?hA}PO3KAp#;p%r<7(`Vy(&8_Ot3OFR6Ybfq~&fE<6k* z9NL~aLivQrIk7C2G5LgqL zx#y^Hz{|ANNidql?8#}2yVV@W^Qbz9D~}N|UENc25R2srT2VIez;J&0q5EpzS=mu@MWTot>KcJIuPSYla)TfHFL9mJg9x538Lbvi3U%4v>DZOtO!=hphhVQz}m=wQ%D&%%@TpNR{TAi zr_8>k(5gT5g$nCLW5v``Q1oV5qaDqfdNLZ`f`6SQxB0&al#b4OMU743sX7NH_HgnFJ(rL2%%uE%cnpw|wai*%z&i z#55~Up!ddjVf6v^tEN?-J>_fZ^vOKdUV|q*l!lYhNf8tuSbQN#lG`iWqO7mYk1&vu za!N`fsp{X!My1v$r@$u49@6OfV!Zf*dNO!(EZlpVQz02S{DaNpW zQa?sW`nC8CT9{iqNU9s&o4vk79@N|%9TpzGE;ARG))QQgqMp5YEQeH)8I2e7E#);k zS_Hn=w7o+YD(eX|t2utE&(;fc&8hc27MB^poSHF9>GMvOS4oGWeL+=;73mWnIxXes zv5IMJc~6P)3o5cj*|r@uT&1m8YI>U|!0MG|!ma;z0;!aMxL|VZf)iIBV4pZ3gR`?^CAyHA7vj&N^g$@9-li^P-x0s=)uI(AOFk0#l zS=~LBddWT}w|hVKjzFk>0D*6EdHYyF+IGMaC2`8vA zi95jr*2(JSu=gr#LdiafxY1Ri0bw(PKu`{zw*vA&Myp50j$B57oaPD3PFX}Oq%KvS zAqNSgi(#;pkOgU>e6-})`q8V8oO{Tfh!)~)ci^tsWJ0`hq|z**6vS~XIqbcSUQk^> z(29U&(`+M*hJl7s@ge;Q$A2%1BZeSV&OFv16}exYhL4$Lii1f1hNOyj1E7ab+$L{P zc~Y*aa3Xk?oDjlI+)kR4>@V@?#hLt~)wajJWAi4@T8{eAw9m`$?4-gCobYrML=i)S z&uR}@J&_&2XYHc(--WjzG~)P-c%M-6HAR?w%XWPgkF*vwiIKV!Wwp(3@g6IUtl`8R z#M#`1g?y>lT=t4@+O0_8CSuD<#@V%VgZyW)XDQZm>)L{)8*j{R(2K8}jOHPNCeD-d z=S+w<0%F3p@?20CmV1!bJ$NTWE)7y%%GZ?MHS7X`vIWaBaJB$n&0>g`SL=hH-!yOi z2V>{b4g!D)mNsZ%0lTRiE+gH{dLZ*d_-X@#xgBUTD98x8nK8&pfrdW84v=1{mN5@` zBAqw=q`GbVUEgh{-wm5H$mq||DU$ABNUq%j012by{?@6AZi|KhOi?s6G%F`rY?Csb zK$knR1i&jcj}zxZy|$ei;K)V1ny=nAmLJsCkq&a$N@Lq851=a0g*aDJG`Vg)515i4 z{kg?5YF|+2TV{xf?8E3pAiBY4*D2LRE=BiG{sDptZq;YH>*k)R?Y~)jM^s;zkI(Ng ziyA#oIb$%pbJzRh=r$+8HyP3XrDgTJQ<{>`0&sRp1vM3+(U))kF%(lnS%9<@Aq#pS z;}*x?5Yeu-VggqAU}!z@Rt(0lO9q0;h5Hv1Zw6x1?N8tOfntS8DwwWBb$%QISV_AA z-0cA+^iednGxS)MOS~wUk*}$EK$1yd*|J(G_U zud`!w5=EPm9ly+NFy{(8+@@f%98w1KMeeJ`dZxg&t0tPNU3YUCst8dBUE?k`7)+jh z;P79V`8GB8$AC!XUC$%ejT<%1bhGoIG~G(SOp?s@wAL)sX7`47vR8?`+|4TL6XREr z1*@8$WTxx*t7O_OmV|pg+!Loov|W}72>Ycgl+pKWAoS-90t#`D#(wyZi#3KG*GARb zC`sCF*q{#7YXaN~CpaM4P;82YV6C&WfER$$q- z$JM2%(<^`>GsgQU7o?0;3Y5R|yQ7wS-G_@XQH)%*-s*fU}PW0suV#S)J+ttPnr*KRZ%Ib z>D!X0sqqzuWU!rc41PMfIeQAKhMKF_2q&ng>Q=7wY4=ILW8I433)r>N!M9WSj|G80 z7}mIhWtYEqG-VdaT)*#avde?rK-Y;zy+%}?7_^+#O4FeVn`OImDIpjc2e6}q7JH;hr1f+} zjsURuJ7h)NE%hJcTqY!OmOm?e+D49Yc<1ssOA zBaCgjZT~^W3b$^6(3+2XU=0?WE<7~6Nqm2CfRd6$*P+;cU;v8l&87+1%-(r?Rp`v+eMlBCJYEOXUBdK%boVi^AV^D`O7 zf))zHwF?fxTLYFc7tw?hw;@k1X$hzl21zq^ZZx?XjZEy8?VIT9;@&x8IVt8?i>`x` z7Q509T4hN*LoIZ+)8W$Vo3P*rgDG|zajSyfjhW&qyr)YCDn;2V8a^dLkxEd5o2$8q zxtgHy%J_j6IXh)Our5SCdDQ(h3wHfLf%eA!<(b~lEC3qnpnG5V2uBbBc3uxcj$dX6 zjqKdo0@19b|44GuK1V=7i<%i;f9slHz7O)&iXEeWayD;m(7f|}92U`4PNE7foPkbSK~smP9v&R;kt zn0vc1XLbb@Ss)MLI(G+&x6k+y10=O2jYQ3%Pr#ZDmmtMnb6k zOodN(=q7IrPHPQTlPvzls}Hi2gYn^C7`*F^CnZ5VD+4vSh0cx7c(@;X@a+M)gtyVAmQ2Dp@;++Z< z`)&19eO>gJ!o^J0M9yL1fu=uZHQ41viaV#~dg~5E}2!i&$ zi@>Lx+ujF1^XkSNBtH7}*3QPRxNb_(`amY5-z?6F^k&zgJeM48vkR=I-CWbBzA;Da z9Ie|M8*@8i+%dkMLBx+8kG^;QlKlq2PyJ=?6MtM^+gx3o`^Pam{8WFr3};biSeqN` zJf&s=}D zSeO`;0==|tvxpM%KC*W^GD|t>;yRM|Arydh-sw1=m!8o9B3gT6T_<>m@}7&)Ofz2M zO(pu`;V(Z(Dt$*2^tM^ve|mke-i7w>ZCYLqIyaJsz8%CP>Tc5v{DZQrZ@nwgmGICq5X5WSk3}t+X73iAN zCJ}z;j2)S&KQc{s)u2UoV={&x20}~Y8`RQQzp#vaZeRok2){b=!Ia}c6H`IlFbaS& zWia&Aql*{)=}6Yf^Fc3zGLn--OB9oo@JeQ-deP#b_Bf9F?`zp=u1fMgARoX?r`~t>?Pin;RSGV3eSWE^) zh$OvL-9j*6*S04hbQm0rFKTskJ4iN?x;j#poI|BufK(5sx*WaH=`Ht(S#2$cH&3LZ z8mjD2`BU4f>#sI2K{DY+48isGCPeK_|zs41kCn z>~&znhYG#_C_lepzVQpr4dA1F`Dm6sL?2bQdhfNC=R_Y)LD4!tE%AI#1!}{UB>tyP z;Fm^Demd&kwTk7}2Q!{3ziFOV{JFZOLY-v z&BmL|eJsa2X*;Aj>JfOAm)af0R!OlZR#OVR!vp1s(s(-Gyd=+~loPHUG-L)N?0$rj zg5X!(wMes0qhV zZB9xWSrl8J)+{EM_Ah+M-X6-h^=3(a85JEo4P2{cEdQGW!?(v@k$IIj z_ONvL;L9A>c}0P8jfGER{8dA*)(u;!@jDU@s-r+oG0%KmRX~&SYQD(_sUa|Nh(9r1 zdX$ve>1#46v!Kl2@bNZa!kZIr=6iSlP)Aw|g#jafCSe8RG(-f_mqZ^GzC9To;1$tO z5Q(a}+?!^6PmWjomKOb|gOGP=k#`n_J6Twf7N zShlo|`xVxKKIU+htH4V)ZyUDhtoQc}VqJ$N*nSxv`bT!+xZLqcV`W}>K4hUc%<7?R6A`AB~ zD^KbV;e*0xmC>WCg4L|P)XCGBo3WpSwnEieCZALpgGJcw2fmopN{b&{tx>6koSH}U zqk)l!9XB2;tT6UOi=ubm_9}DXS6}@dW4*w=pviVo*1ym7J<%))pd}It7?bq_fjml; zjA?TH@n76E*%oyR8wEGHa+yGHx45znU=8Pc#!}n zl7+=~&1~7!ZyXuULFo}2;M!LIoVXO`xsET3>&2ujWD@P9ms+Frv8YT2Gr@QyTh>Sj ze93Ca#Y`EQDxST&tSyV_KrJiv4(l?Ka^+GJxiZZZI9%I6hhj@20;E2QMeGjh>t5q5 z#ySy{fSN=zYY39hPp7nSGi?i1VY%K&4r!U_)mc&|*Q45vQx`HUZZAirvSZP^wPk#h z!))UZ@*%Zh{GZCELXOJBIBl#qK3rYT{(W-u55jNRXcP@J*(0;Oy?fjg+8;YK5xfAP zQB;@(;P182*;$nWmIt&Jyi{3=n!s9_IWjhmd zK-E2916;Ky{Qx&wqoqAw_1ScToWr+FBG`43B}vK3jDAGKN!mJwBedf-nXKp69ui^6 zz2zpRyOcU4<>+hD^GQ@P7B&!$;z!s#0iM1$Qdza=aJ=;%vHz(Sd`739AIfvm_FLLq z=A=nJHinbZk{9d#K1w24PBh*Vrq#7=ME_sHzEklO-;bT2`tDhC0~c=cbW+LD;C(tP z_9hUzqKfHiyJzIa!&5qFSuhQ}jxjbCnpZyf;omG}m7`bwO3MhrGE#vwD2>Xgw7%V> zeq*~f`isPsVQTd`VT5GYMMTk74`m~#_q`m`&ervcY4$-P^vS=}q^F)T8PF`q_|a@m zaz#*!#ujDYC_e)diR)Ua#+r{!tx~r^g}}Ln53AITJ(O-8w00=Y=KesfqXR9}kSCc; z4(%@&dwWQAxqW^zTR+^Ll6)ECn=mN#$cv@7tJub}Zuc}m3kc!g^o}7Lm36ybl;&tt7v$3=&^&q9ioIwy8 zi14a@IKOa!_ib57*)#!9nr z(;^&Jm8s=U7!S*9$XL3!o@Y#kXOOEnyXMQD_*J~`w6yWIa2=Z4L!S#6CZ2Q9zv!Bx zi)41qonUxv@cHEfNLABe0mh^6QYTuFN-rlSnC8kz95`SWU&~3rskONjiHLMD?LwmM zdk-ORFIUY<`4MDyaYo8ujJ0*T=M#@X&hQgHVyN+=gDn#wm81 zVyQAxh5F*vFP%;CwU8WKldUFW#e@V z>IB$foCe-s&TH0XH{bhe6;iNu^ib$kwq1wGn(V8WmlkX}l|`Z@h<{tcLvnu=n1GEl^|Q!fRHcZMxVj^rpty}F5$ zuQ;Y75di;s+NY7iS~BDhaz;xEw8K|^MNPcaB5_^n?8Sl}S{h^|#HSu#(Z};bD<^$r z3X$ZSR>Wt0Fob0}`5qJ;l>VQrG^HKEkr&APxv#Z_?~IJWwTVFtAXfBjOER@b=8VEf z>+?~jLJHQ%&8;Gg0|85`l}1mR+HdlG7(PGZ`2(Xwhz$ZmMHScB`@?93mkvg(Ey~CK)cWkoeJp zU$WLA;ZoZrnLJZs5?`!ZRicQv0_Uuu`hPTEnzYF_Zw7 zkiox^tKEik&Ri*?R~co(hhUXU6(!{dh>es?_XL#^b(SVJBB}H zWgWg_KXe3>+LfUE0GQxxSx;$`oH{x1UHJxu*Iem);%&C4WKD@#s{!lX>eokSaFm-< zdLCs;rQ>5Oj|a_je9--8!@D=a%K2Cuei)F%}nJXP;nxL%o$rnjgq5 z(YlnTwi}6oWd?)z%XC=RfT{Jv&$dMCJY``hi}c~&2xw1yp0*iSG`T2cGh3lM%3>hh zC13g5pVg9Kbf@$fX79)J)g_G5xk^O}Qg;`#x73~!Tr+(8(8*z_l4o>MG;@AB6A$n< zVJ%bkvGRTO;|IQq(|FW{n654_e$6C|WUQU{dVD%0sw8QOwA020M&bh-R#ql}4Jn7W zbn;AxDr*PaP^yMw-ZrWTs#b3~Sf0x^u|Cx3U4>lLU`O6X{8@*K4m5u-s z;sr{t*9uDiw9bt6#Ep@0X*44c8NFF-qElIZ`gTwdC`rkOilLk+dQUNLLSn(iN>+}% zh+`Roc4y|ehg4gn2|gx53n&U5Y~_3)X*H*{YJSg&pi)KP5ew@M63ylwnR>DaB zqJQ%V(pvT5D`CY@>_iJ(MqlZ1!|^1a)bcy)$-|VU-kD2q93OXyy|F{`)9Av1I@_73 zfJa1yC zRC}`ja7i=T$fYK`%p=2&B(6<4Qpp=_w@oY@dK2r?%bmo)wzJnb2oL=0Ty{s-;yIJ(E=f6ksT_pqa7r z*hGQ%B?HZ#9W}EOLnYg-M{yLS)TUWiVWld-mXwl>*v`T#qe_d>Q^i}i_hjiHYm+z5 zaN3e2HsxDxq8Sv1Owbjg3w{9TaO2mM@69QY#_M(<2BSXX1qz{YRwP6I1=xF<$*Hg* zv9b(NxF_8yS<~zo;-nmjg503vo(igeeC(4s3Z3=%8IdncV0Ov%g z%%xeNOsh#%D$b{%8Kem7kwsj%jn(8M;FkkMBIDb7q$M0e_6}4h)d6rh>Ug6aSdwl0 zXl>a`o1j+mDTp|?euXEa@2O3I%}2zCBlAIH|8;^>r5p6$3`aa_b zwYpZGIusS;=npM9@MkgV$m!89GH%PwYnQn;=;vhknDVEJu8fenTsJz`EWUB6m;=(3 zJ15+#crE62K)SLpQbwSy$+gSe73DW9)@0_FF!$Es7cy@lBcLdwFiI&a7^T;IZxaJH z*^Tdx=|9H)(I8}dC9gBqF9qSU*VCISzmk^7>AOoMxPdkgNRjrwreEg~ML#*87CPt;2c<&UWtq?neB)>mBH^H4I>=J@%e3aiIL6(lyk;gDYRy3lUdQ3pbM+j<2pt?FTRO?{D z+N6~3P!0@91O@(&DhOY|=i8XbsD2KB#U!e@Al@VR#~>Z|+$ zBBkA95R1+G!aPsLfAa7A%b=}8#>p>E7_GG%Z|;}t`x|SUYx^6UL!-|THP3$r`22r* z*w?*1_;+kv)*oa*J~7L%MwfZDy4H4!$*s6i1!}}kk4&{;e154rX9kVp6fg4~tjMVtg(0=hGqJ`~~}8Mjolj_OEw zn+#1+G}+_bd!n}Oq&P--wh-m@<-ScYQWxPu&iMGj0S3Q*=a4*~<`Zm}A=0VPtG_uit@CMCPPZGb@zdpE*fe;?LKD3Q`S_I?{iO)y$ zHGqm#PNCMv^~65QwqL*&oI?@s!3wj}^_4wqjCYl6+8{hbg~Qv(gR#JgwAjFtmD4jq z7m&^7JqEZPmrKjyiYTAferpII9Xb|9zP|CR2=Caw&nOsAr2@9Mv7r(nJAxrOL=(Ds&PH3LzFaSD(LEAmuNbyF=XNpW1x z-%Pp+ECMusz_~NbDL_e#UXaR{SZcjB3nSOUq{AIrboBaob8?=K$4kcL-fw+Xm8tlH z<_49NTr?D=;)qn5?Hi9DWK2~s;zA=N8GhZi#r}jLlHELzb|%S+H+#(uaAwJb#qUo; zmNQCT_}l3$6c%sw#?X6TH!jHU1*EL!OFs9-OGQ-e6Mr>%6*dG+*%oGB8!Ml`r!Gph zDXC&1T7c{hf%ozVz!Ny`pWMMTfN5Vlpa(`w$;$CLo@M2>7ZuX-;|a1J(p9#{kC8o@ zo#pF_@bFW~1ZBmu4T3yk@^(BX)eY5SPy;t%1IV9PM`wj4aZNo2ub zZPjO|hc}Gmw7#A{V_@sCxboiQTiL%XjXvejs2D@Gg23@|_Ka`aV>Rl-1QY9(hXZ$B z)g4?!GW3$;HoK|wbKj3aGddvCNEK6IJh8DjVUDNd*yp>`*zfu}m#1);RoNHTS@#OQ zXE(j$Li)~yD`Pf-vY=Lf|x8k}PC*l%PhoRTcBmFHFdF@gx5`C#%FXl=b7z@aXGq@=U%%o7u12r4>E--} zSp)LlPO`}+CfVZOuVrNTc!)f#=`pRYoYj-vRfGs?ka(Q2jFhRtXR0z6PPA>$E1eec zZ&GANmzpM8_SM0pywEYeLB&^ld5mr8s^>p*Hc|nfNs}I+Raj&o1h4I6yN}o#!CDyK zj>QZFP6d9AnP6*qpSt+DJNi_1f(rQF#!4oj&+w6#2DmkfBgA@D`y-es!_R_!GFo4i zH#bKoTj_3=Rj`aIbL*l9r}BG0i<4QR zN{7aVdm&?AR5vrfn)Gu&I7m?s@fiU=eY}cbyXc$SrM9~aByFk4*8{$ZBB9p8z$7*U zV{G6IMX?PL>OmYU#frBeO=;K)D7vgqT3b1e=thMmynWRl=O7}oBdS}J`|=j}N0KR> z7=Hl_BX^)J^GsU3GzGEq*$=Y&bdN{*lfH?p8XtwjDR)nHIVz5uS&9*hHdxA~?9Y)Y z_@S2}10dan#usWp<<`1-th{(YAmO@5LrCMbBS8~nB(-=wi3FJx)9=jYgO4JO7gZgU zMi!tu^tK7|TdUMzn>-NqY@Rk&AmmE1sU%iLODtG4z3D5I@%=PFD>|F&VgZ_URt$bA z5PqreJPX^U3mBTB`Hp$T-CS1RZWYZ=Y4}JKo$=2xts|!evoBgwGV*zqtM8d}BOgtW z+ab{}-HCW~(~Hu6c#Xw7ldem}PL{uQQ8D@eGe|5dpkOu!0teHFs#sKGzv6M^$|cK{ zA*w0t3-_w%3UzT%>ysUuW>s6%h#1RYE~fE0b++it{WSUv;J`ofqYXUlW$y zOK0`b)seDa^+-OmQo0exg+d=K<;X8QF(QuCU>TVKo31D=!}c5NN;i6{XKU{N{m0<| zQlQ0$B4Yw+lIYl~LJASZcHTW`k6%8n=?ua@sS{Q0iS`Y8a(gazLl9kD0;QtHr)R$d ztB(yS$!L;v2$^0{yCiR{=dLEheen(G?wTj-$T7k7y~*xZ&%$m(fr+lC%B}mFGXw0j z&jB@p$~h`wQ`+T8$k6}+xoMZ2|LwoAFEfNyccsFYC&DN%v-S|>OOcat4GXm;g+6@r z%Ji%sA@qBQ8N3^>snmjNnI-wi&CjzMl%Oc1V~EV_!it$z&{T^t)SWoOEKod(~TceOL%(JLSl0tum8ZN}*M58gA=8 z*Qj3^!{bd%?A*u~8ng^L41Oj}LktIR*;I7CXYF4n7%2reWv8q?DmQEIDtTtN8Hz+y9pG)OU^MRD zX$oCEQI1)l2^b$urN+bAUh%c;{#I@Mjr7#ESJ`c%E*7&GWJ)r!PMHFhR1{Kh?Svz4lNisw#~N>sX&?r6O8RgZe>o0hJcvCn8TO%ddXD_d+K zIsURoueho#3+OwSl) zvk|h-pf{CGWup04PZ&pL&H^QYz)Q z-jEMYQv2#>6cP_ZU&$Z{@Lf%efS170!G?r_hFd%K&L?ud380m~kC*Ga2lx>bf3?Z& zwoax3-Ijy{RZ-wfMLqk(!Dkt2YiLUkGIp#eIm`HPEr}rrbmi+vewa5&?@ZY{F;~yf zPR<04`<#1(MP^AMRoVQIav@+yu8q6Ae*aaijpU0 zkIJE8q<9SYM~iryvx^0`*h4*GQBIPvPL-_eqdo-z=kL} z@d5v3G%wvhkmifTR@)4&XjDQxe3~uL4T0Pkx~ewBt2qrva{r=#mQW=po;I*V(u66= zY9ynJs_w4AA^v&Tmx*|B>^wQ5re1lffa4SOUnRlE3Y=R)np;`$0_gZp2h233gKZT`teH5X&MKRQ8XTYKpzH;ZgXoDpmY4-+Q&fvk~HhJ~&Pvi>0~i z=f&02)2|Bi@!^g?Z6odik6E&K5n zyaups7hy}o)lV56R>4cGo(+p7%9}RR-6p5VH8?0|GiaN#;>ClifCLtWB`z)!K8%~!i{y(wvNr}lbSq4KqrOUjFFe;Xx; zl#QXWah?rY9$OcH)p^yuXcf?MU>sgRGQ=l%U_pHmTZ7 z9UpLp+e%q!qSdsa62rjwU^S%WgZ`OtqFN;5cm_3fnSB$Uo<3Yit{pSS26urjKVqAN`Wa)LaodWqh+;=D)R`O1M2jT~@TBLK zTF|af?3ArDS&1Db5v3k-6~okCXjgRI1=7peo=0G0#^@t*SOaZ1oEIEU_E}1X^gNQy zh%gpZ8FRtTv*{gu`bt(O#dpgF7)7#fXH_RdE{-(>d0adt$cQiImlt|%uN50X@?fd= z^t|3{ws0dniXJcfNNBfcn7;0XC4zlso6MeS3-j;e`;^a$x|N0 zJOWhekNTCqcOYQX$n=$l6eg%T7|8P{{?<(9!k@;dd~Xi&FU4_3oU*=@oQTN;Wem$l zW;X|`H;`30lIiI8t*K5kLzk~u!X{QPEJNkWn6?FWY~s?WPmGsGsnD-TKaeQ|M*PGi za$Zrb;FQAP$3i!zQDoFO8L=U%$cvku!mkkUk+f8@m%ll4@@z(z*L~ELALt0Jo~%|o zeBsX@kFRM>|65w39+PuWAQmAu@eNidH>iiWb!|>q?gplAjoX> z>%yL2ycu28`Kc(umFYYGT{Msj9&jX7An6gXSu7He^t*Jnbds4>%?V_AU4d2){TA*$ zf<_swotKgo^HvYNC}YS5>4_GfW>%x>BL#U4-m7nX4MWdBu-LBy6MlQ$D!&JLm|Fa@XlfF7@I+wMe0;%#CKzv_{KDOoSW4Ti7qA zn&Ds!Lpt2nXk0b7@8|=;Yrtn;S`~p#n?c5vI6Ki-Jt2ccbxj-osJb}neg}6B5hvy_ z)+ZoXddZ|eUOM`0zzTw14~z?##|!QL4QZqE&2-OCrK+fLy0x>qwYjy?17k*`Y5XTL=D%^?#01~zfMi|cyZLxcz+c91k{###Nn@y!$ar4#0QJ(R7vaQP z+U^%-Pg_+;XT7fw^z#j>Z+F55;?I*Zko{AFh_G^zNYsL+h?$w{ zs2|8D%D(UJ2Ng}K+U&GwHaab_&x#pA>gBW@X<1G!tJNI5(`WO=b#uUUW3xDUEDdQET}vO5!Z*Y2Hq!t1ePG$1L`i`@ zO)OOT#S&-W6Fn|5SX?O(lUPr+Fsnkrd9ju!?3ltCxL7xN=L zO^j1lPFGG&5jm=zY?C};shEy_w>;4p8YySa7-Jahy!FBoiHGM{$3(tEJ-JI#o_~=4 zkVIZ|(dy#Et!(`-k9#FVeVM)K#G+XWG0kD&q?r^NL$;-i*`S`d5urkD`GXlJsyfyX zktBJPw^x*$w?WFWj;pq$y7^k~uzpbr-vpJb8{GYf?NE-xlZTr(`mmN#k9q6w)ZSE9 zAC-)^L)wLq)7r|DO6=5VYtk21ZO0LQ>M$N=G6w|6lDZ1|lM?rmA3@Su9N;CHzMiqdMv9m&@ zqMKe0f1&*))rDwrS*E+dbB4q#ry7bI7_1F-{zi>&od(G%#1mW9Ue%qzd*!#?LEai35)X_X` z=JMA^7Wyc4;1f4081ardv++i{#D)f|P=OWy;Ci-i+!vR5F5h6NYO6X9mz(?vNy?Gw z*Yht}Cq=#Ns2LKOIH_m**}(+CG+N1}TvZ7OI#>#6@(Q~pX@s$be}`ZH_^$46sa3q} za(Ml>FJ3tj4-H{ulCL2Md*NQZt5l3vYbB`TGr4Nluv6RNE|c9e5?eW>C_{jlq9eO} zJA7TYP5-u;MgYv6_U4Lb%fn7|GMrb!5Aot@{cBx@c9xH5>h5Jh*$3UTF93o@<6-!4 znZ@f=3se-0uvP$$@hrN54w_Z;D~4b8{Zuqq3%BCtR_Xs}I_LD2F5hN5Caf@z?c*h$ zVj=hiT!;iDb_#rf5XrR)4k{hO*C=<{4Xhy-jBif6nssft!*q zYu0|FTM3~5u0VryR{!dh((pnnX^`Ol&}~G>LB)XbO+J7e3(<9FxR+Jq@IZOx#ZdBx z)hy~CnWCq>m`yD7myvAw z3XM7G)B+J48g6W6*^{kT$(UlNdKlA|Xx4mAtZ|GAjZvq^LmV;dQ>Ix@2e^GLiO^#p zT<|cgcDa(wl;U*U?bhEa^jqnO83p|-M8jpF>XlNIlh#9Y?MWn;=p%D6t$YX^I`<81%BW`gxh^z6)1f=Fgw3 z9%~9J>h)}#$)YM-l|+AO`DC#g)lcm)tbG&h|5lYGKMwZnwEJrl$$-*dv0WTv6s=F6 zv^_Ri(K0Tvr%~qN9N%C=+()ymdCvPEkLKm~KATQDQkk_rNNU?P%Sb+W9}Y<4m;JLv z(x6nJ0q?y%@hyCOGjBD`UsLM<6AfI7cR+UdPxj@PwgpxlXm#BS?D_?bP z!%u-DvgPE9q;eG4r2JMY!i+(k-v6oN%JdnXIZqX_>0q}whH}Vws=;7N zD=%})5NTb(cz1@qNNj;lH`R-eC;earNwh5*kjVY7b!i5w^5SmqVeo<(b+lf-GgL5W zYNeOBIcHNuS$L`#O)g=1QU_e}Ad}bfL4w~7J_CFV4T;lCTHSnPrNVJdYg=_X)Frqppa^5%+{eQE zwI!tg>wudZLcO({6wfH}N8>rmQY7W*imI)E-4Y#Ox@SOQAOrD{9umYi^~iVt<3GvD z@*Qv7(+QSHiiOzfeCrDrz~`1+=z(^OC&O&*!KUBGfXTLxbkzZ%lrPZPxKIT|&xZcE zAynXqN_WMU3Q1b668;Mv1h?gU`&xYjYawZ|)VNu-%$1|H^4UgcWh0@Do8?0-rrJ>y zdMYgrhGCs@?IgdXe?Bm36msea>2<9()SirSkX>u@LsX=2)aG%}W>4|idCho%q}XMA3B z;*3dEJJ>!ATEbw&W|wcRoRS-Xz#Ga_6FC(sg1`;QgTX^mYN~8|`5>Rq_hzBZ>PQhR zJYnvk{0s+;)u7nsTkOH!2N^CK3ONOm6u4K3z-eZdeDtt+o#bO1eZ|C;ihXy-ZPXtQ=xD< zU~$q+5Kn?~hxDfoWwt2>V2m_r`(|>M>y|vJk*jz46O@aeg*9n8;|dZSw@j7}KO32D ztZV$^TOho2+uqO*Hlr7;B8U-!DG%SoYs+q+=RuDqe_!%1m6Mliav*GasiG7zG3I2@ zIIKP(XlgjRAE9U}vtRTTE{oYyJ0R0nnJJ_asJ-(~12}>ar8HNLh@ezG^4U4S{P!*@ zUNZwP&1bbA$)0g12$44J@EJg%7U|7C5Kf{Om_jwwTDqM>Ofq>i)d|)H`PuAr;`HR@ zA|DW$X~K9W%U-*cQ5wpJE)1tFcLEEL$f+LJMF> zkihcyk;Nr)!`1Z3c@*)s^S%TbuXmmsi`Fc;A!THEnvwF%lik2^Rh6gB7;Qbl<5x^) zQH!Tnp1Wv!=z8nkiJp=Eli9NNUu`$5W}F)1?8|h=zKa`P1UWTlXjicJRvm zPTprs4r3=HOS?Q$j5ZyW^Q0;~Ntq6nNR~5gPWI@@>=JEE7ztpmMRCzOgnSrbu|bd) zhrw1>XbB!r5^wo$C7P7E?L30`eb4D@gN2F93m^BgM;B~QI6@G2tM}UGpNRp6Z))kG zjq)GT_=WAf8Tdg^2IZ!9^GC2*;}@a5vK}7p`0s=Tqglxptls(ztp&Y(&zfvUt0gsI zLaZAaalBsBMo6#Sc+cC~ek*LWbX{HEkTNDTozEA~9G4k5@zpq6#T{V{IPr3!(CT9= zoxJoTEJJ}EO^p3!#ISTWGHO(AG+zrb)p+>PLt&fUHC{J9H@rTf_{{1ff95w@#ug*N zC~g~QXD|@Qvk&k7)I3Mo7^uBWGbE$a6oV)iy=;y^S_Qm18gND`LVjH`8s8J_39Mmr z5trFKbn!Sct%O4A`B#5{{|9$pWd4Xc_kATriXop|&cC0x#IwdI3}h5+1}XU`_jdjB zvT3d5f$&(5Poy%!iDp-tu;@Sz@AwaOb89Z+1vuOsX<$EmVqW@0@C(Px+U|ypJ-DTOCc9!$XqOeR%vF#6#N^(%=j2e^HAfQ#0_(~E7uJav$wCY zOYQZw`tVDSs2L2#!~d5#QvVy0843*limL%sBl?u~`3aN0w$z+S1jsY zJGZ^F^=+*YwC6k1qxSt#J`JONUJcS2eM-0CH8%AE-!-0UYg1R)neJX%V@lQf?w+mD z@F1CMc6c}q*J1<}z+gSd+^7B3cCKbM+jzRw`S`2gVNuWOQBm%Q=cnLpW`%Rm1WGWMhi>SAd65%)nE9Iyq4YDXJcPdk1&#>MC@<)#SR zKN@7;^rc&tYg(rTL72{EbeH*Jok*OLaqvUU!)5xW@mZMxv=mgzj5^~jvtTux?@*e@ z!lXr}1~YS7qic5B&+O~89#CQNc2}$7ll)b~nu?4v33ApG>AiaT-IAb*yAcs{SlZ3i zoQN4-Q)?)gR(smIiuN?G1=k$AUy zg1_GAzp$K^PH(>7L}%d$5r*Lv!1c?rQWa2OL?rIkRw`L)yvt%nK(5W{-AL#VpT;Yy ze;K7~Ew8S*TFEL!)%{cc-hh7SFF2r{;9hw;`KeopMbc_Cn!!sej3=7aBd-a{;2dJ5 zn@th_!gSX(U4dn=*dz)bi@8T?G7h07O-Dr>Jgc-`fKE{zqzB{cp<}#^AIpoD1ZZ+1 zk-=Tbk;pOeJqS2CCkTzAyBN2(Nrlt#4Cyp~_xrkff0Z->)OZRwy`29f6Op=QIa@J> zm|U1O`Fy7Ddw=JimzUQqgGu_vUTjxo=M(x7`m*Pbcxmz%T)3vr0`*!9h1`7-lsMX% zCigb=DEzbkKBIZ zU2w+e3&ib>g7_rOO^sl&dMPOE3Hb8wr%lFo*vIY_Vl$w~-vOL~9s@nJ8C*66HbkeG z=NEm9EW(f^pSou8ZgCy4ws0@I>i$}@5jX_(eMn;chPrMa3#i#!UuqDiYUQYZVXgUT z0!=XeyO%whsk@KYwY7+e(MzcfV3|GDZkWcX5`{ZNp$Ah%_=lWl#kWS96wxbl$a3RO zHv=`#8^x@qwP$jk<$xndP4l)m1{#{D0?nwjW1lyuD;*EK$D(-l7n-FHTE$Hs+uE6% zc$U8dKk4f4s%EoUwnx=O86iu#Ows6j{lR#*6|O1QD6YTE{K&)aQ6x%|Hh+J2iPYa~ zK}40`l4HxUXkt=*(ZDDG%8}^!P{CH*)H6*N^n=KMc=5jMWjaiBFtm3NtW4ksgRuua zPT-Ro>#mxKDGlg5_~82JK&PsHuo@0cSMROr$?i+bt?MBDDCTb=kCsOwYoVswPByW;C z?&)G=taskrZVtJ21rhO)ibZ9zPiZw>VjBDL(B%X%(jQ4|ZMz-v zYO*|qzQiwY!5}rkbqC{b*FGX?;p7_RzX@r&A$?z_)Ghp>*kx&p@tN=X7mdSGe0IbX z9gQ|0u}%ET%2Sk~LgWY#lH=^`=$+8|&6FCBN7Z1eL|&jnK|zV2TFrb@S={EblrDj< z77&6aMn#YP2i`(6dk`v2a0eJn|CY)ZQlV2W!VR=WVotwG`QdaneaR&};^+%##G zVl)xZvyhOA29I4hc-7}JujThY+9}4bpJgS<1{*B~V3|9q0FLghqOYJG=*Gcu@m!MR zI=(UU8tyXvr=p4PslxE^m~neS2h90{uYm?GTO3hCGxN({vBlB6 z43L3)%gOT<$9#9u`Ro3&Rw&noSW~W-3&oZ;nTc7O@z-yq#`iC{-Y6rnf$V6+|E4Udc?g z<*j}r=(bdu+r;3kc5^#Czv|l60S=jHn3CyQIQ()w?Gnm-M%$RN5ql{`BOPjZFKZ{Q zt}KWWu_g+kA@Rc%E13NDO&MDm6mkK`4XA!_oOaj=*0ntnpdT;W1dD=>U6+=3UIcZ4 zm6PLSFm}@QJ|612xn~)$QxsoSXM7f2={V5jcf`ey;YTn%Me0b z9|Kq#`bMXJu%@etXs+jK?k0;5)FVsgQ!soi1&=7jkeo~gY?@~axK}iUV6NM-m%7is zc7QJSjdUyl2q7J57aB`gtYsinKJ3!arcS!2I8OS2d@sM4=Mb2-2cXaXQLLK`cn6k? zQwyKW_@_zJGm5#=17_BD+-ovFxe;~nFm%Nk3%E8rXmkcO2r*H|KSU%$%d%w3!0w#W zwEq68e~YDX7)w3|XvBPAFX|9kP!hogX16K)ku_(NsFgjViWOTAi$!)2B7^p^~w`q9@l3_iq@lQPl8x{RHU}BS0lofk)F>BXTUQ`QPq9}MaMP5{| z{Z%mEtgV7%Nt1Alpg!j9-hc=68l+J5FS9m`@Qhg*>+hpU!HK1sv>(aPHG`?QFO&&} zAKn!!(2|sA5~jKuMiY`sZLF?v6>CyC4|a>7vPERk4T8{E(9!wgmJ?)6L1JC}EmpbM z(Q8)v*mHL@nr@uefKVk6Stnft0Egs*_dS32s&6-s4ymG4+DP?FEip6m5D8lk{X-sP z@`m7RBsFg%}!X!!D^4C`Y!lIEHch*sEC2vk?UE^)%BTyy$%^^#9cKX4!^ zRpq7~%k#@*p%b%_*;fh378&9$eWAZ+vd#f>%!D~k08{GO*y*wy8p2h#U6y#MZTxCg zk53~8EV2^o1iX=vMbybFK@d3)W>z^=&uz2@oZ&43(hucKhJPt|w1NVWMiQG_BUvBK zz*pdt$%J?mb1=`tCp0AJW{~ufLmg=DpK~r`D&o_CD&-fVl7Jz+XzD^@_FT#*SQOz5 zCyX?$n9dpeiXLFfI0Ads9#>fn?@O5yndxCf6#zP&&xWxk6E#K z^H?~-+=Jj_Ig$EscK2hix?fVn(EKCZjgmbI`d&pimXE~@XWuAF#=%NqM5~x#0DYdy z#>JGjkZ4=i>2^ti+^C1_M0d2R`2yp8)bR3pG_3VhFapJqeE;xYJ=br`ek?R$i3G z7|qQd5MlrxqBol2cwcH}6EHZVd{fDJNu;TcQlVHxs?TifSQ|P@7cRZce#2S10_CU4 zz7l$Im461)hYE{>ZUD-8Tv6Z=4P)0X!GyyoU_?iweU%YIV zILP zz6!f_wi1kDUx=-AmypXV2EyGKtdIEsB>+Bor3*LE9akJzUECEr~s;J3%R@Y8DS{LJWFjV&7b^BJLmLEWN zfX36LV$O?no{RzxQj*J&k8qacNXq$WB`%4V5vnI1LLHLWlfT_r1+OWaCmM?G+MBQ_n`*DszBB%& zzo0+6EGQBM-5R}s^f@LPuO9aFGiIb;tCLfmcKw;rJYw76LN> zsY(H1w#0$bwGV`c)3BbS>^RG)AP^XJsTPgRHuZ04icLZH70DiL#cv zxYey9#lA629o|)@r=#d?=1UU7i?`4mz*JHcy0zgzrcY;Qbn5E-?wK3<;-1#cI8Zx( z&azs1`yB~Q4PYpmaRA|2Ba=cmD@;AOCgp1a4vSy-dz!uv$6COTV{MFa)985PuOy%} zUz$9c#IPM%35}L?Z3AE_hP|lWvlkB|B<7e}%wl&`jV+v8$7qP}P(uZYy7GD^_tpjAvX%XFz zx77%+c0N)B6_-xbE?p7XNZo5xBR>fpKyHolV`8z(gXT>;9G8mxnq!t3=KVbPn zc}~kV{>vfsBobpV2zUqrOuAlTOMb*RuJy)&544xEi(*}YANgT_6_PKgL&eKPG^*}_ z)ij^kcyW+Y-LR^nqp&zt_=t4|H;4XHBLBFpp|11|-YtO@rt^izL?j}6uyiGGj7LPT zZfODX)6Y)JoZS-sT^aJ`_d|Z6r|CuqdLjH2@$<2R#B^-rw3`oELW@kU8*-w$uK)=#8CB zc9#BAIRMg;-Ed8aV@`9_FAaU**g)J$Adi$G{F75JD@k4oW%3Wyz@& z!~-jG49_=sU#k+nlTG?r&2aAS;}kKki(+ud!t~Ozz9MMc~HMYxuTD^nzNxA?1RD=A*?GvcqP@+{_S1hO!uj7$ zh8i!%{|U6y0iM}4^vUjaSqsUt_Z@pUdaTv_B3r=N+QB`|8aO$kjor~k~#>N~JI&kiQ>WK#tKX$O??49=ue%)WI zzs!k6M{pcR+C2XRXU^u<+>P~e2SiYE8Nd+Wp;caXdzX1xKF?}>)8c=q5Os zy{);uvi`E(@?d&3J#)Lm1N^W5@jrJN?XQdGVq4oE=M8d7j-|KP=9xi$ z-vh}>tSNb#malrXs?aPmwJjfWasYY+TU}W-v9$>U@r2=YYI)ym_T&;t9k2WYqMWb zhKPpBZ#0$NDV_N1DeHyCaoe~|luzV(7@R7_CqHO{q=d-~tQp!YibZvY4Oj_Im-mtJ zdGwW9Ykk*$-hYSfEDFlt26QOL#5@j;R~G>OaWu_t^;U)KDDESk7!(}JmrRu1(nFO4 z3o+FvPa5@IF&kn-x?(I4qRv-JI)em6HQD1k{02yw$a0M|G#>;4^%% zxGZEoKH+$>X^eCu=DsG5A3;#my#Tvuofx!N8!Erv7+I_3^o$>B8wG1ViTjCKtG0Lj z%D@*&_S|}Kgv~MThKS8EN?mrplH>nO`I|(|3`W6>wH++U$4oV~S48b5cq$x3f5{hM z@$Y8!6_N*O^nv7%H=-gx^ayzYr5QZE#aqawNi-S)KT$?b?t1eB2PH}|jV5`M{_(2) zLi94=G~`b)Z-dFw+sVc1G$?3JMWq{^xZUC$}-J!S%gmnGM)`jEzEyE!$W2D_lK3pbd+3+LFW zC2eML5b-8*yK?JF=X0SpxZL%?_`xkftH@AG69#poYl%Ximp}AH>u*#MsfS<4*$BVr z^}!6gu;Sn>Iv_t}3^_>UHya_|TJnZ0Gobft`?MewbtEfwtj~q36W#Sh$J1;sx?;lH z(!K^K934LdDg&iF&>np_rMst80mv%Y;%EWPhV$br)(0uBMqw~qK&cm7Y$OY1MOR`> zqa`ODW9|9`&O*U72z9a5NCuCEZ}+j6KMFDy2n@;2EopDwS!#_yt^t!5#)2{MKb@TxGeqvDi8wq{}f2Th9Qf>Pw1*<=Bz}S(gW87($FZkREfL? z{`(73EfPJ8-@~XCmGI*3d8{iC8{j{9LZ{E%nV)%tf-%JdsEdV}<$wuOiZ>%Q$)cxk2nGlkJ9zCjbQ9(uKx&K7Ps5!lBn>i@f~!X4zDJX_I<`6kdMR8 zS10Dxw;Pfp%~T58NVPk}u%LW@6hGJK$<;5fC7TW#PcS4osGvLgN!>s7_fPcOa-o)ZtTmbu6@joil^e5PP5ShZsMl7qXZJ2A4u&E4h3Bf z4|T!B`rDn;ShKXGEs^91N6vaueNSHRp;HGlt>DKWuoX31Jh`-3dBj1Arx0I=n_&H_ z1kA^{bbg9=raFSEv{_#m_S=lCOAE|Jzb$U7V4|J~oFpb}o3q(X`AvH={r#7^h0;z> zuYaCbEhYmnJ9zfTC9uO585Be#god-~cM~+pZpDw_ocT%Z!8G2df7qQ9Ws**n&jxRd zmaDgvyU(Ny8q1wk@=;v?#_xG=58Dr_pf=TmJ_Y#gFXe_q4bvs4?bwbY>+318)3}7> z6q~k~T_Xj7CXutW-y9zE+rJ&Cnn|f#8B}4|y5!#c!Bs70eicbd#c0)BSbXj9>doRO zpUTJ=wL)q5pX`8LBT_tI4E@$-IKX@Kk_h%?7G)r6cH}jrx&zS{9p`$=zgVFk*0wBB z)_7b*<>m~@tp~b768bbf#G%tTY8egp$&7T`-e_VJ!jEJz_E?Des&wTmn@9&uUewk; zuUd_Vzwzs}7Sz&N*OnCUo4%nH7i~E?9g)jPDz96;o6X>CKXHuf;gn}vkW^{pT35~K zX1OLATi_~AO=XUQXg2mC#KmZPIze7WPa(ZJ$ z{EA(9qB!qSjLy#LP*7-n0>52T@{4U)hujpH1X-=|*EqmtIUI*&wq)}T&ARBzGwGEZ zx?)5XnN-u1$&7rzIAP!xSQ%*Z^<_FodG*>5;Ux$V{#iugX6Yn_O%iB8*e7MES2rY7 zHCToQSB4){)v@`5`$|*Eq{t~TG^a_xFRlkv=<>d>vzSinX7b>`uoyq5k56BDaVqLY zFN9~0;puRGPXU4a^*A0jCLpE%QyrNb2h?Vtq?e9v?t45*lxx*o)pjZIcZ+#I7F@aH zq?`w;kV)fnj#>ykrJ>zEnd6g`$FuqGDau%N19=BY{*{$0I-`A8?D=_b$kXoDQZOs< zsGv+Q7f7i=BRF4A5c`#Z$=orU!ZFzM(01mhic|MZ=(#Zo&_eahAsNeVn!UT&lTC^% zbNm-quAnm=MK{9rrRHOJr)qp1l`nUKR0LHSdh94&xq88HDv}D2Ifls2@E~oCYZzHj zD?JcQ2PP5g1A8jQZv>xDv#sJPKH=!AoFm>OP1mW!&PP(N3^jb_HHo-hzIEpTf!w~} z(y4Yew;o*GQ%khmrUgzVJACF?FWyVmuggS16a18P z1`;!V;p*f?eg7OX3@UFHo55^~aRCHPRy%pPqGEdTFW?D}2N0#I9B}#mcmUjzHIJgF zcH>?R7Zj5iz_^Krk<@s%1N=u$v3Iu1!P7q|Cqdm<5aRo$?sE!@6nfCNxJ`>M!MVJuG5*FsLTK;<^kXOTx>fhB+2t z5pcJk4!>9x{e&%D38{mz5U9+%6U?KzeDYy50h02*cffl;`jhe|E5x)I#!#_i*A=RU zwG2T)jGi<vuf4vxS z#Wg%(FI*_t;^YesJ=sNiqO@;iM=^O6PAi%ib;|g4oRZuH%fs7WA{otRuqxw!h#NvEKOkN)6ThK7-(Kup+?BnX-6TPSa5x@8{U}K}(Zj_E zQ4K#`m3r-(+cO8#XcT1&CY8+lJ1Kr5tmOP|_*1!0lmV>6E97RC%mX@Nu9D7il5?c| zYdN{-vN~!?_amh&2AiS2lSszFmiyxY8|axv#W-4Ffc_DR#; z!KPVs8{wxuTz)^3$K~X#E;NP+e5t_x_SL{i4!J^@7uVKBI#VnAQ*j1UHYMa}6u?=D z569xQK&3QO9D;e7Z|iYJj6pmCOPMkS8l%nDq}l0R{nRLFd#b;*+$fgD7bq3n6~`xS zvHBi^q++N*ThqT08O_-tPrwj8%3rHf_~?|^4Q}e+@1p^4HVDQ@+Klt&Q}|`udB+I+ zfY(GpZQ3vb$__G>wxJEZ6|B)ieg`rY67on)wqoIx;LZDSkv9i`QK0cC9O|$Zid* zajo7LENInY4QP%au%!MfX(7^B9oNmZeEv0Ta^E>$Y7d~;CZnnjo@cw}9ikwPw5oeT z3Zw2`s4rV%5+x8XXIViDL>J(F7YDCl<*Z3 zE-g-nI4dAxMCvU3%~+ginVmXgouW4vQf=`Uf)vrdcDw)9pJuFr*ho@ zs+cWgkN|#(cZT;TIZ8Fq7jaDRvE$zh0g*vX`Gv5-P4)THbUi*yc#z_bE6`2d_D9p3 zL!DtZeWrw9^6-Ox{ml(sgE_sV^`f^%q$=~~x?2Cc`dSf|;I!2+m@A74{42i1p{NhG zM<&zIr#70Fs+Ha7l(TM|-CK&E5@uw{9|008i5NMh+F|YpbkLe-Bwb=ZMGe%c_wVEf z%v6Nwwz)0JOk2ND0RjMfGWmrgAWC`F*JnZ)G_wQ#cY4JiAeipP-@=8ZMNYN^#GSlI zCeXz*1eZNhAz&~+vD(wR6A7f+fYFSCY{d+@e!_a*yETGHE4PES;;@h?>+bRSc_Zhx z&W-e7;;X_;=k7TgHQAKYf+=s%7LjnOo(BCHhQtg{T2enQ5P#HKmO^CY6ue3A9XfJ= z%GCvgshwq>i0|=NT;M34P^C^A_Ymd(gq2|_IA~lfz;}2EH-k>>4hx{x(&89Bj#3k1 z!=p6Q(?IO;r>A37v-@evVn<3^8Cb-Ay}_sLIb~G|EXY0r)WI>-Lu5I0=OGBf=25G@ zQ+?3)W8$Q6@QWD;lGO6B{PHn;eE^I~X09 z^Q3072mi>pOazu0VMZBKxNoKsMu3yhkvPhH24ok-S;|cFx_rPFZJS*QsRmsDcU@+J zB&v4l4#!Jz@xYih27Qy}<1P zg~5Itrg9D@XXZCogP-^Abzc>}rQ2)f6un_lul%o)NSnJ;pBOn;JAD{qIzT4=l5R)d+6LJ-DuXh$l z%(AM#Nk8QE=vmZdSPLC_K7~E0BINV|jWjE&S98BLgQj-FW}2J8b@HL_txw%?TJNr( zihHMb_2|jMIz4?F{$2G~oSw-(-mae8mIq6zUXEz#uu-Q zTFvBUX?}eWP{l5qCwJ&XHrE)7&O9@EGwO4!{|#|7Jwn|4*RfOo3AdqQGx$F+b1v;|+bN19afT#-_?->Vc>`BtKOE4rSd$7b@Ngf`6jX8I&YXQ=D*wn`67tN>A zK&o%!3kk3p)4+%lCm?m|cIjZdH8JfsUE9B@D4(P8txvmxc)hDU9E*yF(; zw0R#uAu*S$Y(9dVDyz>zEwNFNpJ(^m=cfG(XnnsV^ELc1EEt_YtrOo45UHZXwEgPb zq{X;ERf7MnY45}GLn1A497$45zX%T$PS(1Vn6e=9W~}puK`L!?(*Cv$rYC;PFMPSj zKo)BFTd(w)lXkhlo~#~U*C@h59l~-?U>;D>2fP90R~OKd^zFyEh-&;G-gk9_@@1j1 z{j=`=VfcyTqoC;JDXDQ*0a7;YYh*G3Kf-56W6=v*UD@RDHTCe)d><`tj0rE!4Dw!O z%WAJUvV>Te8XyFps`GezvdL|AW5JEUZTwq7=&9>R;GNN}u(oBr|HZlgor)1uZ$g|9 zq-2BQTJVgHsD|}D4b?MOaSX}LXK%@YbQ)`8?S$%Fi42QYbu+x1`rqQ#%j?C-$8-wV zWhL<|kfLobMItP=9A@*3P3MnswZN`7PA63%o7w*^ z9eyf4j?}n6m~Oi8qQM7Hj^foKdyYAHP}@ttXqalV&*&@DBXSOVNqU~_% zr2SHKW@QyrK6T(Z3=UG4&VGewuSfsEwXGq128Ya)##gAYe*_6d`7i&cycE2ix%wD# zU-rcwqGn)h=K-JYSgL-WiNEiVhIFFq6myzM*fI4;q^&ZKo}{CCi9=l@36x@1SmrpO zo8S90hUHN1hZ`vHXGCHl(b2~BXu`TZ{iK%*{q!_0uJY1GKt%B}#%CPQOb>82fluk_ zN{ZA|Ev#*wj|=}SPkAuC_-vr#meZit zaPz1tj&EvME<(3Oc#N*P97$=)z8%{1hGh!JXn^g~QgXoY_AV(O-?|&WC40ah#0sYS zL!%Y~aG2r&55>@6E8=GhbvOa9OqfRdruat;CsRu*NGd7;JVj{x;jNqDR1QfkQji@g zr<)JL&;`6*FaTFHf`t=tBQJk)zAzhfd-~@~ad)GzI=ceQx-Yxb!=D!m?a8!|m9y4y z(eElx=CVyQ`pKNDM&xCBH7D z;0{#NYQ8E9whEWQuqdAWNB6N>+7K%K?Z8QFcMpb>ecKMKwhZ!=9@cMmX82HIJTX+!ByaZ<^_wW__0~Il*o%D}3n6%|GU@oZtdm zG+I@oDE;DSygb>*gIl5fnrl*z1!YuKG%X8f?c9L=R@97lJhBcIfgS}uFE0WJgR}McXp@{-RNllz)FOsgYC_}~0 zr7`vMrW%-m;>0Nmr|B-GM*1Va-7BLX$HO*3hRkn1D0;tYfVk1H$a=QpQgjN;6y+gm zP3fj;LmvTE#syK6zj{(7e9as6&eM#{^5h**#KB^b6U&p;+m~N>*@2!>Wv5J79Np1mavA=xF*DierDsWu+v!Y8vWoy~p` z_58?u5oDU%_8;+$2w%~ul#$3VCGiqC1s!sEFLWg+eLAI7o%}QIa&i*0D&9P@WzIaY zy+p~%AWeeuwJC4#e9>9dBqlTc&?MvXizNHi-qpUZZx0WR&%#7uMWI52k#o#;;{=oB zGc_Z9rQUBAqUZ1rM-vxS59Ox%($se(WK<5Mbh0t*@03Mba`dRWNJ?V46l-$ud>8wc zUbtlD%a5bR$OhYOvHR+0JeJH%Ud?^w3Y^K%^T+aT>MP-etWc!ps9~!R&X_~j5alRz z<37+7o)NI7Ta{`==!mU`Nn)|HG`L0r-2;1$-v6@HmkzQ9(#O^dMC)-nlC28e&t0&p zvbO#i_T9CYM8o@(h$ahU+ofbpH;lh#hlA@|3VQ~4is9BIVubTCrL1&#D(SGh)uvZt zcUx$|?N97|uqISqt%hBGzLRB^QUS-h%sQOHPJha>nm8D6Sk=D?QZfO6O~B>kcp>@!v=*qc?ASYWIWUP*Yh@G=W!J{^+mUw`>ZPwoK*D< zkQDq%01?g~u_t!=c_sp1kKUN7C#Bk`g=&#qEBCBcr5T%s5Ti1D&^VDO?CU}2tDj&o zysw0;tTQZy$`Ox#^_xxz`CDEj@m0Cj>nUO2a5mROZW$}Fs&y=?sISWOW1u=`@+_g55p{R3Y;AO{0-HC0XuPTUh3A@R~1B3 zb^x;;OmFXdYEj7`8n%U~yB%br19WoOBJ4L7tPwzR5bs1;XCW3L`M?X1r-$j_Rk&z9 zx@1c`Lqf!%3WOk5uKn;eg?Z|k>*E^-1+`~B@vp6G_=2?L)0JRx7cRC*Ddgeum`-+D zJPmdw0Ce{m>4)!yRlfB_esh>=7q2P^3J`bPaTmP1&jNxeB{05}(3wXp8p;x`S?Vk@ z|C^>!7-mwPMishnx9@0DUMAF=YKgQNvv(s&c5P4aD?vxAxjadnW0j%kfRTZ*4Quk3 z-ym3HlXE&h^k|i01==ED6_|ZFKYNM)%tE`Ad4tX7Xby7ylK`T0!%fv#30V*3$ zCQ1n{pcLVg8h>L=G>rSy2t7er2`VPg3Ng*oQ|v2arCv-EG>u*s>Kd;uBiJ$r+2FRw z0A)j1wHIZGPIo81h^PWIfKXO1tN!g9wGY;D&Q$-PlwdT7;d3Eyd1t8}iDRb+|&J%F$O)4Y)(xljej!$q}W%#gv!(kSKIR+ z!k=ml<-sG5h)t4aOh?VP(>mc4%XB z477`E)m>l>D&exzIPv_en?Fbas4R~LFFOaS!#&mQe4Pj#h)UNUF800$yA$XV&x43F zg#)r%R_8>QQ0325r0XVkMRrJ&8i=$Bwi+NFveqM?^iBUkDhFAAsnE9c=ovZM+0$U2 z4Av{_`&2`%b{JTRCg%VcxPxN>L%-(fx5HgMe(3l&0G~h zSxNP|h91_GS6Dqk%(>v3Imcicus zcQN@MUd>+o@EAf=zq$3ipa7)Tshi^Ozb?#gUsU#&HXWLCe(EC>AnkPP+)I{xIO1gV z-A(>Nf}N=(K+C=`$zMDv?C!T^G>=R;`QhP)ld zo*#XZj>MthKl1G`UFEx42D+QQx#3YoYI8`s3o-d6?t^Y8Y*}5MdaXa5JBObt(2z|_ zcCWt}(sh)##u+Tz4TnV+|?qzS|>g0}&=;%?0BktSx4{exy$D3W;6d!PL8jpIfVopF5N_+tr7% zm>Nzi_|WfR(4&hh>w3tO(At4y6Rx%G14Ucipb$)VczS{q=)teNZK=8@5>FA}x=PI$ zz35M<^8b|O!RKYUjEc~Tk_89<4a>@DW8YB^)p=xW5^Zs4CtlH=reaEw38hB*J!7|w zFLY-IDfRH~SYP~h$GCWe7D9Ro;oSZ(XQBizS)4r79VpwiGn_-#yol*`q|2zMVf+rx z(!zy%Og8Q#%!xW0I49l(F-Q9)fe&JanwLLdgVLi81euZFF&90J&{RCPs;>nv{AF64 z6J)-@akXA5V+KG=ADp|dk3I`&wI^sTe(Jc)cro<&QCSDJ5BdHt-GQ`tB#u~hVwL0f z!2czUwGn+>pBgz;jBgBFHyvD_?fLCz!N7Hyy^4+BihbKO8h)lW!s#VEWh$s5Ugg?P zum=uIzXHDPn^mOoTp@5uLK$wp22H>g)jN25QKpH$!H&SXu6#r#f}(2RvbJJ(rM;{G zRr)r%VH&p8ZRP>7@T1s2`$tcv*+JZwRDfASoHIe`0};}BQcsn>^R3fl7^lJ^4oHR;ul^!3jfd7YiUhISfU()Q0WJ z$8EdI&lNJ?m5}WgVQ1CW)Cm1<&?;|jaYrah0f^MLuqC0DK3f28$);vAaq#SY60Y zPUK7oT&eXXtr^XSKNqwzhw0a{b4EXU5EvuFWW3NWrxg_WdLJiF>oY&*Bbr1dtwjhp z-*>X6$@%E5<|X5KDgVg7!=cC@;%e2B9X=f#bEJAi+R^4j-c6ILu~2`7L*0=N?L>Qz z9CG`|G!j(;00I<2nX3dR$G zlcUYf0#xg3dG5kL88|f06M^OAJj(VzV@F7_Uke8FRA zE;>0mIX4sW&Y@WHH0&zMdq45XYDY$MhPtHP7cr;kLUDj=Q86r3z5(?V?nL>t7htxX z_K<4PpQ7YdlARWROO54;3yEwwDQ*-i=>R}>B$P_75wNLKM zrq(+9&erVmB4TQ$K4~o|HIJQLVHeps=YfVQsFUbfW4MODk0(-SLg~^R#I5f%Ww?u~ zB_x&JhwoR-Dj1D1_*miGlwC%9hm;2^d=2FkN97I1L1o%&v7rOGvl=#0x3$+sIIhby z-UnQd??_Dx;YmI0rk)`!rZiosXY5_pzv(tZqi6f*2w?gmd>t+d$Jl3x@pJ;#QbiS6 zOZMQbuepL)iXFse>HKw2gKQQ}N+s^}w5mR6Pbc%6XcwhxF)!-|Hje!0hwq8joB4sn z(sGGJ4Y+!Z96hBd=^LNTK`Z}HP@U`#InK`ZUip&k7-X#6Jy&do= z+rpR_r}J^UT59wGG31o(4#Rgulv8bcAXT?hZi4y|`^?t2h#}HEs85kdrxt`oj5Xgh zMrvb=;?owNJh-s**XPfgBnA4X{l2&OAHoLppdnATg2twN{|7%~?jV?X${pip_5`0f z@SA|9(JU+`SN-piG0yWc@E1Wqd!q6s4ygD)Blo0HWVr`HvdYQZc$KOTPqsuin-5$- zl?Le^MgdQP0dwc2?r=K15}q!VJ-eCi+B28p_PsEd9Px%(Dk?2+-;m zK?{Y7F^L~5Mxs7+`^G;-eDyBUQL2s5PI%N?O?n0cPO;EdTFnMs#0rY10xByQ1mm=6 z_R(x9ZVJm!yjy+3S8?%E6(mq0Rra-y^3H0xAEIT*n`k{`g28@j&1ZwDuLOUY5LHQy zh3f7&Seo#yAUfrCxxpwIZ!XP0KcPil5IySr*34rZX}KEoK$YlXTnDF&gp}DQPu6t@ zK|=+9-|(BHcuF&5FBFYkw(t5@5+>y^GMU(_ppuNzWTG<;vbqywOG-_F4Ia$>K!+q_(gT8mRAD>PYMujt=KK@$2wRQ2%9JuT{RO;&0uaJPLC z?6O`OZ-cC>zO%Y|)T`UwejU1Yv*8;uw0>t!mLaOq*+x_gBH`l?9)zE&@th!tp)ISY z0Za?NCA1bDPm{;S#mX6N&m?MaG((NLMNFIynugCzu}G~TUHE8J3dAsxp8pkXsL!0# z0xxkYTo{BWDXW`nmAvQ3OA|rQBZf7RJqPK@Q*daK(bwRP(7!{&WECSW+td%AHr1h% z*5rqi(YN`>+3HtSz-y<% z>2K~jQ4TLSc}(Z)a7zaaH&m-{U6W%_hJ);9zbO7N@i`Qe78m_pYEbaoIeA9iYvWl; z@*31icp(l5`4>Jd(L0dShB`{tw-tvG-sz~PR1ywurw$(HvHqduy(2iEn3pgC`J7+W zii{45+9FAC?kO>eoV<$4va#(sr z=tb^rC>mmF;7LRKP`NgQPHuyJ2{}&fI|RRWav^HdZ1^3&?4RIbDY2;hiOcuFB*{w_ z=~*@z^P)W68m+>aXGe_)tMW#@?N&3)vvG&e-qY>XUlvdqlKR#wye9|wcO`ZX()0TP z;fy^%1z-wL;?!ujl@o#8J$J7+Srm?38f3Vudr1J-cI)xWq+`;|a0Aq>T~n?G(+Yym zwu5euEZaPOtg=0x*>WULDNzYRfFV`y$edx%j_R9yrP4TV{w(2vf$t#jO)DjeB!FcB z)!$1=xE8eB&R_A1T!s8jl*z=SfDZ^q8ay|du+S^A_Li6+c>jGaCD6e`Bt%A>Y|4Sn z_2b{SL2Kh(hACIq=Z9zFP#+&KbW9K)C_4y3E$D=>3n;#raMHyf6jjcSWy+qHw3|Yt zf`h8ckl_ZA`@N0E#IZDK#HgD=T9H2|$l%&2Lq`P*BmMb}EnKOUMF!lII|K8$v1;l!;cw$h<8hGU^~%YM1?|K*us6F$)84~6}h=C8>lp`OF4lT zT6<`i%=}59l2J6A4Aj2EGt=K;)x9Qi%19lE?DN*iwfPzL2*I%3r*ubH8uo-+q3(7j zk+AktVH*|^qLg&!#mDUQtR`8CU9M_RLzy5Ot_{UrdF?~wlq?kd>2C}FGxF_*XxjA- zm1iInR)ecV*cseWc!1J6%oRwIYsIf%O=ymc0bAg6Qq` z$2y4>UP#MylUn>qK6$22`&A7T)-^>DuS`3t02k-Q#tK?!dPaOLLie047aE*!CzvW4 zd-3UL*J%DLvL4Mv@nwkT68h4S5e z{Q5u{T^MThyJ~Z#Deju1&t|a|U)o;Kc(cFCSd(t*8vx+FCousOMb2MOrnJnqjf!yw zDy$x@(AMo;|Ei*Z^O*AlP7O7YrHQwOEowCihq5c-Pve+k6J;))L9!o}s58nTt61hh zf!*NLPd{=Sfc@#t?x#@==)LX##up&P1O&iyKJ`%f2|DS%ToK?0x_dy8LTQGKzUG}3 zQM}zGP*L+*-&Zs)b6bw)zb`|Ofqn|uyL-V%2b%}8k~CWntq?C0?Zeyw?MyT9Im!J< ztW8A#R)vN2nM-n3I54L6!pBjsY%F&pQ>-m>PERWKsJx<&p=%DTU1xts-kmo8-RIFB zEta2X6$xJ6Wlcg8Las`;<}k|JTS3z5@^GDh6)r9>zxL-xn?BMg-wn>?C{^kv!q(!1 zMq2dcKg5kT4-8Zw-$EUB&&3OKr+-jFBz}9{empgI{;@68d3xk>uq{3>Nk6O^Yt}14 zj`uX+3s2GV&E zeVV$sJM5jPYE#!$%EjGjYH(s-vN0}=8ep+m0Gb18jT=NIF?txSKPDm_T{bte{q^cS zH=W;>%oy+L`^e6LyOn$*q+t9cG1v{^gNO8}MQi^W(MzZQ%=g~uFp}(blz^)91*EQs z`ziBAf|U?~LrVuiA&{=Lj|$iXL|lJftb(}e;d~u91cqLD!Y%{hEvg<*75%q4A(bSS zzXfIG7kyCnI;`-h^q49joJIF=`1Bxxu8?r6=q%0%39?)Hhi*rlDE4&@V!-C_vCE-&eS;vthoHB|)4H`S_GDckOgtxYuA7*{zjZo#|$=Kpx#Q!8@FU-cFE{&L?5!4QT zMLarvCm_kxeS%7H%dhW~9(J-_w8)AN+ztK9aHi@KCJo-ea->26!aYsH}b;*G4Xe#V+tOhL%*}H z8!mrwp-{FPU(<5u;cD2O(VmFig&`&sCxIpmK#1;ndqYRG=ks}#U~$Ikb|!a8yXYEV za{zCsV74@uFn7)@hCB$9qc&?iW=TuXb>j!u;=g64Y?Jm+{NF7UC+3&9kv^$$skq(OY}FHmrpb46^zinLrNxjRtSY z!n$8~p^>qsR83y~$q7mgqCqg%9$i@;&XsnOBM_852)pENagpGyeN6(GS9SfY!tadz z3n9bHFK7n!q{Yoz^Ta{avE>Fax-|65c=>imQ8TRqTWA#Wr7+Tn37z?B73xHL^3lqA8Jt z4gpVlk-n6$&khblBKb#^IJl1fNaLiO8n&#BGy!UVK*XC%kDk(cSIT`v{jD88X+kNx6lFOMooNnhZJ&aSY9n zeEayH-1^H$My5o={yYvw4l>yS@2ZR@AFfn>tD5n5$u4Nm%;hww6o67t=Nt`nHa1kI z+2)Q*RTDgY1bU(zHLj~jzcgT2*FgUvtAJHNNI*$4RDMMng6aewINHoM59;N>?&Ur$n8c1(%6Z6GEjo96+nm4fjKsLJ+43Rm`!%Qcm71_Gqf`U01G5u?ZU;{EpL?`_!zUfH83-3LXp|)76PUr9 zY$)|HT28xx43)k|5Dz~sdxp}M>XFu2t5%~W3!Mt0N8v?LWC}ynZ0ll-670BJQ%{?c zJBj)y=TDO})J@!*VJR`}y&?TS9V5Lz5;opBDV{NC+Hjw69jQkiHp7B{l_hA4;Nz$j zvYdP^R+3`?GF<$FdqxITI&Q>W00~CZFt<23oIeqgz`^VfbYXY;^rwL%5)jK@awtnR z-}oj!4wc@zBdPvl$+OAdMc6ZQIlC}V^C4*^u4?$!a+JvH42==a)@+A+&$jM`>(jNx z_3N4qj5=V^5=6oY?jz!lkOmBa-h#DqMgBpVQlonO6oaaF=wOzQL&oF|azzm8=G+%= z8LLaqnbUN#2>qUPEHAcZ^M>%0J}_F6$CreO0E_#VYV}$AH9R(?e4;-=3prH*C^N*b zT}}QC?c|fkPcc)Bz764DLYOw?^0(ROoc-o|>Eh4z%2#BxRxKra$8_s-y*Z1JWwp~Z zjM`IoPv%KFDr4fpKSv{g$JpeqC?1_cfsCs06Eya)II%ADJa}tiB?i-XabL_8w#YQB z7cx`H50?_Gmaae_uRHLqzRsgQvJ`cr4L+nCG*uOB--BK$Ni}6t*VOcbYBHAUHMwOy z(`EOX=d%%RnP$FKq%IS3GSIUqjlz`C;P*U`L`;Ev1T03p3R!+a`)A+b^=Yzoqj~%- zIrB;K`0DKKG0c|2d%U;N$L8J)S|?%;46PI`)wv|O18fFpQ#CMbn#cq=j^U2&eUzyi zQ6HnEk@5Zt1;ly;_GiD~KrF3xqMl5W`S$Cv(s5?6lRu;&x@$HeQP(k=87Gzy^Xx3$ zZ(1+83|x#~TqP7A%fzHhu2Zpi!Ykn=tJlKhd#xb<+Q3%!y#y zU2+Zlq%<`$_D5kZ`rPm18Ng;uZ4faQVlcX<%M=IepyAOELj?T8^JVqHU;`K4n@X;9mW;TJxQ2^DoKghQ9k zbcH(I=(LsAccd#QINNOnl8?ecu(b1XO_XvQiD;V09% z!sNfAT-v42<@a{y!qTUWMw6B5jc%h}+69{uhfbC4t|vm(?N-|}(=7e?P<|^nHeqMk z{=D6FZ6I7ZPndMh59)R{_%q}ye$e}Nd$Zl!Ibh6^;3;jry|ul05a(EZ+1}WSlb${t zG&|+D&wRg@0d9M z^mC$o`Meu2IK%yHsoB~1-ijn=D=b_{oDbia69vdnW3}P{sa^e^r$m9m=`*n8GyQW#E41G%3ut4Hu&?4&O zt5kU*UGZZPdO!lJF&{!fUZJfZW<2y6$AFVLxpGvZED)i}i|aNMhp(T{f*c1XLjCTS z4UWVnXB@O{ALP0N6g3=r3Usq6m}vA1Q&SYQ^_ow2S6U>1)!r!a!ZP?9Q-9yh$nyHO z!y95YPLnEQ4kl~bMLk0|*b@^It}KDN*W4JuOabFtU=xNmkJqvvG8@7Oi zLQu2g;J#GV@z;^O(;=C#Q>K!ccE9Grwxj6C*nmi$AXl~BF(G_V_Tawx-vN~E>EGl% zRN&M^AOVDR&dLBVSmP+vMOK$rB(&@`gaSgLHr+++J1%WE)|lClS0rwExW+q9y7toi z(DJr5XJ)vxw1Z6HAe8D=O4(1cKp@9>;xsUkxT4>U$Vtu7sAIT9{tZHLBnqf$Oz9O8 z^q2x{mVH$U#k|b#jK4t5FAk5Hb2Ua8ZJa4qn(c0bMt%Qo~o-?z4?v=>$t5tfZK-h z<9694={wW$F{guplJaf#M%;a(#MhFLkPrCzO2?~juasiqY@BSN&N+se5l2SZ13^s~ zcX;)QBe#)c@N7|o^)v^yRflfrec`=btsa?@0>zW;#j7=Y$>EKICc`!UQb4ieGr3PJ zs3%t5Gqq$sSGlMI^6Pz@7GI{HiodCt>`x2KJqn;4{5^lnyY_A|gR%+BpNEx){&GdM z$|!3$GhD@#oNom+1eEe>caU2|u8iteBMxb)r0@Im-XJ-Ucer@k?uuD`Z?C}svU2`d5;wW;lR3k4->e!Rijb?WtJ zT)mn}!dL6$`>C+8adQ(*Y2cl$0|YQ@r|)Jwi!(O{MwY^5qU=KW8Yc)RFXopXhZpu* zloqlkLw#oPs5+(aep0gecUf%;%P7a~? z_ZJJrq)nGAuPBk5MmL76j!UyllvdM}fm14&*?tSnNl!TqhKoo>_Kh!KTX7`806`S% z!nY1yTbV{FsOocZr^p*yEJjfzb@P*N^W)c)>Qy7b_x!CWz@){@rmLN`QnQQos`p2m^VtfyJU8d-aw_toHwWf4>?Ru!*bEN# zweI5GGs~~|%~(P)nn4q#t#e~&_3=$K3C$*9GlDXCe=01PvZD3%5pNT$VcEcQhu{5F zUNVjlj$Qh%-`-NLNg43IK#`Fd+L>9aGu*bzr31*{EGulW%8ZAXsX3ssVnmW#4JIGT z%fjE%#M=iD-r zq6IiC0QyfJ`>8nL=T~Z}+3e*dw2G$V7*(L-qqLety-*+QAh!@@sDs{R8eus$sMu+p zsP;q!NBUzZQf5l;fmJEy_s)k}t0wz)YqFIHGFd7o1v2uZaS%JbcH^rtQw^)AiYlsC zb~=huEh2JjotD$L1A6Y96x2?sGY$E7X{0Yv_ppq7^5RGMu3`jUQV5=1zPyd~9Z7>0 zW1f*(1srpc*L$yo8)~|Hx?Ikp@hT647$@3TDR*TN84}_`QCjUe`-{=1I*!R+Farnm zpBzz(@oANM1@B8HXyUGvzN{}@IHk_3GCe7UI{5GilXo9Mw#AqpERGTr;8UJVrg7a# zwh<%WurU_0@`|JIX*lOK+=y_Pb%|LaX&x%?Tmis2M98G>X}pr^h2N&&pDCT`jKUp4 zJ%Kd3qBuFbqg_+UKX*)<<)mF~DyW;N?9)!8T9#SX-3;+{7h`#8DcYZ(122H609+L- zz>hB5i}G`#XI>3}Fad6DX|=7OE7J%JCdQPLFMl+3C4XEPBcUhgYscT~FU*~ASwcqR z94M6X5r!ZePxWatj8Op%XM2{sEhY+u3a;xVmUC1Z5XlH~Br7=e(m~WeF=Sm?94hU5 znGJ$VY>}v`-kppT0UMIfYY>h35{Hz+9vjOd35dw^k@SKP22o-9nEujdwUgv-TtNBZ zS+8^^t3V=ep9O`cUAj&Rvz@$+yWm7ivpC|T7Ctj|DeI&RAeBn(gs{OnneWAY5XJ#d zH5r*_tl>fyjg>GU4G7Gn_>BWm#9MxPN zl|X2+z4HAr7V4Fz+D%62mlW|sJ$$qig8@Z3t_oDMe}fM0tI=Qr7DId;6_~pOJW)pL zF8o(S5FTx#^Fm%MOp|SNNR}SgkMc{}jZri+OcK;mh#}0Dr-E~WBI_x9lpd2Wk3Mk; z9I6j1<`e+I4sGi|^J}3&U5{dGw!7+yG$=m-JfwT*baedfFqr3d{HjtmQLia25%{l* zebu;*#@++XX@P6o@n4if507ij;gYNNkT9 zz4P+SdyCO2Td;$LiJ!z>Lk%ZMW4ztC750lRrtLt4akj>b>1Ih)4qu*pindDQeXI=V$!do8zNDDZ@UQ*0egoF$Ns^N9OH(?b-2>7o6rER*x>K%y# zHKWwJFgK11C_JP`4X!8y+mrX`_gm$8_6cojeKZhov|-;NT70<8RdKDI#Eg)LSlHm< zU1AakKLbAim#sZ)MY|;w5?HJfdk6$Ec1w;21biY3Vvh8nO>Tt0)Vjec$Cv!SUK6eE zg1&s~wizd?SWm;`#LPxi8D(V^22Q+>KG_c4KvHNPS#-td9JMscaG+7KoXWJjh>OH9 z*RI@^mEhmHi7L7l$I-Xng%$&fn70=|*$rfMwelkVzK<>leHH97D?z25qbfrR{Cj`_ zuUKv-;V-6u04PK;Q8$mFxgmJ@A%WYKo7)PW6WZ^&SivlY43oVXi_C+Cqt|{ehTBL6 zmwTrB%Iq!E>bJTix`{)nwEo2cvTC^ro0ZP?Y*j-Np6e{5iE$3%$mA^TQ4b!>?jMhb zV0mlj$5yCvB4e7*G$2<_Md+CPe)%RRS-n84_Gp`)P61*fNfWvy;3r1%f+N=3oP~*8 z$mSl-eEM--<8f#}vJ};P`sBDYzlnT%lhfQ-Y(a&EidlX?3wKvTB(Rl)KU|NhiE>X; z4T5Bfcf3GtKM4nKU;p+aSg&NDyYH-L_C*yh^G55m6qXys%7Zmrm|LwfUYV{+-wd`u zSu^bqph4OdJEydp3ee@CP14!9r+lFlQI*{cYJ3O9mfb_AK_O16C|wmoE^q~6M&HHq zD@q9^C?3mr7`o_WwcvB9%UkGzaNC7kQWox%6(oVWwRdE?zz^ zUS021w9W=RpL>qF?r*7_`Q0TQ;OzL%6#!@*Pf6V}DIHVvZ1f3T zuOrWtHN=a7RRHH966B`i>yG;;V6`EdA~AqCQAaQSJ(Tu9&3bDIy%|hy7P}MKMRbFF zu6j4fMm?Qf)V^kRZSI`_a-rMWPM=skM`iK=Whk(q+-_=5b_x!$r(Ab$juMz~n-9s-CYRv|-3h8q`UZE<5BB;HuD;aqv&M0?az0)>>YAVbNkxPbi4 zN!h2ee4r7&woJ_AF^Bc=)>}FD!;ADexGsMqsOJET|MgD_K2$AG^?LlN;f$q-g+dV!;c(3mhkn_rSX!kOXJOfJgnQ%nGko%EtFUM zhlf|^vWV=krXdzW0cSS!+$h^`9c{FIZ_5!Z*V*)O3+Z6wkZNqLJtK=fuw9hkM|Nbhl@v^EME#B6Ig`a0dk=go}}0! zQ8y3%uNV*s+Vgd-k|&KmsnNud1n?iPGSsU09leGNA#M2upo3Ic6M*A|tPHPpz6|ZF7aZ-jcaicn1m1z1MjcRC9}Pabt6TckXl_kiA}RuoN3n&RE3GYx^(;Q_ zSR&#N*B$TNS4AyYvSHG2@PGs@RwX3oi3OZtp#aUhJ_+(sNWo3C*!dTW&Ma(RLsu-R zvVN4BqX|4f`V_+n*X5IV+$6hi&!27C4x_*AL`9&-V*2Tl-d!;|hjKH1)t^ic0rX<5 zN*V=u?y++0!?0v2BOn>yiX-tMbj6)zA4(bY#Q9U42T~deEAV)@AHqq%n5Bl~#-~7J zA$UeI64#^mLR!M%oy41@o;JYFZK;+Cxg-H+v9xwywOyZ2lwx~4!x*2tZ)(slP`_41 z*OTCU@?GUvl+Zy5+2m%VxVCQ zTcU$gWZoN5J1#wtx#GGKX3C^Vyg2dms{W1^TH!oZ>o(k%>?_^nIY{$V>K zK&-2{7nn5daZeq9<{4J_D)v&(ka~yke#F0gn z2=cw+(%C+FMGjL}iLv!pWi~buZzgGCm+lo$>FN+tk|9nwCE0BLK_8A@C+4HgG*POyr~`u)iLWYbJ3p+eDOP7mB``{evv4tjXK6NW`F&1lpI-OZkmVD|*O38G zMFM|zLH#N!<-{JTy7)LC2v;Y8gdZmGN$+ z8p_dwcXxpXIk#`Mu3!2=mM$AoJo8%!3#7QN5en*Jl;{MmTD-!?WD(Wp`g-x7Br$}8 z6VM@=rF6Ue((e5SNzB8x{ImtnN!?>;hJ)$k|A?XaZzG+C7xMoZMRQ|&2cXNr5=ara zRv6bL<`v^bcF!$+*@Z%^$lP~j=q#Td^{j&%Fo|6CqP;nAy@tbNVBuOx%BwM#=&&E1Iu#&bWa(y^a+ zu>yDm#!tS2OHbzhI{uLzP(fcPtBR#E3&~+#K9j2L@+TO*?>gbWutM&PQe8|E2m2fe z)yv;fWdV_Tg3JuSLQ2BJKD*K0{T}pYSz?qh_mFUZ#rHzrQgjNl=h1V-OWOCssPI)P zOg?DR@@pD7+DW0-G1(uIC!YmlCR}osedLJ@^pWCo81IVeL?FV<1k_;K%4AM*GkoO1 z{;@&%4*p8)h$(-|Bm7F`2}@e@VE)J>((1!`{lj;8gn;C|1GsD{hyhiJ2h~+lwEL6d z(Dp-%dKO*-!N1x?-!@To8)P^~$I)Vrjro^!f{btrY27{eH~dM_r;)6FT^yyd{V?ck zXG^)T>y1(>SiKlLz~ZDbMD$F6j%g|wNl#MH)2H%k)H_tN334d+v6w)(d8l%JG*+8w z+in}Ri1Pa&{HED(nasu@mY)CySZFg{>f3qG#p4==pWrDNOyWE`K48PV4>t{l*-+_7 z2k+FcV`l9e@KrA&!$X&G0dt|2JJ1pXl$t!PjC<0v2#2|?M<4CF@tbf|&gL)kXY|l< z2}uvOwSOhuqecu?dp)7NnrTAief%ACN;O@ruj!xKTscMqQ`@@=)Hrq^ zE;ZQ|;;TKuYo}*Z(Jl4h*K+XniKvDodF72jeXJdjJDh<{(olmrer@QFDGq79^euIG z0r@I}mJv?4W+)URCqMy+tjuW_2ti2L^8-GiP(t0(iIjsClyBCGhQgDFe!YG*U+U0OlJD_!w$5fU;F+l1Xn~0}B zcse1LxUf}gZ(fh992Qs`zJSt_% z8YA?Gh68g_^fk_8`u;(zb{aY~C`h-+Nn9j_b_p}+0*(L%aHwb7Q7uGdTRt1bcob1V zDA7C8LoV1lrNqo^7VYK}Jx>44=j~O=aY3dw!tg@s@%=Ua*%S^PMGYPV2^yhl`~S^H}- zvJ3BaOP@9Xt@`ArUi!fg>SAErc{_eRr@RnzuAjrUE1@FxPH;)k-X6~WeylEtcKp~^ zboy%X)oc^3APs%3FenPViuk)O%jpPRd&=(o6BSgGTngXYv>T&PW)wh09OSJ!2isjX zrITx~%(JPrM8xVYlR*2qN1KrpK)l>#dRFBa%gyLnL9o?wO=~fvfKtq76C?Zbmp8P@ zKF*D}08V#4Jjd12nzMn#HY51%svD+28@pb2QtIGqcwT4tvB~*}+RVYySJi=pUTa@4 z+Ezy#2i1}!URIVAj%Zij8G#2m?Ig)(vv(3_UUV^1Z%j-b8mTx=RkG?vu=M$tBwPrf z5W{POpySO~TF%#lNE$;}`OYmB@5(Fk8eC|VQ`NL5ULcYa=}Ea-ZS>hvLqql22nbk8 z66wUveQ7XMZ>e^O#^0G`TZQ?R>%XHKBAKn`1*G?7`1Oz)ke71ey-Ju|IHz2lG2oxu zpCrltomj$lt{pS%*&b|h^`c}56(EiL0go;L{N)rOc)JfQs3~? zq_=OR<+#fnEUpsaA8(DaaG9CIa02GqL=b1SsX|i6dg+*Br}ILokvjjm?|c(!=wJu> z*&OX)<&jQp@H`lgs#IoRB8fI5YpRx>kX?&{;b8_rbw{0sqnt0ZqCT_95|@z}q#sph z>z__H`%(qOguWTEilKNx;{zyRpyLV?)GAfgj1Uo+c&3|Ga!Mvq1V+|o7S^*nsuty{ zuvw?a%#;uJX(zJ+{d zTZfumli!{e+uB1{RJ5mY(4g-CrJYckF??`x+JRGfeSBZuNfD5_JWzj)aFKPrArxY7DAaXS#yN$cR*Q_9@+dWZ8qyQc2$>OP_qh-X|N z9?vhzB{1C|TG)ruONug{_zJ|uQ&!;~vrd`s@TbZ4f%ZJRA`w^xyAkMOq#6Vu3h>GY zvN(_DiydbSAzCD%EtQ7{=a<&X8QDZ4i2Rar&&hOt@9?;ON{rCLe3&NVhZh%r=B7A- z?y7IfFOg9ZwTG$8<1?AXtHH)JiY@a^gufHq0ZKG0{VmTcK?Q+>=a)nAxXZ@Do0{rc z^*fC7Dsx`{Qk<$aPhW?gj)L(8OI z>L}18D7XVe?-DjDm)a}^56&l4LpChc^an~mr>>)pNWT~Y zg%(H6scF+Z7VZ4Pi{g`T4S>YvAX3nqJmVdd4C;Yi#V^IqD2!-CIj-xrrNob*^%;e- z(QjGRzTYCtjyXoF!%jLotnTWC!c#|~_-c7p$|W#PF=S{}tf)_z#r~K&c|@0`%LiG7 zOWupgvEHPAl3M;f4_~QM3ey72qJm1PYTzS|zeE*Q#RK7&k0#D^SO0_5Nq`yBT0yOy zzWjPLSTAqy1Sh==h+|%KEm7G(;t|?k(qQ38r_AA-)8)anPVlVO1~=m89Eu$a3NX|p zj(J_n`jD_9h|we_i6qa6-)%f)ASe2CY8|C?*7z}x?v}Xa#^_)m7wPWf`Sokyu%fF^ zJ1Sxn6B(T{{XylVD5TyEY9WympwzxRZA&)p%CX z8iYNHu@x^=$E7u|>rec4tvjb8CI}jv_W-hI3(G|035>PYVB=LSlsn;1A>=wY?Pbdv;OSLlK# z^S!}xw|aQ@g<~AvO#WS@nnGhnV^%KQY5JZ;D2MbP+^2Sp{FU!J{t7M1DPT0|}! zi;_&ryIH$VIxI^x0aC-=U^CbQ3FjaKehpM*QSN{xIBeAp*_FR(P_v@!vX4qV|J4PC zjax4GK3j2wo6kD>ceTJw`=mD5Le~r>dQ}D}VV}*^S{3416L++rf^DQws z`oqN$($vBwhZHdtG-_>}>hkt2iJ`n2l1kMT;u5@M>1xIZC}XkD$K?;XObu?+TE>kT z2b~}aww`G}kEoq4&6(GP93_n08(h;1L7yNGg^60>q#z#zo*+y&iP~UhCu|D3p7&BJ zZzz0cYH|n20oAf&LzRJTZIh{zL~=u3Ya>NxF`1o}1&0c{F3uSe;H$2SIs(Ew2`;%~ zDKe+!WK|CpfHL`d4tQNx&%cGu5m-(>K%n}2q*V@oSQS6v9Qa-0=8Y??)a{Go7G#oB zSS(hYBZgQiM$DQooTQZDa4l3^qfRT+m;G=#-j&WneC5`IA(ZeKg|Tx84^*`5Io8P6 zPd>EHR7RR3%%`)Di)Aq$xPL?U_OXzP_*jE#PjB$7r=r6F)pd|-o(<*@jLVGm)U57k zH3+fkc5Po%AUE<9e6iw}0~cen!veDF-Q0i(W5HfMT-QNkQWu$+4CELz;}5!vjKAPp z0bvcu#5&~BJ2f+$c=<3vpUOz*WZQ5e#l2t@%2?ZzOE2A4+BN;x6p|1CcXaiSA7Th4 z$3{JAUGv+*-S+($ddn`+peJorUu~qoO__*IimV@P31>lIrqf;Rqi}0ky}W~jX%M7@ zJB;jFhO*%kJ=)L$3{4X7r6A|aY`Byd4?aYv2)m)d1)*Reby<7W~hR${Z3Rfsv z-*V)-=&0f3i{ttZR6;p)GMPNvWDNI4$}i%2kB|XOz6&wG0sN{>)vOb(j-sd7(lu#2 zrUa`?K)Cd^KGVJLm@yW$CJe$nA{TVAc@z~I8BS@e3Oj85uLtgg{L3VMy{~J2GrCUF zo!Mu7+3fLEEmE;ah4MrJ**~VluFLMDtZ(lZm-0lLOTqtlkW1imTwZkxyYlXGfnn6% z`tgOupSg{LMUUClGXY||%x(ok^A**!@b~gZ?>Bt;cyS)(gesHuUU?r$ATTDP?_Sor z_-#8A-eUs!P!H>_zP>g0-!jc*`E`7KhUs#vC_Sl+-{IV0RY+fa7P(_0@gw*mrLjJo$fIT5 z4m}oMMhKjY=wkVE_@YXFos?|~90o;$W2_eTm7~3SY*|9v^a6i%=Zxl95cRfgS>9;q>{gL*@~572KAZLdQj41e!; zqC3Y;U`V2ngh)El3zeVcurDFU6SHn83a5Chvu}0SGiFQh?Es1=Yxo68x~`ste0uHG z8{uNnKxOIX<^=e#>&UEcCWfbWG!w(M2*QQ~}YOR2z>)y4Ap z)95~eKf?H}RcGq;K&O`LEle|wibC;HTpH@WnhBYC;A z(8iFb4>OGXHz~+t!|VV7C72Y^ZOaKc64gN5i4A{}pS_R{KMuz;9j2HLht-BscB% zjqPu{OYdQ^*(t?cb8e~n#!vRlLQ{U;-CinLDi74Gr}&t?w*AsSX7gM9L3kWJPNS*9 zK&Pz>OH0oU^7*z4v(BgUF!FRBUv(8GosC^%gm$%779U_k`of4%V%7T6Pp#;1c)Wl^ zTl{t20QCI?I} z;Ch;wg7ramm0vJru@hO1%!eW*CFZF&1h}Z|=utu!zKD95#Iox#E<&k5-l$-1eM$2O zt<>Z*@bS3+B-t>;dG)opHH+j|C_GY(_%-A9;)}2IY53*d9JaW_wE;_Frl@gKsWts^yWFcSRB4p|4SDwyeqgl?|5ReA0joAKEi*D-lyB0kU>cf zy^&w#?42Y1mRBA{FHFyxa>b1B9?r5VSd`wT$`%8MK9Y|}n|GswmyQU82pr$E4b*XHkUHC9ofkOePpS1anYoRquPK@)U(dRHlyOd^H z#KqGs+d0e`Dy0frv^u(sP**Z|9pkA%J|tQsV(8(3)Yiv{S)3ulL;bE`ypb~pPlSp{ zkZv~>7VGc6LWR8y=au0y0iPpena*%9@TO_|?A~%sX0d zzT>885TczlSHb#QNcNC*DcW+nU_{k2T)l@O3DD-nwRfNYgzjDP$Zaa^Q+dg4=DOX_ zXMJmG`pNefVKO{>GCu)ezDFC-?1y`q7ox=}M|*a~U&)Bs5BY+Npr-9CJ@Hn9q2)@H zhLp){ie5oJ5H6t$g!va@mImWTPi+1-1XaOVe>wXlLp#*C#qDEs$INIYrY#0=P#_5N z7;!CQxH@p2y*3E~_+2F@Bo-NyZGTH*+VaIYc^8~4uo1bT7Hg&C7n=B?USj)FcEm{8 zOSWr_8MiJ9N1dOwBVn#9cuc7JazR zKD%+(J_ltsUP7d)Z6w>oM56ohg^1&oRR~RK{Of2n-Y|Cbn@%K5ohtBJZ@oBeFxK>> zus=X8*`2X@epNMT+B30ZTR96{N6ibSZ-$HOw76lUs7UU`m|*}dP(gE4as;I=FHV- zr-eqQKH(e{O|T(+3%>XoNYd9Lh{oOv4vJ*#=(9j5n^skcsVv7xp|u)I*v%nrr0Yi( z$VcMZjdn;hm1-;qVUqrW!jSRo5mEus^#wIKyzsZHnQCbhLxC;pg!||NB`qj1P|N1+ zVL>i+zu48|$PA4Jw`iXW9?IW=X-?@PpNHqrxCD=8H1$Xq4^Ay=#H^l{l|#C$yJ%S^-G}11 zV`SB8NL!JJXOEcMq*v@(=akLPFRoS!I!SZ)536v2Y?Z{(tG6JvkSSGJSfDOzy_7E9 zWNJk$EoXq}H)XPZ=geo4U3^x}Z=xh}{zA@EM7=bji>|nuUh=nyY^4${4ShQygUAb{ z$uo8xY7q>$B+~&NsgO104k@gxQ$mwo{XUs%ZOjW%e|DP|-iwf)c`gy3KgO$|vtuzE zX4#AQ%Vedqw+oW=WSYbxXt8oRqnkbptFse3oSCqOk1(Q>@t`=05{q0yi+({KKVxS{$-03(58W)`;{B>eG_APT+I^e2Ag zO34?`%i{bQCvCsJP$IuaTbG&ihy^pQI;}o_*I`Ug{702K4FZiD`)Q&1K+1ytGOPlKv|e+Vz5wM4xMT$1k9IgO-deDVV26d; z$-sKNlyLJ3%(~-DVa-?{U`5>xqsta1KZKu@%`=ZL3~a-a1Xz-Moe>E!Sb#qTU z@@Dh-T$p>(b<-R-2loa7yxr7Q!* zcvU}t_$M{4NXWFF-rHkA=K4ID^H(x0x@|^pO-?8`%&2*@jWxQ^sWhi^zg%-pVo3g8 zup`xLRc|04rQl4dBKAq9fV<~=*_X?>T?abvV{NZnx6*`v)a34Ik2!9JBxm9Mk6RB| z=xE=P>2b138g{EDQ}R2m$~f^u2pHtR^>6z&`%%`Mbbq60%aqTmj!yhwz?I*Bk@_o7O+Nzm?Y=rV)J@m;Hk!^KIy~fXsMm>^y36Xc*1;x z7|Q*3^o*uh3BX{g-c;3{kmO|kQw`YxW+x|9I<;CcEx6pcba zNRefY0p4e>hS$>G=4#Wk4&lb^x4{ike9;p>lu2>=NqDa}_x7Z`&$DsTnEoCvhF}ry ztI)2>U1Ba?R4{DMw_i$KH6!7HQjLw;pXNf6;~GnE*jnQ`ag~GembBnGaV0B)Ew$sT z#ms38xDytjTRHD;7BAk&OclWqvCnr19~XRCs^o7E zq#4wg-tGXt`bf=As*8~?|7WvX2;*het zgSmxsC@ zdTLe0gRP!?)|ywf{7WPX+4@@FWwHGx?vK+O z3_S0BrGUpdEI!Ar6pG$t0)(8sPh{wZR-<* zXpj&l4fn^uuh~odph>g^ZrLC}48248H0~Opt6x?UnY9ooDteTg03Qe}!eif*Ev1P5 zFYexRJBsYv_IwpV0T&8W5osgHNCCoAK;dm-!h(>HgbYX+jr$t?diP2CH|O3V>X>o5 zzx5b>&Y=DvWro>%?Pceh%LzN3b}7t~dR9=}iCRxwlQfZg$#??9^)~wAmK6z)WL)-q z;TWO*)nh{eqU&nPKGTc>$Ivt!hEUObYE5DD%N|;<%B0nUUuZOAN}4CpX@g|*;_cQz z*}=Ey%jLqI6Fxfe&le>f4*O&FM|!PMrp?!QOo>OjDpx(!N=M_FRZSsX76BaF;ewtP z<6ORUfv(`j2uiOBhFBPgS-q!lmOMiRl3C_I{DU!t=mI5S64z`$eiq%L9+`Jk1Yys0V@cQO9zk7Llxb+-KsX z^(V*XJGB4NR|Ce|Iy5~a0AKuvM`friCM=oB|ED|p*v~b)T^>QoQ|Ai9Vfj=9=XB23 z@MbpYs$IV+Pls!;T=F*c8tN_gec;)W^(i&j#6m~=LFE67Z!6#0Y&UWy2S4N*W<%}d z>@OrO|8eWPBK>nkgFM4!6OtewkM1dAy7oY_y0_t7Un|;_y|mUt_0z8oKow; zgj#Un^jBdoP?^ns2&(Tnp)3>4$ZqkQlwPB+adgzEwugy#O zP0pDpn6~5PWxfZ!2DxIlzhv5>T0jF{pzi4$I}HWFs4|S&z=-3;n><%U>ZZMHs~gu zRo*c;vu1H4gNQjGNFou^?u4Lw0>(~f+H;2V7u_kW!?ki|mEusb5m&u>OXR#FP$!+i%~yuP=wfaJ z#%)AP5me}$*!tUGrZL-Ys-pa7T+rd8^ZMJpPnK>TQ0OWQ0R;k(wqfpa_-KP+3!5!3^nCy3MLqqh3;t4~m{>1}X)Z|$pcLT(oj7YzhR z&=eo6X~)Iv)N@5omS#MwyWbblVTB|)hrhzT8|43Jq=8za6hBkJG6qL&htw}NAjq-L z*b}5b%TL`=5dm2y$5);5LB%6;0>9pTOhOd?67?i-NauIqyA2H@!yU3Q7;R+%(f=Dg zDdKEc9pKhN&36Li_rm6F_<{?x(!7d_12E}xcr_&O_S8yrBkl|xZp^>JqWE*;xRi=4 zoMX-P1R?f*$g;}!ippE3}KQJB!8DQxX%fhO!zy%R}71IkkkzxEu)qd z911Myvt>96Rf>TtYWgNp`DWTaF+`AX4@Rr8P9xI7`4pLJZOqZ)Eq*(wlP98@D<5jV zMYlvNMmQvxLeh%6ixWMtq?Pif!iRz-75ur+;#SqF1m7Gf)uZCxUs48qP-V%v21;l7 zE$ZKtGX4(7I(X~K2u!V)bg^tGP`m=qg=ai32iXWC8V6_}#3Q(KI!u6=3$l5O_o41_ zSgETGdFQ^rv=c(b8S)_}j!IAL;TI^>$9QHX|qAXthdzFc>UH~cC9>vhe*U| z1+lDTz7A@goS>dJusVuiUmxp-H2y!xxYRkXq5KQC1a!GPxV!l#K>Wb(SdmJ42_Rx_ zCh95Qf$_$hZV|`N^du-hxBeq7r&-^!#O@yJy%kC58f&OCWUZ@F6jehSVg6<$sjrXv zn#*fpZvuk68CTgE&apb13|BkxZ-_FAl{4X^B8+)TqeFPfvx|^$R@%X?jRsEzESmNL zV2ZV-VL4Di999@C()?4?A@;3vtPoul(D2srt0e_i|p5qOs?XzI> ztLg#8H`O4~*tf!GC7W-O)u2n^6c^_mMF|FD*}EOyCMJb~DAkx|q5U#&NFtz44Dk3?PHxb&L-8>#Q0Bi2` zmpeQLnTT2+cT*SE@u8Y9DUQ_U80`_XgGzCOclbJpyxvyuZrooc8cmD;!mcwo0@^%S z1tQbz#W7JkE35UvT2HJqNGHy~0<(FvSvLRuaH{`ItTX-Za5mo<9kp>ZnCjfpc3HRQ zLD@71U{=b{?M}P9^s(FlvQoFJLY?fae%R0qD~2>J?QMM^vymtNM?;)Qln*?mX=C%7 zzfvwSzskd_B2q_WJ0C%_c&wFXKE>}hOONmB5^L+L8y_z8Fq!{P*mWKl60{)*(C+4k zmWK>TAO>aeJi9$whu2_P+Vw3h3|RYB@{R2hKVw;zDp4S9v^!z4)#^?d#PvT;tip>^ zi{nD`NCQ7J1y&SIbyTCvgSIwPLz~_(!7&39rP=T(UP)I)$!xo^#NG{@fd@qi5-6H+ zbLPRsx@f1brelR;>N&2(ZvZ>%b1VfT&2?hb+n_vVWil11&_=aGMjwu$teT|OlKN?&DV6GZ%7Zx%Cf9- z98gedr;Bgs1d-rz!kV_k2Xf*lS`|rfSo_4uQ)4CD*;i`Yx#b5vfGIIucJ?G1iFJ<8_S**Tt*=yCn6wt{S!tY4j7Y!6KI&>kU$|DUAeZ#vr%a-K)3ja8YA1c!F6NbGO7_|5J+`v zZIvVey+M#@w=&n+v%bjjH|p!Oi`kixbZBmBCp! ziCd?8QCVa|r?|-Ta#wZnA(X@H{(Nux+u>KT+qkEwIo2xHCDnKnD zX%c3olNl!;k=N=&0yBL5jT%bmHOgnn6os|;9;Qo!bYMfpKa#4GL1r=YKuNI(~sn$pvqJZ&q8IR(q7lkvOZ z?@KoI-`rp_nX2VBA04|YnBALjQ6q0?DRLu*_9|r{Ijw(CV|~}hSd9Dw;-Pb(LBvqY zTX$voeM;|`5Ts0^oYt4;WUcE)-M}EgB9tW^z97pvV6wZn&D)wz4o`=N zhp}LbaWQ6$1ruNKiV_h-g=QT@0Dku91dT(PTJge=<}^4iHQwbh1CdR%V;N9xmT7ah zhsNiqfgkl{{$QVmI3ZfvuT5XfPlas`RfFjbf<=Ke>nPWf+Fl?=jkodX2hJLtK)c%B zM4%`EO4u2lw{}f$GJ=;(&^BDks{Z2?GY|U`KH5+!V`)6UtKihA$8G&3(mS^TdC3Vc zz()8QEh$U)WpOC;>l@CckOvW(;+&G?VHJvakL*;CR*@y39KeQgN(|4?NBe&ZW8=Cl zCXIY5^lw$ZvyTB8&Esl~M(1eY^8Ox|&GRC7zO;*i_~OpSx%D4%m_9-RrV1<@l~Whq zc8lA4`K=K7QVO96Tuh*t!?+KnxO8iJ5%bAh20X;;+Tkz_m!#+NfGU5xNG8>)*7+X=hf_8wADtjb}G|&VSd%}U-;YZhBPp;kJY3AL7$40{g&@0j z;|^uuf5@SGrLp(JkFT7HLD}ErtRt?}aI^j?Rr1lcnV+xvA|>5R>@XaB#S~S2zK9zS zQwyj-s%@%=c8MLSVl!-5C%Rdb6r~Uq&`p_)h7=~4(Z?7Gpf!&Pa{JV@fH$r}np#L7 z7%(n?yl@v7ZWMgxE5AM#q4(vD&;wg!1V+qPr9dO1fh>{xA)2oin`&Fm%DQRAxbILa z#K=_5v&iBht(L1F?x?&vPAynfRDw}YP(m@K3Mb$*Mh!Y}`!(8RtOA1!V+o7v3DPuT z?yx*D-aeUUobhrr8wDxH33F}P5JV=v2laN0H!a~+5V(;dGul_k+;(>VIv20zFaJP0 zR2m?a_ll|U_)VF2OBN2SC=JA2e60;)@7zHHR8&+_jwEHtY$-GWf|5S}=dYnix5(5e zj}ku_q*?9@#eqcsBXW{JMJE3?Z{{ZlOrRvKttW0KoN?-UWGgU;o;AF zJlPxE|AbHu$Q|PiLrt%E&!iHaglby(#JIN#kb)sR-U4d4lA16_bNCfRhcY8ZM6lj{ zPnj5LXCo!F+-U4~1?Yv1q~EYdAe0(gfS@z1oSxWbGQX*X*wKHIt;>aa_Cis&L4h#R zm&y%;AYqSj&DEn+E<*24$4q>AK&L?^2~;XB^2`-D4%l{jPoI%>Dz^lHz*wQ`=yIQ* z4_ogAuU1~~h|@EZJhWl2z~wWh&;PiDp(mRZj`?}}=kptQ%N$Cxlp=BUru3cO(BM$g zxJ6QfCQMT$4y>&ww6upO=#^h6`^k5588!(T@VPYL4;9{SvnTDE4sX}^J@BD*$*Ew6 z^bkx_*zs|HIYJs*N(?hm0gFTxizCEkJ_UE@x&)u#{KR#KXO-60XS&6oLF~#^nQoMN~c1Oig$>>#hhg3F+EU_k}yjtwe@BFzG1qpwP03cb8Id#(x z$!}3olc(2ZUFq>YYqG^;Lhc`**{m$#0i`erikU1cy2+-TpN$*RgNAj3+|!0<++_^?;+aHgNe!GBQ z&MPgzdqPhU1Bi$~YE zW}Jonk*W*&DqsDh2%1riP3t(KVIi~_;SU;O9Kgv6l60DMr%W(Jba?N(w5WxyG_Rkf z{hK@vf&EHs?`X}ji*##U2rs}J11ea&7s5+w)nlLZkV2xji{s0Ds2N_p6E{U2&wXMU z$4`v|6ccpk{S3z6JV{3gEM6JYVqpiJaM!-LS4OCUI`itIGRI9T?u$M}XPB5_www zX_~Mi$K${1&wWZ}I#0#LGmluom9 zkQJF@eN^*UwGGwj$1!l0k-=7J-0}85TH$S1UVjGNM_kTPr5^zzB~hFx_b2iUoxo)B z5f%kfN_{K^Vb)@E9MoALQ$ebavz5ewjGF>R*n41vBFI-UUp+N{^IZZM(ilm0zkktV zz`KogRB8PqN_5^8VI8r?i`_vG{#MP~93S$g2zktUD6&f67uqkAv!}cl;hF1fOUq_> zws!vvLjr;Xg^M_Pq=DB@=>P=AZKH?EXyk%P`WPgq&lKm$jY&wN#)6oAQ9gs6I#m2F zP%%bGbcpGc|NXj%=_7}LF%FgX-miA#9fR1w3JD+tJiAJqv=Bc#ZSt=Ecq&EmMxGE) zi-+-sE$Ek)w(#5fnjK`6sWoig6L;a1s%RzT(qcjsCy$KsjW_g(7Wzzxl8fqNO`e15 zo?fPWiB}tYS7`Fnw{K_e`WjsBvm@yZ66!`b1cM^g)B~l{$$_~~-Hb@g1=yc9i0M_T zT2#R~%H|LZ6t~6tiX2%O#&eOSHOiSSa#AW@2OCsLY&qY1CJ%=B6yXy6kYF9A$(wmF zE9x|1_7w57tUwR9vQ82guYxK0#rEbn$q~F>CvEi@H4_@3Hg$<*ai6EzwdfCm6^-;H z>aGgyBlZT4?-O1Y7uXwI^uNL_p$f1*+R_H5z$ka49v%qMNL5c$FG}g1i(#32m7{b; zQHSU2Pe@fBusTLIqB`sb1+Di4PZ{Q62A+lFJU9ZMhYHtEIyhaKOXd~OZJI*PEQuS1^<6kA$a_hf`On-7dCK~htB*3#9mrjH zq!Xzp7?8A{E{-cIwtE_dz8h>y*#W@m`36a<+OK5SE=eBM8R^WBKr`6nh3UhAqL5n~ zuW>wy>!kkD>3wZZb8xlaHvsBzmIabOc|DsFPPwI$_$Gfe4~vamo9}$5`WiDP)o^oh zISC*NT&3x`i{U7Cg8*v3r}QsZB5+FBKxZ+c5<2R}fbla|2s7>hqBb%aC{ia5V%KMW zKb$pQ!Kc*`LegD3;rCb!oH`-TQ(@Aim&@jioV&?D!(D4ErOUIE;_EFEDSCwBAs{5- zo#>LXFuOr}G`n=ZE}rOA{xc7m+xu}%Yj>(9jK)fNYbsdxzh9PJ(Rt7|leM<2*g??d z3qB8io`ghJ-{1>lHGVlx2RV$mZU@In2+`vzn`?q&)e#iGQDmd2MZKE2&+7MJ4A~5k z+@LJdO0p<$OVTP!meLWdsx!7m-&=A#EBUDNnEA`{SK0+#TFZe>OPr}Wdp}HQqGce2QGm(X7~k9 zUZiyi$THA7@tfL@{G9rKq+NQHO_hF?O`pYcorE=UzfO)-@de5K(j%M}n2-5Th!VHL z#-Eb?C1N1RBf&9t0Etg1cMpOJnP}yveaz)qkD+Lo4LxS`2W-zXP zv>_v(!c!{r?rPO5^%r>=uDMOnqCN3b(O^NoHzWPb{8m<&W{a-W-^tUvV}Z> z$Fp(b>r7-;#x!;eHN*Aa=bCU}*CbIpJtelJxO;$`%Rw8ei?mt~j+6U!`Y@8rBzJnTuenkj+m2gVw zrFy>eA7z;6AN7yA^#RmLVn_UeBkN()5Q)J+AcKWBZVZm7_Hj=sHO)8 zZB_qG#1oJbTC^-K^S1K54XPA*mc~3M%z)BqP$5@aaz~dtGg7F8&L%JS zn=HoRHs76pxPhx4MZX^9SKc2i09lRJ*ue>{8qnlF2KNO+VHa--e_Z@Widtlj%hPbW zeluukXN*!nk4h7U{L_=L@CatYV72G_0I6~Xbt!|4F==lyeFWBzPUNHug589lcc4OvGt0_$#&>O#C$f13>)QY= zu3f}@vm4jFE?-Hj&HfASXLyABxpnYimBZ2Fey)Eld(;nvq676^g8FG!{vSwn((#4q zf1ILq1#rsl>bk#K8^BVpH|_dTv$sKwtMTMxcR)t5Gp24?ZQLT z!&t%?taE$60WtkBEC@rEJ{~mNe0jBA`T*w+qq%mM;smTmkH={u<{HRs_;En`eEZn8 z>pOsjzP9|QS!%?gGrTa|jliHIT#=_`am&U3+HRMGF9M5WlAUW$mL7jw-Pu`sG@2$$ z+pC{Pp*@{Ct4qA9Wo(C46fhtA zG9`x2JQ@S*B98Q~H8XO<=PRFNuFK|b=0LIR4l#_K05(|^@>f!q{@)0k^&+Eqn zIv+H$^DlL&m~maUerY za%}Y7^L*ToaFEf3#``i`235T%6{r~umAJ0*M@Z}7V1YHDRnREoYIcEiq!eKf>#an^ zQ#EIv7bwY7${ow~hZ+)O8k7Gc|s-RO0ZCU5xkNg6lxQ%|M^!q$(s_9|8A#IYhpSUJi_G(_e+nTKU3yJ zjtkXajab6h5(RUKBA$==27y6-0rm`49@KjZyfy#WI z6dLFp^z)!S8)cDbL>`o9)Fb#PdOTDa^L#+hkEj+X_e6lULl7R3OxRW0q9SLnApEI( zMDk-C5{O6?gj8=NM9L)&s+Gd%vXB&7947|LY%yeY()%&h=$LRU006tG>l~GCg@Q#Spb zEK=0uPDeO~c_g}RNz>K6-IiW!SC}Ozv>U?tNH*U&zsCzR4g)>0;>d?j@!d{o5ZIl4 z^70_&;B_J#ef`RwsE$v2@nCN!d_r)KY$E;@R%`o~eh7L@cQ|7IA#AAhCmwg0dB&5e zZ+$uF8kY`LN+7p*++`0`U!USt(Hh*`0un#=6p@vDYP%%XY(bAv>FP1btQK+xJBa82 zb2bf>HkKcxWKbIQ5tXnpU``F|sFurgG~(6@zdB-0WVci=W}L+m%fD*Lgn!l$Q?z8A#M4s`MZ216f*a66$H)Lj z?&GRym))xX(C)DMyhxom_3B+027!?jIzNockxj`)uhoq)IlX0^{Ox*l;rC|tK3pI0 z6zxyOLRrfGBz@9c{jFHi=7%U%6*h!iq*Qw!raMeg$mtk;1PT2|y6hz2tiJ~$$Rg{o zPhw!dJn0f5J9+$&aZ|fLq7YWrZGwS8qe{8Ex1UOu2}-a+nRZS&=dQ*c5HW$(3H#(r zr^UnM1`Xl>U~!NY+bFUxN6JyNVFLmNdG3zJ#o$ywd!))c9P0fV)3%qlv3LP%5%uF< z2ic%H){f^Yc=N%$sEvm0Sb0oROx3meXIv~CVn4fns11hymX8Jg8Yk3hVbvT~Q-$zT zrtD)2`8)ieAuUiUF&~N*54V433$EiYFcl~5GI0U|S_nehA?S}A;C+%{nNC{WCoc6$ zFs>7e87TtGPBxKf#5L6V<>SBRw{At-U7ORR12{@m@RmkH3Om<0Yx)n0M zXfLfvP>qX^bT(+`xD0|1ZLC82X5%TaaU7edawT0>4t&yQPTvsKQs8dWKd$weSEX8n zW9WNxtI-GTL-c#{Qx7r1$2Wu1c+L|-u~l;X6vBy!Vd2JYxg*whQ1X;qwekMf?Q5XG~EL)Mbhk?^nVl7Wn<7cqq@pfUD${vdG{Yb&7Hd z`fH=bn#p&njR&-_#VLW#_^>B9KXMc~Xz9Ldm8_5HN<_lo3T01CT#>NSA<~8z4yR&5 zs!~fbaMvp?q}N+J+WQfD?B-p6Hr?Jdb3M(g zKaM$RP^lQE1a&zM>oM0+sZR%C2^~~t&cO)XxJ^!J2Q4u;a-bEuk{LSm29EH%{XS)z zKkUV3MUBN1tp_nqnyo4mAZ~ztvp4A6YTlI&Y#pW{9EV;BIZD&#A!ojj7oj412dUel zetN(I%YszjuhU-m7>q@ym`LS0We}yEOgkaLX7mTNBoSQQS@vIF3{RaNA1cPO|33oU zHJ+coOZ;ZdOA#o+WFO5}_$8KYltLFUpD(6H`-b^l;8MM1S-z}dNBn21g2ToJ@WM$QN zQ8YkNl&yoP4Irun+b20Mli9$7+&jCT2Ih! z0t9Z3l$(>}FGQ@*YH7ED*aoMyI&uE6c=C;aRy}1Nw3r_h=Ml5&WVj)@8!B-p?0+0A zTrFCz?*&cx!ozHk%T%arJzj2FE^3ozgKnQbjb^c~o{@Iqc)hHkNkP5D?Fozz7y*Hy zArDiljpTH(k0)J?0RSvFR6&{~0>0b>@GrB-;aTq;v>w?-LN1pT=%tk4vT6LYGSTU~%u_*`XFCy>-XXYuk-O7@X(7%<(L z51kqmgyBmcsO{J)ZZyNmi9Iv{*~=iBab?S7`*pDI#pH{IQFx>j@@Chs3c?`Sb@UBh zsIRAocF)CeU{rzg{o!ng-Ow?V`Jddh4hM+fO{jvlfVqEm@5^FM8R&&F4|cb;2+qN` z#ev>&qBccZXy@z3%Fv{Xme1UyAVt=-KmLecl=h$gtGJ}<(ddFA7#j(oc$1z4q2#I#67U0v%GQ76<-Eyv+wmidRe6f7N=`jeI;VT|N z;?xzy3P_|(sfFGII8wW!`@t=;1qrjt2QauuG~`%3nw>hNkIfqQN*us|z9b&MUDsbZ zO`ymMQZS;L!ScG% zw*K`J4hL@I&JgT}o3KE-W45rJ#L09&`W2PEA3ZK)#-Kk%{e(=+hD0#JB%9=Ej~mdA zkGJOE;sV;#Sjcxb=Vj0gju4caOI}CUwG^)p6%kSxgvM;XA__P_u-UL3htpQCNm;?E zxxcSsHYyj$DUO6)Cde)*+io*Ey?s@+H|8f_>0Je=vs@&_!Am`0Au=X14VG$xSEK`f zg^ls@ia8Xuem{hA;e1^ituL6~tbnEmewg7}YiTMT1z^e6{O8%Q?_{H%6I3QUxm=yUTPTMKXgZ-Z20{heMZ7m>?^^ zISj6aw4q^Xdae3-b89yJL?b1TymlI#i+cPpKtLH{!93|D~ltW^wR&kp-F~ zO;vlEkPE9-HwVeNCKiT3{K(5yQt?!kgM#|^3bBI7v0SnBzL8fU3A%kp%#+}30M?232=m>S5kZ;WK&OGrP6{`Q zSC&0|p){58px`IxpnCjKEFlPAVtG6n_n!2UtahT24bBKpByw&hQ7XjVOBVJx&1X9A zp55TrK63z6P^->B&c((pO;%|n553BjZy$0%O|#P2I? zcHMd+Xq1g+ttc&|Ucpv&24FQa4ZG|4PF#`K0ckJ3!dqm$tr^k-N!b$-$(85+4gmka znxj-%*IbDTO~LX^3t!Ehh?gL8tl_KK>z7wEB5gM%&*iK*+bHJiCd&$^?KP&dOU2R# zG>XGw{mk!VmJ_#qfEf~!bkF13p6N8Trin;JgPS_MIqB=s7eohNj|9|Pj5RmKpfNdv z6ihmh+t`FZ^0(?#3G$>;+^zMJMQfBHh52DVg+W!>+JTq>#wkD4k+(0hs2 z&%rWXl`dB1u1R0YMMshG8jr+gb|6GWv~oJfoNNhQ0Ghv3`^Vs76n{hscOfo1BijIX z$+^r!F^2(G8W5m0aM7E1A*P6|0H4ps?vgyE9$%IObJJFOGG|z$QSGy84h;j;r4JD6* zqwy%HfT~pWS?D+(o`Fkr`~i=JfxLLk^?T3T=q}yD5!Dz+lz-3x0GBO`TAK8AjRS~V zK$4P2NXNT7N-v=>b`=9U8^+w1KBjclE{a$0^dyz_U>b%;a1>COpXhZW_ef(u$CEg5 zW${UxSCL2AKC&4*6_!lBgCcoKlIIE~oAHa_4IPHPJ+8o~YL>Ns&3iG<<@0y9`b#lB zEI^5+h|^I${MBz@9`8%nh<;PntGWe!AV~{v4p7#c(@Vu(Kkq;i)8rat-F8$x;CyQa z12MhHpWCJwAla=e-BuIjc1oyKz&U`X!r9>rO7jA5Ru7R3Bz5H1 zl{?bP0#4n6xN*_yA`Bl<#+P%?a%I1;%nFjM_sP?TLvROZz=@Km2dULHm^4quColk2 z(eWUfz^dYeKGtimlNSUb6?RyqHokgWEt-wHvfJx!b4D}J>6R3)PyegfYR(rW&+4`~ zMav;DYGxCkl;cr$k;6c5Lau90euoQu*bPc0a=;@}4hrZpvsbJTlHjg~oz?1yc7M8_ zI5-osKi?HhPxB?n2C49wRY`ZPBCuQ$MB|ggJ@cfbS#-|Anjfb^|Iuy(lS?{Sb)5IbpObR z>^BS<$-Vj4&C}4^ptaNSkGTPfL5}((pG{Mr0knIO{E#T8VN~o{tz_pRUXq8O&}c2D zQ87iCEGxv<*^nW)8(1G8@|ECbjkJzzzFSEYRS#)0SZhI%1$z8ohwAidLA$0tlqUt& z!Ci`SiuqEH8vwYPrJDk)u3-gqC!JbC)hEiML}oUw!>G92UA0ZD1h`1IfpQ zsa}{suEIcUDAePP0O0Cp{{#3P5lSYVP9jR?YQ(VoSAHA_ zUN#SoCQzl53(0>5%WSukrRLM-!S3oNxV?7i+}>|o$cN2c4W~L-`nWN?u(Si6H&dAa zldP8phjjJMlJGeiv?CzO!Dd&(6SD=j=Kn8fn%kW~Foxrlu(^#dluXlV#E`SO6^3hh zwU}@9pRqFmgCqD*fFJRl{}Dd}$2^>I2*x2vAFF{zZiW&#i8ITZfXO(ZiA8QQ9ka!D$mb8I(Kr!Y_F zSGIn$mbr5Zk0aEql6O^5b|@%F9(~lTijwnoqsq6CB{0M{H7U{|}eMO<%5%&CH^oxhedH`&r{ShW6p|4cNCUXwH{>my=ObQ$PFXRs4RSC?+s>>=y{Y3~ zp;CKM&LcXygAtmVl1e$Py_26&7)%kYaA5%adys5Az>y9w=BQ*MVIPH|UeOu~J`3T6 zQXu=hn}Ev%B(Is-sR+Q2BQ_GvpNfKz5IDtmGWXDz)hY zW4Ca$R4_}bLMKK66p(>wi)nZsGS)eB&B8MKtTdwqqi9^RY})hOd!arF*$LG}tu zO;`Z8Ggp%Ay2DAFoPP-)^YxaF9{T-)IGTfQo5g%pLENM(3dcBoaoe z0iZM7Zj$lnaxY9HM7KE+A1uE-41aTijqU;FTOqwy!P4{EN|ULI)-;!Q#bZ&w@1N_B zQ`htSA9UalXd#*4!)#EQ)sKc=FT38(3#TjmjcBSfVKm#g1cb#!160}Y*AexCI-Do* zwEJ``4EBa1nvEVg(TH$$AjC$Xw}NG}uiZ*mf48RRTrzmvPVVZUGrHI5xqQHK^qmad z`0bxAV1F(r&vXFOF)4g`>vi<_r3Z0Bu@DFUVj^xP`*PT-=0fzboGl2bk*{Mk3lnw_ z`sw)~^=bCbXT$}WT-8SJoMMt~6d{r!`tj)Xo`$oMySlDIGd=)A5r!uzIrF|+o>eb# z%kvJmwEELtt>eI`74<2ppsXwQB99 z>mO-%G)~cLxc9q8LDh zBU6RD%^?GkELWQIo(@82waZYWYxCLQC`F@+=FoDr2Fxye)4Sl=Ce{7rQBNu*w2Jgj z03;E0;aLN~DnIj=M!ZphwYL92u>J;kjhA!sy~_n{<+2FPc(zThPi?cKtMMw$4c?fL z1xmL+g8jFdZJyj+o6#mJQ%GbRD`a9K2f!8!VeaQ1sEq6beLU#cP$Y4V2i0r8n)}@}m4NYJh)P)z@MK3Y|gs*yGh+B-Ba%|O(!e=}IqfE#kBFeaU z>M>@6T&#yOL8X|aeYff!Gm-soO)Ia6=@qM1%pN9+aloW`e{-JM3xwR#>^Wa-Jbe_t z;`FEl-DgXof3BE|S>4bKI|IPUl)eoG&*-3~I(VudRq5lIf}W>Qhga#@K82QpW06IO zyCqsYlOH*P%^H#kHyN<{NY*Jkt3e7~b3Oh{TG&l}t^*EF_v&BfbRb8PjF0|e%N=!q z0FxlckA&C5QIXiNaaW_<DmtRYra1xb)eGchzQSYGw_7x{^Qr@Tl?^>i3 zrBrRHKI=i}6yov4@spa}r-xMAq434|=zXu9TZ(_Q^@5!aeu?g1&$<8dS9*R*ft3F+-ysb!C?wUxej?$H;KB&xb;>uPdQ_^A30HmLyo5f2_$ z9UF3_K+b{N(PfXNn9RaNtKTK922&h%=jESgg3@3rDMqx%ZU#?GX-Q~upW~i-+J)?r zWVXJ<=Q4!oQS(_ow!9+}th8+PYpJJt{;LQ!nfgn0TXdDsC{S&G)LfBJSep(MZ@?F+ zN7JlDf;fr7U0H?a`aGogp9`HgErbhZQBcsbc%AWNN;}Zb*Ck!ht2*sn5-q3Mqu@$j zObcD><01*91+$@H@qqy}CQzRqgJ)7!Z6Q-h?2e=-_^bhoN%(&4sa)(ff zhsDufIO_ zxCbQht!<|#>$Oi@Km|x4h#DOXNkfCTYyQRFWzd@Er-RVTg3|X!L5CQH&hW|O9s>x= ze8b_D0WOh2eo26?;W$K^(}*f$nZKg$((zB-6o#L6`cfj_0DPN&jip!Wsg1rrWNT8! z?s1=*fc%+=ib%i{db05}U|SIwb^)@weR4@}IR|BNs4>IQe^OyYIy`WZ zee8CSN|ccK3iJ`W$hC+XAel{63binft^fv>sZ=`LzK}iyeS{uI9r25kg#~Z>a=dl( zaaOFyYg_v;-UlU_1tqWoKpd+k`Zen&qb3L=(A&nG2w)(4-~)xL9<1!_qkH~`{1SGQ zaPe~T23ay`mL~LsNHPgr3_ax9NLkzpX?b#Hn)Y z(`nS@P4^mI%$hMmJZ!71b?)9PDU0qR$TnVt#Ekv3T4~UB^b)C$o<_;#s*;lOoauCE zgcXbl8Iizz0pCNI_KUy5zZ<9eXlVcwx161H#^n7lmDv?7&7EWD}~K;@Zu zf>o0Mc7tDY{rWY}c+^}B--W~Edhe{|d+T02t@RJorxw2b9Z2hzu7!H;EQzHMK;Ug0 zw~!>0e-_8-4AfSWqvGpCN*!gFAlvb@H9a1~Rd0DX_6hzll7>gq8KzW_U2W%!hbkTI#F(Z%T8X33;vvkYOm)ui8z13_*0ms483cLx5G{EPc${Bk0daCd`3jigoSv7E0bUz~r^ z{jF2n*D@(oZ>MK&bjS3!0H0*%^5WSrlC46$T&Ln|sMKo<)gW9UP4_9NR@-y+#}OPL zJo~Y@Obh6RbmOePLuBFwGu=K zjdP13!+&GxABj+?o_{%tdOtWm>+Y%er--2eZTsI#-kjoKUqFBot=)& zd;0%yxZpwJo5i8X;gMlQKR(*7n-Bq|$whLzgC%XQ6z7|X5;$qT^96Zl?JcI`sKuL4 zm-OM;rLO^TJ7+Ev{c6YJv(m!5FO#90mDB52b)IE5<+?_XteX~cN@(VZ%fa)s(`7Bk zOqJo@44cQYjeZ}4g%3k$C1>7jX!-ny#vOzudfBT2dhVrs1HA?9 zLzq}+f(A^(6lS?A@G`Zlcz!*!$!&mGxzzAAU9LK*W-G`>q+ygM0Q zs$B{PKvC?XT7P8cqR?D9T-;a3-~gx4giqpbs>DP>ax`)uAC(>Mu9CA~JtzewVHc3Wk#+^6H1 zsH4SF9)!+!79I`YBYa-rIRSm^pok-NxEdctUhp`2V2X4x7X5%RtBYPtd^K2IygfhB zHUUud^o7)Uf!kh>ffFg(YJq}@wkwr(uji~M?BtZR!WG)?%naP(Kzy5N zvwtaEM1HpX3Qd6SSQhzjx3DSjI;MttPYJCWwz3kWO?PI=-6Tzlo{s9-5ORfa)|}LD zAe@zK+4psO0cNMJ;a`$FoApyXQYj000Lts2OO6K(s`de^YjpPns2(`Pr3!bRI%x>Fm^_Tg)SAP_9j4lVE z&K8rQbeRiFx5HGea>;x*@vS^?YiZ1wta4*7PVe$utaIUYh&I*%8o{iyeb6keZh*Vl zSlU=W2;?@a8y;J=y1V#aJ4?;d-s)#wU}t9)Zk;XOto(r1WlR@<^)Qg?99LP}X?dgw zW;%MnuiyR$M2;LLdbq^2FE0fsyCSq#3Vky5p_R`u@I_I!TxF+JeT zErHSL*SB`a>%;lgU_Zk+o8c`~zD{84a4ly0UF#jW@gvC!!tQ+vcyceLwXw?E*9eF# zwDn53a2B6|3f#%)6Qx2gD928*l=Jj1d=PD2fdd$qV;MW48Jsha=8C^z{I;}}GWeQA z1Cg&EUEXJtoYqiDxn_ZnOX-33CABIYCk>xwV4!TJdLRYKuu~)lt#=d*$Bi1iZWTpL z;;^VR`)^?(sN<0fSs$jYCmUvh4_;Jm* z9+igwfUr?2Q`E4>Z6xOR*HDb3`E{(g2g%@<=g_Q&D~O1@rFH2aauMvS!%>rAg!pZL zCz~DWl0uu3Rmakj$wcou+z&S&@|8~ zzf3NFC8Vg8I<{VOTRrZq5-+e^3(^}HXTH%>Ru2I1II2xf6#!~564~@zDDl&a1spjm zE}z*5ZW>tPVI^50HwzvEypSpaDB!?5-Q0N`K4-`&ca#S-&_>u|j>(0r7zc5dRg~kM z&Q9V4+MSfRybkiGc7R8j-t9^6{!mC#I#^l7l|{b$)LsGRKEpDRw;SEIQ?qhYcW9oG zTMg_Y6dtEn;q=f%ZK@7>xl`V}gB7zYSid7SZY z7?vA?wH1ug_+%iGGP2E0#k($8)6J_iM@LO19iG;0veDT&Yu$~WihGfCZzX2Me11h9 zTRnRx2{pVvdaXTKqmw!Kmk_TCr2wA)!_A#u=lf5cO0U^wwqfZvjq(4)B3 zDb)Jib*ml~N>=T;wtcV@u22aql?{s1&U8llaB_}SH}S%O4WQ^I<)R}~D;;QdOtPj? z;7E4jt&r&VzpX@YRqTD^OeTZd^u0W4PD<19?;wJ)5|l~c^XjFPt88_>SR=m&lmuML zBiM=`00tx?V9Ue3q^vVnUDZ1@62I!EdZ(Kc7qySt&`>~BfYOcv)Xb=rrXVnuTY8iV zaxDwZu7pcdK}cDSwYmxvO!zg>uF{R*(^WqWTQmt%3Y5r-N40ZYM!03xCk5KjT&%5S zh`x_ut3&L$dgb=~5o&@xQux+@4PHq0{e zh@lfGGU(SoQ2mDNA;pE`aQtBQQv5wL0KMc;_4%Qdsy^8Ip=hr&(xjZpdZlrlqA zevDR4lF?)$xd6Jw!e|Z3P237D(kCcfNrX)6S}SU9m(Rv1ay_5;7)6^fw*8pQ!u8oF6NE$p2D95g`kkmzBK5d3!njX-p5MaQNS(4%8Y%@pgQ zexl>b|0!M{x^kFl3vUP@L}&!uagiLGUyaL1XA3qQlh(#lz|s_yau+ldkO{$4Qi?=u zveJ*;{Kj%>Jr2QtQr(i0)lsR=ERKH=;6tiMJ{x4UFgjEuCP?D_>%m64x=$Xo6=`=F z$Hu3mZ#Q8f{UxI(>g0YT-EQITGUcap%be;Z&!Lhlr{hl z>*fHN1V=#8gxiE)GAa>eRk)+C4TOsXjj<9^P1oY7ud*L;-RkY9|AaJTLnmxD7J-*E zzYO>#okFJ=rlCBMNLhdZaWvVoc?-`#lcLU&og!R`TC#HImoyz< z$hjUS(<_U_qCk`DQCOI$6zE0{uVWsP&Qldz+tS)l{<2Pl4KbO~n6TK0I>)mG zlf&NgfX{);ZO_O+h_58?hhh7bYt8brCmdGvl@Nh69Vhk*!UY3z3a1mFt96&8C(Cr_ zh+Uco@;IpzNR6lR)3uQH3`NdzWVAj2tQmavGiw%iv=3GF8d=9heixOg624YGmG$nB zYe}Dx;LzsR`I*QSYu|P%AdjfH>c)+Y=vS1&J}5A@;}9nRWg1k|6Q)D(OZ-Gp6Uu}0 zF+$03dN>S(A4O79j^3bPWO{DU?~AcVnKuR5!O%#K!SSNWv8EGUkCaTGb6Hp9_yM_3 z5ES~&+w!}ZGM)6%5;c!2%QKo@To$8x3!xWmYtEXrQ`M5&?(lpR3mJ8m?g$^HbwDiB z7_c|L?$!UFxU{^Tni>}Mc_2EHvnai5Bn|O2K+k8t|F^;kKqrnZ` zxF5WdO!LW(!bC;F8QvPJMO84Kliu5PKxR2b&f`?AT2Xr3YV`9y9~rzld{w&z&nN6WE30E%&&in zN2C*%;wAdx<;Z)kcLu$)l9F=_1pbeNu=uGI~| z%jmF68q>grdhPuyn*Z`87lFVp=zWuh9} zf4loyUyk-tVd(OZWgDnuj={#UBtlP)`K>;@xg^eYm8MGQrjVXCs-H57csiw$`~ycNFILrXX^^!m!AYI#@}jfsq1w)58(edGqzN zuXhzJTcSWYmP~b)MSzwoE}I1AiO$0YlJPOLNppwaHPn0o28!&`y8H20ZIVfrLKgwZ zZ5>%~7#^$JjbEETM;zZ0Tp+w-J$ob5ZxAqExs;(ps#wcZX-`cw;h4M)iqRc(sYW05 z#{mC`N-yjkixTB2bLQh4EEf+j7REe{TnEtAaLnl-)ja^}@VnzUsw`K9kB_9NMv|-C z?Y`-1{G&HdJlo*1%3XX*h8|@RN5ff(4|x;>^xY$2 zjquR(2paV*Z=1PXC7#T@q&c%D~BZk3cC?0qjFn zZuNfAUd!)4U4%?>x5Ct9^iyDQHoFv$i^wynEyISP!f6Fr173r5n(Bd5@5cK}ydE{U1x=iv%lczA z(1rYt3XelA_CDsuAUowC22#GAj0q3vsc&|l^jx7YG_0JpxZPwHP%yA6s$|8+Dij}9 z2l~s7`Mt6iVlrUSs_Cm@{$uMvhE2)N_hw z#WaLdQ~imyk=b;?T!5bpn%8xjxbN}2 z^LhLnav{3E=Vx?v8eIkm`K*-qPL9P&2{{b_j0|wWVj4t&veD@XC+f~G=5BrYdNMwp z=i`8Sk!6Db6ibbiO$r?Ws*Ns!TexUV>wBT7fNng%%-JUKZV6+8&Roz>{5&2L))n^CqL`ym)6a0H=% zh&wPSOLp=j{UrIj=Ka*%tEpZnC%tM}M|DBqfMFOP{@&2V5#}OzD$e%+U)TO%=s|;s zl}J_sxr$7a!Rv^ZZL;kJzIKGVBYYRqi&Q_GCXqk^bjY}3@=AM~{Rdlp39`ow3Aeo6&=V&4((w+ApfoSpJmdNc{nP;=>2Qk4J? ze_E5}B=;z<;okel^10{Ro{}!^#5inpQj;Kae&66#JY#SS%DI7l;_VIvjPx;)d2{Mt zMbKm{-B7Naybzp5cQQz;;IR=w5_0k!i>i=COZWO`yv0019+IvnEPV2&Ae%?OISY|K zuAb>vD-u4j(6=dZfLqGiA5koP9(Va#Ox+RqJf zpCp9^`T#=-Q$4n;YkWr##XJC=M5l1nF)rOWydB!dac;s1S578@gI;R&C>5-{C`!Z8 zhts-xBqkWrKMkQ5Ti)mGB0=dlPRnA;-HvKJd@v_-xR!6GrjeK@|4Rw)Br6ZVNx2b#7Sd4Mb4HMpFwKf|LTKO0*XQha*eog$@sy&aM&2w!cO=5IXW45 zaa<{GJX}WSvlFFQJH9*LJE6leKP3hQzvN|2*{KReL)A}l10`V#M2;;APscgaqr}m} zN4hKhjM~`+b$j$`JzAOn7xtaW5tipp3Dl-MIHKRVzWrfyWAk&*z(b%l`hUT|v-f#* zV|DNIZ&1(ZzXSDb0ljJK-J^L_VKS4DEak?5$Ys8L+!T_h-rU&PEjM=850esVXK0dxMS$YMYZgqQeX?IneMZSE+M>gu#5Ah)#T(|%@ z>1$iB?*SiTCfNGsxAQv;^V$vYB-VqmV4vI1o7+p=x%|vHuX3QtS)aGgbIn!nf+mTv zEWRc?!-}r9-kU8@R!lcr$@e~2{8w17^?-*0exxVzV(Ili19mF+PH(VDTwrrOf}VDE zd0~O5c8;C#<^T1lJG*<^4XjM<`e!ZbE~CQu^3MNEFl7F0WllSX?(>`TpOFud$n%Dp ziR68ONwtgle6g*WMLGHjaBG1s&YW_TOT=+rG?V%5vvM49yQQg}^f(k8*?Rfueq_<* zbdl=R98{=6>gZ&&$;~VJXc7jYWGcg{<`2dc2f3vWAb12$ehiC07u(G zpry6aqiiiW(jo8Tl2$vI{4Pt$Nd$0hjc<3}P$!eeD`RNPEQw1(HPoz<01iyMrZu+; zJyS9jLMDaB^yTEdSIL{l^Ka))%3}oqAhpDsOhHZ%E{0B+_A5^;Zb;bFt-=GE=~3BXPXO`N<7!icvx*kb+=#~dwUr$vS$1;0oYs|ZTr<(!52%^)VELrx>vyYC5&j_s#0eU;G1UhrbBz@5h2bP zP!EPE^Ayjd{H#5CcMOH5tHh*kO>h?AX%20CY~I`{#OP%i0X5Z{D;)&9n`&-Tf0~~H zH8mg^IxH@nHs~&{l9L=HeS*1XBs|u#Ttu)_^YwrfNcA+u!Q_e(sk8;^5#Y+NqmWj! z>g_E4HY>)GnWL%<-#|8l1DMf;fV-!|QZ8ZfA`C9oIEGsH1!&uu`oeiRq>i~l^4em5 z`=o2P9(YU*xe0*NAyCv0AkPSy8>C7E;314Ycj+Krlq|&-^GY<~W}?-0vtfTnVb%$q z@$vk7m4@CZ?8e?#l}#jmkvar{ob%Lmao=490FjOTCzUy-Dytw#0l2)T%?bWAO&q`m zKgah}X}-)}T|9>^cWPYWIXPyiSZGlo-*qECs+`mIUqLEUzPiybBqdKPTvfUA`S7ss zyt@Hd#5-PX#RKWAZN)pH3Gi5nA%Gv0&<4;1&#}1?UY?dEb;qj+WDp3y)MM45_(!^> zS1gWV_1*RP(v7GL3nw(=)@f3( z3mhsqNu4>B7JZ?Pq#Q^WVIXoZY)s3FPG36q3L zf2L31`48!;hVmPzCO6sEFHf(<=gH1oQ3p*)CWy0t?9c(rF}?puk9%~ViYejBSB@ij z38m3{NS6N20LymhR)_bxK~x2X^&#R6K5f(Kw3Y8zkBm5* zmy@d-Qn1V6i_UUT=ulIq5TGhP)x!2x&GU8X?FnB~rZ@WYrqhA_BOn_u&mV@@O6~iT zotKOSoZh-#^VvN4R)-Wl4bWTVlzIeur!2*V>Fa9h5ip?J`EaJtxREEItqTMrELi=V z0t9>7+g792(wvM2&iVOpxeyjSGiMA$}=a1oht@dY+ zZsT+Xjx@tItOeg`(*Y|Er=4*)1`fheuOkBW>$PXW@v7=y^k?)hXON>FYb1)l+ImZ^ zoeuG$04N5EV6NT2;WE<$<#GWgHgV8!kRm4cFG=V2h=U}RaQgXOd2RLJulPAv<)lU^ zZ!sLJsmrhxAVxHaZAyA%;9$%CouE^6d@5v@ClYaxw6XVH=Svqa^}4X4dY_CnPrg=1 zV^y1FPdSNhs2sk_^r?#hbj?c(h9;lg16{c|JefF=OJ>x2=6=J4ArS$5iI$|(1Ry6P z4Ul7Ap?`IZM>=&wwkMV8(9$0*L`Pf4`#M9AKI}IPvKVnDc_ah#8+9_mVY6qa0=2AD zs-%xDMH=7hxtJEmbUtErMot+i^c=sMu^T!%RKPggG_OK9wy0kp{%b6gb1)*wVqa*T zSG9yr^?3bJj|&OVPaC<*dMoFd{tBNA$(8Tne82=O_2moJNe|Q{z!Mxj?N6P&X7DLyr2hSK zl>bDzhaD!RBqWib)KrhK8LTVtf0>{z+lH!4L11QxaO0D*0glCmWRxBb#*uVPJ1DSl z%D9#gWTVAVF%8n2jUfs4?2~ICpHNwn-L_F9nKVbR@GBoK{uYv68#%G3b2x<=Qz<$M zGmtgZg0_$~e~b_bgjUbxQH2urxuD^Dx4xbJ*N$rVxJ7; z+5tx@#X;}AP6kf&L}sM2B~!%SkTxY73SPWRL_FJzD>6D6FtVf+j;Iu1K!wg$vpqoX z+9iAxRb*0e``mc6_TUgi1f*Qt(tH&(ylN?+_X)3&DnuNr#8;!akFbQCV{(r)0JYP1 z!enX90c*i*qPhx5#^C7KeJO9z3aJgPbqrN^h$ZH9@?m9uc||yqW-VAJFKGSZDy1Ez zT1{9?gDu2hutIf0s%uqN=>66wgAu)^MHUFc-dHY{M{`Q@5by~UgQ^# z337;}k$+HTqmp|-XuwNghr*58>~uV2UHJzu(43X-%-jm0I=De4;6zGRJu~h}(7+OJ z-B&38!O7IMgU{)_Qu!u!bZd9&)$`h?mxuoj?;Z=^L81oZ)eS(r6DK21?JQQ+9Xe%l zlNr67ef-JXnXQ6uRfz#Ao${@3o(n(pUPsY|vpIr0~KGgvpz z@4~{8-XTpxG~nqpS&e(z6FZcnYP zB=lZ?T+`q~b&?o9Vxp zcBOTsH~Ye(kAuPSI{X^aff!Uu+jR8{M=__rU9}7G5=)op{?q$fkb;Lo;TgoJBd+t5 zbQd|Gdh70v1A^it`)RMT3+vtEg9NZOBpRk;eWBCzV4>5LDac0;`u(~YJc_<-DL~X; z<3Yd}Il9rgGpD9z;<8Y3Hrjgg^7A=oz{{y*$b|MU?HOl!lhddgu2Rp*Xx(jNfQWBL zg`5|F(5)NT#YIi-Bd+0?{*ExZN`#?(RwWrOK^LPFst0NG-12njvSHRh@IJA%G9%e} zG(bCiu-KIiD1S+2WWo#xoQg-RD@W&5L}8S@fD==&8a4ubOkGjwoPLi{(l4 zS*eY&s4Amq1nF$TpinSNKBFbi+{WO!<&0!t?qi$|Au z7-3V;>Nb99JY{ZM2H)O$DTdeUJoo^gl(^|{8V7_2S_|Citu4QA#lOitBj*Hj3{R2# zT8o=Axb$8h_;EkbLI96e0l~eLlTyhl9;_)b<83|reh+vz^BH$68PPUt6Rna_r@Cb_ zUIAnkPHQr_6CNtaj0C4_t~uoWJ80KOc_GQxAp|*`X-!+jWvF2f5UetCibB8Tsuv8} zV!6hc4k60e_o!-HDyKB%*J==@qIs*Iv2bLFxRDh)>R_LQ63`OX!w<89`{K_a_Sawi z{;u;5(kaqyodz3YG|3HN2V@_D7JjmD4-LbDeZQJ^QCug-AV5s?zi;S+)0V4v2A+We zo}iuN12C_lTtZSUdqZB+%lL)qsc0oyh|)h|UflkbJSVXh*01!JE8%vPy!kL*M;F5Z z7ISQ+-bOq=4cx>bnBMwh4yS<`L-a)S{MbISlUv2X?FgeI-TgLv`a1J#nUegY>8z7l|dfrLyTpe zbF)C-EMbITjq=W*?k63DhN)0YXvA?mR(dZ?DCx1ex^tGQjwnyl3A&*6w_k6CZ0_8DS_ zVWWTvaFTt;sbh!As(A9FH+c~HwR@;bfoIGIm8TbXxKlkSI*vj*iEmo3UC|*M0EMNR z7fe?(JUMs&cHqLp=To+a7h=U=8^ce;G2AB^0>2a#J=8%Yp$=447B1VdfMV%D(Wcmh z+A7Y$NGTblcWw%wq)$&&r}9p5?brrKu0f{K4m``>iN<&MsaRoW%t&CcnY;%j#?$iN z^6WiZ4ILu~S=9E@(q_43Y^}5&iA4c^*>1N3)Xm>IWB)gGZ@ON^(QRwqif9j*#+j?l z)XF7#Y|$gp7+At&iv*}a4ULWUoZG0|t1GE@jEEGjZ=c%r?>tpMzP&B9lq)h~#%#wN zQ~c~JmT>(Li2CS;)7B5)UJc_h)vU?#2FR`&{jO7)!*pk2FYB(aYqUJ_DlIVxKA;8CE=HYRrB%l=!(A1| z6AfWyUQ&?@xa>-=UW}_L5tbg1=jY_nH|eVEL;d8WtSx0Y`f25;6f@UFx1{*>O_W}h zeetW{cvHSfS7WT^v05N(_s+Kp4Tf$q_CG0whHRn%xr3{QmjD#Hd^w5ZJq8bu&QDpJ~9kb6mx=2KHfi!p|Dhg1b!3kH<#Q^95 zd{lp2+T_{76$Nb3lTSwn?b1QX$QTy3+W~euSla!f$8G_oF#{5x2p^6pnPzFdEf4p0 z4_L|O?$?%2UtVHy;ET2ZDV5EKqk}`y40#S z(60Aq^Lw+;&hoov>!7X=m%eU(2h_8_yS?hrvHYRh@6^e2m<3cjf1jtef>MvmBH2qG_Oqh$g^bCna#E9 zb0$=k-3u=dG+f2o_vFxtNDT*3j1b&EN);>PvRmIQsD7&{scnk=+vNyH%3t|>PVU^z zRK)r~>SEcfyAb>r85h{I+IISd{tl^(f29vUC{ICD^9_9`FhofmRn(wD3r?Usdht}C ze1aWkHM$$~b9l5yU9d1GKt|gNuV^HV55nV-Ka_zcMw8NB-3K7pygHw%f2Z38659W@p1oY;ve?#vrVn{_DZI*!YmVC3>!#e!d-7GNB_m zjBSzaRJ=YDZAQ{wnk$sK~|ZT2MO2!pqh z4IgS+rf7ij&2O4pIlhed>zG5GD|9B3D%5|`7j{!X7lAtI*Tu8B3T_4&{1X?Gop%a_ zAfODP%AxDq+9!!sogH>@jXcQS2`!rbmT0;P($bVZMjNUsRC0x->E%)oU(E7&B zxFdV618Fp&AaY4{ioBiYL$|pB9ue@Dt79&?UJOM|>ZDgU{c(RD*ja=Y)`s+@I#=_R zHR>10Rh3M+zg}TE6o-S(Amd#VCp43D&Y&bwqz1){TM>WfZU9>h=N zC1EO>dKs5rE)z9!0*QaQP}3j@siFwwn7_FgNBm-fEj3dt>R%z`zypHIKzFoHOn1uF zg)U~PhLm+GkF44#Y#So)-+GK(Qm{P^$tntb6NX-nzH^#wRKM?>5-#{323Pq+!) z^sxBy(ptc?uM}1_;a0bki{ij)%S#2_2oYW5o0HuN;oV9~n|5d*n+9X!WK}0VIZV#* zA{Z4Cf!upS0*xaZiVKPGJYK!DT@G4C1Q`Q&nMg#G^v+A~!?)n@^)bOe8ts67kbV(W z#p!`^2~Bo6{BsLf4|K!)o5n796S+eQ2m-g&m#~7YozXs4vIdk^>Oo9QBJ%7A1}6jw z6mqJllwm8!uSs%Z9&61Vvbw!SYgVQ?E&ya#7W+%{+dEhb{XU(3UMmm=g$d~kDU$ey z(vrG6zDp8KorA1$NiFy!-la4yqK+0voRVbYY8{44OfvfWn6GnA2i4q8i#My%p2}$w zxO!x+wyu#-5jpfRQZl&!P_IXN4z9%tjMxN0TOTD+aQ!GJ@zf>4`tug;#ys5FC1*dSsX;7&BK zA31|Pgo;d)t@)O&@UWM>{O1aK2{q}_&6!eoWeTW-=%xI@Vr|BM|2JdM@o!THhzUcj$$)^6`YcQ=R9wFmyT=U81 zTM{Ss9D)iCM1%0g^HpeDLzXwY5pt$Gluz+U@{flqAGp;*nbf=urLDbzPrxK=hI-Y{ zb;J&qqIl(_Es@QtVTqd`CMmb+hrfs(X#(9=Io}}HUK&wSMwAT{pNbR%;m9-_0yGNA zWx0)_P4lob*`oU0Z~ z<4?wN61p#Xyt&tutq@Gcn4s(hLk+B2)Or@FYrOQn<%G0D=!QcwYeUhqk zgVg7!k_;codK-e<$0`-eJ8vs*Ue#k?X(SdN2S3W?Ql+k^A>pGGe(`EcSUrmJ$y67p zE3RE35p9Y-_&-6z&a)~!i`7DVNt>2G&Af&#eXrk0zg0WrQOaY!xl=Dwqe)YgHar>B z-nqElb9qVhAq9w}KwjCiURrNpSYrQnReiq-%u#91a&p@O%hgj4Y@-X{Qi*ANLYAf; zsun#cE;GL(H7F%3Z#!W?z%7J>AV*5)tT#9B$*(jLOLJPX>>W$cGt)#woNs60RrE5s3)$Hv#cv_*0Fr}{5KafAU%|muo2PU`N|&L z7sn#ql(UZHgwzn^U&J+FiUX*S5BtJJzh1Qu6$ZBcww z6FzmB)8TYTyYPHp)7X-omfOL(%up=pR7#*Me-|1>FSJlU7^Yc{W2pQnB@981IsyNR zRb0JfIli+Vj?l*ll^EKF1UJbu@TW{p$13E)V&v`!^RfowA?1(Jkn~c|zlJ+%b7Z7c zrzt_k4&zxgl){`yl4p;a;ZA>lzZeBNt>2UzMQGIS*=XFoiy1m0W4+@58uLdHhHSV3 z0G7Bdj{_K%3fkE!izcYKvE7qWVjLu2`Paf<3P4G~8XXqyUwA3JKs@DUW#Tg7h&_QD z2$2;!Zs?Oy0e@~r9xV0 z?7W7G3;?ID(;aht-!LZ$Rqbejwp|@v&2|V3;v`;xPUspA@Lt+7zl51)SPWmsytfiq zr(b^1X9doS30K~nL(k+c&Z%s!2X8oHEH+MQ@kmZW5^N;~cfsu$Q9zERYpu~MSFR(; zDHWAbz@={6DFqG{Vs)jHbWJ-0?1+C+i?xzjk_j{0Pu1P)E`xM){d{~gwvl0aoLTYh z73@)vW4)BYn^Ej$ky$5pTh0QBSWybph^j$x|E+$fGa5IV)Rm4NYwrp|8eM*P{I7={ zTzomX^%U{6K{Wonh$|kQ2j`)+yXyhk^OKv9{0IQ=MZJWH6C8C^9IpK(JAvlcjtr7Q znbnr}24pvD*7p>7`%M(aUsaa7V?yTx9TFa*zgkE{JQ`%Y){X}Q2Ugk2t-1VHR9P}# zaYk7;X(VhC6PTZMw9n)OcBgO$C9N%1>!e0$W$g2po0H$Zg9!7+5uB(x=4FL6d9gBK ztdEo41VMe>j2Xn&aaXM$U=-4SVg$w{d$lv6V?aPiIe^U@HZp%OzXbZGcV(Rh*0;N2 zdQHwEfGyv_yL&%{h5~@wEvP%lH@?TJ9FX&at27q&h`^>+Vy(-;E zJ>FC2Nt&x@heyOjX>GTwB5Hvax5!kfuc;>c0&wyEa2=JXqREG799CAnZC1@j<6c?l z?@0&BFk6hV>lv&C(3YSJ55vKAOped{si1sS-#o5~8xS=RIpfRKS53{rQL(xc_A^5I zsNPGFH~W%FO4IXKq5y;uirizhS*hzF9Bk#BjF#;>N~s!h{aDV0G2IA304S>ie9@=~ zck_|dh2X6!4B@$7_=*_F{u55wR>;lV)m3XD zzT3dKzcV%eRqN6+pRRL1dw`omwtDvcd|Z^ny29q14?oo_0W~Y7j2}AZ+6tB&FhO=sK?@J_lI`xZm(JuKs2UMuoRj> zNzUq>K&<j~Wck-tJo^`i>nMpIM}(7LisN@{x)= z&ZkL#EcO055PGHXs(g7D>KCrZJIv@xqp+~OFn`8GSUdd{Dc0`c;OF}pkbvTr8;iDK zsaw(z>6zp3ZxtPDk&F%e7M)(2u&A0$i6SWR+>tFUWmr59Qrl!$BL*Rc@q6ylCM;lcmkBuCK|8 z1=w8dAa5?&>kVop^|MpUq*B_yqUB9IGIEOZY9BQ{6_umGD3P)q1n780@8(kSK!Jf1 ziE6Fr3k137FsNN{&!sz}I}dXTi5|L6*hJI)prKg^k7}La%$i@d&Gp%z^)b5w!}v3{ zVIT$Kng)l_vR#t!X*augVFAnm$JZFT;T>$(V)Rr8A<@ShJl;2HmsDY-F1#Y{G!qA8hz$OSb8fB36xU3i%L#&8Zv2jKQpiI^YT0;jZ{8nS!_KZ(HA&#P`*eA{S}?`RXI5S(~kpH ze`t%6wtK4@LCWS5Hz-?Ne&B$)FNV@~i~ZSQICt5(q`tr=$jmxn0vIWhyW=Cn;U`e1 zF6O#=MA3LsgQ+Fgx!t3)rhMe`=r3z$Y zcR;ZCl;Pg;ph$sisa0C6>P$Srx{{t&QX|oU+C2^pqwc{XSm2qBU|AjLwl*pLjvj4% zqk8!Aquy=s!Sax75bcUQ)l#Pun53_(%v&F|fz+-xFYcvKuq3y(!UnlAJe|*%WF)Tv z@6R09!xn>7Vb+xGP3p%VqJ2#i{ALms-i*|^>Z?q033|bhA}TR9AlYdgu0Y+XSM0`XG?|@fE#T{OT4_SrSb;=J|1HNcSZTI5VFQZpbvwEzX%Yol)2Wl(fmUY9S=Aygp1XR=3rF}Xs+Siw)YZbn;Z8wz8leEjS!WN4#qPuj-9Y)mCCm4tUAd__Z5FU5FTtpa!90O-#2IusR zmtXh!gtH&Q?Esy~{d@gV+GM`N|GVjMPwm*jSK{we;kHSEl48VNYL&L3cD}&DfJ%LK zM<}xj7<_zcAQyyZ)D5jY=q`au^0~7O$|2;l2O2V=JV!?FJid7q zsQBcmj#VK`q$ZPxK@U&TaMi19{#H(%-P==P&-*Q<-J0pfIHzXOP zm^|p8_JlQR&D8-jZcInnR<~y&?nP-rI2;y@N)}wiuPu4&ti%rI5L?S>oG8L{^Q&iv zO#TvsLYAI zw2k>JFncS<9Qgt2$KDU3-j^draK?nr%e<2N9QE=ZJCSfZaGRR+fuawSnDl;(Z-E}D zPB$K^#M2~^pL!hDsU+0i_@*k<#+s_pVN~3qjGAZip$r;1fq5w)>e)_uc&c1iJ;m`B z;hEF^q}6AxbjvERb~h5}|98u4+74TKO1F9^r+3;-vEm|B2r|b-#uBJPxfWrGkckzkb66ug!gUu`& z8j{DrG=;5~daPBUqL>%}3RRjYOGOajpp1zJNbQqFx}} zcyfPvyVVzdPRU&e>the9ROydK9H4nM`*PGP8=c?p%X6UFaat~U7t6tb(7DS&P|zMi zSC)8nLv2p`T0*5hYuX(xmxaqoVAOXgH`Iq{xUT4+DYwRplB zHA+w5PsU7vtySJ%)Bro{>F3!wcubW3%|zH$Nt7KL;oazOnMOpTScrkhHwD`zhcC}> z3&VnvDLprv1scdKqe$C`7A(p1dedTSc0W9W`Ow3SVei3W{G{JiZB|QmUgo{p9^Z@t z*3?k4BTNl6!vLE=lY~kOj$l(gQe^|mK=!&_X2-Jn6*o2Axbv??`>2;^M|U|JKf;|B zt>7*7;I({v;8)OWlBrS`u2e&=z@-%sh5E3=KWth^-`K<|*_hmwD@y%ZkU``Ndlw7Z z94N{*y6!yDgHxT&G< zgMbu=VXe9IH>F(#+Dd~oS*(sEqu)hGKx6eby;?zk;0tFD9CFus6`B1VHD}5_v8t~i z=kj9o;OYl(bPYbS9@6r>7zG+>z`4HQ^#SF0cN}Hl;m_9|_h3+}J`x|{NeAs$@|<9+ zg1S!Y{SY!)U?-RL!!^{?*xfR)h>$g5$g|{vYypDo@{@Q}f{5sA{q8DHNaiWT@EXeq zfdX|La5%m`O*Ab0wtHKWuxq7^`DXDcx zA+P!Uod7Ca!a(>oi_aq~E_72;4?h14Vzc4nP&`P!{!}_zag=3W#&Y}(^`^s?o_6K* z?R;=OSPOa%xdG(;jT&XFkj_f~W;^NhHuIkqR@G2gSr{uxx!(jgTV};l5qe1 zceF5mF}cpbt-OU2^sjtGfJq=eE8|MZ)l3-*s!n~P#ZbWNXWB`*l4SaKT#&80+UiSZ zRxQC2l)Ts9W%$CRvj{!lKC5*Y%7N&5327`_!Jttmt~H^2xBQG!($+e&Mb$|uZI39I z);Fed`uR9+iRNM2^fmRk)^|_$3Iv3=vn5V6y~|o|!YnXIsgpdFv&vC>&orBq!W>Fp zxhF_MB(y7>hr}dYmoH?-sYBf1;j&lm7EX_B*x&V76^s?arw_=w1=;&uZ~I$Zrp%jK zlsw;Cb)bIonl`wb{G&_LBUFd;&F2pV7Zm%pu3M-GX`m7ME^LjYfoJ*}VWYk9;s0X|F?D(a zgRD0!?VXr0jMLCWwTjw-g0PO(PilLGu-xSr9fF=PEETIWS8x7!zqfl3jcBS7MuvyS z&Pbb)8f+YFKP1cJFGcxS-P8|f)Pfya`lteSy1i~kFXO4mKsJ>pJgMHuYm0M`q{nzW z&}Z^J2E!}MrfszC(hp|qm%{09h7eDxNA`$cf%NHGSLgC3)MzMR|zLl7NYmz1;+CsngxcO8lPBv5vBvwZ(TqJ5SEgK?7j zDGguHT}t9iM%6`6#|~_MMMq30iHD$M?e~|x41Ztx6wD}!N6+7nCnA1)^K)cVf^uX< zS3O%WHdf` z7n)2ID?ovvQdm|Mm+2&K?yy>TH~uxBZjJEQgRJu5jR$kEgwkO8%Sws|rQoC|m$`a% zj!;8>dM}C^4AAMm(*!~Gp%<3wuHV;a4%aQ&1MDzo2Pw%+aR9rnOAh6({cJPi3rZjd zSBP_s5714Rkzj{&MScX5#MiZnd2A+s#{G4@!C)WJERYD(2Bw20t!c2!Qt?_;TKAoI zW3GW4)g=Xs0s4YvCCsbKYcX0DX-=X(yQ;wcnG?#_{th-*nSxNyJ_LGp60?bnGI1S1 z$}Jg-lr58Dj;}#)1PH8NPvOEM(`?bA7e*Hj~^HQnRtyo{u%F)*W4U}is}B`rmE z$3y7>?#-XQlL~b*H*TH#UF&M7LujB8<`n^$kapugwgQyJF{< z7|2J%l~6!|_f`c9t2tA;rcw3{yJ%mAPaFOtiY&{r0gXa@NPviRwWnQvH{LTTfeM_( zzV(^8P|Y9g!50&Jp#INt(KQ-+W>GnWG;gGs+$}-6i(CUuP7Gfn9nli!0Q$;sVf|9# zX>xHzHb+l_%#u+&j{1c$&(*`RFvD%|i>l$r2XiU!!3Qwb&=B+f$d_&ffQ>t-`04x; znTi}ofyRKzpyS;Pvr8_zQJ6}e3SVplx){(QjyX_c8jAHnhiU+vil?~e{(VhIQW;`G z)f^WS#n-mD9C>MhUI!368EZir#kUethtAKePotC@510I@?DdQ_nwN!g1nexza=6dQzm=ljfM-FK)#3gzLBy#N4Pas|&_% z(m=p3J=mH1hcZ^mO^zs5bBDv_9uuh7D-s`WC`l8BvY>Lw=JuJzcEEI`c2Ha`bf1!_ zI|@&9k%QLVn;%_^TikY6bo3N}bteESpx0*~FD&*8lJNtbjW$OYDG}NXJ&Jtz8(j?= zLh7Ye>fdOl4!ZAb{8GueyGUBfD}9BMEtBF#K9^S>yA!1Z1*^OZp5vhFCpl)r5AT3* z;;UhUn4zK5?C}GE1qNnhmw*PEm(sRBX7n?Amm$j0;&F!2kX zLMXC!zU<*8`|)^H;@?Bl1;v-bTXd^uwiUTiCS5^NMV%8-Z zSb8e5tkq4Nx^Xm0Rp1#WXyB_qGr>mO-gL8U2Q2%_e6}1ZEVFVbRtPSDZjeFO_=pO@ z$I8D+i@U5D&qwcMw@DdBtJzu}2XQ)?ebQ!F7*>!bo?P!Uv{E3#;lwRti9$LhwjALP z;dCab8oGN_j*H5)lKTO!Cp>DmmpCcA=^7DK%kkFlKo2H>ZOP z;j%#L5X}DRS-9Aai>Hg*=cRqLCo(>K6Ar}JU_|6I$-$yROV6PNnh=06kh6}im%4j9 z2lV=SDF8oUZ@-A!(UyvMUGitLcy3-Qd?SN>P5&_E9&^RvXN_Ca8eb`0H@br{X$YcM zrhZ5$20RY??9CrfWIut5cBM*fEF1H5an3jv;#%ZWCwQYd6&l#aH03I%G1ESwlF@V7moxLn%UTP9UZ%5) z^EC<{?NsKz#Wj!2+7<@7nUO)R6YiEBeBCNp3oAk#1zZZ8awNkw7rq8=krZ1xRaVg~ zIs_eh2kBtQEFP11MmAU$pTvuhGIJ_RDJ>ymoGT>eaD`9Lt>$+ZheiPPCP(xCQe;#5 z4+jbw4gP`0%BR((xf{2-`Jgy1(g;S(7!LFD z#!KNin2Xo;n6e^x(ajj22gv3MpLgt~Wmh*B5PV=5$!i5i&3AU&$)M(LIKNteEVUmj z(m%oieB;`CaerYpNQQ(#$Gm%%syIkYtBbFtsaG2+AYV|&$dgyJ*|i+`i4oqF%PYr1 zDvcp(mJp|S%hz$M=nC}+2SvgP?W_96Wxi~zjJo07%)H`AYwQW%^gO)29T2$!gaS=- z1sfqI8(b%{NXAqvLb-sr3Wx$!u_keu zcFbU7oH81$vNL)SQL$kvF{R}+l&>2ptuAn@dZsr|=|w1U1V z;gyObMsxpS8OU-Xc5|_Q;CzNYaed45;LZHm@6cJ0Sy^%NZt~vG zUxZZ|AHai^+OS^NzT@874$#XCQiffwa}EUiMfcmkz))b6)i z%?Xy~f5~hEa$+1oHUH1dHkzSygksP z>5gY&>7D+QUMBGJfDhWy3z#EE@Sg7I0PdWx`p3pa7!oI10!uyK2U)nxnOYDDJYE`LNJ1?qpb8{x14Vhefiz z3=(>$(8kIgbRd;HWF3KL?BIKO2DkOFvGDv>*HX$9`2y+Pm>DfWi^&cJu%$V1&BL$O z=N?_mbkWe8o`%Up)qo0E&^1L6c`JZyd``Buz_cY~o9k^UWa<67ojrT>AmlHlGO@?T zJLB5`PTQ-S*&8YG-@?<~cP^rs)A&Is1?PL43VqA5!>sN!C05@?^PaMvK1 z1ef-+_Kwias2lXR6u$6ERVl4hU0mb#CyUQYgHZ_0itn<0VgvwlK-=$W6pDNd%*LS8 z^&ib2?UN(MuYU5H5ur5upQ@&`M%C4dS-U*}(N59Z6Wg^i}{xi=6e zwjB)QcIJ~q(j!j(-;PShwY(~vXkX4#aH2v^BY&Ixf3s4FLRchvm^~)nt~~ARy=$DOR}PD1i9TRyyiR%g{Mr-7zlrWgK&?u}{F}7Qq(Jo& z!~6%q|Eu$lVdsqKl#7*9YX8mT3s3|K_aU4(iTDL;cQj82ij!m2KVhr8NpbrdlX#AC zbqS->@#Bd1zSBQ>Kem5!6n<%4uHiGxH?^k(G%ooP%sEv^nvPdU-X@7n_x0ePg&TDS z293FZExaTxigMD)PcT7MFl%o4`94OCfm876HWXxa?#e}CCA)6^lfb&a+wb+)nJCS2 zP};LGbEiCpXKVJ!tG{sBg-Jq{YT-EEs|Z7Ebd6NqC!!-rZMaQbsmZT5!{2~HV=E@h zIzIwC^C$b=(QgPGLGPgwS9w$ZS^T~63$ooTzq}FtR(w6FI2rZjurE;La2=0Pu-djo zfNF>)Ly4;Ts&GdH1~Fq+m9)>c(w^nhs61Q}&>88$%0QTWA&i%M^$}i-2vnn4g!b4} z302=`XN~`?<$ezasi?|y2z{A1cX}hF-=E{XDgoN7f>)}0Op3LOQB<7&XQu)RpGYKZ zxULVAc=W$e-DDE56ntM-@D$a5pM(=pOrfhoUu{%x=@* z=W&jxH)(=tcij}u_2>xmm9<+M6EXk3OB2N%seKh7YMEvwb2NT{Hhj{oQE(nMZHKoH1>O-}&vX#hdc5qRF3>E|+oU z#fpRs)?*p$y7)n!x{RtvaMVuxRX1}qY^QK3s+pAgslfJIO639kY&5CI=5_2f{v?Wv z{-(SOV96sTI7Nk%aGacINU1|GFFXfHLyiZ0U=%dW6WP{#-%RIRQqz;Z3tjS)JPa^F z!ziZ`@Nm1j_7z(zmfe!;VZpWFVDl(uowyKF>xR>|F!$MbRnI&rDvO#RC!wWzi{EHF zZ>?5_4N38JoP}g0A=D&fHi7s{_g$i|TL%0J6?#vWRZbWI-@Y14`J@f3_HamFCKg8D zQ(=xy8nj!S1elM*qouia1Y%Q*;#lq#>c>eY-7DoHveDx!;k(UrLhlEb1p<6D90;Ct zTF$q{t}`zV*%K~claPC7Z%#7?@51w#%`VkqYyfQ~3FGg{^b)!pm!S7#`NYn!;;3@q9zKDnJ5pskQ+q(?|Vq%M(>KC+|7?yb7LPp_CRg}29n z@?M=-UUfW~kIk*dWi({n@bP-FA5~U-O{eyN+V;X|J+8M^XiBFf{Lx6K?ZQ{x3^N|+ zZ}ZPH@WtK?qn)WADQSdsSc~YTP5@(eSHVi^6G~g`4ekO;1nfE}#Mgrw0cwqi3;#Qf z?<9w=X`dLLj^C9jLV););(&W3W1AeV9=`mWzjPV&YIZ}jWj!cyxg=S&FZMQUqlG`2 zKGpMzSO0vOKh>20cojgrlj%jn76mtPpe-*3?6%#fDrmGWAI?=~$>j&Hh2aRrOG;?` zQ7A>MMVHnWMR1_pm~5_DHfHn@zUATZBMLuuRq=~+bl1)HEj$9Dgs}WoN6Y1)GO6T& zxM5t2LAExA#VzSx$w_Um$lg0P8M)9g$wwry2vqh;Klc-xp|9emhh5H8=0-fNyzH3Q zvvo8p2%Er*hkePCKZ~HT>+U-K7yo2xb~H}l&ID8=QFKm&7JnU`*(hYaTPXR}QEEM* zbB5oOM9dmX?MBxDsma{s*{UuYEO1ObA|UPbVhR9CcdSWuNW1jfe1uBjzlCB{daEFd zl*!BwVss;Kwks8Z!rN(5I`c!|_(`&CFElF&?8NGPes-~cp7L2)uk8zF#Fwi8B;6vV zLY2k)kO~#i526sjFAp=N@@u`P^zj$%O`|Yt`X>v6=Swp0Wbm+{?{4sGpRp%6?a?$0 zN+{qCfYM+G zLfM{AxO1w%oD4+N+WM$5smY)B_P&#eFV*|%`%I>wKfPM5TMiMJ%R9i|EsmqIQ?-&p zxaR-4vLN9k4)bm|&+p1L(1?#fTl4V#Pp8>q0wgY8>7S3jYr#&hMp3RRNkWCog7U;E zh+CK>%lw=aW-5o6j=fMtqeRxK@n2#0>7_;3E^GRu33cO13bfPF_R>RgAP>(5YCJL@ z1cCK9SeoA-G|m$%8)n=1;$d47Msy3$98w#gHK zV?tB9B3uWVH(4VC*s}B2ATw&!s4);wPmWXC;m9=mc(nb=Db{DI2Y6~cKRhP#o|%-< zxGJEsHK4H+#>LGw?$>m6!r%Zoy1YC^NOYY0ex(I4DwuS}MDgNsDH`AW`wB?aBax3) zmyqN;VNMZ&tBw!&B5ZQZXH$O{gc{1E(}Db}6%DQGNyF*+y9&#Sw>Kj-LN-9Bx#g-5 zu`32iO$Lj7>WZqMKrhS>3agC?Z7Vtbm8WD6z$mBxCqE zDkQ4`M{#K%Yq4%=AONroXvzqRW$Q7PGkqD*ZvxjUzviId;SbaVG zJGLy#dCNkpM!3j&5}7Ff06uswH{fIzVLT)HI{f>5T6JCZNKC|5F?sRi%w||gr|D<* z%H$=o9U(lO2`MO9E)`ppiH01w0HvxF4w7hv5Pp=B;*@fF{eJwWEUW?*@FNt;$abM$ zCohq)A93y8Jh(0Mwb8>N7d#- z(J2~lI=Cv1)Vg_OAmIdvSu%UG)-zx5Zuwc55*$4Ic=t-J(I=(^T_9`OjMzM@Y~q)$ zm7zYy$}E^hO0Ir49=Dk&aG1BAB7w9TDI}tpl|t6v0x-X@sw8A>Z!x#r?bJI z8bRgwzWg!AmTCbJL#EXwxf-j7(j7`>LX*QNtm;XB|ECWS_PS8c3>sn-o?dwX>=%h_ z>)U|)n0QCiTlJNlr|PjsoDHEMSlUcPS7q`(ibi0)Q67baKK(PDew~$HO+&p{!O$$2 z)kTptZK>?Y`}5XtAvP2>)DQsUF=(Z0$PV=q^^%^J>g1TYG{5hM?>8wZsNax6^&nQ` zJ#VWjyu0#bUD;Y%QOxC$#2YT0!UVF0Zgk9L=7&MH@hbcmj3+8T;`L6u*ECC#6WMVg zkieCfxPMufSazfy|55xBJ{h3Im>_p~yX}pg$v7lwb4SW%mL39l^WwB+sd^BUuP5?k z@!%G$4zcIuaIR%dFA2ALgdFYq1PPnY-TySE!|tL053IJ{uroWbYtaaPm`$F{uRi=$SVa^-o}LY#bk$42 zk&KJ5cCET&+`=nXdf`la_O5cg6U2efSZ6%9f-8as);jUxf{c)j${O3brUT_8q^qoYC~-nN4YwGLf9(F@|oSx#st|+3`CNVvSKVzh zj@aeSp%5fcwf1y;RjMEL&}2`Xaslno6;c^e+wGFNSksA$jvfCHO^x>V;ZJX%7Sng{ zf`erj7bsh@q7|}zWY-)fQ%sOi0%3|S!eq*SB>#-C$&q0qfrw(O<}(!4_BKf*d(3I* zO>In=-OcT{_*$Nl_vifgP<{`K<9oF^qVKPo%fCi3NDZ?SuUY+03j!-rH~g*&+Af#h z8hQt%npS=}kT4c+b?ww`ln>s~t?ecSTohcEkn+|jK)YWte#F+RH&zNs+SkTj#8qKs z=5U#is%NQ<>(=A2#q7w&rCB(Xdi0F^Vwry>L4kQmRFFu^b4UEp)!FCpC;{{4oqAL; z^d^%9!{9Hm;tj6)0rf66LU|&BUN~*Ev-$kX+1EPSY4=rQ1sswI!O&d`$LC7Y8WxDf zXQlFN%vPuo4m$nC@1Fy7^EY*|5Z`By$ZwE()kBKr`;+1>-xjj{Qn7RA7#Gudkhr#q zelbc-t_&b3Tlto|p|!HpJZjZ&OsKVj{3a7O+Kg_;&(K_{?@W*3RAkV%x>;!7uahw3 zTRos5&qPVkiRMKbs5#6 z4X9_UyvigJsFlMYOyxi+QAPClxG4J2_A2=#8_;$uew72_QzZ%Lv?Ab(1IOCQ{a`c! zzCp4C`Bg|c$cU+)pjKzRSqn-@cdb5Vh8+GrB%m*c+k!ju4xv#z6V*sLos0~?Cn=cZMz$R&L#%~3%J;{CzKYZh$gr8cAH<}y(@dOdrR31z>IMgI1 zlyvGrX`BW&^mNdKZq!mmpfU6YbhJd#k)b}<|k`0TzE;`0zNydkJTw24}|{t!Y>iVN?OkIF(ub&WSj z#Um}Qt@hc(Ti=Noh%c3x=Gwd@rM0H=u7!@&qA#cBnpac3yKvOxI)57biXL@j+8J4{ zkJNNYEaJ#Gz_6c&JxJuqlNIXn*SJS20-&1l%s?Yumu8h*wTksw3mFnhH!wv0?Ki~P zR#>?hX~c6@OCD-q*J=A<9*|7L*Km8HP~FgoJ?*PZq|b2V<;g8_LMN96sLrZ|OZ*RG zPapU%K$~gOV_T9Zo4ak*{sh|Wx8=v(qr*pmXk}+G8vnmzY|2kZ+gm$ZN8A4*v6=qg zNo@YVK0gXz4!D<3FyhqvCCHp+X`Eacj+PF0cMmt0>do>?E0B)pYtr<}aM1rEa^x(% z-vZSm_MGzI`<30DE5L28d}`l&gwx^fcHrL;iB0`!Yr6`AqIR0YLr^)J%)+|z`KZ)L zr==HL%$U+luGi?lt^M7l!!58z;qic;*(ft#%H@9F%@M2$Q9DcVP2j($o&y zu=j~6URvPMb_LyURysBgJJo{>Zvv{;c*y*VRs*NA0cZiKY;o05^#>gU*WjASBR2 zyRf+w1&>!nfWQY0Wi93Mr&3p-pdrv>((IhukG)l0r)oEA?n;>xS&Vv{S_#HhF~b)z75O&dT2K@XllyrA{K<9?CK zRBt~EYSS_9eM=st`$6?Eamd@;Hw%N9a#yr*`?pvW+8t7sb8=KS-D66v)}StjbJg{N zAc88K`n^Cq=VeWPE}aULs95F%lARB5l|!Nwy^bx+7k85JA^ofhNVl$1x<*E^R^S-Rvwo=i(cGr98mx{^fgUcFf4b}TI z-1(|IcQ)j_oX{QVk2F}D(5JJQ`QQ<3ojk_<%b@tY@@DoAuUE=`y4C_`h-6eAEdy(! zX8^|RPA`>;)qKdGW!ugK*P&~7gA_^wT0c9H`=S5u0 zFc|PYXK1t;)>cVd>Q#89gP4gbsCCK-?Nnt);$cW-5YZ%8C6s>*IPc9*nr+cM)V>bn zgS2qmQIDo)Mw0IFPErVjw91o%B?2nvL=}ZU-CSpO^o`l~g%(;s^v?9Z}ml%Q*s+k^3o>f^=KHDT@v*DA$JRr+PNSS9AyE zfyuw1CXbsoI;*iAcwf|p!q+M61c;YtMpOU&W%||mBu-X3Mo)A)ZWLq~`u*?>jUek; z`i)Z1O>Hf}qWwVcF>5W95WAmBI30a>SX})|Vy7v{XX>`9eMV(jdgIS3@0Ssopq*0z zEr!JzmQl4LlXusQm7nIv3~tB2j?zdaB)mTUkb~jqnLF90>4r`8@mx{P6-||wMUILd zK`jZS9nzrPfR^5{rmgkg=2QVyoOW>pPdjH4R%ADm_z!=LPtB$W;rmU(KXM6>*$9JH zCZ|buw&KH829g?-%b31Li<5J7gFUV{vszX)Bf~K^VcMi=o}40IZ4Y$vukevbU3G-a zuYN!tPnrmSljGMH58f4L*J8+=A5+EG$d-QAa*lMMfq7@t2Ys4q=~$c&M#>ZTyAk~(|>ZjnWab4E&1=?`3L-YfjM!nsEVqA z0Haoy>v2cr(y>JdH%}OSo<@%AqD93iD-ibcoPw8U-NoBI3d~&iEi08CP!MW_qDri3 zIGL+APf!gOEfaJo>oNhzp@~kXxA=jP?A>}5e>HHrlW54q~u_h>o zHNTGo_mW|4YxtX?;X1A(AQx!V98(6&AXQM5#F*QUl;3P@&6v<#n19ne5;-buNs)jA zzlX0%F=5%rZ?S5jm^iU@m4*N)>VtB0h1J6~dy6(!Kp@(i>isYHnjUYg;~IvO4ll5B z+?>zkKX<)@o4mg)4njKvq(Ut>dB~Hxu}tk74Vh3I&_gBVu2t%daW(-#P<@w8rP6J(NX$_1(qkVtM(P`Yesu zkteJm(&a#4X3aOcLLxBQoj>`Mt3f_*zlJgn*95UzC##2|A<)2KsG>ATgRq`s-R0`Z zm)ELgWzBE8lU4gfFDMAJDJ|$5HhSm8CWUuv2dhT001oNXN%EyW#>!&kKzcg8&)C|6O9=tAu_<36YS?R+)A z$u>KmXh@j^HY7&Fn5o<0{ppDLc1y>h?7X~t0xW8BkeIbW$Cg4i^mm1L{u0WRm-k_c zvZ=Nss}q>seLUZLr}I!3UJ^-= zbE^|=sHadzMW~Y4ip)q=y_E|OWCb^E2h$DnPcoP#z0NYro`HnWm`U^ArhbLnbRKu%xs^i)Y^z|LiUG#mR9r^9EP z{CRbU%<=Y3Fg9)Rng~u#;*1F1){$5xy{C^hXX9xZgqL;df6<{jf=;h~i_QtUXpa#T zvDrZfbQpySKV0vbh&>Et!OXC$PgSMk4-C6w3Wf*9^6lecI&bdCdv`i}{H?cR5`ABX zqc`#3z+cf~<#L~Hr|KuhjVy;twx$c;X+VW@J(O&eEeBO9SOkpAI|Z~bXdV1$3`{4 zusFG^=r^@su!q<>CiM!jJSmRCnxP?}*5YQKX@QM05X`BKa^ti92ogr+>w}%R@)xJC zZK_uIrRxg3GhI-wA`M2eM)@e71`!`ew=AVT{_A1*NGq*0Jg*#E%+BQQ$F8p)8~bu{W_b{@FkA{#B1M^&nwO{Aj~;CO z!;k_RECs(~fs5(O`T37MYYT;OvH9u)QIcBKe4rh>_lEQ4--s=({NzHrCL`m)AmY@w z&Wr;Tbo;g(AXj~dp1SjfLZh`4gn;?1V662<3v8Xh{8Yz*^>IkL2%>G9NziBm&^n(- z#b~vg$r|UQyjO|Ah%s33UM&A9CdH#=Gc^O-p|dtNEu(Kmf?^Cd{s;;zqfQcWa|AYo zPw#b~`784PKwZG}2GzB0{Sq_;Te_0qDh(u4_zv~>Llo&If9B~Td-!KlCpTosv9`1H zm>iZ+=D;%)O5o&>Lsn;4Hohh4raYL}^fa_`0F(0;lyGY^;M8z+69y#8KKY)=wN5Y0 z4?u;pj__|+<0TR(tV$o8Iu9pJDk87mRLZtC_~TV`a3*T^`q}$Xd zrA#WXk$N-!wVcd89La80q~di4SLuD(Z8$odl4hj2930_Jo<0iqyMZ^(nx91eJ)4r6 z;1Lg!q6Cc5?#K;h3`tb^$y>ajlTevg0hrN7gn2b)B0+0 zo2WZO7O-Zm%#p`{q~$%aw9FU#Ul_pCR)qR(_B&bDbiDR>cIVHx#XA{+RK0D;f;`vO zGmeFZCE%N0*q%R-5{mLpX7`(TmARrT!+naP%uOH)tE#Wk&DQgbb6}vhljmO^d85qg zfb0qjOQNv{Xd{oXWU@$7^D+WtwR~BS`iAL^T-wn(3>11?!k|SPwo1#go2gx|E<&Ab zyek<%DSgAcG{|833qzp-0lC6#w(4xu$S&?okTPn_TqQ}kg9k}*wWf{f|1wjGCYJ+9 z`Q+Pnc9%0GWGzcETmNBohsoxayjn_B8{7aa+T#FKCyzxG2 zdUETUOrlkiXevVs82PPa7B8TB$Lk^GEdiWVN>Dky)ittw}Gdekuk~CtXX}=XYjQm*m@Qk6Y@;scS1!AxJl1$d-D}NKnN6QoPX8op@ zoOP_u%&Pxhw z&JePDD6{#ghuiuXt>S5Uc6MsBFGYUQdjSmJd3rH?KO+~9)m0r1=Qh$fbWO3I*c1D{ z<=hF`a`h3cbC04*mP3>bF3kT3TA|W#1Gjx<(xQM&56~Cc@Et9DFmQc_G+(}LR^8J@ z6gJ**lYr4Y&?S|?5EX){m7%b0{n4BeXvAW6!g1=Jl4i7z8;(-y=F&0IBy^*Pbbz27 z_<9S9e)t%UniyQj4)k((Bis_*Ot*t|^j9x@>2%T=CyQi6sp^TR6gNv7%gey$*l}VW zsnf+4MkXKW8dsjlpnsy%4~P?QoQzL%v(RATmM)3p%_ClA*#-UcJvj5YJ3BN-tSHsG? zT|80mRW}pT<55gsH1)4f;;!Vkqp#4s-^#+jsjxt%0or!_%~E_5jiA^o*ef3EtvbGd zg3woqMzI{Ohd(qn&$NzBkl}hHR<%UP+kklkYth1^7YOvCts z^`G2o!-zZbJ4;)K2TO48eA&{}s`u>*QZs{>sm$r7^ zGq&o}(ZS}@LD@87*VzROv;!TE346A-<0~8;v|+wh#NRYa>uq_s2N}=hrA;Vw`1EDH z2ymb+z%*s^;Rv{m$8~`q;?V~Hh<;KEdExj7hvmWHR=uRRYTL^qpXkP85n8J09l<*R9Km4f~pjI zI+3|MmlB9`h7-F+h=@-{= zL+|=khrBdgvG7@`BI25StoS#%6KiDELsG5S^^-)Alzz9WCEK;KHDlPKn2B!h>W$jwQOy!dj40U=U;3R4>LR=|K> z{D{$Znm!1|r!o2L$U3^c{&3zbd7_@2oY6fHL-JvoGCEdDAeYi;lQ~_2GK}Pf|2e!B z^lvBkMk-eUo?~P+>kIEBXD)p~@Ta&{@MU73z3jy6amx-fq-W7ZmN8XaK~uk{f7`P1 zf{G=K%wSEsE3#Yex#DCE@}$ipeDVhRS)${ZiL_unsf+dFv-9%@L0UpanLK#)_LFA) z$eubC3y@Qm%=lv#v!Ee%(dRsQ8FTZmlB05@bi!Vm2~u}~yZCX%fz ziP&5&b1MK2doadN0_BN^L$0AaXIF_9uI;cb)accTNZ=I`(XOrnct(IoSM@$OBmpqr zQQXGle?vge0Vm=sK$3XCFKvXZu)Wq_gm67t&j&V6ii#S(lCvGpElDpn<26zE&bA71Jy7Ftb+o^~8lwyB_6(&R>1@LOSEW!}XYs9y>$DO7@4 z`u9vu-HX@3nF6Dou5AhtvbO8bgBN&Vzx=;a|c8 z};1da5 zTWR};9n0Xa5e{e~n8D|ABi-v4lA1MLfBrA-bhddx*F&=s($Q=lTBI{b`~lc3e*@D9 zJ8GlrBsXg#-dwv~sw4a7Z!v-Iq}Vv>SVfK8yzH2l@|+YXRNurGYmhQR0@IM{>h=30 zs7$a>()1Dm4ICAjt8RSjG9!WUq`pC)5(E=?kCGw$?68n1@<2_oAO=$nmC`N+LPR1@ zGvup>oqHsJj=}{Lk~va}T{U|Z?x+hT``z0EbifpERB541MS5b&S`!=ks$MsK{7o&& z`c#}t&v!h1rn`XrG(0)bHF4{>*B)||&6MZne7qQqAQy(n+CaCsE9Jqr`O^8ICaDq0 zaJfsI+!%Jtx*d_v#cprzf0f#Fp9iQYg7D1JdT<;zjHNhI`HO6qceK;p zRwS_1nP_j9WF$l z?eKK)Jv_pdCA11`9*^qMj+D5ez?oT(VV7xb`?dJ?xrc(GoXra9Aq*db)B;AK?T4VJ zNiWE|q5~2zfz(1WNyPg^QRg&wFZf#w#_@@YXo&&LYS(yoK}~6Sy%iUwfEc~SoEjCX zX^-xicWV+oiN7w4A|m;sc$Q(GDwN+TjU`rhQ|Obw7j1t$5VHe$(zrSrmCU7Exfy83 zQ4uh!g{K*Rn7<*TfH9|*iQxpFY1o6@vwX2g5 z5VgUQb5jjfAMGxmi#sS1^=eA;UAKi?29>yAkVBW52FmqPC$tTdW7NCJ=?wAjevP9{0P5LM#boMzX7t=;cl|&WB4g!KeRFY-*<{{k_hl)@tLe0w{ zO&fs#D*TLiJ+yO8@|i{8Vb;6gV^5g*>W7cRs`C84Xh}&KFSbu|;O+IrJ8;#~ts`x` z5<-G<4`Q!kGpz2%WTx~kjtzdG$!?m#w~$g{k{^=|Je|0iP&q>rQF&I2T4Ky^fIS%5M;1o^2yB`0g^(FZ<51uD(_GB*{KG z7W15JPVd(>8XqWQ#$CCK6;dcX_@c|P{9%QGT2=k|Yj1S;eyr%BsO}~C-Z(8q^G+I1 ze$ezgsx6f0R3LW!P3c}xVxg6r3LPdyd^W&QEz&XOr&(Pp#ptqHr5mXum02C8F$yzS zlh@1-l*2B=OFbzs*LRI8(e)nAW_TFT2RxAtk@n@VWCrtLlq(rpr|PtcLI;(@xGO@O ztg6fxg*=DtT6QZFVY6yg{8EHl0IA%GvtK8KSG`ZXCiKVnk&ojZz=Vh*)7_F}CduqKU_Ct(Q=4BF zH9$9g5#s_u2vv{j#)X6^fy00_NQq7KlJUxDca4SV=|F@$)xTVwzPBkE7B|20B`Rkn z?Qb|j`7AuZC|P07Ob#>{3;v!A&JZ7StQ_xKIrBz(4dzE7lnlsMV48M92kH!Hs~6}f zZ8KXazcXNh5hZ7#<2gDHHFOL>q9&Vs)36Go8^>Z$^9=zjulJ*RZW!xInG;Td0u z_j47M#jm?j5Ji?W4kIKeQ2B05&t>5w@Qcb_&N9rP!^?bB#1Cn6zWQo@D&qI0Wg?WebP3PgM#z>@Bad zSxNU(+u6nE3e^TYFgwa)kk$894pUet^B^!9kkG8d#RK?o3b8XJH7Yv*=?Q2L=y9Gc z4qxhaUgcVs?Gl-jlT2iLW3HN~Xd(xyQdId3C_g$D%D*jErGe=`ibDi&%d_ld3=Z(1 z^>Pq%s{R8!d!OiEqM^T|ks;`4>!9!8yHIW;Uf{Gpw0QJXBodN~-bN^Fc66$@)q3Ra zAS%p0;hEZoCSD`i$5MM`kUko;8wT2_AEA<`76)82J7NCA>U}s1F_xC??;$kf0Um@_R5mFS0)J}iwxMl0zi>)-RGkk>KGb$4NO(vfeWj`;GDFBi zSr$UZXO%{#*Myodm`Z>0h#%pjE==-v^ij}HBf{paM=5e0fM?X>@%Rt@CqIy4xs%6j zg^f^}){{xCr{b=KZY3S1;bCwCA${^z$vXvc5Vj$c9swu@5xF5$-hp$`pVO&TciuX; zO~^HYzXo*tuhLJpA;Mfi_zJ-rM?}ymKSB?Xc+|(AsMhN$>5e6%BmLV2?NO8shd3nb zNVo%n(}DLCzis*FU*V^~xsXWi?H$CB-lRbz)U}7g{16G6n16%;Z1QX75S7!V*c5*U zI!#m*omJBq*>OaClvB7oWl5-`?vbrq zm_Hp@obo1wpIicJ7c@BI%zq0!dT*77Aig2RyI5>gnt12(?Fh=$q4)<>uM}5dCPi~5*VpPyaeW}xt zhSWh77ke*!j*<|nIoj$#E3?Y_GvF5NU;H4@Mm*BiO&>yvz?Lovyv@svpnl5T!j9yaiO;R(TnguqJ$}D?5n z7ND>3@7u`@I!bVcS%%!@wZ$hXvSz+RDq1GD-k0=BQoP_GE6EpfI5y zDtIh*m$_s{c6Gy#qIqeg8k3uX3{F1k6r}`NHYCAH%MbW6nOvx_k@lvOuUB7rg058* zfM178v(QZpOIo_}FOYFUh048HjY0Jv=H*&n)Eb}OfOh2Tpf~2H!UL=+4fCR?B;zLy z!F_uXRGs~X?njhopMke<>qeBWN}bZV8+oZWYPb4?Q7I-%3Vfs%XhPt6;@c2&HrNC* z8&dvs_9Is65#H545e4z8k%|CcScK@5Gtg+yCUa8;^@%;X%a~-?@%f+T z^^(?@-y@M5l}N9&OLt)rkxQtAjB-bo{{MssTaXtY^?2Q;B|2Q{a8N}u>wpc*Jhf%? zPNp_PTT(nd>M7UYmXl%wSKPD`=rJv!8fh3ImT#>&#Q+B}WJT4dkb`t4Wwek`w&I=h z&ZFgW!IUbf5Qzq4vQss9^g>w;F5L>^*-iIu7cj*D;i|H*jZF7f>;~>qO_Gj4tZrQoadN#%d~nspdi`|+XvE4?y_hv<@~ zdzkgU;w+IFZw7CbTvD0P+C#p-Sc|$U+DONo*%_rEBv&Yp`{DEg#()bBI9KFQN>{Mj z2jO!Ti0*GsL>TOQZ~hAy>14uI`>_1jZu7qrIMSUjWluqrj!uwBYrAFhUr|V)e0IN| zP!CP7GHUHVF-Tu`x7(d72YYS3)os;K;{Y^)1gC7i2euq>`)rm6fRgG4CZA?W)4=pm zQRE!$z27gzu_OK-=7J3jOxoG~>OU!$!0dG0cgmzjG10{ZYfiZXsg5B&ZU6URgdXS- zAFuxZ8D<3M5RfT>kIa@N{-bShP0iAUo!z4v2BF z*)`FHiK;otK1J1AbxREG^;M8H%kKx5uP(nex=Q^6jOrmku&s8^u-ThGxV?@!2g7O= zD?aC@V>F0ekI{zQW7T>lnaDNN^;r+sfv7Uh@GGEg zv0b>^#E5};!;QdHEZm8xiN;c>p#dDdmX&+5LuxDx2oW289xSh&jNh{gwLhwR-T}m%#}yfBBSG6 zSp0((MyN57v$*s4U9h3bNXc6C4wYFV^eEFh3~y~y2GAG7bEm^qkShwtZul-*i)g7k zycZ|&TjDSh7yXtpL8wub!zm7JJ&IxUR=SR?}DHm4a}^ zP2iNOl@Ds;(<%!-q@7G4ExlbZ#J}C(1jyg;ZRKhm`ferf=eMIokUS<;h4E4S1bi93 zj-6B$W2$rEWFV&XHdG)H9jR8$3uaFvdx0h+zZVT3%u~vvfGSu_PZDOCuq2Zd^zX#bn=RYwYRXBhF-(#%BF zn#&Pvz_-SksRT5VWx)v)0X1AU$yEJmhBpl%tDY*+RTu5wy{6YPzVo0D9Z&@>YcaSy zQ1wy@_H6-H1`Y?Sg{%4M2zUgeDF}X9?M(+2e{gB z+owhTU1y?I@v~ms*+PdbN?VISU=M!c*iZJ4cJK~vJod+LH^I3*ovACL-+VM7ARdfG z#F|voSK%EWD=%sXSlo8QSM=+k79{p^HOp-N;HGc-Ap$)`Cn1@;m6}0ZwU7?D7%T+> z`B2reP^usek04Q_72S*qQf@mKo{jydwQ#i42yv8xWSytA_4&5)ERX^44bp_DCbWVz zArt>!g9jPhu|1av^b31Ni+tz#)%3hT$ zkQQJfDQ~EfO5T+y6=6lnkW`YCC_DN!`t|xr`kONXyB^i^M-_Cwxbm2rN)IgGNHIA@aAVgxS zn#<4dn}+x)pQ1DlmbdWeCmWURDyl_=vDN8+*ld?E_&Sa!Emc5v>(F>dWiUlefUa?~ zkQaA(j0=GP_9Q*U>T@tc`VO29Gwo5Vff0~MR1;U}In*7jUXi<(50KEI>FJda^TU5n zF5HlAF^W*|5vd^=Z)J|TJ6eoytKO;lW0M+WaQ-qx8ly z*yPv6_&D}LVg;OOz)DZ(-5S!PAR?1>DTS3260fWAaVz{N3@1ClXOhvbH2v3ohDP>G zqi(9L?B&m@!MLnmJHMrC`QUzd)-{>XCPG^r7)(!Sc&<`FeC^Y)6S^SsZ^pVPZL@v_ z;b~rKr>qO<>z4Wpmys5&Dg(PSl0cPwzR5t5GZ*bTv!X|J$&7|aLbR4x#aQu|7YDXAS8#A!2bs{4P;YZW5=cH>vK z^-B!Ykjw?Di5FqbL08f$BSUSj(kdtk=Wz9Dx&tWyhF?%tLXb~7v|f882eu}gJkg8H z&wM{abqJrbhw%Rl>L1I9hElPfhnT&_dF_ck8g7Gbr19BsHj!;nqk>Y&<<|}NPv56T zb~8=TIf&y392}nPTTgv>y7*bT`wv5T%)#Za(8tHi_rk|ba3iHRo}JlvBus`Ro{2m; zw9@x}bfY)gNf5k&A}M^ROXzfUoA$IAd%4OhPlOq9j8`eoLqgWJgU&L37PSPi1g?X= zTM4?XA+cB1%%X)-FUiL5^mS)qaRC{n&iiFuMM;i<0y_PBO*(TywR@v#Sh5t&VeWJC6<|!=h~zC0G@ZNKr&CFIB`eBdSIxBti{($z zA~Xh$r_!)OQG4`E1zOQRa`KGQcc^!#(vo{Hg++&ywt@sdkuc5*0@ zMh1Ql%Wy=VO3Va9J?+r9$4S)D91hPSudNs&Q?uuxsVkUK$!wn(yu0ckecmj8SaVnv zAjg+Z`osluAI*e#)Z)ldS)9&hR=8HpMKs{@yUo!82WF(K` z)5kW6=y$^K9s+|j{X=DDyr{Z)8lHpLsg_Q!l=?j<;U?sn=l@DDdNLA{2P!D>t7UrT z6n|n8$tq;Kg4j$dQ6=V>69jbPFQxoH*-j&gjN9fKA3hs8Pz!?$*+j8`i2128jesBJV zl>Sw#vrxH#?q&O&%Y2>JWgUP3v<(;CLef$R?K9*cW4Hyr4kKFn4yU@vL9cDNw+C%08*$MqjP)}|u4<=w8oszSq^Q{%0? zNuy6yenqP|tvy~j6CPwkD(WLJ#4mNa@{UV(56PZO>(+u|=Gg<>97$Wl+yWhMEx-?U zmSNZH^XDH=hF1yv2x0FHAJh6L{YOutfOY#+tW(@29XS#(+YGDKea|`RVn}T@uacO8 zH9kOtuBy|mdTx5RS&;m;CWw(~a7qZK*xv*igy3?!niDbyCf7#jUHgE7ME|S3rv&1? z42}{fW9&us=KTD{gQxPo(TGMuDWMvZs+2FYb=2c5+7Puw)w90=VR6#T>EjI%EZd8r zVm&E(nyL;tGd&W9tbC8Qf(HEvK~!a5<-+f%C@~;1-MSMyCgfI{1D9ra)1b?S`lNzA zb+etuo(%~>HReZ7XMI{FaAJI)le*X8N|p#b1|ZN5W^aPyK#KyMc7m~Gh=7jtK=nK6 zu69ZRgcnzXP%|(Q-{g9K(02fJDAg2zb8_9(A4cr_DNhR{E@0=rqc#C4lE6^Va`=_3 zb8`W_R@$i}$94)4C3GtD;jL)ts_~c4TFu=cJ0XMil?J+=Moxy9a#V=Xo6%Ktn|uMS zyA80MrI*g9aQltOA{>BvO&C#QQXbyFGW)uATzM~iV4T=?bmZ-siZ{$w`z8Y-+jH!* zyhu5?_^XP@8~b{CSaol{B*`3$#MIJl34abiTa-B}c~5G1YxBwuJoYBT*=e?3;VBcW zY5+~zzM@taealXOz)}iFAC(^L^llJQloPd~)$udwgP+Cn&!c}Zb#JT09*{|ay57Tl zBZoT}`jO6FO<;uQ#a3TcWTMvaoC)Ml7Av zLLn9+a8)wU50souqTQSnKLNqWM6A^$q15_v2$LP^xB^Yzj*ZB$!bp*2Gy_|1Kmvkd z(-ptl5v-J3GF#?Mj0AGLHT_d)3F8#Ug&F4Cuv!Tv>1KjwVwXyb>A{JjT5Ct?{H-`O zxfYi=Bifm{A>qafgQ0F1viLi=L2L>Z&_Fhp7O)}{LM?zy_uB~RXWzA#Cfc$Xe8_j~ zcIXkNv)Adm&DWQOZ!J5iD9e<^0gpirN2){DAG}*iAEtx5kLM67x$eva224DO?4c4} zRdwwbf6n)@*uGM0q%>iZLI(jy{zB2(L9Q+___zY*(W90S+5Pc~#*Z3fq6`D6X}<#9 z2Qwm6a-M2N`XcI^*-ixmBRFB*uF7HXJR3>MxjSfPKVKQljade+TbNh^`f=V z5P$=A<|iJ+`|A_{;$XF0#oM56Bh;60W0_cHdQsGT)X(Sc=>Q09F@dv*~|A z3ZrF90#&cB?o!Y#YEY{Nu)fjo4_c!yW~AvHY~cWX=B%MaCe40I4|8Z__)^-a7=D15 zDuo;mIk;?$75(MP;G;>_92S=WB}z-~l45U+-r%4J~m_Y%T& zJOlN*XxO(}fIxYoLe`kz!JS5kERdt<=o6SoE2wu}5nZr+e@4&*pk1jN<3^+8xs75F zJeYvs-(E2TK11!@rQVHnvQcR{lR*YIOedx^?)%x6c=y~sdr75cM4>cAj!4RW^rkW`sRgn|G7iik2`tu1w zQEHH2%0UM)Y(q*Qgy-kDxa?(*S|{kNv#~)aSrEiN20=51I~1afvcDDJWE*DIg%NyW zlt%i{t;6U4Qr4}c410GSJ@sZ{oMmWl1*b=hkY|59(+m{q&Dn+~?{s7vp{l7RuG>-^DgtCpMWsCA{fH1P#hZaA*{=!nKcY+!8+V zm3g^95&8Yfuswa@UXEzT=nM>t9R5BnSyu8vl~UpBrD@8MZ^HIFqBy&zITJI;KpF*? z*T1gozF@ASPR+W4D9&D$!nL)x2l!X$zN%J+XtFmKuSBJ=;xP$dvcj=CB-gl9-ox%r zy{rMfUAMnnx!dp`%@7Z;Jbm58d+);cSKa#&!-wCjl?T_mdgI&f|5{otr^B9vsC`lb z1o;;dB7Wt`#^zRYi2VV|6IqCEZZ-P?*!*`6qJJMgmJTlh!~L%ip!4Uuc4KpCU;j+W zad+ucdY*w@`+FPPi_N`n=Q{>=Z6`1b?Sfso_2lu=?mlRtEt3{83Tv<1UVIXv&kimo zT_6cVU?wu!+xxcE zl#4BnPu)&a7quHa=Jc`-g5{w7Eu8q#`|{@88UFCiXfR;$+tF zglbeq`AlXT!EK?xD-eYcgC*@N4K_-|oh`G*Y?Y`&mj5A@J^D*+eeMQjR)}J3eKsxv zgo*-0{I4P?dqzDSPIv+&zM}ugEVu^ErtGAX&++MY=iU@oPxdS{I=J0Iz+Frh)oCuMmVV8K)si3(uW>80)E(RwW zkyH#geg_vCHdKJA^wl9LFMNo`U>RaVNKG&dz2$-I~!5g0~Qi5W_Y#>RWrN9IR7( z>i4BW&j;k$HILr@6+dj+84*YjxIqA^o|!t&&xN1jFR4^?n2Ny!Q9)E674%2Uz|ds% z=G>|8@gL#>LSX(#CdoZf2zb_lc6R#VpNTDIgO@f_u*RG zUYr$R?1o=(29yW2b#+p{fXE_VHrw&z$LtY@&B|40t)_R6o}?^j6QuTz%4~R_^gtkU zI-j9%LE8W5=WGjnK9G+{?0Y<1i4fhX(A%;BRbikR`DPH%|4OErs&f!UbxYsDxqx~I z*C)+1OafY0@&w8F&>a{kw{RlZcu!FtA9e6+1@eJho!|zNxa4NA%ovyC9ULb3Bn1;~ z70q-aUTX)8!$DqFY7(*CwhH&u!bn_lyb~1zDkcYn29fX+;WJj0V?%WaJXhY6Dm*oR zSnO(9zrM)>by*zaYvm-D&8>9f@J;=&l0N);gX}aTkx?lL5DKPfI0oE?Z>HIzKJjTD z+$f(y zxI?;X=;WJ0tAnXnyO|0C6v1eVQKgS3U|K(1__|uo;Te1NC!P%71jsiHqPc##kp=wm)x= ztH_0(>6=DzNTm)#jB7X<9xP*V4C8A@q{Gea)jZ}lb+fIv*faV56vLcPBlJMBvkw%w zEgt*`D;uF&xb;@WE>YFM9NWS9dALh?cNJCUc$Y{$Fr#ROc+ZbxhZXMDo`5VJ=5JIC zx|KY4I~6U@md7BWz~{BCOaCT|OBiU!GKA)wM5?xJGQzKuol zX>qq6IbE5uEoSf|OP_a4SAz61YeUJ>n^q6}_|2FiD>q6ym5F z-!o3(p0t4E8QFI{h4_&^e(@Juz@vR(l}J*)F5)sol8ZIbC@4c}u$&>q@c2EIeAYH= z_acr>=~5XUcV@7_cCjjDktZR$^8V^*?b=_(rwb9`D42=68~jc97;J3Rz7K-2Ft15z z|AI7t-l`gHYaO#E3VllRvxx#GfIDZp4o)rFuD)Xs(ip?Jy+YZ~p_nfU2w!(_r~@l! z#%*4fvs1US`A6N`G;SVhSieM+Z*Yn$pCc<$yg=RakO)Y&z~w39flkRYybJ9hn)I;Y zVoNGQh%NwSoH|c*T21*vRXsxT9{&TyFDsSLo|6~Q<#CQcWC{F;xiP8(K*|TOPcYt6 zDL$T|i<n~wvL!7M1Tywzwn>1cO^IE@mTbAmD}Z#=PXSX~u~!f&eL5~sdC=I*6Y zw6T;=P!i4?m$dWC>g1_l0BN!lw`vdsnW^G7i~#SD3ium8e2ouxQ3-c1I3C|g6N*Q} zS1r{uJ(f&q9!IF*RqL_zunBg^R*#1lh)ZjUFn55_Omugy1f8B6V&sHPN<8U#0_v$fk)TPGQDcvJe$jwqkF0GA$!v%Y6Q&(%Wjb~H1cL#fzUA-!YaPS-#XcvSMZS8~4$d zTbd{Cm#4sy{(;hztc#LeLLgb!s>7K^UP}AwLa3F37aiN)pHbknhE(6s(_UrSTlqh{ zXgyGvk8{lmrIAE+Uk~lJ$~Wht!e;dbHHG*Dl+&K#5P3|x3Hl)UQ-PJj-7&crjwOYk zzAlHAWu%fXIIfU8&K(aOvs>e}C7PB{SAe_BvVf*<<6Db6L1_^PLDanL3PP)ZDQ6pG zd(1$pxieYXyQ-o;!TAV+74(rVjvH~E=Qv^)pB{+kLj|E7Jf~2uzN3%cRgbb-_E0SW zwWtUP==F-G&y>nqPOv-!QG2TlbTbXtidy({?f@z<6C3RK=#5AukH=^p?}WAu4am#} zHCuX@kBan7`Xrjw*rT^LAAY@MrzGf-&`Y@=r^tla4~rmO;T0%|SFdr(P~B=!%V&?n zarChKQgqagUNyNVm%ba#pNAXNOlDt#$p@ZlNxVHYdTreR|Xpv@erSB`03CpIp^=%3*Qsv)3KT(m@d936#mGr>$ zT(^a|w`?@QE>M=~MgaVuaFOwiu1;(-mx9cZW5-`q!mms9r(B~LCiTY~&-C!!Gr#pe z|BxxgB{j;^@hIqHT!KHyrgpdDpSVY1Ic}m;OK4~`6G5W*b zX1q`N>YGer_T}8Au*-y;Wj1|E)Csn&<65wkA}rf^kg-HrWmen?t*=>dok$`;nXjoa z7}H|&=Sh9)G)!$Sq&1uMWu3j7T}b7M(8dr&a-8h8DONq}35Y>B6ADMZmBFt&x*EIe&^g@lI$%wg2`4z2nC8r31nE({8_rC!m*1<&`(svpO%hPxwjE>*b44mTPS!EY^+Dyn*82LWB)g z(_3*!Nj5$ox6IqdKI_i9_%CU4Q<95trrWPBN`p>jGa>sWav;`X_^OpN1y+uLlL*eC zXktp_1QJmkKG-C?{e5|pw#wYUq(P_gUgP?VGMJgW<0-gfJ0Lc zi+}cw2SbxH9g8l11h=xQbDbELfWc?dqma_^+Xxrg(Ml$z?A-zz9Qp}v5!2gcb~+#A zP8i2Yx3_-1n=S_hrUF@ihi5oogfMG?4QvOg4jHrjg6yF@;rEL_0|bi8$b0k+@FLf_ z9pBbjX`dBr0u>$Vw0miYi*!Of{zZgQIZyv3JSapF%I-`)%&%W1Zd7tV&+bP_b0Log zHNHjKrU69^ToQ)~55Plz(o!x-Ud@|P8;zx^nF*#_n62JRXvP9fD%5GmO7SSYKe4gf z2Cy})7Wj@y@`~<46+PU1J^CzxbVf>1r~xx%pwKK*o{XX|13BVe&|`;Gi5^H33@O?B z2-GkWO?3;8Ge56f5d0L1Z2hvXdpV>Omk5J##!PpRWKs^poZy`pOOSJX2U-BhqOkM} zQ59N$oe9>UaUBxXA(LTR-EK;;F+6P(L09WD`Wt1p^lr{4^He=Dm8Z17G*YN}z7ejI zHI*FI+BFu&|M*f>lWRIJ?Y8F38d9r!JMG?TyhX|zT7g-RM@I_Ho=E%Lr}Uje_Isb* zBB`s;&y{Y&ap$`S*k;1sdZEe=Z_Gc3adJ{n>dvdHpy9M1E*0uGBLD7*V~L$C>EV|%OvDL&QgiRqMXMN6!HLT2fUY!_;&~&#PBA$4nUn#eHHd4ugg{GeLh?1(Z%@2L~&A? z01|MbuK`&h_&*1YQBx|LpNv0C)Dp6kTNmeoVSS)(6dhK z$YPb11_!6vxf^=YJYL|5v?ftQ?qQDl0v!_?DzwIQlYo+!+H2OIMlOxKg{CHeKJ-H9 zY?&r=@z~impaIR*l+OiiNIu}45%IbYHk&9|Q07N9ZVRVAD!nJU&`XdZ@Gc2MY|+;- zCy+Z4->0^+)gyJ&;5pN%xDwXuq+|Qs^BW}OWBvmHKu*e*D;X!(^;8PDdOM$`+7VWm^E#= zLFXYaF)EYbjP%Zv3OcQX-T`FulY{WZyR!GsZCPg45RVYRg+Pf zpNu^PQio1>DB8DB+V6|g42er6lUY4`B13;YU{iNAS<;uG&abb{LX5Db`-wgkL5YhA z@D3QamyOg)>x+VxQ4%S%e!@E}En44>>IpOzcDg?G<>CB~s}XS5F#iLbsuO zCl;wayS8KQBD%;JdOj|e7(Cdk2gKQi#Fd^E(llIP>EDpBmg=F6&z>JXrO^PWkG_l` ztYNG8*o`aW2fb_pZWR7Bc^r+J57y&~-@iJq^Dkb1I2Be$>M-=WSvB6;bh4cs|JqQq zz$^8ewJWn|x9l5bqW3CrPh{o|ol+8x+iylP3VGXFX?gA0JS+ld$>QrkJKi?sH|Td* zk#ySgGcbqa%PJyU^_&t-xDpXxVee7&J8VjlTV&Dn`L5K!mwNYx46Q!iFGH56+2z{; zGpM?t)tnd&WLrIpmL{a1r;4v7lUzlQ_W&Nw25Kp4_Ohl@9a!HeT`Zfg2Hx?@_VfEzCxCxaSghCzc`9oE5*ggej4(|hQtKrUR%WIO$RfOq(#OC#K zA`xcb@ZnqWb~Fm%i5mc@0a+Ze)Cw2P9zZp^CVp0xkKH-EO*g(&t-|o4yrXTMgr#Sr;x!KS16OI)ILO(sOPmy3fJkbxAZs{o- zDh5(%95*ff+K`6&P}=4~Z`5R|-bny~v;#IJ-=(%Ry#?P|mK4r)iuLsS>$yp_BSsls zRXJV!r~>yA93F0pPsoz#(>&2Q`Y6IGZ`6_6tku1ag=C2yT)q#Vbp&-uQ54&A_Hv~>4C=ANVy zIgD|G79j>Fj}^piGI=Wit%($wx}x*`H!RTT5DWBlbFbXmEDtGwu73oN!o;hu8*Te> zw?_nJqd^1&{m*1T|9vFc`2Qz#K>s^&JBumssLfpgcD5^_qyqQ`KvdT*Eq1?dY!AOe zgao0{qTKv=5q!~>W|JAOBzRD_zY84btNw9gbLT%}b-Kf+@oe2Zr4uwWh zJUC`Nx_3Q@c?5vwaaz2%9YOnAB~W8!-)-}n`r?v?+a{&K2m;}6U7>tOls`8%qsi1f zT#hfwl+-8xrJ+I{oFHZxTj2u6*o_xd3Z<#(H)~(G3dmok-TNZEu=vb)4(@UJ-hk5= zs9g%-0ea0zPq$Ejxl$`~Y(>!)RVqGtEOZ|CQ<4^l$3kTWHisy9)_V}_XZo}uDDe1A&(>SbLyNQZh_B*|!} zYC}G0J=D-oy3CDy8A5 z7_>f1lqugjQ2RlP+>L}MhzXA!8LbidGjbjIZ+w1ZqbEgu87rsX?!*G!yDnYzJKQd? zP6x^4!g~@aQTeC!g6I$6F{Se59lnfoNoIeBO$yCD)9}mT3Ivm)17WCx zHqsR{_Akw@_b4ZO4UJNm!5dn)Dxh5<1ZFG!;2FybF){UH{x27Ud}na>Fz~bH=i{D( zKs*9*U`@Smj?hCyRoRIdJ3`!`6jfiE6avHIXTK-9TnrS6l0fk zeA;o~Gjbo*xY)zjGDjm!xu8J;a0f|gCa2ZUrz+b3LS|P#vt1IsVn20#BzX}YZBV$( zy1P!agM(-K$u$xzO54U(B>kEKAJE5MQ2>d>yHqdBn^Ksz@^qPdfuD@W%VoR{lH2s` z)aTpoq=<$Aq-Y-`LVOwNq!D2#S_Dlo3W5}B#S{^6A5VYN?+A^=)AKa?ILaAQhM;vY zzyMdt^lgt&LrSHne}sl9M!~s6Kao1GtDAAD`a_2%<{X$o7Ot$4@U< zS&dt;La0D6jKkG<440SbLi_+Qf$v~*@}goTyPN>NWi{IRA2J>cW(x1GfFnH<&peAN z&T%CY-?p17wS`vIb7MI=B#W1B>Gs zsP}33h{%Z7a#D&_v-y0X++HWHrF?eh!c{9py3_-|iJnW1IXp<4*6qY#+w^DR7`5sg zev7;9?kMHS+w|!z?d*^{Fn&deR$XGrnyI|eZBlre^s(BJP;T0V#^Zzrh`80H4Z7@V z+*9WX`1FXwB-I7B9guD%EF<~7ldb_6ui!2NL>TB9+dJ0Jo4rlNXS^_Q6z;{sG(sk) zaWZxsbaMD79`5# z*gMb@%bs8ciV>e&Z_z6Cxk@?%mA_G5W?VVVKA+0nFh}>!Gv^JKo|wn&;yD* zuYoGBJSypY8vtOCU%qClQvgf{;ovK;YCcB730*$pwGc4BD%x@tA`e@W!xGT zUbgYf$+j$8(JAv(IrIqbfkpj8)3UH5_3rTt^7ggBXN~OZAm6DunArM+DjJZ zPPkXHLSOLD+GO@qV;;PiH!$rykJ(t(z3_q5^9k&B)eY^{4ecPKs3E})-_(c`Z%(@@NGj(=0 zQUKZC2f=A0*9@N|8JLL2pjUOh)8JGm1wc4bH4a~24SuZUPoy@h@|#v=7V=; zN9ZFdwdOW@qH4C74LrrnrMb2p3^y1PbZ_(i4=oNOge8g})FNOYV6MI1#8-3ni@62p zDLACM?6jUoFvIIZkSh0!tvWUT<7K>v*q*6oAyEwQ$y5oRHJh-iiecr#?rdZG&~=l@!srFW%K)-&0q=Xi*A@S(38p^p*me zx$0%{lBsO$E90QVh7NR^Bq75T>WpphpUj6Qt{fxYUA9>VIyx(dO7Wi zPro9QsZ9#UVP29Iby_z&@jj_GJ%n#<( zRX&Lkl+>TB;F_k;Ug2d!u-#6BY=x4;Awe_%mUVJ= z`*l9-xj%JN)K@Q__N#xh?5`|L za_imXZl9q1Lco=sh`T{S4N+3OrUTLt6B_gEhP;351im)3*ec{e@ z3Ql2h)=~OEX~l37#|4H#?p1I&`Coesp=4GSFX@Q1ubzIU%SS5F4waR%os9)n zz=fOFxl)y7c(wRz>z@AMImU2M(*GQwiMru>aBs2$Ia~Zj1&Z33wUG+w-Xir@2o3aP zcy+#Y<-CH_JQYs3ner=Pcn+K7LZlTn`4*ae!?l2wM1^D&zF!74w6-!_KcL5pKhY!G z`+Dv8?De919*M8W`|DFOg1s&9NcVIwzx5qo$(u{Z7p^l_mkxB&D@dd^Jy`)NQZ?J3 zwa-Sn4OR<{XfWe{v$m(tDmrVkH{A9?L7V^h1mU%x`SGz9KHoSY=SO(vde{rijc^pG z!cVvm>27}_JIKrgO1>bIWj){fO9Hg4zi&xI%+)l0B_%D1n+g+_X4^Eg8y5a&dow($ zBP(LL94?1fcX>7DZg^EBVjXu6F2>(P?M|iLROX@~{_N9xP8TpbQMMUySGltm;GwnM z*4P23S5+p8Ufdtg4y*YTa48C@kI>6{ax4yDkVHUQNXV7GfioOvk=y91?x7Jq`ClOM zs1&``3mKr5j+95NtLK2!6@RO&%n}XZ>UD^2EV?{&XHNq9y>)uO;$H1xBcU@VMe&~Z zp!}Rv{{-a&;%t<3*R+Iv#$~z;S`V~04$W2h4!RF9YfJT#$@^bhxGMjoPr~V%gW1~Y zaViMMU?uXvX((`qZ+v`y4Z9G?lXq`?nLl&DvjROGLT?Yt>tmRhfHbHNr#8T%Sk@K) ze^u*BJ@`tlS2sI-JAX-1Yw%1N<^xn`fK(8R=`yY;gjF0ZD>ytFzu;OV`n)ea;}RWY zw2oLD%9{@R#tr{GWRo2smq` z?fa>o0df6-Gp#kgmNOgec)csOUbvV#1a=6917}kKOfs3jz>*NxQK2Va=vtoAizswK zBJ~~Ix_dFJdG#{TlO=3$O}AORR9^jjj{uS|f@LeyEToC`*zc zu@d=-kLg&DoI^gP+THjAAKE~v(X4&BK38vFIan5MV%!y>mrZ_UZXb{&SLq9^Z)B&r z1egXsOLZnx3Z#2NIHbIgNV9-Y&%XtW6WUj9;afDP%{DzzjG+-Ma&|E9lsMT*yTj}9 z+=o`jKope715S0Zja#92j62ZQf*`%ui)t2FI$c-ybs6$6K_bLco}og#i^<+~ZeP6{ zEmE#zy4sl>l!Lcs3jAaJ>U-3K*+`UJN-G6sh9P;pQ=MPBr?g~a22C)0Qh@3#>`4 zlQQ~AjNap`O%bF0GzKP;p)P_P5P_0kAQa8SBT6xeSmC?V;ld{N$y$TD2gi!li&1)r z92H#{G%3%{nSa(7It8H&C*>bhy(VBE&UqxYy{DvGsZ1xbK`2vGZa`;J;}Yw26X5%- zLfrvGqPQ&oMBAw%9;*}95WjE~v=V-gZ9{qDv3%U+^~Ka1X}Q$b2(KR7XUEP@YO)s#%VlJK99Y+snavEQCWM%f)=N) zxGBU3E(-{zBJ&`b%f%l3dzH0OsA3bU7vV7M59^I?!kThf2?fbLEX}oSNVo zl9K>t7|pO)Hq~Lr$P036U++qNYv&R_GsYSA7RHa_Q^m*wx##so?3Yi{>l}elE@e)Z z2}m539yKloX#ZD@pG+9{O@ylySN%H%2)-V;C~2qafX_h5H2ldBKm;e`)}IdTJk=3@ zZ0MKZtF1`J@%rG;h81+VW|siYD{DA(v@1C(@1~dm3~kPrmx5Y7)MxpX-n2+}QZ(T- zR^Ipj2CsNPhZHxr4h;?7#5MT>Bo0bVollj51H(+3vYK@}7vd`E;br5rh4vt2wS)Hs ztThj{R2puM!RU&xe7r?ElM?78VI8zwyAX#LTZy8ibe7DobLcDCcl9GY({TbYI#$J z17LWF)5*m8U7UqvYl&UR^it>oMmC(U=VV(i#$D)^9v1JP6RQ%02_pGBr{&Xf^)~W0 z=?CTZYf$Df^&*dM8c3%Q?qI-?teCLfG&VKOZ21QJ67EB%p0c?!j# znk#lDq@>n%f`7Mas(!G-1v*tG*zN}QP%0p8p2#x(#Y`VjFInZjgBFbo&*Z$s;$3qw%zZ8%I$~4S`Wj4$T^4n=3#i zYay6+(%p#r=B*b^qP4P=Y}`Qcq`|)dUbwhS?@S0<)E}qbkLcbDQzd9@H&&p?Zi>j7 zCmOdP9}Jf4;;$QbD_xf z<{w-cBuOQmFAnRQ8FOYZ{nV*u|Ax02AL4BuZfsZEyN7U_n~QhbTic&{oDJ%45`i|? zw?BPq7vBc|Z<$Ch4x_?8 zu$JwMOG{TjvNG`xEivdOzK!T`HrmaF@Gq?Y+xex6<(7*`IJERt#6OVQ=sj7FAvP_q z3MUTV`^6ZWrrr9Fpc&*-0?sXiKhKUY!G*@=t#89q` zi(P)TfGq8hk~$rpb~&q@C6mXy=5Im=b8}tBo_3#3hd*gJA!Ah)W24tIrx!1YD8egh ziY03$p=~MwM}j{n=VzPx8rJ>*f5n}F&1VVuBTdFoz!ZP+xbCk#j-Nf6Op211%R@3* z{H)PT(h$g{f_;p<5DuI?3KUMT?kddY#}qN@7AhCx+qYO-oDxQDuev1uG(Im{I=PoN z`(=6}-cgLOR_P)|{hDlOU+%i9)u61)BJOIV&dd~RQt{Jj}LnG@6W-t zw56ks1e68ZQMNrhdsOpJ>KiyO`kjt;Rrz-i`Vyp4lEk@GD>)j{-jh7th5prsY#tPn zI-vn~o4>`nwkJtt4^~RZ@2|7$%s8tYUA^T9RiOoL^}!iUy~mcJp?a^$Q@<2^Y0P%< zDCkd;^o(J^G0QH!(SgFhi4~zxz}q)pBnFD|8_m^(nVpt9aI2pFz2LV?=}1S^;wkjz zCbKhk$z)2Linhig)y!%nMIyZ*3nQg$Ln?xmdVEfaX6=S6n&@&0^3T@>4sqpM1|N{T zByW?)1+b+k-x?e{(I#6LS!ZD=-^oU|3Jo;G!1O2?)v(>bI93@rfUDQuN~=FI0IC8! zS_%Myi%f`9d2qG8i23$qi0?C4`T`gdkyNC114te|; z;ZI7nuLCg<_T00wlqzoP6Pw_hev$wf(uKmw729lD2%P>>={`s*5D$U(8kDbs zNcE8G7P`erFXpNl=O9KbzBf2e6fZaBEN7FbOJry3@lAxlf-;GrVVC0@Hc{G)K}lD_ zoG%aO335`U#(5|2m-`Acp-v+&Q|>gAin;GQkR*`JH z2jYoU;Q%>6@|C{_gRn79hU+dV(<(W2D=>HvJgPLI*-NC))RC9tpYZ#2-eo!8*K)iK z*R_KmaQcAHfk(nIwf2I0tw~%5ZMah0f3nff_Q_mOg0dT{^i_!9+mk4hadGECSO`la zpQpJ~4uX>H^HC)$o!|;Ci=yu(_^VsLAi@w>g&&HF3vD#xjf^^KweaA*azD_ZvIJB& zR*%1S=tU`k1(CZF)GjX>Wld1|V4syw3U(xo+bHN6LD}&)YBEyB81^Uv2L@d5OI>q5 ze12Q6-o4jaTW@s?F&z%K&cEDKhFtG2{Z)_R2i>HaosS*?Rzo@_V2*wxAN~3&B>#9g zhc>;T!3jCMgGd*O5cn1Wy+R(JPiT~G8UNGK5k?Y&epms1VF{ac)9RLgo6*VPEnI1C z6bp%DRZN~5jH1mB_iQ=b;jTrXfvyu-EHo!AA8$%`FI{;x|C7)3!CgNDCUBfH%&5{2 zhqL$WA@Amrb>Iucvc*tcxgP$XF5@AukL0;YSH!EwkClOKaWSY7FVSERD`$TOzOPQF zqQc1&D)~N#ekfBD8H@nN|Iyh-_D@$4of6}>OzmlhUfGI{ZB_(b;`t5^Oi@>Du1e2g`p3c@S^ErsuQ*uXsbbEcz5K04Ykfh-aHm07&(iy8v(cF#ix% zha;xOH63n<&G3R~;-XJ5- zs%Wh2S~HMg`h`b=yB(NH&@hGXEE03^8#O|Y*esQ$aFW=bpul2WZfy{G#*%$Llreru z=u-jQs)tfzrCaxey|EmOys;Z3FUh{?{iWXB{D(D^3J{4K+Dr2l*m(in-{hwPH_Aoa$Nh(%x8j2G#ikc=4LZfq&iW&*zg)%Jt8=QK%O@3wR%-G5)W3^#1+e!Pw-2*}ag=Bbzln7DQ#3!R)s!NhLbTFEcrw_ITz4eHo zies}R;c=5(o}GEQ6wi{Hl0h2y1v*=S56Vff*VTK76IJ%?9YOl8A?XX6dsUNjK#m;@ z8ra~4+HcOvPnvxRzi+IaMzwW~zw#)ooJihBQkt_OPhg@ z%#3b~x;Fb_*m>tA>*{V$g&JsRIOepYcaWPBN+1c7!4D0z#A5W;bL%>JlDc7l7d-(? zw)eLx+&TCnwNG2U(dpx+b2^Fw+wAh_+K0FxRalxqF{Q$a_=KV=iG3+w9F8X$iq!q5 z>K>*3HtB0%;vUj}b@9*L%OZ~=mwo6*N`0;nuh?AcGWYPW;OJwTgp1Vd1bdtUWVBg# zTtyO5ht)t21Y2*W%Nw&ONuj0fq|D#$qlkD#&8=;7pHK;(aNEdzt!2vyM3?{c^$%)Q zjdX2wHC!aTRt@%>qB(kM&M@6WU;CUJC2EGKt;x&40}q3nLM2K;`nodz6~tOt2ycL& zzPgX)9SVTKhL4Lje9+BRQEsH6u|Hf4wL&O>$Bxv=m#vzZQii zO_H^RI}?hr;b+P4?A_wY2~J0u0$18F%^}yV<`~mTHAB2*;bwSJ1wk z{=wPvvFud+=^Ym?=r!0}$)UKd6?POrJGlqIO-KbIV)<6^-DtSpwpNfS5p zKp!O#7{DC@%yCpZK|mE^O;oFO8Cj1V7iT`N`gwc7h&dUO!IB?qbA8K40Eq3}*MaBj zK{@xz#XAz^k(|*B=R!5?3P>AT+;G`S2yr|W<~qyF1X|InUu8<>OW=q}wE77A%y2>8 z7zd6%)j`6+D+$8(wAGtFqpHkSAetrK45M?9$ZT{E2ZK5cF6cFWA>ZZZrBk9vV-|E# zYMR%8L7{@O;_OGa4?KynDuSY0g2GVB4`R8ZO&7&U9ap@S)DUqm!l`Kt8wC+14Q8jP zt_rYT)sH2$IzC0eN@PfltsvJDPx0c?O#Tz-O{&3&u8Fch8XURpL*$qbWEeW=fcYjU zRCT{NQ>ab-5Kz!{-JU8!1fx50fFp%PAiS_p0`sBB8k!h9TtW~!gWTKlIGq5TKC2qb z=tP5%3GC%kRC8+UC=SepJ!Lb{(xdHf(zC)PdUz?`)8aD9wuWl~GHp6*q*t8LZixGj z$9JawtNU%FwHyR<+2Q)p@%2|2r^wtRgkh_ADY2c*w}N%;_u5ee59v!}W@+m=iGQnQ zPZeeDp3*6)yqt1A{R11%<47@#+iAD~VQ^F$n1;Z>Q*g^)M=q^8eH-_%8*IcEE=STj z^5iR5wZ*NDE+>qqWh)VZR7iEPXb<@^lFweCu9~1aW*dPoO+|k2xcKRgo~W`hbWgsV z;7>d(Tt<%$Q3Zj_og!ZnQc>O+ur3%GjtUrpQp|pC1S{`^u*%RC^}tcd<*MPH685Xu ziSQ=x!?mDSGEpI>O2W-^z?etXkT1b$uA6}(+S2~(Ap7)0Wh%`HFK=pX#86szt%k-7 zCz9Q<#U4PzEsUX5Pudga_&Lr=N$ML>OsMQDbE1Y0rO0_fcFO(YeS_E;JPd0lU$d^MzY>3W zbj&A2S%|VXnaC+g>w|b73=6*|ZyCtK^Ql~3Y^xWtw1ij>byY`x@f5dZ*L|je8EO0=RB%)z4k}xCj>wi{BtI2Ng z_)s21^+=FUdWv!Kq4)!;X(x$6-9fheL`jpM`lD#}j8GnY(+pc3XA{z`H}D(iwp^<{ znZS>g!DZgyK=NMZ*Utxekf#34#G3oxw&jht)oqU@P1kPfeP;Fa>lCi3ZX8~epc72` zmp>2mKc`<@Q$iq_F6kXLhTa1>);b9B)1iik*iA$y)O49h6^qZ*azKXA%jiD43%P!E zX(vvQQ2rmaFp<}>RA=akOr?Em7$YoXdrni*pTg&tDg{g^pWEE0X1d~c6 zd~#J+Sx6fTm*tqV30#aru7>k+P@ae8k6x5X0cq+60qy2N6cBhpm*>Ym^{z`NGRY+M z#JxQ5pkP#oG>&-;XP2;gX9^L@_tw*FN+)IEL;@u+rM^Z41#%wi(|Unr)Hc>eFK0I{ zo8Nh|?qc-Q6)D#td#+%nnMqgcL{(7sVF??=Y|w~)f}(JcPlWH(ZAixyX zwP^K0NAN&TE$_|3E)i5C0q$Ut<0+q&vI18ZA|&=SSZ*hc2p>uK^>wkZDwmh^PR)&Y z>fxg7kw(Lw8I`3VfVW#KUj9w-MU4{!gxHNRqj-vg_nuOxM19qI_(>KHCk$;9*tn6O z?U}byS9mS!mRmzo4(+qv6X z8*{gB2%rhJt3QX;R;6I>O5@82$Zl4>r>~Njat2)?W}dnaInwH;yhy{(^C2Ar-UlE% zy7(4npSYevx0aI;y6x@cr>K10I&V0XHi5$;cKGl_!xp;wIc*I(qH+SsJiZoUuhTN~ znX^w)57Tgk@K|_fRU_-~B>EX^$A<-SfTxC=k)KvCB{acumJa?0?wZLVmgdg4cbgRJ z7ke6Hw7+}pzt6E6kkR@7fTr31w7Ipp|EXji)YkCga4${%oxP?9mekvyK)L`w`BZ*v zjaBKG)5IUYvc#f%ZdES+IPVYZhr2v7!dh@U znatJhG7D0D3^~Kn>G=X<3*?Y-tT2%Z2ba z-+10dR{ZYb(*JfC5BsJuRhxTj|4TrhrOi(}tZvssw*dT!}mRgmR!exkpM**&1y`F!ICOK1v~CsZ3jRrrfIRn_9}?ZHDDD=?KIw->+$y05LxhY#_N)(;&>Ek! zhg6=4aa2X!Twl;B>FI4Th~x6|OQvb_Vb=l-Nu+I2S+U=P?+Gsz(51)4)SA&w3O48>#Sdu3!lyQ0bMyLk~5>6dh>UG zVo#*G(aUR;j}9~c=~SaW4ttXGW6ubAVOBBGXh}@5cbj4qjR<-@*#q1X(be)xvX!)(KR>p(3a|#=7K~YeK@iV^lQ?T@ISX)Em;u32_ zP?svomDR`sbJ-UhKt-59owOWHk;%h|qjNtXEe67I6JUQs*Mf2@`D0~a$#glBC!3)nM9`I-t?(Y`n5f^7}#f5L~xoF-%i3sEZZ2 z1KYu8fco6wg&YJOyj*!>h(MnFIx!y#{WL1@BGYM%Yve9Albg%5!i=eBmX=24NYka_ zdDx$1Sey=inK(VxlM(hu3WUc{!b!zeo2BP)5alA(<*nIOjFsXs9cVtL0%aLgoCkS+ zmmGu2SuV{Y{DwAzG*PgCiU_q+yfk)SPv#k_P>{$VQ=RK?{C<`mbF8R08T4<`Ffp~O zm#@f?C8sfC9<9P}XN4SUPY1W=Cw?FG$ke01LSm58ig(2DEBSu)e)wD{hb}MPI^V4v zhVmdKncsZ;U_J;wQCluQcrI-=BNS6KUvH_UL=F6;Xk7hp)<){FnyZhn_v^IfMC+?~ zboiEM4;WvFi#+SdoiUbyd}^hlJw-v}?kq)Sq`MyYSnAj6#tp0X-VqKVeDyf0F9-hA zL8XF~{tkpCS6C4*@dkaUo0zs&<5TpdjcYe(F$-g+7>jF<+GEr$D#XY48;c+Y^W>Gb zKzZ8o+}(ctx|ls=vg;lkotAy}>Qr%PLuT@ajxrVRW=d2XlejCPC7E^?=r}rXhp2RU zMeXqHJP2W4!*u0Ms0D9RlZG63FjZm7(TX-)=`xS4l0ATNsmSB|Lq;K$j@Alt8eROZ zRAx2b1+?Shijo=*Jj2a8s1hjbHM>vJI~5x`+LN|xqM~dlL=W|X^{I-0d;#(To^SeA zeZ9fM@AoQP8|Db>kf)S5k$VyI{S2OPv*@Ndc=9>S=O9Ti&*Ji{ud^@*$dgb=NLG(@%MO165mq z_GH6neJ4psEVuK`%RS`amrAhL;cmgp_f7v7p_i$RSGFGiabEA2otKJfZh!k1FrTww zEYIc(`A!q;E}NQ1lEO$nSI0dx-gLB#D~$Ha859&_+6nx(Kr$VgFlB@W}_DshR|?y zU)lYnQFHJw>C9b(j$$f(C3?QpdSx1_<|!iLx|~B5g)Dv8R zK7K?`ri~gS<h-ttwY{5RHC2sJ=AEPh zd#IDvJeG2#J2%&!lZ@RU&{x$KOQv!mr};j5cL@n#(2UtY3O%8|_a42YUG z*JMjRhhcP3gb!_a;oiZkyOV#>VW-tnNN{VDAR8o(G|tiO&)KxVIFMu!cB&0b?@jKZwsjlHG(*-07@W~3g**%srdCIi8ur?6B)x_5| zlmW3CZQ2WGG1&M#TR#%!NJTaWv8p&X%&~@f4tD*u|3b`{CJHwD_LSb-(rl?YTOeNS z?hT1Pt7S=ph4x&dXgo!G~PHxN1*DQCuF1q|_-(i2yah)*qz6d3Dk9~HkfqDg_ zaE^!5TFDA3{}QC03OebQ?}eH>qy%9ZayF}jR)__5-Gp=)HR~d2c3N!)+p0zeCL=Z% z0x>+#^jcgB>~_aJl#=Ra0xF&nDgj${Gp2=&txnm`BdA$bzVcJn zX41e3bR&XhWkW(yKDGSz{Y)nZuSlOnG(Rt06OodY8`P zu0s$)sS!1m-5)Z^?i>+$p@GEMQTcoqfpyb7My0{}yXyY#l{NaUuAZr)1NJF>`bp(> zc_`(@xMU??K)ry9;8{awuk|hYMzpU)R9+Nki!n?dGcJKE;i_mYK{>#K;ku(1WPd9P zcn?1zG)-t5yZRkgSbxgJry?@=$Mvgw zr=(3g%0&pZ*gL5_`)?wFGJmv5_lyrUoX8 z8+kWSLRtW8=+FK*+F9APrWN*9HIX!1j@Mg9?KsqTJyV3PT_<6r9+%PD@pz$ICExp+ zeVLqB438z+Th%2Sy^K5)utQ+Gcm~jVSBJ{+YjFm-D2iUxOQp%pKf`OMV31^HdYxnI zHtn5=w?Tt|EeTT>rfp40fh;nBO5I$P0XKP}FWTXd0)gYz$HYg%I%9v(XHT8G(@H>U z&D+7*pxko(Lmu;62J+ z1_+`gxYwn1hLZ=GC&i#eXR^&IczlszYfe)%!iX85T8~ez7+I6x7}2~JzR76=%)CZx z99j!c;`u2|BiUQmr0q1zn?%}aS#e%MKA3$`Y22z=dNjXsN&2zgRw|nWv6kton51h; zGbI;wbsmgXIzCXZW1V=mRnGi_o;lH>i=?P3K5oSG&W1(Ynzo!XXw{pf*|(wYX=}J$ zgcBzGq2fV7vmXB4OUY#lJADC@On9A+AI{aCOaOcO#j${}kpgm9Lv4P=G)nn&euHxk zgIGviRNMVu7*?Ej%k$gkeG`DGmR}`e*t>S{T3n4VW1)793KM05qLPVvFT47xYeseS zS!BOK`X0ikBmur&MyU;cy_!Ep|LM)LRefX@_DLBNU=!>xF`Y7Ky>WJL&R7wjaCg|VCp`yF}w0*n?=@M5Z^a{-{YM-;nc2(^!{peHpl zWE%XfDpD?M<$o7vmj0eUVbGiV=B4c<^W@M22P^ly8}<1k0!=8gC^tF$74Ct06a?`> zC13hs(z6#T)|#x5R2_FPG0rU7L#mklHRJwfLQ-^^8`#5XxE0oc+LOm?6xe(Ms*rZg zBhI4t0Z>i^I60z1YN%?iEI%IYpa+jr{f8nDG7LRANiTVp0qk6M9DuBcnF-)@4SZ{H zDwd5C*ELgLU^+OBjZN*F!}cdZZAV1&&Kqs7;#gvPa<_wsrB>Z->>|i*-+E;B zt?B+8+ClveaameVRfgjLZwsfZl;bvx1*}{OrW{0B%BNRO1*yuZC6?V?y)G|{_3cQM zHJ#GMfK5{7!QFf~=o_8z0)6T*z@%f{A97-L{HAJwlq)U$CJKy|v4v43QrgRrOT`Xp zT^eh=<1vBIF0qZ)3g-E@A28(6UP&IF5HKwlqNW;oAgJla1d7ilPvZB>8Rkm{^_+Yk z@wgsQ4%mp^W8Wr6+|}piaN!7dL=Z_r2~(=;M*qq-WT8PdbCZQG3X8xMbuGjNSLJx> z>HBdlsnld0W}RCza+1*3D630+3iD0$YeKU1!MkI@%`vqTt16xBo`&$$I9oLA0j)L+ zos*uqs)rI?_!Y+g$X_V#-HgzQCahY)6ag59!|`$a!W_C@WpR}W{XJ3Xo6F^Tc*S4% zXs`Z5w&L|J_%_9JeJ_QA_q@7xEe1?=cojZ$bKs#dqZcfHJPR+cYXWU3{kEF?nd2h? z`jp1>AkXxa-G5lRxvXUP1g|l6X3%RU@)wT48~x7s>OAN}{q~BTJ7yN{#$%u_o@>N% zh6j12g^!qa9Q><{7yQ(9?{m6sutZ|c+9jrLC`Xu2ThY` zMm30atlqn&<#4*q1e{iEm4>9Php85pft~FIA%j%e;*JZLQ-NU#9DJaV+ zxi6neOc)?$J91)`ux_TlV&ixt*yc)+r0JC8VJOX8|LsJ!d~;@OMrm>0QQx3f2M%R< zhfJ0kF4FaHPp}yYxjGn>NhTv`vQCxF9`XBcI6{LNhpOZKHIgibws$Al9?k4SCpXic zblIH=DmC~KL+HTL@Mk5!Gin%AVw|E#G+54%IEkr43TMZpBEVhvB)jZZ4EF>F;{|LO zh%+Ge+5PTipv~ChXDr8+DVHPF~bkq&{h5LE&rr)J(oo zKO@qsAv4y)_+EtP_xy~4cfB)(t(yhp-n_J6E1{2oNZW zQt+b4;#_ozIMc%@FSG&9>UfzAG-+C&`E2r&wF@Is($R3F)4NaN-nQXmhc%nwuPd_` zY)tp0cY|)ei79K{WNc*qRR7>w^I?(H-SXW(O1iLGt|f%s@m?szAs|)afG*K=61r%P zV_3N!1`OfNCWDuX_2p+`csYDCGeU8RiI5wnVZ?24vFw&wH_$pjb z;%T#==-m4zoY6O_Fw!)31k?cNPn5q%Bye+%Zyy1h^cw;@mHGS@*;V8C(&;nVov2jG z#5qfa1?>y8j`&@4fHG|>i#Ly-2S%Sdd0=%&2MrfKh%Jr!>qaBvmL!;EwO^qPtm zJ4(>#?v~2cxOf{}$6y)YOIFWlFmuspL6yOB2wUZGh86KQE~0LBT?rR$BkQW*ORiUs z>`8|!M`kZk#?>jBW?MI2K;5K%sW?@b1ukDSbbsFpw^(IgRksc~W0k9|C*%1)*W>MT z^AG34vuwwj(RYdj>Z$gUfhW|{;u_LcF`&gBlSBA{d~5Mn=B*}Kb7zSb3Z;`UxQOoB z;y#X-ijZadG46$|xBvs741rDXFxj~kID$mZ@I z%rX(~vvmiOm!3FhIA+YofR`xq|9L`Hrx8{EZA?{ukw6$kT{<`<$LVoClf4a4DGNb& zK0=2Bhs=K&(ew#q&$o+9FNC!zmv%pH)*mh~g{j*USS7OLhy-Uh?-tvidf<&HZ_Wpn z8Zq+(!kw=hn?QYBo z15q;+ux4-j-TofrI{p+~H-XA068mhFdrKSb#~oOAun*m)DS-I5y4(^~&QM^bfWBdI zhTr@Lh|O7t8wVwB(Sn>(E{6l>hsN`uc4Lfm{JEr+t0;+r!Zbuex`ySjuYaH9mW~xC zHYf@eM$8`wB5m!-M0GJczLTAp+>&#jOp7eYIKXU*Ah7Xpn~Q7cUAGokE0KM}e1v;6 z?Y=~pW4Nkb8nvfy1&fPQLILujZpe?I7)3mv4$sc|+Zpp^NpeH6OQ)t)2WJJdUiI5h(S_^Oqcp& zPVYTsJ$7v`d|TeEE3bLjpGdSCR6HPdH~-oONjX|KA3LX)m|q2S&E=KmU&lZlBx6~Y z`aWMB8v49ogD9A2X77gYhb-f;aB`#1X$v&2oD8T9WQ9IhX=Iwl^u}p+P4%RZwK%8p zy10=U4Z-Qk`)312an}sWVTks#KS!a#KKsN&fk~B6=jgd*TAY0N*4w_yzt+XgAwiDx zFHUeX5P^n%eWKyAcw==|pd)E)z&Xau%QE>KLj2}%SR4#GEtw%fXSDN#3to8+9W*C& z*sQ1!R*DqQ7)e!l=0rXml+VR3Et5GIabI*y9`&QRNL7k)Bfch^3C>%Z5^l;0KZd;! zGD#?Lh^=Yjv=erkN05RyT}WL$1xzi#kf@L~C9MTLpw>ww@nCKAAuct)$Bs{C*ZhWy z@Q>w0MyaJVgmakXgFEVURuRV%*Jc0oTzwRPNj#Rl{B`7_4YrwbP7e4rZhckUR=HdNPHRw z){|Eu$i}}rp?_Nrx*(lK(Use*@Fak!NLdDg$2sA8HTa4H#AXXrwKmi&3pxhK@x|fV zCin`->?LaT{9d0b?1p-`Y`U-^(=igVxjS7xNphb8()KqnZ;)`3}3> zJRsW8tTL}y+{hSqSNeX8KsaTA2Ja)_CMa=B@AK4^QNw-&bo*M;D?}$*Y@EmdfvF zg%UNl4<=*E`oUjJcjYs%Jq|3h2zFAHO#@G<^-68Lk_9fp%4Cc1fo!VXxvsloi?3t~ z*@j01drIL&bFW-ZS-I4aZWvdtXEWFb*As|F1KU?4s;Dhx*E(+$5_zO z--vX#?J2%lXjifr&;CKm1+-Oa^?kDzFUA_RaNJ;Yt$2sn3jU9mnQdVFbcJhzSOPo@ zU2!Q`pgNgJ;U}N*2}(f8ltmFu zGj?ct!V@&NXA8yf`=P)F)(WJhMzu3Qg|mu;rS?fOQ)S@)B*?U~EfPOCFF9#%pb zuu2)WwGsV;)=0x$DKpPlR}$uCTJ1cVx1@qHrPe{3+qabKB}v0~S%GFT2zkk+m%0hm zXQEC>>;MY61x7zz`HkvgYP7(bT%^)Xo))tvyqI~6Jq)FE#YBZ09B34IIB_yGmY|un zOZdlJeoOd`3%03S^H1N7G*~49fu7Pzp?h8LI>Fj}n!h=Fe^yGz_mS zbX|iAX(ltZoOdtLS5$U=>t&jn;-WHD7E!L7m^LHBsFP29QOPpJjn0B|+YERa8z#TkE;0#I>Ga%v(-K z0LuP&{9*+14*!OK&V%K!F15USgxIuzj7pAbY0aVC=EB|DA@fszc zzja~_DBN82dAe@C#kYodXRZO;c{$tq-m?O}NAI^6Br)wB>#Wm6#%M1^g^T$_LQu19 z)Z);>ugNy!47fMDp8n-?l>}ZptQ-S1faEm3#U!YYvYTDf8)!NpfEVnR8S5rg^uh@k zcZqvzp2F&-7JYl}{s$|Yr$OJlCZ>#}bmmaZ@_lN>b46A5Z4sq3E8afq-MY2KG_v(M zWOe`Ia{4GdQ0!uO$G#SgML}r@6l%}6RZpZ0)J;qccUDgx&3}YXhHDNcMiefDDCf}W z8?WYEdq*_Ud3C0%=0_^#)t5t3JyDRae;7Zy!k>VolNBaXjxu%#n;$vie}WW7|iqpl7cm>Kq@Hx@AHG1Je{uJ5TPAij27eo_LFdp0WmQcj{P z9tE1GTLGwBT&1H4*O27sR2J$4Y_binU~Kun`zMPTYuq3ghkgWN2Nam**$9+? z7qvZJRerA;?g2vOHYBdTY7z%q8ORnd#1f= zN@ySQ>FmL7FHG)nF|%Hktv;2$a&94tjf-z}ceOA{=U!?0)tw3lk2n0zC1>T)Xk z7Mcx9!WEMKp(^p~c7Me~vZ(E3Q>%T#rCF#)JdcP}$8S90|7Pz!m#f&mY|mE_!W2%B zxqWKq7T%i!!o$X-MFJrS84x!59r_LLlk{(lwNg4&b?=StZyg;SQK$Yw+B?l!b4@$u zn1dh)UJ%?56?Y~W)BQRdma9_+<^^skIl2Zc#dYy&h~Q1fiFK35?c|KL-7#rNrDb&R zt6tQrP4nf56Fs;^-}7*^kwpxN0~Y9|x9em1`g`So$XEP@lKoC5QV}Q6=-FmmJKm|A zzmP}AsbU3CKw4mbi4kCHxZaY@DbSS=~bU{&{Rd;4* zST;^)CQ6+^lyOR8>Sip!Nz7=#^rRPc{KYzDfvfOVVXEA0%PHepSxM>xG7jxm#(YPg zQzHqG2!~266O)}t^<|Z(E{R#PxT!(nf2mX0_cEKzeb`_ znh1k>$1|C&Axj}DaB3p$wNRT??*wWk8^AC~@MeD|3Rh}=S3IpRU1p?1Sc{DZzLMGd zk1{_M-km;?45u*TNR%DA<4dYoY&1|BwI%?Yle58xuUdPhgcL^i90;gG(o}9mlD#z{ ze?|lz+xwjaOvHa;qBgc$f>qpJeiOvgZK=+pwJx0yr)e*{K1ypl#wa@dpiw;OcsKYQ zMp)`E$~=)61Ybmc+HL^`Ri{i=$BqW6w{2W2*ctd(+BwqYJ-3;Z!0fAU+{nqmIC z*M!pWL}{$JW^s*meF+JA=vTqgzRy|w*&1F&B!esRFL2y{J{?E9I zxC5AxC~kfPaft<|;g@^>=dAE?GfBY;@5G{6PZ}ZC%vbckNl*FemTnDdAKA@!4+6y5 zDFxhZOItE>P7E4qOvcnXW%a!g8JeM`%R!~8V>C(rgY=f_`|^Z%j2nQ*1h&Xamq|5^JYj_Bq*_93DL@W60$I%l5# zO(nGh7*d)KHMNJlF}!NK$j+-1$TF$cH~eDVNjZ>|lj%5Stk_g2GJauO9neGi_a-HT z@kPJ%`woLGTCLte9t6YP4q|&s1!wB&8^s`ANVlx6T2UF)`}}(+Vw0dspjO2;fTXB5 zg7|cKXjJBQ7v|T+jnC6~_ELOTFRKU86DiYS?a!J3hW;AvxE8j9prWQUH)NEDN|Eu6fm7KY z%I=5M#Y^lb4~31e>FH@;sJB*fFjmEO~3oDfalc=e*Z~NDWj_QG=dy#1T~#Do4!RD1-GX>s3*tEN}2I%Ayzag+}Q7=g0?;}4W~sfMEny(L^(f;uwVVt(b;dt4;Of3pLJ2a@|ydK0Z2>7K!$d_ zq(6A6I|-qw^H-^ty0MzdEgNqH5VKjbMeFT{VyTf_YUd8Jo%9`nJW-{mnq5Dy8&$8D z`Mc^1NqW4q?cR&zi`*0{p!E$u$^F|$oq8)uX4>frS0~-2mSNd8{DK1tH1N-32&5K^ z1w*@=yK!fV3o-VdD~AkbAVf$YQKe`VDy`HMx8TH77V&YEKuFw8z|J4T8cRaH=d&Q?dVm$dbbmhnP?*9V0!VtV(M6NVYg0JoGY3frpyf9io_BS@RejE|g z3@^}H@^8S(vz@Zo+@ib=?&SQ!N9Hd2}mHo6C)&6aLC{|`nuZEk%RFvVDz>rWS+d|%()U05BA6JF%Y?h%2_ z&8?j;`y0i=+J3pK`+-&2E!OMv@bm~D^Y3|2hSRjg=3cS8$HV_?*p--YSRYn&w`t5J zqu&VHQ|v`r9bMR?qt@1W_8$vHt+7}|$x=3J>kA9pJ6qql!tVbD4#OxoVFu*InemN& z5>*`G5WIj?>qxczLlP%)w<;Eo&(F3$6LQ1|9uplb`cUBmekOyYI1p+CMfQy$3lL_4 z;+{y*sD`3da7>0c)Vg9@F!#f*NAr!y!)o|he2U@hvrb&N*P;y#QCH&O%QhR=FRjh? z?sjL|P;NY;c9NU0&$k!80i^!& z@12jDL7DwD?uUDRzT37fZ80h|6QlR3s z_(n#CRJN*N!TDac^5mpxo=#Tog}>?Jq7DJ|XWdrlQF`OqNR*mCQS%KR2dwLarSEGz(^>MMo$<%8RX8;k0Q(oNXDV+_lUw@icN7F# zu3g{IVhyoy<)x)B=W!E|z zd?PbBmWg%Er1~zUt=@ZTuWUW?q{iGa%*C_~$URHj*^+E;L#STs}RI?76kPhWaZ5#07CvITkMnUm^H4TgkTJyxT=@udvC%EvDHxMs(Pw>TGeE; zv)oxkP5=ecQh9yd)Otd*Y+cHz#!Hg6T*a#PcKB<+h1u#c$?CXPI4lH)i`x@6fS^!I0UROvG1AL{dPc!BiF4{~R2 zXdTyTUr=a{d(F^>m0XRslp_e+=yINi^tz$d5ar!};OAwvdn-|AicZBwxABL}pS6?o8rW0#_mVn^ zPVbjGC6wc4yTAfy8A)-;)TBHL>34xeLp6bUE&+t()>-T!$;cP41F5r7| z7F$|0MUGi1T{M|&>!eAmAb3{2)t=&UO>}6BJP_L4(NglZb@ABR@&b+u@RR_&z$}qM zX7W@_$6yd>h~!Yo;eXhX$z>`gO~h+P8NpH)qDr&}L0;SrWHudK&Mg9qq~+wth`X*o z-yzcTGduO9RjBG8QPI__;$&0&%_hL~3Z_=6Xdoxln^2u`+*X^tj%rx6b;@@d=2hR{ zp_t)b(qgeakv7L9C7J=P&dH`a74{x%FD6144v^U;8g0Tos3q`q@N%d+5-?5kk$pB@ z4U$$h4>Xk4m|<1Hk_1#3DE$pB#u{X}o8Lm}afr-T^HT)blk{C43Lf6bgHxcfG;AXq z?E2C4BXfp8XEBmQHbkBx2%ql?<+Z@fxMQ+U=`6YA-re*!w>wV|xSdy)c##oG4(Da; zZDv7hg$;X3nvKLaBq^U|r3JQb&OvFcI;{#y^|-%2+x>8qtt&N#38W5^qQ)*VF$oxB z)GUFo=5&q4LZWr*$n)Ixq{q`ItF_NDKCCr+D8#;RNnmv^s`2$Uh$98=P?wSD!DExz zvpKYDEE_jehb2!jZIOd!B!CRqCT=06D@CM-GRqNoIJ%JS4($0Qb8szC@9TI}@p|AY zkh@M>jKAFtLWU6bDqP+!Mi&CtkSOUBqcuTUvji3h{X0b+D+xyXw6+01<`iixcGBtQ ztlhn$CwmZf!LF7vU}mY+fkR-er=Ry?_XMTZx6fJ%bQZqeh#%QxY!v?!^s5=t-c zNVR#_mR}etT-9upU(gBY3vE^QWMu2=cs#!FJR$*ukZuBjjgHhYs-8}$Y%2vd(QuE$ zrmTipTt<7!EkiKPL8GzaRSQZiSOaDUDRk)svvP-WyhEw!Jw#RB{cQBlsoBEs1qrZ( zz)W?t$+xNyO?tC$?Nz1pjq#3WIZe-Chjpr@?t&ALuLM0wJV$f)6FIVYtyY&zgOXA+ z%0k3L>DXS$iH9dpJRMJ>!xpj}(!^PM*G95>6|&(rR-EB$|43TpZB;{R?Ln_$djt#D zDls_@R;s1AWc9~r7(7xEUWYFK;shs|TGfG+Y$2Zoaw%vqXb?b%`1JQE^2#3ZL_?f? z3x_OhU4K%+i#^oCoXH+jCn|)@VD{4oa0JYY+6%{z5+ zt1R#RxF1tO3TCo1>aRe#LfbEIfyLpBP$8Mq&qsxv?cnypWCV=I;9EEgesxvz11|i; z?h%`mKrBh`NDOrNCTU(ATg>XhOn*flI=#^J#@Q0I~5JQK6K7 zvAHW!+16o>*i<<+rl8X4&WWD>;6)O#H~WL=W?(;$F))K$0!_rj8v_2=hZ zp?3I@Y?$3Qi6$q4J)JL3z9V@!X&BH+zQ53Ym?%jVa~BuoCS;>q`rK%9BVrhOIo<4+PP%g0}lIPeWW8+63lZ<#&qawbipG%(tZ$whisx3CId>gH#`r|Lq>U+?}A zYkQL|#P@V7GQ3Wm5q6c1q(X=WR2=BSD`^feL>%6-uW|w8fUrP>ldUyeEv0aZ&Y``o zle-m+Lan$b)P2i4zmXY~8#=-k?Qiv*Ul;+_`dBcr5o5b3GaU{mSp|lD8la0+hlJ#_ zrWG12PlKHwyq8~IDQ54K-(m=er~OUFLPDwkl+rX~I6AT-;5a6l=)$BT$!|W>9yH=# zCjOTX2@ThCr%MoIe_gR1gMZG&znbSZnJviq#rgI9;hsJhWO0~^lX`_5I+Np6HRP~FI>S0#4v!dx20 zr_%5Ioxz!lvupb(MLVYi5~B^}kgE4!`^?ztemrz?_YG;Y$UPMX#cu|FsvpCXBAm!3 zyYW?%RSI$Nh=6glSArK9eyE1e-Iy^dVR&l?koR0V6=8+4j&76Z(E13M{U@_uS2+b8 z7197~9XoysOF}EK`{Es{OsLVSs0Qj+Awm6UIYup-0V;Hd;?0%Pr%(tHPmR)WWD5)B zOm&QO&Tw5G{~DgvtfZh9IAtznIVANt2lBvxQ?OXty?XRi{ngaOL7t*k)eIvx3!Wq~ zw1n1ud%bBCUadWQ1#E?eI*9evaFn|$wa)>$0_=&ah01k@0T;^X2k@RE?j*S|1L9)(IPZEd z5s-jB8JL_^EX1A5{^~q2*{QCF?;0!-M>WgdFvLV}=9U_8wksXJl;A~cYoH|P^x!<| z!#eAeuj`@t+yo{Rs7(SPj*os9hLpu`VvsVwvx_=mk?8kL;Uv6QMOVmebxNF_8c ziQo3OFuq#y(7CSEr^;@mTbh*uzgh>52xUJkAH8!hmWtV7uq;9~Z5||(LFd~o@tslE z*^^*`%Hk1Gh6j*}aIzez6&2#fQIR-hbHGodd&UMi8^M9BidPqBx3MCzpXM(xRoK}ob5_d+GDNRu-hgXuvWH&aLGZZ9@(L294BBeVO4#vGWeH!CSM?y)A#ae@$xTg* zPDf{T0j+$Ne$!Ew7E_YSLP&kcSRe)==-+OkYZu}_6eVyl0_9@>=J;qy%Vnp-JzZ(w zvD;S6PJEgP_j$0+6&x?L<|JJ=q{;eRNMVhRpK(&d2t(2FWXS{FpIVWU0E2nwI>@B& zos$FRj72o%jE@0)jK42{Nv%9CB)Q7}PjUh?JkRu&VA!bZ&(Mm)PcTPDlv^GH@;McL z@IY+N4@Y|5Eb8)PY`8?m*j2_MQG(^%Gy#B~M%>PSlwOegA<1&Twm(39NqCqN=|I6H;w<8PF$TJZ7JdB&7mBxvHI>DhL=)Cs*@dDn`&KoVe+gqQYfk=$TXI-?#?=Z2;Nh72>3 zPN+39D~r)vE2;IMK0=FQv4r%E^DxX}$lkOxe8fb5(mdxUFSzuqn}u{cxe5F)8BG0^ zwp}{dv_7>Od`KBM7D+F}2aFGW*wj#8+sH56l^)dMQn5kzN!cf)jy})(#NX_YqfJMj z$)aY@^_|wlj)00HfC9;;&G->^g~^J@086Wf0yNP(?Y=S!NaS31FUTI(&#!mNYaZ%j z;lx(kn3t2%X-roIkIU6pG*d|bAp77JU(O;PGPVHEsin(?AV35@P0ta;=r;)f(QvKi zQDYmku|?EV9#gx#bW81OTN>Uiyr`fZG`Co(;b`ckrOL8wdS7Qo4oI0@A(>c~&37Vh z;tRR9Bgc3Hg1uA}N7eA#lAfNIQYyrGcM=L#8L3VR8|Up*c$i9WjlM{=hN%`2uh{>33BE>{Fkjud3;+0?}q6b0Nt!^Ce5N_LMm6!r zL(D;zojtDoiC)QlN;IuPYBVOk+pVw+7}V$OHg<;L>U4MPN|(*vOvCe{Fs?}WRXb0I zY4}FgoEXxgr{oUyQl<)P^KWbov@qEST9keREzHyPJt#~LM?i@@Wov)0W`58n;2I=> zIZ({6+xqfF$ePW~{|>TY0@Qy3*^DkE|6+v!WOHSKt8OfO+VTh{fl1DHOff)DK5oU? zL_&`&>{eSlVL;RdXq1H?=715bM-(zbp8VM70w0_0t)0F9uOM^ow1?21qSXo)3*|m| zpp7Trie|Uk*Mv^v`nXM&L*}L)m>ofTg0i9DhfswSNK+_8g9Fd2_QGA$X>FmmOY|RE?>T}SDrj-(F zoxDdAm&#|5D8q{si~!&ZzQFjiUDwsKPp|2-O<0&ZoBg0Z0enT&)CWxf2~t_HEBV!^^x z+%|KdV!(hCQq+E*WYBU1ZT0oCUj9V#y?U9I_nL>BP)W8y}^up1$pC}HnL6hGp3rT}Ki67;&SLE~z_L&pzv9e;6L2>re6~DVi=yc;i zX)#TAE)u9gPfDp%?WXud^t=blglKO?^Vm?J%d+257!=v_%Gv=+3JFNurVTG%>jIcUz*_&sxFjn z<8Pa3EF7{R{PdYfaI5~USs&yzv)4g+mG7l47&aJgXKo06)scFi5-AD;LEyh=ifKY8 zymbU}#(-G`Q^|SCsgT(qbb+T@{?m4!bAxB%q8^1kdL2kNslwN6`vuvKHu3T2T<1>Y z6yYMSgCh{E!s6LGaXShyW@`C+ne#OD#)mxkIqB%78$z>Fv*$04-aApub-X4+^-q3=JSbkIq2+iWZQn7GK7?;h zxCnl4R4s}+J8j?x7)&=W#lL~fX!?KLKw_XY4-Px0a?Nv}?zfP5iR?qlu+bwYYD%Ls zX1@7Bxt!)*^qZ@zVf_oue^E^K-S3QSk7t%b1=bXCP~wbK6E;kggy}oxQn`s?^jrrp zC?qv(6D3CNW-KbvXBnhos^D^MmBIaYMePY0b!`!OJUxYX$4R?fr(^imf}0+z4v7=^@a z%CnHBa9SxiNO{mHg3CrHU1pzdpTr&+BRY1a57kBeP(EF`hek5c(PV9kU-h`beRjSl z{Db#845$?(p@EQ$loAtd0^q3h7#mB zzCJpVzNA_WpKf%`fMH}E)7~wF2P`?umZy$jN~48a

NqhSM6!wfC^xp`8)_6xs> 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 MQx%#eHJ#R;gE4n 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 diff --git a/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts b/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts index 89a171c057..13e5c04ee6 100644 --- a/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts +++ b/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts @@ -19,30 +19,37 @@ let internalLinkName1 = 'probably-1'; let internalLinkName2 = 'vector-2'; fixture `Upload custom tutorials` - .meta({type: 'regression', rte: rte.standalone}) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async t => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); await t.click(myRedisDatabasePage.workbenchButton); }) - .afterEach(async() => { + .afterEach(async () => { await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); -// https://redislabs.atlassian.net/browse/RI-4186, https://redislabs.atlassian.net/browse/RI-4198, https://redislabs.atlassian.net/browse/RI-4302 +/* https://redislabs.atlassian.net/browse/RI-4186, https://redislabs.atlassian.net/browse/RI-4198, +https://redislabs.atlassian.net/browse/RI-4302, https://redislabs.atlassian.net/browse/RI-4318 +*/ test('Verify that user can upload tutorial with local zip file without manifest.json', async t => { // Verify that user can upload custom tutorials on docker version + const imageExternalPath = 'RedisInsight screen external'; + const imageRelativePath = 'RedisInsight screen relative'; folder1 = 'folder-1'; folder2 = 'folder-2'; internalLinkName1 = 'probably-1'; internalLinkName2 = 'vector-2'; + // Verify that user can see the “MY TUTORIALS” section in the Enablement area. await t.expect(workbenchPage.customTutorials.visible).ok('custom tutorials sections is not visible'); await t.click(workbenchPage.tutorialOpenUploadButton); await t.expect(workbenchPage.tutorialSubmitButton.hasAttribute('disabled')).ok('submit button is not disabled'); + // Verify that User can request to add a new custom Tutorial by uploading a .zip archive from a local folder await t.setFilesToUpload(workbenchPage.tutorialImport, [filePath]); await t.click(workbenchPage.tutorialSubmitButton); await t.expect(workbenchPage.tutorialAccordionButton.withText(tutorialName).visible).ok(`${tutorialName} tutorial is not uploaded`); + // Verify that when user upload a .zip archive without a .json manifest, all markdown files are inserted at the same hierarchy level await t.click(workbenchPage.tutorialAccordionButton.withText(tutorialName)); await t.expect((await workbenchPage.getAccordionButtonWithName(folder1)).visible).ok(`${folder1} is not visible`); @@ -52,16 +59,29 @@ test('Verify that user can upload tutorial with local zip file without manifest. .ok(`${internalLinkName1} is not visible`); await t.click(await workbenchPage.getAccordionButtonWithName(folder2)); await t.expect((await workbenchPage.getInternalLinkWithManifest(internalLinkName2)).visible) - .ok(`${internalLinkName1} is not visible`); + .ok(`${internalLinkName2} is not visible`); await t.expect(workbenchPage.scrolledEnablementArea.exists).notOk('enablement area is visible before clicked'); await t.click((await workbenchPage.getInternalLinkWithManifest(internalLinkName1))); await t.expect(workbenchPage.scrolledEnablementArea.visible).ok('enablement area is not visible after clicked'); + + // Verify that user can see image in custom tutorials by providing absolute external path in md file + const imageExternal = await workbenchPage.getTutorialImageByAlt(imageExternalPath); + await workbenchPage.waitUntilImageRendered(imageExternal); + const imageExternalHeight = await imageExternal.getStyleProperty('height'); + await t.expect(parseInt(imageExternalHeight.replace(/[^\d]/g, ''))).gte(150); + + // Verify that user can see image in custom tutorials by providing relative path in md file + const imageRelative = await workbenchPage.getTutorialImageByAlt(imageRelativePath); + await workbenchPage.waitUntilImageRendered(imageRelative); + const imageRelativeHeight = await imageRelative.getStyleProperty('height'); + await t.expect(parseInt(imageRelativeHeight.replace(/[^\d]/g, ''))).gte(150); + + // Verify that when User delete the tutorial, then User can see this tutorial and relevant markdown files are deleted from: the Enablement area in Workbench await t.click(workbenchPage.closeEnablementPage); await t.click(workbenchPage.tutorialLatestDeleteIcon); await t.expect(workbenchPage.tutorialDeleteButton.visible).ok('Delete popup is not visible'); await t.click(workbenchPage.tutorialDeleteButton); await t.expect(workbenchPage.tutorialDeleteButton.exists).notOk('Delete popup is still visible'); - // Verify that when User delete the tutorial, then User can see this tutorial and relevant markdown files are deleted from: the Enablement area in Workbench await t.expect((workbenchPage.tutorialAccordionButton.withText(tutorialName).exists)) .notOk(`${tutorialName} tutorial is not uploaded`); }); From 210d6b1d4c5717a51520d68ab1946de08acc14ef Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Thu, 13 Apr 2023 16:31:36 +0800 Subject: [PATCH 034/106] #RI-4331 - Add JSON plugin --- docs/plugins/introduction.md | 2 +- redisinsight/api/src/utils/cli-helper.ts | 1 + redisinsight/ui/.eslintrc.js | 2 +- .../components/cli-body/CliBody/CliBody.tsx | 2 +- .../cli-body/CliBody/styles.module.scss | 34 --------- .../src/components/json-viewer/JSONViewer.tsx | 4 +- .../components/json-viewer/styles.module.scss | 44 ------------ .../src/components/query-card/QueryCard.tsx | 5 +- .../QueryCardCliPlugin/QueryCardCliPlugin.tsx | 7 +- .../QueryCardCliPlugin/styles.module.scss | 4 -- .../styles.module.scss | 4 -- .../QueryCardCommonResult/styles.module.scss | 4 -- .../QueryCardHeader/QueryCardHeader.tsx | 4 +- .../ui/src/packages/clients-list/package.json | 33 ++++++++- .../ui/src/packages/clients-list/src/App.tsx | 51 ++++++++++++-- .../src/assets/json_view_icon_dark.svg | 12 ++++ .../src/assets/json_view_icon_light.svg | 12 ++++ .../src/components/TableResult/index.ts | 3 - .../clients-list/src/components/index.ts | 6 +- .../components/json-view/JSONView.spec.tsx | 21 ++++++ .../src/components/json-view/JSONView.tsx | 46 ++++++++++++ .../src/components/json-view/index.ts | 3 + .../TableView.spec.tsx} | 12 ++-- .../TableView.tsx} | 6 +- .../src/components/table-view/index.ts | 3 + .../src/packages/clients-list/src/index.html | 2 +- .../ui/src/packages/clients-list/src/main.tsx | 28 ++++++-- .../clients-list/src/styles/styles.scss | 37 +++++----- .../clients-list/src/utils/parseResponse.ts | 70 ++++++++++++++++++- .../ui/src/packages/clients-list/yarn.lock | 30 ++++++++ .../ui/src/pages/workbench/constants.ts | 20 +++--- .../ui/src/styles/components/_cli_output.scss | 37 ++++++++++ .../ui/src/styles/components/_components.scss | 2 + .../ui/src/styles/components/_json_view.scss | 43 ++++++++++++ scripts/build-statics.sh | 2 +- yarn.lock | 6 +- 36 files changed, 433 insertions(+), 169 deletions(-) delete mode 100644 redisinsight/ui/src/components/json-viewer/styles.module.scss create mode 100644 redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg create mode 100644 redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_light.svg delete mode 100644 redisinsight/ui/src/packages/clients-list/src/components/TableResult/index.ts create mode 100644 redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.spec.tsx create mode 100644 redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx create mode 100644 redisinsight/ui/src/packages/clients-list/src/components/json-view/index.ts rename redisinsight/ui/src/packages/clients-list/src/components/{TableResult/TableResult.spec.tsx => table-view/TableView.spec.tsx} (72%) rename redisinsight/ui/src/packages/clients-list/src/components/{TableResult/TableResult.tsx => table-view/TableView.tsx} (90%) create mode 100644 redisinsight/ui/src/packages/clients-list/src/components/table-view/index.ts create mode 100644 redisinsight/ui/src/styles/components/_cli_output.scss create mode 100644 redisinsight/ui/src/styles/components/_json_view.scss diff --git a/docs/plugins/introduction.md b/docs/plugins/introduction.md index 59679c5e39..c2ff1f94a5 100644 --- a/docs/plugins/introduction.md +++ b/docs/plugins/introduction.md @@ -11,7 +11,7 @@ Data visualization provided by the plugin is rendered within the Workbench results area and is based on the executed command, ie. a certain Redis command can generate its own custom data visualization. -We have included the following [plugin package example](https://github.com/RedisInsight/RedisInsight/tree/main/redisinsight/ui/src/packages/clients-list-example) for your reference: running the CLIENT LIST command presents the output in a tabular format for easier reading. +We have included the following [plugin package example](https://github.com/RedisInsight/RedisInsight/tree/main/redisinsight/ui/src/packages/clients-list) for your reference: running the CLIENT LIST command presents the output in a tabular format for easier reading. ## Wiki diff --git a/redisinsight/api/src/utils/cli-helper.ts b/redisinsight/api/src/utils/cli-helper.ts index 2b82357262..c91f6f040c 100644 --- a/redisinsight/api/src/utils/cli-helper.ts +++ b/redisinsight/api/src/utils/cli-helper.ts @@ -280,6 +280,7 @@ export const getUTF8FromBuffer = (reply: Buffer): string => reply.toString('utf8 /** * Generates a Buffer from escaped string representation * An opposite for getASCIISafeStringFromBuffer + * ANY CHANGES SHOULD BE TOO IN THE SAME FUNCTION IN THE CLIENTS-LIST PLUGIN * @param str */ export const getBufferFromSafeASCIIString = (str: string): Buffer => { diff --git a/redisinsight/ui/.eslintrc.js b/redisinsight/ui/.eslintrc.js index 70de8012d3..47e02b524f 100644 --- a/redisinsight/ui/.eslintrc.js +++ b/redisinsight/ui/.eslintrc.js @@ -28,7 +28,7 @@ module.exports = { }, }, ], - ignorePatterns: ['dist', 'src/packages/redisearch/src/icons/*.js', 'src/packages/clients-list-example/src/icons/*.js'], + ignorePatterns: ['dist', 'src/packages/redisearch/src/icons/*.js', 'src/packages/common/src/icons/*.js'], rules: { radix: 'off', diff --git a/redisinsight/ui/src/components/cli/components/cli-body/CliBody/CliBody.tsx b/redisinsight/ui/src/components/cli/components/cli-body/CliBody/CliBody.tsx index 5940c47cc0..dc0e06736f 100644 --- a/redisinsight/ui/src/components/cli/components/cli-body/CliBody/CliBody.tsx +++ b/redisinsight/ui/src/components/cli/components/cli-body/CliBody/CliBody.tsx @@ -218,7 +218,7 @@ const CliBody = (props: Props) => { return (

{}} role="textbox" diff --git a/redisinsight/ui/src/components/cli/components/cli-body/CliBody/styles.module.scss b/redisinsight/ui/src/components/cli/components/cli-body/CliBody/styles.module.scss index 03b3a422d4..97fd87c48c 100644 --- a/redisinsight/ui/src/components/cli/components/cli-body/CliBody/styles.module.scss +++ b/redisinsight/ui/src/components/cli/components/cli-body/CliBody/styles.module.scss @@ -9,27 +9,6 @@ display: flex; } -.container { - @include euiScrollBar; - flex: auto; - border-top: inherit; - padding: 9px 18px; - height: 100%; - word-break: break-all; - - font: normal normal normal 14px/17px Inconsolata; - text-align: left; - letter-spacing: 0; - color: var(--textColorShade); - - border-top: 1px solid var(--euiColorLightShade); - - z-index: 10; - - overflow-y: auto; - overflow-x: hidden; -} - .title { padding-left: 18px; } @@ -41,16 +20,3 @@ .input { padding-bottom: 7px; } - -:global(.cli-output-response-success) { - color: var(--cliOutputResponseColor) !important; -} - -:global(.cli-output-response-fail) { - color: var(--cliOutputResponseFailColor) !important; -} - -:global(.cli-command-wrapper) { - font: normal normal bold 14px/15px Inconsolata !important; - white-space: pre-line; -} diff --git a/redisinsight/ui/src/components/json-viewer/JSONViewer.tsx b/redisinsight/ui/src/components/json-viewer/JSONViewer.tsx index f1b6508e02..47b588afd9 100644 --- a/redisinsight/ui/src/components/json-viewer/JSONViewer.tsx +++ b/redisinsight/ui/src/components/json-viewer/JSONViewer.tsx @@ -2,8 +2,6 @@ import cx from 'classnames' import React from 'react' import JSONPretty from 'react-json-pretty' -import styles from './styles.module.scss' - interface Props { value: string expanded?: boolean @@ -18,7 +16,7 @@ const JSONViewer = (props: Props) => { return { value: ( -
+
), diff --git a/redisinsight/ui/src/components/json-viewer/styles.module.scss b/redisinsight/ui/src/components/json-viewer/styles.module.scss deleted file mode 100644 index 26d78f2ddc..0000000000 --- a/redisinsight/ui/src/components/json-viewer/styles.module.scss +++ /dev/null @@ -1,44 +0,0 @@ -.jsonViewer { - :global { - .__json { - &-pretty__, &-pretty-error__ { - font: normal normal normal 13px/18px Graphik, sans-serif; - letter-spacing: -0.13px; - padding: 0; - background: transparent; - color: var(--euiTextSubduedColor); - margin-bottom: 0; - } - - &-pretty-error__ { - white-space: normal; - } - - &-key__ { - color: var(--jsonKeyNameColor); - } - - &-value__ { - color: var(--jsonNumberColor); - } - - &-string__ { - color: var(--jsonStringColor); - } - - &-boolean__ { - color: var(--jsonBooleanColor); - } - } - } - - &.collapsed { - :global(.__json-pretty__) { - white-space: nowrap; - text-overflow: ellipsis; - width: 100%; - overflow: hidden; - line-height: inherit; - } - } -} diff --git a/redisinsight/ui/src/components/query-card/QueryCard.tsx b/redisinsight/ui/src/components/query-card/QueryCard.tsx index d5a5e12997..11d7551551 100644 --- a/redisinsight/ui/src/components/query-card/QueryCard.tsx +++ b/redisinsight/ui/src/components/query-card/QueryCard.tsx @@ -4,7 +4,7 @@ import cx from 'classnames' import { EuiLoadingContent, keys } from '@elastic/eui' import { useParams } from 'react-router-dom' -import { WBQueryType, ProfileQueryType } from 'uiSrc/pages/workbench/constants' +import { WBQueryType, ProfileQueryType, DEFAULT_TEXT_VIEW_TYPE } from 'uiSrc/pages/workbench/constants' import { RunQueryMode, ResultsMode, ResultsSummary } from 'uiSrc/slices/interfaces/workbench' import { getWBQueryType, @@ -48,7 +48,7 @@ export interface Props { } const getDefaultPlugin = (views: IPluginVisualization[], query: string) => - getVisualizationsByCommand(query, views).find((view) => view.default)?.uniqId || '' + getVisualizationsByCommand(query, views).find((view) => view.default)?.uniqId || DEFAULT_TEXT_VIEW_TYPE.id export const getSummaryText = (summary?: ResultsSummary, mode?: ResultsMode) => { if (summary) { @@ -219,6 +219,7 @@ const QueryCard = (props: Props) => { id={selectedViewValue} result={result} query={command} + mode={mode} setMessage={setMessage} commandId={id} /> diff --git a/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/QueryCardCliPlugin.tsx b/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/QueryCardCliPlugin.tsx index 21b6a7b891..82331a6c72 100644 --- a/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/QueryCardCliPlugin.tsx +++ b/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/QueryCardCliPlugin.tsx @@ -7,7 +7,7 @@ import { pluginApi } from 'uiSrc/services/PluginAPI' import { ThemeContext } from 'uiSrc/contexts/themeContext' import { getBaseApiUrl, Nullable, formatToText } from 'uiSrc/utils' import { Theme } from 'uiSrc/constants' -import { CommandExecutionResult, IPluginVisualization } from 'uiSrc/slices/interfaces' +import { CommandExecutionResult, IPluginVisualization, RunQueryMode } from 'uiSrc/slices/interfaces' import { PluginEvents } from 'uiSrc/plugins/pluginEvents' import { prepareIframeHtml } from 'uiSrc/plugins/pluginImport' import { @@ -27,6 +27,7 @@ export interface Props { id: string setMessage: (text: string) => void commandId: string + mode?: RunQueryMode } enum StylesNamePostfix { @@ -43,7 +44,7 @@ enum ActionTypes { const baseUrl = getBaseApiUrl() const QueryCardCliPlugin = (props: Props) => { - const { query, id, result, setMessage, commandId } = props + const { query, id, result, setMessage, commandId, mode = RunQueryMode.Raw } = props const { visualizations = [], staticPath } = useSelector(appPluginsSelector) const { modules = [] } = useSelector(connectedInstanceSelector) const serverInfo = useSelector(appServerInfoSelector) @@ -71,7 +72,7 @@ const QueryCardCliPlugin = (props: Props) => { sendMessageToPlugin({ event: 'executeCommand', method, - data: { command: query, data: result } + data: { command: query, data: result, mode } }) } diff --git a/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/styles.module.scss b/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/styles.module.scss index 329036b0f4..1a8ba6b414 100644 --- a/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/styles.module.scss +++ b/redisinsight/ui/src/components/query-card/QueryCardCliPlugin/styles.module.scss @@ -18,10 +18,6 @@ background-color: var(--euiPageBackgroundColor); z-index: 10; - - :global(.cli-output-response-success) { - color: var(--cliOutputResponseColor) !important; - } } .loading { diff --git a/redisinsight/ui/src/components/query-card/QueryCardCliResultWrapper/styles.module.scss b/redisinsight/ui/src/components/query-card/QueryCardCliResultWrapper/styles.module.scss index 3b0ce78eca..1b956c8adb 100644 --- a/redisinsight/ui/src/components/query-card/QueryCardCliResultWrapper/styles.module.scss +++ b/redisinsight/ui/src/components/query-card/QueryCardCliResultWrapper/styles.module.scss @@ -19,10 +19,6 @@ background-color: var(--wbRunResultsBg); z-index: 10; - - :global(.cli-output-response-success) { - color: var(--cliOutputResponseColor) !important; - } } .content { diff --git a/redisinsight/ui/src/components/query-card/QueryCardCommonResult/styles.module.scss b/redisinsight/ui/src/components/query-card/QueryCardCommonResult/styles.module.scss index 266d106481..4bc48d3509 100644 --- a/redisinsight/ui/src/components/query-card/QueryCardCommonResult/styles.module.scss +++ b/redisinsight/ui/src/components/query-card/QueryCardCommonResult/styles.module.scss @@ -18,10 +18,6 @@ background-color: var(--euiPageBackgroundColor); z-index: 10; - - :global(.cli-output-response-success) { - color: var(--cliOutputResponseColor) !important; - } } .loading { diff --git a/redisinsight/ui/src/components/query-card/QueryCardHeader/QueryCardHeader.tsx b/redisinsight/ui/src/components/query-card/QueryCardHeader/QueryCardHeader.tsx index cd59e4d67a..b111eb7c78 100644 --- a/redisinsight/ui/src/components/query-card/QueryCardHeader/QueryCardHeader.tsx +++ b/redisinsight/ui/src/components/query-card/QueryCardHeader/QueryCardHeader.tsx @@ -158,9 +158,9 @@ const QueryCardHeader = (props: Props) => { { rawMode: isRawMode(activeMode), group: isGroupMode(activeResultsMode), - previousView: previousView.name, + previousView: previousView?.name, isPreviousViewInternal: !!previousView?.internal, - currentView: currentView.name, + currentView: currentView?.name, isCurrentViewInternal: !!currentView?.internal, } ) diff --git a/redisinsight/ui/src/packages/clients-list/package.json b/redisinsight/ui/src/packages/clients-list/package.json index 66d072881d..0f39849b4b 100644 --- a/redisinsight/ui/src/packages/clients-list/package.json +++ b/redisinsight/ui/src/packages/clients-list/package.json @@ -7,12 +7,12 @@ "bugs": { "url": "https://github.com/" }, - "description": "Show client list as table", + "description": "Show client list as table and highlighted json", "source": "./src/main.tsx", "styles": "./dist/styles.css", "main": "./dist/index.js", "name": "client-list", - "version": "0.0.1", + "version": "0.0.2", "scripts": { "start": "cross-env NODE_ENV=development parcel serve src/index.html", "build": "rimraf dist && cross-env NODE_ENV=production concurrently \"yarn build:js && yarn minify:js\" \"yarn build:css\" \"yarn build:assets\"", @@ -41,6 +41,30 @@ "iconLight": "./dist/table_view_icon_light.svg", "description": "Example of client list plugin", "default": true + }, + { + "id": "json-view", + "name": "JSON", + "activationMethod": "renderJSON", + "matchCommands": [ + "JSON.GET", + "JSON.MGET" + ], + "iconDark": "./dist/json_view_icon_dark.svg", + "iconLight": "./dist/json_view_icon_light.svg", + "description": "Show value as JSON", + "default": true + }, + { + "id": "json-string-view", + "name": "JSON", + "activationMethod": "renderJSON", + "matchCommands": [ + "GET" + ], + "iconDark": "./dist/json_view_icon_dark.svg", + "iconLight": "./dist/json_view_icon_light.svg", + "description": "Show value as JSON" } ], "devDependencies": { @@ -59,9 +83,12 @@ "dependencies": { "@elastic/datemath": "^5.0.3", "@elastic/eui": "34.6.0", + "buffer": "^6.0.3", "classnames": "^2.3.1", "moment": "^2.29.1", "react": "^17.0.2", - "react-dom": "^17.0.2" + "react-dom": "^17.0.2", + "react-json-pretty": "^2.2.0", + "redisinsight-plugin-sdk": "^1.1.0" } } diff --git a/redisinsight/ui/src/packages/clients-list/src/App.tsx b/redisinsight/ui/src/packages/clients-list/src/App.tsx index 146d30f779..6290d1aaa9 100644 --- a/redisinsight/ui/src/packages/clients-list/src/App.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/App.tsx @@ -1,15 +1,28 @@ /* eslint-disable react/jsx-filename-extension */ import React from 'react' import { appendIconComponentCache } from '@elastic/eui/es/components/icon/icon' -import { TableResult } from './components' +import { JSONView, TableView } from './components' import { cachedIcons, - parseResponse, + parseClientListResponse, + parseJSONASCIIResponse, } from './utils' +export enum CommonPlugin { + ClientList = 'ClientList', + JSON = 'JSON', +} + +export enum RawMode { + Raw = 'Raw', + ASCII = 'ASCII', +} + interface Props { + plugin: CommonPlugin command: string + mode: RawMode result?: { response: any, status: string }[] } @@ -17,16 +30,40 @@ interface Props { // so a method exists to preload specific icons an application needs. appendIconComponentCache(cachedIcons) -const App = (props: Props) => { - const { command = '', result: [{ response = '', status = '' } = {}] = [] } = props +const getJsonResultString = (result:any, mode: RawMode) => + (mode !== RawMode.Raw ? parseJSONASCIIResponse(result) : result) - const result = parseResponse(response) +const getJsonResultStringFromArr = (response: any, mode: RawMode) => + `[${response.map((result: any) => getJsonResultString(result, mode)).join(',')}]` + +const App = (props: Props) => { + const { command = '', result: [{ response = '', status = '' } = {}] = [], plugin, mode } = props if (status === 'fail') { - return
{response}
+ return ( +
+
{JSON.stringify(response)}
+
+ ) } - return + switch (plugin) { + case CommonPlugin.ClientList: + const clientResult = parseClientListResponse(response) + return + + case CommonPlugin.JSON: + default: + const jsonResultString = Array.isArray(response) + ? getJsonResultStringFromArr(response, mode) + : getJsonResultString(response, mode) + + return ( +
+ +
+ ) + } } export default App diff --git a/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg b/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg new file mode 100644 index 0000000000..34df29dd84 --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_dark.svg @@ -0,0 +1,12 @@ + + + + + + + diff --git a/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_light.svg b/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_light.svg new file mode 100644 index 0000000000..dcd5094812 --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/src/assets/json_view_icon_light.svg @@ -0,0 +1,12 @@ + + + + + + + diff --git a/redisinsight/ui/src/packages/clients-list/src/components/TableResult/index.ts b/redisinsight/ui/src/packages/clients-list/src/components/TableResult/index.ts deleted file mode 100644 index 9e622e5f46..0000000000 --- a/redisinsight/ui/src/packages/clients-list/src/components/TableResult/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import TableResult from './TableResult' - -export default TableResult diff --git a/redisinsight/ui/src/packages/clients-list/src/components/index.ts b/redisinsight/ui/src/packages/clients-list/src/components/index.ts index 7d52990b46..a91d6b08e6 100644 --- a/redisinsight/ui/src/packages/clients-list/src/components/index.ts +++ b/redisinsight/ui/src/packages/clients-list/src/components/index.ts @@ -1,5 +1,7 @@ -import TableResult from './TableResult' +import TableView from './table-view' +import JSONView from './json-view' export { - TableResult + TableView, + JSONView, } diff --git a/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.spec.tsx b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.spec.tsx new file mode 100644 index 0000000000..98285a76a8 --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.spec.tsx @@ -0,0 +1,21 @@ +import React from 'react' +import { render, screen } from 'uiSrc/utils/test-utils' + +import JSONView from './JSONView' + +describe('JSONViewer', () => { + it('should render proper json', () => { + const jsx = JSONView({ value: JSON.stringify({}) }) + render(jsx.value as React.ReactElement) + + expect(jsx.isValid).toBeTruthy() + expect(screen.queryByTestId('value-as-json')).toBeInTheDocument() + }) + + it('should not render invalid json', () => { + const jsx = JSONView({ value: 'zxc' }) + + expect(jsx.value).toEqual('zxc') + expect(jsx.isValid).toBeFalsy() + }) +}) diff --git a/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx new file mode 100644 index 0000000000..964511fb3a --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx @@ -0,0 +1,46 @@ +import React, { useEffect, useState } from 'react' +import JSONPretty from 'react-json-pretty' +import { formatRedisReply } from 'redisinsight-plugin-sdk' +import { isJson } from '../../utils' + +interface Props { + value: string + command: string +} + +const JSONView = (props: Props) => { + const { value, command } = props + + const [formattedValue, setFormattedValue] = useState('') + + useEffect(() => { + try { + JSON.parse(value) + + if (!isJson(value)) { + throw new Error('Not Object or Array type') + } + } catch (_err) { + const formatResponse = async () => { + const formattedResponse = await formatRedisReply(value, command) + setFormattedValue(formattedResponse) + } + formatResponse() + } + }, []) + + return ( + <> + {formattedValue && ( +
{formattedValue}
+ )} + {!formattedValue && ( +
+ +
+ )} + + ) +} + +export default JSONView diff --git a/redisinsight/ui/src/packages/clients-list/src/components/json-view/index.ts b/redisinsight/ui/src/packages/clients-list/src/components/json-view/index.ts new file mode 100644 index 0000000000..d195f5e8d1 --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/src/components/json-view/index.ts @@ -0,0 +1,3 @@ +import JSONView from './JSONView' + +export default JSONView diff --git a/redisinsight/ui/src/packages/clients-list/src/components/TableResult/TableResult.spec.tsx b/redisinsight/ui/src/packages/clients-list/src/components/table-view/TableView.spec.tsx similarity index 72% rename from redisinsight/ui/src/packages/clients-list/src/components/TableResult/TableResult.spec.tsx rename to redisinsight/ui/src/packages/clients-list/src/components/table-view/TableView.spec.tsx index fc19cfc664..568aa9ba9d 100644 --- a/redisinsight/ui/src/packages/clients-list/src/components/TableResult/TableResult.spec.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/components/table-view/TableView.spec.tsx @@ -1,22 +1,22 @@ import React from 'react' import { instance, mock } from 'ts-mockito' +import TableView, { Props } from './TableView' import { render, waitFor } from '../../../../../RedisInsight/redisinsight/ui/src/utils/test-utils' -import TableResult, { Props } from './TableResult' const mockedProps = mock() describe.skip('TableResult', () => { it('should render', () => { - expect(render()).toBeTruthy() + expect(render()).toBeTruthy() }) it('Result element should be "Not found." meanwhile result is [0]', async () => { const { queryByTestId, rerender } = render( - + ) await waitFor(() => { - rerender() + rerender() }) const resultEl = queryByTestId(/query-table-no-results/) @@ -37,12 +37,12 @@ describe.skip('TableResult', () => { ] const { queryByTestId, queryAllByTestId, rerender } = render( - + ) await waitFor(() => { rerender( - + ) }) diff --git a/redisinsight/ui/src/packages/clients-list/src/components/TableResult/TableResult.tsx b/redisinsight/ui/src/packages/clients-list/src/components/table-view/TableView.tsx similarity index 90% rename from redisinsight/ui/src/packages/clients-list/src/components/TableResult/TableResult.tsx rename to redisinsight/ui/src/packages/clients-list/src/components/table-view/TableView.tsx index ad71dc3802..99d8f8c7f9 100644 --- a/redisinsight/ui/src/packages/clients-list/src/components/TableResult/TableResult.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/components/table-view/TableView.tsx @@ -13,9 +13,7 @@ export interface Props { const noResultMessage = 'No results' -const TableResult = React.memo((props: Props) => { - const { result, query } = props - +const TableView = React.memo(({ result, query }: Props) => { const [columns, setColumns] = useState[]>([]) useEffect(() => { @@ -54,4 +52,4 @@ const TableResult = React.memo((props: Props) => { ) }) -export default TableResult +export default TableView diff --git a/redisinsight/ui/src/packages/clients-list/src/components/table-view/index.ts b/redisinsight/ui/src/packages/clients-list/src/components/table-view/index.ts new file mode 100644 index 0000000000..c220a19b2e --- /dev/null +++ b/redisinsight/ui/src/packages/clients-list/src/components/table-view/index.ts @@ -0,0 +1,3 @@ +import TableView from './TableView' + +export default TableView diff --git a/redisinsight/ui/src/packages/clients-list/src/index.html b/redisinsight/ui/src/packages/clients-list/src/index.html index 33f62d5580..e0d8c8a4c6 100644 --- a/redisinsight/ui/src/packages/clients-list/src/index.html +++ b/redisinsight/ui/src/packages/clients-list/src/index.html @@ -8,7 +8,7 @@ - +
diff --git a/redisinsight/ui/src/packages/clients-list/src/main.tsx b/redisinsight/ui/src/packages/clients-list/src/main.tsx index 4ad59e222c..50200f5ee5 100644 --- a/redisinsight/ui/src/packages/clients-list/src/main.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/main.tsx @@ -1,23 +1,39 @@ /* eslint-disable react/jsx-filename-extension */ import React from 'react' import { render } from 'react-dom' -import result from './result.json' -import App from './App' +import App, { CommonPlugin } from './App' interface Props { command?: string + mode: 'RAW' | 'ASCII' data?: { response: any, status: string }[] } const renderClientsList = (props:Props) => { - const { command = '', data: result = [] } = props - render(, + const { command = '', data: result = [], mode } = props + render(, + document.getElementById('app')) +} + +const renderJSON = (props:Props) => { + const { command = '', data: result = [], mode } = props + + render(, document.getElementById('app')) } if (process.env.NODE_ENV === 'development') { - renderClientsList({ command: '', data: result || [] }) + // renderClientsList({ command: '', data: result || [] }) + const mode = 'ASCII' + + const data = [ + { + status: 'success', + response: ['{\\"test\\":\\"test\\"}', '{\\"foo\\":\\"bar\\"}'] + }] + + renderJSON({ command: '', data, mode }) } // This is a required action - export the main function for execution of the visualization -export default { renderClientsList } +export default { renderClientsList, renderJSON } diff --git a/redisinsight/ui/src/packages/clients-list/src/styles/styles.scss b/redisinsight/ui/src/packages/clients-list/src/styles/styles.scss index f22b44db39..12a018dfda 100644 --- a/redisinsight/ui/src/packages/clients-list/src/styles/styles.scss +++ b/redisinsight/ui/src/packages/clients-list/src/styles/styles.scss @@ -1,13 +1,14 @@ -@import 'node_modules/@elastic/eui/src/global_styling/mixins/helpers'; -@import 'node_modules/@elastic/eui/src/global_styling/index'; +@charset "UTF-8"; +@import "../../node_modules/@elastic/eui/src/global_styling/mixins/helpers"; +@import "../../node_modules/@elastic/eui/src/global_styling/index"; * div, * span { - font-family: 'Graphik', sans-serif !important; + font-family: "Graphik", sans-serif !important; } html { - background-color: var(--euiPageBackgroundColor) !important; + background-color: var(--wbRunResultsBg) !important; } .container { @@ -24,23 +25,9 @@ html { letter-spacing: 0; color: var(--textColorShade); - background-color: var(--euiPageBackgroundColor); + background-color: var(--wbRunResultsBg); z-index: 10; - -} -.responseFail { - display: inline-block; - padding: 16px 20px; - color: var(--euiColorColorDanger) !important; - font-size: 14px; - word-break: break-word; -} - -.matched { - color: var(--euiColorFullShade); - padding-bottom: 12px; - font: normal normal 500 13px/19px; } .table, @@ -50,7 +37,7 @@ html { // hide option {hidePerPageOptions} doesn't work // with dynamic changing prop "pagination" for In-memory table - .euiFlexItem:first-child{ + .euiFlexItem:first-child { display: none; } } @@ -98,3 +85,13 @@ html { margin: 0; } } + +.cli-container { + padding-left: 20px; + border-top: none; +} + +.cli-output-response-fail, +.cli-output-response-success { + font-family: Inconsolata, serif !important; +} diff --git a/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts b/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts index c26da33856..40c874e017 100644 --- a/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts +++ b/redisinsight/ui/src/packages/clients-list/src/utils/parseResponse.ts @@ -1,4 +1,6 @@ -export const parseResponse = (response: string) => response.split(/\r?\n/).filter((r: string) => r).map((row: string) => { +import { Buffer } from '../../node_modules/buffer/index' + +export const parseClientListResponse = (response: string) => response.split(/\r?\n/).filter((r: string) => r).map((row: string) => { const value = row.split(' ') const obj: any = {} value.forEach((v: string) => { @@ -8,3 +10,69 @@ export const parseResponse = (response: string) => response.split(/\r?\n/).filte }) return obj }) + +export const parseJSONASCIIResponse = (response: string):string => + getBufferFromSafeASCIIString(response).toString() + +export const getBufferFromSafeASCIIString = (str: string): Buffer => { + const bytes = [] + + for (let i = 0; i < str.length; i += 1) { + if (str[i] === '\\') { + if (str[i + 1] === 'x') { + const hexString = str.substr(i + 2, 2) + if (isHex(hexString)) { + bytes.push(Buffer.from(hexString, 'hex')) + i += 3 + // eslint-disable-next-line no-continue + continue + } + } + + if (['a', '"', '\\', 'b', 't', 'n', 'r'].includes(str[i + 1])) { + switch (str[i + 1]) { + case 'a': + bytes.push(Buffer.from('\u0007')) + break + case 'b': + bytes.push(Buffer.from('\b')) + break + case 't': + bytes.push(Buffer.from('\t')) + break + case 'n': + bytes.push(Buffer.from('\n')) + break + case 'r': + bytes.push(Buffer.from('\r')) + break + default: + bytes.push(Buffer.from(str[i + 1])) + } + + i += 1 + // eslint-disable-next-line no-continue + continue + } + } + + bytes.push(Buffer.from(str[i])) + } + + return Buffer.concat(bytes) +} + +function isHex(str: string) { + return /^[A-F0-9]{1,2}$/i.test(str) +} + +export const isJson = (item: any): boolean => { + let value = typeof item !== 'string' ? JSON.stringify(item) : item + try { + value = JSON.parse(value) + } catch (e) { + return false + } + + return typeof value === 'object' && value !== null +} diff --git a/redisinsight/ui/src/packages/clients-list/yarn.lock b/redisinsight/ui/src/packages/clients-list/yarn.lock index 3e7044720f..54e8ac6abd 100644 --- a/redisinsight/ui/src/packages/clients-list/yarn.lock +++ b/redisinsight/ui/src/packages/clients-list/yarn.lock @@ -1188,6 +1188,11 @@ base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -1233,6 +1238,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1800,6 +1813,11 @@ htmlparser2@^7.1.1: domutils "^2.8.0" entities "^3.0.1" +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + immutable@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" @@ -2461,6 +2479,13 @@ react-is@~16.3.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" integrity sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q== +react-json-pretty@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-json-pretty/-/react-json-pretty-2.2.0.tgz#9ba907d2b08d87e90456d87b6025feeceb8f63cf" + integrity sha512-3UMzlAXkJ4R8S4vmkRKtvJHTewG4/rn1Q18n0zqdu/ipZbUPLVZD+QwC7uVcD/IAY3s8iNVHlgR2dMzIUS0n1A== + dependencies: + prop-types "^15.6.2" + react-redux@^7.2.0: version "7.2.9" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" @@ -2534,6 +2559,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +redisinsight-plugin-sdk@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/redisinsight-plugin-sdk/-/redisinsight-plugin-sdk-1.1.0.tgz#5ac39dc5398b1f73f2357e67ce51e1875fbece4f" + integrity sha512-TtPYfpxVZlwASkO8WFEB8+l6H9N9SVGwVxU0hRGzkEdXZyeQ+Xm/1WwnkGKMaeJyvfpIGrPWVl+lN4pDQ3iqbA== + redux@^4.0.0, redux@^4.0.4: version "4.2.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" diff --git a/redisinsight/ui/src/pages/workbench/constants.ts b/redisinsight/ui/src/pages/workbench/constants.ts index 0df68f333b..571edad511 100644 --- a/redisinsight/ui/src/pages/workbench/constants.ts +++ b/redisinsight/ui/src/pages/workbench/constants.ts @@ -9,16 +9,18 @@ export enum WBQueryType { Plugin = 'Plugin' } +export const DEFAULT_TEXT_VIEW_TYPE = { + id: 'default__Text', + text: 'Text', + name: 'default__Text', + value: WBQueryType.Text, + iconDark: TextViewIconDark, + iconLight: TextViewIconLight, + internal: true, +} + export const VIEW_TYPE_OPTIONS = [ - { - id: 'default__Text', - text: 'Text', - name: 'default__Text', - value: WBQueryType.Text, - iconDark: TextViewIconDark, - iconLight: TextViewIconLight, - internal: true, - }, + DEFAULT_TEXT_VIEW_TYPE, ] export const getViewTypeOptions = () => diff --git a/redisinsight/ui/src/styles/components/_cli_output.scss b/redisinsight/ui/src/styles/components/_cli_output.scss new file mode 100644 index 0000000000..fd44502d33 --- /dev/null +++ b/redisinsight/ui/src/styles/components/_cli_output.scss @@ -0,0 +1,37 @@ +@import "../../../../../node_modules/@elastic/eui/src/global_styling/index"; +@import "../../../../../node_modules/@elastic/eui/src/global_styling/mixins/helpers"; + +.cli-container { + @include euiScrollBar; + flex: auto; + border-top: inherit; + padding: 9px 18px; + height: 100%; + word-break: break-all; + + font: normal normal normal 14px/17px Inconsolata !important; + text-align: left; + letter-spacing: 0; + color: var(--textColorShade); + + border-top: 1px solid var(--euiColorLightShade); + + z-index: 10; + + overflow-y: auto; + overflow-x: hidden; +} + +.cli-command-wrapper { + font: normal normal bold 14px/15px Inconsolata !important; + white-space: pre-line; +} + + +.cli-output-response-success { + color: var(--cliOutputResponseColor) !important; +} + +.cli-output-response-fail { + color: var(--cliOutputResponseFailColor) !important; +} diff --git a/redisinsight/ui/src/styles/components/_components.scss b/redisinsight/ui/src/styles/components/_components.scss index 802be7ff80..37035e15e6 100644 --- a/redisinsight/ui/src/styles/components/_components.scss +++ b/redisinsight/ui/src/styles/components/_components.scss @@ -15,3 +15,5 @@ @import "callout"; @import "tabs"; @import "notificationBody"; +@import "json_view"; +@import "cli_output"; diff --git a/redisinsight/ui/src/styles/components/_json_view.scss b/redisinsight/ui/src/styles/components/_json_view.scss new file mode 100644 index 0000000000..5ea172f1ca --- /dev/null +++ b/redisinsight/ui/src/styles/components/_json_view.scss @@ -0,0 +1,43 @@ +.jsonViewer { + .__json { + &-pretty__, + &-pretty-error__ { + font: normal normal normal 13px/18px Graphik, sans-serif; + letter-spacing: -0.13px; + padding: 0; + background: transparent; + color: var(--euiTextSubduedColor); + margin-bottom: 0; + } + + &-pretty-error__ { + white-space: normal; + } + + &-key__ { + color: var(--jsonKeyNameColor); + } + + &-value__ { + color: var(--jsonNumberColor); + } + + &-string__ { + color: var(--jsonStringColor); + } + + &-boolean__ { + color: var(--jsonBooleanColor); + } + } + + &-collapsed { + .__json-pretty__ { + white-space: nowrap; + text-overflow: ellipsis; + width: 100%; + overflow: hidden; + line-height: inherit; + } + } +} diff --git a/scripts/build-statics.sh b/scripts/build-statics.sh index 1f874c1435..62fb0ba367 100644 --- a/scripts/build-statics.sh +++ b/scripts/build-statics.sh @@ -42,7 +42,7 @@ yarn --cwd "${RI_EXPLIAIN_DIR}" build mkdir -p "${PLUGINS_DIR}/ri-explain" cp -R "${RI_EXPLIAIN_DIR}/dist" "${RI_EXPLIAIN_DIR}/package.json" "${PLUGINS_DIR}/ri-explain" -# Build clients-list plugin +# Build clients-list and json plugin CLIENTS_LIST_DIR="./redisinsight/ui/src/packages/clients-list" yarn --cwd "${CLIENTS_LIST_DIR}" yarn --cwd "${CLIENTS_LIST_DIR}" build diff --git a/yarn.lock b/yarn.lock index 3380653960..a962dae7c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4784,9 +4784,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001166, caniuse-lite@^1.0.30001359: - version "1.0.30001363" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz#26bec2d606924ba318235944e1193304ea7c4f15" - integrity sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg== + version "1.0.30001477" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001477.tgz" + integrity sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ== caseless@~0.12.0: version "0.12.0" From aebde34db0c7052667462c8e8cce1366530076d0 Mon Sep 17 00:00:00 2001 From: ViktarStarastsenka <99594890+ViktarStarastsenka@users.noreply.github.com> Date: Thu, 13 Apr 2023 13:53:55 +0100 Subject: [PATCH 035/106] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9695f64cc1..74293cff4d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ RedisInsight is an intuitive and efficient GUI for Redis, allowing you to intera * Visualizations of your [RediSearch](https://oss.redis.com/redisearch/) index, queries, and aggregations * Ability to build your own data visualization plugins * Built-in click-through guides for Redis capabilities -* Oficially supported for Redis OSS, [Redis Cloud](https://redis.com/try-free/). Works with Microsoft Azure Cache for Redis (official support upcoming). +* Officially supported for Redis OSS, [Redis Cloud](https://redis.com/try-free/). Works with Microsoft Azure Cache for Redis (official support upcoming). * Available for macOS (including M1), Windows and Linux Check out the [release notes](https://docs.redis.com/latest/ri/release-notes/). From a400ace56b513f3a150724c23337fb6d33f9c681 Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Fri, 14 Apr 2023 14:40:26 +0800 Subject: [PATCH 036/106] * #RI-4396 - [FE] Long text doesn't wrap * #RI-4397 - [FE] JSON isn't parsed in the Raw mode * #RI-4398 - [FE] Error isn't handled if user tries to get not existing key --- redisinsight/ui/src/packages/clients-list/src/App.tsx | 6 ++++-- redisinsight/ui/src/packages/clients-list/src/main.tsx | 9 +++++---- redisinsight/ui/src/styles/components/_json_view.scss | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/redisinsight/ui/src/packages/clients-list/src/App.tsx b/redisinsight/ui/src/packages/clients-list/src/App.tsx index 6290d1aaa9..abad9682b9 100644 --- a/redisinsight/ui/src/packages/clients-list/src/App.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/App.tsx @@ -15,7 +15,7 @@ export enum CommonPlugin { } export enum RawMode { - Raw = 'Raw', + RAW = 'RAW', ASCII = 'ASCII', } @@ -31,7 +31,9 @@ interface Props { appendIconComponentCache(cachedIcons) const getJsonResultString = (result:any, mode: RawMode) => - (mode !== RawMode.Raw ? parseJSONASCIIResponse(result) : result) + (mode !== RawMode.RAW && result !== null + ? parseJSONASCIIResponse(result) + : result) const getJsonResultStringFromArr = (response: any, mode: RawMode) => `[${response.map((result: any) => getJsonResultString(result, mode)).join(',')}]` diff --git a/redisinsight/ui/src/packages/clients-list/src/main.tsx b/redisinsight/ui/src/packages/clients-list/src/main.tsx index 50200f5ee5..6832b74bbd 100644 --- a/redisinsight/ui/src/packages/clients-list/src/main.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/main.tsx @@ -1,11 +1,11 @@ /* eslint-disable react/jsx-filename-extension */ import React from 'react' import { render } from 'react-dom' -import App, { CommonPlugin } from './App' +import App, { CommonPlugin, RawMode } from './App' interface Props { command?: string - mode: 'RAW' | 'ASCII' + mode: RawMode data?: { response: any, status: string }[] } @@ -24,12 +24,13 @@ const renderJSON = (props:Props) => { if (process.env.NODE_ENV === 'development') { // renderClientsList({ command: '', data: result || [] }) - const mode = 'ASCII' + const mode = RawMode.RAW const data = [ { status: 'success', - response: ['{\\"test\\":\\"test\\"}', '{\\"foo\\":\\"bar\\"}'] + // response: ['{\\"test\\":\\"test\\"}', '{\\"foo\\":\\"bar\\"}'] + response: '[{"about":"test\\r\\n"}]', }] renderJSON({ command: '', data, mode }) diff --git a/redisinsight/ui/src/styles/components/_json_view.scss b/redisinsight/ui/src/styles/components/_json_view.scss index 5ea172f1ca..c2ebfdbf67 100644 --- a/redisinsight/ui/src/styles/components/_json_view.scss +++ b/redisinsight/ui/src/styles/components/_json_view.scss @@ -8,6 +8,7 @@ background: transparent; color: var(--euiTextSubduedColor); margin-bottom: 0; + white-space: pre-wrap; } &-pretty-error__ { From de1a4b768fbdac55b5dd24e2948547b5295a4680 Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Fri, 14 Apr 2023 20:45:43 +0800 Subject: [PATCH 037/106] #RI-4400 - [FE] Primitive JSON values aren't parsed --- .../src/components/json-view/JSONView.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx index 964511fb3a..53fbb15d36 100644 --- a/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx @@ -8,16 +8,23 @@ interface Props { command: string } +enum HighlightPrimitiveCommands { + JSON_GET = 'JSON.GET', + JSON_MGET = 'JSON.MGET', +} + const JSONView = (props: Props) => { - const { value, command } = props + const { value, command = '' } = props const [formattedValue, setFormattedValue] = useState('') useEffect(() => { try { JSON.parse(value) + const isHighlightPrimitive = Object.values(HighlightPrimitiveCommands) + .some((cmd) => command?.toUpperCase().startsWith(cmd)) - if (!isJson(value)) { + if (!isJson(value) && !isHighlightPrimitive) { throw new Error('Not Object or Array type') } } catch (_err) { From bf8efa2e6e6402086900f9298205ee7983155c0f Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Fri, 14 Apr 2023 15:34:54 +0200 Subject: [PATCH 038/106] #RI-4381 - add bulk upload --- .../ui/src/assets/img/icons/bulk-upload.svg | 3 + .../BulkActionsConfig.spec.tsx | 26 +- .../bulk-actions-config/BulkActionsConfig.tsx | 46 +-- redisinsight/ui/src/constants/api.ts | 2 + redisinsight/ui/src/constants/bulkActions.ts | 3 +- redisinsight/ui/src/constants/storage.ts | 2 +- .../BulkActionSummary.spec.tsx | 14 + .../BulkActionSummary/BulkActionSummary.tsx | 43 +++ .../bulk-actions/BulkActionSummary/index.ts | 3 + .../BulkActionSummary/styles.modules.scss | 12 + .../bulk-actions/BulkActions.spec.tsx | 65 ++++- .../components/bulk-actions/BulkActions.tsx | 79 ++---- .../BulkActionsInfo/BulkActionsInfo.tsx | 27 +- .../BulkActionsTabs/BulkActionsTabs.tsx | 11 + .../BulkActionsTabs/styles.module.scss | 12 +- .../BulkDelete/BulkDelete.spec.tsx | 9 - .../bulk-actions/BulkDelete/BulkDelete.tsx | 186 +++---------- .../BulkDeleteContent/BulkDeleteContent.tsx | 64 ++--- .../BulkDeleteFooter.spec.tsx | 24 ++ .../BulkDeleteFooter/BulkDeleteFooter.tsx | 162 +++++++++++ .../BulkDelete/BulkDeleteFooter/index.ts | 3 + .../BulkDeleteFooter/styles.module.scss | 69 +++++ .../BulkDeleteSummary/BulkDeleteSummary.tsx | 36 +-- .../BulkDeleteSummary/styles.module.scss | 13 - .../BulkDelete/styles.module.scss | 19 ++ .../BulkUpload/BulkUpload.spec.tsx | 151 ++++++++++ .../bulk-actions/BulkUpload/BulkUpload.tsx | 208 ++++++++++++++ .../bulk-actions/BulkUpload/index.ts | 3 + .../BulkUpload/styles.module.scss | 104 +++++++ .../constants/bulk-type-options.tsx | 5 + .../browser/components/bulk-actions/utils.ts | 4 +- .../components/keys-header/KeysHeader.tsx | 4 +- .../ui/src/slices/browser/bulkActions.ts | 140 ++++++++-- .../ui/src/slices/interfaces/bulkActions.ts | 24 +- .../slices/tests/browser/bulkActions.spec.ts | 263 +++++++++++++++++- redisinsight/ui/src/telemetry/events.ts | 3 + 36 files changed, 1470 insertions(+), 372 deletions(-) create mode 100644 redisinsight/ui/src/assets/img/icons/bulk-upload.svg create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.spec.tsx create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/index.ts create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/styles.modules.scss create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.spec.tsx create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/index.ts create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/styles.module.scss create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/index.ts create mode 100644 redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss diff --git a/redisinsight/ui/src/assets/img/icons/bulk-upload.svg b/redisinsight/ui/src/assets/img/icons/bulk-upload.svg new file mode 100644 index 0000000000..fc4e8587fa --- /dev/null +++ b/redisinsight/ui/src/assets/img/icons/bulk-upload.svg @@ -0,0 +1,3 @@ + + + diff --git a/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.spec.tsx b/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.spec.tsx index 9810b6b00d..2d7742da38 100644 --- a/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.spec.tsx +++ b/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.spec.tsx @@ -6,10 +6,11 @@ import socketIO from 'socket.io-client' import { cleanup, mockedStore, render } from 'uiSrc/utils/test-utils' import { BulkActionsServerEvent, BulkActionsType, SocketEvent } from 'uiSrc/constants' import { + bulkActionsDeleteSelector, bulkActionsSelector, - disconnectBulkAction, + disconnectBulkDeleteAction, setBulkActionConnected, - setLoading + setBulkDeleteLoading } from 'uiSrc/slices/browser/bulkActions' import BulkActionsConfig from './BulkActionsConfig' @@ -29,6 +30,8 @@ jest.mock('uiSrc/slices/browser/bulkActions', () => ({ ...jest.requireActual('uiSrc/slices/browser/bulkActions'), bulkActionsSelector: jest.fn().mockReturnValue({ isConnected: false, + }), + bulkActionsDeleteSelector: jest.fn().mockReturnValue({ isActionTriggered: false }), })) @@ -57,10 +60,10 @@ describe('BulkActionsConfig', () => { }) it('should connect socket', () => { - const bulkActionsSelectorMock = jest.fn().mockReturnValue({ + const bulkActionsDeleteSelectorMock = jest.fn().mockReturnValue({ isActionTriggered: true, }) - bulkActionsSelector.mockImplementation(bulkActionsSelectorMock) + bulkActionsDeleteSelector.mockImplementation(bulkActionsDeleteSelectorMock) render() @@ -68,16 +71,16 @@ describe('BulkActionsConfig', () => { const afterRenderActions = [ setBulkActionConnected(true), - setLoading(true) + setBulkDeleteLoading(true) ] expect(store.getActions()).toEqual([...afterRenderActions]) }) it('should emit Create a delete type', () => { - const bulkActionsSelectorMock = jest.fn().mockReturnValue({ + const bulkActionsDeleteSelectorMock = jest.fn().mockReturnValue({ isActionTriggered: true, }) - bulkActionsSelector.mockImplementation(bulkActionsSelectorMock) + bulkActionsDeleteSelector.mockImplementation(bulkActionsDeleteSelectorMock) render() @@ -91,10 +94,13 @@ describe('BulkActionsConfig', () => { it('should catch disconnect', () => { const bulkActionsSelectorMock = jest.fn().mockReturnValue({ - isActionTriggered: true, isConnected: true, }) + const bulkActionsDeleteSelectorMock = jest.fn().mockReturnValue({ + isActionTriggered: true, + }) bulkActionsSelector.mockImplementation(bulkActionsSelectorMock) + bulkActionsDeleteSelector.mockImplementation(bulkActionsDeleteSelectorMock) const { unmount } = render() @@ -103,8 +109,8 @@ describe('BulkActionsConfig', () => { const afterRenderActions = [ setBulkActionConnected(true), - setLoading(true), - disconnectBulkAction(), + setBulkDeleteLoading(true), + disconnectBulkDeleteAction(), ] expect(store.getActions()).toEqual([...afterRenderActions]) diff --git a/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.tsx b/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.tsx index 6aa78d5e4e..4f682e6195 100644 --- a/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.tsx +++ b/redisinsight/ui/src/components/bulk-actions-config/BulkActionsConfig.tsx @@ -4,11 +4,13 @@ import { io, Socket } from 'socket.io-client' import { setLoading, + setBulkDeleteLoading, bulkActionsSelector, - disconnectBulkAction, + disconnectBulkDeleteAction, setBulkActionConnected, - setOverview, + setDeleteOverview, setBulkActionsInitialState, + bulkActionsDeleteSelector, } from 'uiSrc/slices/browser/bulkActions' import { getBaseApiUrl, Nullable } from 'uiSrc/utils' import { sessionStorageService } from 'uiSrc/services' @@ -19,19 +21,20 @@ import { BrowserStorageItem, BulkActionsServerEvent, BulkActionsStatus, BulkActi import { addErrorNotification } from 'uiSrc/slices/app/notifications' interface IProps { - retryDelay?: number; + retryDelay?: number } const BulkActionsConfig = ({ retryDelay = 5000 } : IProps) => { const { id: instanceId = '', db } = useSelector(connectedInstanceSelector) - const { isActionTriggered, isConnected } = useSelector(bulkActionsSelector) + const { isConnected } = useSelector(bulkActionsSelector) + const { isActionTriggered: isDeleteTriggered } = useSelector(bulkActionsDeleteSelector) const { filter, search } = useSelector(keysSelector) const socketRef = useRef>(null) const dispatch = useDispatch() useEffect(() => { - if (!isActionTriggered || !instanceId || socketRef.current?.connected) { + if (!isDeleteTriggered || !instanceId || socketRef.current?.connected) { return } @@ -61,25 +64,26 @@ const BulkActionsConfig = ({ retryDelay = 5000 } : IProps) => { handleDisconnect() } }) - }, [instanceId, isActionTriggered]) + }, [instanceId, isDeleteTriggered]) useEffect(() => { if (!socketRef.current?.connected) { return } - const id = sessionStorageService.get(BrowserStorageItem.bulkActionId) ?? '' + const id = sessionStorageService.get(BrowserStorageItem.bulkActionDeleteId) ?? '' + if (!id) return - if (!isActionTriggered) { + if (!isDeleteTriggered) { abortBulkDelete(id) return } emitBulkDelete(id) - }, [isActionTriggered]) + }, [isDeleteTriggered]) const emitBulkDelete = (id: string) => { - dispatch(setLoading(true)) - sessionStorageService.set(BrowserStorageItem.bulkActionId, id) + dispatch(setBulkDeleteLoading(true)) + sessionStorageService.set(BrowserStorageItem.bulkActionDeleteId, id) socketRef.current?.emit( BulkActionsServerEvent.Create, @@ -107,7 +111,7 @@ const BulkActionsConfig = ({ retryDelay = 5000 } : IProps) => { } const abortBulkDelete = (id: string) => { - dispatch(setLoading(true)) + dispatch(setBulkDeleteLoading(true)) socketRef.current?.emit( BulkActionsServerEvent.Abort, { id: `${id}` }, @@ -117,33 +121,33 @@ const BulkActionsConfig = ({ retryDelay = 5000 } : IProps) => { const fetchBulkAction = (data: any) => { if (data.status === BulkActionsServerEvent.Error) { - sessionStorageService.set(BrowserStorageItem.bulkActionId, '') + sessionStorageService.set(BrowserStorageItem.bulkActionDeleteId, '') dispatch(setBulkActionsInitialState()) } } const onBulkDeleting = (data: any) => { if (data.status === BulkActionsServerEvent.Error) { - dispatch(disconnectBulkAction()) + dispatch(disconnectBulkDeleteAction()) dispatch(addErrorNotification({ response: { data: data.error } })) } socketRef.current?.on(BulkActionsServerEvent.Overview, (payload: any) => { - dispatch(setLoading(isProcessingBulkAction(payload.status))) - dispatch(setOverview(payload)) + dispatch(setBulkDeleteLoading(isProcessingBulkAction(payload.status))) + dispatch(setDeleteOverview(payload)) if (payload.status === BulkActionsStatus.Failed) { - dispatch(disconnectBulkAction()) + dispatch(disconnectBulkDeleteAction()) } }) } const onBulkDeleteAborted = (data: any) => { - dispatch(setLoading(false)) - sessionStorageService.set(BrowserStorageItem.bulkActionId, '') + dispatch(setBulkDeleteLoading(false)) + sessionStorageService.set(BrowserStorageItem.bulkActionDeleteId, '') if (data.status === 'aborted') { - dispatch(setOverview(data)) + dispatch(setDeleteOverview(data)) } } @@ -154,7 +158,7 @@ const BulkActionsConfig = ({ retryDelay = 5000 } : IProps) => { }, [isConnected]) const handleDisconnect = () => { - dispatch(disconnectBulkAction()) + dispatch(disconnectBulkDeleteAction()) socketRef.current?.removeAllListeners() socketRef.current?.disconnect() } diff --git a/redisinsight/ui/src/constants/api.ts b/redisinsight/ui/src/constants/api.ts index 4063a33245..916bacdfb9 100644 --- a/redisinsight/ui/src/constants/api.ts +++ b/redisinsight/ui/src/constants/api.ts @@ -4,6 +4,8 @@ enum ApiEndpoints { DATABASES_TEST_CONNECTION = 'databases/test', DATABASES_EXPORT = 'databases/export', + BULK_ACTIONS_IMPORT = 'bulk-actions/import', + CA_CERTIFICATES = 'certificates/ca', CLIENT_CERTIFICATES = 'certificates/client', diff --git a/redisinsight/ui/src/constants/bulkActions.ts b/redisinsight/ui/src/constants/bulkActions.ts index a46e0bb32a..5a2d6b3945 100644 --- a/redisinsight/ui/src/constants/bulkActions.ts +++ b/redisinsight/ui/src/constants/bulkActions.ts @@ -7,7 +7,8 @@ export enum BulkActionsServerEvent { } export enum BulkActionsType { - Delete = 'delete' + Delete = 'delete', + Upload = 'upload', } export enum BulkActionsStatus { diff --git a/redisinsight/ui/src/constants/storage.ts b/redisinsight/ui/src/constants/storage.ts index 4e55ef6514..a39039062d 100644 --- a/redisinsight/ui/src/constants/storage.ts +++ b/redisinsight/ui/src/constants/storage.ts @@ -14,7 +14,7 @@ enum BrowserStorageItem { isEnablementAreaMinimized = 'isEnablementAreaMinimized', treeViewDelimiter = 'treeViewDelimiter', autoRefreshRate = 'autoRefreshRate', - bulkActionId = 'bulkActionId', + bulkActionDeleteId = 'bulkActionDeleteId', dbConfig = 'dbConfig_', RunQueryMode = 'RunQueryMode', wbCleanUp = 'wbCleanUp', diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.spec.tsx new file mode 100644 index 0000000000..814a652333 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.spec.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { render, screen } from 'uiSrc/utils/test-utils' + +import BulkActionSummary from './BulkActionSummary' + +describe('BulkActionSummary', () => { + it('should render', () => { + render() + + expect(screen.getByTestId('testid')).toBeInTheDocument() + + expect(screen.getByTestId('testid')).toHaveTextContent('100Keys Processed10Success1Errors0:00:00.010Time Taken') + }) +}) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx new file mode 100644 index 0000000000..bb4db91e45 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx @@ -0,0 +1,43 @@ +import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui' +import React from 'react' +import { numberWithSpaces } from 'uiSrc/utils/numbers' +import { millisecondsFormat } from 'uiSrc/utils' + +import styles from './styles.modules.scss' + +export interface Props { + processed?: number + succeed?: number + failed?: number + duration?: number + 'data-testid': string +} +const BulkActionSummary = ({ processed = 0, succeed = 0, failed = 0, duration = 0, 'data-testid': testId }: Props) => ( + + + {numberWithSpaces(processed)} + Keys Processed + + + {numberWithSpaces(succeed)} + Success + + + {numberWithSpaces(failed)} + Errors + + + {millisecondsFormat(duration, 'H:mm:ss.SSS')} + Time Taken + + +) + +export default BulkActionSummary diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/index.ts b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/index.ts new file mode 100644 index 0000000000..0979564172 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/index.ts @@ -0,0 +1,3 @@ +import BulkActionSummary from './BulkActionSummary' + +export default BulkActionSummary diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/styles.modules.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/styles.modules.scss new file mode 100644 index 0000000000..746dc28392 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/styles.modules.scss @@ -0,0 +1,12 @@ +.summary { + padding-top: 18px; + :global(.euiFlexItem) { + padding-right: 42px !important; + } +} + +.summaryValue { + font-size: 18px !important; + line-height: 24px; + font-weight: 500 !important; +} diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx index 0a356c9338..6af517622a 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx @@ -3,14 +3,20 @@ import { useSelector } from 'react-redux' import { mock } from 'ts-mockito' import { cloneDeep } from 'lodash' -import { cleanup, mockedStore, render, screen } from 'uiSrc/utils/test-utils' +import { cleanup, mockedStore, render, screen, fireEvent, act } from 'uiSrc/utils/test-utils' import { RootState } from 'uiSrc/slices/store' -import { KeyTypes } from 'uiSrc/constants' +import { BulkActionsType, KeyTypes } from 'uiSrc/constants' +import { setBulkActionType } from 'uiSrc/slices/browser/bulkActions' +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import BulkActions, { Props } from './BulkActions' const mockedProps = { ...mock(), } +jest.mock('uiSrc/telemetry', () => ({ + ...jest.requireActual('uiSrc/telemetry'), + sendEventTelemetry: jest.fn(), +})) let store: typeof mockedStore beforeEach(() => { @@ -98,4 +104,59 @@ describe('BulkActions', () => { expect(screen.queryByTestId('bulk-actions-info')).toBeInTheDocument() expect(screen.queryByTestId('bulk-actions-placeholder')).not.toBeInTheDocument() }) + + it('should call proper event after switch tab', async () => { + render() + + act(() => { + fireEvent.click(screen.getByTestId('bulk-action-tab-upload')) + }) + + const expectedActions = [setBulkActionType(BulkActionsType.Upload)] + expect(store.getActions()).toEqual(expectedActions) + }) + + describe('Telemetry', () => { + it('should call proper telemetry events', async () => { + const state: any = store.getState(); + (useSelector as jest.Mock).mockImplementation((callback: (arg0: any) => any) => callback({ + ...state, + browser: { + ...state.browser, + keys: { + ...state.browser.keys, + filter: KeyTypes.Hash, + isFiltered: true, + } + } + })) + const sendEventTelemetryMock = jest.fn(); + (sendEventTelemetry as jest.Mock).mockImplementation(() => sendEventTelemetryMock) + + render() + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.BULK_ACTIONS_OPENED, + eventData: { + databaseId: 'instanceId', + match: '*', + filterType: 'hash' + } + }); + + (sendEventTelemetry as jest.Mock).mockRestore() + + fireEvent.click(screen.getByTestId('bulk-action-cancel-btn')) + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.BULK_ACTIONS_CANCELLED, + eventData: { + databaseId: 'instanceId', + action: BulkActionsType.Delete, + search: '', + filterType: 'hash' + } + }) + }) + }) }) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx index 1191b10b2f..5300aa21d0 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react' +import React, { useEffect } from 'react' import { useDispatch, useSelector } from 'react-redux' import cx from 'classnames' import { @@ -7,26 +7,21 @@ import { EuiTitle, EuiToolTip, EuiButtonIcon, - EuiText, } from '@elastic/eui' import { useParams } from 'react-router-dom' -import { isUndefined } from 'lodash' import { setBulkActionType, selectedBulkActionsSelector, - overviewBulkActionsSelector, - bulkActionsSelector, setBulkActionsInitialState, } from 'uiSrc/slices/browser/bulkActions' import { BulkActionsType } from 'uiSrc/constants' import { keysSelector } from 'uiSrc/slices/browser/keys' import { getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import BulkUpload from './BulkUpload' import BulkDelete from './BulkDelete' import BulkActionsTabs from './BulkActionsTabs' -import BulkActionsInfo from './BulkActionsInfo' -import BulkDeleteSummary from './BulkDelete/BulkDeleteSummary' import styles from './styles.module.scss' export interface Props { @@ -40,16 +35,11 @@ const BulkActions = (props: Props) => { const { isFullScreen, arePanelsCollapsed, onClosePanel, onBulkActionsPanel, onToggleFullScreen } = props const { instanceId = '' } = useParams<{ instanceId: string }>() - const { filter, search, isSearched, isFiltered } = useSelector(keysSelector) + const { filter, search } = useSelector(keysSelector) const { type } = useSelector(selectedBulkActionsSelector) - const { loading } = useSelector(bulkActionsSelector) - const { status, filter: { match, type: filterType } = {} } = useSelector(overviewBulkActionsSelector) ?? {} - - const [title, setTitle] = useState('Bulk Actions') - const [typeSelected, setTypeSelected] = useState(type) - const [showPlaceholder, setShowPlaceholder] = useState(!isSearched && !isFiltered) const dispatch = useDispatch() + useEffect(() => { let matchValue = '*' if (search !== '*' && !!search) { @@ -65,18 +55,7 @@ const BulkActions = (props: Props) => { }) }, []) - useEffect(() => { - if (type === BulkActionsType.Delete) { - setTitle('Bulk Actions: Delete Keys') - } - }, [type]) - - useEffect(() => { - setShowPlaceholder(!status && !isSearched && !isFiltered) - }, [status, isSearched, isFiltered]) - const handleChangeType = (value: BulkActionsType) => { - setTypeSelected(value) dispatch(setBulkActionType(value)) } @@ -86,14 +65,19 @@ const BulkActions = (props: Props) => { onClosePanel() + const eventData: Record = { + databaseId: instanceId, + action: type + } + + if (type === BulkActionsType.Delete) { + eventData.search = search + eventData.filterType = filter + } + sendEventTelemetry({ event: TelemetryEvent.BULK_ACTIONS_CANCELLED, - eventData: { - databaseId: instanceId, - filterType: filter, - search, - action: type - } + eventData }) } @@ -104,10 +88,11 @@ const BulkActions = (props: Props) => { direction="column" className={cx(styles.container, 'relative')} gutterSize="none" + responsive={false} > -

{title}

+

Bulk Actions

{!arePanelsCollapsed && ( {
- {!showPlaceholder && ( - <> - - <> - {type === BulkActionsType.Delete && ( - - )} - - - - {typeSelected === BulkActionsType.Delete && ( - - )} - - )} - {showPlaceholder && ( -
- No pattern or key type set - - To perform a bulk action, set the pattern or select the key type - -
- )} + {type === BulkActionsType.Upload && ()} + {type === BulkActionsType.Delete && ()}
diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx index 6cb2752478..24f8e0e291 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx @@ -2,28 +2,29 @@ import React from 'react' import { EuiText } from '@elastic/eui' import { isUndefined } from 'lodash' import cx from 'classnames' -import { useSelector } from 'react-redux' import { getApproximatePercentage, Maybe, Nullable } from 'uiSrc/utils' import Divider from 'uiSrc/components/divider/Divider' import { BulkActionsStatus, KeyTypes } from 'uiSrc/constants' import GroupBadge from 'uiSrc/components/group-badge/GroupBadge' -import { overviewBulkActionsSelector } from 'uiSrc/slices/browser/bulkActions' import styles from './styles.module.scss' export interface Props { - title?: string + title?: string | React.ReactNode loading: boolean - filter: Nullable + filter?: Nullable status: Maybe - search: string + search?: string + progress?: { + total: Maybe + scanned: Maybe + } children?: React.ReactElement } const BulkActionsInfo = (props: Props) => { - const { children, loading, filter, search, status, title = 'Delete Keys with' } = props - - const { progress: { total = 0, scanned = 0 } = {} } = useSelector(overviewBulkActionsSelector) ?? {} + const { children, loading, filter, search, status, progress, title = 'Delete Keys with' } = props + const { total = 0, scanned = 0 } = progress || {} return (
@@ -36,10 +37,12 @@ const BulkActionsInfo = (props: Props) => {
)} -
- Pattern: - {` ${search}`} -
+ {search && ( +
+ Pattern: + {` ${search}`} +
+ )} {!isUndefined(status) && status !== BulkActionsStatus.Completed && status !== BulkActionsStatus.Aborted && ( diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx index 716c493d1e..79346a51f6 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx @@ -5,6 +5,8 @@ import { useSelector } from 'react-redux' import { BulkActionsType } from 'uiSrc/constants' import { selectedBulkActionsSelector } from 'uiSrc/slices/browser/bulkActions' +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances' import { bulkActionsTypeTabs } from '../constants/bulk-type-options' import styles from './styles.module.scss' @@ -14,9 +16,18 @@ export interface Props { const BulkActionsTabs = (props: Props) => { const { onChangeType } = props + const { id: instanceId } = useSelector(connectedInstanceSelector) const { type } = useSelector(selectedBulkActionsSelector) const onSelectedTabChanged = (id: BulkActionsType) => { + sendEventTelemetry({ + event: TelemetryEvent.BULK_ACTIONS_SWITCHED, + eventData: { + databaseId: instanceId, + prevValue: type, + currentValue: id + } + }) onChangeType(id) } diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/styles.module.scss index f35ca797de..497f578901 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/styles.module.scss @@ -2,14 +2,22 @@ border-bottom: 1px solid var(--euiColorLightShade); flex-direction: column; display: flex; - height: 45px; .tabs { - padding: 2px 20px 12px; + padding: 2px 20px 0; .tab { background-color: inherit !important; color: var(--euiTextSubduedColor) !important; + border-bottom: 4px solid transparent; + margin-right: 8px; + border-radius: 0; + transition: border-bottom-color, color ease .25s; + + &:global(.euiTab-isSelected) { + border-bottom-color: var(--euiColorPrimary); + color: var(--euiColorPrimary) !important; + } svg { margin-right: 6px; diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.spec.tsx index 3b790aa234..edcf132909 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.spec.tsx @@ -12,13 +12,4 @@ describe('BulkDelete', () => { it('should render', () => { expect(render()).toBeTruthy() }) - - it('should call onCancel prop when click on Cancel btn', () => { - const mockOnCancel = jest.fn() - render() - - fireEvent.click(screen.getByTestId('bulk-action-cancel-btn')) - - expect(mockOnCancel).toBeCalled() - }) }) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.tsx index b39fb32dfc..0c73b26e4a 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDelete.tsx @@ -1,20 +1,18 @@ -import React, { useState } from 'react' -import { EuiButton, EuiIcon, EuiPopover, EuiText } from '@elastic/eui' -import { useDispatch, useSelector } from 'react-redux' -import { useParams } from 'react-router-dom' -import cx from 'classnames' +import React, { useEffect, useState } from 'react' +import { EuiText } from '@elastic/eui' +import { useSelector } from 'react-redux' +import { isUndefined } from 'lodash' import { - overviewBulkActionsSelector, - toggleBulkActionTriggered, - bulkActionsSelector, - setBulkActionsInitialState, + bulkActionsDeleteOverviewSelector, + bulkActionsDeleteSelector, } from 'uiSrc/slices/browser/bulkActions' -import { keysDataSelector, keysSelector } from 'uiSrc/slices/browser/keys' -import { getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' -import { BulkActionsType } from 'uiSrc/constants' -import BulkDeleteContent from './BulkDeleteContent' -import { isProcessedBulkAction } from '../utils' +import { keysSelector } from 'uiSrc/slices/browser/keys' + +import BulkDeleteFooter from './BulkDeleteFooter' +import BulkDeleteSummary from './BulkDeleteSummary' +import BulkActionsInfo from '../BulkActionsInfo' + import styles from './styles.module.scss' export interface Props { @@ -23,136 +21,44 @@ export interface Props { const BulkDelete = (props: Props) => { const { onCancel } = props - const { instanceId = '' } = useParams<{ instanceId: string }>() - const { filter, search } = useSelector(keysSelector) - const { scanned, total } = useSelector(keysDataSelector) - const { loading } = useSelector(bulkActionsSelector) - const { status } = useSelector(overviewBulkActionsSelector) ?? {} - - const [isPopoverOpen, setIsPopoverOpen] = useState(false) - - const dispatch = useDispatch() - - const handleDelete = () => { - setIsPopoverOpen(false) - dispatch(toggleBulkActionTriggered(null)) - } - - const handleDeleteWarning = () => { - setIsPopoverOpen(true) - - let matchValue = '*' - if (search !== '*' && !!search) { - matchValue = getMatchType(search) - } + const { filter, search, isSearched, isFiltered } = useSelector(keysSelector) + const { loading } = useSelector(bulkActionsDeleteSelector) + const { + status, + filter: { match, type: filterType }, + progress + } = useSelector(bulkActionsDeleteOverviewSelector) ?? { filter: {} } + const [showPlaceholder, setShowPlaceholder] = useState(!isSearched && !isFiltered) - sendEventTelemetry({ - event: TelemetryEvent.BULK_ACTIONS_WARNING, - eventData: { - filterType: filter, - match: matchValue, - scanned, - total, - databaseId: instanceId, - action: BulkActionsType.Delete - } - }) - } - - const handleStartNew = () => { - dispatch(setBulkActionsInitialState(null)) - } - - const handleStop = () => { - dispatch(toggleBulkActionTriggered(null)) - } - - const handleCancel = () => { - onCancel() - } + useEffect(() => { + setShowPlaceholder(!status && !isSearched && !isFiltered) + }, [status, isSearched, isFiltered]) return ( -
- {status && } -
- {!loading && ( - - {isProcessedBulkAction(status) ? 'Close' : 'Cancel'} - - )} - {loading && ( - - Stop - - )} - {!isProcessedBulkAction(status) && ( - setIsPopoverOpen(false)} - panelClassName={styles.panelPopover} - panelPaddingSize="none" - button={( - - Delete - - )} - > - - -
- Are you sure you want to perform this action? -
-
- {`All keys with ${filter ? filter?.toUpperCase() : 'all'} key type and selected pattern will be deleted.`} -
- - Delete - -
-
- )} - {isProcessedBulkAction(status) && ( - + {!showPlaceholder && ( + <> + - Start New - - )} -
-
+ + + + + )} + {showPlaceholder && ( +
+ No pattern or key type set + + To perform a bulk action, set the pattern or select the key type + +
+ )} + ) } diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteContent/BulkDeleteContent.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteContent/BulkDeleteContent.tsx index 663359df37..9a4e4b6b75 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteContent/BulkDeleteContent.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteContent/BulkDeleteContent.tsx @@ -5,14 +5,14 @@ import AutoSizer from 'react-virtualized-auto-sizer' import { useSelector } from 'react-redux' import { MAX_BULK_ACTION_ERRORS_LENGTH } from 'uiSrc/constants' -import { summaryBulkActionsSelector } from 'uiSrc/slices/browser/bulkActions' +import { bulkActionsDeleteSummarySelector } from 'uiSrc/slices/browser/bulkActions' import styles from './styles.module.scss' const MIN_ROW_HEIGHT = 30 const PROTRUDING_OFFSET = 2 const BulkDeleteContent = () => { - const { errors = [] } = useSelector(summaryBulkActionsSelector) ?? {} + const { errors = [] } = useSelector(bulkActionsDeleteSummarySelector) ?? {} const outerRef = useRef(null) const listRef = useRef(null) @@ -48,38 +48,40 @@ const BulkDeleteContent = () => { ) } + if (!errors.length) { + return null + } + return ( - errors.length > 0 && ( -
-
- Error list - {errors.length >= MAX_BULK_ACTION_ERRORS_LENGTH && ( - - last {MAX_BULK_ACTION_ERRORS_LENGTH} errors are shown - +
+
+ Error list + {errors.length >= MAX_BULK_ACTION_ERRORS_LENGTH && ( + + last {MAX_BULK_ACTION_ERRORS_LENGTH} errors are shown + + )} +
+
+ + {({ width, height }) => ( + + {Row} + )} -
-
- - {({ width, height }) => ( - - {Row} - - )} - -
+
- ) +
) } diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.spec.tsx new file mode 100644 index 0000000000..ceeeda415a --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.spec.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { mock } from 'ts-mockito' +import { fireEvent, render, screen } from 'uiSrc/utils/test-utils' + +import BulkDeleteFooter, { Props } from './BulkDeleteFooter' + +const mockedProps = { + ...mock(), +} + +describe('BulkDeleteFooter', () => { + it('should render', () => { + expect(render()).toBeTruthy() + }) + + it('should call onCancel prop when click on Cancel btn', () => { + const mockOnCancel = jest.fn() + render() + + fireEvent.click(screen.getByTestId('bulk-action-cancel-btn')) + + expect(mockOnCancel).toBeCalled() + }) +}) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx new file mode 100644 index 0000000000..147b9776e8 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx @@ -0,0 +1,162 @@ +import React, { useState } from 'react' +import { EuiButton, EuiIcon, EuiPopover, EuiText } from '@elastic/eui' +import { useDispatch, useSelector } from 'react-redux' +import { useParams } from 'react-router-dom' +import cx from 'classnames' + +import { + bulkActionsDeleteOverviewSelector, + setBulkDeleteStartAgain, + toggleBulkDeleteActionTriggered, + bulkActionsDeleteSelector, +} from 'uiSrc/slices/browser/bulkActions' +import { keysDataSelector, keysSelector } from 'uiSrc/slices/browser/keys' +import { getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { BulkActionsType } from 'uiSrc/constants' + +import BulkDeleteContent from '../BulkDeleteContent' +import { isProcessedBulkAction } from '../../utils' + +import styles from './styles.module.scss' + +export interface Props { + onCancel: () => void +} + +const BulkDeleteFooter = (props: Props) => { + const { onCancel } = props + const { instanceId = '' } = useParams<{ instanceId: string }>() + const { filter, search } = useSelector(keysSelector) + const { scanned, total } = useSelector(keysDataSelector) + const { loading } = useSelector(bulkActionsDeleteSelector) + const { status } = useSelector(bulkActionsDeleteOverviewSelector) ?? { } + + const [isPopoverOpen, setIsPopoverOpen] = useState(false) + + const dispatch = useDispatch() + + const handleDelete = () => { + setIsPopoverOpen(false) + dispatch(toggleBulkDeleteActionTriggered()) + } + + const handleDeleteWarning = () => { + setIsPopoverOpen(true) + + let matchValue = '*' + if (search !== '*' && !!search) { + matchValue = getMatchType(search) + } + + sendEventTelemetry({ + event: TelemetryEvent.BULK_ACTIONS_WARNING, + eventData: { + filterType: filter, + match: matchValue, + scanned, + total, + databaseId: instanceId, + action: BulkActionsType.Delete + } + }) + } + + const handleStartNew = () => { + dispatch(setBulkDeleteStartAgain()) + } + + const handleStop = () => { + dispatch(toggleBulkDeleteActionTriggered()) + } + + const handleCancel = () => { + onCancel() + } + + return ( +
+ {status && } +
+ {!loading && ( + + {isProcessedBulkAction(status) ? 'Close' : 'Cancel'} + + )} + {loading && ( + + Stop + + )} + + {!isProcessedBulkAction(status) && ( + setIsPopoverOpen(false)} + panelClassName={styles.panelPopover} + panelPaddingSize="none" + button={( + + Delete + + )} + > + + +
+ Are you sure you want to perform this action? +
+
+ {`All keys with ${filter ? filter?.toUpperCase() : 'all'} key type and selected pattern will be deleted.`} +
+ + Delete + +
+
+ )} + {isProcessedBulkAction(status) && ( + + Start New + + )} +
+
+ ) +} + +export default BulkDeleteFooter diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/index.ts b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/index.ts new file mode 100644 index 0000000000..c142639260 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/index.ts @@ -0,0 +1,3 @@ +import BulkDeleteFooter from './BulkDeleteFooter' + +export default BulkDeleteFooter diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/styles.module.scss new file mode 100644 index 0000000000..749bb3148b --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/styles.module.scss @@ -0,0 +1,69 @@ +.container { + padding: 0 18px; + display: flex; + flex-direction: column; + flex-grow: 1; +} + +.containerPopover { + padding: 18px; + width: 430px; + height: 138px; +} + +.title { + font-size: 18px; + line-height: 24px; +} + +.panelPopover { + border-color: var(--euiColorPrimary) !important; + :global(.euiPopover__panelArrow:before) { + border-top-color: var(--euiColorPrimary) !important; + } +} + +.popoverIcon { + position: absolute; + color: var(--euiColorWarningLight) !important; + width: 24px !important; + height: 24px !important; +} + +.popoverItem { + font-size: 13px !important; + line-height: 18px !important; + padding-left: 34px; +} + +.popoverItemTitle { + color: var(--htmlColor) !important; + font-size: 14px !important; + line-height: 24px !important; +} + +.content { + display: flex; + min-height: 20px; +} + +.footer { + display: flex; + width: 100%; + justify-content: flex-end; + position: absolute; + bottom: 24px; + right: 18px; + padding-top: 8px; + background-color: var(--euiColorEmptyShade); +} + +.cancelBtn { + margin-right: 18px; +} + +.deleteApproveBtn { + position: absolute; + right: 18px; + bottom: 18px; +} diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx index e346e05368..de292a5e75 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx @@ -1,20 +1,21 @@ import React, { useEffect, useState } from 'react' -import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiText, EuiToolTip } from '@elastic/eui' +import { EuiIcon, EuiText, EuiToolTip } from '@elastic/eui' import { useSelector } from 'react-redux' import { isUndefined } from 'lodash' -import { millisecondsFormat } from 'uiSrc/utils' import { numberWithSpaces, nullableNumberWithSpaces } from 'uiSrc/utils/numbers' import { keysDataSelector } from 'uiSrc/slices/browser/keys' import { getApproximatePercentage } from 'uiSrc/utils/validations' -import { overviewBulkActionsSelector, summaryBulkActionsSelector } from 'uiSrc/slices/browser/bulkActions' +import { bulkActionsDeleteOverviewSelector, bulkActionsDeleteSummarySelector } from 'uiSrc/slices/browser/bulkActions' +import BulkActionSummary from 'uiSrc/pages/browser/components/bulk-actions/BulkActionSummary' + import styles from './styles.module.scss' const BulkDeleteSummary = () => { const [title, setTitle] = useState('') const { scanned = 0, total = 0, keys } = useSelector(keysDataSelector) - const { processed, succeed, failed } = useSelector(summaryBulkActionsSelector) ?? {} - const { duration = 0, status } = useSelector(overviewBulkActionsSelector) ?? {} + const { processed, succeed, failed } = useSelector(bulkActionsDeleteSummarySelector) ?? {} + const { duration = 0, status } = useSelector(bulkActionsDeleteOverviewSelector) ?? {} useEffect(() => { if (scanned < total && !keys.length) { @@ -50,24 +51,13 @@ const BulkDeleteSummary = () => { )} {!isUndefined(status) && ( - - - {numberWithSpaces(processed)} - Keys Processed - - - {numberWithSpaces(succeed)} - Success - - - {numberWithSpaces(failed)} - Errors - - - {millisecondsFormat(duration, 'H:mm:ss.SSS')} - Time Taken - - + )}
) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/styles.module.scss index 15daa4e96d..c42b16e9ef 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/styles.module.scss @@ -21,16 +21,3 @@ font-size: 13px !important; line-height: 18px; } - -.summary { - padding-top: 18px; - :global(.euiFlexItem) { - padding-right: 42px !important; - } -} - -.summaryValue { - font-size: 18px !important; - line-height: 24px; - font-weight: 500 !important; -} diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/styles.module.scss index c2efb86a6c..1d3d6ee126 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/styles.module.scss @@ -67,3 +67,22 @@ right: 18px; bottom: 18px; } + +.placeholder { + max-width: 440px; + height: calc(100% - 45px); + display: flex; + align-items: center; + flex-direction: column; + white-space: pre-wrap; + margin: 0 auto; + justify-content: center; +} + +.placeholderTitle { + color: var(--htmlColor) !important; + font-size: 16px !important; + line-height: 24px !important; + font-weight: 500 !important; + padding-bottom: 20px; +} diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx new file mode 100644 index 0000000000..25a999350a --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx @@ -0,0 +1,151 @@ +import React from 'react' +import { cloneDeep } from 'lodash' +import { render, screen, fireEvent, act, mockedStore, cleanup } from 'uiSrc/utils/test-utils' + +import { + bulkActionsUploadOverviewSelector, + bulkUpload, + setBulkUploadStartAgain +} from 'uiSrc/slices/browser/bulkActions' +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { BulkActionsType } from 'uiSrc/constants' +import BulkUpload from './BulkUpload' + +jest.mock('uiSrc/telemetry', () => ({ + ...jest.requireActual('uiSrc/telemetry'), + sendEventTelemetry: jest.fn(), +})) + +jest.mock('uiSrc/slices/browser/bulkActions', () => ({ + ...jest.requireActual('uiSrc/slices/browser/bulkActions'), + bulkActionsUploadSelector: jest.fn().mockReturnValue({ + loading: false, + fileName: '' + }), + bulkActionsUploadOverviewSelector: jest.fn().mockReturnValue(null), + bulkActionsUploadSummarySelector: jest.fn().mockReturnValue(null), +})) + +let store: typeof mockedStore +beforeEach(() => { + cleanup() + store = cloneDeep(mockedStore) + store.clearActions() +}) + +describe('BulkUpload', () => { + it('should render', () => { + expect(render()).toBeTruthy() + }) + + it('should call onCancel', () => { + const onCancel = jest.fn() + render() + + fireEvent.click(screen.getByTestId('bulk-action-cancel-btn')) + + expect(onCancel).toBeCalled() + }) + + it('submit btn should be disabled without file', () => { + render() + + expect(screen.getByTestId('bulk-action-warning-btn')).toBeDisabled() + }) + + it('should open warning popover and call proper actions after submit', async () => { + render() + + const data = 'set a b' + const blob = new Blob([data]) + + const file = new File([blob], 'text.txt') + await act(() => { + fireEvent.change( + screen.getByTestId('bulk-upload-file-input'), + { + target: { files: [file] }, + } + ) + }) + + expect(screen.getByTestId('bulk-action-warning-btn')).not.toBeDisabled() + fireEvent.click(screen.getByTestId('bulk-action-warning-btn')) + + expect(screen.getByTestId('bulk-action-tooltip')).toBeInTheDocument() + + fireEvent.click(screen.getByTestId('bulk-action-apply-btn')) + + const expectedActions = [bulkUpload()] + expect(store.getActions()).toEqual(expectedActions) + }) + + it('should render summary', () => { + (bulkActionsUploadOverviewSelector as jest.Mock).mockImplementation(() => ({ + status: 'completed', + progress: 100, + duration: 10 + })) + + render() + + expect(screen.getByTestId('bulk-upload-competed-summary')).toBeInTheDocument() + }) + + it('should call start new button', () => { + (bulkActionsUploadOverviewSelector as jest.Mock).mockImplementation(() => ({ + status: 'completed', + progress: 100, + duration: 10 + })) + + render() + + fireEvent.click(screen.getByTestId('bulk-action-start-new-btn')) + const expectedActions = [setBulkUploadStartAgain()] + expect(store.getActions()).toEqual(expectedActions) + }) + + it('should call proper telemetry events', async () => { + (bulkActionsUploadOverviewSelector as jest.Mock).mockRestore() + + const sendEventTelemetryMock = jest.fn(); + (sendEventTelemetry as jest.Mock).mockImplementation(() => sendEventTelemetryMock) + + render() + + const data = 'set a b' + const blob = new Blob([data]) + + const file = new File([blob], 'text.txt') + await act(() => { + fireEvent.change( + screen.getByTestId('bulk-upload-file-input'), + { + target: { files: [file] }, + } + ) + }) + + fireEvent.click(screen.getByTestId('bulk-action-warning-btn')) + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.BULK_ACTIONS_WARNING, + eventData: { + action: BulkActionsType.Upload, + databaseId: '' + } + }); + + (sendEventTelemetry as jest.Mock).mockRestore() + + fireEvent.click(screen.getByTestId('bulk-action-apply-btn')) + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.BULK_ACTIONS_STARTED, + eventData: { + action: BulkActionsType.Upload, + databaseId: '' + } + }) + }) +}) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx new file mode 100644 index 0000000000..2984a12ef4 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -0,0 +1,208 @@ +import React, { useState } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { + EuiButton, + EuiFilePicker, + EuiIcon, + EuiPopover, + EuiSpacer, + EuiText, + EuiToolTip, +} from '@elastic/eui' + +import cx from 'classnames' +import { Nullable } from 'uiSrc/utils' +import { BulkActionsStatus, BulkActionsType } from 'uiSrc/constants' +import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances' +import { + bulkActionsUploadOverviewSelector, + bulkActionsUploadSelector, + bulkActionsUploadSummarySelector, + bulkUploadDataAction, + setBulkUploadStartAgain +} from 'uiSrc/slices/browser/bulkActions' + +import BulkActionsInfo from 'uiSrc/pages/browser/components/bulk-actions/BulkActionsInfo' +import BulkActionSummary from 'uiSrc/pages/browser/components/bulk-actions/BulkActionSummary' + +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import styles from './styles.module.scss' + +export interface Props { + onCancel: () => void +} + +const BulkUpload = (props: Props) => { + const { onCancel } = props + const { id: instanceId } = useSelector(connectedInstanceSelector) + const { loading, fileName } = useSelector(bulkActionsUploadSelector) + const { status, progress, duration } = useSelector(bulkActionsUploadOverviewSelector) ?? {} + const { succeed, processed, failed } = useSelector(bulkActionsUploadSummarySelector) ?? {} + + const [files, setFiles] = useState>(null) + const [isPopoverOpen, setIsPopoverOpen] = useState(false) + + const isCompleted = status && status === BulkActionsStatus.Completed + + const dispatch = useDispatch() + + const onStartAgain = () => { + dispatch(setBulkUploadStartAgain()) + } + + const handleUploadWarning = () => { + setIsPopoverOpen(true) + sendEventTelemetry({ + event: TelemetryEvent.BULK_ACTIONS_WARNING, + eventData: { + databaseId: instanceId, + action: BulkActionsType.Upload + } + }) + } + + const onFileChange = (files: FileList | null) => { + setFiles(files) + } + + const handleUpload = () => { + if (files) { + setIsPopoverOpen(false) + + const formData = new FormData() + formData.append('file', files[0]) + dispatch(bulkUploadDataAction(instanceId, { file: formData, fileName: files[0].name })) + + sendEventTelemetry({ + event: TelemetryEvent.BULK_ACTIONS_STARTED, + eventData: { + databaseId: instanceId, + action: BulkActionsType.Upload + } + }) + } + } + + return ( +
+ {!isCompleted ? ( +
+ + Upload the text file with the list of Redis commands + + SET Key0 Value0 + SET Key1 Value1 + ... + SET KeyN ValueN + + )} + data-testid="bulk-upload-tooltip-example" + > + + + + + + +
+ ) : ( + + Upload with file + +
{fileName}
+ + )} + > + +
+ )} +
+ + Cancel + + {!isCompleted ? ( + setIsPopoverOpen(false)} + panelClassName={styles.panelPopover} + panelPaddingSize="none" + button={( + + Upload + + )} + > + + +
+ Are you sure you want to perform this action? +
+
+ All commands from the file will be executed against your database. +
+ + Upload + +
+
+ ) : ( + + Start New + + )} +
+
+ ) +} + +export default BulkUpload diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/index.ts b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/index.ts new file mode 100644 index 0000000000..bba8b5940e --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/index.ts @@ -0,0 +1,3 @@ +import BulkUpload from './BulkUpload' + +export default BulkUpload diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss new file mode 100644 index 0000000000..681a8b372a --- /dev/null +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss @@ -0,0 +1,104 @@ +@import "@elastic/eui/src/global_styling/mixins/helpers"; +@import "@elastic/eui/src/components/table/mixins"; +@import "@elastic/eui/src/global_styling/index"; + +.container { + display: flex; + flex-direction: column; + flex: 1; + + :global(.euiFilePicker) { + max-width: 600px; + } + + .content { + display: flex; + flex-direction: column; + + @include euiScrollBar; + position: relative; + margin: 18px; + padding: 12px; + min-height: 162px; + } + + .fileDrop { + + :global { + .euiButtonEmpty.euiButtonEmpty--primary.euiFilePicker__clearButton { + margin-top: 8px; + } + + .euiButtonEmpty.euiButtonEmpty--primary.euiFilePicker__clearButton .euiButtonEmpty__text { + color: var(--externalLinkColor) !important; + text-transform: lowercase; + } + + .euiFilePicker__showDrop .euiFilePicker__prompt, .euiFilePicker__input:focus + .euiFilePicker__prompt { + background-color: var(--euiColorEmptyShade); + } + + .euiFilePicker__prompt { + background-color: var(--euiColorEmptyShade); + height: 140px; + border-radius: 4px; + box-shadow: none; + border: 1px dashed var(--controlsBorderColor); + } + + .euiFilePicker__clearButton { + margin-top: 4px; + } + } + } + + .footer { + position: absolute; + bottom: 24px; + right: 0; + padding: 16px 18px 0; + + :global(.euiButton) { + margin-left: 18px; + } + } +} + +.containerPopover { + padding: 18px; + width: 430px; + height: 138px; +} + + +.panelPopover { + border-color: var(--euiColorPrimary) !important; + :global(.euiPopover__panelArrow:before) { + border-top-color: var(--euiColorPrimary) !important; + } +} + +.popoverIcon { + position: absolute; + color: var(--euiColorWarningLight) !important; + width: 24px !important; + height: 24px !important; +} + +.popoverItem { + font-size: 13px !important; + line-height: 18px !important; + padding-left: 34px; +} + +.popoverItemTitle { + color: var(--htmlColor) !important; + font-size: 14px !important; + line-height: 24px !important; +} + +.uploadApproveBtn { + position: absolute; + right: 18px; + bottom: 18px; +} diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/constants/bulk-type-options.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/constants/bulk-type-options.tsx index d86bd33015..0b2ddb7d63 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/constants/bulk-type-options.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/constants/bulk-type-options.tsx @@ -1,6 +1,7 @@ import { EuiIcon } from '@elastic/eui' import React from 'react' import { BulkActionsType } from 'uiSrc/constants' +import { ReactComponent as BulkUpload } from 'uiSrc/assets/img/icons/bulk-upload.svg' interface BulkActionsTabs { id: BulkActionsType, @@ -13,4 +14,8 @@ export const bulkActionsTypeTabs: BulkActionsTabs[] = [ id: BulkActionsType.Delete, label: <>Delete Keys, }, + { + id: BulkActionsType.Upload, + label: <>Upload Data, + }, ] diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/utils.ts b/redisinsight/ui/src/pages/browser/components/bulk-actions/utils.ts index 5f54644fac..04ee7430d0 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/utils.ts +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/utils.ts @@ -1,11 +1,11 @@ import { BulkActionsStatus } from 'uiSrc/constants' -export const isProcessingBulkAction = (status: BulkActionsStatus) => +export const isProcessingBulkAction = (status?: BulkActionsStatus) => status === BulkActionsStatus.Running || status === BulkActionsStatus.Preparing || status === BulkActionsStatus.Initializing -export const isProcessedBulkAction = (status: BulkActionsStatus) => +export const isProcessedBulkAction = (status?: BulkActionsStatus) => status === BulkActionsStatus.Completed || status === BulkActionsStatus.Aborted || status === BulkActionsStatus.Failed diff --git a/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx b/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx index 017d8b192a..ec9bf0f141 100644 --- a/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx +++ b/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx @@ -10,7 +10,7 @@ import { ReactComponent as TreeViewIcon } from 'uiSrc/assets/img/icons/treeview. import { ReactComponent as VectorIcon } from 'uiSrc/assets/img/icons/vector.svg' import { ReactComponent as RediSearchIcon } from 'uiSrc/assets/img/modules/RedisSearchLight.svg' import KeysSummary from 'uiSrc/components/keys-summary' -import { BrowserStorageItem } from 'uiSrc/constants' +import { BrowserStorageItem, BulkActionsType } from 'uiSrc/constants' import { SCAN_COUNT_DEFAULT, SCAN_TREE_COUNT_DEFAULT } from 'uiSrc/constants/api' import { localStorageService } from 'uiSrc/services' import { resetBrowserTree, setBrowserKeyListDataLoaded, } from 'uiSrc/slices/app/context' @@ -26,6 +26,7 @@ import { OnboardingStepName, OnboardingSteps } from 'uiSrc/constants/onboarding' import { incrementOnboardStepAction } from 'uiSrc/slices/app/features' import { OnboardingTour } from 'uiSrc/components' import { ONBOARDING_FEATURES } from 'uiSrc/components/onboarding-features' +import { setBulkActionType } from 'uiSrc/slices/browser/bulkActions' import AutoRefresh from '../auto-refresh' import FilterKeyType from '../filter-key-type' import RediSearchIndexesList from '../redisearch-key-list' @@ -238,6 +239,7 @@ const KeysHeader = (props: Props) => { } const openBulkActions = () => { + dispatch(setBulkActionType(BulkActionsType.Delete)) handleBulkActionsPanel(true) } diff --git a/redisinsight/ui/src/slices/browser/bulkActions.ts b/redisinsight/ui/src/slices/browser/bulkActions.ts index c69c39ccad..29455aaa64 100644 --- a/redisinsight/ui/src/slices/browser/bulkActions.ts +++ b/redisinsight/ui/src/slices/browser/bulkActions.ts @@ -1,21 +1,33 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { BulkActionsType, MAX_BULK_ACTION_ERRORS_LENGTH } from 'uiSrc/constants' -import { IBulkActionOverview } from 'apiSrc/modules/bulk-actions/interfaces/bulk-action-overview.interface' +import { AxiosError } from 'axios' +import { ApiEndpoints, BulkActionsType, MAX_BULK_ACTION_ERRORS_LENGTH } from 'uiSrc/constants' +import { apiService } from 'uiSrc/services' +import { getApiErrorMessage, getUrl, isStatusSuccessful } from 'uiSrc/utils' -import { RootState } from '../store' -import { StateBulkActions } from '../interfaces' +import { AppDispatch, RootState } from '../store' +import { StateBulkActions, IBulkActionOverview } from '../interfaces' export const initialState: StateBulkActions = { isShowBulkActions: false, loading: false, error: '', isConnected: false, - isActionTriggered: false, + bulkDelete: { + isActionTriggered: false, + loading: false, + error: '', + overview: null, + }, + bulkUpload: { + loading: false, + error: '', + overview: null, + fileName: '' + }, selectedBulkAction: { id: '', - type: BulkActionsType.Delete, - overview: null, + type: null, }, } @@ -26,6 +38,16 @@ const bulkActionsSlice = createSlice({ reducers: { setBulkActionsInitialState: () => initialState, + setBulkDeleteStartAgain: (state) => { + state.bulkDelete = initialState.bulkDelete + state.isConnected = false + }, + + setBulkUploadStartAgain: (state) => { + state.bulkUpload = initialState.bulkUpload + state.isConnected = false + }, + toggleBulkActions: (state) => { state.isShowBulkActions = !state.isShowBulkActions }, @@ -38,19 +60,23 @@ const bulkActionsSlice = createSlice({ state.loading = payload }, + setBulkDeleteLoading: (state, { payload }: PayloadAction) => { + state.bulkDelete.loading = payload + }, + setBulkActionType: (state, { payload }: PayloadAction) => { state.selectedBulkAction.type = payload }, - toggleBulkActionTriggered: (state) => { - state.isActionTriggered = !state.isActionTriggered + toggleBulkDeleteActionTriggered: (state) => { + state.bulkDelete.isActionTriggered = !state.bulkDelete.isActionTriggered }, - setOverview: (state, { payload }: PayloadAction) => { - let errors = state.selectedBulkAction.overview?.summary?.errors || [] + setDeleteOverview: (state, { payload }: PayloadAction) => { + let errors = state.bulkDelete.overview?.summary?.errors || [] errors = payload.summary?.errors?.concat(errors).slice(0, MAX_BULK_ACTION_ERRORS_LENGTH) - state.selectedBulkAction.overview = { + state.bulkDelete.overview = { ...payload, summary: { ...payload.summary, @@ -59,38 +85,104 @@ const bulkActionsSlice = createSlice({ } }, - disconnectBulkAction: (state) => { - state.loading = false - state.isActionTriggered = false + disconnectBulkDeleteAction: (state) => { + state.bulkDelete.loading = false + state.bulkDelete.isActionTriggered = false state.isConnected = false }, // bulk delete bulkDeleteSuccess: (state) => { - state.loading = false - } + state.bulkDelete.loading = false + }, + + bulkUpload: (state) => { + state.bulkUpload.loading = true + state.bulkUpload.error = '' + }, + + bulkUploadSuccess: (state, { payload }: PayloadAction<{ data: IBulkActionOverview, fileName?: string }>) => { + state.bulkUpload.loading = false + state.bulkUpload.overview = payload.data + state.bulkUpload.fileName = payload.fileName + }, + + bulkUploadFailed: (state, { payload }) => { + state.bulkUpload.loading = false + state.bulkUpload.error = payload + }, }, }) // Actions generated from the slice export const { setLoading, + setBulkDeleteLoading, + setBulkDeleteStartAgain, + setBulkUploadStartAgain, setBulkActionType, setBulkActionConnected, toggleBulkActions, - disconnectBulkAction, - toggleBulkActionTriggered, - setOverview, + disconnectBulkDeleteAction, + toggleBulkDeleteActionTriggered, + setDeleteOverview, setBulkActionsInitialState, - bulkDeleteSuccess + bulkDeleteSuccess, + bulkUpload, + bulkUploadFailed, + bulkUploadSuccess, } = bulkActionsSlice.actions // Selectors export const bulkActionsSelector = (state: RootState) => state.browser.bulkActions export const selectedBulkActionsSelector = (state: RootState) => state.browser.bulkActions?.selectedBulkAction -export const overviewBulkActionsSelector = (state: RootState) => state.browser.bulkActions?.selectedBulkAction.overview -export const summaryBulkActionsSelector = (state: RootState) => - state.browser.bulkActions?.selectedBulkAction.overview?.summary +export const bulkActionsDeleteSelector = (state: RootState) => state.browser.bulkActions.bulkDelete +export const bulkActionsDeleteOverviewSelector = (state: RootState) => state.browser.bulkActions.bulkDelete.overview +export const bulkActionsDeleteSummarySelector = (state: RootState) => + state.browser.bulkActions.bulkDelete.overview?.summary + +export const bulkActionsUploadSelector = (state: RootState) => state.browser.bulkActions.bulkUpload +export const bulkActionsUploadOverviewSelector = (state: RootState) => state.browser.bulkActions.bulkUpload.overview +export const bulkActionsUploadSummarySelector = (state: RootState) => + state.browser.bulkActions.bulkUpload.overview?.summary // The reducer export default bulkActionsSlice.reducer + +// Thunk actions +// Asynchronous thunk action +export function bulkUploadDataAction( + id: string, + uploadFile: { file: FormData, fileName: string }, + onSuccessAction?: () => void, + onFailAction?: () => void +) { + return async (dispatch: AppDispatch) => { + dispatch(bulkUpload()) + + try { + const { status, data } = await apiService.post( + getUrl( + id, + ApiEndpoints.BULK_ACTIONS_IMPORT + ), + uploadFile.file, + { + headers: { + Accept: 'application/json', + 'Content-Type': 'multipart/form-data' + } + } + ) + + if (isStatusSuccessful(status)) { + dispatch(bulkUploadSuccess({ data, fileName: uploadFile.fileName })) + onSuccessAction?.() + } + } catch (error) { + const errorMessage = getApiErrorMessage(error as AxiosError) + dispatch(bulkUploadFailed(errorMessage)) + onFailAction?.() + } + } +} diff --git a/redisinsight/ui/src/slices/interfaces/bulkActions.ts b/redisinsight/ui/src/slices/interfaces/bulkActions.ts index c65a670713..f35d2a984f 100644 --- a/redisinsight/ui/src/slices/interfaces/bulkActions.ts +++ b/redisinsight/ui/src/slices/interfaces/bulkActions.ts @@ -1,18 +1,32 @@ -import { BulkActionsType } from 'uiSrc/constants' +import { BulkActionsStatus, BulkActionsType } from 'uiSrc/constants' import { Nullable } from 'uiSrc/utils' -import { IBulkActionOverview } from 'apiSrc/modules/bulk-actions/interfaces/bulk-action-overview.interface' +import { IBulkActionOverview as IBulkActionOverviewBE } from 'apiSrc/modules/bulk-actions/interfaces/bulk-action-overview.interface' + +export interface IBulkActionOverview extends Omit { + status: BulkActionsStatus +} export interface StateBulkActions { isShowBulkActions: boolean loading: boolean error: string isConnected: boolean - isActionTriggered: boolean selectedBulkAction: SelectedBulkAction + bulkDelete: { + isActionTriggered: boolean + loading: boolean + error: string + overview: Nullable + } + bulkUpload: { + loading: boolean + error: string + overview: Nullable + fileName?: string + } } export interface SelectedBulkAction { id: string - type: BulkActionsType - overview: Nullable + type: Nullable } diff --git a/redisinsight/ui/src/slices/tests/browser/bulkActions.spec.ts b/redisinsight/ui/src/slices/tests/browser/bulkActions.spec.ts index 19921876b9..e5e038e844 100644 --- a/redisinsight/ui/src/slices/tests/browser/bulkActions.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/bulkActions.spec.ts @@ -3,17 +3,25 @@ import { BulkActionsType } from 'uiSrc/constants' import reducer, { bulkActionsSelector, initialState, - toggleBulkActionTriggered, + toggleBulkDeleteActionTriggered, toggleBulkActions, setBulkActionConnected, setLoading, setBulkActionType, - setOverview, - overviewBulkActionsSelector, - disconnectBulkAction, + setDeleteOverview, + bulkActionsDeleteOverviewSelector, + disconnectBulkDeleteAction, bulkDeleteSuccess, + setBulkDeleteStartAgain, + setBulkUploadStartAgain, + setBulkDeleteLoading, + bulkUpload, + bulkUploadSuccess, + bulkUploadFailed, + bulkUploadDataAction, } from 'uiSrc/slices/browser/bulkActions' import { cleanup, initialStateDefault, mockedStore } from 'uiSrc/utils/test-utils' +import { apiService } from 'uiSrc/services' let store: typeof mockedStore @@ -36,6 +44,76 @@ describe('bulkActions slice', () => { expect(result).toEqual(nextState) }) + describe('setBulkDeleteStartAgain', () => { + it('should properly set state', () => { + const currentState = { + ...initialState, + isConnected: true, + bulkDelete: { + overview: { + id: '123', + }, + isActionTriggered: true + } + } + + // Arrange + const state = { + ...initialState, + bulkDelete: { + ...initialState.bulkDelete + } + } + + // Act + const nextState = reducer(currentState, setBulkDeleteStartAgain()) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { bulkActions: nextState }, + }) + expect(bulkActionsSelector(rootState)).toEqual(state) + }) + }) + + describe('setBulkUploadStartAgain', () => { + it('should properly set state', () => { + const currentState = { + ...initialState, + isConnected: true, + bulkDelete: { + isActionTriggered: true + }, + bulkUpload: { + fileName: 'file.ts', + overview: { + id: '123123' + } + } + } + + // Arrange + const state = { + ...initialState, + bulkDelete: { + isActionTriggered: true + }, + bulkUpload: { + ...initialState.bulkUpload + } + } + + // Act + const nextState = reducer(currentState, setBulkUploadStartAgain()) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { bulkActions: nextState }, + }) + expect(bulkActionsSelector(rootState)).toEqual(state) + }) + }) + describe('toggleBulkActions', () => { it('should properly set state', () => { const currentState = { @@ -98,6 +176,28 @@ describe('bulkActions slice', () => { }) }) + describe('setBulkDeleteLoading', () => { + it('should properly set state', () => { + // Arrange + const state = { + ...initialState, + bulkDelete: { + ...initialState.bulkDelete, + loading: true + } + } + + // Act + const nextState = reducer(initialState, setBulkDeleteLoading(true)) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { bulkActions: nextState }, + }) + expect(bulkActionsSelector(rootState)).toEqual(state) + }) + }) + describe('setBulkActionType', () => { it('should properly set state', () => { // Arrange @@ -120,16 +220,19 @@ describe('bulkActions slice', () => { }) }) - describe('toggleBulkActionTriggered', () => { + describe('toggleBulkDeleteActionTriggered', () => { it('should properly set state', () => { // Arrange const state = { ...initialState, - isActionTriggered: true + bulkDelete: { + ...initialState.bulkDelete, + isActionTriggered: true + } } // Act - const nextState = reducer(initialState, toggleBulkActionTriggered()) + const nextState = reducer(initialState, toggleBulkDeleteActionTriggered()) // Assert const rootState = Object.assign(initialStateDefault, { @@ -139,7 +242,7 @@ describe('bulkActions slice', () => { }) }) - describe('setOverview', () => { + describe('setDeleteOverview', () => { it('should properly set state', () => { // Arrange const data = { @@ -156,28 +259,31 @@ describe('bulkActions slice', () => { } // Act - const nextState = reducer(initialState, setOverview(data)) + const nextState = reducer(initialState, setDeleteOverview(data)) // Assert const rootState = Object.assign(initialStateDefault, { browser: { bulkActions: nextState }, }) - expect(overviewBulkActionsSelector(rootState)).toEqual(overview) + expect(bulkActionsDeleteOverviewSelector(rootState)).toEqual(overview) }) }) - describe('disconnectBulkAction', () => { + describe('disconnectBulkDeleteAction', () => { it('should properly set state', () => { // Arrange const currentState = { ...initialState, - loading: true, - isActionTriggered: true, isConnected: true, + bulkDelete: { + ...initialState.bulkDelete, + loading: true, + isActionTriggered: true, + } } // Act - const nextState = reducer(currentState, disconnectBulkAction()) + const nextState = reducer(currentState, disconnectBulkDeleteAction()) // Assert const rootState = Object.assign(initialStateDefault, { @@ -192,7 +298,10 @@ describe('bulkActions slice', () => { // Arrange const currentState = { ...initialState, - loading: true + bulkDelete: { + ...initialState.bulkDelete, + loading: true + } } // Act @@ -205,5 +314,129 @@ describe('bulkActions slice', () => { expect(bulkActionsSelector(rootState)).toEqual(initialState) }) }) + + describe('bulkUpload', () => { + it('should properly set state', () => { + // Arrange + const state = { + ...initialState, + bulkUpload: { + ...initialState.bulkUpload, + loading: true + } + } + + // Act + const nextState = reducer(initialState, bulkUpload()) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { bulkActions: nextState }, + }) + expect(bulkActionsSelector(rootState)).toEqual(state) + }) + + describe('bulkUploadSuccess', () => { + it('should properly set state', () => { + // Arrange + const currentState = { + ...initialState, + bulkUpload: { + ...initialState.bulkUpload, + loading: true, + } + } + + const state = { + ...initialState, + bulkUpload: { + ...initialState.bulkUpload, + loading: false, + overview: {}, + fileName: 'file.txt' + } + } + + // Act + const nextState = reducer(currentState, bulkUploadSuccess({ data: {}, fileName: 'file.txt' })) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { bulkActions: nextState }, + }) + expect(bulkActionsSelector(rootState)).toEqual(state) + }) + }) + + describe('bulkUploadFailed', () => { + it('should properly set state', () => { + // Arrange + const state = { + ...initialState, + bulkUpload: { + ...initialState.bulkUpload, + loading: false, + error: 'error' + } + } + + // Act + const nextState = reducer(initialState, bulkUploadFailed('error')) + + // Assert + const rootState = Object.assign(initialStateDefault, { + browser: { bulkActions: nextState }, + }) + expect(bulkActionsSelector(rootState)).toEqual(state) + }) + }) + }) + + describe('bulkUploadDataAction', () => { + it('should call proper actions on success', async () => { + // Arrange + const formData = new FormData() + formData.append('file', '') + const data = {} + + const responsePayload = { data, status: 200 } + + apiService.post = jest.fn().mockResolvedValue(responsePayload) + + // Act + await store.dispatch(bulkUploadDataAction('id', { file: formData, fileName: 'text.txt' })) + + // Assert + const expectedActions = [ + bulkUpload(), + bulkUploadSuccess({ data: responsePayload.data, fileName: 'text.txt' }) + ] + expect(store.getActions()).toEqual(expectedActions) + }) + + it('should call proper actions on fail', async () => { + // Arrange + const formData = new FormData() + const errorMessage = 'Some error' + const responsePayload = { + response: { + status: 500, + data: { message: errorMessage }, + }, + } + + apiService.post = jest.fn().mockRejectedValueOnce(responsePayload) + + // Act + await store.dispatch(bulkUploadDataAction('id', { file: formData, fileName: 'text.txt' })) + + // Assert + const expectedActions = [ + bulkUpload(), + bulkUploadFailed(errorMessage), + ] + expect(store.getActions()).toEqual(expectedActions) + }) + }) }) }) diff --git a/redisinsight/ui/src/telemetry/events.ts b/redisinsight/ui/src/telemetry/events.ts index cd7dc2a36f..2fc6614096 100644 --- a/redisinsight/ui/src/telemetry/events.ts +++ b/redisinsight/ui/src/telemetry/events.ts @@ -197,6 +197,9 @@ export enum TelemetryEvent { BULK_ACTIONS_OPENED = 'BULK_ACTIONS_OPENED', BULK_ACTIONS_WARNING = 'BULK_ACTIONS_WARNING', BULK_ACTIONS_CANCELLED = 'BULK_ACTIONS_CANCELLED', + BULK_ACTIONS_STARTED = 'BULK_ACTIONS_STARTED', + BULK_ACTIONS_STOPPED = 'BULK_ACTIONS_STOPPED', + BULK_ACTIONS_SWITCHED = 'BULK_ACTIONS_SWITCHED', DATABASE_ANALYSIS_STARTED = 'DATABASE_ANALYSIS_STARTED', DATABASE_ANALYSIS_HISTORY_VIEWED = 'DATABASE_ANALYSIS_HISTORY_VIEWED', From 962f9f540c8137d2c28baec94d341afcd60f1701 Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Fri, 14 Apr 2023 22:23:01 +0800 Subject: [PATCH 039/106] #RI-4400 - [FE] Primitive JSON values aren't parsed --- .../src/components/json-view/JSONView.tsx | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx index 53fbb15d36..d5c0f3fe69 100644 --- a/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx +++ b/redisinsight/ui/src/packages/clients-list/src/components/json-view/JSONView.tsx @@ -1,18 +1,12 @@ import React, { useEffect, useState } from 'react' import JSONPretty from 'react-json-pretty' import { formatRedisReply } from 'redisinsight-plugin-sdk' -import { isJson } from '../../utils' interface Props { value: string command: string } -enum HighlightPrimitiveCommands { - JSON_GET = 'JSON.GET', - JSON_MGET = 'JSON.MGET', -} - const JSONView = (props: Props) => { const { value, command = '' } = props @@ -21,12 +15,6 @@ const JSONView = (props: Props) => { useEffect(() => { try { JSON.parse(value) - const isHighlightPrimitive = Object.values(HighlightPrimitiveCommands) - .some((cmd) => command?.toUpperCase().startsWith(cmd)) - - if (!isJson(value) && !isHighlightPrimitive) { - throw new Error('Not Object or Array type') - } } catch (_err) { const formatResponse = async () => { const formattedResponse = await formatRedisReply(value, command) From 208be94d481c566dfd78aecac39cbc08a7405d6f Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Fri, 14 Apr 2023 20:49:03 +0200 Subject: [PATCH 040/106] #RI-4331 - add json text verification test, fix client list test --- tests/e2e/helpers/common.ts | 10 ++ tests/e2e/pageObjects/workbench-page.ts | 11 ++ .../workbench/command-results.e2e.ts | 113 ++++++++++++++---- 3 files changed, 109 insertions(+), 25 deletions(-) diff --git a/tests/e2e/helpers/common.ts b/tests/e2e/helpers/common.ts index b7d511136a..f32380495f 100644 --- a/tests/e2e/helpers/common.ts +++ b/tests/e2e/helpers/common.ts @@ -176,4 +176,14 @@ export class Common { const getPageUrl = ClientFunction(() => window.location.href); await t.expect(getPageUrl()).contains(expectedText, `Opened URL not contains text ${expectedText}`); } + + /** + * Replace spaces and line breaks + * @param text text to be replaced + */ + async removeEmptySpacesAndBreak(text: string): Promise { + return text + .replace(/ /g, '') + .replace(/\n/g, ''); + } } diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index a1b841037c..c85fc4b92d 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -9,6 +9,8 @@ export class WorkbenchPage { cssQueryCardOutputResponseSuccess = '[data-testid=query-card-output-response-success]'; cssQueryCardOutputResponseFailed = '[data-testid=query-card-output-response-failed]'; cssTableViewTypeOption = '[data-testid=view-type-selected-Plugin-redisearch__redisearch]'; + cssClientListViewTypeOption = '[data-testid=view-type-selected-Plugin-client-list__clients-list]'; + cssJsonViewTypeOption = '[data-testid=view-type-selected-Plugin-client-list__json-view]'; cssMonacoCommandPaletteLine = '[aria-label="Command Palette"]'; cssQueryTextResult = '[data-testid=query-cli-result]'; cssWorkbenchCommandInHistory = '[data-testid=wb-command]'; @@ -102,6 +104,7 @@ export class WorkbenchPage { queryCardContainer = Selector('[data-testid^=query-card-container]'); queryCardCommand = Selector('[data-testid=query-card-command]'); queryTableResult = Selector('[data-testid^=query-table-result-]'); + queryJsonResult = Selector('[data-testid=json-view]'); mainEditorArea = Selector('[data-testid=main-input-container-area]'); queryTextResult = Selector(this.cssQueryTextResult); queryColumns = Selector('[data-testid*=query-column-]'); @@ -149,6 +152,7 @@ export class WorkbenchPage { //OPTIONS selectViewType = Selector('[data-testid=select-view-type]'); textViewTypeOption = Selector('[data-test-subj^=view-type-option-Text]'); + jsonStringViewTypeOption = Selector('[data-test-subj=view-type-option-Plugin-client-list__json-string-view]'); tableViewTypeOption = Selector('[data-test-subj^=view-type-option-Plugin]'); graphViewTypeOption = Selector('[data-test-subj^=view-type-option-Plugin-graph]'); typeSelectedClientsList = Selector('[data-testid=view-type-selected-Plugin-client-list__clients-list]'); @@ -169,6 +173,13 @@ export class WorkbenchPage { .click(this.textViewTypeOption); } + // Select Json view option in Workbench results + async selectViewTypeJson(): Promise { + await t + .click(this.selectViewType) + .click(this.jsonStringViewTypeOption); + } + // Select Table view option in Workbench results async selectViewTypeTable(): Promise { await t diff --git a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts index 8cff9dfbe9..bc76f197ea 100644 --- a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts @@ -22,9 +22,7 @@ fixture `Command results at Workbench` await t.click(myRedisDatabasePage.workbenchButton); }) .afterEach(async t => { - // Drop index, documents and database await t.switchToMainWindow(); - await workbenchPage.sendCommandInWorkbench(`FT.DROPINDEX ${indexName} DD`); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); test('Verify that user can see re-run icon near the already executed command and re-execute the command by clicking on the icon in Workbench page', async t => { @@ -41,7 +39,8 @@ test('Verify that user can see re-run icon near the already executed command and await t.expect(workbenchPage.queryCardCommand.textContent).eql(commandForSend1, 'The command is not re-executed'); // Verify that user can see expanded result after command re-run at the top of results table in Workbench - await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryTextResult).visible).ok('Re-executed command is not expanded'); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryTextResult).visible) + .ok('Re-executed command is not expanded'); await t.expect(workbenchPage.queryCardCommand.nth(0).textContent).eql(commandForSend1, 'The re-executed command is not at the top of results table'); // Delete the command from results @@ -61,37 +60,101 @@ test('Verify that user can see the results found in the table view by default fo await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssTableViewTypeOption).visible).ok(`The table view is not selected by default for command ${command}`); } }); -test('Verify that user can switches between views and see results according to the view rules in Workbench in results', async t => { - indexName = common.generateWord(5); - const commands = [ - 'hset doc:10 title "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud" url "redis.io" author "Test" rate "undefined" review "0" comment "Test comment"', - `FT.CREATE ${indexName} ON HASH PREFIX 1 doc: SCHEMA title TEXT WEIGHT 5.0 body TEXT url TEXT author TEXT rate TEXT review TEXT comment TEXT`, - `FT.SEARCH ${indexName} * limit 0 10000` - ]; +test + .after(async() => { + await workbenchPage.sendCommandInWorkbench(`FT.DROPINDEX ${indexName} DD`); + })('Verify that user can switches between views and see results according to the view rules in Workbench in results', async t => { + indexName = common.generateWord(5); + const commands = [ + 'hset doc:10 title "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud" url "redis.io" author "Test" rate "undefined" review "0" comment "Test comment"', + `FT.CREATE ${indexName} ON HASH PREFIX 1 doc: SCHEMA title TEXT WEIGHT 5.0 body TEXT url TEXT author TEXT rate TEXT review TEXT comment TEXT`, + `FT.SEARCH ${indexName} * limit 0 10000` + ]; // Send commands and check table view is default for Search command - for (const command of commands) { - await workbenchPage.sendCommandInWorkbench(command); - } - await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssTableViewTypeOption).visible).ok('The table view is not selected by default for command FT.SEARCH'); - await t.switchToIframe(workbenchPage.iframe); - await t.expect(await workbenchPage.queryTableResult.visible).ok('The table result is not displayed for command FT.SEARCH'); - // Select Text view and check result - await t.switchToMainWindow(); - await workbenchPage.selectViewTypeText(); - await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryTextResult).visible).ok('The result is not displayed in Text view'); -}); -// Skipped due to issue https://redislabs.atlassian.net/browse/RI-3524 -test.skip('Verify that user can switches between Table and Text for Client List and see results corresponding to their views', async t => { + for (const command of commands) { + await workbenchPage.sendCommandInWorkbench(command); + } + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssTableViewTypeOption).visible) + .ok('The table view is not selected by default for command FT.SEARCH'); + await t.switchToIframe(workbenchPage.iframe); + await t.expect(await workbenchPage.queryTableResult.visible).ok('The table result is not displayed for command FT.SEARCH'); + // Select Text view and check result + await t.switchToMainWindow(); + await workbenchPage.selectViewTypeText(); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryTextResult).visible).ok('The result is not displayed in Text view'); + }); + +test('Verify that user can switches between Table and Text for Client List and see results corresponding to their views', async t => { const command = 'CLIENT LIST'; // Send command and check table view is default await workbenchPage.sendCommandInWorkbench(command); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssClientListViewTypeOption).visible) + .ok('The table view is not selected by default for command CLIENT LIST'); await t.switchToIframe(workbenchPage.iframe); - await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssCustomPluginTableResult).visible).ok('The search results are not displayed in Custom Table view by default'); + + await t.expect(await workbenchPage.queryTableResult.visible) + .ok('The search results are not displayed in Client List Table view by default'); // Select Text view from dropdown and check search results await t.switchToMainWindow(); await workbenchPage.selectViewTypeText(); - await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryTextResult).visible).ok('The result is not displayed in Text view'); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryTextResult).visible) + .ok('The result is not displayed in Text view'); }); + +test.only + .after(async() => { + // remove all keys + workbenchPage.sendCommandInWorkbench('flushdb'); + })('Verify that user can switches between JSON view and Text view and see proper result', async t => { + const jsonObj = { a: 2 }; + const json = JSON.stringify(jsonObj); + const sendCommandsJsonGet = [ + `JSON.SET doc1 $ '${json}'`, + 'JSON.GET doc1' + ]; + + const sendCommandsJsonMGet = [ + `JSON.SET doc2 $ '${json}'`, + 'JSON.MGET doc2 $' + ]; + + const sendCommandsStringGet = [ + `SET doc3 '${json}'`, + 'GET doc3' + ]; + + // Send command and check json view is default for json.get + await workbenchPage.sendCommandInWorkbench(sendCommandsJsonGet.join('\n')); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssJsonViewTypeOption).visible) + .ok('The json view is not selected by default for command JSON.GET'); + + await t.switchToIframe(workbenchPage.iframe); + + let jsonTextActual = await common.removeEmptySpacesAndBreak(await workbenchPage.queryJsonResult.textContent); + let jsonTextExpected = await common.removeEmptySpacesAndBreak(json); + await t.expect(jsonTextActual).eql(jsonTextExpected); + + await t.switchToMainWindow(); + await workbenchPage.sendCommandInWorkbench(sendCommandsJsonMGet.join('\n')); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssJsonViewTypeOption).visible) + .ok('The json view is not selected by default for command JSON.MGET'); + + await t.switchToIframe(workbenchPage.iframe); + const expectedJsonMGet = JSON.stringify([[jsonObj]]); + jsonTextActual = await common.removeEmptySpacesAndBreak(await workbenchPage.queryJsonResult.textContent); + jsonTextExpected = await common.removeEmptySpacesAndBreak(expectedJsonMGet); + await t.expect(jsonTextActual).eql(jsonTextExpected); + + await t.switchToMainWindow(); + await workbenchPage.sendCommandInWorkbench(sendCommandsStringGet.join('\n')); + await workbenchPage.selectViewTypeJson(); + + await t.switchToIframe(workbenchPage.iframe); + jsonTextActual = await common.removeEmptySpacesAndBreak(await workbenchPage.queryJsonResult.textContent); + jsonTextExpected = await common.removeEmptySpacesAndBreak(json); + await t.expect(jsonTextActual).eql(jsonTextExpected); + }); + test .after(async() => { //Drop database From 8392159ce0755ab299ac121a067b22679e6e5af8 Mon Sep 17 00:00:00 2001 From: Artem Date: Sun, 16 Apr 2023 12:58:50 +0300 Subject: [PATCH 041/106] #RI-4390 fix glob pattern to match redis glob-style --- .../hash-business/hash-business.service.ts | 9 ++- .../scanner/strategies/cluster.strategy.ts | 7 +- .../scanner/strategies/standalone.strategy.ts | 7 +- .../set-business/set-business.service.ts | 9 ++- .../z-set-business/z-set-business.service.ts | 9 ++- .../api/src/utils/glob-pattern-helper.spec.ts | 40 +++++++++- .../api/src/utils/glob-pattern-helper.ts | 73 +++++++++++++++++++ 7 files changed, 133 insertions(+), 21 deletions(-) diff --git a/redisinsight/api/src/modules/browser/services/hash-business/hash-business.service.ts b/redisinsight/api/src/modules/browser/services/hash-business/hash-business.service.ts index fee5302c0f..3605acf65a 100644 --- a/redisinsight/api/src/modules/browser/services/hash-business/hash-business.service.ts +++ b/redisinsight/api/src/modules/browser/services/hash-business/hash-business.service.ts @@ -6,8 +6,9 @@ import { NotFoundException, } from '@nestjs/common'; import { chunk, flatMap, isNull } from 'lodash'; -import * as isGlob from 'is-glob'; -import { catchAclError, catchTransactionError, unescapeGlob } from 'src/utils'; +import { + catchAclError, catchTransactionError, isRedisGlob, unescapeRedisGlob, +} from 'src/utils'; import ERROR_MESSAGES from 'src/constants/error-messages'; import { RedisErrorCodes } from 'src/constants'; import config from 'src/utils/config'; @@ -105,8 +106,8 @@ export class HashBusinessService { new NotFoundException(ERROR_MESSAGES.KEY_NOT_EXIST), ); } - if (dto.match && !isGlob(dto.match, { strict: false })) { - const field = unescapeGlob(dto.match); + if (dto.match && !isRedisGlob(dto.match)) { + const field = unescapeRedisGlob(dto.match); result.nextCursor = 0; const value = await this.browserTool.execCommand( clientMetadata, diff --git a/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/cluster.strategy.ts b/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/cluster.strategy.ts index d7e1088cce..5d27dc2639 100644 --- a/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/cluster.strategy.ts +++ b/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/cluster.strategy.ts @@ -1,7 +1,6 @@ import { toNumber, omit, isNull } from 'lodash'; -import * as isGlob from 'is-glob'; import config from 'src/utils/config'; -import { unescapeGlob } from 'src/utils'; +import { isRedisGlob, unescapeRedisGlob } from 'src/utils'; import { BrowserToolClusterService, } from 'src/modules/browser/services/browser-tool-cluster/browser-tool-cluster.service'; @@ -46,8 +45,8 @@ export class ClusterStrategy extends AbstractStrategy { const settings = await this.settingsService.getAppSettings('1'); await this.calculateNodesTotalKeys(nodes); - if (!isGlob(match, { strict: false })) { - const keyName = Buffer.from(unescapeGlob(match)); + if (!isRedisGlob(match)) { + const keyName = Buffer.from(unescapeRedisGlob(match)); nodes.forEach((node) => { // eslint-disable-next-line no-param-reassign node.cursor = 0; diff --git a/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/standalone.strategy.ts b/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/standalone.strategy.ts index 552b996156..6a8adbeb3e 100644 --- a/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/standalone.strategy.ts +++ b/redisinsight/api/src/modules/browser/services/keys-business/scanner/strategies/standalone.strategy.ts @@ -1,7 +1,6 @@ -import * as isGlob from 'is-glob'; import { isNull } from 'lodash'; import config from 'src/utils/config'; -import { unescapeGlob } from 'src/utils'; +import { isRedisGlob, unescapeRedisGlob } from 'src/utils'; import { GetKeyInfoResponse, GetKeysWithDetailsResponse, @@ -47,8 +46,8 @@ export class StandaloneStrategy extends AbstractStrategy { node.total = await getTotal(client); - if (!isGlob(match, { strict: false })) { - const keyName = Buffer.from(unescapeGlob(match)); + if (!isRedisGlob(match)) { + const keyName = Buffer.from(unescapeRedisGlob(match)); node.cursor = 0; node.scanned = isNull(node.total) ? 1 : node.total; node.keys = await this.getKeysInfo(client, [keyName]); diff --git a/redisinsight/api/src/modules/browser/services/set-business/set-business.service.ts b/redisinsight/api/src/modules/browser/services/set-business/set-business.service.ts index fb2da61809..dde53b91ed 100644 --- a/redisinsight/api/src/modules/browser/services/set-business/set-business.service.ts +++ b/redisinsight/api/src/modules/browser/services/set-business/set-business.service.ts @@ -5,11 +5,12 @@ import { Logger, NotFoundException, } from '@nestjs/common'; -import * as isGlob from 'is-glob'; import { RedisErrorCodes } from 'src/constants'; import ERROR_MESSAGES from 'src/constants/error-messages'; import config from 'src/utils/config'; -import { catchAclError, catchTransactionError, unescapeGlob } from 'src/utils'; +import { + catchAclError, catchTransactionError, isRedisGlob, unescapeRedisGlob, +} from 'src/utils'; import { ReplyError } from 'src/models'; import { ClientMetadata } from 'src/common/models'; import { @@ -101,8 +102,8 @@ export class SetBusinessService { new NotFoundException(ERROR_MESSAGES.KEY_NOT_EXIST), ); } - if (dto.match && !isGlob(dto.match, { strict: false })) { - const member = unescapeGlob(dto.match); + if (dto.match && !isRedisGlob(dto.match)) { + const member = unescapeRedisGlob(dto.match); result.nextCursor = 0; const memberIsExist = await this.browserTool.execCommand( clientMetadata, diff --git a/redisinsight/api/src/modules/browser/services/z-set-business/z-set-business.service.ts b/redisinsight/api/src/modules/browser/services/z-set-business/z-set-business.service.ts index d4ef9d4fd2..1e3daaabd1 100644 --- a/redisinsight/api/src/modules/browser/services/z-set-business/z-set-business.service.ts +++ b/redisinsight/api/src/modules/browser/services/z-set-business/z-set-business.service.ts @@ -6,9 +6,10 @@ import { NotFoundException, } from '@nestjs/common'; import { isNull, isNaN } from 'lodash'; -import * as isGlob from 'is-glob'; import config from 'src/utils/config'; -import { catchAclError, catchTransactionError, unescapeGlob } from 'src/utils'; +import { + catchAclError, catchTransactionError, isRedisGlob, unescapeRedisGlob, +} from 'src/utils'; import { AddMembersToZSetDto, CreateZSetWithExpireDto, @@ -269,8 +270,8 @@ export class ZSetBusinessService { new NotFoundException(ERROR_MESSAGES.KEY_NOT_EXIST), ); } - if (dto.match && !isGlob(dto.match, { strict: false })) { - const member = unescapeGlob(dto.match); + if (dto.match && !isRedisGlob(dto.match)) { + const member = unescapeRedisGlob(dto.match); result.nextCursor = 0; const score = await this.browserTool.execCommand( clientMetadata, diff --git a/redisinsight/api/src/utils/glob-pattern-helper.spec.ts b/redisinsight/api/src/utils/glob-pattern-helper.spec.ts index e3c8716937..f69f10e96b 100644 --- a/redisinsight/api/src/utils/glob-pattern-helper.spec.ts +++ b/redisinsight/api/src/utils/glob-pattern-helper.spec.ts @@ -1,4 +1,4 @@ -import { unescapeGlob } from 'src/utils/glob-pattern-helper'; +import { unescapeGlob, isRedisGlob } from 'src/utils/glob-pattern-helper'; const unescapeGlobTests = [ { input: 'h?llo', output: 'h?llo' }, @@ -30,3 +30,41 @@ describe('unescapeGlob', () => { }); }); }); + +describe('isRedisGlob', () => { + const testCases: [string, boolean][] = [ + ['?ello', true], + ['??llo', true], + ['\\?\\?llo', false], + ['\\??llo', true], + ['?\\?llo', true], + ['\\\\\\\\?\\?llo', true], + ['h?llo', true], + ['h\\?llo', false], + ['h\\\\?llo', true], + ['h\\\\\\?llo', false], + ['h????llo', true], + ['h\\????llo', true], + ['h????ll?o', true], + ['h*llo', true], + ['h**llo', true], + ['h***ll*o', true], + ['\\*ello', false], + ['\\\\*ello', true], + ['\\\\\\*ello', false], + ['h[ae]llo', true], + ['h[^e]llo', true], + ['h[a-b]llo', true], + ['h[a-b\\]llo', false], + ['h[a-b\\\\]llo', true], + ['h\\[a-b\\\\]llo', false], + ['h\\\\[a-b\\\\]llo', true], + ['h\\\\[a-b\\]llo', false], + ]; + + testCases.forEach((tc) => { + it(`should return ${tc[1]} for input: ${tc[0]}`, () => { + expect(isRedisGlob(tc[0])).toEqual(tc[1]); + }); + }); +}); diff --git a/redisinsight/api/src/utils/glob-pattern-helper.ts b/redisinsight/api/src/utils/glob-pattern-helper.ts index 14e78819d0..f25ec83976 100644 --- a/redisinsight/api/src/utils/glob-pattern-helper.ts +++ b/redisinsight/api/src/utils/glob-pattern-helper.ts @@ -11,3 +11,76 @@ export const unescapeGlob = (value: string): string => { return result.replace(/\\{2}/g, '\\'); }; + +const REDIS_GLOB_SPEC_CHAR = ['?', '*', '[', ']']; +export const unescapeRedisGlob = (value: string): string => { + let result = value; + + REDIS_GLOB_SPEC_CHAR.forEach((char: string) => { + const regex = new RegExp('\\'.repeat(3) + char, 'g'); + result = result.replace(regex, char); + }); + + return result.replace(/\\{2}/g, '\\'); +}; + +/** + * Determines if any character on specific position is escaped + * @param str + * @param pos + */ +export const isEscaped = (str: string, pos: number) => { + let currPos = pos; + while (currPos > 0 && str[currPos - 1] === '\\') { + currPos -= 1; + } + + const escCount = pos - currPos; + + return escCount && (escCount % 2) > 0; +}; + +/** + * Find first position of unescaped char + * @param char + * @param str + * @param startPosition + */ +const findUnescapedCharPosition = (char: string, str: string, startPosition = 0) => { + let pos = str.indexOf(char, startPosition); + while (pos >= 0) { + if (!isEscaped(str, pos)) { + return pos; + } + + pos = str.indexOf(char, pos + 1); + } + + return pos; +}; + +/** + * Check if string has at least one unescaped char or sequence of unescaped chars in proper order + * Supported only 1-char and 2-chars conditions for now + * @param char + * @param str + * @param startPosition + */ +const hasUnescapedChar = (char: string, str: string, startPosition = 0) => { + if (char.length === 1) { + return findUnescapedCharPosition(char, str, startPosition) >= 0; + } + + if (char.length === 2) { + const firstCharPos = findUnescapedCharPosition(char[0], str, startPosition); + if (firstCharPos >= 0) { + return findUnescapedCharPosition(char[1], str, firstCharPos) >= 0; + } + } + + return false; +}; + +export const isRedisGlob = (str: string) => hasUnescapedChar('?', str) + || hasUnescapedChar('*', str) + || hasUnescapedChar('[]', str); From 8d2b8b23ef8b1f429bd1d29a822b87656dfa070f Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 17 Apr 2023 09:28:25 +0300 Subject: [PATCH 042/106] #RI-4384, #RI-4385 add backward compatibility so new helper will work for "main" commands only --- .../src/modules/commands/commands.service.ts | 15 +- .../CliAutocomplete/CliAutocomplete.spec.tsx | 37 ++- .../CliAutocomplete/CliAutocomplete.tsx | 5 +- .../components/cli-input/CliInputWrapper.tsx | 2 + .../command-helper/CommandHelperWrapper.tsx | 5 +- .../CHSearchOutput.tsx | 2 +- redisinsight/ui/src/constants/commands.ts | 1 + .../constants/mocks/mock-redis-commands.ts | 264 ++++++++++++++++++ redisinsight/ui/src/utils/commands.ts | 62 ++-- .../monaco/monacoRedisCompletionProvider.ts | 6 +- .../monacoRedisSignatureHelpProvider.ts | 2 +- .../ui/src/utils/tests/commands.spec.ts | 12 +- 12 files changed, 365 insertions(+), 48 deletions(-) diff --git a/redisinsight/api/src/modules/commands/commands.service.ts b/redisinsight/api/src/modules/commands/commands.service.ts index 50146092cd..3f790bd01e 100644 --- a/redisinsight/api/src/modules/commands/commands.service.ts +++ b/redisinsight/api/src/modules/commands/commands.service.ts @@ -1,4 +1,4 @@ -import { assign } from 'lodash'; +import { assign, forEach } from 'lodash'; import { Injectable, OnModuleInit } from '@nestjs/common'; import { CommandsJsonProvider } from 'src/modules/commands/commands-json.provider'; @@ -31,10 +31,15 @@ export class CommandsService implements OnModuleInit { * Get all commands merged into single object */ async getAll(): Promise { - return assign( - {}, - ...Object.values(await this.getCommandsGroups()), - ); + const commands = {}; + + Object.entries(await this.getCommandsGroups()).forEach(([provider, groupCommands]) => { + return forEach(groupCommands as {}, (value: {}, command) => { + commands[command] = { ...value, provider }; + }); + }); + + return commands; } async getCommandsGroups(): Promise { diff --git a/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx b/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx index 38b5271b86..2d4495866e 100644 --- a/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx +++ b/redisinsight/ui/src/components/cli/components/cli-input/CliAutocomplete/CliAutocomplete.spec.tsx @@ -79,8 +79,42 @@ describe('CliAutocomplete', () => { expect(store.getActions().slice(-2)).toEqual(expectedActions) }) - it('Autocomplete should be only with optional args for "scan" command with filled in required args ', () => { + it('Autocomplete should be only with optional args for "scan" command with filled in required args (new realization)', () => { const autocompleteOptionalText = '[MATCH pattern] [COUNT count] [TYPE type]' + const { queryByTestId } = render( + + ) + + const autocompleteComponent = queryByTestId(CliAutocompleteTestId) + + expect(autocompleteOptionalText).toEqual(autocompleteComponent?.textContent) + }) + + it('Autocomplete should be only with optional args for "scan" command with filled in required args (old realization)', () => { + const autocompleteOptionalText = '[pattern] [count] [type]' + const { queryByTestId } = render( + + ) + + const autocompleteComponent = queryByTestId(CliAutocompleteTestId) + + expect(autocompleteOptionalText).toEqual(autocompleteComponent?.textContent) + }) + + it('Autocomplete should be only with optional args for "scan" command with filled in required args (old realization)', () => { + const autocompleteOptionalText = '[pattern] [count] [type]' const { queryByTestId } = render( { const { queryByTestId } = render( { - const { commandName = '', arguments: args = [], wordsTyped } = props + const { commandName = '', provider = '', arguments: args = [], wordsTyped } = props const dispatch = useDispatch() @@ -47,7 +48,7 @@ const CliAutocomplete = (props: Props) => { } if (args.length) { - argsList = generateArgsNames(args) + argsList = generateArgsNames(provider, args) untypedArgs = argsList.slice(getUntypedArgs()).join(' ') argsList = argsList.join(' ') diff --git a/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx b/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx index e6c93b2842..28e4f0d9cd 100644 --- a/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx +++ b/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx @@ -27,6 +27,7 @@ const CliInputWrapper = (props: Props) => { const secondCommandMatch = `${firstCommandMatch} ${secondCommand ? secondCommand.toUpperCase() : null}` const matchedCmd = ALL_REDIS_COMMANDS[secondCommandMatch] || ALL_REDIS_COMMANDS[firstCommandMatch] + const provider = matchedCmd?.provider || 'unknown' const commandName = !isUndefined(ALL_REDIS_COMMANDS[secondCommandMatch]) ? `${firstCommand} ${secondCommand}` : firstCommand @@ -42,6 +43,7 @@ const CliInputWrapper = (props: Props) => { /> {matchedCmd && ( { group = CommandGroup.Generic, complexity = '', since = '', + provider, }: ICommand = ALL_REDIS_COMMANDS[lastMatchedCommand.toUpperCase()] ?? {} if (isSearching) { @@ -61,9 +62,9 @@ const CommandHelperWrapper = () => { }) } - const generatedArgs = generateArgs(args) + const generatedArgs = generateArgs(provider, args) const complexityShort = getComplexityShortNotation(complexity) - const argString = [lastMatchedCommand.toUpperCase(), ...generateArgsNames(args)].join(' ') + const argString = [lastMatchedCommand.toUpperCase(), ...generateArgsNames(provider, args)].join(' ') const generateArgData = (arg: ICommandArgGenerated, i: number): ReactElement => { const type = arg.multiple ? 'Multiple' : arg.optional ? 'Optional' : 'Required' diff --git a/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CHSearchOutput.tsx b/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CHSearchOutput.tsx index 438405b32c..8a0385ada8 100644 --- a/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CHSearchOutput.tsx +++ b/redisinsight/ui/src/components/command-helper/components/command-helper-search-output/CHSearchOutput.tsx @@ -35,7 +35,7 @@ const CHSearchOutput = ({ searchedCommands }: Props) => { const renderDescription = (command: string) => { const args = ALL_REDIS_COMMANDS[command].arguments || [] if (args.length) { - const argString = generateArgsNames(args).join(' ') + const argString = generateArgsNames(ALL_REDIS_COMMANDS[command]?.provider, args).join(' ') return ( { try { - return (new Argument(arg)).syntax({ - onlyMandatory, - pureName, - }) + // todo: temporary workaround until all commands providers will be unified + if (['main'].includes(provider)) { + return (new Argument(arg)).syntax({ + onlyMandatory, + pureName, + }) + } + + // We need this for backward compatibility now + const { name: propName = '', enum: enumArg, command, optional, multiple, type, block } = arg + + if (onlyMandatory && optional) return '' + + const name = isArray(propName) ? propName?.join(' ') : propName + const enumName = enumArg && (!pureName || !name) ? enumArg?.join('|') : name + const commandName = command ? command + (enumName ? ` ${enumName}` : '') : enumName + const optionalName = optional ? `[${commandName}]` : commandName + + const multipleNameTemp = [...commandName?.split?.(' '), `[${commandName} ...]`] + const multipleName = optional ? `[${multipleNameTemp.join(' ')}]` : multipleNameTemp + + if (type === CommandArgsType.Block && isArray(block)) { + const blocks = flatten(block?.map?.((block) => generateArgName(provider, block, pureName, onlyMandatory))) + return optional ? `[${blocks?.join?.(' ')}]` : blocks + } + + return (multiple && !pureName && !onlyMandatory ? multipleName : optionalName) ?? '' } catch (e) { return '' } - - // DO NOT DELETE. - // We need this for now to compare old behaviour when needed - // - // const { name: propName = '', enum: enumArg, command, optional, multiple, type, block } = arg - // - // if (onlyMandatory && optional) return '' - // - // const name = isArray(propName) ? propName?.join(' ') : propName - // const enumName = enumArg && (!pureName || !name) ? enumArg?.join('|') : name - // const commandName = command ? command + (enumName ? ` ${enumName}` : '') : enumName - // const optionalName = optional ? `[${commandName}]` : commandName - // - // const multipleNameTemp = [...commandName?.split?.(' '), `[${commandName} ...]`] - // const multipleName = optional ? `[${multipleNameTemp.join(' ')}]` : multipleNameTemp - // - // if (type === CommandArgsType.Block && isArray(block)) { - // const blocks = flatten(block?.map?.((block) => generateArgName(block, pureName, onlyMandatory))) - // return optional ? `[${blocks?.join?.(' ')}]` : blocks - // } - // - // return (multiple && !pureName && !onlyMandatory ? multipleName : optionalName) ?? '' } -export const generateArgs = (args: ICommandArg[]): ICommandArgGenerated[] => +export const generateArgs = (provider = 'unknown', args: ICommandArg[]): ICommandArgGenerated[] => flatten( args.map((arg) => ({ ...arg, - generatedName: generateArgName(arg, true), + generatedName: generateArgName(provider, arg, true), })) ) export const generateArgsNames = ( + provider: string = 'unknown', args: ICommandArg[], pureName: boolean = false, onlyMandatory: boolean = false ): string[] => reject( flatten( - args.map((arg) => generateArgName(arg, pureName, onlyMandatory)) + args.map((arg) => generateArgName(provider, arg, pureName, onlyMandatory)) ), isEmpty ) diff --git a/redisinsight/ui/src/utils/monaco/monacoRedisCompletionProvider.ts b/redisinsight/ui/src/utils/monaco/monacoRedisCompletionProvider.ts index f58ffa2193..d0a1ee5377 100644 --- a/redisinsight/ui/src/utils/monaco/monacoRedisCompletionProvider.ts +++ b/redisinsight/ui/src/utils/monaco/monacoRedisCompletionProvider.ts @@ -14,7 +14,7 @@ export const getCommandMarkdown = (commandName = '', command: ICommand): string if (command?.arguments?.length) { // TODO: use i18n file for texts lines.push('### Arguments:') - generateArgs(command.arguments).forEach((arg: ICommandArgGenerated): void => { + generateArgs(command?.provider, command.arguments).forEach((arg: ICommandArgGenerated): void => { const { multiple, optional } = arg const type: string = multiple ? 'multiple' : optional ? 'optional' : 'required' const argDescription: string = `_${type}_ \`${arg.generatedName}\`` @@ -31,8 +31,8 @@ export const createDependencyProposals = (commandsSpec: ICommands): DependencyPr const commandInfo: ICommand = commandsSpec[command] const range = { startLineNumber: 0, endLineNumber: 0, startColumn: 0, endColumn: 0 } const commandArgs = commandInfo?.arguments || [] - const detail: string = `${command} ${generateArgsNames(commandArgs).join(' ')}` - const argsNames = generateArgsNames(commandArgs, false, true) + const detail: string = `${command} ${generateArgsNames(commandInfo?.provider, commandArgs).join(' ')}` + const argsNames = generateArgsNames(commandInfo?.provider, commandArgs, false, true) const insertText = `${command} ${ !argsNames.length ? '' : argsNames.join(' ').split(' ') // eslint-disable-next-line sonarjs/no-nested-template-literals diff --git a/redisinsight/ui/src/utils/monaco/monacoRedisSignatureHelpProvider.ts b/redisinsight/ui/src/utils/monaco/monacoRedisSignatureHelpProvider.ts index 8c06c71a42..f11dfae38d 100644 --- a/redisinsight/ui/src/utils/monaco/monacoRedisSignatureHelpProvider.ts +++ b/redisinsight/ui/src/utils/monaco/monacoRedisSignatureHelpProvider.ts @@ -25,7 +25,7 @@ export const getRedisSignatureHelpProvider = ( } const commandArgs = command.info?.arguments ?? [] - const label: string = `${command?.name} ${generateArgsNames(commandArgs).join(' ')}` + const label: string = `${command?.name} ${generateArgsNames(command.info?.provider, commandArgs).join(' ')}` return { dispose: () => {}, diff --git a/redisinsight/ui/src/utils/tests/commands.spec.ts b/redisinsight/ui/src/utils/tests/commands.spec.ts index 00840b48c6..9c3121b5be 100644 --- a/redisinsight/ui/src/utils/tests/commands.spec.ts +++ b/redisinsight/ui/src/utils/tests/commands.spec.ts @@ -8,7 +8,7 @@ interface IMockedCommands { matchedCommand: string; argStr?: string; argsNamesWithEnumsMock?: string[]; - argsNamesMock?: string[]; + argsNamesMock?: (string | string[])[]; complexityShortMock?: string; } @@ -133,7 +133,7 @@ describe('generateArgs', () => { generatedName: argsNamesMock[i] ?? '', })) - const args = generateArgs(argsInit) + const args = generateArgs(ALL_REDIS_COMMANDS[matchedCommand?.toUpperCase()]?.provider, argsInit) expect(args).toEqual(argsMocked) }) @@ -145,7 +145,7 @@ describe('generateArgName', () => { mockedCommands.forEach(({ matchedCommand = '', argsNamesWithEnumsMock }) => { const args = ALL_REDIS_COMMANDS[matchedCommand?.toUpperCase()]?.arguments ?? [] - const generatedArgNames = generateArgsNames(args) + const generatedArgNames = generateArgsNames(ALL_REDIS_COMMANDS[matchedCommand?.toUpperCase()]?.provider, args) expect(generatedArgNames).toEqual(argsNamesWithEnumsMock) }) }) @@ -153,7 +153,11 @@ describe('generateArgName', () => { mockedCommands.forEach(({ matchedCommand = '', argsNamesMock }) => { const args = ALL_REDIS_COMMANDS[matchedCommand?.toUpperCase()]?.arguments ?? [] - const generatedArgNames = generateArgsNames(args, true) + const generatedArgNames = generateArgsNames( + ALL_REDIS_COMMANDS[matchedCommand?.toUpperCase()]?.provider, + args, + true, + ) expect(generatedArgNames).toEqual(argsNamesMock) }) }) From 13b05c99063ac5def8c824d335282c7cbb7c895a Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 17 Apr 2023 10:00:36 +0300 Subject: [PATCH 043/106] fix tests --- redisinsight/api/src/__mocks__/commands.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/redisinsight/api/src/__mocks__/commands.ts b/redisinsight/api/src/__mocks__/commands.ts index 237afec8a0..21a17779af 100644 --- a/redisinsight/api/src/__mocks__/commands.ts +++ b/redisinsight/api/src/__mocks__/commands.ts @@ -4,6 +4,7 @@ export const mockMainCommands = { complexity: 'O(N). Where N is the number of configured users.', since: '6.0.0', group: 'server', + provider: 'main', }, }; @@ -19,6 +20,7 @@ export const mockRedisearchCommands = { ], since: '1.0.0', group: 'search', + provider: 'search', }, }; @@ -39,6 +41,7 @@ export const mockRedijsonCommands = { ], since: '1.0.0', group: 'json', + provider: 'json', }, }; @@ -102,6 +105,7 @@ export const mockRedistimeseriesCommands = { ], since: '1.0.0', group: 'timeseries', + provider: 'timeseries', }, }; @@ -143,6 +147,7 @@ export const mockRedisaiCommands = { ], since: '1.2.5', group: 'tensor', + provider: 'sai', }, }; @@ -161,6 +166,7 @@ export const mockRedisgraphCommands = { ], since: '1.0.0', group: 'graph', + provider: 'graph', }, }; From a5cac30ae4ddd6b262f98e378a2dbdc20a313155 Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 17 Apr 2023 10:11:23 +0300 Subject: [PATCH 044/106] BE add analytics events --- .../bulk-actions-analytics.service.ts | 20 +++++++++---------- .../bulk-actions/bulk-import.service.spec.ts | 14 +++++++++++++ .../bulk-actions/bulk-import.service.ts | 6 ++++++ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-actions-analytics.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-actions-analytics.service.ts index d66dcbb8a4..a2b88fc890 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-actions-analytics.service.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-actions-analytics.service.ts @@ -31,12 +31,12 @@ export class BulkActionsAnalyticsService extends TelemetryBaseService { type: overview.type, duration: overview.duration, filter: { - match: overview.filter.match === '*' ? '*' : 'PATTERN', - type: overview.filter.type, + match: overview.filter?.match === '*' ? '*' : 'PATTERN', + type: overview.filter?.type, }, progress: { - scanned: overview.progress.scanned, - total: overview.progress.total, + scanned: overview.progress?.scanned, + total: overview.progress?.total, }, }, ); @@ -54,16 +54,16 @@ export class BulkActionsAnalyticsService extends TelemetryBaseService { type: overview.type, duration: overview.duration, filter: { - match: overview.filter.match === '*' ? '*' : 'PATTERN', - type: overview.filter.type, + match: overview.filter?.match === '*' ? '*' : 'PATTERN', + type: overview.filter?.type, }, progress: { - scanned: overview.progress.scanned, - total: overview.progress.total, + scanned: overview.progress?.scanned, + total: overview.progress?.total, }, summary: { - processed: overview.summary.processed, - succeed: overview.summary.succeed, + processed: overview.summary?.processed, + succeed: overview.summary?.succeed, failed: overview.summary.failed, }, }, diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts index 9820c96b60..4fb410217c 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts @@ -12,6 +12,7 @@ import { BulkActionSummary } from 'src/modules/bulk-actions/models/bulk-action-s import { IBulkActionOverview } from 'src/modules/bulk-actions/interfaces/bulk-action-overview.interface'; import { BulkActionStatus, BulkActionType } from 'src/modules/bulk-actions/constants'; import { NotFoundException } from '@nestjs/common'; +import { BulkActionsAnalyticsService } from 'src/modules/bulk-actions/bulk-actions-analytics.service'; const generateNCommandsBuffer = (n: number) => Buffer.from( (new Array(n)).fill(1).map(() => ['set', ['foo', 'bar']]).join('\n'), @@ -57,6 +58,7 @@ const mockUploadImportFileDto = { describe('BulkImportService', () => { let service: BulkImportService; let databaseConnectionService: MockType; + let analytics: MockType; beforeEach(async () => { jest.clearAllMocks(); @@ -68,11 +70,19 @@ describe('BulkImportService', () => { provide: DatabaseConnectionService, useFactory: mockDatabaseConnectionService, }, + { + provide: BulkActionsAnalyticsService, + useFactory: () => ({ + sendActionStarted: jest.fn(), + sendActionStopped: jest.fn(), + }), + }, ], }).compile(); service = module.get(BulkImportService); databaseConnectionService = module.get(DatabaseConnectionService); + analytics = module.get(BulkActionsAnalyticsService); }); describe('executeBatch', () => { @@ -112,6 +122,10 @@ describe('BulkImportService', () => { ...mockImportResult, duration: jasmine.anything(), }); + expect(analytics.sendActionStopped).toHaveBeenCalledWith({ + ...mockImportResult, + duration: jasmine.anything(), + }); }); it('should import data (100K) from file in batches 10K each', async () => { diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts index 491634ce39..13919df4ec 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts @@ -9,6 +9,7 @@ import { splitCliCommandLine } from 'src/utils/cli-helper'; import { BulkActionSummary } from 'src/modules/bulk-actions/models/bulk-action-summary'; import { IBulkActionOverview } from 'src/modules/bulk-actions/interfaces/bulk-action-overview.interface'; import { BulkActionStatus, BulkActionType } from 'src/modules/bulk-actions/constants'; +import { BulkActionsAnalyticsService } from 'src/modules/bulk-actions/bulk-actions-analytics.service'; const BATCH_LIMIT = 10_000; @@ -18,6 +19,7 @@ export class BulkImportService { constructor( private readonly databaseConnectionService: DatabaseConnectionService, + private readonly analyticsService: BulkActionsAnalyticsService, ) {} private async executeBatch(client, batch: any[]): Promise { @@ -73,6 +75,8 @@ export class BulkImportService { duration: 0, }; + this.analyticsService.sendActionStarted(result); + let parseErrors = 0; try { @@ -119,6 +123,8 @@ export class BulkImportService { result.summary.processed += parseErrors; result.summary.failed += parseErrors; + this.analyticsService.sendActionStopped(result); + return result; } catch (e) { this.logger.error('Unable to process an import file', e); From 10b602f58a8946c8a29c32351582feaf954e015f Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Mon, 17 Apr 2023 09:22:01 +0200 Subject: [PATCH 045/106] #RI-4381 - update styles --- .../components/bulk-actions/BulkUpload/styles.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss index 681a8b372a..ab3e90ac34 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss @@ -8,7 +8,7 @@ flex: 1; :global(.euiFilePicker) { - max-width: 600px; + max-width: 480px; } .content { From 041a725a2d9c40bb7cf396c0c861e39952b2f50f Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Mon, 17 Apr 2023 09:22:45 +0200 Subject: [PATCH 046/106] #RI-4331 - remove only attribute --- tests/e2e/tests/critical-path/workbench/command-results.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts index bc76f197ea..e82cf15f61 100644 --- a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts @@ -101,7 +101,7 @@ test('Verify that user can switches between Table and Text for Client List and s .ok('The result is not displayed in Text view'); }); -test.only +test .after(async() => { // remove all keys workbenchPage.sendCommandInWorkbench('flushdb'); From 3366084a5312daa5b77d5f1ff080c879610c6a71 Mon Sep 17 00:00:00 2001 From: mariasergeenko Date: Mon, 17 Apr 2023 11:30:09 +0200 Subject: [PATCH 047/106] [refactoring] - move overview panel --- tests/e2e/pageObjects/browser-page.ts | 20 +------------- .../overview-panel.ts} | 9 ++----- tests/e2e/pageObjects/index.ts | 8 +++--- tests/e2e/pageObjects/instance-page.ts | 3 ++- tests/e2e/pageObjects/settings-page.ts | 2 +- tests/e2e/pageObjects/workbench-page.ts | 2 -- .../browser/search-capabilities.e2e.ts | 6 ++--- .../database-overview/database-index.e2e.ts | 26 +++++++++---------- .../database-overview.e2e.ts | 22 +++++++--------- .../database/connecting-to-the-db.e2e.ts | 4 +-- .../critical-path/database/modules.e2e.ts | 8 +++--- .../browser/handle-dbsize-permissions.e2e.ts | 5 ++-- .../regression/browser/resize-columns.e2e.ts | 12 ++++----- .../regression/browser/ttl-format.e2e.ts | 2 +- .../regression/cli/cli-re-cluster.e2e.ts | 11 ++++---- .../database-overview/database-info.e2e.ts | 4 +-- .../database-overview-keys.e2e.ts | 8 +++--- .../database-overview.e2e.ts | 4 +-- .../database-overview/overview.e2e.ts | 9 +++---- .../regression/database/redisstack.e2e.ts | 12 ++++----- .../regression/tree-view/tree-view.e2e.ts | 2 +- .../smoke/database/add-standalone-db.e2e.ts | 2 +- 22 files changed, 73 insertions(+), 108 deletions(-) rename tests/e2e/pageObjects/{database-overview-page.ts => components/overview-panel.ts} (75%) diff --git a/tests/e2e/pageObjects/browser-page.ts b/tests/e2e/pageObjects/browser-page.ts index 22a11c77f2..12348d8429 100644 --- a/tests/e2e/pageObjects/browser-page.ts +++ b/tests/e2e/pageObjects/browser-page.ts @@ -27,7 +27,7 @@ export class BrowserPage extends InstancePage { hashDeleteButton = Selector('[data-testid=hash-delete-btn]'); setDeleteButton = Selector('[data-testid=set-delete-btn]'); streamDeleteButton = Selector('[data-testid=stream-delete-btn]'); - myRedisDbIcon = Selector('[data-testid=my-redis-db-icon]'); + applyButton = Selector('[data-testid=apply-btn]'); deleteKeyButton = Selector('[data-testid=delete-key-btn]'); submitDeleteKeyButton = Selector('[data-testid=submit-delete-key]'); confirmDeleteKeyButton = Selector('[data-testid=delete-key-confirm-btn]'); @@ -36,7 +36,6 @@ export class BrowserPage extends InstancePage { saveTTLValue = Selector('[data-testid=apply-btn]'); refreshKeysButton = Selector('[data-testid=refresh-keys-btn]'); refreshKeyButton = Selector('[data-testid=refresh-key-btn]'); - applyButton = Selector('[data-testid=apply-btn]'); editKeyNameButton = Selector('[data-testid=edit-key-btn]'); editKeyValueButton = Selector('[data-testid=edit-key-value-btn]'); closeKeyButton = Selector('[data-testid=close-key-btn]'); @@ -217,8 +216,6 @@ export class BrowserPage extends InstancePage { searchAdvices = Selector('[data-test-subj=search-advices]'); keysNumberOfResults = Selector('[data-testid=keys-number-of-results]'); keysTotalNumber = Selector('[data-testid=keys-total]'); - overviewTotalKeys = Selector('[data-test-subj=overview-total-keys]'); - overviewTotalMemory = Selector('[data-test-subj=overview-total-memory]'); overviewConnectedClients = Selector('[data-test-subj=overview-connected-clients]'); overviewCommandsSec = Selector('[data-test-subj=overview-commands-sec]'); overviewCpu = Selector('[data-test-subj=overview-cpu]'); @@ -878,21 +875,6 @@ export class BrowserPage extends InstancePage { await t.typeText(this.jsonValueInput, jsonStructure, { replace: true, paste: true }); await t.click(this.applyEditButton); } - - /** - * Get Values list of the key - * @param element Selector of the element with list - */ - async getValuesListByElement(element: any): Promise { - const keyValues: string[] = []; - const count = await element.count; - for (let i = 0; i < count; i++) { - keyValues[i] = await element.nth(i).textContent; - i++; - } - return keyValues; - } - /** * Check tree view structure * @folders name of folders for tree view build diff --git a/tests/e2e/pageObjects/database-overview-page.ts b/tests/e2e/pageObjects/components/overview-panel.ts similarity index 75% rename from tests/e2e/pageObjects/database-overview-page.ts rename to tests/e2e/pageObjects/components/overview-panel.ts index ff3058e981..816b758750 100644 --- a/tests/e2e/pageObjects/database-overview-page.ts +++ b/tests/e2e/pageObjects/components/overview-panel.ts @@ -1,18 +1,13 @@ import { Selector, t } from 'testcafe'; -export class DatabaseOverviewPage { - //------------------------------------------------------------------------------------------- - //DECLARATION OF SELECTORS - //*Declare all elements/components of the relevant page. - //*Target any element/component via data-id, if possible! - //*The following categories are ordered alphabetically (Alerts, Buttons, Checkboxes, etc.). - //------------------------------------------------------------------------------------------- +export class OverviewPanel { // TEXT ELEMENTS overviewTotalKeys = Selector('[data-test-subj=overview-total-keys]'); overviewTotalMemory = Selector('[data-test-subj=overview-total-memory]'); databaseModules = Selector('[data-testid$=module]'); overviewTooltipStatTitle = Selector('[data-testid=overview-db-stat-title]'); // BUTTONS + myRedisDbIcon = Selector('[data-testid=my-redis-db-icon]'); overviewRedisStackLogo = Selector('[data-testid=redis-stack-logo]'); overviewMoreInfo = Selector('[data-testid=overview-more-info-button]'); changeIndexBtn = Selector('[data-testid=change-index-btn]'); diff --git a/tests/e2e/pageObjects/index.ts b/tests/e2e/pageObjects/index.ts index 4d9c1a8e73..0a13cc70b6 100644 --- a/tests/e2e/pageObjects/index.ts +++ b/tests/e2e/pageObjects/index.ts @@ -6,7 +6,6 @@ import { MyRedisDatabasePage } from './my-redis-databases-page'; import { SettingsPage } from './settings-page'; import { UserAgreementPage } from './user-agreement-page'; import { WorkbenchPage } from './workbench-page'; -import { DatabaseOverviewPage } from './database-overview-page'; import { HelpCenterPage } from './help-center-page'; import { ShortcutsPage } from './shortcuts-page'; import { MemoryEfficiencyPage } from './memory-efficiency-page'; @@ -14,9 +13,9 @@ import { OverviewPage } from './overview-page'; import { PubSubPage } from './pub-sub-page'; import { SlowLogPage } from './slow-log-page'; import { NotificationPage } from './notification-page'; -import { OnboardingPage} from './onboarding-page'; -import { BasePage} from './base-page'; -import { InstancePage} from './instance-page'; +import { OnboardingPage } from './onboarding-page'; +import { BasePage } from './base-page'; +import { InstancePage } from './instance-page'; export { AddRedisDatabasePage, @@ -27,7 +26,6 @@ export { SettingsPage, UserAgreementPage, WorkbenchPage, - DatabaseOverviewPage, HelpCenterPage, ShortcutsPage, MemoryEfficiencyPage, diff --git a/tests/e2e/pageObjects/instance-page.ts b/tests/e2e/pageObjects/instance-page.ts index 618fa2ac04..1942e79ef2 100644 --- a/tests/e2e/pageObjects/instance-page.ts +++ b/tests/e2e/pageObjects/instance-page.ts @@ -1,8 +1,9 @@ import { BasePage } from './base-page'; import { Profiler, Cli, CommandHelper } from './components/instance'; - +import { OverviewPanel } from './components/overview-panel'; export class InstancePage extends BasePage { Profiler = new Profiler(); Cli = new Cli(); CommandHelper = new CommandHelper(); + OverviewPanel = new OverviewPanel(); } diff --git a/tests/e2e/pageObjects/settings-page.ts b/tests/e2e/pageObjects/settings-page.ts index 65c33c03c2..3049496dfb 100644 --- a/tests/e2e/pageObjects/settings-page.ts +++ b/tests/e2e/pageObjects/settings-page.ts @@ -8,7 +8,6 @@ export class SettingsPage { //*The following categories are ordered alphabetically (Alerts, Buttons, Checkboxes, etc.). //------------------------------------------------------------------------------------------- //BUTTONS - applyButton = Selector('[data-testid=apply-btn]'); accordionAppearance = Selector('[data-test-subj=accordion-appearance]'); accordionPrivacySettings = Selector('[data-test-subj=accordion-privacy-settings]'); accordionAdvancedSettings = Selector('[data-test-subj=accordion-advanced-settings]'); @@ -18,6 +17,7 @@ export class SettingsPage { submitConsentsPopupButton = Selector('[data-testid=consents-settings-popup] [data-testid=btn-submit]'); switchNotificationsOption = Selector('[data-testid=switch-option-notifications]'); switchEditorCleanupOption = Selector('[data-testid=switch-workbench-cleanup]'); + applyButton = Selector('[data-testid=apply-btn]'); //TEXT INPUTS (also referred to as 'Text fields') keysToScanValue = Selector('[data-testid=keys-to-scan-value]'); keysToScanInput = Selector('[data-testid=keys-to-scan-input]'); diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index 4777719cf7..454392bb9b 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -107,8 +107,6 @@ export class WorkbenchPage extends InstancePage { queryTextResult = Selector(this.cssQueryTextResult); queryColumns = Selector('[data-testid*=query-column-]'); queryInputScriptArea = Selector('[data-testid=query-input-container] .view-line'); - overviewTotalKeys = Selector('[data-test-subj=overview-total-keys]'); - overviewTotalMemory = Selector('[data-test-subj=overview-total-memory]'); queryCardNoModuleOutput = Selector('[data-testid=query-card-no-module-output]'); noCommandHistorySection = Selector('[data-testid=wb_no-results]'); preselectArea = Selector('[data-testid=enablementArea]'); diff --git a/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts b/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts index e98a5692b0..c4d5034372 100644 --- a/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/search-capabilities.e2e.ts @@ -256,7 +256,7 @@ test .after(async() => { //clear database await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexNameBigDb}`); - await t.click(browserPage.myRedisDbIcon); // go back to database selection page + await t.click(browserPage.OverviewPanel.myRedisDbIcon); // go back to database selection page await myRedisDatabasePage.clickOnDBByName(simpleDbName); // click standalone database await browserPage.Cli.sendCommandInCli(`FT.DROPINDEX ${indexNameSimpleDb}`); await t.click(browserPage.patternModeBtn); @@ -285,7 +285,7 @@ test await browserPage.Cli.sendCommandsInCli(commandsForBigStandalone); - await t.click(browserPage.myRedisDbIcon); // go back to database selection page + await t.click(browserPage.OverviewPanel.myRedisDbIcon); // go back to database selection page await myRedisDatabasePage.clickOnDBByName(simpleDbName); // click standalone database const commandsForStandalone = [ @@ -306,7 +306,7 @@ test await verifyKeysDisplayedInTheList(keyNames); // verify created keys are visible - await t.click(browserPage.myRedisDbIcon); // go back to database selection page + await t.click(browserPage.OverviewPanel.myRedisDbIcon); // go back to database selection page await myRedisDatabasePage.clickOnDBByName(bigDbName); // click database name from ossStandaloneBigConfig.databaseName await verifyKeysNotDisplayedInTheList(keyNames); // Verify that standandalone database keys are NOT visible diff --git a/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts b/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts index fc693c94ce..dc5a1f8f84 100644 --- a/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts +++ b/tests/e2e/tests/critical-path/database-overview/database-index.e2e.ts @@ -4,7 +4,6 @@ import { Common } from '../../../helpers/common'; import { MyRedisDatabasePage, BrowserPage, - DatabaseOverviewPage, WorkbenchPage, MemoryEfficiencyPage } from '../../../pageObjects'; @@ -17,7 +16,6 @@ import { verifyKeysDisplayedInTheList, verifyKeysNotDisplayedInTheList, verifySe const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const databaseOverviewPage = new DatabaseOverviewPage(); const common = new Common(); const workbenchPage = new WorkbenchPage(); const memoryEfficiencyPage = new MemoryEfficiencyPage(); @@ -43,10 +41,10 @@ fixture `Allow to change database index` }) .afterEach(async() => { // Delete keys in logical database - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); await browserPage.Cli.sendCommandsInCli([`DEL ${keyNameForSearchInLogicalDb}`, `DEL ${logicalDbKey}`]); // Delete and clear database - await databaseOverviewPage.changeDbIndex(0); + await browserPage.OverviewPanel.changeDbIndex(0); await browserPage.Cli.sendCommandsInCli([`DEL ${keyNames.join(' ')}`, `DEL ${keyName}`, `FT.DROPINDEX ${indexName}`]); await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); @@ -56,7 +54,7 @@ test('Switching between indexed databases', async t => { // Change index to logical db // Verify that database index switcher displayed for Standalone db - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); // Verify that the same client connections are used after changing index const logicalDbConnectedClients = await browserPage.overviewConnectedClients.textContent; await t.expect(rememberedConnectedClients).eql(logicalDbConnectedClients); @@ -66,7 +64,7 @@ test('Switching between indexed databases', async t => { // Verify that logical db not changed after reloading page await common.reloadPage(); - await databaseOverviewPage.verifyDbIndexSelected(1); + await browserPage.OverviewPanel.verifyDbIndexSelected(1); await browserPage.verifyNoKeysInDatabase(); // Add key to logical (index=1) database @@ -80,31 +78,31 @@ test('Switching between indexed databases', async t => { await browserPage.selectFilterGroupType(KeyTypesTexts.Hash); await browserPage.searchByKeyName(keyNameForSearchInLogicalDb); // Return to default database - await databaseOverviewPage.changeDbIndex(0); + await browserPage.OverviewPanel.changeDbIndex(0); // Verify that search/filter saved after switching index in Browser await verifySearchFilterValue(keyNameForSearchInLogicalDb); await verifyKeysNotDisplayedInTheList([keyNameForSearchInLogicalDb]); await t.click(browserPage.browserViewButton); // Change index to logical db - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); await verifySearchFilterValue(keyNameForSearchInLogicalDb); await verifyKeysDisplayedInTheList([keyNameForSearchInLogicalDb]); // Return to default database and open search capability - await databaseOverviewPage.changeDbIndex(0); + await browserPage.OverviewPanel.changeDbIndex(0); await t.click(browserPage.redisearchModeBtn); await browserPage.selectIndexByName(indexName); await verifyKeysDisplayedInTheList(keyNames); // Change index to logical db - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); // Search by value and return to default database await browserPage.searchByKeyName('Hall School'); - await databaseOverviewPage.changeDbIndex(0); + await browserPage.OverviewPanel.changeDbIndex(0); // Verify that data changed for indexed db on Search capability page await verifyKeysDisplayedInTheList([keyNames[0]]); // Change index to logical db - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); // Verify that search/filter saved after switching index in Search capability await verifySearchFilterValue('Hall School'); @@ -125,7 +123,7 @@ test('Switching between indexed databases', async t => { await t.click(browserPage.clearFilterButton); // Verify that data changed for indexed db on Workbench page await verifyKeysDisplayedInTheList([keyNameForSearchInLogicalDb, logicalDbKey]); - await databaseOverviewPage.changeDbIndex(0); + await browserPage.OverviewPanel.changeDbIndex(0); await verifyKeysNotDisplayedInTheList([logicalDbKey]); // Go to Analysis Tools page and create new report @@ -137,7 +135,7 @@ test('Switching between indexed databases', async t => { await t.expect(memoryEfficiencyPage.topKeysKeyName.withExactText(logicalDbKey).exists).notOk('Keys from other db index displayed in report'); await t.expect(memoryEfficiencyPage.selectedReport.textContent).notContains('[db', 'Index displayed for 0 index in report name'); // Change index to logical db - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); await t.click(memoryEfficiencyPage.newReportBtn); await t.expect(memoryEfficiencyPage.selectedReport.textContent).contains('[db1]', 'Index not displayed in report name'); await t.expect(memoryEfficiencyPage.topKeysKeyName.withExactText(logicalDbKey).exists).ok('Keys from current db index not displayed in report'); diff --git a/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts b/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts index f018f6b531..f6765ecd57 100644 --- a/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts +++ b/tests/e2e/tests/critical-path/database-overview/database-overview.e2e.ts @@ -5,7 +5,6 @@ import { Common } from '../../../helpers/common'; import { MyRedisDatabasePage, BrowserPage, - DatabaseOverviewPage, WorkbenchPage } from '../../../pageObjects'; import { @@ -18,7 +17,6 @@ import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi } from '../../ const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); -const databaseOverviewPage = new DatabaseOverviewPage(); const chance = new Chance(); const common = new Common(); const workbenchPage = new WorkbenchPage(); @@ -55,12 +53,12 @@ test } //Verify the list of modules in Browser page for (const module of firstDatabaseModules) { - await t.expect(databaseOverviewPage.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); + await t.expect(browserPage.OverviewPanel.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); } //Open the Workbench page and verify modules await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); for (const module of firstDatabaseModules) { - await t.expect(databaseOverviewPage.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); + await t.expect(browserPage.OverviewPanel.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); } //Add database with different modules await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); @@ -73,7 +71,7 @@ test } //Verify the list of modules for (const module of secondDatabaseModules) { - await t.expect(databaseOverviewPage.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); + await t.expect(browserPage.OverviewPanel.databaseModules.withAttribute('aria-labelledby', module).exists).ok(`${module} is displayed in the list`); } await t.expect(firstDatabaseModules).notEql(secondDatabaseModules, 'The list of Modules updated'); }); @@ -81,20 +79,20 @@ test .meta({ rte: rte.standalone })('Verify that when user adds or deletes a new key, info in DB header is updated in 5 seconds', async t => { keyName = chance.string({ length: 10 }); //Remember the total keys number - const totalKeysBeforeAdd = await browserPage.overviewTotalKeys.innerText; + const totalKeysBeforeAdd = await browserPage.OverviewPanel.overviewTotalKeys.innerText; //Add new key await browserPage.addHashKey(keyName); //Wait 5 seconds await t.wait(fiveSecondsTimeout); //Verify that the info on DB header is updated after adds - const totalKeysAftreAdd = await browserPage.overviewTotalKeys.innerText; + const totalKeysAftreAdd = await browserPage.OverviewPanel.overviewTotalKeys.innerText; await t.expect(totalKeysAftreAdd).eql((Number(totalKeysBeforeAdd) + 1).toString(), 'Info in DB header after ADD'); //Delete key await browserPage.deleteKeyByName(keyName); //Wait 5 seconds await t.wait(fiveSecondsTimeout); //Verify that the info on DB header is updated after deletion - const totalKeysAftreDelete = await browserPage.overviewTotalKeys.innerText; + const totalKeysAftreDelete = await browserPage.OverviewPanel.overviewTotalKeys.innerText; await t.expect(totalKeysAftreDelete).eql((Number(totalKeysAftreAdd) - 1).toString(), 'Info in DB header after DELETE'); }); test @@ -111,13 +109,13 @@ test //Add 100 keys keys1 = await common.createArrayWithKeyValue(100); await browserPage.Cli.sendCliCommandAndWaitForTotalKeys(`MSET ${keys1.join(' ')}`); - let totalKeys = await browserPage.overviewTotalKeys.innerText; + let totalKeys = await browserPage.OverviewPanel.overviewTotalKeys.innerText; //Verify that the info on DB header is updated after adds await t.expect(totalKeys).eql('100', 'Info in DB header after ADD 100 keys'); //Add 1000 keys keys2 = await common.createArrayWithKeyValue(1000); await browserPage.Cli.sendCliCommandAndWaitForTotalKeys(`MSET ${keys2.join(' ')}`); - totalKeys = await browserPage.overviewTotalKeys.innerText; + totalKeys = await browserPage.OverviewPanel.overviewTotalKeys.innerText; //Verify that the info on DB header is updated after adds await t.expect(totalKeys).eql('1 K', 'Info in DB header after ADD 1000 keys'); //Add database with more than 1M keys @@ -128,7 +126,7 @@ test //Wait 5 seconds await t.wait(fiveSecondsTimeout); //Verify that the info on DB header is rounded - totalKeys = await browserPage.overviewTotalKeys.innerText; + totalKeys = await browserPage.OverviewPanel.overviewTotalKeys.innerText; await t.expect(totalKeys).eql('18 M', 'Info in DB header is 18 M keys'); }); test @@ -143,7 +141,7 @@ test await browserPage.Cli.sendCommandInCli(`MSET ${keys.join(' ')}`); //Verify total memory await t.wait(fiveSecondsTimeout); - await t.expect(browserPage.overviewTotalMemory.textContent).contains('MB', 'Total memory value is MB'); + await t.expect(browserPage.OverviewPanel.overviewTotalMemory.textContent).contains('MB', 'Total memory value is MB'); }); test .meta({ rte: rte.standalone }) diff --git a/tests/e2e/tests/critical-path/database/connecting-to-the-db.e2e.ts b/tests/e2e/tests/critical-path/database/connecting-to-the-db.e2e.ts index fee2577bab..4c60827ff5 100644 --- a/tests/e2e/tests/critical-path/database/connecting-to-the-db.e2e.ts +++ b/tests/e2e/tests/critical-path/database/connecting-to-the-db.e2e.ts @@ -126,13 +126,13 @@ test await common.checkURLContainsText('browser'); // Verify that user can add SSH tunnel with Private Key - await t.click(browserPage.myRedisDbIcon); + await t.click(browserPage.OverviewPanel.myRedisDbIcon); await addRedisDatabasePage.addStandaloneSSHDatabase(sshDbPrivateKey, sshWithPrivateKey); await myRedisDatabasePage.clickOnDBByName(sshDbPrivateKey.databaseName); await common.checkURLContainsText('browser'); // Verify that user can edit SSH parameters for existing database connections - await t.click(browserPage.myRedisDbIcon); + await t.click(browserPage.OverviewPanel.myRedisDbIcon); await myRedisDatabasePage.clickOnEditDBByName(sshDbPrivateKey.databaseName); await t .typeText(addRedisDatabasePage.sshPrivateKeyInput, sshWithPassphrase.sshPrivateKey, { replace: true, paste: true }) diff --git a/tests/e2e/tests/critical-path/database/modules.e2e.ts b/tests/e2e/tests/critical-path/database/modules.e2e.ts index 8311d689bb..f1e2b6608f 100644 --- a/tests/e2e/tests/critical-path/database/modules.e2e.ts +++ b/tests/e2e/tests/critical-path/database/modules.e2e.ts @@ -1,13 +1,13 @@ import { Selector } from 'testcafe'; import { rte, env } from '../../../helpers/constants'; import { acceptLicenseTerms } from '../../../helpers/database'; -import { MyRedisDatabasePage, DatabaseOverviewPage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage } from '../../../pageObjects'; import { commonUrl, ossStandaloneRedisearch } from '../../../helpers/conf'; import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); -const databaseOverviewPage = new DatabaseOverviewPage(); +const browserPage = new BrowserPage(); const common = new Common(); const moduleNameList = ['RediSearch', 'RedisJSON', 'RedisGraph', 'RedisTimeSeries', 'RedisBloom', 'RedisGears', 'RedisAI']; @@ -72,8 +72,8 @@ test await t.expect(moduleName).eql(await moduleList[i].getAttribute('data-testid'), 'Correct icon not found'); } // Verify that if DB has more than 6 modules loaded, user can click on three dots and see other modules in the tooltip - await t.click(databaseOverviewPage.overviewMoreInfo); + await t.click(browserPage.OverviewPanel.overviewMoreInfo); for (let j = numberOfIcons; j < moduleNameList.length; j++) { - await t.expect(databaseOverviewPage.overviewTooltip.withText(moduleNameList[j]).visible).ok('Tooltip module not found'); + await t.expect(browserPage.OverviewPanel.overviewTooltip.withText(moduleNameList[j]).visible).ok('Tooltip module not found'); } }); diff --git a/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts b/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts index faf37d1fc9..4b18b0ecec 100644 --- a/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts +++ b/tests/e2e/tests/regression/browser/handle-dbsize-permissions.e2e.ts @@ -1,7 +1,7 @@ import { t } from 'testcafe'; import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; -import { BrowserPage, MyRedisDatabasePage, DatabaseOverviewPage, BulkActionsPage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage, BulkActionsPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneBigConfig, @@ -12,7 +12,6 @@ import { Common } from '../../../helpers/common'; const browserPage = new BrowserPage(); const myRedisDatabasePage = new MyRedisDatabasePage(); -const databaseOverviewPage = new DatabaseOverviewPage(); const bulkActionsPage = new BulkActionsPage(); const common = new Common(); const createUserCommand = 'acl setuser noperm nopass on +@all ~* -dbsize'; @@ -42,7 +41,7 @@ test('Verify that user without dbsize permissions can connect to DB', async t => // Connect to DB await myRedisDatabasePage.clickOnDBByName(ossStandaloneNoPermissionsConfig.databaseName); // Check that user can see total number of key is overview - await t.expect(databaseOverviewPage.overviewTotalKeys.find('div').withExactText('18 M').exists).ok('Total keys are not displayed'); + await t.expect(browserPage.OverviewPanel.overviewTotalKeys.find('div').withExactText('18 M').exists).ok('Total keys are not displayed'); // Check that user can see total number of keys in browser await t.expect(browserPage.keysSummary.find('b').withText('18 00').exists).ok('Total number is not displayed'); // Check that user can search per key diff --git a/tests/e2e/tests/regression/browser/resize-columns.e2e.ts b/tests/e2e/tests/regression/browser/resize-columns.e2e.ts index d8ac79e215..ff2321a180 100644 --- a/tests/e2e/tests/regression/browser/resize-columns.e2e.ts +++ b/tests/e2e/tests/regression/browser/resize-columns.e2e.ts @@ -1,8 +1,7 @@ import { acceptLicenseTerms } from '../../../helpers/database'; import { MyRedisDatabasePage, - BrowserPage, - DatabaseOverviewPage + BrowserPage } from '../../../pageObjects'; import { rte } from '../../../helpers/constants'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; @@ -12,7 +11,6 @@ import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); const browserPage = new BrowserPage(); const common = new Common(); -const databaseOverviewPage = new DatabaseOverviewPage(); const keyName = common.generateWord(10); const longFieldName = common.generateSentence(20); @@ -47,7 +45,7 @@ const databasesForAdding = [ ]; fixture `Resize columns in Key details` - .meta({type: 'regression', rte: rte.standalone}) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { // Add new databases using API @@ -62,7 +60,7 @@ fixture `Resize columns in Key details` }) .afterEach(async() => { // Clear and delete database - await databaseOverviewPage.changeDbIndex(0); + await browserPage.OverviewPanel.changeDbIndex(0); await browserPage.deleteKeysByNames(keyNames); await deleteStandaloneDatabasesApi(databasesForAdding); }); @@ -102,7 +100,7 @@ test('Resize of columns in Hash, List, Zset Key details', async t => { } // Change db index for 2nd database - await databaseOverviewPage.changeDbIndex(1); + await browserPage.OverviewPanel.changeDbIndex(1); await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); // Go back to 1st database await myRedisDatabasePage.clickOnDBByName(databasesForAdding[0].databaseName); @@ -113,5 +111,5 @@ test('Resize of columns in Hash, List, Zset Key details', async t => { // Verify that logical db not changed after switching between databases await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(databasesForAdding[1].databaseName); - await databaseOverviewPage.verifyDbIndexSelected(1); + await browserPage.OverviewPanel.verifyDbIndexSelected(1); }); diff --git a/tests/e2e/tests/regression/browser/ttl-format.e2e.ts b/tests/e2e/tests/regression/browser/ttl-format.e2e.ts index 3802565e56..1b8ce25af0 100644 --- a/tests/e2e/tests/regression/browser/ttl-format.e2e.ts +++ b/tests/e2e/tests/regression/browser/ttl-format.e2e.ts @@ -31,7 +31,7 @@ fixture `TTL values in Keys Table` .afterEach(async() => { // Clear and delete database for (let i = 0; i < keysData.length; i++) { - await browserPage.deleteSelectedKey(); + await browserPage.deleteKey(); } await deleteStandaloneDatabaseApi(ossStandaloneConfig); }); diff --git a/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts b/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts index 51bce8f76f..81be29924a 100644 --- a/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-re-cluster.e2e.ts @@ -7,7 +7,7 @@ import { acceptLicenseTermsAndAddSentinelDatabaseApi, deleteDatabase } from '../../../helpers/database'; -import { BrowserPage, DatabaseOverviewPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { cloudDatabaseConfig, commonUrl, ossClusterConfig, @@ -19,7 +19,6 @@ import { deleteOSSClusterDatabaseApi, deleteAllDatabasesByConnectionTypeApi } fr const browserPage = new BrowserPage(); const common = new Common(); -const databaseOverviewPage = new DatabaseOverviewPage(); let keyName = common.generateWord(10); const verifyCommandsInCli = async(): Promise => { @@ -50,7 +49,7 @@ test await deleteDatabase(redisEnterpriseClusterConfig.databaseName); })('Verify that user can add data via CLI in RE Cluster DB', async() => { // Verify that database index switcher not displayed for RE Cluster - await t.expect(databaseOverviewPage.changeIndexBtn.exists).notOk('Change Db index control displayed for RE Cluster DB'); + await t.expect(browserPage.OverviewPanel.changeIndexBtn.exists).notOk('Change Db index control displayed for RE Cluster DB'); await verifyCommandsInCli(); }); @@ -65,7 +64,7 @@ test await deleteDatabase(cloudDatabaseConfig.databaseName); })('Verify that user can add data via CLI in RE Cloud DB', async() => { // Verify that database index switcher not displayed for RE Cloud - await t.expect(databaseOverviewPage.changeIndexBtn.exists).notOk('Change Db index control displayed for RE Cloud DB'); + await t.expect(browserPage.OverviewPanel.changeIndexBtn.exists).notOk('Change Db index control displayed for RE Cloud DB'); await verifyCommandsInCli(); }); @@ -80,7 +79,7 @@ test await deleteOSSClusterDatabaseApi(ossClusterConfig); })('Verify that user can add data via CLI in OSS Cluster DB', async() => { // Verify that database index switcher not displayed for RE Cloud - await t.expect(databaseOverviewPage.changeIndexBtn.exists).notOk('Change Db index control displayed for OSS Cluster DB'); + await t.expect(browserPage.OverviewPanel.changeIndexBtn.exists).notOk('Change Db index control displayed for OSS Cluster DB'); await verifyCommandsInCli(); }); @@ -95,7 +94,7 @@ test await deleteAllDatabasesByConnectionTypeApi('SENTINEL'); })('Verify that user can add data via CLI in Sentinel Primary Group', async() => { // Verify that database index switcher displayed for Sentinel - await t.expect(databaseOverviewPage.changeIndexBtn.exists).ok('Change Db index control not displayed for Sentinel DB'); + await t.expect(browserPage.OverviewPanel.changeIndexBtn.exists).ok('Change Db index control not displayed for Sentinel DB'); await verifyCommandsInCli(); }); diff --git a/tests/e2e/tests/regression/database-overview/database-info.e2e.ts b/tests/e2e/tests/regression/database-overview/database-info.e2e.ts index 1919535d2b..7fdecf24f2 100644 --- a/tests/e2e/tests/regression/database-overview/database-info.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-info.e2e.ts @@ -13,7 +13,7 @@ const workbenchPage = new WorkbenchPage(); const browserPage = new BrowserPage(); fixture `Database info tooltips` - .meta({type: 'regression', rte: rte.standalone}) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneConfig, ossStandaloneConfig.databaseName); @@ -40,5 +40,5 @@ test('Verify that user can see DB name, endpoint, connection type, Redis version await t.expect(browserPage.databaseInfoIcon.visible).ok('User can not see (i) icon on Browser page', { timeout: 10000 }); // Move to the Workbench page and check icon await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); - await t.expect(workbenchPage.overviewTotalMemory.visible).ok('User can not see (i) icon on Workbench page', { timeout: 10000 }); + await t.expect(workbenchPage.OverviewPanel.overviewTotalMemory.visible).ok('User can not see (i) icon on Workbench page', { timeout: 10000 }); }); diff --git a/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts b/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts index ffd99561ce..80adee9b48 100644 --- a/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-overview-keys.e2e.ts @@ -49,8 +49,8 @@ fixture `Database overview` test .meta({ rte: rte.standalone })('Verify that user can see total and current logical database number of keys (if there are any keys in other logical DBs)', async t => { // Wait for Total Keys number refreshed - await t.expect(browserPage.overviewTotalKeys.withText(`${keysAmount + 1}`).exists).ok('Total keys are not changed', { timeout: 10000 }); - await t.hover(workbenchPage.overviewTotalKeys); + await t.expect(browserPage.OverviewPanel.overviewTotalKeys.withText(`${keysAmount + 1}`).exists).ok('Total keys are not changed', { timeout: 10000 }); + await t.hover(workbenchPage.OverviewPanel.overviewTotalKeys); // Verify that user can see total number of keys and number of keys in current logical database await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed'); await browserActions.verifyTooltipContainsText(`${keysAmount + 1}Total Keys`, true); @@ -59,7 +59,7 @@ test // Open Database await t.click(myRedisDatabasePage.NavigationPanel.myRedisDBButton); await myRedisDatabasePage.clickOnDBByName(ossStandaloneRedisearch.databaseName); - await t.hover(workbenchPage.overviewTotalKeys); + await t.hover(workbenchPage.OverviewPanel.overviewTotalKeys); // Verify that user can see total number of keys and not it current logical database (if there are no any keys in other logical DBs) await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed'); await browserActions.verifyTooltipContainsText(`${keysAmount + 1}Total Keys`, true); @@ -74,7 +74,7 @@ test // Delete database await deleteDatabase(cloudDatabaseConfig.databaseName); })('Verify that when users hover over keys icon in Overview for Cloud DB, they see only total number of keys in tooltip', async t => { - await t.hover(workbenchPage.overviewTotalKeys); + await t.hover(workbenchPage.OverviewPanel.overviewTotalKeys); // Verify that user can see only total number of keys await t.expect(browserPage.tooltip.visible).ok('Total keys tooltip not displayed'); await browserActions.verifyTooltipContainsText('Total Keys', true); diff --git a/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts b/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts index 8923243ac1..63d463fd69 100644 --- a/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/database-overview.e2e.ts @@ -38,6 +38,6 @@ test('Verify that user can connect to DB and see breadcrumbs at the top of the a await t.expect(browserPage.breadcrumbsContainer.visible).ok('User can not see breadcrumbs in Workbench page', { timeout: 10000 }); // Verify that user can see total memory and total number of keys updated in DB header in Workbench page - await t.expect(workbenchPage.overviewTotalKeys.exists).ok('User can not see total keys'); - await t.expect(workbenchPage.overviewTotalMemory.exists).ok('User can not see total memory'); + await t.expect(workbenchPage.OverviewPanel.overviewTotalKeys.exists).ok('User can not see total keys'); + await t.expect(workbenchPage.OverviewPanel.overviewTotalMemory.exists).ok('User can not see total memory'); }); diff --git a/tests/e2e/tests/regression/database-overview/overview.e2e.ts b/tests/e2e/tests/regression/database-overview/overview.e2e.ts index 5a63bca073..20ad1e6c29 100644 --- a/tests/e2e/tests/regression/database-overview/overview.e2e.ts +++ b/tests/e2e/tests/regression/database-overview/overview.e2e.ts @@ -1,10 +1,9 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTermsAndAddRECloudDatabase, deleteDatabase } from '../../../helpers/database'; -import { BrowserPage, DatabaseOverviewPage } from '../../../pageObjects'; +import { BrowserPage } from '../../../pageObjects'; import { commonUrl, cloudDatabaseConfig } from '../../../helpers/conf'; const browserPage = new BrowserPage(); -const databaseOverviewPage = new DatabaseOverviewPage(); fixture `Overview` .meta({ type: 'regression', rte: rte.reCloud }) @@ -20,11 +19,11 @@ test('Verify that user can see not available metrics from Overview in tooltip wi // Verify that CPU parameter is not displayed in Overview await t.expect(browserPage.overviewCpu.exists).notOk('Not available CPU is displayed'); // Click on More Info icon - await t.click(databaseOverviewPage.overviewMoreInfo); + await t.click(browserPage.OverviewPanel.overviewMoreInfo); // Check that tooltip was opened - await t.expect(databaseOverviewPage.overviewTooltip.exists).ok('Overview tooltip not displayed'); + await t.expect(browserPage.OverviewPanel.overviewTooltip.exists).ok('Overview tooltip not displayed'); // Verify that Database statistics title is displayed in tooltip - await t.expect(databaseOverviewPage.overviewTooltipStatTitle.exists).ok('Statistics title not displayed'); + await t.expect(browserPage.OverviewPanel.overviewTooltipStatTitle.exists).ok('Statistics title not displayed'); // Verify that CPU parameter is displayed in tooltip await t.expect(browserPage.overviewCpu.find('i').textContent).eql('CPU is not available'); }); diff --git a/tests/e2e/tests/regression/database/redisstack.e2e.ts b/tests/e2e/tests/regression/database/redisstack.e2e.ts index 78c654639b..669f74bde1 100644 --- a/tests/e2e/tests/regression/database/redisstack.e2e.ts +++ b/tests/e2e/tests/regression/database/redisstack.e2e.ts @@ -1,17 +1,17 @@ import { rte } from '../../../helpers/constants'; import { acceptLicenseTerms } from '../../../helpers/database'; -import { MyRedisDatabasePage, DatabaseOverviewPage } from '../../../pageObjects'; +import { BrowserPage, MyRedisDatabasePage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig } from '../../../helpers/conf'; import { addNewStandaloneDatabaseApi, deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; const myRedisDatabasePage = new MyRedisDatabasePage(); -const databaseOverviewPage = new DatabaseOverviewPage(); +const browserPage = new BrowserPage(); const common = new Common(); const moduleNameList = ['RediSearch', 'RedisGraph', 'RedisBloom', 'RedisJSON', 'RedisTimeSeries']; fixture `Redis Stack` - .meta({type: 'regression', rte: rte.standalone}) + .meta({ type: 'regression', rte: rte.standalone }) .page(commonUrl) .beforeEach(async() => { // Add new databases using API @@ -48,12 +48,12 @@ test('Verify that user can see Redis Stack icon in Edit mode near the DB name', }); test('Verify that user can see Redis Stack icon and logo in Browser page in Overview.', async t => { await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); - await t.expect(databaseOverviewPage.overviewRedisStackLogo.visible).ok('Redis Stack logo not found'); + await t.expect(browserPage.OverviewPanel.overviewRedisStackLogo.visible).ok('Redis Stack logo not found'); // Open Workbench page await t.click(myRedisDatabasePage.NavigationPanel.workbenchButton); - await t.expect(databaseOverviewPage.overviewRedisStackLogo.visible).ok('Redis Stack logo not found'); + await t.expect(browserPage.OverviewPanel.overviewRedisStackLogo.visible).ok('Redis Stack logo not found'); // Check modules inside of the tooltip - await t.hover(databaseOverviewPage.overviewRedisStackLogo); + await t.hover(browserPage.OverviewPanel.overviewRedisStackLogo); await t.expect(myRedisDatabasePage.moduleTooltip.visible).ok('Tooltip with modules not found'); await myRedisDatabasePage.checkModulesInTooltip(moduleNameList); }); diff --git a/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts b/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts index 728716e543..8e842e76af 100644 --- a/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts +++ b/tests/e2e/tests/regression/tree-view/tree-view.e2e.ts @@ -66,7 +66,7 @@ test('Verify that when user deletes the key he can see the key is removed from t const keyFolder = await browserPage.treeViewDeviceFolder.nth(2).textContent; await t.click(browserPage.treeViewDeviceFolder.nth(2)); await t.click(browserPage.treeViewDeviceFolder.nth(5)); - await browserPage.deleteSelectedKey(); + await browserPage.deleteKey(); // Verify the results await t.expect(browserPage.treeViewDeviceFolder.nth(2).exists).notOk('The previous folder is not closed after removing key folder'); await t.click(browserPage.treeViewDeviceFolder); diff --git a/tests/e2e/tests/smoke/database/add-standalone-db.e2e.ts b/tests/e2e/tests/smoke/database/add-standalone-db.e2e.ts index 2e3d8c5439..3800e20557 100644 --- a/tests/e2e/tests/smoke/database/add-standalone-db.e2e.ts +++ b/tests/e2e/tests/smoke/database/add-standalone-db.e2e.ts @@ -74,7 +74,7 @@ test // Verify that telemetry event 'CONFIG_DATABASES_OPEN_DATABASE' sent and has all expected properties await telemetry.verifyEventHasProperties(telemetryEvent, expectedProperties, logger); - await t.click(browserPage.myRedisDbIcon); + await t.click(browserPage.OverviewPanel.myRedisDbIcon); // Verify that user can't see an indicator of databases that were opened await myRedisDatabasePage.verifyDatabaseStatusIsNotVisible(ossStandaloneConfig.databaseName); From 11fbab933a503d235dacd60d8cf4192a837a8ab8 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Mon, 17 Apr 2023 13:44:11 +0200 Subject: [PATCH 048/106] #RI-4381 - fix pr comments --- .../BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx | 5 +++-- .../components/bulk-actions/BulkUpload/BulkUpload.tsx | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx index 147b9776e8..73f1948af6 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteFooter/BulkDeleteFooter.tsx @@ -14,6 +14,7 @@ import { keysDataSelector, keysSelector } from 'uiSrc/slices/browser/keys' import { getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { BulkActionsType } from 'uiSrc/constants' +import { DEFAULT_SEARCH_MATCH } from 'uiSrc/constants/api' import BulkDeleteContent from '../BulkDeleteContent' import { isProcessedBulkAction } from '../../utils' @@ -43,8 +44,8 @@ const BulkDeleteFooter = (props: Props) => { const handleDeleteWarning = () => { setIsPopoverOpen(true) - let matchValue = '*' - if (search !== '*' && !!search) { + let matchValue = DEFAULT_SEARCH_MATCH + if (search !== DEFAULT_SEARCH_MATCH && !!search) { matchValue = getMatchType(search) } diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx index 2984a12ef4..5fc8f0ca18 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -61,7 +61,7 @@ const BulkUpload = (props: Props) => { }) } - const onFileChange = (files: FileList | null) => { + const onFileChange = (files: Nullable) => { setFiles(files) } From 918292d194b07a67cad75b08edf095b831bd48c8 Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 17 Apr 2023 16:22:48 +0300 Subject: [PATCH 049/106] resolve PR comments --- .../components/cli/components/cli-input/CliInputWrapper.tsx | 3 ++- redisinsight/ui/src/constants/commands.ts | 5 +++++ redisinsight/ui/src/utils/commands.ts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx b/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx index 28e4f0d9cd..ea4450ca4d 100644 --- a/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx +++ b/redisinsight/ui/src/components/cli/components/cli-input/CliInputWrapper.tsx @@ -4,6 +4,7 @@ import { useSelector } from 'react-redux' import { getCommandRepeat } from 'uiSrc/utils' import { appRedisCommandsSelector } from 'uiSrc/slices/app/redis-commands' import { outputSelector } from 'uiSrc/slices/cli/cli-output' +import { CommandProvider } from 'uiSrc/constants' import CliAutocomplete from './CliAutocomplete' import CliInput from './CliInput' @@ -27,7 +28,7 @@ const CliInputWrapper = (props: Props) => { const secondCommandMatch = `${firstCommandMatch} ${secondCommand ? secondCommand.toUpperCase() : null}` const matchedCmd = ALL_REDIS_COMMANDS[secondCommandMatch] || ALL_REDIS_COMMANDS[firstCommandMatch] - const provider = matchedCmd?.provider || 'unknown' + const provider = matchedCmd?.provider || CommandProvider.Unknown const commandName = !isUndefined(ALL_REDIS_COMMANDS[secondCommandMatch]) ? `${firstCommand} ${secondCommand}` : firstCommand diff --git a/redisinsight/ui/src/constants/commands.ts b/redisinsight/ui/src/constants/commands.ts index c31c8bc983..55c9d6f820 100644 --- a/redisinsight/ui/src/constants/commands.ts +++ b/redisinsight/ui/src/constants/commands.ts @@ -12,6 +12,11 @@ export interface ICommand { provider?: string; } +export enum CommandProvider { + Main = 'main', + Unknown = 'unknown', +} + export interface ICommandArg { name?: string[] | string; type?: CommandArgsType[] | CommandArgsType | string | string[]; diff --git a/redisinsight/ui/src/utils/commands.ts b/redisinsight/ui/src/utils/commands.ts index c0d886a6e5..035610df50 100644 --- a/redisinsight/ui/src/utils/commands.ts +++ b/redisinsight/ui/src/utils/commands.ts @@ -1,6 +1,7 @@ import { flatten, isArray, isEmpty, isNumber, reject, toNumber, isNaN, isInteger } from 'lodash' import { CommandArgsType, + CommandProvider, ICommandArg, ICommandArgGenerated } from 'uiSrc/constants' @@ -135,7 +136,7 @@ const generateArgName = ( ): string | string[] => { try { // todo: temporary workaround until all commands providers will be unified - if (['main'].includes(provider)) { + if ([CommandProvider.Main].includes(provider)) { return (new Argument(arg)).syntax({ onlyMandatory, pureName, From ee3ac58db0c64db2de126a684e076e141d1e4ee3 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Tue, 18 Apr 2023 15:42:43 +0200 Subject: [PATCH 050/106] #RI-4321 - show tutorial name by label --- .../EnablementArea/EnablementArea.tsx | 2 +- .../LazyInternalPage/LazyInternalPage.tsx | 2 +- .../EnablementArea/utils/getFileInfo.ts | 12 ++++++++++- .../utils/tests/getFileInfo.spec.ts | 20 +++++++++---------- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx index 6d94c5d1f7..6069b2dafd 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx @@ -292,7 +292,7 @@ const EnablementArea = (props: Props) => { level: number = 0, ) => ( elements?.map((item) => ( -
+
{renderSwitch(item, paths, level)}
))) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx index 0d594aca38..9078be43b3 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/LazyInternalPage/LazyInternalPage.tsx @@ -94,7 +94,7 @@ const LazyInternalPage = ({ onClose, title, path, sourcePath, manifest, manifest manifestPath={manifestPath} sourcePath={sourcePath} onClose={onClose} - title={startCase(title || pageData.name)} + title={startCase(title || pageData.label)} backTitle={startCase(pageData?.parent)} isLoading={isMarkdownLoading} content={pageData.content} diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts index d21090e3d9..658a4453ef 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts @@ -8,6 +8,7 @@ import { EAManifestFirstKey } from 'uiSrc/pages/workbench/components/enablement- export interface IFileInfo { extension: string name: string + label: string parent: string location: string _key?: Nullable @@ -17,7 +18,7 @@ export const getFileInfo = ( { manifestPath, path }: { manifestPath?: Nullable, path: string }, manifest?: Nullable ): IFileInfo => { - const defaultResult: IFileInfo = { extension: '', name: '', parent: '', location: '' } + const defaultResult: IFileInfo = { extension: '', name: '', parent: '', location: '', label: '' } try { const url = IS_ABSOLUTE_PATH.test(path) ? new URL(path) : new URL(path, API_URL) const pathNames = url.pathname.split('/') @@ -25,9 +26,18 @@ export const getFileInfo = ( const markdownParent = manifest ? getParentByManifest(manifest, manifestPath) : null const [fileName, extension] = file.split('.') + let markdownInfo: Record = {} + if (manifestPath && markdownParent?.children) { + markdownInfo = get( + markdownParent.children, + manifestPath.split('/')?.pop() as string || '-1' + ) || {} + } + return { location: pathNames.join('/'), name: fileName || '', + label: markdownInfo?.label || fileName, extension: extension || '', parent: markdownParent ? markdownParent.label : (pathNames.pop() || '').replace(/[-_]+/g, ' '), _key: manifestPath?.split('/').pop() ?? null diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts index ad54551405..cf16099234 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/tests/getFileInfo.spec.ts @@ -14,43 +14,43 @@ import { const getFileInfoTests = [ { input: [{ path: 'static/workbench/quick-guides/file-name.txt' }], - expected: { name: 'file-name', parent: 'quick guides', extension: 'txt', location: '/static/workbench/quick-guides', _key: null } + expected: { name: 'file-name', parent: 'quick guides', extension: 'txt', location: '/static/workbench/quick-guides', label: 'file-name', _key: null } }, { input: [{ path: 'parent_folder\\file_name.txt' }], - expected: { name: 'file_name', parent: 'parent folder', extension: 'txt', location: '/parent_folder', _key: null } + expected: { name: 'file_name', parent: 'parent folder', extension: 'txt', location: '/parent_folder', label: 'file_name', _key: null } }, { input: [{ path: 'https://domen.com/workbench/enablement-area/introduction.html' }], - expected: { name: 'introduction', parent: 'enablement area', extension: 'html', location: '/workbench/enablement-area', _key: null } + expected: { name: 'introduction', parent: 'enablement area', extension: 'html', location: '/workbench/enablement-area', label: 'introduction', _key: null } }, { input: [{ path: 'https://domen.com/introduction.html' }], - expected: { name: 'introduction', parent: '', extension: 'html', location: '', _key: null } + expected: { name: 'introduction', parent: '', extension: 'html', location: '', label: 'introduction', _key: null } }, { input: [{ path: '/introduction.html' }], - expected: { name: 'introduction', parent: '', extension: 'html', location: '', _key: null } + expected: { name: 'introduction', parent: '', extension: 'html', location: '', label: 'introduction', _key: null } }, { input: [{ path: '//parent/markdown.md' }], - expected: { name: '', parent: '', extension: '', location: '' } + expected: { name: '', parent: '', extension: '', location: '', label: '', } }, { input: [{ path: '/file.txt' }], - expected: { name: 'file', parent: '', extension: 'txt', location: '', _key: null } + expected: { name: 'file', parent: '', extension: 'txt', location: '', label: 'file', _key: null } }, { input: [{ path: '' }], - expected: { name: '', parent: '', extension: '', location: '', _key: null } + expected: { name: '', parent: '', extension: '', location: '', label: '', _key: null } }, { input: [{ path: '/' }], - expected: { name: '', parent: '', extension: '', location: '', _key: null } + expected: { name: '', parent: '', extension: '', location: '', label: '', _key: null } }, { input: [{ manifestPath: 'quick-guides/0/0', path: '/static/workbench/quick-guides/document/learn-more.md' }, MOCK_GUIDES_ITEMS], - expected: { name: 'learn-more', parent: MOCK_GUIDES_ITEMS[0].label, extension: 'md', location: '/static/workbench/quick-guides/document', _key: '0' } + expected: { name: 'learn-more', parent: MOCK_GUIDES_ITEMS[0].label, extension: 'md', location: '/static/workbench/quick-guides/document', label: MOCK_GUIDES_ITEMS[0].children[0].label, _key: '0' } } ] From 4efde33effd41837934a57db20df69a839f15bd8 Mon Sep 17 00:00:00 2001 From: Zalenski Egor <63463140+zalenskiSofteq@users.noreply.github.com> Date: Wed, 19 Apr 2023 10:05:31 +0300 Subject: [PATCH 051/106] #RI-4346 - Rename Display on System Tray on mac --- redisinsight/menu.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redisinsight/menu.ts b/redisinsight/menu.ts index 3af3b22c55..ec7f872bf5 100644 --- a/redisinsight/menu.ts +++ b/redisinsight/menu.ts @@ -175,7 +175,7 @@ export default class MenuBuilder { type: 'separator', }, { - label: 'Display On System Tray', + label: 'Show in Menu Bar', type: 'checkbox', checked: getDisplayAppInTrayValue(), click: (menuItem: MenuItem) => { From 6ae68c10deed8a07670655eabbdf3d4c4ab59df5 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Wed, 19 Apr 2023 09:49:38 +0200 Subject: [PATCH 052/106] #RI-4321 - fix pr comments --- .../enablement-area/EnablementArea/utils/getFileInfo.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts index 658a4453ef..ffc5e4e15e 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/utils/getFileInfo.ts @@ -30,8 +30,9 @@ export const getFileInfo = ( if (manifestPath && markdownParent?.children) { markdownInfo = get( markdownParent.children, - manifestPath.split('/')?.pop() as string || '-1' - ) || {} + manifestPath.split('/')?.pop() as string || '-1', + {} + ) } return { From bac5482a5785774509365de761e5f34aae6645af Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 19 Apr 2023 12:21:48 +0300 Subject: [PATCH 053/106] change max file size validation error message --- .../src/modules/bulk-actions/dto/upload-import-file.dto.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts b/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts index b4d289514a..28c3add645 100644 --- a/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts +++ b/redisinsight/api/src/modules/bulk-actions/dto/upload-import-file.dto.ts @@ -12,6 +12,8 @@ export class UploadImportFileDto { }) @IsNotEmpty() @IsFile() - @MaxFileSize(100 * 1024 * 1024) + @MaxFileSize(100 * 1024 * 1024, { + message: 'Maximum file size is 100MB', + }) file?: MemoryStoredFile; } From 579e2eaad0ead58c7d64d0ead93bffce66a7ff45 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Wed, 19 Apr 2023 12:16:27 +0200 Subject: [PATCH 054/106] #RI-4416 - add error notification #RI-4417 - clear input file after start new #RI-4418 - fix buttons, margins --- .../BulkActionsInfo/BulkActionsInfo.tsx | 4 +++- .../bulk-actions/BulkUpload/BulkUpload.tsx | 14 ++++++-------- redisinsight/ui/src/slices/browser/bulkActions.ts | 2 ++ .../src/slices/tests/browser/bulkActions.spec.ts | 3 +++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx index 24f8e0e291..c46b95c658 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsInfo/BulkActionsInfo.tsx @@ -11,6 +11,7 @@ import styles from './styles.module.scss' export interface Props { title?: string | React.ReactNode + subTitle?: string | React.ReactNode loading: boolean filter?: Nullable status: Maybe @@ -23,7 +24,7 @@ export interface Props { } const BulkActionsInfo = (props: Props) => { - const { children, loading, filter, search, status, progress, title = 'Delete Keys with' } = props + const { children, loading, filter, search, status, progress, title = 'Delete Keys with', subTitle } = props const { total = 0, scanned = 0 } = progress || {} return ( @@ -31,6 +32,7 @@ const BulkActionsInfo = (props: Props) => {
{title} + {subTitle} {filter && (
Key type: diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx index 5fc8f0ca18..ba6b60491d 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -26,6 +26,7 @@ import BulkActionsInfo from 'uiSrc/pages/browser/components/bulk-actions/BulkAct import BulkActionSummary from 'uiSrc/pages/browser/components/bulk-actions/BulkActionSummary' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { isProcessedBulkAction } from 'uiSrc/pages/browser/components/bulk-actions/utils' import styles from './styles.module.scss' export interface Props { @@ -48,6 +49,7 @@ const BulkUpload = (props: Props) => { const onStartAgain = () => { dispatch(setBulkUploadStartAgain()) + setFiles(null) } const handleUploadWarning = () => { @@ -120,13 +122,8 @@ const BulkUpload = (props: Props) => { loading={loading} status={status} progress={progress} - title={( - <> - Upload with file - -
{fileName}
- - )} + title="Upload with file" + subTitle={(
{fileName}
)} > { className={styles.cancelBtn} data-testid="bulk-action-cancel-btn" > - Cancel + {isProcessedBulkAction(status) ? 'Close' : 'Cancel'} {!isCompleted ? ( { ) : ( { // Assert const expectedActions = [ bulkUpload(), + addErrorNotification(responsePayload as AxiosError), bulkUploadFailed(errorMessage), ] expect(store.getActions()).toEqual(expectedActions) From 92e2d8d8908a5b0189274426515e6fb7bd76a26a Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 19 Apr 2023 13:20:11 +0300 Subject: [PATCH 055/106] #RI-4421,#RI-4424 use pipeline.call to not fail with cannot apply command --- .../api/src/modules/bulk-actions/bulk-import.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts index 13919df4ec..022cfc71f9 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts @@ -37,7 +37,8 @@ export class BulkImportService { } })); } else { - (await client.pipeline(batch).exec()).forEach(([err]) => { + const commands = batch.map(([cmd, args]) => ['call', cmd, ...args]); + (await client.pipeline(commands).exec()).forEach(([err]) => { if (err) { result.addFailed(1); } else { From 4bf522fc64ed52d3bf49719ae5ea4d47ad89a40d Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Wed, 19 Apr 2023 13:24:10 +0200 Subject: [PATCH 056/106] #RI-4426 - fix key --- .../enablement-area/EnablementArea/EnablementArea.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx index 6069b2dafd..29c9da0617 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx @@ -292,7 +292,7 @@ const EnablementArea = (props: Props) => { level: number = 0, ) => ( elements?.map((item) => ( -
+
{renderSwitch(item, paths, level)}
))) From cf9ac0a5611537d8c3d40fd225a18190be80b08d Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Wed, 19 Apr 2023 14:55:27 +0200 Subject: [PATCH 057/106] #RI-4416 - add file size validation --- .../bulk-actions/BulkUpload/BulkUpload.tsx | 18 +++++++++++++++++- .../bulk-actions/BulkUpload/styles.module.scss | 5 +++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx index ba6b60491d..b589fad26b 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -7,6 +7,7 @@ import { EuiPopover, EuiSpacer, EuiText, + EuiTextColor, EuiToolTip, } from '@elastic/eui' @@ -33,6 +34,9 @@ export interface Props { onCancel: () => void } +const MAX_MB_FILE = 100 +const MAX_FILE_SIZE = MAX_MB_FILE * 1024 * 1024 + const BulkUpload = (props: Props) => { const { onCancel } = props const { id: instanceId } = useSelector(connectedInstanceSelector) @@ -41,6 +45,8 @@ const BulkUpload = (props: Props) => { const { succeed, processed, failed } = useSelector(bulkActionsUploadSummarySelector) ?? {} const [files, setFiles] = useState>(null) + const [isInvalid, setIsInvalid] = useState(false) + const [isSubmitDisabled, setIsSubmitDisabled] = useState(true) const [isPopoverOpen, setIsPopoverOpen] = useState(false) const isCompleted = status && status === BulkActionsStatus.Completed @@ -64,7 +70,11 @@ const BulkUpload = (props: Props) => { } const onFileChange = (files: Nullable) => { + const isOutOfSize = (files?.[0]?.size || 0) > MAX_FILE_SIZE + setFiles(files) + setIsInvalid(!!files?.length && isOutOfSize) + setIsSubmitDisabled(!files?.length || isOutOfSize) } const handleUpload = () => { @@ -110,11 +120,17 @@ const BulkUpload = (props: Props) => { id="bulk-upload-file-input" initialPromptText="Select or drag and drop a file" className={styles.fileDrop} + isInvalid={isInvalid} onChange={onFileChange} display="large" data-testid="bulk-upload-file-input" aria-label="Select or drag and drop file" /> + {isInvalid && ( + + File should not exceed {MAX_MB_FILE} MB + + )}
) : ( @@ -156,7 +172,7 @@ const BulkUpload = (props: Props) => { fill color="secondary" onClick={handleUploadWarning} - disabled={!files?.length || loading} + disabled={isSubmitDisabled || loading} isLoading={loading} data-testid="bulk-action-warning-btn" > diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss index ab3e90ac34..dd938e285e 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/styles.module.scss @@ -52,6 +52,11 @@ } } + .errorFileMsg { + margin-top: 10px; + font-size: 12px; + } + .footer { position: absolute; bottom: 24px; From b38268a6a6b9fb93429a5d9d787d9015f78df140 Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Wed, 19 Apr 2023 21:04:50 +0200 Subject: [PATCH 058/106] add tests for bulk upload --- .../BulkDeleteSummary/BulkDeleteSummary.tsx | 2 +- .../BulkUpload/BulkUpload.spec.tsx | 2 +- .../bulk-actions/BulkUpload/BulkUpload.tsx | 2 +- tests/e2e/pageObjects/bulk-actions-page.ts | 22 +- .../e2e/test-data/bulk-upload/bigKeysData.rtf | 10000 ++++++++++++++++ .../bulk-upload/bulkUplAllKeyTypes.txt | 9 + .../critical-path/browser/bulk-delete.e2e.ts | 2 +- .../critical-path/browser/bulk-upload.e2e.ts | 70 + 8 files changed, 10103 insertions(+), 6 deletions(-) create mode 100644 tests/e2e/test-data/bulk-upload/bigKeysData.rtf create mode 100644 tests/e2e/test-data/bulk-upload/bulkUplAllKeyTypes.txt create mode 100644 tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx index de292a5e75..4fa8300908 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkDelete/BulkDeleteSummary/BulkDeleteSummary.tsx @@ -56,7 +56,7 @@ const BulkDeleteSummary = () => { processed={processed} failed={failed} duration={duration} - data-testid="bulk-delete-competed-summary" + data-testid="bulk-delete-completed-summary" /> )}
diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx index 25a999350a..2620dab7a7 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.spec.tsx @@ -89,7 +89,7 @@ describe('BulkUpload', () => { render() - expect(screen.getByTestId('bulk-upload-competed-summary')).toBeInTheDocument() + expect(screen.getByTestId('bulk-upload-completed-summary')).toBeInTheDocument() }) it('should call start new button', () => { diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx index b589fad26b..48c2b8822a 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -146,7 +146,7 @@ const BulkUpload = (props: Props) => { processed={processed} failed={failed} duration={duration} - data-testid="bulk-upload-competed-summary" + data-testid="bulk-upload-completed-summary" /> )} diff --git a/tests/e2e/pageObjects/bulk-actions-page.ts b/tests/e2e/pageObjects/bulk-actions-page.ts index fe94be76ab..a4623c3df8 100644 --- a/tests/e2e/pageObjects/bulk-actions-page.ts +++ b/tests/e2e/pageObjects/bulk-actions-page.ts @@ -12,12 +12,15 @@ export class BulkActionsPage { //------------------------------------------------------------------------------------------- //BUTTONS bulkDeleteTooltipIcon = Selector('[data-testid=bulk-delete-tooltip]'); - deleteButton = Selector('[data-testid=bulk-action-warning-btn]'); + actionButton = Selector('[data-testid=bulk-action-warning-btn]'); bulkApplyButton = Selector('[data-testid=bulk-action-apply-btn]'); bulkStopButton = Selector('[data-testid=bulk-action-stop-btn]'); bulkStartAgainButton = Selector('[data-testid=bulk-action-start-again-btn]'); bulkCancelButton = Selector('[data-testid=bulk-action-cancel-btn]'); bulkClosePanelButton = Selector('[data-testid=bulk-close-panel]'); + bulkUpdateTab = Selector('[data-testid=bulk-action-tab-upload]'); + bulkActionStartNewButton = Selector('[data-testid=bulk-action-start-new-btn]'); + removeFileBtn = Selector('[aria-label="Clear selected files"]'); //TEXT infoFilter = Selector('[data-testid=bulk-actions-info-filter]'); infoSearch = Selector('[data-testid=bulk-actions-info-search]'); @@ -28,10 +31,14 @@ export class BulkActionsPage { bulkStatusStopped = Selector('[data-testid=bulk-status-stopped]'); bulkStatusCompleted = Selector('[data-testid=bulk-status-completed]'); bulkDeleteCompletedSummary = Selector('[data-testid=bulk-delete-completed-summary]'); + bulkUploadCompletedSummary = Selector('[data-testid=bulk-upload-completed-summary]'); //CONTAINERS bulkActionsContainer = Selector('[data-testid=bulk-actions-content]'); bulkActionsSummary = Selector('[data-testid=bulk-actions-info]'); progressLine = Selector('[data-testid=progress-line]'); + bulkUploadContainer = Selector('[data-testid=bulk-upload-container]'); + // IMPORT + bulkUploadInput = Selector('[data-testid=bulk-upload-file-input]'); /** * Open Bulk Actions and confirm deletion @@ -40,7 +47,18 @@ export class BulkActionsPage { // TODO remove dep from browser page await t .click(browserPage.bulkActionsButton) - .click(this.deleteButton) + .click(this.actionButton) + .click(this.bulkApplyButton); + } + + /** + * Bulk Upload of file + * @param path Path to file to upload + */ + async uploadFileInBulk(path: string): Promise { + await t + .setFilesToUpload(this.bulkUploadInput, [path]) + .click(this.actionButton) .click(this.bulkApplyButton); } } diff --git a/tests/e2e/test-data/bulk-upload/bigKeysData.rtf b/tests/e2e/test-data/bulk-upload/bigKeysData.rtf new file mode 100644 index 0000000000..4a081be037 --- /dev/null +++ b/tests/e2e/test-data/bulk-upload/bigKeysData.rtf @@ -0,0 +1,10000 @@ +SET Key0 Value0 +SET Key1 Value1 +SET Key2 Value2 +SET Key3 Value3 +SET Key4 Value4 +SET Key5 Value5 +SET Key6 Value6 +SET Key7 Value7 +SET Key8 Value8 +SET Key9 Value9 +SET Key10 Value10 +SET Key11 Value11 +SET Key12 Value12 +SET Key13 Value13 +SET Key14 Value14 +SET Key15 Value15 +SET Key16 Value16 +SET Key17 Value17 +SET Key18 Value18 +SET Key19 Value19 +SET Key20 Value20 +SET Key21 Value21 +SET Key22 Value22 +SET Key23 Value23 +SET Key24 Value24 +SET Key25 Value25 +SET Key26 Value26 +SET Key27 Value27 +SET Key28 Value28 +SET Key29 Value29 +SET Key30 Value30 +SET Key31 Value31 +SET Key32 Value32 +SET Key33 Value33 +SET Key34 Value34 +SET Key35 Value35 +SET Key36 Value36 +SET Key37 Value37 +SET Key38 Value38 +SET Key39 Value39 +SET Key40 Value40 +SET Key41 Value41 +SET Key42 Value42 +SET Key43 Value43 +SET Key44 Value44 +SET Key45 Value45 +SET Key46 Value46 +SET Key47 Value47 +SET Key48 Value48 +SET Key49 Value49 +SET Key50 Value50 +SET Key51 Value51 +SET Key52 Value52 +SET Key53 Value53 +SET Key54 Value54 +SET Key55 Value55 +SET Key56 Value56 +SET Key57 Value57 +SET Key58 Value58 +SET Key59 Value59 +SET Key60 Value60 +SET Key61 Value61 +SET Key62 Value62 +SET Key63 Value63 +SET Key64 Value64 +SET Key65 Value65 +SET Key66 Value66 +SET Key67 Value67 +SET Key68 Value68 +SET Key69 Value69 +SET Key70 Value70 +SET Key71 Value71 +SET Key72 Value72 +SET Key73 Value73 +SET Key74 Value74 +SET Key75 Value75 +SET Key76 Value76 +SET Key77 Value77 +SET Key78 Value78 +SET Key79 Value79 +SET Key80 Value80 +SET Key81 Value81 +SET Key82 Value82 +SET Key83 Value83 +SET Key84 Value84 +SET Key85 Value85 +SET Key86 Value86 +SET Key87 Value87 +SET Key88 Value88 +SET Key89 Value89 +SET Key90 Value90 +SET Key91 Value91 +SET Key92 Value92 +SET Key93 Value93 +SET Key94 Value94 +SET Key95 Value95 +SET Key96 Value96 +SET Key97 Value97 +SET Key98 Value98 +SET Key99 Value99 +SET Key100 Value100 +SET Key101 Value101 +SET Key102 Value102 +SET Key103 Value103 +SET Key104 Value104 +SET Key105 Value105 +SET Key106 Value106 +SET Key107 Value107 +SET Key108 Value108 +SET Key109 Value109 +SET Key110 Value110 +SET Key111 Value111 +SET Key112 Value112 +SET Key113 Value113 +SET Key114 Value114 +SET Key115 Value115 +SET Key116 Value116 +SET Key117 Value117 +SET Key118 Value118 +SET Key119 Value119 +SET Key120 Value120 +SET Key121 Value121 +SET Key122 Value122 +SET Key123 Value123 +SET Key124 Value124 +SET Key125 Value125 +SET Key126 Value126 +SET Key127 Value127 +SET Key128 Value128 +SET Key129 Value129 +SET Key130 Value130 +SET Key131 Value131 +SET Key132 Value132 +SET Key133 Value133 +SET Key134 Value134 +SET Key135 Value135 +SET Key136 Value136 +SET Key137 Value137 +SET Key138 Value138 +SET Key139 Value139 +SET Key140 Value140 +SET Key141 Value141 +SET Key142 Value142 +SET Key143 Value143 +SET Key144 Value144 +SET Key145 Value145 +SET Key146 Value146 +SET Key147 Value147 +SET Key148 Value148 +SET Key149 Value149 +SET Key150 Value150 +SET Key151 Value151 +SET Key152 Value152 +SET Key153 Value153 +SET Key154 Value154 +SET Key155 Value155 +SET Key156 Value156 +SET Key157 Value157 +SET Key158 Value158 +SET Key159 Value159 +SET Key160 Value160 +SET Key161 Value161 +SET Key162 Value162 +SET Key163 Value163 +SET Key164 Value164 +SET Key165 Value165 +SET Key166 Value166 +SET Key167 Value167 +SET Key168 Value168 +SET Key169 Value169 +SET Key170 Value170 +SET Key171 Value171 +SET Key172 Value172 +SET Key173 Value173 +SET Key174 Value174 +SET Key175 Value175 +SET Key176 Value176 +SET Key177 Value177 +SET Key178 Value178 +SET Key179 Value179 +SET Key180 Value180 +SET Key181 Value181 +SET Key182 Value182 +SET Key183 Value183 +SET Key184 Value184 +SET Key185 Value185 +SET Key186 Value186 +SET Key187 Value187 +SET Key188 Value188 +SET Key189 Value189 +SET Key190 Value190 +SET Key191 Value191 +SET Key192 Value192 +SET Key193 Value193 +SET Key194 Value194 +SET Key195 Value195 +SET Key196 Value196 +SET Key197 Value197 +SET Key198 Value198 +SET Key199 Value199 +SET Key200 Value200 +SET Key201 Value201 +SET Key202 Value202 +SET Key203 Value203 +SET Key204 Value204 +SET Key205 Value205 +SET Key206 Value206 +SET Key207 Value207 +SET Key208 Value208 +SET Key209 Value209 +SET Key210 Value210 +SET Key211 Value211 +SET Key212 Value212 +SET Key213 Value213 +SET Key214 Value214 +SET Key215 Value215 +SET Key216 Value216 +SET Key217 Value217 +SET Key218 Value218 +SET Key219 Value219 +SET Key220 Value220 +SET Key221 Value221 +SET Key222 Value222 +SET Key223 Value223 +SET Key224 Value224 +SET Key225 Value225 +SET Key226 Value226 +SET Key227 Value227 +SET Key228 Value228 +SET Key229 Value229 +SET Key230 Value230 +SET Key231 Value231 +SET Key232 Value232 +SET Key233 Value233 +SET Key234 Value234 +SET Key235 Value235 +SET Key236 Value236 +SET Key237 Value237 +SET Key238 Value238 +SET Key239 Value239 +SET Key240 Value240 +SET Key241 Value241 +SET Key242 Value242 +SET Key243 Value243 +SET Key244 Value244 +SET Key245 Value245 +SET Key246 Value246 +SET Key247 Value247 +SET Key248 Value248 +SET Key249 Value249 +SET Key250 Value250 +SET Key251 Value251 +SET Key252 Value252 +SET Key253 Value253 +SET Key254 Value254 +SET Key255 Value255 +SET Key256 Value256 +SET Key257 Value257 +SET Key258 Value258 +SET Key259 Value259 +SET Key260 Value260 +SET Key261 Value261 +SET Key262 Value262 +SET Key263 Value263 +SET Key264 Value264 +SET Key265 Value265 +SET Key266 Value266 +SET Key267 Value267 +SET Key268 Value268 +SET Key269 Value269 +SET Key270 Value270 +SET Key271 Value271 +SET Key272 Value272 +SET Key273 Value273 +SET Key274 Value274 +SET Key275 Value275 +SET Key276 Value276 +SET Key277 Value277 +SET Key278 Value278 +SET Key279 Value279 +SET Key280 Value280 +SET Key281 Value281 +SET Key282 Value282 +SET Key283 Value283 +SET Key284 Value284 +SET Key285 Value285 +SET Key286 Value286 +SET Key287 Value287 +SET Key288 Value288 +SET Key289 Value289 +SET Key290 Value290 +SET Key291 Value291 +SET Key292 Value292 +SET Key293 Value293 +SET Key294 Value294 +SET Key295 Value295 +SET Key296 Value296 +SET Key297 Value297 +SET Key298 Value298 +SET Key299 Value299 +SET Key300 Value300 +SET Key301 Value301 +SET Key302 Value302 +SET Key303 Value303 +SET Key304 Value304 +SET Key305 Value305 +SET Key306 Value306 +SET Key307 Value307 +SET Key308 Value308 +SET Key309 Value309 +SET Key310 Value310 +SET Key311 Value311 +SET Key312 Value312 +SET Key313 Value313 +SET Key314 Value314 +SET Key315 Value315 +SET Key316 Value316 +SET Key317 Value317 +SET Key318 Value318 +SET Key319 Value319 +SET Key320 Value320 +SET Key321 Value321 +SET Key322 Value322 +SET Key323 Value323 +SET Key324 Value324 +SET Key325 Value325 +SET Key326 Value326 +SET Key327 Value327 +SET Key328 Value328 +SET Key329 Value329 +SET Key330 Value330 +SET Key331 Value331 +SET Key332 Value332 +SET Key333 Value333 +SET Key334 Value334 +SET Key335 Value335 +SET Key336 Value336 +SET Key337 Value337 +SET Key338 Value338 +SET Key339 Value339 +SET Key340 Value340 +SET Key341 Value341 +SET Key342 Value342 +SET Key343 Value343 +SET Key344 Value344 +SET Key345 Value345 +SET Key346 Value346 +SET Key347 Value347 +SET Key348 Value348 +SET Key349 Value349 +SET Key350 Value350 +SET Key351 Value351 +SET Key352 Value352 +SET Key353 Value353 +SET Key354 Value354 +SET Key355 Value355 +SET Key356 Value356 +SET Key357 Value357 +SET Key358 Value358 +SET Key359 Value359 +SET Key360 Value360 +SET Key361 Value361 +SET Key362 Value362 +SET Key363 Value363 +SET Key364 Value364 +SET Key365 Value365 +SET Key366 Value366 +SET Key367 Value367 +SET Key368 Value368 +SET Key369 Value369 +SET Key370 Value370 +SET Key371 Value371 +SET Key372 Value372 +SET Key373 Value373 +SET Key374 Value374 +SET Key375 Value375 +SET Key376 Value376 +SET Key377 Value377 +SET Key378 Value378 +SET Key379 Value379 +SET Key380 Value380 +SET Key381 Value381 +SET Key382 Value382 +SET Key383 Value383 +SET Key384 Value384 +SET Key385 Value385 +SET Key386 Value386 +SET Key387 Value387 +SET Key388 Value388 +SET Key389 Value389 +SET Key390 Value390 +SET Key391 Value391 +SET Key392 Value392 +SET Key393 Value393 +SET Key394 Value394 +SET Key395 Value395 +SET Key396 Value396 +SET Key397 Value397 +SET Key398 Value398 +SET Key399 Value399 +SET Key400 Value400 +SET Key401 Value401 +SET Key402 Value402 +SET Key403 Value403 +SET Key404 Value404 +SET Key405 Value405 +SET Key406 Value406 +SET Key407 Value407 +SET Key408 Value408 +SET Key409 Value409 +SET Key410 Value410 +SET Key411 Value411 +SET Key412 Value412 +SET Key413 Value413 +SET Key414 Value414 +SET Key415 Value415 +SET Key416 Value416 +SET Key417 Value417 +SET Key418 Value418 +SET Key419 Value419 +SET Key420 Value420 +SET Key421 Value421 +SET Key422 Value422 +SET Key423 Value423 +SET Key424 Value424 +SET Key425 Value425 +SET Key426 Value426 +SET Key427 Value427 +SET Key428 Value428 +SET Key429 Value429 +SET Key430 Value430 +SET Key431 Value431 +SET Key432 Value432 +SET Key433 Value433 +SET Key434 Value434 +SET Key435 Value435 +SET Key436 Value436 +SET Key437 Value437 +SET Key438 Value438 +SET Key439 Value439 +SET Key440 Value440 +SET Key441 Value441 +SET Key442 Value442 +SET Key443 Value443 +SET Key444 Value444 +SET Key445 Value445 +SET Key446 Value446 +SET Key447 Value447 +SET Key448 Value448 +SET Key449 Value449 +SET Key450 Value450 +SET Key451 Value451 +SET Key452 Value452 +SET Key453 Value453 +SET Key454 Value454 +SET Key455 Value455 +SET Key456 Value456 +SET Key457 Value457 +SET Key458 Value458 +SET Key459 Value459 +SET Key460 Value460 +SET Key461 Value461 +SET Key462 Value462 +SET Key463 Value463 +SET Key464 Value464 +SET Key465 Value465 +SET Key466 Value466 +SET Key467 Value467 +SET Key468 Value468 +SET Key469 Value469 +SET Key470 Value470 +SET Key471 Value471 +SET Key472 Value472 +SET Key473 Value473 +SET Key474 Value474 +SET Key475 Value475 +SET Key476 Value476 +SET Key477 Value477 +SET Key478 Value478 +SET Key479 Value479 +SET Key480 Value480 +SET Key481 Value481 +SET Key482 Value482 +SET Key483 Value483 +SET Key484 Value484 +SET Key485 Value485 +SET Key486 Value486 +SET Key487 Value487 +SET Key488 Value488 +SET Key489 Value489 +SET Key490 Value490 +SET Key491 Value491 +SET Key492 Value492 +SET Key493 Value493 +SET Key494 Value494 +SET Key495 Value495 +SET Key496 Value496 +SET Key497 Value497 +SET Key498 Value498 +SET Key499 Value499 +SET Key500 Value500 +SET Key501 Value501 +SET Key502 Value502 +SET Key503 Value503 +SET Key504 Value504 +SET Key505 Value505 +SET Key506 Value506 +SET Key507 Value507 +SET Key508 Value508 +SET Key509 Value509 +SET Key510 Value510 +SET Key511 Value511 +SET Key512 Value512 +SET Key513 Value513 +SET Key514 Value514 +SET Key515 Value515 +SET Key516 Value516 +SET Key517 Value517 +SET Key518 Value518 +SET Key519 Value519 +SET Key520 Value520 +SET Key521 Value521 +SET Key522 Value522 +SET Key523 Value523 +SET Key524 Value524 +SET Key525 Value525 +SET Key526 Value526 +SET Key527 Value527 +SET Key528 Value528 +SET Key529 Value529 +SET Key530 Value530 +SET Key531 Value531 +SET Key532 Value532 +SET Key533 Value533 +SET Key534 Value534 +SET Key535 Value535 +SET Key536 Value536 +SET Key537 Value537 +SET Key538 Value538 +SET Key539 Value539 +SET Key540 Value540 +SET Key541 Value541 +SET Key542 Value542 +SET Key543 Value543 +SET Key544 Value544 +SET Key545 Value545 +SET Key546 Value546 +SET Key547 Value547 +SET Key548 Value548 +SET Key549 Value549 +SET Key550 Value550 +SET Key551 Value551 +SET Key552 Value552 +SET Key553 Value553 +SET Key554 Value554 +SET Key555 Value555 +SET Key556 Value556 +SET Key557 Value557 +SET Key558 Value558 +SET Key559 Value559 +SET Key560 Value560 +SET Key561 Value561 +SET Key562 Value562 +SET Key563 Value563 +SET Key564 Value564 +SET Key565 Value565 +SET Key566 Value566 +SET Key567 Value567 +SET Key568 Value568 +SET Key569 Value569 +SET Key570 Value570 +SET Key571 Value571 +SET Key572 Value572 +SET Key573 Value573 +SET Key574 Value574 +SET Key575 Value575 +SET Key576 Value576 +SET Key577 Value577 +SET Key578 Value578 +SET Key579 Value579 +SET Key580 Value580 +SET Key581 Value581 +SET Key582 Value582 +SET Key583 Value583 +SET Key584 Value584 +SET Key585 Value585 +SET Key586 Value586 +SET Key587 Value587 +SET Key588 Value588 +SET Key589 Value589 +SET Key590 Value590 +SET Key591 Value591 +SET Key592 Value592 +SET Key593 Value593 +SET Key594 Value594 +SET Key595 Value595 +SET Key596 Value596 +SET Key597 Value597 +SET Key598 Value598 +SET Key599 Value599 +SET Key600 Value600 +SET Key601 Value601 +SET Key602 Value602 +SET Key603 Value603 +SET Key604 Value604 +SET Key605 Value605 +SET Key606 Value606 +SET Key607 Value607 +SET Key608 Value608 +SET Key609 Value609 +SET Key610 Value610 +SET Key611 Value611 +SET Key612 Value612 +SET Key613 Value613 +SET Key614 Value614 +SET Key615 Value615 +SET Key616 Value616 +SET Key617 Value617 +SET Key618 Value618 +SET Key619 Value619 +SET Key620 Value620 +SET Key621 Value621 +SET Key622 Value622 +SET Key623 Value623 +SET Key624 Value624 +SET Key625 Value625 +SET Key626 Value626 +SET Key627 Value627 +SET Key628 Value628 +SET Key629 Value629 +SET Key630 Value630 +SET Key631 Value631 +SET Key632 Value632 +SET Key633 Value633 +SET Key634 Value634 +SET Key635 Value635 +SET Key636 Value636 +SET Key637 Value637 +SET Key638 Value638 +SET Key639 Value639 +SET Key640 Value640 +SET Key641 Value641 +SET Key642 Value642 +SET Key643 Value643 +SET Key644 Value644 +SET Key645 Value645 +SET Key646 Value646 +SET Key647 Value647 +SET Key648 Value648 +SET Key649 Value649 +SET Key650 Value650 +SET Key651 Value651 +SET Key652 Value652 +SET Key653 Value653 +SET Key654 Value654 +SET Key655 Value655 +SET Key656 Value656 +SET Key657 Value657 +SET Key658 Value658 +SET Key659 Value659 +SET Key660 Value660 +SET Key661 Value661 +SET Key662 Value662 +SET Key663 Value663 +SET Key664 Value664 +SET Key665 Value665 +SET Key666 Value666 +SET Key667 Value667 +SET Key668 Value668 +SET Key669 Value669 +SET Key670 Value670 +SET Key671 Value671 +SET Key672 Value672 +SET Key673 Value673 +SET Key674 Value674 +SET Key675 Value675 +SET Key676 Value676 +SET Key677 Value677 +SET Key678 Value678 +SET Key679 Value679 +SET Key680 Value680 +SET Key681 Value681 +SET Key682 Value682 +SET Key683 Value683 +SET Key684 Value684 +SET Key685 Value685 +SET Key686 Value686 +SET Key687 Value687 +SET Key688 Value688 +SET Key689 Value689 +SET Key690 Value690 +SET Key691 Value691 +SET Key692 Value692 +SET Key693 Value693 +SET Key694 Value694 +SET Key695 Value695 +SET Key696 Value696 +SET Key697 Value697 +SET Key698 Value698 +SET Key699 Value699 +SET Key700 Value700 +SET Key701 Value701 +SET Key702 Value702 +SET Key703 Value703 +SET Key704 Value704 +SET Key705 Value705 +SET Key706 Value706 +SET Key707 Value707 +SET Key708 Value708 +SET Key709 Value709 +SET Key710 Value710 +SET Key711 Value711 +SET Key712 Value712 +SET Key713 Value713 +SET Key714 Value714 +SET Key715 Value715 +SET Key716 Value716 +SET Key717 Value717 +SET Key718 Value718 +SET Key719 Value719 +SET Key720 Value720 +SET Key721 Value721 +SET Key722 Value722 +SET Key723 Value723 +SET Key724 Value724 +SET Key725 Value725 +SET Key726 Value726 +SET Key727 Value727 +SET Key728 Value728 +SET Key729 Value729 +SET Key730 Value730 +SET Key731 Value731 +SET Key732 Value732 +SET Key733 Value733 +SET Key734 Value734 +SET Key735 Value735 +SET Key736 Value736 +SET Key737 Value737 +SET Key738 Value738 +SET Key739 Value739 +SET Key740 Value740 +SET Key741 Value741 +SET Key742 Value742 +SET Key743 Value743 +SET Key744 Value744 +SET Key745 Value745 +SET Key746 Value746 +SET Key747 Value747 +SET Key748 Value748 +SET Key749 Value749 +SET Key750 Value750 +SET Key751 Value751 +SET Key752 Value752 +SET Key753 Value753 +SET Key754 Value754 +SET Key755 Value755 +SET Key756 Value756 +SET Key757 Value757 +SET Key758 Value758 +SET Key759 Value759 +SET Key760 Value760 +SET Key761 Value761 +SET Key762 Value762 +SET Key763 Value763 +SET Key764 Value764 +SET Key765 Value765 +SET Key766 Value766 +SET Key767 Value767 +SET Key768 Value768 +SET Key769 Value769 +SET Key770 Value770 +SET Key771 Value771 +SET Key772 Value772 +SET Key773 Value773 +SET Key774 Value774 +SET Key775 Value775 +SET Key776 Value776 +SET Key777 Value777 +SET Key778 Value778 +SET Key779 Value779 +SET Key780 Value780 +SET Key781 Value781 +SET Key782 Value782 +SET Key783 Value783 +SET Key784 Value784 +SET Key785 Value785 +SET Key786 Value786 +SET Key787 Value787 +SET Key788 Value788 +SET Key789 Value789 +SET Key790 Value790 +SET Key791 Value791 +SET Key792 Value792 +SET Key793 Value793 +SET Key794 Value794 +SET Key795 Value795 +SET Key796 Value796 +SET Key797 Value797 +SET Key798 Value798 +SET Key799 Value799 +SET Key800 Value800 +SET Key801 Value801 +SET Key802 Value802 +SET Key803 Value803 +SET Key804 Value804 +SET Key805 Value805 +SET Key806 Value806 +SET Key807 Value807 +SET Key808 Value808 +SET Key809 Value809 +SET Key810 Value810 +SET Key811 Value811 +SET Key812 Value812 +SET Key813 Value813 +SET Key814 Value814 +SET Key815 Value815 +SET Key816 Value816 +SET Key817 Value817 +SET Key818 Value818 +SET Key819 Value819 +SET Key820 Value820 +SET Key821 Value821 +SET Key822 Value822 +SET Key823 Value823 +SET Key824 Value824 +SET Key825 Value825 +SET Key826 Value826 +SET Key827 Value827 +SET Key828 Value828 +SET Key829 Value829 +SET Key830 Value830 +SET Key831 Value831 +SET Key832 Value832 +SET Key833 Value833 +SET Key834 Value834 +SET Key835 Value835 +SET Key836 Value836 +SET Key837 Value837 +SET Key838 Value838 +SET Key839 Value839 +SET Key840 Value840 +SET Key841 Value841 +SET Key842 Value842 +SET Key843 Value843 +SET Key844 Value844 +SET Key845 Value845 +SET Key846 Value846 +SET Key847 Value847 +SET Key848 Value848 +SET Key849 Value849 +SET Key850 Value850 +SET Key851 Value851 +SET Key852 Value852 +SET Key853 Value853 +SET Key854 Value854 +SET Key855 Value855 +SET Key856 Value856 +SET Key857 Value857 +SET Key858 Value858 +SET Key859 Value859 +SET Key860 Value860 +SET Key861 Value861 +SET Key862 Value862 +SET Key863 Value863 +SET Key864 Value864 +SET Key865 Value865 +SET Key866 Value866 +SET Key867 Value867 +SET Key868 Value868 +SET Key869 Value869 +SET Key870 Value870 +SET Key871 Value871 +SET Key872 Value872 +SET Key873 Value873 +SET Key874 Value874 +SET Key875 Value875 +SET Key876 Value876 +SET Key877 Value877 +SET Key878 Value878 +SET Key879 Value879 +SET Key880 Value880 +SET Key881 Value881 +SET Key882 Value882 +SET Key883 Value883 +SET Key884 Value884 +SET Key885 Value885 +SET Key886 Value886 +SET Key887 Value887 +SET Key888 Value888 +SET Key889 Value889 +SET Key890 Value890 +SET Key891 Value891 +SET Key892 Value892 +SET Key893 Value893 +SET Key894 Value894 +SET Key895 Value895 +SET Key896 Value896 +SET Key897 Value897 +SET Key898 Value898 +SET Key899 Value899 +SET Key900 Value900 +SET Key901 Value901 +SET Key902 Value902 +SET Key903 Value903 +SET Key904 Value904 +SET Key905 Value905 +SET Key906 Value906 +SET Key907 Value907 +SET Key908 Value908 +SET Key909 Value909 +SET Key910 Value910 +SET Key911 Value911 +SET Key912 Value912 +SET Key913 Value913 +SET Key914 Value914 +SET Key915 Value915 +SET Key916 Value916 +SET Key917 Value917 +SET Key918 Value918 +SET Key919 Value919 +SET Key920 Value920 +SET Key921 Value921 +SET Key922 Value922 +SET Key923 Value923 +SET Key924 Value924 +SET Key925 Value925 +SET Key926 Value926 +SET Key927 Value927 +SET Key928 Value928 +SET Key929 Value929 +SET Key930 Value930 +SET Key931 Value931 +SET Key932 Value932 +SET Key933 Value933 +SET Key934 Value934 +SET Key935 Value935 +SET Key936 Value936 +SET Key937 Value937 +SET Key938 Value938 +SET Key939 Value939 +SET Key940 Value940 +SET Key941 Value941 +SET Key942 Value942 +SET Key943 Value943 +SET Key944 Value944 +SET Key945 Value945 +SET Key946 Value946 +SET Key947 Value947 +SET Key948 Value948 +SET Key949 Value949 +SET Key950 Value950 +SET Key951 Value951 +SET Key952 Value952 +SET Key953 Value953 +SET Key954 Value954 +SET Key955 Value955 +SET Key956 Value956 +SET Key957 Value957 +SET Key958 Value958 +SET Key959 Value959 +SET Key960 Value960 +SET Key961 Value961 +SET Key962 Value962 +SET Key963 Value963 +SET Key964 Value964 +SET Key965 Value965 +SET Key966 Value966 +SET Key967 Value967 +SET Key968 Value968 +SET Key969 Value969 +SET Key970 Value970 +SET Key971 Value971 +SET Key972 Value972 +SET Key973 Value973 +SET Key974 Value974 +SET Key975 Value975 +SET Key976 Value976 +SET Key977 Value977 +SET Key978 Value978 +SET Key979 Value979 +SET Key980 Value980 +SET Key981 Value981 +SET Key982 Value982 +SET Key983 Value983 +SET Key984 Value984 +SET Key985 Value985 +SET Key986 Value986 +SET Key987 Value987 +SET Key988 Value988 +SET Key989 Value989 +SET Key990 Value990 +SET Key991 Value991 +SET Key992 Value992 +SET Key993 Value993 +SET Key994 Value994 +SET Key995 Value995 +SET Key996 Value996 +SET Key997 Value997 +SET Key998 Value998 +SET Key999 Value999 +SET Key1000 Value1000 +SET Key1001 Value1001 +SET Key1002 Value1002 +SET Key1003 Value1003 +SET Key1004 Value1004 +SET Key1005 Value1005 +SET Key1006 Value1006 +SET Key1007 Value1007 +SET Key1008 Value1008 +SET Key1009 Value1009 +SET Key1010 Value1010 +SET Key1011 Value1011 +SET Key1012 Value1012 +SET Key1013 Value1013 +SET Key1014 Value1014 +SET Key1015 Value1015 +SET Key1016 Value1016 +SET Key1017 Value1017 +SET Key1018 Value1018 +SET Key1019 Value1019 +SET Key1020 Value1020 +SET Key1021 Value1021 +SET Key1022 Value1022 +SET Key1023 Value1023 +SET Key1024 Value1024 +SET Key1025 Value1025 +SET Key1026 Value1026 +SET Key1027 Value1027 +SET Key1028 Value1028 +SET Key1029 Value1029 +SET Key1030 Value1030 +SET Key1031 Value1031 +SET Key1032 Value1032 +SET Key1033 Value1033 +SET Key1034 Value1034 +SET Key1035 Value1035 +SET Key1036 Value1036 +SET Key1037 Value1037 +SET Key1038 Value1038 +SET Key1039 Value1039 +SET Key1040 Value1040 +SET Key1041 Value1041 +SET Key1042 Value1042 +SET Key1043 Value1043 +SET Key1044 Value1044 +SET Key1045 Value1045 +SET Key1046 Value1046 +SET Key1047 Value1047 +SET Key1048 Value1048 +SET Key1049 Value1049 +SET Key1050 Value1050 +SET Key1051 Value1051 +SET Key1052 Value1052 +SET Key1053 Value1053 +SET Key1054 Value1054 +SET Key1055 Value1055 +SET Key1056 Value1056 +SET Key1057 Value1057 +SET Key1058 Value1058 +SET Key1059 Value1059 +SET Key1060 Value1060 +SET Key1061 Value1061 +SET Key1062 Value1062 +SET Key1063 Value1063 +SET Key1064 Value1064 +SET Key1065 Value1065 +SET Key1066 Value1066 +SET Key1067 Value1067 +SET Key1068 Value1068 +SET Key1069 Value1069 +SET Key1070 Value1070 +SET Key1071 Value1071 +SET Key1072 Value1072 +SET Key1073 Value1073 +SET Key1074 Value1074 +SET Key1075 Value1075 +SET Key1076 Value1076 +SET Key1077 Value1077 +SET Key1078 Value1078 +SET Key1079 Value1079 +SET Key1080 Value1080 +SET Key1081 Value1081 +SET Key1082 Value1082 +SET Key1083 Value1083 +SET Key1084 Value1084 +SET Key1085 Value1085 +SET Key1086 Value1086 +SET Key1087 Value1087 +SET Key1088 Value1088 +SET Key1089 Value1089 +SET Key1090 Value1090 +SET Key1091 Value1091 +SET Key1092 Value1092 +SET Key1093 Value1093 +SET Key1094 Value1094 +SET Key1095 Value1095 +SET Key1096 Value1096 +SET Key1097 Value1097 +SET Key1098 Value1098 +SET Key1099 Value1099 +SET Key1100 Value1100 +SET Key1101 Value1101 +SET Key1102 Value1102 +SET Key1103 Value1103 +SET Key1104 Value1104 +SET Key1105 Value1105 +SET Key1106 Value1106 +SET Key1107 Value1107 +SET Key1108 Value1108 +SET Key1109 Value1109 +SET Key1110 Value1110 +SET Key1111 Value1111 +SET Key1112 Value1112 +SET Key1113 Value1113 +SET Key1114 Value1114 +SET Key1115 Value1115 +SET Key1116 Value1116 +SET Key1117 Value1117 +SET Key1118 Value1118 +SET Key1119 Value1119 +SET Key1120 Value1120 +SET Key1121 Value1121 +SET Key1122 Value1122 +SET Key1123 Value1123 +SET Key1124 Value1124 +SET Key1125 Value1125 +SET Key1126 Value1126 +SET Key1127 Value1127 +SET Key1128 Value1128 +SET Key1129 Value1129 +SET Key1130 Value1130 +SET Key1131 Value1131 +SET Key1132 Value1132 +SET Key1133 Value1133 +SET Key1134 Value1134 +SET Key1135 Value1135 +SET Key1136 Value1136 +SET Key1137 Value1137 +SET Key1138 Value1138 +SET Key1139 Value1139 +SET Key1140 Value1140 +SET Key1141 Value1141 +SET Key1142 Value1142 +SET Key1143 Value1143 +SET Key1144 Value1144 +SET Key1145 Value1145 +SET Key1146 Value1146 +SET Key1147 Value1147 +SET Key1148 Value1148 +SET Key1149 Value1149 +SET Key1150 Value1150 +SET Key1151 Value1151 +SET Key1152 Value1152 +SET Key1153 Value1153 +SET Key1154 Value1154 +SET Key1155 Value1155 +SET Key1156 Value1156 +SET Key1157 Value1157 +SET Key1158 Value1158 +SET Key1159 Value1159 +SET Key1160 Value1160 +SET Key1161 Value1161 +SET Key1162 Value1162 +SET Key1163 Value1163 +SET Key1164 Value1164 +SET Key1165 Value1165 +SET Key1166 Value1166 +SET Key1167 Value1167 +SET Key1168 Value1168 +SET Key1169 Value1169 +SET Key1170 Value1170 +SET Key1171 Value1171 +SET Key1172 Value1172 +SET Key1173 Value1173 +SET Key1174 Value1174 +SET Key1175 Value1175 +SET Key1176 Value1176 +SET Key1177 Value1177 +SET Key1178 Value1178 +SET Key1179 Value1179 +SET Key1180 Value1180 +SET Key1181 Value1181 +SET Key1182 Value1182 +SET Key1183 Value1183 +SET Key1184 Value1184 +SET Key1185 Value1185 +SET Key1186 Value1186 +SET Key1187 Value1187 +SET Key1188 Value1188 +SET Key1189 Value1189 +SET Key1190 Value1190 +SET Key1191 Value1191 +SET Key1192 Value1192 +SET Key1193 Value1193 +SET Key1194 Value1194 +SET Key1195 Value1195 +SET Key1196 Value1196 +SET Key1197 Value1197 +SET Key1198 Value1198 +SET Key1199 Value1199 +SET Key1200 Value1200 +SET Key1201 Value1201 +SET Key1202 Value1202 +SET Key1203 Value1203 +SET Key1204 Value1204 +SET Key1205 Value1205 +SET Key1206 Value1206 +SET Key1207 Value1207 +SET Key1208 Value1208 +SET Key1209 Value1209 +SET Key1210 Value1210 +SET Key1211 Value1211 +SET Key1212 Value1212 +SET Key1213 Value1213 +SET Key1214 Value1214 +SET Key1215 Value1215 +SET Key1216 Value1216 +SET Key1217 Value1217 +SET Key1218 Value1218 +SET Key1219 Value1219 +SET Key1220 Value1220 +SET Key1221 Value1221 +SET Key1222 Value1222 +SET Key1223 Value1223 +SET Key1224 Value1224 +SET Key1225 Value1225 +SET Key1226 Value1226 +SET Key1227 Value1227 +SET Key1228 Value1228 +SET Key1229 Value1229 +SET Key1230 Value1230 +SET Key1231 Value1231 +SET Key1232 Value1232 +SET Key1233 Value1233 +SET Key1234 Value1234 +SET Key1235 Value1235 +SET Key1236 Value1236 +SET Key1237 Value1237 +SET Key1238 Value1238 +SET Key1239 Value1239 +SET Key1240 Value1240 +SET Key1241 Value1241 +SET Key1242 Value1242 +SET Key1243 Value1243 +SET Key1244 Value1244 +SET Key1245 Value1245 +SET Key1246 Value1246 +SET Key1247 Value1247 +SET Key1248 Value1248 +SET Key1249 Value1249 +SET Key1250 Value1250 +SET Key1251 Value1251 +SET Key1252 Value1252 +SET Key1253 Value1253 +SET Key1254 Value1254 +SET Key1255 Value1255 +SET Key1256 Value1256 +SET Key1257 Value1257 +SET Key1258 Value1258 +SET Key1259 Value1259 +SET Key1260 Value1260 +SET Key1261 Value1261 +SET Key1262 Value1262 +SET Key1263 Value1263 +SET Key1264 Value1264 +SET Key1265 Value1265 +SET Key1266 Value1266 +SET Key1267 Value1267 +SET Key1268 Value1268 +SET Key1269 Value1269 +SET Key1270 Value1270 +SET Key1271 Value1271 +SET Key1272 Value1272 +SET Key1273 Value1273 +SET Key1274 Value1274 +SET Key1275 Value1275 +SET Key1276 Value1276 +SET Key1277 Value1277 +SET Key1278 Value1278 +SET Key1279 Value1279 +SET Key1280 Value1280 +SET Key1281 Value1281 +SET Key1282 Value1282 +SET Key1283 Value1283 +SET Key1284 Value1284 +SET Key1285 Value1285 +SET Key1286 Value1286 +SET Key1287 Value1287 +SET Key1288 Value1288 +SET Key1289 Value1289 +SET Key1290 Value1290 +SET Key1291 Value1291 +SET Key1292 Value1292 +SET Key1293 Value1293 +SET Key1294 Value1294 +SET Key1295 Value1295 +SET Key1296 Value1296 +SET Key1297 Value1297 +SET Key1298 Value1298 +SET Key1299 Value1299 +SET Key1300 Value1300 +SET Key1301 Value1301 +SET Key1302 Value1302 +SET Key1303 Value1303 +SET Key1304 Value1304 +SET Key1305 Value1305 +SET Key1306 Value1306 +SET Key1307 Value1307 +SET Key1308 Value1308 +SET Key1309 Value1309 +SET Key1310 Value1310 +SET Key1311 Value1311 +SET Key1312 Value1312 +SET Key1313 Value1313 +SET Key1314 Value1314 +SET Key1315 Value1315 +SET Key1316 Value1316 +SET Key1317 Value1317 +SET Key1318 Value1318 +SET Key1319 Value1319 +SET Key1320 Value1320 +SET Key1321 Value1321 +SET Key1322 Value1322 +SET Key1323 Value1323 +SET Key1324 Value1324 +SET Key1325 Value1325 +SET Key1326 Value1326 +SET Key1327 Value1327 +SET Key1328 Value1328 +SET Key1329 Value1329 +SET Key1330 Value1330 +SET Key1331 Value1331 +SET Key1332 Value1332 +SET Key1333 Value1333 +SET Key1334 Value1334 +SET Key1335 Value1335 +SET Key1336 Value1336 +SET Key1337 Value1337 +SET Key1338 Value1338 +SET Key1339 Value1339 +SET Key1340 Value1340 +SET Key1341 Value1341 +SET Key1342 Value1342 +SET Key1343 Value1343 +SET Key1344 Value1344 +SET Key1345 Value1345 +SET Key1346 Value1346 +SET Key1347 Value1347 +SET Key1348 Value1348 +SET Key1349 Value1349 +SET Key1350 Value1350 +SET Key1351 Value1351 +SET Key1352 Value1352 +SET Key1353 Value1353 +SET Key1354 Value1354 +SET Key1355 Value1355 +SET Key1356 Value1356 +SET Key1357 Value1357 +SET Key1358 Value1358 +SET Key1359 Value1359 +SET Key1360 Value1360 +SET Key1361 Value1361 +SET Key1362 Value1362 +SET Key1363 Value1363 +SET Key1364 Value1364 +SET Key1365 Value1365 +SET Key1366 Value1366 +SET Key1367 Value1367 +SET Key1368 Value1368 +SET Key1369 Value1369 +SET Key1370 Value1370 +SET Key1371 Value1371 +SET Key1372 Value1372 +SET Key1373 Value1373 +SET Key1374 Value1374 +SET Key1375 Value1375 +SET Key1376 Value1376 +SET Key1377 Value1377 +SET Key1378 Value1378 +SET Key1379 Value1379 +SET Key1380 Value1380 +SET Key1381 Value1381 +SET Key1382 Value1382 +SET Key1383 Value1383 +SET Key1384 Value1384 +SET Key1385 Value1385 +SET Key1386 Value1386 +SET Key1387 Value1387 +SET Key1388 Value1388 +SET Key1389 Value1389 +SET Key1390 Value1390 +SET Key1391 Value1391 +SET Key1392 Value1392 +SET Key1393 Value1393 +SET Key1394 Value1394 +SET Key1395 Value1395 +SET Key1396 Value1396 +SET Key1397 Value1397 +SET Key1398 Value1398 +SET Key1399 Value1399 +SET Key1400 Value1400 +SET Key1401 Value1401 +SET Key1402 Value1402 +SET Key1403 Value1403 +SET Key1404 Value1404 +SET Key1405 Value1405 +SET Key1406 Value1406 +SET Key1407 Value1407 +SET Key1408 Value1408 +SET Key1409 Value1409 +SET Key1410 Value1410 +SET Key1411 Value1411 +SET Key1412 Value1412 +SET Key1413 Value1413 +SET Key1414 Value1414 +SET Key1415 Value1415 +SET Key1416 Value1416 +SET Key1417 Value1417 +SET Key1418 Value1418 +SET Key1419 Value1419 +SET Key1420 Value1420 +SET Key1421 Value1421 +SET Key1422 Value1422 +SET Key1423 Value1423 +SET Key1424 Value1424 +SET Key1425 Value1425 +SET Key1426 Value1426 +SET Key1427 Value1427 +SET Key1428 Value1428 +SET Key1429 Value1429 +SET Key1430 Value1430 +SET Key1431 Value1431 +SET Key1432 Value1432 +SET Key1433 Value1433 +SET Key1434 Value1434 +SET Key1435 Value1435 +SET Key1436 Value1436 +SET Key1437 Value1437 +SET Key1438 Value1438 +SET Key1439 Value1439 +SET Key1440 Value1440 +SET Key1441 Value1441 +SET Key1442 Value1442 +SET Key1443 Value1443 +SET Key1444 Value1444 +SET Key1445 Value1445 +SET Key1446 Value1446 +SET Key1447 Value1447 +SET Key1448 Value1448 +SET Key1449 Value1449 +SET Key1450 Value1450 +SET Key1451 Value1451 +SET Key1452 Value1452 +SET Key1453 Value1453 +SET Key1454 Value1454 +SET Key1455 Value1455 +SET Key1456 Value1456 +SET Key1457 Value1457 +SET Key1458 Value1458 +SET Key1459 Value1459 +SET Key1460 Value1460 +SET Key1461 Value1461 +SET Key1462 Value1462 +SET Key1463 Value1463 +SET Key1464 Value1464 +SET Key1465 Value1465 +SET Key1466 Value1466 +SET Key1467 Value1467 +SET Key1468 Value1468 +SET Key1469 Value1469 +SET Key1470 Value1470 +SET Key1471 Value1471 +SET Key1472 Value1472 +SET Key1473 Value1473 +SET Key1474 Value1474 +SET Key1475 Value1475 +SET Key1476 Value1476 +SET Key1477 Value1477 +SET Key1478 Value1478 +SET Key1479 Value1479 +SET Key1480 Value1480 +SET Key1481 Value1481 +SET Key1482 Value1482 +SET Key1483 Value1483 +SET Key1484 Value1484 +SET Key1485 Value1485 +SET Key1486 Value1486 +SET Key1487 Value1487 +SET Key1488 Value1488 +SET Key1489 Value1489 +SET Key1490 Value1490 +SET Key1491 Value1491 +SET Key1492 Value1492 +SET Key1493 Value1493 +SET Key1494 Value1494 +SET Key1495 Value1495 +SET Key1496 Value1496 +SET Key1497 Value1497 +SET Key1498 Value1498 +SET Key1499 Value1499 +SET Key1500 Value1500 +SET Key1501 Value1501 +SET Key1502 Value1502 +SET Key1503 Value1503 +SET Key1504 Value1504 +SET Key1505 Value1505 +SET Key1506 Value1506 +SET Key1507 Value1507 +SET Key1508 Value1508 +SET Key1509 Value1509 +SET Key1510 Value1510 +SET Key1511 Value1511 +SET Key1512 Value1512 +SET Key1513 Value1513 +SET Key1514 Value1514 +SET Key1515 Value1515 +SET Key1516 Value1516 +SET Key1517 Value1517 +SET Key1518 Value1518 +SET Key1519 Value1519 +SET Key1520 Value1520 +SET Key1521 Value1521 +SET Key1522 Value1522 +SET Key1523 Value1523 +SET Key1524 Value1524 +SET Key1525 Value1525 +SET Key1526 Value1526 +SET Key1527 Value1527 +SET Key1528 Value1528 +SET Key1529 Value1529 +SET Key1530 Value1530 +SET Key1531 Value1531 +SET Key1532 Value1532 +SET Key1533 Value1533 +SET Key1534 Value1534 +SET Key1535 Value1535 +SET Key1536 Value1536 +SET Key1537 Value1537 +SET Key1538 Value1538 +SET Key1539 Value1539 +SET Key1540 Value1540 +SET Key1541 Value1541 +SET Key1542 Value1542 +SET Key1543 Value1543 +SET Key1544 Value1544 +SET Key1545 Value1545 +SET Key1546 Value1546 +SET Key1547 Value1547 +SET Key1548 Value1548 +SET Key1549 Value1549 +SET Key1550 Value1550 +SET Key1551 Value1551 +SET Key1552 Value1552 +SET Key1553 Value1553 +SET Key1554 Value1554 +SET Key1555 Value1555 +SET Key1556 Value1556 +SET Key1557 Value1557 +SET Key1558 Value1558 +SET Key1559 Value1559 +SET Key1560 Value1560 +SET Key1561 Value1561 +SET Key1562 Value1562 +SET Key1563 Value1563 +SET Key1564 Value1564 +SET Key1565 Value1565 +SET Key1566 Value1566 +SET Key1567 Value1567 +SET Key1568 Value1568 +SET Key1569 Value1569 +SET Key1570 Value1570 +SET Key1571 Value1571 +SET Key1572 Value1572 +SET Key1573 Value1573 +SET Key1574 Value1574 +SET Key1575 Value1575 +SET Key1576 Value1576 +SET Key1577 Value1577 +SET Key1578 Value1578 +SET Key1579 Value1579 +SET Key1580 Value1580 +SET Key1581 Value1581 +SET Key1582 Value1582 +SET Key1583 Value1583 +SET Key1584 Value1584 +SET Key1585 Value1585 +SET Key1586 Value1586 +SET Key1587 Value1587 +SET Key1588 Value1588 +SET Key1589 Value1589 +SET Key1590 Value1590 +SET Key1591 Value1591 +SET Key1592 Value1592 +SET Key1593 Value1593 +SET Key1594 Value1594 +SET Key1595 Value1595 +SET Key1596 Value1596 +SET Key1597 Value1597 +SET Key1598 Value1598 +SET Key1599 Value1599 +SET Key1600 Value1600 +SET Key1601 Value1601 +SET Key1602 Value1602 +SET Key1603 Value1603 +SET Key1604 Value1604 +SET Key1605 Value1605 +SET Key1606 Value1606 +SET Key1607 Value1607 +SET Key1608 Value1608 +SET Key1609 Value1609 +SET Key1610 Value1610 +SET Key1611 Value1611 +SET Key1612 Value1612 +SET Key1613 Value1613 +SET Key1614 Value1614 +SET Key1615 Value1615 +SET Key1616 Value1616 +SET Key1617 Value1617 +SET Key1618 Value1618 +SET Key1619 Value1619 +SET Key1620 Value1620 +SET Key1621 Value1621 +SET Key1622 Value1622 +SET Key1623 Value1623 +SET Key1624 Value1624 +SET Key1625 Value1625 +SET Key1626 Value1626 +SET Key1627 Value1627 +SET Key1628 Value1628 +SET Key1629 Value1629 +SET Key1630 Value1630 +SET Key1631 Value1631 +SET Key1632 Value1632 +SET Key1633 Value1633 +SET Key1634 Value1634 +SET Key1635 Value1635 +SET Key1636 Value1636 +SET Key1637 Value1637 +SET Key1638 Value1638 +SET Key1639 Value1639 +SET Key1640 Value1640 +SET Key1641 Value1641 +SET Key1642 Value1642 +SET Key1643 Value1643 +SET Key1644 Value1644 +SET Key1645 Value1645 +SET Key1646 Value1646 +SET Key1647 Value1647 +SET Key1648 Value1648 +SET Key1649 Value1649 +SET Key1650 Value1650 +SET Key1651 Value1651 +SET Key1652 Value1652 +SET Key1653 Value1653 +SET Key1654 Value1654 +SET Key1655 Value1655 +SET Key1656 Value1656 +SET Key1657 Value1657 +SET Key1658 Value1658 +SET Key1659 Value1659 +SET Key1660 Value1660 +SET Key1661 Value1661 +SET Key1662 Value1662 +SET Key1663 Value1663 +SET Key1664 Value1664 +SET Key1665 Value1665 +SET Key1666 Value1666 +SET Key1667 Value1667 +SET Key1668 Value1668 +SET Key1669 Value1669 +SET Key1670 Value1670 +SET Key1671 Value1671 +SET Key1672 Value1672 +SET Key1673 Value1673 +SET Key1674 Value1674 +SET Key1675 Value1675 +SET Key1676 Value1676 +SET Key1677 Value1677 +SET Key1678 Value1678 +SET Key1679 Value1679 +SET Key1680 Value1680 +SET Key1681 Value1681 +SET Key1682 Value1682 +SET Key1683 Value1683 +SET Key1684 Value1684 +SET Key1685 Value1685 +SET Key1686 Value1686 +SET Key1687 Value1687 +SET Key1688 Value1688 +SET Key1689 Value1689 +SET Key1690 Value1690 +SET Key1691 Value1691 +SET Key1692 Value1692 +SET Key1693 Value1693 +SET Key1694 Value1694 +SET Key1695 Value1695 +SET Key1696 Value1696 +SET Key1697 Value1697 +SET Key1698 Value1698 +SET Key1699 Value1699 +SET Key1700 Value1700 +SET Key1701 Value1701 +SET Key1702 Value1702 +SET Key1703 Value1703 +SET Key1704 Value1704 +SET Key1705 Value1705 +SET Key1706 Value1706 +SET Key1707 Value1707 +SET Key1708 Value1708 +SET Key1709 Value1709 +SET Key1710 Value1710 +SET Key1711 Value1711 +SET Key1712 Value1712 +SET Key1713 Value1713 +SET Key1714 Value1714 +SET Key1715 Value1715 +SET Key1716 Value1716 +SET Key1717 Value1717 +SET Key1718 Value1718 +SET Key1719 Value1719 +SET Key1720 Value1720 +SET Key1721 Value1721 +SET Key1722 Value1722 +SET Key1723 Value1723 +SET Key1724 Value1724 +SET Key1725 Value1725 +SET Key1726 Value1726 +SET Key1727 Value1727 +SET Key1728 Value1728 +SET Key1729 Value1729 +SET Key1730 Value1730 +SET Key1731 Value1731 +SET Key1732 Value1732 +SET Key1733 Value1733 +SET Key1734 Value1734 +SET Key1735 Value1735 +SET Key1736 Value1736 +SET Key1737 Value1737 +SET Key1738 Value1738 +SET Key1739 Value1739 +SET Key1740 Value1740 +SET Key1741 Value1741 +SET Key1742 Value1742 +SET Key1743 Value1743 +SET Key1744 Value1744 +SET Key1745 Value1745 +SET Key1746 Value1746 +SET Key1747 Value1747 +SET Key1748 Value1748 +SET Key1749 Value1749 +SET Key1750 Value1750 +SET Key1751 Value1751 +SET Key1752 Value1752 +SET Key1753 Value1753 +SET Key1754 Value1754 +SET Key1755 Value1755 +SET Key1756 Value1756 +SET Key1757 Value1757 +SET Key1758 Value1758 +SET Key1759 Value1759 +SET Key1760 Value1760 +SET Key1761 Value1761 +SET Key1762 Value1762 +SET Key1763 Value1763 +SET Key1764 Value1764 +SET Key1765 Value1765 +SET Key1766 Value1766 +SET Key1767 Value1767 +SET Key1768 Value1768 +SET Key1769 Value1769 +SET Key1770 Value1770 +SET Key1771 Value1771 +SET Key1772 Value1772 +SET Key1773 Value1773 +SET Key1774 Value1774 +SET Key1775 Value1775 +SET Key1776 Value1776 +SET Key1777 Value1777 +SET Key1778 Value1778 +SET Key1779 Value1779 +SET Key1780 Value1780 +SET Key1781 Value1781 +SET Key1782 Value1782 +SET Key1783 Value1783 +SET Key1784 Value1784 +SET Key1785 Value1785 +SET Key1786 Value1786 +SET Key1787 Value1787 +SET Key1788 Value1788 +SET Key1789 Value1789 +SET Key1790 Value1790 +SET Key1791 Value1791 +SET Key1792 Value1792 +SET Key1793 Value1793 +SET Key1794 Value1794 +SET Key1795 Value1795 +SET Key1796 Value1796 +SET Key1797 Value1797 +SET Key1798 Value1798 +SET Key1799 Value1799 +SET Key1800 Value1800 +SET Key1801 Value1801 +SET Key1802 Value1802 +SET Key1803 Value1803 +SET Key1804 Value1804 +SET Key1805 Value1805 +SET Key1806 Value1806 +SET Key1807 Value1807 +SET Key1808 Value1808 +SET Key1809 Value1809 +SET Key1810 Value1810 +SET Key1811 Value1811 +SET Key1812 Value1812 +SET Key1813 Value1813 +SET Key1814 Value1814 +SET Key1815 Value1815 +SET Key1816 Value1816 +SET Key1817 Value1817 +SET Key1818 Value1818 +SET Key1819 Value1819 +SET Key1820 Value1820 +SET Key1821 Value1821 +SET Key1822 Value1822 +SET Key1823 Value1823 +SET Key1824 Value1824 +SET Key1825 Value1825 +SET Key1826 Value1826 +SET Key1827 Value1827 +SET Key1828 Value1828 +SET Key1829 Value1829 +SET Key1830 Value1830 +SET Key1831 Value1831 +SET Key1832 Value1832 +SET Key1833 Value1833 +SET Key1834 Value1834 +SET Key1835 Value1835 +SET Key1836 Value1836 +SET Key1837 Value1837 +SET Key1838 Value1838 +SET Key1839 Value1839 +SET Key1840 Value1840 +SET Key1841 Value1841 +SET Key1842 Value1842 +SET Key1843 Value1843 +SET Key1844 Value1844 +SET Key1845 Value1845 +SET Key1846 Value1846 +SET Key1847 Value1847 +SET Key1848 Value1848 +SET Key1849 Value1849 +SET Key1850 Value1850 +SET Key1851 Value1851 +SET Key1852 Value1852 +SET Key1853 Value1853 +SET Key1854 Value1854 +SET Key1855 Value1855 +SET Key1856 Value1856 +SET Key1857 Value1857 +SET Key1858 Value1858 +SET Key1859 Value1859 +SET Key1860 Value1860 +SET Key1861 Value1861 +SET Key1862 Value1862 +SET Key1863 Value1863 +SET Key1864 Value1864 +SET Key1865 Value1865 +SET Key1866 Value1866 +SET Key1867 Value1867 +SET Key1868 Value1868 +SET Key1869 Value1869 +SET Key1870 Value1870 +SET Key1871 Value1871 +SET Key1872 Value1872 +SET Key1873 Value1873 +SET Key1874 Value1874 +SET Key1875 Value1875 +SET Key1876 Value1876 +SET Key1877 Value1877 +SET Key1878 Value1878 +SET Key1879 Value1879 +SET Key1880 Value1880 +SET Key1881 Value1881 +SET Key1882 Value1882 +SET Key1883 Value1883 +SET Key1884 Value1884 +SET Key1885 Value1885 +SET Key1886 Value1886 +SET Key1887 Value1887 +SET Key1888 Value1888 +SET Key1889 Value1889 +SET Key1890 Value1890 +SET Key1891 Value1891 +SET Key1892 Value1892 +SET Key1893 Value1893 +SET Key1894 Value1894 +SET Key1895 Value1895 +SET Key1896 Value1896 +SET Key1897 Value1897 +SET Key1898 Value1898 +SET Key1899 Value1899 +SET Key1900 Value1900 +SET Key1901 Value1901 +SET Key1902 Value1902 +SET Key1903 Value1903 +SET Key1904 Value1904 +SET Key1905 Value1905 +SET Key1906 Value1906 +SET Key1907 Value1907 +SET Key1908 Value1908 +SET Key1909 Value1909 +SET Key1910 Value1910 +SET Key1911 Value1911 +SET Key1912 Value1912 +SET Key1913 Value1913 +SET Key1914 Value1914 +SET Key1915 Value1915 +SET Key1916 Value1916 +SET Key1917 Value1917 +SET Key1918 Value1918 +SET Key1919 Value1919 +SET Key1920 Value1920 +SET Key1921 Value1921 +SET Key1922 Value1922 +SET Key1923 Value1923 +SET Key1924 Value1924 +SET Key1925 Value1925 +SET Key1926 Value1926 +SET Key1927 Value1927 +SET Key1928 Value1928 +SET Key1929 Value1929 +SET Key1930 Value1930 +SET Key1931 Value1931 +SET Key1932 Value1932 +SET Key1933 Value1933 +SET Key1934 Value1934 +SET Key1935 Value1935 +SET Key1936 Value1936 +SET Key1937 Value1937 +SET Key1938 Value1938 +SET Key1939 Value1939 +SET Key1940 Value1940 +SET Key1941 Value1941 +SET Key1942 Value1942 +SET Key1943 Value1943 +SET Key1944 Value1944 +SET Key1945 Value1945 +SET Key1946 Value1946 +SET Key1947 Value1947 +SET Key1948 Value1948 +SET Key1949 Value1949 +SET Key1950 Value1950 +SET Key1951 Value1951 +SET Key1952 Value1952 +SET Key1953 Value1953 +SET Key1954 Value1954 +SET Key1955 Value1955 +SET Key1956 Value1956 +SET Key1957 Value1957 +SET Key1958 Value1958 +SET Key1959 Value1959 +SET Key1960 Value1960 +SET Key1961 Value1961 +SET Key1962 Value1962 +SET Key1963 Value1963 +SET Key1964 Value1964 +SET Key1965 Value1965 +SET Key1966 Value1966 +SET Key1967 Value1967 +SET Key1968 Value1968 +SET Key1969 Value1969 +SET Key1970 Value1970 +SET Key1971 Value1971 +SET Key1972 Value1972 +SET Key1973 Value1973 +SET Key1974 Value1974 +SET Key1975 Value1975 +SET Key1976 Value1976 +SET Key1977 Value1977 +SET Key1978 Value1978 +SET Key1979 Value1979 +SET Key1980 Value1980 +SET Key1981 Value1981 +SET Key1982 Value1982 +SET Key1983 Value1983 +SET Key1984 Value1984 +SET Key1985 Value1985 +SET Key1986 Value1986 +SET Key1987 Value1987 +SET Key1988 Value1988 +SET Key1989 Value1989 +SET Key1990 Value1990 +SET Key1991 Value1991 +SET Key1992 Value1992 +SET Key1993 Value1993 +SET Key1994 Value1994 +SET Key1995 Value1995 +SET Key1996 Value1996 +SET Key1997 Value1997 +SET Key1998 Value1998 +SET Key1999 Value1999 +SET Key2000 Value2000 +SET Key2001 Value2001 +SET Key2002 Value2002 +SET Key2003 Value2003 +SET Key2004 Value2004 +SET Key2005 Value2005 +SET Key2006 Value2006 +SET Key2007 Value2007 +SET Key2008 Value2008 +SET Key2009 Value2009 +SET Key2010 Value2010 +SET Key2011 Value2011 +SET Key2012 Value2012 +SET Key2013 Value2013 +SET Key2014 Value2014 +SET Key2015 Value2015 +SET Key2016 Value2016 +SET Key2017 Value2017 +SET Key2018 Value2018 +SET Key2019 Value2019 +SET Key2020 Value2020 +SET Key2021 Value2021 +SET Key2022 Value2022 +SET Key2023 Value2023 +SET Key2024 Value2024 +SET Key2025 Value2025 +SET Key2026 Value2026 +SET Key2027 Value2027 +SET Key2028 Value2028 +SET Key2029 Value2029 +SET Key2030 Value2030 +SET Key2031 Value2031 +SET Key2032 Value2032 +SET Key2033 Value2033 +SET Key2034 Value2034 +SET Key2035 Value2035 +SET Key2036 Value2036 +SET Key2037 Value2037 +SET Key2038 Value2038 +SET Key2039 Value2039 +SET Key2040 Value2040 +SET Key2041 Value2041 +SET Key2042 Value2042 +SET Key2043 Value2043 +SET Key2044 Value2044 +SET Key2045 Value2045 +SET Key2046 Value2046 +SET Key2047 Value2047 +SET Key2048 Value2048 +SET Key2049 Value2049 +SET Key2050 Value2050 +SET Key2051 Value2051 +SET Key2052 Value2052 +SET Key2053 Value2053 +SET Key2054 Value2054 +SET Key2055 Value2055 +SET Key2056 Value2056 +SET Key2057 Value2057 +SET Key2058 Value2058 +SET Key2059 Value2059 +SET Key2060 Value2060 +SET Key2061 Value2061 +SET Key2062 Value2062 +SET Key2063 Value2063 +SET Key2064 Value2064 +SET Key2065 Value2065 +SET Key2066 Value2066 +SET Key2067 Value2067 +SET Key2068 Value2068 +SET Key2069 Value2069 +SET Key2070 Value2070 +SET Key2071 Value2071 +SET Key2072 Value2072 +SET Key2073 Value2073 +SET Key2074 Value2074 +SET Key2075 Value2075 +SET Key2076 Value2076 +SET Key2077 Value2077 +SET Key2078 Value2078 +SET Key2079 Value2079 +SET Key2080 Value2080 +SET Key2081 Value2081 +SET Key2082 Value2082 +SET Key2083 Value2083 +SET Key2084 Value2084 +SET Key2085 Value2085 +SET Key2086 Value2086 +SET Key2087 Value2087 +SET Key2088 Value2088 +SET Key2089 Value2089 +SET Key2090 Value2090 +SET Key2091 Value2091 +SET Key2092 Value2092 +SET Key2093 Value2093 +SET Key2094 Value2094 +SET Key2095 Value2095 +SET Key2096 Value2096 +SET Key2097 Value2097 +SET Key2098 Value2098 +SET Key2099 Value2099 +SET Key2100 Value2100 +SET Key2101 Value2101 +SET Key2102 Value2102 +SET Key2103 Value2103 +SET Key2104 Value2104 +SET Key2105 Value2105 +SET Key2106 Value2106 +SET Key2107 Value2107 +SET Key2108 Value2108 +SET Key2109 Value2109 +SET Key2110 Value2110 +SET Key2111 Value2111 +SET Key2112 Value2112 +SET Key2113 Value2113 +SET Key2114 Value2114 +SET Key2115 Value2115 +SET Key2116 Value2116 +SET Key2117 Value2117 +SET Key2118 Value2118 +SET Key2119 Value2119 +SET Key2120 Value2120 +SET Key2121 Value2121 +SET Key2122 Value2122 +SET Key2123 Value2123 +SET Key2124 Value2124 +SET Key2125 Value2125 +SET Key2126 Value2126 +SET Key2127 Value2127 +SET Key2128 Value2128 +SET Key2129 Value2129 +SET Key2130 Value2130 +SET Key2131 Value2131 +SET Key2132 Value2132 +SET Key2133 Value2133 +SET Key2134 Value2134 +SET Key2135 Value2135 +SET Key2136 Value2136 +SET Key2137 Value2137 +SET Key2138 Value2138 +SET Key2139 Value2139 +SET Key2140 Value2140 +SET Key2141 Value2141 +SET Key2142 Value2142 +SET Key2143 Value2143 +SET Key2144 Value2144 +SET Key2145 Value2145 +SET Key2146 Value2146 +SET Key2147 Value2147 +SET Key2148 Value2148 +SET Key2149 Value2149 +SET Key2150 Value2150 +SET Key2151 Value2151 +SET Key2152 Value2152 +SET Key2153 Value2153 +SET Key2154 Value2154 +SET Key2155 Value2155 +SET Key2156 Value2156 +SET Key2157 Value2157 +SET Key2158 Value2158 +SET Key2159 Value2159 +SET Key2160 Value2160 +SET Key2161 Value2161 +SET Key2162 Value2162 +SET Key2163 Value2163 +SET Key2164 Value2164 +SET Key2165 Value2165 +SET Key2166 Value2166 +SET Key2167 Value2167 +SET Key2168 Value2168 +SET Key2169 Value2169 +SET Key2170 Value2170 +SET Key2171 Value2171 +SET Key2172 Value2172 +SET Key2173 Value2173 +SET Key2174 Value2174 +SET Key2175 Value2175 +SET Key2176 Value2176 +SET Key2177 Value2177 +SET Key2178 Value2178 +SET Key2179 Value2179 +SET Key2180 Value2180 +SET Key2181 Value2181 +SET Key2182 Value2182 +SET Key2183 Value2183 +SET Key2184 Value2184 +SET Key2185 Value2185 +SET Key2186 Value2186 +SET Key2187 Value2187 +SET Key2188 Value2188 +SET Key2189 Value2189 +SET Key2190 Value2190 +SET Key2191 Value2191 +SET Key2192 Value2192 +SET Key2193 Value2193 +SET Key2194 Value2194 +SET Key2195 Value2195 +SET Key2196 Value2196 +SET Key2197 Value2197 +SET Key2198 Value2198 +SET Key2199 Value2199 +SET Key2200 Value2200 +SET Key2201 Value2201 +SET Key2202 Value2202 +SET Key2203 Value2203 +SET Key2204 Value2204 +SET Key2205 Value2205 +SET Key2206 Value2206 +SET Key2207 Value2207 +SET Key2208 Value2208 +SET Key2209 Value2209 +SET Key2210 Value2210 +SET Key2211 Value2211 +SET Key2212 Value2212 +SET Key2213 Value2213 +SET Key2214 Value2214 +SET Key2215 Value2215 +SET Key2216 Value2216 +SET Key2217 Value2217 +SET Key2218 Value2218 +SET Key2219 Value2219 +SET Key2220 Value2220 +SET Key2221 Value2221 +SET Key2222 Value2222 +SET Key2223 Value2223 +SET Key2224 Value2224 +SET Key2225 Value2225 +SET Key2226 Value2226 +SET Key2227 Value2227 +SET Key2228 Value2228 +SET Key2229 Value2229 +SET Key2230 Value2230 +SET Key2231 Value2231 +SET Key2232 Value2232 +SET Key2233 Value2233 +SET Key2234 Value2234 +SET Key2235 Value2235 +SET Key2236 Value2236 +SET Key2237 Value2237 +SET Key2238 Value2238 +SET Key2239 Value2239 +SET Key2240 Value2240 +SET Key2241 Value2241 +SET Key2242 Value2242 +SET Key2243 Value2243 +SET Key2244 Value2244 +SET Key2245 Value2245 +SET Key2246 Value2246 +SET Key2247 Value2247 +SET Key2248 Value2248 +SET Key2249 Value2249 +SET Key2250 Value2250 +SET Key2251 Value2251 +SET Key2252 Value2252 +SET Key2253 Value2253 +SET Key2254 Value2254 +SET Key2255 Value2255 +SET Key2256 Value2256 +SET Key2257 Value2257 +SET Key2258 Value2258 +SET Key2259 Value2259 +SET Key2260 Value2260 +SET Key2261 Value2261 +SET Key2262 Value2262 +SET Key2263 Value2263 +SET Key2264 Value2264 +SET Key2265 Value2265 +SET Key2266 Value2266 +SET Key2267 Value2267 +SET Key2268 Value2268 +SET Key2269 Value2269 +SET Key2270 Value2270 +SET Key2271 Value2271 +SET Key2272 Value2272 +SET Key2273 Value2273 +SET Key2274 Value2274 +SET Key2275 Value2275 +SET Key2276 Value2276 +SET Key2277 Value2277 +SET Key2278 Value2278 +SET Key2279 Value2279 +SET Key2280 Value2280 +SET Key2281 Value2281 +SET Key2282 Value2282 +SET Key2283 Value2283 +SET Key2284 Value2284 +SET Key2285 Value2285 +SET Key2286 Value2286 +SET Key2287 Value2287 +SET Key2288 Value2288 +SET Key2289 Value2289 +SET Key2290 Value2290 +SET Key2291 Value2291 +SET Key2292 Value2292 +SET Key2293 Value2293 +SET Key2294 Value2294 +SET Key2295 Value2295 +SET Key2296 Value2296 +SET Key2297 Value2297 +SET Key2298 Value2298 +SET Key2299 Value2299 +SET Key2300 Value2300 +SET Key2301 Value2301 +SET Key2302 Value2302 +SET Key2303 Value2303 +SET Key2304 Value2304 +SET Key2305 Value2305 +SET Key2306 Value2306 +SET Key2307 Value2307 +SET Key2308 Value2308 +SET Key2309 Value2309 +SET Key2310 Value2310 +SET Key2311 Value2311 +SET Key2312 Value2312 +SET Key2313 Value2313 +SET Key2314 Value2314 +SET Key2315 Value2315 +SET Key2316 Value2316 +SET Key2317 Value2317 +SET Key2318 Value2318 +SET Key2319 Value2319 +SET Key2320 Value2320 +SET Key2321 Value2321 +SET Key2322 Value2322 +SET Key2323 Value2323 +SET Key2324 Value2324 +SET Key2325 Value2325 +SET Key2326 Value2326 +SET Key2327 Value2327 +SET Key2328 Value2328 +SET Key2329 Value2329 +SET Key2330 Value2330 +SET Key2331 Value2331 +SET Key2332 Value2332 +SET Key2333 Value2333 +SET Key2334 Value2334 +SET Key2335 Value2335 +SET Key2336 Value2336 +SET Key2337 Value2337 +SET Key2338 Value2338 +SET Key2339 Value2339 +SET Key2340 Value2340 +SET Key2341 Value2341 +SET Key2342 Value2342 +SET Key2343 Value2343 +SET Key2344 Value2344 +SET Key2345 Value2345 +SET Key2346 Value2346 +SET Key2347 Value2347 +SET Key2348 Value2348 +SET Key2349 Value2349 +SET Key2350 Value2350 +SET Key2351 Value2351 +SET Key2352 Value2352 +SET Key2353 Value2353 +SET Key2354 Value2354 +SET Key2355 Value2355 +SET Key2356 Value2356 +SET Key2357 Value2357 +SET Key2358 Value2358 +SET Key2359 Value2359 +SET Key2360 Value2360 +SET Key2361 Value2361 +SET Key2362 Value2362 +SET Key2363 Value2363 +SET Key2364 Value2364 +SET Key2365 Value2365 +SET Key2366 Value2366 +SET Key2367 Value2367 +SET Key2368 Value2368 +SET Key2369 Value2369 +SET Key2370 Value2370 +SET Key2371 Value2371 +SET Key2372 Value2372 +SET Key2373 Value2373 +SET Key2374 Value2374 +SET Key2375 Value2375 +SET Key2376 Value2376 +SET Key2377 Value2377 +SET Key2378 Value2378 +SET Key2379 Value2379 +SET Key2380 Value2380 +SET Key2381 Value2381 +SET Key2382 Value2382 +SET Key2383 Value2383 +SET Key2384 Value2384 +SET Key2385 Value2385 +SET Key2386 Value2386 +SET Key2387 Value2387 +SET Key2388 Value2388 +SET Key2389 Value2389 +SET Key2390 Value2390 +SET Key2391 Value2391 +SET Key2392 Value2392 +SET Key2393 Value2393 +SET Key2394 Value2394 +SET Key2395 Value2395 +SET Key2396 Value2396 +SET Key2397 Value2397 +SET Key2398 Value2398 +SET Key2399 Value2399 +SET Key2400 Value2400 +SET Key2401 Value2401 +SET Key2402 Value2402 +SET Key2403 Value2403 +SET Key2404 Value2404 +SET Key2405 Value2405 +SET Key2406 Value2406 +SET Key2407 Value2407 +SET Key2408 Value2408 +SET Key2409 Value2409 +SET Key2410 Value2410 +SET Key2411 Value2411 +SET Key2412 Value2412 +SET Key2413 Value2413 +SET Key2414 Value2414 +SET Key2415 Value2415 +SET Key2416 Value2416 +SET Key2417 Value2417 +SET Key2418 Value2418 +SET Key2419 Value2419 +SET Key2420 Value2420 +SET Key2421 Value2421 +SET Key2422 Value2422 +SET Key2423 Value2423 +SET Key2424 Value2424 +SET Key2425 Value2425 +SET Key2426 Value2426 +SET Key2427 Value2427 +SET Key2428 Value2428 +SET Key2429 Value2429 +SET Key2430 Value2430 +SET Key2431 Value2431 +SET Key2432 Value2432 +SET Key2433 Value2433 +SET Key2434 Value2434 +SET Key2435 Value2435 +SET Key2436 Value2436 +SET Key2437 Value2437 +SET Key2438 Value2438 +SET Key2439 Value2439 +SET Key2440 Value2440 +SET Key2441 Value2441 +SET Key2442 Value2442 +SET Key2443 Value2443 +SET Key2444 Value2444 +SET Key2445 Value2445 +SET Key2446 Value2446 +SET Key2447 Value2447 +SET Key2448 Value2448 +SET Key2449 Value2449 +SET Key2450 Value2450 +SET Key2451 Value2451 +SET Key2452 Value2452 +SET Key2453 Value2453 +SET Key2454 Value2454 +SET Key2455 Value2455 +SET Key2456 Value2456 +SET Key2457 Value2457 +SET Key2458 Value2458 +SET Key2459 Value2459 +SET Key2460 Value2460 +SET Key2461 Value2461 +SET Key2462 Value2462 +SET Key2463 Value2463 +SET Key2464 Value2464 +SET Key2465 Value2465 +SET Key2466 Value2466 +SET Key2467 Value2467 +SET Key2468 Value2468 +SET Key2469 Value2469 +SET Key2470 Value2470 +SET Key2471 Value2471 +SET Key2472 Value2472 +SET Key2473 Value2473 +SET Key2474 Value2474 +SET Key2475 Value2475 +SET Key2476 Value2476 +SET Key2477 Value2477 +SET Key2478 Value2478 +SET Key2479 Value2479 +SET Key2480 Value2480 +SET Key2481 Value2481 +SET Key2482 Value2482 +SET Key2483 Value2483 +SET Key2484 Value2484 +SET Key2485 Value2485 +SET Key2486 Value2486 +SET Key2487 Value2487 +SET Key2488 Value2488 +SET Key2489 Value2489 +SET Key2490 Value2490 +SET Key2491 Value2491 +SET Key2492 Value2492 +SET Key2493 Value2493 +SET Key2494 Value2494 +SET Key2495 Value2495 +SET Key2496 Value2496 +SET Key2497 Value2497 +SET Key2498 Value2498 +SET Key2499 Value2499 +SET Key2500 Value2500 +SET Key2501 Value2501 +SET Key2502 Value2502 +SET Key2503 Value2503 +SET Key2504 Value2504 +SET Key2505 Value2505 +SET Key2506 Value2506 +SET Key2507 Value2507 +SET Key2508 Value2508 +SET Key2509 Value2509 +SET Key2510 Value2510 +SET Key2511 Value2511 +SET Key2512 Value2512 +SET Key2513 Value2513 +SET Key2514 Value2514 +SET Key2515 Value2515 +SET Key2516 Value2516 +SET Key2517 Value2517 +SET Key2518 Value2518 +SET Key2519 Value2519 +SET Key2520 Value2520 +SET Key2521 Value2521 +SET Key2522 Value2522 +SET Key2523 Value2523 +SET Key2524 Value2524 +SET Key2525 Value2525 +SET Key2526 Value2526 +SET Key2527 Value2527 +SET Key2528 Value2528 +SET Key2529 Value2529 +SET Key2530 Value2530 +SET Key2531 Value2531 +SET Key2532 Value2532 +SET Key2533 Value2533 +SET Key2534 Value2534 +SET Key2535 Value2535 +SET Key2536 Value2536 +SET Key2537 Value2537 +SET Key2538 Value2538 +SET Key2539 Value2539 +SET Key2540 Value2540 +SET Key2541 Value2541 +SET Key2542 Value2542 +SET Key2543 Value2543 +SET Key2544 Value2544 +SET Key2545 Value2545 +SET Key2546 Value2546 +SET Key2547 Value2547 +SET Key2548 Value2548 +SET Key2549 Value2549 +SET Key2550 Value2550 +SET Key2551 Value2551 +SET Key2552 Value2552 +SET Key2553 Value2553 +SET Key2554 Value2554 +SET Key2555 Value2555 +SET Key2556 Value2556 +SET Key2557 Value2557 +SET Key2558 Value2558 +SET Key2559 Value2559 +SET Key2560 Value2560 +SET Key2561 Value2561 +SET Key2562 Value2562 +SET Key2563 Value2563 +SET Key2564 Value2564 +SET Key2565 Value2565 +SET Key2566 Value2566 +SET Key2567 Value2567 +SET Key2568 Value2568 +SET Key2569 Value2569 +SET Key2570 Value2570 +SET Key2571 Value2571 +SET Key2572 Value2572 +SET Key2573 Value2573 +SET Key2574 Value2574 +SET Key2575 Value2575 +SET Key2576 Value2576 +SET Key2577 Value2577 +SET Key2578 Value2578 +SET Key2579 Value2579 +SET Key2580 Value2580 +SET Key2581 Value2581 +SET Key2582 Value2582 +SET Key2583 Value2583 +SET Key2584 Value2584 +SET Key2585 Value2585 +SET Key2586 Value2586 +SET Key2587 Value2587 +SET Key2588 Value2588 +SET Key2589 Value2589 +SET Key2590 Value2590 +SET Key2591 Value2591 +SET Key2592 Value2592 +SET Key2593 Value2593 +SET Key2594 Value2594 +SET Key2595 Value2595 +SET Key2596 Value2596 +SET Key2597 Value2597 +SET Key2598 Value2598 +SET Key2599 Value2599 +SET Key2600 Value2600 +SET Key2601 Value2601 +SET Key2602 Value2602 +SET Key2603 Value2603 +SET Key2604 Value2604 +SET Key2605 Value2605 +SET Key2606 Value2606 +SET Key2607 Value2607 +SET Key2608 Value2608 +SET Key2609 Value2609 +SET Key2610 Value2610 +SET Key2611 Value2611 +SET Key2612 Value2612 +SET Key2613 Value2613 +SET Key2614 Value2614 +SET Key2615 Value2615 +SET Key2616 Value2616 +SET Key2617 Value2617 +SET Key2618 Value2618 +SET Key2619 Value2619 +SET Key2620 Value2620 +SET Key2621 Value2621 +SET Key2622 Value2622 +SET Key2623 Value2623 +SET Key2624 Value2624 +SET Key2625 Value2625 +SET Key2626 Value2626 +SET Key2627 Value2627 +SET Key2628 Value2628 +SET Key2629 Value2629 +SET Key2630 Value2630 +SET Key2631 Value2631 +SET Key2632 Value2632 +SET Key2633 Value2633 +SET Key2634 Value2634 +SET Key2635 Value2635 +SET Key2636 Value2636 +SET Key2637 Value2637 +SET Key2638 Value2638 +SET Key2639 Value2639 +SET Key2640 Value2640 +SET Key2641 Value2641 +SET Key2642 Value2642 +SET Key2643 Value2643 +SET Key2644 Value2644 +SET Key2645 Value2645 +SET Key2646 Value2646 +SET Key2647 Value2647 +SET Key2648 Value2648 +SET Key2649 Value2649 +SET Key2650 Value2650 +SET Key2651 Value2651 +SET Key2652 Value2652 +SET Key2653 Value2653 +SET Key2654 Value2654 +SET Key2655 Value2655 +SET Key2656 Value2656 +SET Key2657 Value2657 +SET Key2658 Value2658 +SET Key2659 Value2659 +SET Key2660 Value2660 +SET Key2661 Value2661 +SET Key2662 Value2662 +SET Key2663 Value2663 +SET Key2664 Value2664 +SET Key2665 Value2665 +SET Key2666 Value2666 +SET Key2667 Value2667 +SET Key2668 Value2668 +SET Key2669 Value2669 +SET Key2670 Value2670 +SET Key2671 Value2671 +SET Key2672 Value2672 +SET Key2673 Value2673 +SET Key2674 Value2674 +SET Key2675 Value2675 +SET Key2676 Value2676 +SET Key2677 Value2677 +SET Key2678 Value2678 +SET Key2679 Value2679 +SET Key2680 Value2680 +SET Key2681 Value2681 +SET Key2682 Value2682 +SET Key2683 Value2683 +SET Key2684 Value2684 +SET Key2685 Value2685 +SET Key2686 Value2686 +SET Key2687 Value2687 +SET Key2688 Value2688 +SET Key2689 Value2689 +SET Key2690 Value2690 +SET Key2691 Value2691 +SET Key2692 Value2692 +SET Key2693 Value2693 +SET Key2694 Value2694 +SET Key2695 Value2695 +SET Key2696 Value2696 +SET Key2697 Value2697 +SET Key2698 Value2698 +SET Key2699 Value2699 +SET Key2700 Value2700 +SET Key2701 Value2701 +SET Key2702 Value2702 +SET Key2703 Value2703 +SET Key2704 Value2704 +SET Key2705 Value2705 +SET Key2706 Value2706 +SET Key2707 Value2707 +SET Key2708 Value2708 +SET Key2709 Value2709 +SET Key2710 Value2710 +SET Key2711 Value2711 +SET Key2712 Value2712 +SET Key2713 Value2713 +SET Key2714 Value2714 +SET Key2715 Value2715 +SET Key2716 Value2716 +SET Key2717 Value2717 +SET Key2718 Value2718 +SET Key2719 Value2719 +SET Key2720 Value2720 +SET Key2721 Value2721 +SET Key2722 Value2722 +SET Key2723 Value2723 +SET Key2724 Value2724 +SET Key2725 Value2725 +SET Key2726 Value2726 +SET Key2727 Value2727 +SET Key2728 Value2728 +SET Key2729 Value2729 +SET Key2730 Value2730 +SET Key2731 Value2731 +SET Key2732 Value2732 +SET Key2733 Value2733 +SET Key2734 Value2734 +SET Key2735 Value2735 +SET Key2736 Value2736 +SET Key2737 Value2737 +SET Key2738 Value2738 +SET Key2739 Value2739 +SET Key2740 Value2740 +SET Key2741 Value2741 +SET Key2742 Value2742 +SET Key2743 Value2743 +SET Key2744 Value2744 +SET Key2745 Value2745 +SET Key2746 Value2746 +SET Key2747 Value2747 +SET Key2748 Value2748 +SET Key2749 Value2749 +SET Key2750 Value2750 +SET Key2751 Value2751 +SET Key2752 Value2752 +SET Key2753 Value2753 +SET Key2754 Value2754 +SET Key2755 Value2755 +SET Key2756 Value2756 +SET Key2757 Value2757 +SET Key2758 Value2758 +SET Key2759 Value2759 +SET Key2760 Value2760 +SET Key2761 Value2761 +SET Key2762 Value2762 +SET Key2763 Value2763 +SET Key2764 Value2764 +SET Key2765 Value2765 +SET Key2766 Value2766 +SET Key2767 Value2767 +SET Key2768 Value2768 +SET Key2769 Value2769 +SET Key2770 Value2770 +SET Key2771 Value2771 +SET Key2772 Value2772 +SET Key2773 Value2773 +SET Key2774 Value2774 +SET Key2775 Value2775 +SET Key2776 Value2776 +SET Key2777 Value2777 +SET Key2778 Value2778 +SET Key2779 Value2779 +SET Key2780 Value2780 +SET Key2781 Value2781 +SET Key2782 Value2782 +SET Key2783 Value2783 +SET Key2784 Value2784 +SET Key2785 Value2785 +SET Key2786 Value2786 +SET Key2787 Value2787 +SET Key2788 Value2788 +SET Key2789 Value2789 +SET Key2790 Value2790 +SET Key2791 Value2791 +SET Key2792 Value2792 +SET Key2793 Value2793 +SET Key2794 Value2794 +SET Key2795 Value2795 +SET Key2796 Value2796 +SET Key2797 Value2797 +SET Key2798 Value2798 +SET Key2799 Value2799 +SET Key2800 Value2800 +SET Key2801 Value2801 +SET Key2802 Value2802 +SET Key2803 Value2803 +SET Key2804 Value2804 +SET Key2805 Value2805 +SET Key2806 Value2806 +SET Key2807 Value2807 +SET Key2808 Value2808 +SET Key2809 Value2809 +SET Key2810 Value2810 +SET Key2811 Value2811 +SET Key2812 Value2812 +SET Key2813 Value2813 +SET Key2814 Value2814 +SET Key2815 Value2815 +SET Key2816 Value2816 +SET Key2817 Value2817 +SET Key2818 Value2818 +SET Key2819 Value2819 +SET Key2820 Value2820 +SET Key2821 Value2821 +SET Key2822 Value2822 +SET Key2823 Value2823 +SET Key2824 Value2824 +SET Key2825 Value2825 +SET Key2826 Value2826 +SET Key2827 Value2827 +SET Key2828 Value2828 +SET Key2829 Value2829 +SET Key2830 Value2830 +SET Key2831 Value2831 +SET Key2832 Value2832 +SET Key2833 Value2833 +SET Key2834 Value2834 +SET Key2835 Value2835 +SET Key2836 Value2836 +SET Key2837 Value2837 +SET Key2838 Value2838 +SET Key2839 Value2839 +SET Key2840 Value2840 +SET Key2841 Value2841 +SET Key2842 Value2842 +SET Key2843 Value2843 +SET Key2844 Value2844 +SET Key2845 Value2845 +SET Key2846 Value2846 +SET Key2847 Value2847 +SET Key2848 Value2848 +SET Key2849 Value2849 +SET Key2850 Value2850 +SET Key2851 Value2851 +SET Key2852 Value2852 +SET Key2853 Value2853 +SET Key2854 Value2854 +SET Key2855 Value2855 +SET Key2856 Value2856 +SET Key2857 Value2857 +SET Key2858 Value2858 +SET Key2859 Value2859 +SET Key2860 Value2860 +SET Key2861 Value2861 +SET Key2862 Value2862 +SET Key2863 Value2863 +SET Key2864 Value2864 +SET Key2865 Value2865 +SET Key2866 Value2866 +SET Key2867 Value2867 +SET Key2868 Value2868 +SET Key2869 Value2869 +SET Key2870 Value2870 +SET Key2871 Value2871 +SET Key2872 Value2872 +SET Key2873 Value2873 +SET Key2874 Value2874 +SET Key2875 Value2875 +SET Key2876 Value2876 +SET Key2877 Value2877 +SET Key2878 Value2878 +SET Key2879 Value2879 +SET Key2880 Value2880 +SET Key2881 Value2881 +SET Key2882 Value2882 +SET Key2883 Value2883 +SET Key2884 Value2884 +SET Key2885 Value2885 +SET Key2886 Value2886 +SET Key2887 Value2887 +SET Key2888 Value2888 +SET Key2889 Value2889 +SET Key2890 Value2890 +SET Key2891 Value2891 +SET Key2892 Value2892 +SET Key2893 Value2893 +SET Key2894 Value2894 +SET Key2895 Value2895 +SET Key2896 Value2896 +SET Key2897 Value2897 +SET Key2898 Value2898 +SET Key2899 Value2899 +SET Key2900 Value2900 +SET Key2901 Value2901 +SET Key2902 Value2902 +SET Key2903 Value2903 +SET Key2904 Value2904 +SET Key2905 Value2905 +SET Key2906 Value2906 +SET Key2907 Value2907 +SET Key2908 Value2908 +SET Key2909 Value2909 +SET Key2910 Value2910 +SET Key2911 Value2911 +SET Key2912 Value2912 +SET Key2913 Value2913 +SET Key2914 Value2914 +SET Key2915 Value2915 +SET Key2916 Value2916 +SET Key2917 Value2917 +SET Key2918 Value2918 +SET Key2919 Value2919 +SET Key2920 Value2920 +SET Key2921 Value2921 +SET Key2922 Value2922 +SET Key2923 Value2923 +SET Key2924 Value2924 +SET Key2925 Value2925 +SET Key2926 Value2926 +SET Key2927 Value2927 +SET Key2928 Value2928 +SET Key2929 Value2929 +SET Key2930 Value2930 +SET Key2931 Value2931 +SET Key2932 Value2932 +SET Key2933 Value2933 +SET Key2934 Value2934 +SET Key2935 Value2935 +SET Key2936 Value2936 +SET Key2937 Value2937 +SET Key2938 Value2938 +SET Key2939 Value2939 +SET Key2940 Value2940 +SET Key2941 Value2941 +SET Key2942 Value2942 +SET Key2943 Value2943 +SET Key2944 Value2944 +SET Key2945 Value2945 +SET Key2946 Value2946 +SET Key2947 Value2947 +SET Key2948 Value2948 +SET Key2949 Value2949 +SET Key2950 Value2950 +SET Key2951 Value2951 +SET Key2952 Value2952 +SET Key2953 Value2953 +SET Key2954 Value2954 +SET Key2955 Value2955 +SET Key2956 Value2956 +SET Key2957 Value2957 +SET Key2958 Value2958 +SET Key2959 Value2959 +SET Key2960 Value2960 +SET Key2961 Value2961 +SET Key2962 Value2962 +SET Key2963 Value2963 +SET Key2964 Value2964 +SET Key2965 Value2965 +SET Key2966 Value2966 +SET Key2967 Value2967 +SET Key2968 Value2968 +SET Key2969 Value2969 +SET Key2970 Value2970 +SET Key2971 Value2971 +SET Key2972 Value2972 +SET Key2973 Value2973 +SET Key2974 Value2974 +SET Key2975 Value2975 +SET Key2976 Value2976 +SET Key2977 Value2977 +SET Key2978 Value2978 +SET Key2979 Value2979 +SET Key2980 Value2980 +SET Key2981 Value2981 +SET Key2982 Value2982 +SET Key2983 Value2983 +SET Key2984 Value2984 +SET Key2985 Value2985 +SET Key2986 Value2986 +SET Key2987 Value2987 +SET Key2988 Value2988 +SET Key2989 Value2989 +SET Key2990 Value2990 +SET Key2991 Value2991 +SET Key2992 Value2992 +SET Key2993 Value2993 +SET Key2994 Value2994 +SET Key2995 Value2995 +SET Key2996 Value2996 +SET Key2997 Value2997 +SET Key2998 Value2998 +SET Key2999 Value2999 +SET Key3000 Value3000 +SET Key3001 Value3001 +SET Key3002 Value3002 +SET Key3003 Value3003 +SET Key3004 Value3004 +SET Key3005 Value3005 +SET Key3006 Value3006 +SET Key3007 Value3007 +SET Key3008 Value3008 +SET Key3009 Value3009 +SET Key3010 Value3010 +SET Key3011 Value3011 +SET Key3012 Value3012 +SET Key3013 Value3013 +SET Key3014 Value3014 +SET Key3015 Value3015 +SET Key3016 Value3016 +SET Key3017 Value3017 +SET Key3018 Value3018 +SET Key3019 Value3019 +SET Key3020 Value3020 +SET Key3021 Value3021 +SET Key3022 Value3022 +SET Key3023 Value3023 +SET Key3024 Value3024 +SET Key3025 Value3025 +SET Key3026 Value3026 +SET Key3027 Value3027 +SET Key3028 Value3028 +SET Key3029 Value3029 +SET Key3030 Value3030 +SET Key3031 Value3031 +SET Key3032 Value3032 +SET Key3033 Value3033 +SET Key3034 Value3034 +SET Key3035 Value3035 +SET Key3036 Value3036 +SET Key3037 Value3037 +SET Key3038 Value3038 +SET Key3039 Value3039 +SET Key3040 Value3040 +SET Key3041 Value3041 +SET Key3042 Value3042 +SET Key3043 Value3043 +SET Key3044 Value3044 +SET Key3045 Value3045 +SET Key3046 Value3046 +SET Key3047 Value3047 +SET Key3048 Value3048 +SET Key3049 Value3049 +SET Key3050 Value3050 +SET Key3051 Value3051 +SET Key3052 Value3052 +SET Key3053 Value3053 +SET Key3054 Value3054 +SET Key3055 Value3055 +SET Key3056 Value3056 +SET Key3057 Value3057 +SET Key3058 Value3058 +SET Key3059 Value3059 +SET Key3060 Value3060 +SET Key3061 Value3061 +SET Key3062 Value3062 +SET Key3063 Value3063 +SET Key3064 Value3064 +SET Key3065 Value3065 +SET Key3066 Value3066 +SET Key3067 Value3067 +SET Key3068 Value3068 +SET Key3069 Value3069 +SET Key3070 Value3070 +SET Key3071 Value3071 +SET Key3072 Value3072 +SET Key3073 Value3073 +SET Key3074 Value3074 +SET Key3075 Value3075 +SET Key3076 Value3076 +SET Key3077 Value3077 +SET Key3078 Value3078 +SET Key3079 Value3079 +SET Key3080 Value3080 +SET Key3081 Value3081 +SET Key3082 Value3082 +SET Key3083 Value3083 +SET Key3084 Value3084 +SET Key3085 Value3085 +SET Key3086 Value3086 +SET Key3087 Value3087 +SET Key3088 Value3088 +SET Key3089 Value3089 +SET Key3090 Value3090 +SET Key3091 Value3091 +SET Key3092 Value3092 +SET Key3093 Value3093 +SET Key3094 Value3094 +SET Key3095 Value3095 +SET Key3096 Value3096 +SET Key3097 Value3097 +SET Key3098 Value3098 +SET Key3099 Value3099 +SET Key3100 Value3100 +SET Key3101 Value3101 +SET Key3102 Value3102 +SET Key3103 Value3103 +SET Key3104 Value3104 +SET Key3105 Value3105 +SET Key3106 Value3106 +SET Key3107 Value3107 +SET Key3108 Value3108 +SET Key3109 Value3109 +SET Key3110 Value3110 +SET Key3111 Value3111 +SET Key3112 Value3112 +SET Key3113 Value3113 +SET Key3114 Value3114 +SET Key3115 Value3115 +SET Key3116 Value3116 +SET Key3117 Value3117 +SET Key3118 Value3118 +SET Key3119 Value3119 +SET Key3120 Value3120 +SET Key3121 Value3121 +SET Key3122 Value3122 +SET Key3123 Value3123 +SET Key3124 Value3124 +SET Key3125 Value3125 +SET Key3126 Value3126 +SET Key3127 Value3127 +SET Key3128 Value3128 +SET Key3129 Value3129 +SET Key3130 Value3130 +SET Key3131 Value3131 +SET Key3132 Value3132 +SET Key3133 Value3133 +SET Key3134 Value3134 +SET Key3135 Value3135 +SET Key3136 Value3136 +SET Key3137 Value3137 +SET Key3138 Value3138 +SET Key3139 Value3139 +SET Key3140 Value3140 +SET Key3141 Value3141 +SET Key3142 Value3142 +SET Key3143 Value3143 +SET Key3144 Value3144 +SET Key3145 Value3145 +SET Key3146 Value3146 +SET Key3147 Value3147 +SET Key3148 Value3148 +SET Key3149 Value3149 +SET Key3150 Value3150 +SET Key3151 Value3151 +SET Key3152 Value3152 +SET Key3153 Value3153 +SET Key3154 Value3154 +SET Key3155 Value3155 +SET Key3156 Value3156 +SET Key3157 Value3157 +SET Key3158 Value3158 +SET Key3159 Value3159 +SET Key3160 Value3160 +SET Key3161 Value3161 +SET Key3162 Value3162 +SET Key3163 Value3163 +SET Key3164 Value3164 +SET Key3165 Value3165 +SET Key3166 Value3166 +SET Key3167 Value3167 +SET Key3168 Value3168 +SET Key3169 Value3169 +SET Key3170 Value3170 +SET Key3171 Value3171 +SET Key3172 Value3172 +SET Key3173 Value3173 +SET Key3174 Value3174 +SET Key3175 Value3175 +SET Key3176 Value3176 +SET Key3177 Value3177 +SET Key3178 Value3178 +SET Key3179 Value3179 +SET Key3180 Value3180 +SET Key3181 Value3181 +SET Key3182 Value3182 +SET Key3183 Value3183 +SET Key3184 Value3184 +SET Key3185 Value3185 +SET Key3186 Value3186 +SET Key3187 Value3187 +SET Key3188 Value3188 +SET Key3189 Value3189 +SET Key3190 Value3190 +SET Key3191 Value3191 +SET Key3192 Value3192 +SET Key3193 Value3193 +SET Key3194 Value3194 +SET Key3195 Value3195 +SET Key3196 Value3196 +SET Key3197 Value3197 +SET Key3198 Value3198 +SET Key3199 Value3199 +SET Key3200 Value3200 +SET Key3201 Value3201 +SET Key3202 Value3202 +SET Key3203 Value3203 +SET Key3204 Value3204 +SET Key3205 Value3205 +SET Key3206 Value3206 +SET Key3207 Value3207 +SET Key3208 Value3208 +SET Key3209 Value3209 +SET Key3210 Value3210 +SET Key3211 Value3211 +SET Key3212 Value3212 +SET Key3213 Value3213 +SET Key3214 Value3214 +SET Key3215 Value3215 +SET Key3216 Value3216 +SET Key3217 Value3217 +SET Key3218 Value3218 +SET Key3219 Value3219 +SET Key3220 Value3220 +SET Key3221 Value3221 +SET Key3222 Value3222 +SET Key3223 Value3223 +SET Key3224 Value3224 +SET Key3225 Value3225 +SET Key3226 Value3226 +SET Key3227 Value3227 +SET Key3228 Value3228 +SET Key3229 Value3229 +SET Key3230 Value3230 +SET Key3231 Value3231 +SET Key3232 Value3232 +SET Key3233 Value3233 +SET Key3234 Value3234 +SET Key3235 Value3235 +SET Key3236 Value3236 +SET Key3237 Value3237 +SET Key3238 Value3238 +SET Key3239 Value3239 +SET Key3240 Value3240 +SET Key3241 Value3241 +SET Key3242 Value3242 +SET Key3243 Value3243 +SET Key3244 Value3244 +SET Key3245 Value3245 +SET Key3246 Value3246 +SET Key3247 Value3247 +SET Key3248 Value3248 +SET Key3249 Value3249 +SET Key3250 Value3250 +SET Key3251 Value3251 +SET Key3252 Value3252 +SET Key3253 Value3253 +SET Key3254 Value3254 +SET Key3255 Value3255 +SET Key3256 Value3256 +SET Key3257 Value3257 +SET Key3258 Value3258 +SET Key3259 Value3259 +SET Key3260 Value3260 +SET Key3261 Value3261 +SET Key3262 Value3262 +SET Key3263 Value3263 +SET Key3264 Value3264 +SET Key3265 Value3265 +SET Key3266 Value3266 +SET Key3267 Value3267 +SET Key3268 Value3268 +SET Key3269 Value3269 +SET Key3270 Value3270 +SET Key3271 Value3271 +SET Key3272 Value3272 +SET Key3273 Value3273 +SET Key3274 Value3274 +SET Key3275 Value3275 +SET Key3276 Value3276 +SET Key3277 Value3277 +SET Key3278 Value3278 +SET Key3279 Value3279 +SET Key3280 Value3280 +SET Key3281 Value3281 +SET Key3282 Value3282 +SET Key3283 Value3283 +SET Key3284 Value3284 +SET Key3285 Value3285 +SET Key3286 Value3286 +SET Key3287 Value3287 +SET Key3288 Value3288 +SET Key3289 Value3289 +SET Key3290 Value3290 +SET Key3291 Value3291 +SET Key3292 Value3292 +SET Key3293 Value3293 +SET Key3294 Value3294 +SET Key3295 Value3295 +SET Key3296 Value3296 +SET Key3297 Value3297 +SET Key3298 Value3298 +SET Key3299 Value3299 +SET Key3300 Value3300 +SET Key3301 Value3301 +SET Key3302 Value3302 +SET Key3303 Value3303 +SET Key3304 Value3304 +SET Key3305 Value3305 +SET Key3306 Value3306 +SET Key3307 Value3307 +SET Key3308 Value3308 +SET Key3309 Value3309 +SET Key3310 Value3310 +SET Key3311 Value3311 +SET Key3312 Value3312 +SET Key3313 Value3313 +SET Key3314 Value3314 +SET Key3315 Value3315 +SET Key3316 Value3316 +SET Key3317 Value3317 +SET Key3318 Value3318 +SET Key3319 Value3319 +SET Key3320 Value3320 +SET Key3321 Value3321 +SET Key3322 Value3322 +SET Key3323 Value3323 +SET Key3324 Value3324 +SET Key3325 Value3325 +SET Key3326 Value3326 +SET Key3327 Value3327 +SET Key3328 Value3328 +SET Key3329 Value3329 +SET Key3330 Value3330 +SET Key3331 Value3331 +SET Key3332 Value3332 +SET Key3333 Value3333 +SET Key3334 Value3334 +SET Key3335 Value3335 +SET Key3336 Value3336 +SET Key3337 Value3337 +SET Key3338 Value3338 +SET Key3339 Value3339 +SET Key3340 Value3340 +SET Key3341 Value3341 +SET Key3342 Value3342 +SET Key3343 Value3343 +SET Key3344 Value3344 +SET Key3345 Value3345 +SET Key3346 Value3346 +SET Key3347 Value3347 +SET Key3348 Value3348 +SET Key3349 Value3349 +SET Key3350 Value3350 +SET Key3351 Value3351 +SET Key3352 Value3352 +SET Key3353 Value3353 +SET Key3354 Value3354 +SET Key3355 Value3355 +SET Key3356 Value3356 +SET Key3357 Value3357 +SET Key3358 Value3358 +SET Key3359 Value3359 +SET Key3360 Value3360 +SET Key3361 Value3361 +SET Key3362 Value3362 +SET Key3363 Value3363 +SET Key3364 Value3364 +SET Key3365 Value3365 +SET Key3366 Value3366 +SET Key3367 Value3367 +SET Key3368 Value3368 +SET Key3369 Value3369 +SET Key3370 Value3370 +SET Key3371 Value3371 +SET Key3372 Value3372 +SET Key3373 Value3373 +SET Key3374 Value3374 +SET Key3375 Value3375 +SET Key3376 Value3376 +SET Key3377 Value3377 +SET Key3378 Value3378 +SET Key3379 Value3379 +SET Key3380 Value3380 +SET Key3381 Value3381 +SET Key3382 Value3382 +SET Key3383 Value3383 +SET Key3384 Value3384 +SET Key3385 Value3385 +SET Key3386 Value3386 +SET Key3387 Value3387 +SET Key3388 Value3388 +SET Key3389 Value3389 +SET Key3390 Value3390 +SET Key3391 Value3391 +SET Key3392 Value3392 +SET Key3393 Value3393 +SET Key3394 Value3394 +SET Key3395 Value3395 +SET Key3396 Value3396 +SET Key3397 Value3397 +SET Key3398 Value3398 +SET Key3399 Value3399 +SET Key3400 Value3400 +SET Key3401 Value3401 +SET Key3402 Value3402 +SET Key3403 Value3403 +SET Key3404 Value3404 +SET Key3405 Value3405 +SET Key3406 Value3406 +SET Key3407 Value3407 +SET Key3408 Value3408 +SET Key3409 Value3409 +SET Key3410 Value3410 +SET Key3411 Value3411 +SET Key3412 Value3412 +SET Key3413 Value3413 +SET Key3414 Value3414 +SET Key3415 Value3415 +SET Key3416 Value3416 +SET Key3417 Value3417 +SET Key3418 Value3418 +SET Key3419 Value3419 +SET Key3420 Value3420 +SET Key3421 Value3421 +SET Key3422 Value3422 +SET Key3423 Value3423 +SET Key3424 Value3424 +SET Key3425 Value3425 +SET Key3426 Value3426 +SET Key3427 Value3427 +SET Key3428 Value3428 +SET Key3429 Value3429 +SET Key3430 Value3430 +SET Key3431 Value3431 +SET Key3432 Value3432 +SET Key3433 Value3433 +SET Key3434 Value3434 +SET Key3435 Value3435 +SET Key3436 Value3436 +SET Key3437 Value3437 +SET Key3438 Value3438 +SET Key3439 Value3439 +SET Key3440 Value3440 +SET Key3441 Value3441 +SET Key3442 Value3442 +SET Key3443 Value3443 +SET Key3444 Value3444 +SET Key3445 Value3445 +SET Key3446 Value3446 +SET Key3447 Value3447 +SET Key3448 Value3448 +SET Key3449 Value3449 +SET Key3450 Value3450 +SET Key3451 Value3451 +SET Key3452 Value3452 +SET Key3453 Value3453 +SET Key3454 Value3454 +SET Key3455 Value3455 +SET Key3456 Value3456 +SET Key3457 Value3457 +SET Key3458 Value3458 +SET Key3459 Value3459 +SET Key3460 Value3460 +SET Key3461 Value3461 +SET Key3462 Value3462 +SET Key3463 Value3463 +SET Key3464 Value3464 +SET Key3465 Value3465 +SET Key3466 Value3466 +SET Key3467 Value3467 +SET Key3468 Value3468 +SET Key3469 Value3469 +SET Key3470 Value3470 +SET Key3471 Value3471 +SET Key3472 Value3472 +SET Key3473 Value3473 +SET Key3474 Value3474 +SET Key3475 Value3475 +SET Key3476 Value3476 +SET Key3477 Value3477 +SET Key3478 Value3478 +SET Key3479 Value3479 +SET Key3480 Value3480 +SET Key3481 Value3481 +SET Key3482 Value3482 +SET Key3483 Value3483 +SET Key3484 Value3484 +SET Key3485 Value3485 +SET Key3486 Value3486 +SET Key3487 Value3487 +SET Key3488 Value3488 +SET Key3489 Value3489 +SET Key3490 Value3490 +SET Key3491 Value3491 +SET Key3492 Value3492 +SET Key3493 Value3493 +SET Key3494 Value3494 +SET Key3495 Value3495 +SET Key3496 Value3496 +SET Key3497 Value3497 +SET Key3498 Value3498 +SET Key3499 Value3499 +SET Key3500 Value3500 +SET Key3501 Value3501 +SET Key3502 Value3502 +SET Key3503 Value3503 +SET Key3504 Value3504 +SET Key3505 Value3505 +SET Key3506 Value3506 +SET Key3507 Value3507 +SET Key3508 Value3508 +SET Key3509 Value3509 +SET Key3510 Value3510 +SET Key3511 Value3511 +SET Key3512 Value3512 +SET Key3513 Value3513 +SET Key3514 Value3514 +SET Key3515 Value3515 +SET Key3516 Value3516 +SET Key3517 Value3517 +SET Key3518 Value3518 +SET Key3519 Value3519 +SET Key3520 Value3520 +SET Key3521 Value3521 +SET Key3522 Value3522 +SET Key3523 Value3523 +SET Key3524 Value3524 +SET Key3525 Value3525 +SET Key3526 Value3526 +SET Key3527 Value3527 +SET Key3528 Value3528 +SET Key3529 Value3529 +SET Key3530 Value3530 +SET Key3531 Value3531 +SET Key3532 Value3532 +SET Key3533 Value3533 +SET Key3534 Value3534 +SET Key3535 Value3535 +SET Key3536 Value3536 +SET Key3537 Value3537 +SET Key3538 Value3538 +SET Key3539 Value3539 +SET Key3540 Value3540 +SET Key3541 Value3541 +SET Key3542 Value3542 +SET Key3543 Value3543 +SET Key3544 Value3544 +SET Key3545 Value3545 +SET Key3546 Value3546 +SET Key3547 Value3547 +SET Key3548 Value3548 +SET Key3549 Value3549 +SET Key3550 Value3550 +SET Key3551 Value3551 +SET Key3552 Value3552 +SET Key3553 Value3553 +SET Key3554 Value3554 +SET Key3555 Value3555 +SET Key3556 Value3556 +SET Key3557 Value3557 +SET Key3558 Value3558 +SET Key3559 Value3559 +SET Key3560 Value3560 +SET Key3561 Value3561 +SET Key3562 Value3562 +SET Key3563 Value3563 +SET Key3564 Value3564 +SET Key3565 Value3565 +SET Key3566 Value3566 +SET Key3567 Value3567 +SET Key3568 Value3568 +SET Key3569 Value3569 +SET Key3570 Value3570 +SET Key3571 Value3571 +SET Key3572 Value3572 +SET Key3573 Value3573 +SET Key3574 Value3574 +SET Key3575 Value3575 +SET Key3576 Value3576 +SET Key3577 Value3577 +SET Key3578 Value3578 +SET Key3579 Value3579 +SET Key3580 Value3580 +SET Key3581 Value3581 +SET Key3582 Value3582 +SET Key3583 Value3583 +SET Key3584 Value3584 +SET Key3585 Value3585 +SET Key3586 Value3586 +SET Key3587 Value3587 +SET Key3588 Value3588 +SET Key3589 Value3589 +SET Key3590 Value3590 +SET Key3591 Value3591 +SET Key3592 Value3592 +SET Key3593 Value3593 +SET Key3594 Value3594 +SET Key3595 Value3595 +SET Key3596 Value3596 +SET Key3597 Value3597 +SET Key3598 Value3598 +SET Key3599 Value3599 +SET Key3600 Value3600 +SET Key3601 Value3601 +SET Key3602 Value3602 +SET Key3603 Value3603 +SET Key3604 Value3604 +SET Key3605 Value3605 +SET Key3606 Value3606 +SET Key3607 Value3607 +SET Key3608 Value3608 +SET Key3609 Value3609 +SET Key3610 Value3610 +SET Key3611 Value3611 +SET Key3612 Value3612 +SET Key3613 Value3613 +SET Key3614 Value3614 +SET Key3615 Value3615 +SET Key3616 Value3616 +SET Key3617 Value3617 +SET Key3618 Value3618 +SET Key3619 Value3619 +SET Key3620 Value3620 +SET Key3621 Value3621 +SET Key3622 Value3622 +SET Key3623 Value3623 +SET Key3624 Value3624 +SET Key3625 Value3625 +SET Key3626 Value3626 +SET Key3627 Value3627 +SET Key3628 Value3628 +SET Key3629 Value3629 +SET Key3630 Value3630 +SET Key3631 Value3631 +SET Key3632 Value3632 +SET Key3633 Value3633 +SET Key3634 Value3634 +SET Key3635 Value3635 +SET Key3636 Value3636 +SET Key3637 Value3637 +SET Key3638 Value3638 +SET Key3639 Value3639 +SET Key3640 Value3640 +SET Key3641 Value3641 +SET Key3642 Value3642 +SET Key3643 Value3643 +SET Key3644 Value3644 +SET Key3645 Value3645 +SET Key3646 Value3646 +SET Key3647 Value3647 +SET Key3648 Value3648 +SET Key3649 Value3649 +SET Key3650 Value3650 +SET Key3651 Value3651 +SET Key3652 Value3652 +SET Key3653 Value3653 +SET Key3654 Value3654 +SET Key3655 Value3655 +SET Key3656 Value3656 +SET Key3657 Value3657 +SET Key3658 Value3658 +SET Key3659 Value3659 +SET Key3660 Value3660 +SET Key3661 Value3661 +SET Key3662 Value3662 +SET Key3663 Value3663 +SET Key3664 Value3664 +SET Key3665 Value3665 +SET Key3666 Value3666 +SET Key3667 Value3667 +SET Key3668 Value3668 +SET Key3669 Value3669 +SET Key3670 Value3670 +SET Key3671 Value3671 +SET Key3672 Value3672 +SET Key3673 Value3673 +SET Key3674 Value3674 +SET Key3675 Value3675 +SET Key3676 Value3676 +SET Key3677 Value3677 +SET Key3678 Value3678 +SET Key3679 Value3679 +SET Key3680 Value3680 +SET Key3681 Value3681 +SET Key3682 Value3682 +SET Key3683 Value3683 +SET Key3684 Value3684 +SET Key3685 Value3685 +SET Key3686 Value3686 +SET Key3687 Value3687 +SET Key3688 Value3688 +SET Key3689 Value3689 +SET Key3690 Value3690 +SET Key3691 Value3691 +SET Key3692 Value3692 +SET Key3693 Value3693 +SET Key3694 Value3694 +SET Key3695 Value3695 +SET Key3696 Value3696 +SET Key3697 Value3697 +SET Key3698 Value3698 +SET Key3699 Value3699 +SET Key3700 Value3700 +SET Key3701 Value3701 +SET Key3702 Value3702 +SET Key3703 Value3703 +SET Key3704 Value3704 +SET Key3705 Value3705 +SET Key3706 Value3706 +SET Key3707 Value3707 +SET Key3708 Value3708 +SET Key3709 Value3709 +SET Key3710 Value3710 +SET Key3711 Value3711 +SET Key3712 Value3712 +SET Key3713 Value3713 +SET Key3714 Value3714 +SET Key3715 Value3715 +SET Key3716 Value3716 +SET Key3717 Value3717 +SET Key3718 Value3718 +SET Key3719 Value3719 +SET Key3720 Value3720 +SET Key3721 Value3721 +SET Key3722 Value3722 +SET Key3723 Value3723 +SET Key3724 Value3724 +SET Key3725 Value3725 +SET Key3726 Value3726 +SET Key3727 Value3727 +SET Key3728 Value3728 +SET Key3729 Value3729 +SET Key3730 Value3730 +SET Key3731 Value3731 +SET Key3732 Value3732 +SET Key3733 Value3733 +SET Key3734 Value3734 +SET Key3735 Value3735 +SET Key3736 Value3736 +SET Key3737 Value3737 +SET Key3738 Value3738 +SET Key3739 Value3739 +SET Key3740 Value3740 +SET Key3741 Value3741 +SET Key3742 Value3742 +SET Key3743 Value3743 +SET Key3744 Value3744 +SET Key3745 Value3745 +SET Key3746 Value3746 +SET Key3747 Value3747 +SET Key3748 Value3748 +SET Key3749 Value3749 +SET Key3750 Value3750 +SET Key3751 Value3751 +SET Key3752 Value3752 +SET Key3753 Value3753 +SET Key3754 Value3754 +SET Key3755 Value3755 +SET Key3756 Value3756 +SET Key3757 Value3757 +SET Key3758 Value3758 +SET Key3759 Value3759 +SET Key3760 Value3760 +SET Key3761 Value3761 +SET Key3762 Value3762 +SET Key3763 Value3763 +SET Key3764 Value3764 +SET Key3765 Value3765 +SET Key3766 Value3766 +SET Key3767 Value3767 +SET Key3768 Value3768 +SET Key3769 Value3769 +SET Key3770 Value3770 +SET Key3771 Value3771 +SET Key3772 Value3772 +SET Key3773 Value3773 +SET Key3774 Value3774 +SET Key3775 Value3775 +SET Key3776 Value3776 +SET Key3777 Value3777 +SET Key3778 Value3778 +SET Key3779 Value3779 +SET Key3780 Value3780 +SET Key3781 Value3781 +SET Key3782 Value3782 +SET Key3783 Value3783 +SET Key3784 Value3784 +SET Key3785 Value3785 +SET Key3786 Value3786 +SET Key3787 Value3787 +SET Key3788 Value3788 +SET Key3789 Value3789 +SET Key3790 Value3790 +SET Key3791 Value3791 +SET Key3792 Value3792 +SET Key3793 Value3793 +SET Key3794 Value3794 +SET Key3795 Value3795 +SET Key3796 Value3796 +SET Key3797 Value3797 +SET Key3798 Value3798 +SET Key3799 Value3799 +SET Key3800 Value3800 +SET Key3801 Value3801 +SET Key3802 Value3802 +SET Key3803 Value3803 +SET Key3804 Value3804 +SET Key3805 Value3805 +SET Key3806 Value3806 +SET Key3807 Value3807 +SET Key3808 Value3808 +SET Key3809 Value3809 +SET Key3810 Value3810 +SET Key3811 Value3811 +SET Key3812 Value3812 +SET Key3813 Value3813 +SET Key3814 Value3814 +SET Key3815 Value3815 +SET Key3816 Value3816 +SET Key3817 Value3817 +SET Key3818 Value3818 +SET Key3819 Value3819 +SET Key3820 Value3820 +SET Key3821 Value3821 +SET Key3822 Value3822 +SET Key3823 Value3823 +SET Key3824 Value3824 +SET Key3825 Value3825 +SET Key3826 Value3826 +SET Key3827 Value3827 +SET Key3828 Value3828 +SET Key3829 Value3829 +SET Key3830 Value3830 +SET Key3831 Value3831 +SET Key3832 Value3832 +SET Key3833 Value3833 +SET Key3834 Value3834 +SET Key3835 Value3835 +SET Key3836 Value3836 +SET Key3837 Value3837 +SET Key3838 Value3838 +SET Key3839 Value3839 +SET Key3840 Value3840 +SET Key3841 Value3841 +SET Key3842 Value3842 +SET Key3843 Value3843 +SET Key3844 Value3844 +SET Key3845 Value3845 +SET Key3846 Value3846 +SET Key3847 Value3847 +SET Key3848 Value3848 +SET Key3849 Value3849 +SET Key3850 Value3850 +SET Key3851 Value3851 +SET Key3852 Value3852 +SET Key3853 Value3853 +SET Key3854 Value3854 +SET Key3855 Value3855 +SET Key3856 Value3856 +SET Key3857 Value3857 +SET Key3858 Value3858 +SET Key3859 Value3859 +SET Key3860 Value3860 +SET Key3861 Value3861 +SET Key3862 Value3862 +SET Key3863 Value3863 +SET Key3864 Value3864 +SET Key3865 Value3865 +SET Key3866 Value3866 +SET Key3867 Value3867 +SET Key3868 Value3868 +SET Key3869 Value3869 +SET Key3870 Value3870 +SET Key3871 Value3871 +SET Key3872 Value3872 +SET Key3873 Value3873 +SET Key3874 Value3874 +SET Key3875 Value3875 +SET Key3876 Value3876 +SET Key3877 Value3877 +SET Key3878 Value3878 +SET Key3879 Value3879 +SET Key3880 Value3880 +SET Key3881 Value3881 +SET Key3882 Value3882 +SET Key3883 Value3883 +SET Key3884 Value3884 +SET Key3885 Value3885 +SET Key3886 Value3886 +SET Key3887 Value3887 +SET Key3888 Value3888 +SET Key3889 Value3889 +SET Key3890 Value3890 +SET Key3891 Value3891 +SET Key3892 Value3892 +SET Key3893 Value3893 +SET Key3894 Value3894 +SET Key3895 Value3895 +SET Key3896 Value3896 +SET Key3897 Value3897 +SET Key3898 Value3898 +SET Key3899 Value3899 +SET Key3900 Value3900 +SET Key3901 Value3901 +SET Key3902 Value3902 +SET Key3903 Value3903 +SET Key3904 Value3904 +SET Key3905 Value3905 +SET Key3906 Value3906 +SET Key3907 Value3907 +SET Key3908 Value3908 +SET Key3909 Value3909 +SET Key3910 Value3910 +SET Key3911 Value3911 +SET Key3912 Value3912 +SET Key3913 Value3913 +SET Key3914 Value3914 +SET Key3915 Value3915 +SET Key3916 Value3916 +SET Key3917 Value3917 +SET Key3918 Value3918 +SET Key3919 Value3919 +SET Key3920 Value3920 +SET Key3921 Value3921 +SET Key3922 Value3922 +SET Key3923 Value3923 +SET Key3924 Value3924 +SET Key3925 Value3925 +SET Key3926 Value3926 +SET Key3927 Value3927 +SET Key3928 Value3928 +SET Key3929 Value3929 +SET Key3930 Value3930 +SET Key3931 Value3931 +SET Key3932 Value3932 +SET Key3933 Value3933 +SET Key3934 Value3934 +SET Key3935 Value3935 +SET Key3936 Value3936 +SET Key3937 Value3937 +SET Key3938 Value3938 +SET Key3939 Value3939 +SET Key3940 Value3940 +SET Key3941 Value3941 +SET Key3942 Value3942 +SET Key3943 Value3943 +SET Key3944 Value3944 +SET Key3945 Value3945 +SET Key3946 Value3946 +SET Key3947 Value3947 +SET Key3948 Value3948 +SET Key3949 Value3949 +SET Key3950 Value3950 +SET Key3951 Value3951 +SET Key3952 Value3952 +SET Key3953 Value3953 +SET Key3954 Value3954 +SET Key3955 Value3955 +SET Key3956 Value3956 +SET Key3957 Value3957 +SET Key3958 Value3958 +SET Key3959 Value3959 +SET Key3960 Value3960 +SET Key3961 Value3961 +SET Key3962 Value3962 +SET Key3963 Value3963 +SET Key3964 Value3964 +SET Key3965 Value3965 +SET Key3966 Value3966 +SET Key3967 Value3967 +SET Key3968 Value3968 +SET Key3969 Value3969 +SET Key3970 Value3970 +SET Key3971 Value3971 +SET Key3972 Value3972 +SET Key3973 Value3973 +SET Key3974 Value3974 +SET Key3975 Value3975 +SET Key3976 Value3976 +SET Key3977 Value3977 +SET Key3978 Value3978 +SET Key3979 Value3979 +SET Key3980 Value3980 +SET Key3981 Value3981 +SET Key3982 Value3982 +SET Key3983 Value3983 +SET Key3984 Value3984 +SET Key3985 Value3985 +SET Key3986 Value3986 +SET Key3987 Value3987 +SET Key3988 Value3988 +SET Key3989 Value3989 +SET Key3990 Value3990 +SET Key3991 Value3991 +SET Key3992 Value3992 +SET Key3993 Value3993 +SET Key3994 Value3994 +SET Key3995 Value3995 +SET Key3996 Value3996 +SET Key3997 Value3997 +SET Key3998 Value3998 +SET Key3999 Value3999 +SET Key4000 Value4000 +SET Key4001 Value4001 +SET Key4002 Value4002 +SET Key4003 Value4003 +SET Key4004 Value4004 +SET Key4005 Value4005 +SET Key4006 Value4006 +SET Key4007 Value4007 +SET Key4008 Value4008 +SET Key4009 Value4009 +SET Key4010 Value4010 +SET Key4011 Value4011 +SET Key4012 Value4012 +SET Key4013 Value4013 +SET Key4014 Value4014 +SET Key4015 Value4015 +SET Key4016 Value4016 +SET Key4017 Value4017 +SET Key4018 Value4018 +SET Key4019 Value4019 +SET Key4020 Value4020 +SET Key4021 Value4021 +SET Key4022 Value4022 +SET Key4023 Value4023 +SET Key4024 Value4024 +SET Key4025 Value4025 +SET Key4026 Value4026 +SET Key4027 Value4027 +SET Key4028 Value4028 +SET Key4029 Value4029 +SET Key4030 Value4030 +SET Key4031 Value4031 +SET Key4032 Value4032 +SET Key4033 Value4033 +SET Key4034 Value4034 +SET Key4035 Value4035 +SET Key4036 Value4036 +SET Key4037 Value4037 +SET Key4038 Value4038 +SET Key4039 Value4039 +SET Key4040 Value4040 +SET Key4041 Value4041 +SET Key4042 Value4042 +SET Key4043 Value4043 +SET Key4044 Value4044 +SET Key4045 Value4045 +SET Key4046 Value4046 +SET Key4047 Value4047 +SET Key4048 Value4048 +SET Key4049 Value4049 +SET Key4050 Value4050 +SET Key4051 Value4051 +SET Key4052 Value4052 +SET Key4053 Value4053 +SET Key4054 Value4054 +SET Key4055 Value4055 +SET Key4056 Value4056 +SET Key4057 Value4057 +SET Key4058 Value4058 +SET Key4059 Value4059 +SET Key4060 Value4060 +SET Key4061 Value4061 +SET Key4062 Value4062 +SET Key4063 Value4063 +SET Key4064 Value4064 +SET Key4065 Value4065 +SET Key4066 Value4066 +SET Key4067 Value4067 +SET Key4068 Value4068 +SET Key4069 Value4069 +SET Key4070 Value4070 +SET Key4071 Value4071 +SET Key4072 Value4072 +SET Key4073 Value4073 +SET Key4074 Value4074 +SET Key4075 Value4075 +SET Key4076 Value4076 +SET Key4077 Value4077 +SET Key4078 Value4078 +SET Key4079 Value4079 +SET Key4080 Value4080 +SET Key4081 Value4081 +SET Key4082 Value4082 +SET Key4083 Value4083 +SET Key4084 Value4084 +SET Key4085 Value4085 +SET Key4086 Value4086 +SET Key4087 Value4087 +SET Key4088 Value4088 +SET Key4089 Value4089 +SET Key4090 Value4090 +SET Key4091 Value4091 +SET Key4092 Value4092 +SET Key4093 Value4093 +SET Key4094 Value4094 +SET Key4095 Value4095 +SET Key4096 Value4096 +SET Key4097 Value4097 +SET Key4098 Value4098 +SET Key4099 Value4099 +SET Key4100 Value4100 +SET Key4101 Value4101 +SET Key4102 Value4102 +SET Key4103 Value4103 +SET Key4104 Value4104 +SET Key4105 Value4105 +SET Key4106 Value4106 +SET Key4107 Value4107 +SET Key4108 Value4108 +SET Key4109 Value4109 +SET Key4110 Value4110 +SET Key4111 Value4111 +SET Key4112 Value4112 +SET Key4113 Value4113 +SET Key4114 Value4114 +SET Key4115 Value4115 +SET Key4116 Value4116 +SET Key4117 Value4117 +SET Key4118 Value4118 +SET Key4119 Value4119 +SET Key4120 Value4120 +SET Key4121 Value4121 +SET Key4122 Value4122 +SET Key4123 Value4123 +SET Key4124 Value4124 +SET Key4125 Value4125 +SET Key4126 Value4126 +SET Key4127 Value4127 +SET Key4128 Value4128 +SET Key4129 Value4129 +SET Key4130 Value4130 +SET Key4131 Value4131 +SET Key4132 Value4132 +SET Key4133 Value4133 +SET Key4134 Value4134 +SET Key4135 Value4135 +SET Key4136 Value4136 +SET Key4137 Value4137 +SET Key4138 Value4138 +SET Key4139 Value4139 +SET Key4140 Value4140 +SET Key4141 Value4141 +SET Key4142 Value4142 +SET Key4143 Value4143 +SET Key4144 Value4144 +SET Key4145 Value4145 +SET Key4146 Value4146 +SET Key4147 Value4147 +SET Key4148 Value4148 +SET Key4149 Value4149 +SET Key4150 Value4150 +SET Key4151 Value4151 +SET Key4152 Value4152 +SET Key4153 Value4153 +SET Key4154 Value4154 +SET Key4155 Value4155 +SET Key4156 Value4156 +SET Key4157 Value4157 +SET Key4158 Value4158 +SET Key4159 Value4159 +SET Key4160 Value4160 +SET Key4161 Value4161 +SET Key4162 Value4162 +SET Key4163 Value4163 +SET Key4164 Value4164 +SET Key4165 Value4165 +SET Key4166 Value4166 +SET Key4167 Value4167 +SET Key4168 Value4168 +SET Key4169 Value4169 +SET Key4170 Value4170 +SET Key4171 Value4171 +SET Key4172 Value4172 +SET Key4173 Value4173 +SET Key4174 Value4174 +SET Key4175 Value4175 +SET Key4176 Value4176 +SET Key4177 Value4177 +SET Key4178 Value4178 +SET Key4179 Value4179 +SET Key4180 Value4180 +SET Key4181 Value4181 +SET Key4182 Value4182 +SET Key4183 Value4183 +SET Key4184 Value4184 +SET Key4185 Value4185 +SET Key4186 Value4186 +SET Key4187 Value4187 +SET Key4188 Value4188 +SET Key4189 Value4189 +SET Key4190 Value4190 +SET Key4191 Value4191 +SET Key4192 Value4192 +SET Key4193 Value4193 +SET Key4194 Value4194 +SET Key4195 Value4195 +SET Key4196 Value4196 +SET Key4197 Value4197 +SET Key4198 Value4198 +SET Key4199 Value4199 +SET Key4200 Value4200 +SET Key4201 Value4201 +SET Key4202 Value4202 +SET Key4203 Value4203 +SET Key4204 Value4204 +SET Key4205 Value4205 +SET Key4206 Value4206 +SET Key4207 Value4207 +SET Key4208 Value4208 +SET Key4209 Value4209 +SET Key4210 Value4210 +SET Key4211 Value4211 +SET Key4212 Value4212 +SET Key4213 Value4213 +SET Key4214 Value4214 +SET Key4215 Value4215 +SET Key4216 Value4216 +SET Key4217 Value4217 +SET Key4218 Value4218 +SET Key4219 Value4219 +SET Key4220 Value4220 +SET Key4221 Value4221 +SET Key4222 Value4222 +SET Key4223 Value4223 +SET Key4224 Value4224 +SET Key4225 Value4225 +SET Key4226 Value4226 +SET Key4227 Value4227 +SET Key4228 Value4228 +SET Key4229 Value4229 +SET Key4230 Value4230 +SET Key4231 Value4231 +SET Key4232 Value4232 +SET Key4233 Value4233 +SET Key4234 Value4234 +SET Key4235 Value4235 +SET Key4236 Value4236 +SET Key4237 Value4237 +SET Key4238 Value4238 +SET Key4239 Value4239 +SET Key4240 Value4240 +SET Key4241 Value4241 +SET Key4242 Value4242 +SET Key4243 Value4243 +SET Key4244 Value4244 +SET Key4245 Value4245 +SET Key4246 Value4246 +SET Key4247 Value4247 +SET Key4248 Value4248 +SET Key4249 Value4249 +SET Key4250 Value4250 +SET Key4251 Value4251 +SET Key4252 Value4252 +SET Key4253 Value4253 +SET Key4254 Value4254 +SET Key4255 Value4255 +SET Key4256 Value4256 +SET Key4257 Value4257 +SET Key4258 Value4258 +SET Key4259 Value4259 +SET Key4260 Value4260 +SET Key4261 Value4261 +SET Key4262 Value4262 +SET Key4263 Value4263 +SET Key4264 Value4264 +SET Key4265 Value4265 +SET Key4266 Value4266 +SET Key4267 Value4267 +SET Key4268 Value4268 +SET Key4269 Value4269 +SET Key4270 Value4270 +SET Key4271 Value4271 +SET Key4272 Value4272 +SET Key4273 Value4273 +SET Key4274 Value4274 +SET Key4275 Value4275 +SET Key4276 Value4276 +SET Key4277 Value4277 +SET Key4278 Value4278 +SET Key4279 Value4279 +SET Key4280 Value4280 +SET Key4281 Value4281 +SET Key4282 Value4282 +SET Key4283 Value4283 +SET Key4284 Value4284 +SET Key4285 Value4285 +SET Key4286 Value4286 +SET Key4287 Value4287 +SET Key4288 Value4288 +SET Key4289 Value4289 +SET Key4290 Value4290 +SET Key4291 Value4291 +SET Key4292 Value4292 +SET Key4293 Value4293 +SET Key4294 Value4294 +SET Key4295 Value4295 +SET Key4296 Value4296 +SET Key4297 Value4297 +SET Key4298 Value4298 +SET Key4299 Value4299 +SET Key4300 Value4300 +SET Key4301 Value4301 +SET Key4302 Value4302 +SET Key4303 Value4303 +SET Key4304 Value4304 +SET Key4305 Value4305 +SET Key4306 Value4306 +SET Key4307 Value4307 +SET Key4308 Value4308 +SET Key4309 Value4309 +SET Key4310 Value4310 +SET Key4311 Value4311 +SET Key4312 Value4312 +SET Key4313 Value4313 +SET Key4314 Value4314 +SET Key4315 Value4315 +SET Key4316 Value4316 +SET Key4317 Value4317 +SET Key4318 Value4318 +SET Key4319 Value4319 +SET Key4320 Value4320 +SET Key4321 Value4321 +SET Key4322 Value4322 +SET Key4323 Value4323 +SET Key4324 Value4324 +SET Key4325 Value4325 +SET Key4326 Value4326 +SET Key4327 Value4327 +SET Key4328 Value4328 +SET Key4329 Value4329 +SET Key4330 Value4330 +SET Key4331 Value4331 +SET Key4332 Value4332 +SET Key4333 Value4333 +SET Key4334 Value4334 +SET Key4335 Value4335 +SET Key4336 Value4336 +SET Key4337 Value4337 +SET Key4338 Value4338 +SET Key4339 Value4339 +SET Key4340 Value4340 +SET Key4341 Value4341 +SET Key4342 Value4342 +SET Key4343 Value4343 +SET Key4344 Value4344 +SET Key4345 Value4345 +SET Key4346 Value4346 +SET Key4347 Value4347 +SET Key4348 Value4348 +SET Key4349 Value4349 +SET Key4350 Value4350 +SET Key4351 Value4351 +SET Key4352 Value4352 +SET Key4353 Value4353 +SET Key4354 Value4354 +SET Key4355 Value4355 +SET Key4356 Value4356 +SET Key4357 Value4357 +SET Key4358 Value4358 +SET Key4359 Value4359 +SET Key4360 Value4360 +SET Key4361 Value4361 +SET Key4362 Value4362 +SET Key4363 Value4363 +SET Key4364 Value4364 +SET Key4365 Value4365 +SET Key4366 Value4366 +SET Key4367 Value4367 +SET Key4368 Value4368 +SET Key4369 Value4369 +SET Key4370 Value4370 +SET Key4371 Value4371 +SET Key4372 Value4372 +SET Key4373 Value4373 +SET Key4374 Value4374 +SET Key4375 Value4375 +SET Key4376 Value4376 +SET Key4377 Value4377 +SET Key4378 Value4378 +SET Key4379 Value4379 +SET Key4380 Value4380 +SET Key4381 Value4381 +SET Key4382 Value4382 +SET Key4383 Value4383 +SET Key4384 Value4384 +SET Key4385 Value4385 +SET Key4386 Value4386 +SET Key4387 Value4387 +SET Key4388 Value4388 +SET Key4389 Value4389 +SET Key4390 Value4390 +SET Key4391 Value4391 +SET Key4392 Value4392 +SET Key4393 Value4393 +SET Key4394 Value4394 +SET Key4395 Value4395 +SET Key4396 Value4396 +SET Key4397 Value4397 +SET Key4398 Value4398 +SET Key4399 Value4399 +SET Key4400 Value4400 +SET Key4401 Value4401 +SET Key4402 Value4402 +SET Key4403 Value4403 +SET Key4404 Value4404 +SET Key4405 Value4405 +SET Key4406 Value4406 +SET Key4407 Value4407 +SET Key4408 Value4408 +SET Key4409 Value4409 +SET Key4410 Value4410 +SET Key4411 Value4411 +SET Key4412 Value4412 +SET Key4413 Value4413 +SET Key4414 Value4414 +SET Key4415 Value4415 +SET Key4416 Value4416 +SET Key4417 Value4417 +SET Key4418 Value4418 +SET Key4419 Value4419 +SET Key4420 Value4420 +SET Key4421 Value4421 +SET Key4422 Value4422 +SET Key4423 Value4423 +SET Key4424 Value4424 +SET Key4425 Value4425 +SET Key4426 Value4426 +SET Key4427 Value4427 +SET Key4428 Value4428 +SET Key4429 Value4429 +SET Key4430 Value4430 +SET Key4431 Value4431 +SET Key4432 Value4432 +SET Key4433 Value4433 +SET Key4434 Value4434 +SET Key4435 Value4435 +SET Key4436 Value4436 +SET Key4437 Value4437 +SET Key4438 Value4438 +SET Key4439 Value4439 +SET Key4440 Value4440 +SET Key4441 Value4441 +SET Key4442 Value4442 +SET Key4443 Value4443 +SET Key4444 Value4444 +SET Key4445 Value4445 +SET Key4446 Value4446 +SET Key4447 Value4447 +SET Key4448 Value4448 +SET Key4449 Value4449 +SET Key4450 Value4450 +SET Key4451 Value4451 +SET Key4452 Value4452 +SET Key4453 Value4453 +SET Key4454 Value4454 +SET Key4455 Value4455 +SET Key4456 Value4456 +SET Key4457 Value4457 +SET Key4458 Value4458 +SET Key4459 Value4459 +SET Key4460 Value4460 +SET Key4461 Value4461 +SET Key4462 Value4462 +SET Key4463 Value4463 +SET Key4464 Value4464 +SET Key4465 Value4465 +SET Key4466 Value4466 +SET Key4467 Value4467 +SET Key4468 Value4468 +SET Key4469 Value4469 +SET Key4470 Value4470 +SET Key4471 Value4471 +SET Key4472 Value4472 +SET Key4473 Value4473 +SET Key4474 Value4474 +SET Key4475 Value4475 +SET Key4476 Value4476 +SET Key4477 Value4477 +SET Key4478 Value4478 +SET Key4479 Value4479 +SET Key4480 Value4480 +SET Key4481 Value4481 +SET Key4482 Value4482 +SET Key4483 Value4483 +SET Key4484 Value4484 +SET Key4485 Value4485 +SET Key4486 Value4486 +SET Key4487 Value4487 +SET Key4488 Value4488 +SET Key4489 Value4489 +SET Key4490 Value4490 +SET Key4491 Value4491 +SET Key4492 Value4492 +SET Key4493 Value4493 +SET Key4494 Value4494 +SET Key4495 Value4495 +SET Key4496 Value4496 +SET Key4497 Value4497 +SET Key4498 Value4498 +SET Key4499 Value4499 +SET Key4500 Value4500 +SET Key4501 Value4501 +SET Key4502 Value4502 +SET Key4503 Value4503 +SET Key4504 Value4504 +SET Key4505 Value4505 +SET Key4506 Value4506 +SET Key4507 Value4507 +SET Key4508 Value4508 +SET Key4509 Value4509 +SET Key4510 Value4510 +SET Key4511 Value4511 +SET Key4512 Value4512 +SET Key4513 Value4513 +SET Key4514 Value4514 +SET Key4515 Value4515 +SET Key4516 Value4516 +SET Key4517 Value4517 +SET Key4518 Value4518 +SET Key4519 Value4519 +SET Key4520 Value4520 +SET Key4521 Value4521 +SET Key4522 Value4522 +SET Key4523 Value4523 +SET Key4524 Value4524 +SET Key4525 Value4525 +SET Key4526 Value4526 +SET Key4527 Value4527 +SET Key4528 Value4528 +SET Key4529 Value4529 +SET Key4530 Value4530 +SET Key4531 Value4531 +SET Key4532 Value4532 +SET Key4533 Value4533 +SET Key4534 Value4534 +SET Key4535 Value4535 +SET Key4536 Value4536 +SET Key4537 Value4537 +SET Key4538 Value4538 +SET Key4539 Value4539 +SET Key4540 Value4540 +SET Key4541 Value4541 +SET Key4542 Value4542 +SET Key4543 Value4543 +SET Key4544 Value4544 +SET Key4545 Value4545 +SET Key4546 Value4546 +SET Key4547 Value4547 +SET Key4548 Value4548 +SET Key4549 Value4549 +SET Key4550 Value4550 +SET Key4551 Value4551 +SET Key4552 Value4552 +SET Key4553 Value4553 +SET Key4554 Value4554 +SET Key4555 Value4555 +SET Key4556 Value4556 +SET Key4557 Value4557 +SET Key4558 Value4558 +SET Key4559 Value4559 +SET Key4560 Value4560 +SET Key4561 Value4561 +SET Key4562 Value4562 +SET Key4563 Value4563 +SET Key4564 Value4564 +SET Key4565 Value4565 +SET Key4566 Value4566 +SET Key4567 Value4567 +SET Key4568 Value4568 +SET Key4569 Value4569 +SET Key4570 Value4570 +SET Key4571 Value4571 +SET Key4572 Value4572 +SET Key4573 Value4573 +SET Key4574 Value4574 +SET Key4575 Value4575 +SET Key4576 Value4576 +SET Key4577 Value4577 +SET Key4578 Value4578 +SET Key4579 Value4579 +SET Key4580 Value4580 +SET Key4581 Value4581 +SET Key4582 Value4582 +SET Key4583 Value4583 +SET Key4584 Value4584 +SET Key4585 Value4585 +SET Key4586 Value4586 +SET Key4587 Value4587 +SET Key4588 Value4588 +SET Key4589 Value4589 +SET Key4590 Value4590 +SET Key4591 Value4591 +SET Key4592 Value4592 +SET Key4593 Value4593 +SET Key4594 Value4594 +SET Key4595 Value4595 +SET Key4596 Value4596 +SET Key4597 Value4597 +SET Key4598 Value4598 +SET Key4599 Value4599 +SET Key4600 Value4600 +SET Key4601 Value4601 +SET Key4602 Value4602 +SET Key4603 Value4603 +SET Key4604 Value4604 +SET Key4605 Value4605 +SET Key4606 Value4606 +SET Key4607 Value4607 +SET Key4608 Value4608 +SET Key4609 Value4609 +SET Key4610 Value4610 +SET Key4611 Value4611 +SET Key4612 Value4612 +SET Key4613 Value4613 +SET Key4614 Value4614 +SET Key4615 Value4615 +SET Key4616 Value4616 +SET Key4617 Value4617 +SET Key4618 Value4618 +SET Key4619 Value4619 +SET Key4620 Value4620 +SET Key4621 Value4621 +SET Key4622 Value4622 +SET Key4623 Value4623 +SET Key4624 Value4624 +SET Key4625 Value4625 +SET Key4626 Value4626 +SET Key4627 Value4627 +SET Key4628 Value4628 +SET Key4629 Value4629 +SET Key4630 Value4630 +SET Key4631 Value4631 +SET Key4632 Value4632 +SET Key4633 Value4633 +SET Key4634 Value4634 +SET Key4635 Value4635 +SET Key4636 Value4636 +SET Key4637 Value4637 +SET Key4638 Value4638 +SET Key4639 Value4639 +SET Key4640 Value4640 +SET Key4641 Value4641 +SET Key4642 Value4642 +SET Key4643 Value4643 +SET Key4644 Value4644 +SET Key4645 Value4645 +SET Key4646 Value4646 +SET Key4647 Value4647 +SET Key4648 Value4648 +SET Key4649 Value4649 +SET Key4650 Value4650 +SET Key4651 Value4651 +SET Key4652 Value4652 +SET Key4653 Value4653 +SET Key4654 Value4654 +SET Key4655 Value4655 +SET Key4656 Value4656 +SET Key4657 Value4657 +SET Key4658 Value4658 +SET Key4659 Value4659 +SET Key4660 Value4660 +SET Key4661 Value4661 +SET Key4662 Value4662 +SET Key4663 Value4663 +SET Key4664 Value4664 +SET Key4665 Value4665 +SET Key4666 Value4666 +SET Key4667 Value4667 +SET Key4668 Value4668 +SET Key4669 Value4669 +SET Key4670 Value4670 +SET Key4671 Value4671 +SET Key4672 Value4672 +SET Key4673 Value4673 +SET Key4674 Value4674 +SET Key4675 Value4675 +SET Key4676 Value4676 +SET Key4677 Value4677 +SET Key4678 Value4678 +SET Key4679 Value4679 +SET Key4680 Value4680 +SET Key4681 Value4681 +SET Key4682 Value4682 +SET Key4683 Value4683 +SET Key4684 Value4684 +SET Key4685 Value4685 +SET Key4686 Value4686 +SET Key4687 Value4687 +SET Key4688 Value4688 +SET Key4689 Value4689 +SET Key4690 Value4690 +SET Key4691 Value4691 +SET Key4692 Value4692 +SET Key4693 Value4693 +SET Key4694 Value4694 +SET Key4695 Value4695 +SET Key4696 Value4696 +SET Key4697 Value4697 +SET Key4698 Value4698 +SET Key4699 Value4699 +SET Key4700 Value4700 +SET Key4701 Value4701 +SET Key4702 Value4702 +SET Key4703 Value4703 +SET Key4704 Value4704 +SET Key4705 Value4705 +SET Key4706 Value4706 +SET Key4707 Value4707 +SET Key4708 Value4708 +SET Key4709 Value4709 +SET Key4710 Value4710 +SET Key4711 Value4711 +SET Key4712 Value4712 +SET Key4713 Value4713 +SET Key4714 Value4714 +SET Key4715 Value4715 +SET Key4716 Value4716 +SET Key4717 Value4717 +SET Key4718 Value4718 +SET Key4719 Value4719 +SET Key4720 Value4720 +SET Key4721 Value4721 +SET Key4722 Value4722 +SET Key4723 Value4723 +SET Key4724 Value4724 +SET Key4725 Value4725 +SET Key4726 Value4726 +SET Key4727 Value4727 +SET Key4728 Value4728 +SET Key4729 Value4729 +SET Key4730 Value4730 +SET Key4731 Value4731 +SET Key4732 Value4732 +SET Key4733 Value4733 +SET Key4734 Value4734 +SET Key4735 Value4735 +SET Key4736 Value4736 +SET Key4737 Value4737 +SET Key4738 Value4738 +SET Key4739 Value4739 +SET Key4740 Value4740 +SET Key4741 Value4741 +SET Key4742 Value4742 +SET Key4743 Value4743 +SET Key4744 Value4744 +SET Key4745 Value4745 +SET Key4746 Value4746 +SET Key4747 Value4747 +SET Key4748 Value4748 +SET Key4749 Value4749 +SET Key4750 Value4750 +SET Key4751 Value4751 +SET Key4752 Value4752 +SET Key4753 Value4753 +SET Key4754 Value4754 +SET Key4755 Value4755 +SET Key4756 Value4756 +SET Key4757 Value4757 +SET Key4758 Value4758 +SET Key4759 Value4759 +SET Key4760 Value4760 +SET Key4761 Value4761 +SET Key4762 Value4762 +SET Key4763 Value4763 +SET Key4764 Value4764 +SET Key4765 Value4765 +SET Key4766 Value4766 +SET Key4767 Value4767 +SET Key4768 Value4768 +SET Key4769 Value4769 +SET Key4770 Value4770 +SET Key4771 Value4771 +SET Key4772 Value4772 +SET Key4773 Value4773 +SET Key4774 Value4774 +SET Key4775 Value4775 +SET Key4776 Value4776 +SET Key4777 Value4777 +SET Key4778 Value4778 +SET Key4779 Value4779 +SET Key4780 Value4780 +SET Key4781 Value4781 +SET Key4782 Value4782 +SET Key4783 Value4783 +SET Key4784 Value4784 +SET Key4785 Value4785 +SET Key4786 Value4786 +SET Key4787 Value4787 +SET Key4788 Value4788 +SET Key4789 Value4789 +SET Key4790 Value4790 +SET Key4791 Value4791 +SET Key4792 Value4792 +SET Key4793 Value4793 +SET Key4794 Value4794 +SET Key4795 Value4795 +SET Key4796 Value4796 +SET Key4797 Value4797 +SET Key4798 Value4798 +SET Key4799 Value4799 +SET Key4800 Value4800 +SET Key4801 Value4801 +SET Key4802 Value4802 +SET Key4803 Value4803 +SET Key4804 Value4804 +SET Key4805 Value4805 +SET Key4806 Value4806 +SET Key4807 Value4807 +SET Key4808 Value4808 +SET Key4809 Value4809 +SET Key4810 Value4810 +SET Key4811 Value4811 +SET Key4812 Value4812 +SET Key4813 Value4813 +SET Key4814 Value4814 +SET Key4815 Value4815 +SET Key4816 Value4816 +SET Key4817 Value4817 +SET Key4818 Value4818 +SET Key4819 Value4819 +SET Key4820 Value4820 +SET Key4821 Value4821 +SET Key4822 Value4822 +SET Key4823 Value4823 +SET Key4824 Value4824 +SET Key4825 Value4825 +SET Key4826 Value4826 +SET Key4827 Value4827 +SET Key4828 Value4828 +SET Key4829 Value4829 +SET Key4830 Value4830 +SET Key4831 Value4831 +SET Key4832 Value4832 +SET Key4833 Value4833 +SET Key4834 Value4834 +SET Key4835 Value4835 +SET Key4836 Value4836 +SET Key4837 Value4837 +SET Key4838 Value4838 +SET Key4839 Value4839 +SET Key4840 Value4840 +SET Key4841 Value4841 +SET Key4842 Value4842 +SET Key4843 Value4843 +SET Key4844 Value4844 +SET Key4845 Value4845 +SET Key4846 Value4846 +SET Key4847 Value4847 +SET Key4848 Value4848 +SET Key4849 Value4849 +SET Key4850 Value4850 +SET Key4851 Value4851 +SET Key4852 Value4852 +SET Key4853 Value4853 +SET Key4854 Value4854 +SET Key4855 Value4855 +SET Key4856 Value4856 +SET Key4857 Value4857 +SET Key4858 Value4858 +SET Key4859 Value4859 +SET Key4860 Value4860 +SET Key4861 Value4861 +SET Key4862 Value4862 +SET Key4863 Value4863 +SET Key4864 Value4864 +SET Key4865 Value4865 +SET Key4866 Value4866 +SET Key4867 Value4867 +SET Key4868 Value4868 +SET Key4869 Value4869 +SET Key4870 Value4870 +SET Key4871 Value4871 +SET Key4872 Value4872 +SET Key4873 Value4873 +SET Key4874 Value4874 +SET Key4875 Value4875 +SET Key4876 Value4876 +SET Key4877 Value4877 +SET Key4878 Value4878 +SET Key4879 Value4879 +SET Key4880 Value4880 +SET Key4881 Value4881 +SET Key4882 Value4882 +SET Key4883 Value4883 +SET Key4884 Value4884 +SET Key4885 Value4885 +SET Key4886 Value4886 +SET Key4887 Value4887 +SET Key4888 Value4888 +SET Key4889 Value4889 +SET Key4890 Value4890 +SET Key4891 Value4891 +SET Key4892 Value4892 +SET Key4893 Value4893 +SET Key4894 Value4894 +SET Key4895 Value4895 +SET Key4896 Value4896 +SET Key4897 Value4897 +SET Key4898 Value4898 +SET Key4899 Value4899 +SET Key4900 Value4900 +SET Key4901 Value4901 +SET Key4902 Value4902 +SET Key4903 Value4903 +SET Key4904 Value4904 +SET Key4905 Value4905 +SET Key4906 Value4906 +SET Key4907 Value4907 +SET Key4908 Value4908 +SET Key4909 Value4909 +SET Key4910 Value4910 +SET Key4911 Value4911 +SET Key4912 Value4912 +SET Key4913 Value4913 +SET Key4914 Value4914 +SET Key4915 Value4915 +SET Key4916 Value4916 +SET Key4917 Value4917 +SET Key4918 Value4918 +SET Key4919 Value4919 +SET Key4920 Value4920 +SET Key4921 Value4921 +SET Key4922 Value4922 +SET Key4923 Value4923 +SET Key4924 Value4924 +SET Key4925 Value4925 +SET Key4926 Value4926 +SET Key4927 Value4927 +SET Key4928 Value4928 +SET Key4929 Value4929 +SET Key4930 Value4930 +SET Key4931 Value4931 +SET Key4932 Value4932 +SET Key4933 Value4933 +SET Key4934 Value4934 +SET Key4935 Value4935 +SET Key4936 Value4936 +SET Key4937 Value4937 +SET Key4938 Value4938 +SET Key4939 Value4939 +SET Key4940 Value4940 +SET Key4941 Value4941 +SET Key4942 Value4942 +SET Key4943 Value4943 +SET Key4944 Value4944 +SET Key4945 Value4945 +SET Key4946 Value4946 +SET Key4947 Value4947 +SET Key4948 Value4948 +SET Key4949 Value4949 +SET Key4950 Value4950 +SET Key4951 Value4951 +SET Key4952 Value4952 +SET Key4953 Value4953 +SET Key4954 Value4954 +SET Key4955 Value4955 +SET Key4956 Value4956 +SET Key4957 Value4957 +SET Key4958 Value4958 +SET Key4959 Value4959 +SET Key4960 Value4960 +SET Key4961 Value4961 +SET Key4962 Value4962 +SET Key4963 Value4963 +SET Key4964 Value4964 +SET Key4965 Value4965 +SET Key4966 Value4966 +SET Key4967 Value4967 +SET Key4968 Value4968 +SET Key4969 Value4969 +SET Key4970 Value4970 +SET Key4971 Value4971 +SET Key4972 Value4972 +SET Key4973 Value4973 +SET Key4974 Value4974 +SET Key4975 Value4975 +SET Key4976 Value4976 +SET Key4977 Value4977 +SET Key4978 Value4978 +SET Key4979 Value4979 +SET Key4980 Value4980 +SET Key4981 Value4981 +SET Key4982 Value4982 +SET Key4983 Value4983 +SET Key4984 Value4984 +SET Key4985 Value4985 +SET Key4986 Value4986 +SET Key4987 Value4987 +SET Key4988 Value4988 +SET Key4989 Value4989 +SET Key4990 Value4990 +SET Key4991 Value4991 +SET Key4992 Value4992 +SET Key4993 Value4993 +SET Key4994 Value4994 +SET Key4995 Value4995 +SET Key4996 Value4996 +SET Key4997 Value4997 +SET Key4998 Value4998 +SET Key4999 Value4999 +SET Key5000 Value5000 +SET Key5001 Value5001 +SET Key5002 Value5002 +SET Key5003 Value5003 +SET Key5004 Value5004 +SET Key5005 Value5005 +SET Key5006 Value5006 +SET Key5007 Value5007 +SET Key5008 Value5008 +SET Key5009 Value5009 +SET Key5010 Value5010 +SET Key5011 Value5011 +SET Key5012 Value5012 +SET Key5013 Value5013 +SET Key5014 Value5014 +SET Key5015 Value5015 +SET Key5016 Value5016 +SET Key5017 Value5017 +SET Key5018 Value5018 +SET Key5019 Value5019 +SET Key5020 Value5020 +SET Key5021 Value5021 +SET Key5022 Value5022 +SET Key5023 Value5023 +SET Key5024 Value5024 +SET Key5025 Value5025 +SET Key5026 Value5026 +SET Key5027 Value5027 +SET Key5028 Value5028 +SET Key5029 Value5029 +SET Key5030 Value5030 +SET Key5031 Value5031 +SET Key5032 Value5032 +SET Key5033 Value5033 +SET Key5034 Value5034 +SET Key5035 Value5035 +SET Key5036 Value5036 +SET Key5037 Value5037 +SET Key5038 Value5038 +SET Key5039 Value5039 +SET Key5040 Value5040 +SET Key5041 Value5041 +SET Key5042 Value5042 +SET Key5043 Value5043 +SET Key5044 Value5044 +SET Key5045 Value5045 +SET Key5046 Value5046 +SET Key5047 Value5047 +SET Key5048 Value5048 +SET Key5049 Value5049 +SET Key5050 Value5050 +SET Key5051 Value5051 +SET Key5052 Value5052 +SET Key5053 Value5053 +SET Key5054 Value5054 +SET Key5055 Value5055 +SET Key5056 Value5056 +SET Key5057 Value5057 +SET Key5058 Value5058 +SET Key5059 Value5059 +SET Key5060 Value5060 +SET Key5061 Value5061 +SET Key5062 Value5062 +SET Key5063 Value5063 +SET Key5064 Value5064 +SET Key5065 Value5065 +SET Key5066 Value5066 +SET Key5067 Value5067 +SET Key5068 Value5068 +SET Key5069 Value5069 +SET Key5070 Value5070 +SET Key5071 Value5071 +SET Key5072 Value5072 +SET Key5073 Value5073 +SET Key5074 Value5074 +SET Key5075 Value5075 +SET Key5076 Value5076 +SET Key5077 Value5077 +SET Key5078 Value5078 +SET Key5079 Value5079 +SET Key5080 Value5080 +SET Key5081 Value5081 +SET Key5082 Value5082 +SET Key5083 Value5083 +SET Key5084 Value5084 +SET Key5085 Value5085 +SET Key5086 Value5086 +SET Key5087 Value5087 +SET Key5088 Value5088 +SET Key5089 Value5089 +SET Key5090 Value5090 +SET Key5091 Value5091 +SET Key5092 Value5092 +SET Key5093 Value5093 +SET Key5094 Value5094 +SET Key5095 Value5095 +SET Key5096 Value5096 +SET Key5097 Value5097 +SET Key5098 Value5098 +SET Key5099 Value5099 +SET Key5100 Value5100 +SET Key5101 Value5101 +SET Key5102 Value5102 +SET Key5103 Value5103 +SET Key5104 Value5104 +SET Key5105 Value5105 +SET Key5106 Value5106 +SET Key5107 Value5107 +SET Key5108 Value5108 +SET Key5109 Value5109 +SET Key5110 Value5110 +SET Key5111 Value5111 +SET Key5112 Value5112 +SET Key5113 Value5113 +SET Key5114 Value5114 +SET Key5115 Value5115 +SET Key5116 Value5116 +SET Key5117 Value5117 +SET Key5118 Value5118 +SET Key5119 Value5119 +SET Key5120 Value5120 +SET Key5121 Value5121 +SET Key5122 Value5122 +SET Key5123 Value5123 +SET Key5124 Value5124 +SET Key5125 Value5125 +SET Key5126 Value5126 +SET Key5127 Value5127 +SET Key5128 Value5128 +SET Key5129 Value5129 +SET Key5130 Value5130 +SET Key5131 Value5131 +SET Key5132 Value5132 +SET Key5133 Value5133 +SET Key5134 Value5134 +SET Key5135 Value5135 +SET Key5136 Value5136 +SET Key5137 Value5137 +SET Key5138 Value5138 +SET Key5139 Value5139 +SET Key5140 Value5140 +SET Key5141 Value5141 +SET Key5142 Value5142 +SET Key5143 Value5143 +SET Key5144 Value5144 +SET Key5145 Value5145 +SET Key5146 Value5146 +SET Key5147 Value5147 +SET Key5148 Value5148 +SET Key5149 Value5149 +SET Key5150 Value5150 +SET Key5151 Value5151 +SET Key5152 Value5152 +SET Key5153 Value5153 +SET Key5154 Value5154 +SET Key5155 Value5155 +SET Key5156 Value5156 +SET Key5157 Value5157 +SET Key5158 Value5158 +SET Key5159 Value5159 +SET Key5160 Value5160 +SET Key5161 Value5161 +SET Key5162 Value5162 +SET Key5163 Value5163 +SET Key5164 Value5164 +SET Key5165 Value5165 +SET Key5166 Value5166 +SET Key5167 Value5167 +SET Key5168 Value5168 +SET Key5169 Value5169 +SET Key5170 Value5170 +SET Key5171 Value5171 +SET Key5172 Value5172 +SET Key5173 Value5173 +SET Key5174 Value5174 +SET Key5175 Value5175 +SET Key5176 Value5176 +SET Key5177 Value5177 +SET Key5178 Value5178 +SET Key5179 Value5179 +SET Key5180 Value5180 +SET Key5181 Value5181 +SET Key5182 Value5182 +SET Key5183 Value5183 +SET Key5184 Value5184 +SET Key5185 Value5185 +SET Key5186 Value5186 +SET Key5187 Value5187 +SET Key5188 Value5188 +SET Key5189 Value5189 +SET Key5190 Value5190 +SET Key5191 Value5191 +SET Key5192 Value5192 +SET Key5193 Value5193 +SET Key5194 Value5194 +SET Key5195 Value5195 +SET Key5196 Value5196 +SET Key5197 Value5197 +SET Key5198 Value5198 +SET Key5199 Value5199 +SET Key5200 Value5200 +SET Key5201 Value5201 +SET Key5202 Value5202 +SET Key5203 Value5203 +SET Key5204 Value5204 +SET Key5205 Value5205 +SET Key5206 Value5206 +SET Key5207 Value5207 +SET Key5208 Value5208 +SET Key5209 Value5209 +SET Key5210 Value5210 +SET Key5211 Value5211 +SET Key5212 Value5212 +SET Key5213 Value5213 +SET Key5214 Value5214 +SET Key5215 Value5215 +SET Key5216 Value5216 +SET Key5217 Value5217 +SET Key5218 Value5218 +SET Key5219 Value5219 +SET Key5220 Value5220 +SET Key5221 Value5221 +SET Key5222 Value5222 +SET Key5223 Value5223 +SET Key5224 Value5224 +SET Key5225 Value5225 +SET Key5226 Value5226 +SET Key5227 Value5227 +SET Key5228 Value5228 +SET Key5229 Value5229 +SET Key5230 Value5230 +SET Key5231 Value5231 +SET Key5232 Value5232 +SET Key5233 Value5233 +SET Key5234 Value5234 +SET Key5235 Value5235 +SET Key5236 Value5236 +SET Key5237 Value5237 +SET Key5238 Value5238 +SET Key5239 Value5239 +SET Key5240 Value5240 +SET Key5241 Value5241 +SET Key5242 Value5242 +SET Key5243 Value5243 +SET Key5244 Value5244 +SET Key5245 Value5245 +SET Key5246 Value5246 +SET Key5247 Value5247 +SET Key5248 Value5248 +SET Key5249 Value5249 +SET Key5250 Value5250 +SET Key5251 Value5251 +SET Key5252 Value5252 +SET Key5253 Value5253 +SET Key5254 Value5254 +SET Key5255 Value5255 +SET Key5256 Value5256 +SET Key5257 Value5257 +SET Key5258 Value5258 +SET Key5259 Value5259 +SET Key5260 Value5260 +SET Key5261 Value5261 +SET Key5262 Value5262 +SET Key5263 Value5263 +SET Key5264 Value5264 +SET Key5265 Value5265 +SET Key5266 Value5266 +SET Key5267 Value5267 +SET Key5268 Value5268 +SET Key5269 Value5269 +SET Key5270 Value5270 +SET Key5271 Value5271 +SET Key5272 Value5272 +SET Key5273 Value5273 +SET Key5274 Value5274 +SET Key5275 Value5275 +SET Key5276 Value5276 +SET Key5277 Value5277 +SET Key5278 Value5278 +SET Key5279 Value5279 +SET Key5280 Value5280 +SET Key5281 Value5281 +SET Key5282 Value5282 +SET Key5283 Value5283 +SET Key5284 Value5284 +SET Key5285 Value5285 +SET Key5286 Value5286 +SET Key5287 Value5287 +SET Key5288 Value5288 +SET Key5289 Value5289 +SET Key5290 Value5290 +SET Key5291 Value5291 +SET Key5292 Value5292 +SET Key5293 Value5293 +SET Key5294 Value5294 +SET Key5295 Value5295 +SET Key5296 Value5296 +SET Key5297 Value5297 +SET Key5298 Value5298 +SET Key5299 Value5299 +SET Key5300 Value5300 +SET Key5301 Value5301 +SET Key5302 Value5302 +SET Key5303 Value5303 +SET Key5304 Value5304 +SET Key5305 Value5305 +SET Key5306 Value5306 +SET Key5307 Value5307 +SET Key5308 Value5308 +SET Key5309 Value5309 +SET Key5310 Value5310 +SET Key5311 Value5311 +SET Key5312 Value5312 +SET Key5313 Value5313 +SET Key5314 Value5314 +SET Key5315 Value5315 +SET Key5316 Value5316 +SET Key5317 Value5317 +SET Key5318 Value5318 +SET Key5319 Value5319 +SET Key5320 Value5320 +SET Key5321 Value5321 +SET Key5322 Value5322 +SET Key5323 Value5323 +SET Key5324 Value5324 +SET Key5325 Value5325 +SET Key5326 Value5326 +SET Key5327 Value5327 +SET Key5328 Value5328 +SET Key5329 Value5329 +SET Key5330 Value5330 +SET Key5331 Value5331 +SET Key5332 Value5332 +SET Key5333 Value5333 +SET Key5334 Value5334 +SET Key5335 Value5335 +SET Key5336 Value5336 +SET Key5337 Value5337 +SET Key5338 Value5338 +SET Key5339 Value5339 +SET Key5340 Value5340 +SET Key5341 Value5341 +SET Key5342 Value5342 +SET Key5343 Value5343 +SET Key5344 Value5344 +SET Key5345 Value5345 +SET Key5346 Value5346 +SET Key5347 Value5347 +SET Key5348 Value5348 +SET Key5349 Value5349 +SET Key5350 Value5350 +SET Key5351 Value5351 +SET Key5352 Value5352 +SET Key5353 Value5353 +SET Key5354 Value5354 +SET Key5355 Value5355 +SET Key5356 Value5356 +SET Key5357 Value5357 +SET Key5358 Value5358 +SET Key5359 Value5359 +SET Key5360 Value5360 +SET Key5361 Value5361 +SET Key5362 Value5362 +SET Key5363 Value5363 +SET Key5364 Value5364 +SET Key5365 Value5365 +SET Key5366 Value5366 +SET Key5367 Value5367 +SET Key5368 Value5368 +SET Key5369 Value5369 +SET Key5370 Value5370 +SET Key5371 Value5371 +SET Key5372 Value5372 +SET Key5373 Value5373 +SET Key5374 Value5374 +SET Key5375 Value5375 +SET Key5376 Value5376 +SET Key5377 Value5377 +SET Key5378 Value5378 +SET Key5379 Value5379 +SET Key5380 Value5380 +SET Key5381 Value5381 +SET Key5382 Value5382 +SET Key5383 Value5383 +SET Key5384 Value5384 +SET Key5385 Value5385 +SET Key5386 Value5386 +SET Key5387 Value5387 +SET Key5388 Value5388 +SET Key5389 Value5389 +SET Key5390 Value5390 +SET Key5391 Value5391 +SET Key5392 Value5392 +SET Key5393 Value5393 +SET Key5394 Value5394 +SET Key5395 Value5395 +SET Key5396 Value5396 +SET Key5397 Value5397 +SET Key5398 Value5398 +SET Key5399 Value5399 +SET Key5400 Value5400 +SET Key5401 Value5401 +SET Key5402 Value5402 +SET Key5403 Value5403 +SET Key5404 Value5404 +SET Key5405 Value5405 +SET Key5406 Value5406 +SET Key5407 Value5407 +SET Key5408 Value5408 +SET Key5409 Value5409 +SET Key5410 Value5410 +SET Key5411 Value5411 +SET Key5412 Value5412 +SET Key5413 Value5413 +SET Key5414 Value5414 +SET Key5415 Value5415 +SET Key5416 Value5416 +SET Key5417 Value5417 +SET Key5418 Value5418 +SET Key5419 Value5419 +SET Key5420 Value5420 +SET Key5421 Value5421 +SET Key5422 Value5422 +SET Key5423 Value5423 +SET Key5424 Value5424 +SET Key5425 Value5425 +SET Key5426 Value5426 +SET Key5427 Value5427 +SET Key5428 Value5428 +SET Key5429 Value5429 +SET Key5430 Value5430 +SET Key5431 Value5431 +SET Key5432 Value5432 +SET Key5433 Value5433 +SET Key5434 Value5434 +SET Key5435 Value5435 +SET Key5436 Value5436 +SET Key5437 Value5437 +SET Key5438 Value5438 +SET Key5439 Value5439 +SET Key5440 Value5440 +SET Key5441 Value5441 +SET Key5442 Value5442 +SET Key5443 Value5443 +SET Key5444 Value5444 +SET Key5445 Value5445 +SET Key5446 Value5446 +SET Key5447 Value5447 +SET Key5448 Value5448 +SET Key5449 Value5449 +SET Key5450 Value5450 +SET Key5451 Value5451 +SET Key5452 Value5452 +SET Key5453 Value5453 +SET Key5454 Value5454 +SET Key5455 Value5455 +SET Key5456 Value5456 +SET Key5457 Value5457 +SET Key5458 Value5458 +SET Key5459 Value5459 +SET Key5460 Value5460 +SET Key5461 Value5461 +SET Key5462 Value5462 +SET Key5463 Value5463 +SET Key5464 Value5464 +SET Key5465 Value5465 +SET Key5466 Value5466 +SET Key5467 Value5467 +SET Key5468 Value5468 +SET Key5469 Value5469 +SET Key5470 Value5470 +SET Key5471 Value5471 +SET Key5472 Value5472 +SET Key5473 Value5473 +SET Key5474 Value5474 +SET Key5475 Value5475 +SET Key5476 Value5476 +SET Key5477 Value5477 +SET Key5478 Value5478 +SET Key5479 Value5479 +SET Key5480 Value5480 +SET Key5481 Value5481 +SET Key5482 Value5482 +SET Key5483 Value5483 +SET Key5484 Value5484 +SET Key5485 Value5485 +SET Key5486 Value5486 +SET Key5487 Value5487 +SET Key5488 Value5488 +SET Key5489 Value5489 +SET Key5490 Value5490 +SET Key5491 Value5491 +SET Key5492 Value5492 +SET Key5493 Value5493 +SET Key5494 Value5494 +SET Key5495 Value5495 +SET Key5496 Value5496 +SET Key5497 Value5497 +SET Key5498 Value5498 +SET Key5499 Value5499 +SET Key5500 Value5500 +SET Key5501 Value5501 +SET Key5502 Value5502 +SET Key5503 Value5503 +SET Key5504 Value5504 +SET Key5505 Value5505 +SET Key5506 Value5506 +SET Key5507 Value5507 +SET Key5508 Value5508 +SET Key5509 Value5509 +SET Key5510 Value5510 +SET Key5511 Value5511 +SET Key5512 Value5512 +SET Key5513 Value5513 +SET Key5514 Value5514 +SET Key5515 Value5515 +SET Key5516 Value5516 +SET Key5517 Value5517 +SET Key5518 Value5518 +SET Key5519 Value5519 +SET Key5520 Value5520 +SET Key5521 Value5521 +SET Key5522 Value5522 +SET Key5523 Value5523 +SET Key5524 Value5524 +SET Key5525 Value5525 +SET Key5526 Value5526 +SET Key5527 Value5527 +SET Key5528 Value5528 +SET Key5529 Value5529 +SET Key5530 Value5530 +SET Key5531 Value5531 +SET Key5532 Value5532 +SET Key5533 Value5533 +SET Key5534 Value5534 +SET Key5535 Value5535 +SET Key5536 Value5536 +SET Key5537 Value5537 +SET Key5538 Value5538 +SET Key5539 Value5539 +SET Key5540 Value5540 +SET Key5541 Value5541 +SET Key5542 Value5542 +SET Key5543 Value5543 +SET Key5544 Value5544 +SET Key5545 Value5545 +SET Key5546 Value5546 +SET Key5547 Value5547 +SET Key5548 Value5548 +SET Key5549 Value5549 +SET Key5550 Value5550 +SET Key5551 Value5551 +SET Key5552 Value5552 +SET Key5553 Value5553 +SET Key5554 Value5554 +SET Key5555 Value5555 +SET Key5556 Value5556 +SET Key5557 Value5557 +SET Key5558 Value5558 +SET Key5559 Value5559 +SET Key5560 Value5560 +SET Key5561 Value5561 +SET Key5562 Value5562 +SET Key5563 Value5563 +SET Key5564 Value5564 +SET Key5565 Value5565 +SET Key5566 Value5566 +SET Key5567 Value5567 +SET Key5568 Value5568 +SET Key5569 Value5569 +SET Key5570 Value5570 +SET Key5571 Value5571 +SET Key5572 Value5572 +SET Key5573 Value5573 +SET Key5574 Value5574 +SET Key5575 Value5575 +SET Key5576 Value5576 +SET Key5577 Value5577 +SET Key5578 Value5578 +SET Key5579 Value5579 +SET Key5580 Value5580 +SET Key5581 Value5581 +SET Key5582 Value5582 +SET Key5583 Value5583 +SET Key5584 Value5584 +SET Key5585 Value5585 +SET Key5586 Value5586 +SET Key5587 Value5587 +SET Key5588 Value5588 +SET Key5589 Value5589 +SET Key5590 Value5590 +SET Key5591 Value5591 +SET Key5592 Value5592 +SET Key5593 Value5593 +SET Key5594 Value5594 +SET Key5595 Value5595 +SET Key5596 Value5596 +SET Key5597 Value5597 +SET Key5598 Value5598 +SET Key5599 Value5599 +SET Key5600 Value5600 +SET Key5601 Value5601 +SET Key5602 Value5602 +SET Key5603 Value5603 +SET Key5604 Value5604 +SET Key5605 Value5605 +SET Key5606 Value5606 +SET Key5607 Value5607 +SET Key5608 Value5608 +SET Key5609 Value5609 +SET Key5610 Value5610 +SET Key5611 Value5611 +SET Key5612 Value5612 +SET Key5613 Value5613 +SET Key5614 Value5614 +SET Key5615 Value5615 +SET Key5616 Value5616 +SET Key5617 Value5617 +SET Key5618 Value5618 +SET Key5619 Value5619 +SET Key5620 Value5620 +SET Key5621 Value5621 +SET Key5622 Value5622 +SET Key5623 Value5623 +SET Key5624 Value5624 +SET Key5625 Value5625 +SET Key5626 Value5626 +SET Key5627 Value5627 +SET Key5628 Value5628 +SET Key5629 Value5629 +SET Key5630 Value5630 +SET Key5631 Value5631 +SET Key5632 Value5632 +SET Key5633 Value5633 +SET Key5634 Value5634 +SET Key5635 Value5635 +SET Key5636 Value5636 +SET Key5637 Value5637 +SET Key5638 Value5638 +SET Key5639 Value5639 +SET Key5640 Value5640 +SET Key5641 Value5641 +SET Key5642 Value5642 +SET Key5643 Value5643 +SET Key5644 Value5644 +SET Key5645 Value5645 +SET Key5646 Value5646 +SET Key5647 Value5647 +SET Key5648 Value5648 +SET Key5649 Value5649 +SET Key5650 Value5650 +SET Key5651 Value5651 +SET Key5652 Value5652 +SET Key5653 Value5653 +SET Key5654 Value5654 +SET Key5655 Value5655 +SET Key5656 Value5656 +SET Key5657 Value5657 +SET Key5658 Value5658 +SET Key5659 Value5659 +SET Key5660 Value5660 +SET Key5661 Value5661 +SET Key5662 Value5662 +SET Key5663 Value5663 +SET Key5664 Value5664 +SET Key5665 Value5665 +SET Key5666 Value5666 +SET Key5667 Value5667 +SET Key5668 Value5668 +SET Key5669 Value5669 +SET Key5670 Value5670 +SET Key5671 Value5671 +SET Key5672 Value5672 +SET Key5673 Value5673 +SET Key5674 Value5674 +SET Key5675 Value5675 +SET Key5676 Value5676 +SET Key5677 Value5677 +SET Key5678 Value5678 +SET Key5679 Value5679 +SET Key5680 Value5680 +SET Key5681 Value5681 +SET Key5682 Value5682 +SET Key5683 Value5683 +SET Key5684 Value5684 +SET Key5685 Value5685 +SET Key5686 Value5686 +SET Key5687 Value5687 +SET Key5688 Value5688 +SET Key5689 Value5689 +SET Key5690 Value5690 +SET Key5691 Value5691 +SET Key5692 Value5692 +SET Key5693 Value5693 +SET Key5694 Value5694 +SET Key5695 Value5695 +SET Key5696 Value5696 +SET Key5697 Value5697 +SET Key5698 Value5698 +SET Key5699 Value5699 +SET Key5700 Value5700 +SET Key5701 Value5701 +SET Key5702 Value5702 +SET Key5703 Value5703 +SET Key5704 Value5704 +SET Key5705 Value5705 +SET Key5706 Value5706 +SET Key5707 Value5707 +SET Key5708 Value5708 +SET Key5709 Value5709 +SET Key5710 Value5710 +SET Key5711 Value5711 +SET Key5712 Value5712 +SET Key5713 Value5713 +SET Key5714 Value5714 +SET Key5715 Value5715 +SET Key5716 Value5716 +SET Key5717 Value5717 +SET Key5718 Value5718 +SET Key5719 Value5719 +SET Key5720 Value5720 +SET Key5721 Value5721 +SET Key5722 Value5722 +SET Key5723 Value5723 +SET Key5724 Value5724 +SET Key5725 Value5725 +SET Key5726 Value5726 +SET Key5727 Value5727 +SET Key5728 Value5728 +SET Key5729 Value5729 +SET Key5730 Value5730 +SET Key5731 Value5731 +SET Key5732 Value5732 +SET Key5733 Value5733 +SET Key5734 Value5734 +SET Key5735 Value5735 +SET Key5736 Value5736 +SET Key5737 Value5737 +SET Key5738 Value5738 +SET Key5739 Value5739 +SET Key5740 Value5740 +SET Key5741 Value5741 +SET Key5742 Value5742 +SET Key5743 Value5743 +SET Key5744 Value5744 +SET Key5745 Value5745 +SET Key5746 Value5746 +SET Key5747 Value5747 +SET Key5748 Value5748 +SET Key5749 Value5749 +SET Key5750 Value5750 +SET Key5751 Value5751 +SET Key5752 Value5752 +SET Key5753 Value5753 +SET Key5754 Value5754 +SET Key5755 Value5755 +SET Key5756 Value5756 +SET Key5757 Value5757 +SET Key5758 Value5758 +SET Key5759 Value5759 +SET Key5760 Value5760 +SET Key5761 Value5761 +SET Key5762 Value5762 +SET Key5763 Value5763 +SET Key5764 Value5764 +SET Key5765 Value5765 +SET Key5766 Value5766 +SET Key5767 Value5767 +SET Key5768 Value5768 +SET Key5769 Value5769 +SET Key5770 Value5770 +SET Key5771 Value5771 +SET Key5772 Value5772 +SET Key5773 Value5773 +SET Key5774 Value5774 +SET Key5775 Value5775 +SET Key5776 Value5776 +SET Key5777 Value5777 +SET Key5778 Value5778 +SET Key5779 Value5779 +SET Key5780 Value5780 +SET Key5781 Value5781 +SET Key5782 Value5782 +SET Key5783 Value5783 +SET Key5784 Value5784 +SET Key5785 Value5785 +SET Key5786 Value5786 +SET Key5787 Value5787 +SET Key5788 Value5788 +SET Key5789 Value5789 +SET Key5790 Value5790 +SET Key5791 Value5791 +SET Key5792 Value5792 +SET Key5793 Value5793 +SET Key5794 Value5794 +SET Key5795 Value5795 +SET Key5796 Value5796 +SET Key5797 Value5797 +SET Key5798 Value5798 +SET Key5799 Value5799 +SET Key5800 Value5800 +SET Key5801 Value5801 +SET Key5802 Value5802 +SET Key5803 Value5803 +SET Key5804 Value5804 +SET Key5805 Value5805 +SET Key5806 Value5806 +SET Key5807 Value5807 +SET Key5808 Value5808 +SET Key5809 Value5809 +SET Key5810 Value5810 +SET Key5811 Value5811 +SET Key5812 Value5812 +SET Key5813 Value5813 +SET Key5814 Value5814 +SET Key5815 Value5815 +SET Key5816 Value5816 +SET Key5817 Value5817 +SET Key5818 Value5818 +SET Key5819 Value5819 +SET Key5820 Value5820 +SET Key5821 Value5821 +SET Key5822 Value5822 +SET Key5823 Value5823 +SET Key5824 Value5824 +SET Key5825 Value5825 +SET Key5826 Value5826 +SET Key5827 Value5827 +SET Key5828 Value5828 +SET Key5829 Value5829 +SET Key5830 Value5830 +SET Key5831 Value5831 +SET Key5832 Value5832 +SET Key5833 Value5833 +SET Key5834 Value5834 +SET Key5835 Value5835 +SET Key5836 Value5836 +SET Key5837 Value5837 +SET Key5838 Value5838 +SET Key5839 Value5839 +SET Key5840 Value5840 +SET Key5841 Value5841 +SET Key5842 Value5842 +SET Key5843 Value5843 +SET Key5844 Value5844 +SET Key5845 Value5845 +SET Key5846 Value5846 +SET Key5847 Value5847 +SET Key5848 Value5848 +SET Key5849 Value5849 +SET Key5850 Value5850 +SET Key5851 Value5851 +SET Key5852 Value5852 +SET Key5853 Value5853 +SET Key5854 Value5854 +SET Key5855 Value5855 +SET Key5856 Value5856 +SET Key5857 Value5857 +SET Key5858 Value5858 +SET Key5859 Value5859 +SET Key5860 Value5860 +SET Key5861 Value5861 +SET Key5862 Value5862 +SET Key5863 Value5863 +SET Key5864 Value5864 +SET Key5865 Value5865 +SET Key5866 Value5866 +SET Key5867 Value5867 +SET Key5868 Value5868 +SET Key5869 Value5869 +SET Key5870 Value5870 +SET Key5871 Value5871 +SET Key5872 Value5872 +SET Key5873 Value5873 +SET Key5874 Value5874 +SET Key5875 Value5875 +SET Key5876 Value5876 +SET Key5877 Value5877 +SET Key5878 Value5878 +SET Key5879 Value5879 +SET Key5880 Value5880 +SET Key5881 Value5881 +SET Key5882 Value5882 +SET Key5883 Value5883 +SET Key5884 Value5884 +SET Key5885 Value5885 +SET Key5886 Value5886 +SET Key5887 Value5887 +SET Key5888 Value5888 +SET Key5889 Value5889 +SET Key5890 Value5890 +SET Key5891 Value5891 +SET Key5892 Value5892 +SET Key5893 Value5893 +SET Key5894 Value5894 +SET Key5895 Value5895 +SET Key5896 Value5896 +SET Key5897 Value5897 +SET Key5898 Value5898 +SET Key5899 Value5899 +SET Key5900 Value5900 +SET Key5901 Value5901 +SET Key5902 Value5902 +SET Key5903 Value5903 +SET Key5904 Value5904 +SET Key5905 Value5905 +SET Key5906 Value5906 +SET Key5907 Value5907 +SET Key5908 Value5908 +SET Key5909 Value5909 +SET Key5910 Value5910 +SET Key5911 Value5911 +SET Key5912 Value5912 +SET Key5913 Value5913 +SET Key5914 Value5914 +SET Key5915 Value5915 +SET Key5916 Value5916 +SET Key5917 Value5917 +SET Key5918 Value5918 +SET Key5919 Value5919 +SET Key5920 Value5920 +SET Key5921 Value5921 +SET Key5922 Value5922 +SET Key5923 Value5923 +SET Key5924 Value5924 +SET Key5925 Value5925 +SET Key5926 Value5926 +SET Key5927 Value5927 +SET Key5928 Value5928 +SET Key5929 Value5929 +SET Key5930 Value5930 +SET Key5931 Value5931 +SET Key5932 Value5932 +SET Key5933 Value5933 +SET Key5934 Value5934 +SET Key5935 Value5935 +SET Key5936 Value5936 +SET Key5937 Value5937 +SET Key5938 Value5938 +SET Key5939 Value5939 +SET Key5940 Value5940 +SET Key5941 Value5941 +SET Key5942 Value5942 +SET Key5943 Value5943 +SET Key5944 Value5944 +SET Key5945 Value5945 +SET Key5946 Value5946 +SET Key5947 Value5947 +SET Key5948 Value5948 +SET Key5949 Value5949 +SET Key5950 Value5950 +SET Key5951 Value5951 +SET Key5952 Value5952 +SET Key5953 Value5953 +SET Key5954 Value5954 +SET Key5955 Value5955 +SET Key5956 Value5956 +SET Key5957 Value5957 +SET Key5958 Value5958 +SET Key5959 Value5959 +SET Key5960 Value5960 +SET Key5961 Value5961 +SET Key5962 Value5962 +SET Key5963 Value5963 +SET Key5964 Value5964 +SET Key5965 Value5965 +SET Key5966 Value5966 +SET Key5967 Value5967 +SET Key5968 Value5968 +SET Key5969 Value5969 +SET Key5970 Value5970 +SET Key5971 Value5971 +SET Key5972 Value5972 +SET Key5973 Value5973 +SET Key5974 Value5974 +SET Key5975 Value5975 +SET Key5976 Value5976 +SET Key5977 Value5977 +SET Key5978 Value5978 +SET Key5979 Value5979 +SET Key5980 Value5980 +SET Key5981 Value5981 +SET Key5982 Value5982 +SET Key5983 Value5983 +SET Key5984 Value5984 +SET Key5985 Value5985 +SET Key5986 Value5986 +SET Key5987 Value5987 +SET Key5988 Value5988 +SET Key5989 Value5989 +SET Key5990 Value5990 +SET Key5991 Value5991 +SET Key5992 Value5992 +SET Key5993 Value5993 +SET Key5994 Value5994 +SET Key5995 Value5995 +SET Key5996 Value5996 +SET Key5997 Value5997 +SET Key5998 Value5998 +SET Key5999 Value5999 +SET Key6000 Value6000 +SET Key6001 Value6001 +SET Key6002 Value6002 +SET Key6003 Value6003 +SET Key6004 Value6004 +SET Key6005 Value6005 +SET Key6006 Value6006 +SET Key6007 Value6007 +SET Key6008 Value6008 +SET Key6009 Value6009 +SET Key6010 Value6010 +SET Key6011 Value6011 +SET Key6012 Value6012 +SET Key6013 Value6013 +SET Key6014 Value6014 +SET Key6015 Value6015 +SET Key6016 Value6016 +SET Key6017 Value6017 +SET Key6018 Value6018 +SET Key6019 Value6019 +SET Key6020 Value6020 +SET Key6021 Value6021 +SET Key6022 Value6022 +SET Key6023 Value6023 +SET Key6024 Value6024 +SET Key6025 Value6025 +SET Key6026 Value6026 +SET Key6027 Value6027 +SET Key6028 Value6028 +SET Key6029 Value6029 +SET Key6030 Value6030 +SET Key6031 Value6031 +SET Key6032 Value6032 +SET Key6033 Value6033 +SET Key6034 Value6034 +SET Key6035 Value6035 +SET Key6036 Value6036 +SET Key6037 Value6037 +SET Key6038 Value6038 +SET Key6039 Value6039 +SET Key6040 Value6040 +SET Key6041 Value6041 +SET Key6042 Value6042 +SET Key6043 Value6043 +SET Key6044 Value6044 +SET Key6045 Value6045 +SET Key6046 Value6046 +SET Key6047 Value6047 +SET Key6048 Value6048 +SET Key6049 Value6049 +SET Key6050 Value6050 +SET Key6051 Value6051 +SET Key6052 Value6052 +SET Key6053 Value6053 +SET Key6054 Value6054 +SET Key6055 Value6055 +SET Key6056 Value6056 +SET Key6057 Value6057 +SET Key6058 Value6058 +SET Key6059 Value6059 +SET Key6060 Value6060 +SET Key6061 Value6061 +SET Key6062 Value6062 +SET Key6063 Value6063 +SET Key6064 Value6064 +SET Key6065 Value6065 +SET Key6066 Value6066 +SET Key6067 Value6067 +SET Key6068 Value6068 +SET Key6069 Value6069 +SET Key6070 Value6070 +SET Key6071 Value6071 +SET Key6072 Value6072 +SET Key6073 Value6073 +SET Key6074 Value6074 +SET Key6075 Value6075 +SET Key6076 Value6076 +SET Key6077 Value6077 +SET Key6078 Value6078 +SET Key6079 Value6079 +SET Key6080 Value6080 +SET Key6081 Value6081 +SET Key6082 Value6082 +SET Key6083 Value6083 +SET Key6084 Value6084 +SET Key6085 Value6085 +SET Key6086 Value6086 +SET Key6087 Value6087 +SET Key6088 Value6088 +SET Key6089 Value6089 +SET Key6090 Value6090 +SET Key6091 Value6091 +SET Key6092 Value6092 +SET Key6093 Value6093 +SET Key6094 Value6094 +SET Key6095 Value6095 +SET Key6096 Value6096 +SET Key6097 Value6097 +SET Key6098 Value6098 +SET Key6099 Value6099 +SET Key6100 Value6100 +SET Key6101 Value6101 +SET Key6102 Value6102 +SET Key6103 Value6103 +SET Key6104 Value6104 +SET Key6105 Value6105 +SET Key6106 Value6106 +SET Key6107 Value6107 +SET Key6108 Value6108 +SET Key6109 Value6109 +SET Key6110 Value6110 +SET Key6111 Value6111 +SET Key6112 Value6112 +SET Key6113 Value6113 +SET Key6114 Value6114 +SET Key6115 Value6115 +SET Key6116 Value6116 +SET Key6117 Value6117 +SET Key6118 Value6118 +SET Key6119 Value6119 +SET Key6120 Value6120 +SET Key6121 Value6121 +SET Key6122 Value6122 +SET Key6123 Value6123 +SET Key6124 Value6124 +SET Key6125 Value6125 +SET Key6126 Value6126 +SET Key6127 Value6127 +SET Key6128 Value6128 +SET Key6129 Value6129 +SET Key6130 Value6130 +SET Key6131 Value6131 +SET Key6132 Value6132 +SET Key6133 Value6133 +SET Key6134 Value6134 +SET Key6135 Value6135 +SET Key6136 Value6136 +SET Key6137 Value6137 +SET Key6138 Value6138 +SET Key6139 Value6139 +SET Key6140 Value6140 +SET Key6141 Value6141 +SET Key6142 Value6142 +SET Key6143 Value6143 +SET Key6144 Value6144 +SET Key6145 Value6145 +SET Key6146 Value6146 +SET Key6147 Value6147 +SET Key6148 Value6148 +SET Key6149 Value6149 +SET Key6150 Value6150 +SET Key6151 Value6151 +SET Key6152 Value6152 +SET Key6153 Value6153 +SET Key6154 Value6154 +SET Key6155 Value6155 +SET Key6156 Value6156 +SET Key6157 Value6157 +SET Key6158 Value6158 +SET Key6159 Value6159 +SET Key6160 Value6160 +SET Key6161 Value6161 +SET Key6162 Value6162 +SET Key6163 Value6163 +SET Key6164 Value6164 +SET Key6165 Value6165 +SET Key6166 Value6166 +SET Key6167 Value6167 +SET Key6168 Value6168 +SET Key6169 Value6169 +SET Key6170 Value6170 +SET Key6171 Value6171 +SET Key6172 Value6172 +SET Key6173 Value6173 +SET Key6174 Value6174 +SET Key6175 Value6175 +SET Key6176 Value6176 +SET Key6177 Value6177 +SET Key6178 Value6178 +SET Key6179 Value6179 +SET Key6180 Value6180 +SET Key6181 Value6181 +SET Key6182 Value6182 +SET Key6183 Value6183 +SET Key6184 Value6184 +SET Key6185 Value6185 +SET Key6186 Value6186 +SET Key6187 Value6187 +SET Key6188 Value6188 +SET Key6189 Value6189 +SET Key6190 Value6190 +SET Key6191 Value6191 +SET Key6192 Value6192 +SET Key6193 Value6193 +SET Key6194 Value6194 +SET Key6195 Value6195 +SET Key6196 Value6196 +SET Key6197 Value6197 +SET Key6198 Value6198 +SET Key6199 Value6199 +SET Key6200 Value6200 +SET Key6201 Value6201 +SET Key6202 Value6202 +SET Key6203 Value6203 +SET Key6204 Value6204 +SET Key6205 Value6205 +SET Key6206 Value6206 +SET Key6207 Value6207 +SET Key6208 Value6208 +SET Key6209 Value6209 +SET Key6210 Value6210 +SET Key6211 Value6211 +SET Key6212 Value6212 +SET Key6213 Value6213 +SET Key6214 Value6214 +SET Key6215 Value6215 +SET Key6216 Value6216 +SET Key6217 Value6217 +SET Key6218 Value6218 +SET Key6219 Value6219 +SET Key6220 Value6220 +SET Key6221 Value6221 +SET Key6222 Value6222 +SET Key6223 Value6223 +SET Key6224 Value6224 +SET Key6225 Value6225 +SET Key6226 Value6226 +SET Key6227 Value6227 +SET Key6228 Value6228 +SET Key6229 Value6229 +SET Key6230 Value6230 +SET Key6231 Value6231 +SET Key6232 Value6232 +SET Key6233 Value6233 +SET Key6234 Value6234 +SET Key6235 Value6235 +SET Key6236 Value6236 +SET Key6237 Value6237 +SET Key6238 Value6238 +SET Key6239 Value6239 +SET Key6240 Value6240 +SET Key6241 Value6241 +SET Key6242 Value6242 +SET Key6243 Value6243 +SET Key6244 Value6244 +SET Key6245 Value6245 +SET Key6246 Value6246 +SET Key6247 Value6247 +SET Key6248 Value6248 +SET Key6249 Value6249 +SET Key6250 Value6250 +SET Key6251 Value6251 +SET Key6252 Value6252 +SET Key6253 Value6253 +SET Key6254 Value6254 +SET Key6255 Value6255 +SET Key6256 Value6256 +SET Key6257 Value6257 +SET Key6258 Value6258 +SET Key6259 Value6259 +SET Key6260 Value6260 +SET Key6261 Value6261 +SET Key6262 Value6262 +SET Key6263 Value6263 +SET Key6264 Value6264 +SET Key6265 Value6265 +SET Key6266 Value6266 +SET Key6267 Value6267 +SET Key6268 Value6268 +SET Key6269 Value6269 +SET Key6270 Value6270 +SET Key6271 Value6271 +SET Key6272 Value6272 +SET Key6273 Value6273 +SET Key6274 Value6274 +SET Key6275 Value6275 +SET Key6276 Value6276 +SET Key6277 Value6277 +SET Key6278 Value6278 +SET Key6279 Value6279 +SET Key6280 Value6280 +SET Key6281 Value6281 +SET Key6282 Value6282 +SET Key6283 Value6283 +SET Key6284 Value6284 +SET Key6285 Value6285 +SET Key6286 Value6286 +SET Key6287 Value6287 +SET Key6288 Value6288 +SET Key6289 Value6289 +SET Key6290 Value6290 +SET Key6291 Value6291 +SET Key6292 Value6292 +SET Key6293 Value6293 +SET Key6294 Value6294 +SET Key6295 Value6295 +SET Key6296 Value6296 +SET Key6297 Value6297 +SET Key6298 Value6298 +SET Key6299 Value6299 +SET Key6300 Value6300 +SET Key6301 Value6301 +SET Key6302 Value6302 +SET Key6303 Value6303 +SET Key6304 Value6304 +SET Key6305 Value6305 +SET Key6306 Value6306 +SET Key6307 Value6307 +SET Key6308 Value6308 +SET Key6309 Value6309 +SET Key6310 Value6310 +SET Key6311 Value6311 +SET Key6312 Value6312 +SET Key6313 Value6313 +SET Key6314 Value6314 +SET Key6315 Value6315 +SET Key6316 Value6316 +SET Key6317 Value6317 +SET Key6318 Value6318 +SET Key6319 Value6319 +SET Key6320 Value6320 +SET Key6321 Value6321 +SET Key6322 Value6322 +SET Key6323 Value6323 +SET Key6324 Value6324 +SET Key6325 Value6325 +SET Key6326 Value6326 +SET Key6327 Value6327 +SET Key6328 Value6328 +SET Key6329 Value6329 +SET Key6330 Value6330 +SET Key6331 Value6331 +SET Key6332 Value6332 +SET Key6333 Value6333 +SET Key6334 Value6334 +SET Key6335 Value6335 +SET Key6336 Value6336 +SET Key6337 Value6337 +SET Key6338 Value6338 +SET Key6339 Value6339 +SET Key6340 Value6340 +SET Key6341 Value6341 +SET Key6342 Value6342 +SET Key6343 Value6343 +SET Key6344 Value6344 +SET Key6345 Value6345 +SET Key6346 Value6346 +SET Key6347 Value6347 +SET Key6348 Value6348 +SET Key6349 Value6349 +SET Key6350 Value6350 +SET Key6351 Value6351 +SET Key6352 Value6352 +SET Key6353 Value6353 +SET Key6354 Value6354 +SET Key6355 Value6355 +SET Key6356 Value6356 +SET Key6357 Value6357 +SET Key6358 Value6358 +SET Key6359 Value6359 +SET Key6360 Value6360 +SET Key6361 Value6361 +SET Key6362 Value6362 +SET Key6363 Value6363 +SET Key6364 Value6364 +SET Key6365 Value6365 +SET Key6366 Value6366 +SET Key6367 Value6367 +SET Key6368 Value6368 +SET Key6369 Value6369 +SET Key6370 Value6370 +SET Key6371 Value6371 +SET Key6372 Value6372 +SET Key6373 Value6373 +SET Key6374 Value6374 +SET Key6375 Value6375 +SET Key6376 Value6376 +SET Key6377 Value6377 +SET Key6378 Value6378 +SET Key6379 Value6379 +SET Key6380 Value6380 +SET Key6381 Value6381 +SET Key6382 Value6382 +SET Key6383 Value6383 +SET Key6384 Value6384 +SET Key6385 Value6385 +SET Key6386 Value6386 +SET Key6387 Value6387 +SET Key6388 Value6388 +SET Key6389 Value6389 +SET Key6390 Value6390 +SET Key6391 Value6391 +SET Key6392 Value6392 +SET Key6393 Value6393 +SET Key6394 Value6394 +SET Key6395 Value6395 +SET Key6396 Value6396 +SET Key6397 Value6397 +SET Key6398 Value6398 +SET Key6399 Value6399 +SET Key6400 Value6400 +SET Key6401 Value6401 +SET Key6402 Value6402 +SET Key6403 Value6403 +SET Key6404 Value6404 +SET Key6405 Value6405 +SET Key6406 Value6406 +SET Key6407 Value6407 +SET Key6408 Value6408 +SET Key6409 Value6409 +SET Key6410 Value6410 +SET Key6411 Value6411 +SET Key6412 Value6412 +SET Key6413 Value6413 +SET Key6414 Value6414 +SET Key6415 Value6415 +SET Key6416 Value6416 +SET Key6417 Value6417 +SET Key6418 Value6418 +SET Key6419 Value6419 +SET Key6420 Value6420 +SET Key6421 Value6421 +SET Key6422 Value6422 +SET Key6423 Value6423 +SET Key6424 Value6424 +SET Key6425 Value6425 +SET Key6426 Value6426 +SET Key6427 Value6427 +SET Key6428 Value6428 +SET Key6429 Value6429 +SET Key6430 Value6430 +SET Key6431 Value6431 +SET Key6432 Value6432 +SET Key6433 Value6433 +SET Key6434 Value6434 +SET Key6435 Value6435 +SET Key6436 Value6436 +SET Key6437 Value6437 +SET Key6438 Value6438 +SET Key6439 Value6439 +SET Key6440 Value6440 +SET Key6441 Value6441 +SET Key6442 Value6442 +SET Key6443 Value6443 +SET Key6444 Value6444 +SET Key6445 Value6445 +SET Key6446 Value6446 +SET Key6447 Value6447 +SET Key6448 Value6448 +SET Key6449 Value6449 +SET Key6450 Value6450 +SET Key6451 Value6451 +SET Key6452 Value6452 +SET Key6453 Value6453 +SET Key6454 Value6454 +SET Key6455 Value6455 +SET Key6456 Value6456 +SET Key6457 Value6457 +SET Key6458 Value6458 +SET Key6459 Value6459 +SET Key6460 Value6460 +SET Key6461 Value6461 +SET Key6462 Value6462 +SET Key6463 Value6463 +SET Key6464 Value6464 +SET Key6465 Value6465 +SET Key6466 Value6466 +SET Key6467 Value6467 +SET Key6468 Value6468 +SET Key6469 Value6469 +SET Key6470 Value6470 +SET Key6471 Value6471 +SET Key6472 Value6472 +SET Key6473 Value6473 +SET Key6474 Value6474 +SET Key6475 Value6475 +SET Key6476 Value6476 +SET Key6477 Value6477 +SET Key6478 Value6478 +SET Key6479 Value6479 +SET Key6480 Value6480 +SET Key6481 Value6481 +SET Key6482 Value6482 +SET Key6483 Value6483 +SET Key6484 Value6484 +SET Key6485 Value6485 +SET Key6486 Value6486 +SET Key6487 Value6487 +SET Key6488 Value6488 +SET Key6489 Value6489 +SET Key6490 Value6490 +SET Key6491 Value6491 +SET Key6492 Value6492 +SET Key6493 Value6493 +SET Key6494 Value6494 +SET Key6495 Value6495 +SET Key6496 Value6496 +SET Key6497 Value6497 +SET Key6498 Value6498 +SET Key6499 Value6499 +SET Key6500 Value6500 +SET Key6501 Value6501 +SET Key6502 Value6502 +SET Key6503 Value6503 +SET Key6504 Value6504 +SET Key6505 Value6505 +SET Key6506 Value6506 +SET Key6507 Value6507 +SET Key6508 Value6508 +SET Key6509 Value6509 +SET Key6510 Value6510 +SET Key6511 Value6511 +SET Key6512 Value6512 +SET Key6513 Value6513 +SET Key6514 Value6514 +SET Key6515 Value6515 +SET Key6516 Value6516 +SET Key6517 Value6517 +SET Key6518 Value6518 +SET Key6519 Value6519 +SET Key6520 Value6520 +SET Key6521 Value6521 +SET Key6522 Value6522 +SET Key6523 Value6523 +SET Key6524 Value6524 +SET Key6525 Value6525 +SET Key6526 Value6526 +SET Key6527 Value6527 +SET Key6528 Value6528 +SET Key6529 Value6529 +SET Key6530 Value6530 +SET Key6531 Value6531 +SET Key6532 Value6532 +SET Key6533 Value6533 +SET Key6534 Value6534 +SET Key6535 Value6535 +SET Key6536 Value6536 +SET Key6537 Value6537 +SET Key6538 Value6538 +SET Key6539 Value6539 +SET Key6540 Value6540 +SET Key6541 Value6541 +SET Key6542 Value6542 +SET Key6543 Value6543 +SET Key6544 Value6544 +SET Key6545 Value6545 +SET Key6546 Value6546 +SET Key6547 Value6547 +SET Key6548 Value6548 +SET Key6549 Value6549 +SET Key6550 Value6550 +SET Key6551 Value6551 +SET Key6552 Value6552 +SET Key6553 Value6553 +SET Key6554 Value6554 +SET Key6555 Value6555 +SET Key6556 Value6556 +SET Key6557 Value6557 +SET Key6558 Value6558 +SET Key6559 Value6559 +SET Key6560 Value6560 +SET Key6561 Value6561 +SET Key6562 Value6562 +SET Key6563 Value6563 +SET Key6564 Value6564 +SET Key6565 Value6565 +SET Key6566 Value6566 +SET Key6567 Value6567 +SET Key6568 Value6568 +SET Key6569 Value6569 +SET Key6570 Value6570 +SET Key6571 Value6571 +SET Key6572 Value6572 +SET Key6573 Value6573 +SET Key6574 Value6574 +SET Key6575 Value6575 +SET Key6576 Value6576 +SET Key6577 Value6577 +SET Key6578 Value6578 +SET Key6579 Value6579 +SET Key6580 Value6580 +SET Key6581 Value6581 +SET Key6582 Value6582 +SET Key6583 Value6583 +SET Key6584 Value6584 +SET Key6585 Value6585 +SET Key6586 Value6586 +SET Key6587 Value6587 +SET Key6588 Value6588 +SET Key6589 Value6589 +SET Key6590 Value6590 +SET Key6591 Value6591 +SET Key6592 Value6592 +SET Key6593 Value6593 +SET Key6594 Value6594 +SET Key6595 Value6595 +SET Key6596 Value6596 +SET Key6597 Value6597 +SET Key6598 Value6598 +SET Key6599 Value6599 +SET Key6600 Value6600 +SET Key6601 Value6601 +SET Key6602 Value6602 +SET Key6603 Value6603 +SET Key6604 Value6604 +SET Key6605 Value6605 +SET Key6606 Value6606 +SET Key6607 Value6607 +SET Key6608 Value6608 +SET Key6609 Value6609 +SET Key6610 Value6610 +SET Key6611 Value6611 +SET Key6612 Value6612 +SET Key6613 Value6613 +SET Key6614 Value6614 +SET Key6615 Value6615 +SET Key6616 Value6616 +SET Key6617 Value6617 +SET Key6618 Value6618 +SET Key6619 Value6619 +SET Key6620 Value6620 +SET Key6621 Value6621 +SET Key6622 Value6622 +SET Key6623 Value6623 +SET Key6624 Value6624 +SET Key6625 Value6625 +SET Key6626 Value6626 +SET Key6627 Value6627 +SET Key6628 Value6628 +SET Key6629 Value6629 +SET Key6630 Value6630 +SET Key6631 Value6631 +SET Key6632 Value6632 +SET Key6633 Value6633 +SET Key6634 Value6634 +SET Key6635 Value6635 +SET Key6636 Value6636 +SET Key6637 Value6637 +SET Key6638 Value6638 +SET Key6639 Value6639 +SET Key6640 Value6640 +SET Key6641 Value6641 +SET Key6642 Value6642 +SET Key6643 Value6643 +SET Key6644 Value6644 +SET Key6645 Value6645 +SET Key6646 Value6646 +SET Key6647 Value6647 +SET Key6648 Value6648 +SET Key6649 Value6649 +SET Key6650 Value6650 +SET Key6651 Value6651 +SET Key6652 Value6652 +SET Key6653 Value6653 +SET Key6654 Value6654 +SET Key6655 Value6655 +SET Key6656 Value6656 +SET Key6657 Value6657 +SET Key6658 Value6658 +SET Key6659 Value6659 +SET Key6660 Value6660 +SET Key6661 Value6661 +SET Key6662 Value6662 +SET Key6663 Value6663 +SET Key6664 Value6664 +SET Key6665 Value6665 +SET Key6666 Value6666 +SET Key6667 Value6667 +SET Key6668 Value6668 +SET Key6669 Value6669 +SET Key6670 Value6670 +SET Key6671 Value6671 +SET Key6672 Value6672 +SET Key6673 Value6673 +SET Key6674 Value6674 +SET Key6675 Value6675 +SET Key6676 Value6676 +SET Key6677 Value6677 +SET Key6678 Value6678 +SET Key6679 Value6679 +SET Key6680 Value6680 +SET Key6681 Value6681 +SET Key6682 Value6682 +SET Key6683 Value6683 +SET Key6684 Value6684 +SET Key6685 Value6685 +SET Key6686 Value6686 +SET Key6687 Value6687 +SET Key6688 Value6688 +SET Key6689 Value6689 +SET Key6690 Value6690 +SET Key6691 Value6691 +SET Key6692 Value6692 +SET Key6693 Value6693 +SET Key6694 Value6694 +SET Key6695 Value6695 +SET Key6696 Value6696 +SET Key6697 Value6697 +SET Key6698 Value6698 +SET Key6699 Value6699 +SET Key6700 Value6700 +SET Key6701 Value6701 +SET Key6702 Value6702 +SET Key6703 Value6703 +SET Key6704 Value6704 +SET Key6705 Value6705 +SET Key6706 Value6706 +SET Key6707 Value6707 +SET Key6708 Value6708 +SET Key6709 Value6709 +SET Key6710 Value6710 +SET Key6711 Value6711 +SET Key6712 Value6712 +SET Key6713 Value6713 +SET Key6714 Value6714 +SET Key6715 Value6715 +SET Key6716 Value6716 +SET Key6717 Value6717 +SET Key6718 Value6718 +SET Key6719 Value6719 +SET Key6720 Value6720 +SET Key6721 Value6721 +SET Key6722 Value6722 +SET Key6723 Value6723 +SET Key6724 Value6724 +SET Key6725 Value6725 +SET Key6726 Value6726 +SET Key6727 Value6727 +SET Key6728 Value6728 +SET Key6729 Value6729 +SET Key6730 Value6730 +SET Key6731 Value6731 +SET Key6732 Value6732 +SET Key6733 Value6733 +SET Key6734 Value6734 +SET Key6735 Value6735 +SET Key6736 Value6736 +SET Key6737 Value6737 +SET Key6738 Value6738 +SET Key6739 Value6739 +SET Key6740 Value6740 +SET Key6741 Value6741 +SET Key6742 Value6742 +SET Key6743 Value6743 +SET Key6744 Value6744 +SET Key6745 Value6745 +SET Key6746 Value6746 +SET Key6747 Value6747 +SET Key6748 Value6748 +SET Key6749 Value6749 +SET Key6750 Value6750 +SET Key6751 Value6751 +SET Key6752 Value6752 +SET Key6753 Value6753 +SET Key6754 Value6754 +SET Key6755 Value6755 +SET Key6756 Value6756 +SET Key6757 Value6757 +SET Key6758 Value6758 +SET Key6759 Value6759 +SET Key6760 Value6760 +SET Key6761 Value6761 +SET Key6762 Value6762 +SET Key6763 Value6763 +SET Key6764 Value6764 +SET Key6765 Value6765 +SET Key6766 Value6766 +SET Key6767 Value6767 +SET Key6768 Value6768 +SET Key6769 Value6769 +SET Key6770 Value6770 +SET Key6771 Value6771 +SET Key6772 Value6772 +SET Key6773 Value6773 +SET Key6774 Value6774 +SET Key6775 Value6775 +SET Key6776 Value6776 +SET Key6777 Value6777 +SET Key6778 Value6778 +SET Key6779 Value6779 +SET Key6780 Value6780 +SET Key6781 Value6781 +SET Key6782 Value6782 +SET Key6783 Value6783 +SET Key6784 Value6784 +SET Key6785 Value6785 +SET Key6786 Value6786 +SET Key6787 Value6787 +SET Key6788 Value6788 +SET Key6789 Value6789 +SET Key6790 Value6790 +SET Key6791 Value6791 +SET Key6792 Value6792 +SET Key6793 Value6793 +SET Key6794 Value6794 +SET Key6795 Value6795 +SET Key6796 Value6796 +SET Key6797 Value6797 +SET Key6798 Value6798 +SET Key6799 Value6799 +SET Key6800 Value6800 +SET Key6801 Value6801 +SET Key6802 Value6802 +SET Key6803 Value6803 +SET Key6804 Value6804 +SET Key6805 Value6805 +SET Key6806 Value6806 +SET Key6807 Value6807 +SET Key6808 Value6808 +SET Key6809 Value6809 +SET Key6810 Value6810 +SET Key6811 Value6811 +SET Key6812 Value6812 +SET Key6813 Value6813 +SET Key6814 Value6814 +SET Key6815 Value6815 +SET Key6816 Value6816 +SET Key6817 Value6817 +SET Key6818 Value6818 +SET Key6819 Value6819 +SET Key6820 Value6820 +SET Key6821 Value6821 +SET Key6822 Value6822 +SET Key6823 Value6823 +SET Key6824 Value6824 +SET Key6825 Value6825 +SET Key6826 Value6826 +SET Key6827 Value6827 +SET Key6828 Value6828 +SET Key6829 Value6829 +SET Key6830 Value6830 +SET Key6831 Value6831 +SET Key6832 Value6832 +SET Key6833 Value6833 +SET Key6834 Value6834 +SET Key6835 Value6835 +SET Key6836 Value6836 +SET Key6837 Value6837 +SET Key6838 Value6838 +SET Key6839 Value6839 +SET Key6840 Value6840 +SET Key6841 Value6841 +SET Key6842 Value6842 +SET Key6843 Value6843 +SET Key6844 Value6844 +SET Key6845 Value6845 +SET Key6846 Value6846 +SET Key6847 Value6847 +SET Key6848 Value6848 +SET Key6849 Value6849 +SET Key6850 Value6850 +SET Key6851 Value6851 +SET Key6852 Value6852 +SET Key6853 Value6853 +SET Key6854 Value6854 +SET Key6855 Value6855 +SET Key6856 Value6856 +SET Key6857 Value6857 +SET Key6858 Value6858 +SET Key6859 Value6859 +SET Key6860 Value6860 +SET Key6861 Value6861 +SET Key6862 Value6862 +SET Key6863 Value6863 +SET Key6864 Value6864 +SET Key6865 Value6865 +SET Key6866 Value6866 +SET Key6867 Value6867 +SET Key6868 Value6868 +SET Key6869 Value6869 +SET Key6870 Value6870 +SET Key6871 Value6871 +SET Key6872 Value6872 +SET Key6873 Value6873 +SET Key6874 Value6874 +SET Key6875 Value6875 +SET Key6876 Value6876 +SET Key6877 Value6877 +SET Key6878 Value6878 +SET Key6879 Value6879 +SET Key6880 Value6880 +SET Key6881 Value6881 +SET Key6882 Value6882 +SET Key6883 Value6883 +SET Key6884 Value6884 +SET Key6885 Value6885 +SET Key6886 Value6886 +SET Key6887 Value6887 +SET Key6888 Value6888 +SET Key6889 Value6889 +SET Key6890 Value6890 +SET Key6891 Value6891 +SET Key6892 Value6892 +SET Key6893 Value6893 +SET Key6894 Value6894 +SET Key6895 Value6895 +SET Key6896 Value6896 +SET Key6897 Value6897 +SET Key6898 Value6898 +SET Key6899 Value6899 +SET Key6900 Value6900 +SET Key6901 Value6901 +SET Key6902 Value6902 +SET Key6903 Value6903 +SET Key6904 Value6904 +SET Key6905 Value6905 +SET Key6906 Value6906 +SET Key6907 Value6907 +SET Key6908 Value6908 +SET Key6909 Value6909 +SET Key6910 Value6910 +SET Key6911 Value6911 +SET Key6912 Value6912 +SET Key6913 Value6913 +SET Key6914 Value6914 +SET Key6915 Value6915 +SET Key6916 Value6916 +SET Key6917 Value6917 +SET Key6918 Value6918 +SET Key6919 Value6919 +SET Key6920 Value6920 +SET Key6921 Value6921 +SET Key6922 Value6922 +SET Key6923 Value6923 +SET Key6924 Value6924 +SET Key6925 Value6925 +SET Key6926 Value6926 +SET Key6927 Value6927 +SET Key6928 Value6928 +SET Key6929 Value6929 +SET Key6930 Value6930 +SET Key6931 Value6931 +SET Key6932 Value6932 +SET Key6933 Value6933 +SET Key6934 Value6934 +SET Key6935 Value6935 +SET Key6936 Value6936 +SET Key6937 Value6937 +SET Key6938 Value6938 +SET Key6939 Value6939 +SET Key6940 Value6940 +SET Key6941 Value6941 +SET Key6942 Value6942 +SET Key6943 Value6943 +SET Key6944 Value6944 +SET Key6945 Value6945 +SET Key6946 Value6946 +SET Key6947 Value6947 +SET Key6948 Value6948 +SET Key6949 Value6949 +SET Key6950 Value6950 +SET Key6951 Value6951 +SET Key6952 Value6952 +SET Key6953 Value6953 +SET Key6954 Value6954 +SET Key6955 Value6955 +SET Key6956 Value6956 +SET Key6957 Value6957 +SET Key6958 Value6958 +SET Key6959 Value6959 +SET Key6960 Value6960 +SET Key6961 Value6961 +SET Key6962 Value6962 +SET Key6963 Value6963 +SET Key6964 Value6964 +SET Key6965 Value6965 +SET Key6966 Value6966 +SET Key6967 Value6967 +SET Key6968 Value6968 +SET Key6969 Value6969 +SET Key6970 Value6970 +SET Key6971 Value6971 +SET Key6972 Value6972 +SET Key6973 Value6973 +SET Key6974 Value6974 +SET Key6975 Value6975 +SET Key6976 Value6976 +SET Key6977 Value6977 +SET Key6978 Value6978 +SET Key6979 Value6979 +SET Key6980 Value6980 +SET Key6981 Value6981 +SET Key6982 Value6982 +SET Key6983 Value6983 +SET Key6984 Value6984 +SET Key6985 Value6985 +SET Key6986 Value6986 +SET Key6987 Value6987 +SET Key6988 Value6988 +SET Key6989 Value6989 +SET Key6990 Value6990 +SET Key6991 Value6991 +SET Key6992 Value6992 +SET Key6993 Value6993 +SET Key6994 Value6994 +SET Key6995 Value6995 +SET Key6996 Value6996 +SET Key6997 Value6997 +SET Key6998 Value6998 +SET Key6999 Value6999 +SET Key7000 Value7000 +SET Key7001 Value7001 +SET Key7002 Value7002 +SET Key7003 Value7003 +SET Key7004 Value7004 +SET Key7005 Value7005 +SET Key7006 Value7006 +SET Key7007 Value7007 +SET Key7008 Value7008 +SET Key7009 Value7009 +SET Key7010 Value7010 +SET Key7011 Value7011 +SET Key7012 Value7012 +SET Key7013 Value7013 +SET Key7014 Value7014 +SET Key7015 Value7015 +SET Key7016 Value7016 +SET Key7017 Value7017 +SET Key7018 Value7018 +SET Key7019 Value7019 +SET Key7020 Value7020 +SET Key7021 Value7021 +SET Key7022 Value7022 +SET Key7023 Value7023 +SET Key7024 Value7024 +SET Key7025 Value7025 +SET Key7026 Value7026 +SET Key7027 Value7027 +SET Key7028 Value7028 +SET Key7029 Value7029 +SET Key7030 Value7030 +SET Key7031 Value7031 +SET Key7032 Value7032 +SET Key7033 Value7033 +SET Key7034 Value7034 +SET Key7035 Value7035 +SET Key7036 Value7036 +SET Key7037 Value7037 +SET Key7038 Value7038 +SET Key7039 Value7039 +SET Key7040 Value7040 +SET Key7041 Value7041 +SET Key7042 Value7042 +SET Key7043 Value7043 +SET Key7044 Value7044 +SET Key7045 Value7045 +SET Key7046 Value7046 +SET Key7047 Value7047 +SET Key7048 Value7048 +SET Key7049 Value7049 +SET Key7050 Value7050 +SET Key7051 Value7051 +SET Key7052 Value7052 +SET Key7053 Value7053 +SET Key7054 Value7054 +SET Key7055 Value7055 +SET Key7056 Value7056 +SET Key7057 Value7057 +SET Key7058 Value7058 +SET Key7059 Value7059 +SET Key7060 Value7060 +SET Key7061 Value7061 +SET Key7062 Value7062 +SET Key7063 Value7063 +SET Key7064 Value7064 +SET Key7065 Value7065 +SET Key7066 Value7066 +SET Key7067 Value7067 +SET Key7068 Value7068 +SET Key7069 Value7069 +SET Key7070 Value7070 +SET Key7071 Value7071 +SET Key7072 Value7072 +SET Key7073 Value7073 +SET Key7074 Value7074 +SET Key7075 Value7075 +SET Key7076 Value7076 +SET Key7077 Value7077 +SET Key7078 Value7078 +SET Key7079 Value7079 +SET Key7080 Value7080 +SET Key7081 Value7081 +SET Key7082 Value7082 +SET Key7083 Value7083 +SET Key7084 Value7084 +SET Key7085 Value7085 +SET Key7086 Value7086 +SET Key7087 Value7087 +SET Key7088 Value7088 +SET Key7089 Value7089 +SET Key7090 Value7090 +SET Key7091 Value7091 +SET Key7092 Value7092 +SET Key7093 Value7093 +SET Key7094 Value7094 +SET Key7095 Value7095 +SET Key7096 Value7096 +SET Key7097 Value7097 +SET Key7098 Value7098 +SET Key7099 Value7099 +SET Key7100 Value7100 +SET Key7101 Value7101 +SET Key7102 Value7102 +SET Key7103 Value7103 +SET Key7104 Value7104 +SET Key7105 Value7105 +SET Key7106 Value7106 +SET Key7107 Value7107 +SET Key7108 Value7108 +SET Key7109 Value7109 +SET Key7110 Value7110 +SET Key7111 Value7111 +SET Key7112 Value7112 +SET Key7113 Value7113 +SET Key7114 Value7114 +SET Key7115 Value7115 +SET Key7116 Value7116 +SET Key7117 Value7117 +SET Key7118 Value7118 +SET Key7119 Value7119 +SET Key7120 Value7120 +SET Key7121 Value7121 +SET Key7122 Value7122 +SET Key7123 Value7123 +SET Key7124 Value7124 +SET Key7125 Value7125 +SET Key7126 Value7126 +SET Key7127 Value7127 +SET Key7128 Value7128 +SET Key7129 Value7129 +SET Key7130 Value7130 +SET Key7131 Value7131 +SET Key7132 Value7132 +SET Key7133 Value7133 +SET Key7134 Value7134 +SET Key7135 Value7135 +SET Key7136 Value7136 +SET Key7137 Value7137 +SET Key7138 Value7138 +SET Key7139 Value7139 +SET Key7140 Value7140 +SET Key7141 Value7141 +SET Key7142 Value7142 +SET Key7143 Value7143 +SET Key7144 Value7144 +SET Key7145 Value7145 +SET Key7146 Value7146 +SET Key7147 Value7147 +SET Key7148 Value7148 +SET Key7149 Value7149 +SET Key7150 Value7150 +SET Key7151 Value7151 +SET Key7152 Value7152 +SET Key7153 Value7153 +SET Key7154 Value7154 +SET Key7155 Value7155 +SET Key7156 Value7156 +SET Key7157 Value7157 +SET Key7158 Value7158 +SET Key7159 Value7159 +SET Key7160 Value7160 +SET Key7161 Value7161 +SET Key7162 Value7162 +SET Key7163 Value7163 +SET Key7164 Value7164 +SET Key7165 Value7165 +SET Key7166 Value7166 +SET Key7167 Value7167 +SET Key7168 Value7168 +SET Key7169 Value7169 +SET Key7170 Value7170 +SET Key7171 Value7171 +SET Key7172 Value7172 +SET Key7173 Value7173 +SET Key7174 Value7174 +SET Key7175 Value7175 +SET Key7176 Value7176 +SET Key7177 Value7177 +SET Key7178 Value7178 +SET Key7179 Value7179 +SET Key7180 Value7180 +SET Key7181 Value7181 +SET Key7182 Value7182 +SET Key7183 Value7183 +SET Key7184 Value7184 +SET Key7185 Value7185 +SET Key7186 Value7186 +SET Key7187 Value7187 +SET Key7188 Value7188 +SET Key7189 Value7189 +SET Key7190 Value7190 +SET Key7191 Value7191 +SET Key7192 Value7192 +SET Key7193 Value7193 +SET Key7194 Value7194 +SET Key7195 Value7195 +SET Key7196 Value7196 +SET Key7197 Value7197 +SET Key7198 Value7198 +SET Key7199 Value7199 +SET Key7200 Value7200 +SET Key7201 Value7201 +SET Key7202 Value7202 +SET Key7203 Value7203 +SET Key7204 Value7204 +SET Key7205 Value7205 +SET Key7206 Value7206 +SET Key7207 Value7207 +SET Key7208 Value7208 +SET Key7209 Value7209 +SET Key7210 Value7210 +SET Key7211 Value7211 +SET Key7212 Value7212 +SET Key7213 Value7213 +SET Key7214 Value7214 +SET Key7215 Value7215 +SET Key7216 Value7216 +SET Key7217 Value7217 +SET Key7218 Value7218 +SET Key7219 Value7219 +SET Key7220 Value7220 +SET Key7221 Value7221 +SET Key7222 Value7222 +SET Key7223 Value7223 +SET Key7224 Value7224 +SET Key7225 Value7225 +SET Key7226 Value7226 +SET Key7227 Value7227 +SET Key7228 Value7228 +SET Key7229 Value7229 +SET Key7230 Value7230 +SET Key7231 Value7231 +SET Key7232 Value7232 +SET Key7233 Value7233 +SET Key7234 Value7234 +SET Key7235 Value7235 +SET Key7236 Value7236 +SET Key7237 Value7237 +SET Key7238 Value7238 +SET Key7239 Value7239 +SET Key7240 Value7240 +SET Key7241 Value7241 +SET Key7242 Value7242 +SET Key7243 Value7243 +SET Key7244 Value7244 +SET Key7245 Value7245 +SET Key7246 Value7246 +SET Key7247 Value7247 +SET Key7248 Value7248 +SET Key7249 Value7249 +SET Key7250 Value7250 +SET Key7251 Value7251 +SET Key7252 Value7252 +SET Key7253 Value7253 +SET Key7254 Value7254 +SET Key7255 Value7255 +SET Key7256 Value7256 +SET Key7257 Value7257 +SET Key7258 Value7258 +SET Key7259 Value7259 +SET Key7260 Value7260 +SET Key7261 Value7261 +SET Key7262 Value7262 +SET Key7263 Value7263 +SET Key7264 Value7264 +SET Key7265 Value7265 +SET Key7266 Value7266 +SET Key7267 Value7267 +SET Key7268 Value7268 +SET Key7269 Value7269 +SET Key7270 Value7270 +SET Key7271 Value7271 +SET Key7272 Value7272 +SET Key7273 Value7273 +SET Key7274 Value7274 +SET Key7275 Value7275 +SET Key7276 Value7276 +SET Key7277 Value7277 +SET Key7278 Value7278 +SET Key7279 Value7279 +SET Key7280 Value7280 +SET Key7281 Value7281 +SET Key7282 Value7282 +SET Key7283 Value7283 +SET Key7284 Value7284 +SET Key7285 Value7285 +SET Key7286 Value7286 +SET Key7287 Value7287 +SET Key7288 Value7288 +SET Key7289 Value7289 +SET Key7290 Value7290 +SET Key7291 Value7291 +SET Key7292 Value7292 +SET Key7293 Value7293 +SET Key7294 Value7294 +SET Key7295 Value7295 +SET Key7296 Value7296 +SET Key7297 Value7297 +SET Key7298 Value7298 +SET Key7299 Value7299 +SET Key7300 Value7300 +SET Key7301 Value7301 +SET Key7302 Value7302 +SET Key7303 Value7303 +SET Key7304 Value7304 +SET Key7305 Value7305 +SET Key7306 Value7306 +SET Key7307 Value7307 +SET Key7308 Value7308 +SET Key7309 Value7309 +SET Key7310 Value7310 +SET Key7311 Value7311 +SET Key7312 Value7312 +SET Key7313 Value7313 +SET Key7314 Value7314 +SET Key7315 Value7315 +SET Key7316 Value7316 +SET Key7317 Value7317 +SET Key7318 Value7318 +SET Key7319 Value7319 +SET Key7320 Value7320 +SET Key7321 Value7321 +SET Key7322 Value7322 +SET Key7323 Value7323 +SET Key7324 Value7324 +SET Key7325 Value7325 +SET Key7326 Value7326 +SET Key7327 Value7327 +SET Key7328 Value7328 +SET Key7329 Value7329 +SET Key7330 Value7330 +SET Key7331 Value7331 +SET Key7332 Value7332 +SET Key7333 Value7333 +SET Key7334 Value7334 +SET Key7335 Value7335 +SET Key7336 Value7336 +SET Key7337 Value7337 +SET Key7338 Value7338 +SET Key7339 Value7339 +SET Key7340 Value7340 +SET Key7341 Value7341 +SET Key7342 Value7342 +SET Key7343 Value7343 +SET Key7344 Value7344 +SET Key7345 Value7345 +SET Key7346 Value7346 +SET Key7347 Value7347 +SET Key7348 Value7348 +SET Key7349 Value7349 +SET Key7350 Value7350 +SET Key7351 Value7351 +SET Key7352 Value7352 +SET Key7353 Value7353 +SET Key7354 Value7354 +SET Key7355 Value7355 +SET Key7356 Value7356 +SET Key7357 Value7357 +SET Key7358 Value7358 +SET Key7359 Value7359 +SET Key7360 Value7360 +SET Key7361 Value7361 +SET Key7362 Value7362 +SET Key7363 Value7363 +SET Key7364 Value7364 +SET Key7365 Value7365 +SET Key7366 Value7366 +SET Key7367 Value7367 +SET Key7368 Value7368 +SET Key7369 Value7369 +SET Key7370 Value7370 +SET Key7371 Value7371 +SET Key7372 Value7372 +SET Key7373 Value7373 +SET Key7374 Value7374 +SET Key7375 Value7375 +SET Key7376 Value7376 +SET Key7377 Value7377 +SET Key7378 Value7378 +SET Key7379 Value7379 +SET Key7380 Value7380 +SET Key7381 Value7381 +SET Key7382 Value7382 +SET Key7383 Value7383 +SET Key7384 Value7384 +SET Key7385 Value7385 +SET Key7386 Value7386 +SET Key7387 Value7387 +SET Key7388 Value7388 +SET Key7389 Value7389 +SET Key7390 Value7390 +SET Key7391 Value7391 +SET Key7392 Value7392 +SET Key7393 Value7393 +SET Key7394 Value7394 +SET Key7395 Value7395 +SET Key7396 Value7396 +SET Key7397 Value7397 +SET Key7398 Value7398 +SET Key7399 Value7399 +SET Key7400 Value7400 +SET Key7401 Value7401 +SET Key7402 Value7402 +SET Key7403 Value7403 +SET Key7404 Value7404 +SET Key7405 Value7405 +SET Key7406 Value7406 +SET Key7407 Value7407 +SET Key7408 Value7408 +SET Key7409 Value7409 +SET Key7410 Value7410 +SET Key7411 Value7411 +SET Key7412 Value7412 +SET Key7413 Value7413 +SET Key7414 Value7414 +SET Key7415 Value7415 +SET Key7416 Value7416 +SET Key7417 Value7417 +SET Key7418 Value7418 +SET Key7419 Value7419 +SET Key7420 Value7420 +SET Key7421 Value7421 +SET Key7422 Value7422 +SET Key7423 Value7423 +SET Key7424 Value7424 +SET Key7425 Value7425 +SET Key7426 Value7426 +SET Key7427 Value7427 +SET Key7428 Value7428 +SET Key7429 Value7429 +SET Key7430 Value7430 +SET Key7431 Value7431 +SET Key7432 Value7432 +SET Key7433 Value7433 +SET Key7434 Value7434 +SET Key7435 Value7435 +SET Key7436 Value7436 +SET Key7437 Value7437 +SET Key7438 Value7438 +SET Key7439 Value7439 +SET Key7440 Value7440 +SET Key7441 Value7441 +SET Key7442 Value7442 +SET Key7443 Value7443 +SET Key7444 Value7444 +SET Key7445 Value7445 +SET Key7446 Value7446 +SET Key7447 Value7447 +SET Key7448 Value7448 +SET Key7449 Value7449 +SET Key7450 Value7450 +SET Key7451 Value7451 +SET Key7452 Value7452 +SET Key7453 Value7453 +SET Key7454 Value7454 +SET Key7455 Value7455 +SET Key7456 Value7456 +SET Key7457 Value7457 +SET Key7458 Value7458 +SET Key7459 Value7459 +SET Key7460 Value7460 +SET Key7461 Value7461 +SET Key7462 Value7462 +SET Key7463 Value7463 +SET Key7464 Value7464 +SET Key7465 Value7465 +SET Key7466 Value7466 +SET Key7467 Value7467 +SET Key7468 Value7468 +SET Key7469 Value7469 +SET Key7470 Value7470 +SET Key7471 Value7471 +SET Key7472 Value7472 +SET Key7473 Value7473 +SET Key7474 Value7474 +SET Key7475 Value7475 +SET Key7476 Value7476 +SET Key7477 Value7477 +SET Key7478 Value7478 +SET Key7479 Value7479 +SET Key7480 Value7480 +SET Key7481 Value7481 +SET Key7482 Value7482 +SET Key7483 Value7483 +SET Key7484 Value7484 +SET Key7485 Value7485 +SET Key7486 Value7486 +SET Key7487 Value7487 +SET Key7488 Value7488 +SET Key7489 Value7489 +SET Key7490 Value7490 +SET Key7491 Value7491 +SET Key7492 Value7492 +SET Key7493 Value7493 +SET Key7494 Value7494 +SET Key7495 Value7495 +SET Key7496 Value7496 +SET Key7497 Value7497 +SET Key7498 Value7498 +SET Key7499 Value7499 +SET Key7500 Value7500 +SET Key7501 Value7501 +SET Key7502 Value7502 +SET Key7503 Value7503 +SET Key7504 Value7504 +SET Key7505 Value7505 +SET Key7506 Value7506 +SET Key7507 Value7507 +SET Key7508 Value7508 +SET Key7509 Value7509 +SET Key7510 Value7510 +SET Key7511 Value7511 +SET Key7512 Value7512 +SET Key7513 Value7513 +SET Key7514 Value7514 +SET Key7515 Value7515 +SET Key7516 Value7516 +SET Key7517 Value7517 +SET Key7518 Value7518 +SET Key7519 Value7519 +SET Key7520 Value7520 +SET Key7521 Value7521 +SET Key7522 Value7522 +SET Key7523 Value7523 +SET Key7524 Value7524 +SET Key7525 Value7525 +SET Key7526 Value7526 +SET Key7527 Value7527 +SET Key7528 Value7528 +SET Key7529 Value7529 +SET Key7530 Value7530 +SET Key7531 Value7531 +SET Key7532 Value7532 +SET Key7533 Value7533 +SET Key7534 Value7534 +SET Key7535 Value7535 +SET Key7536 Value7536 +SET Key7537 Value7537 +SET Key7538 Value7538 +SET Key7539 Value7539 +SET Key7540 Value7540 +SET Key7541 Value7541 +SET Key7542 Value7542 +SET Key7543 Value7543 +SET Key7544 Value7544 +SET Key7545 Value7545 +SET Key7546 Value7546 +SET Key7547 Value7547 +SET Key7548 Value7548 +SET Key7549 Value7549 +SET Key7550 Value7550 +SET Key7551 Value7551 +SET Key7552 Value7552 +SET Key7553 Value7553 +SET Key7554 Value7554 +SET Key7555 Value7555 +SET Key7556 Value7556 +SET Key7557 Value7557 +SET Key7558 Value7558 +SET Key7559 Value7559 +SET Key7560 Value7560 +SET Key7561 Value7561 +SET Key7562 Value7562 +SET Key7563 Value7563 +SET Key7564 Value7564 +SET Key7565 Value7565 +SET Key7566 Value7566 +SET Key7567 Value7567 +SET Key7568 Value7568 +SET Key7569 Value7569 +SET Key7570 Value7570 +SET Key7571 Value7571 +SET Key7572 Value7572 +SET Key7573 Value7573 +SET Key7574 Value7574 +SET Key7575 Value7575 +SET Key7576 Value7576 +SET Key7577 Value7577 +SET Key7578 Value7578 +SET Key7579 Value7579 +SET Key7580 Value7580 +SET Key7581 Value7581 +SET Key7582 Value7582 +SET Key7583 Value7583 +SET Key7584 Value7584 +SET Key7585 Value7585 +SET Key7586 Value7586 +SET Key7587 Value7587 +SET Key7588 Value7588 +SET Key7589 Value7589 +SET Key7590 Value7590 +SET Key7591 Value7591 +SET Key7592 Value7592 +SET Key7593 Value7593 +SET Key7594 Value7594 +SET Key7595 Value7595 +SET Key7596 Value7596 +SET Key7597 Value7597 +SET Key7598 Value7598 +SET Key7599 Value7599 +SET Key7600 Value7600 +SET Key7601 Value7601 +SET Key7602 Value7602 +SET Key7603 Value7603 +SET Key7604 Value7604 +SET Key7605 Value7605 +SET Key7606 Value7606 +SET Key7607 Value7607 +SET Key7608 Value7608 +SET Key7609 Value7609 +SET Key7610 Value7610 +SET Key7611 Value7611 +SET Key7612 Value7612 +SET Key7613 Value7613 +SET Key7614 Value7614 +SET Key7615 Value7615 +SET Key7616 Value7616 +SET Key7617 Value7617 +SET Key7618 Value7618 +SET Key7619 Value7619 +SET Key7620 Value7620 +SET Key7621 Value7621 +SET Key7622 Value7622 +SET Key7623 Value7623 +SET Key7624 Value7624 +SET Key7625 Value7625 +SET Key7626 Value7626 +SET Key7627 Value7627 +SET Key7628 Value7628 +SET Key7629 Value7629 +SET Key7630 Value7630 +SET Key7631 Value7631 +SET Key7632 Value7632 +SET Key7633 Value7633 +SET Key7634 Value7634 +SET Key7635 Value7635 +SET Key7636 Value7636 +SET Key7637 Value7637 +SET Key7638 Value7638 +SET Key7639 Value7639 +SET Key7640 Value7640 +SET Key7641 Value7641 +SET Key7642 Value7642 +SET Key7643 Value7643 +SET Key7644 Value7644 +SET Key7645 Value7645 +SET Key7646 Value7646 +SET Key7647 Value7647 +SET Key7648 Value7648 +SET Key7649 Value7649 +SET Key7650 Value7650 +SET Key7651 Value7651 +SET Key7652 Value7652 +SET Key7653 Value7653 +SET Key7654 Value7654 +SET Key7655 Value7655 +SET Key7656 Value7656 +SET Key7657 Value7657 +SET Key7658 Value7658 +SET Key7659 Value7659 +SET Key7660 Value7660 +SET Key7661 Value7661 +SET Key7662 Value7662 +SET Key7663 Value7663 +SET Key7664 Value7664 +SET Key7665 Value7665 +SET Key7666 Value7666 +SET Key7667 Value7667 +SET Key7668 Value7668 +SET Key7669 Value7669 +SET Key7670 Value7670 +SET Key7671 Value7671 +SET Key7672 Value7672 +SET Key7673 Value7673 +SET Key7674 Value7674 +SET Key7675 Value7675 +SET Key7676 Value7676 +SET Key7677 Value7677 +SET Key7678 Value7678 +SET Key7679 Value7679 +SET Key7680 Value7680 +SET Key7681 Value7681 +SET Key7682 Value7682 +SET Key7683 Value7683 +SET Key7684 Value7684 +SET Key7685 Value7685 +SET Key7686 Value7686 +SET Key7687 Value7687 +SET Key7688 Value7688 +SET Key7689 Value7689 +SET Key7690 Value7690 +SET Key7691 Value7691 +SET Key7692 Value7692 +SET Key7693 Value7693 +SET Key7694 Value7694 +SET Key7695 Value7695 +SET Key7696 Value7696 +SET Key7697 Value7697 +SET Key7698 Value7698 +SET Key7699 Value7699 +SET Key7700 Value7700 +SET Key7701 Value7701 +SET Key7702 Value7702 +SET Key7703 Value7703 +SET Key7704 Value7704 +SET Key7705 Value7705 +SET Key7706 Value7706 +SET Key7707 Value7707 +SET Key7708 Value7708 +SET Key7709 Value7709 +SET Key7710 Value7710 +SET Key7711 Value7711 +SET Key7712 Value7712 +SET Key7713 Value7713 +SET Key7714 Value7714 +SET Key7715 Value7715 +SET Key7716 Value7716 +SET Key7717 Value7717 +SET Key7718 Value7718 +SET Key7719 Value7719 +SET Key7720 Value7720 +SET Key7721 Value7721 +SET Key7722 Value7722 +SET Key7723 Value7723 +SET Key7724 Value7724 +SET Key7725 Value7725 +SET Key7726 Value7726 +SET Key7727 Value7727 +SET Key7728 Value7728 +SET Key7729 Value7729 +SET Key7730 Value7730 +SET Key7731 Value7731 +SET Key7732 Value7732 +SET Key7733 Value7733 +SET Key7734 Value7734 +SET Key7735 Value7735 +SET Key7736 Value7736 +SET Key7737 Value7737 +SET Key7738 Value7738 +SET Key7739 Value7739 +SET Key7740 Value7740 +SET Key7741 Value7741 +SET Key7742 Value7742 +SET Key7743 Value7743 +SET Key7744 Value7744 +SET Key7745 Value7745 +SET Key7746 Value7746 +SET Key7747 Value7747 +SET Key7748 Value7748 +SET Key7749 Value7749 +SET Key7750 Value7750 +SET Key7751 Value7751 +SET Key7752 Value7752 +SET Key7753 Value7753 +SET Key7754 Value7754 +SET Key7755 Value7755 +SET Key7756 Value7756 +SET Key7757 Value7757 +SET Key7758 Value7758 +SET Key7759 Value7759 +SET Key7760 Value7760 +SET Key7761 Value7761 +SET Key7762 Value7762 +SET Key7763 Value7763 +SET Key7764 Value7764 +SET Key7765 Value7765 +SET Key7766 Value7766 +SET Key7767 Value7767 +SET Key7768 Value7768 +SET Key7769 Value7769 +SET Key7770 Value7770 +SET Key7771 Value7771 +SET Key7772 Value7772 +SET Key7773 Value7773 +SET Key7774 Value7774 +SET Key7775 Value7775 +SET Key7776 Value7776 +SET Key7777 Value7777 +SET Key7778 Value7778 +SET Key7779 Value7779 +SET Key7780 Value7780 +SET Key7781 Value7781 +SET Key7782 Value7782 +SET Key7783 Value7783 +SET Key7784 Value7784 +SET Key7785 Value7785 +SET Key7786 Value7786 +SET Key7787 Value7787 +SET Key7788 Value7788 +SET Key7789 Value7789 +SET Key7790 Value7790 +SET Key7791 Value7791 +SET Key7792 Value7792 +SET Key7793 Value7793 +SET Key7794 Value7794 +SET Key7795 Value7795 +SET Key7796 Value7796 +SET Key7797 Value7797 +SET Key7798 Value7798 +SET Key7799 Value7799 +SET Key7800 Value7800 +SET Key7801 Value7801 +SET Key7802 Value7802 +SET Key7803 Value7803 +SET Key7804 Value7804 +SET Key7805 Value7805 +SET Key7806 Value7806 +SET Key7807 Value7807 +SET Key7808 Value7808 +SET Key7809 Value7809 +SET Key7810 Value7810 +SET Key7811 Value7811 +SET Key7812 Value7812 +SET Key7813 Value7813 +SET Key7814 Value7814 +SET Key7815 Value7815 +SET Key7816 Value7816 +SET Key7817 Value7817 +SET Key7818 Value7818 +SET Key7819 Value7819 +SET Key7820 Value7820 +SET Key7821 Value7821 +SET Key7822 Value7822 +SET Key7823 Value7823 +SET Key7824 Value7824 +SET Key7825 Value7825 +SET Key7826 Value7826 +SET Key7827 Value7827 +SET Key7828 Value7828 +SET Key7829 Value7829 +SET Key7830 Value7830 +SET Key7831 Value7831 +SET Key7832 Value7832 +SET Key7833 Value7833 +SET Key7834 Value7834 +SET Key7835 Value7835 +SET Key7836 Value7836 +SET Key7837 Value7837 +SET Key7838 Value7838 +SET Key7839 Value7839 +SET Key7840 Value7840 +SET Key7841 Value7841 +SET Key7842 Value7842 +SET Key7843 Value7843 +SET Key7844 Value7844 +SET Key7845 Value7845 +SET Key7846 Value7846 +SET Key7847 Value7847 +SET Key7848 Value7848 +SET Key7849 Value7849 +SET Key7850 Value7850 +SET Key7851 Value7851 +SET Key7852 Value7852 +SET Key7853 Value7853 +SET Key7854 Value7854 +SET Key7855 Value7855 +SET Key7856 Value7856 +SET Key7857 Value7857 +SET Key7858 Value7858 +SET Key7859 Value7859 +SET Key7860 Value7860 +SET Key7861 Value7861 +SET Key7862 Value7862 +SET Key7863 Value7863 +SET Key7864 Value7864 +SET Key7865 Value7865 +SET Key7866 Value7866 +SET Key7867 Value7867 +SET Key7868 Value7868 +SET Key7869 Value7869 +SET Key7870 Value7870 +SET Key7871 Value7871 +SET Key7872 Value7872 +SET Key7873 Value7873 +SET Key7874 Value7874 +SET Key7875 Value7875 +SET Key7876 Value7876 +SET Key7877 Value7877 +SET Key7878 Value7878 +SET Key7879 Value7879 +SET Key7880 Value7880 +SET Key7881 Value7881 +SET Key7882 Value7882 +SET Key7883 Value7883 +SET Key7884 Value7884 +SET Key7885 Value7885 +SET Key7886 Value7886 +SET Key7887 Value7887 +SET Key7888 Value7888 +SET Key7889 Value7889 +SET Key7890 Value7890 +SET Key7891 Value7891 +SET Key7892 Value7892 +SET Key7893 Value7893 +SET Key7894 Value7894 +SET Key7895 Value7895 +SET Key7896 Value7896 +SET Key7897 Value7897 +SET Key7898 Value7898 +SET Key7899 Value7899 +SET Key7900 Value7900 +SET Key7901 Value7901 +SET Key7902 Value7902 +SET Key7903 Value7903 +SET Key7904 Value7904 +SET Key7905 Value7905 +SET Key7906 Value7906 +SET Key7907 Value7907 +SET Key7908 Value7908 +SET Key7909 Value7909 +SET Key7910 Value7910 +SET Key7911 Value7911 +SET Key7912 Value7912 +SET Key7913 Value7913 +SET Key7914 Value7914 +SET Key7915 Value7915 +SET Key7916 Value7916 +SET Key7917 Value7917 +SET Key7918 Value7918 +SET Key7919 Value7919 +SET Key7920 Value7920 +SET Key7921 Value7921 +SET Key7922 Value7922 +SET Key7923 Value7923 +SET Key7924 Value7924 +SET Key7925 Value7925 +SET Key7926 Value7926 +SET Key7927 Value7927 +SET Key7928 Value7928 +SET Key7929 Value7929 +SET Key7930 Value7930 +SET Key7931 Value7931 +SET Key7932 Value7932 +SET Key7933 Value7933 +SET Key7934 Value7934 +SET Key7935 Value7935 +SET Key7936 Value7936 +SET Key7937 Value7937 +SET Key7938 Value7938 +SET Key7939 Value7939 +SET Key7940 Value7940 +SET Key7941 Value7941 +SET Key7942 Value7942 +SET Key7943 Value7943 +SET Key7944 Value7944 +SET Key7945 Value7945 +SET Key7946 Value7946 +SET Key7947 Value7947 +SET Key7948 Value7948 +SET Key7949 Value7949 +SET Key7950 Value7950 +SET Key7951 Value7951 +SET Key7952 Value7952 +SET Key7953 Value7953 +SET Key7954 Value7954 +SET Key7955 Value7955 +SET Key7956 Value7956 +SET Key7957 Value7957 +SET Key7958 Value7958 +SET Key7959 Value7959 +SET Key7960 Value7960 +SET Key7961 Value7961 +SET Key7962 Value7962 +SET Key7963 Value7963 +SET Key7964 Value7964 +SET Key7965 Value7965 +SET Key7966 Value7966 +SET Key7967 Value7967 +SET Key7968 Value7968 +SET Key7969 Value7969 +SET Key7970 Value7970 +SET Key7971 Value7971 +SET Key7972 Value7972 +SET Key7973 Value7973 +SET Key7974 Value7974 +SET Key7975 Value7975 +SET Key7976 Value7976 +SET Key7977 Value7977 +SET Key7978 Value7978 +SET Key7979 Value7979 +SET Key7980 Value7980 +SET Key7981 Value7981 +SET Key7982 Value7982 +SET Key7983 Value7983 +SET Key7984 Value7984 +SET Key7985 Value7985 +SET Key7986 Value7986 +SET Key7987 Value7987 +SET Key7988 Value7988 +SET Key7989 Value7989 +SET Key7990 Value7990 +SET Key7991 Value7991 +SET Key7992 Value7992 +SET Key7993 Value7993 +SET Key7994 Value7994 +SET Key7995 Value7995 +SET Key7996 Value7996 +SET Key7997 Value7997 +SET Key7998 Value7998 +SET Key7999 Value7999 +SET Key8000 Value8000 +SET Key8001 Value8001 +SET Key8002 Value8002 +SET Key8003 Value8003 +SET Key8004 Value8004 +SET Key8005 Value8005 +SET Key8006 Value8006 +SET Key8007 Value8007 +SET Key8008 Value8008 +SET Key8009 Value8009 +SET Key8010 Value8010 +SET Key8011 Value8011 +SET Key8012 Value8012 +SET Key8013 Value8013 +SET Key8014 Value8014 +SET Key8015 Value8015 +SET Key8016 Value8016 +SET Key8017 Value8017 +SET Key8018 Value8018 +SET Key8019 Value8019 +SET Key8020 Value8020 +SET Key8021 Value8021 +SET Key8022 Value8022 +SET Key8023 Value8023 +SET Key8024 Value8024 +SET Key8025 Value8025 +SET Key8026 Value8026 +SET Key8027 Value8027 +SET Key8028 Value8028 +SET Key8029 Value8029 +SET Key8030 Value8030 +SET Key8031 Value8031 +SET Key8032 Value8032 +SET Key8033 Value8033 +SET Key8034 Value8034 +SET Key8035 Value8035 +SET Key8036 Value8036 +SET Key8037 Value8037 +SET Key8038 Value8038 +SET Key8039 Value8039 +SET Key8040 Value8040 +SET Key8041 Value8041 +SET Key8042 Value8042 +SET Key8043 Value8043 +SET Key8044 Value8044 +SET Key8045 Value8045 +SET Key8046 Value8046 +SET Key8047 Value8047 +SET Key8048 Value8048 +SET Key8049 Value8049 +SET Key8050 Value8050 +SET Key8051 Value8051 +SET Key8052 Value8052 +SET Key8053 Value8053 +SET Key8054 Value8054 +SET Key8055 Value8055 +SET Key8056 Value8056 +SET Key8057 Value8057 +SET Key8058 Value8058 +SET Key8059 Value8059 +SET Key8060 Value8060 +SET Key8061 Value8061 +SET Key8062 Value8062 +SET Key8063 Value8063 +SET Key8064 Value8064 +SET Key8065 Value8065 +SET Key8066 Value8066 +SET Key8067 Value8067 +SET Key8068 Value8068 +SET Key8069 Value8069 +SET Key8070 Value8070 +SET Key8071 Value8071 +SET Key8072 Value8072 +SET Key8073 Value8073 +SET Key8074 Value8074 +SET Key8075 Value8075 +SET Key8076 Value8076 +SET Key8077 Value8077 +SET Key8078 Value8078 +SET Key8079 Value8079 +SET Key8080 Value8080 +SET Key8081 Value8081 +SET Key8082 Value8082 +SET Key8083 Value8083 +SET Key8084 Value8084 +SET Key8085 Value8085 +SET Key8086 Value8086 +SET Key8087 Value8087 +SET Key8088 Value8088 +SET Key8089 Value8089 +SET Key8090 Value8090 +SET Key8091 Value8091 +SET Key8092 Value8092 +SET Key8093 Value8093 +SET Key8094 Value8094 +SET Key8095 Value8095 +SET Key8096 Value8096 +SET Key8097 Value8097 +SET Key8098 Value8098 +SET Key8099 Value8099 +SET Key8100 Value8100 +SET Key8101 Value8101 +SET Key8102 Value8102 +SET Key8103 Value8103 +SET Key8104 Value8104 +SET Key8105 Value8105 +SET Key8106 Value8106 +SET Key8107 Value8107 +SET Key8108 Value8108 +SET Key8109 Value8109 +SET Key8110 Value8110 +SET Key8111 Value8111 +SET Key8112 Value8112 +SET Key8113 Value8113 +SET Key8114 Value8114 +SET Key8115 Value8115 +SET Key8116 Value8116 +SET Key8117 Value8117 +SET Key8118 Value8118 +SET Key8119 Value8119 +SET Key8120 Value8120 +SET Key8121 Value8121 +SET Key8122 Value8122 +SET Key8123 Value8123 +SET Key8124 Value8124 +SET Key8125 Value8125 +SET Key8126 Value8126 +SET Key8127 Value8127 +SET Key8128 Value8128 +SET Key8129 Value8129 +SET Key8130 Value8130 +SET Key8131 Value8131 +SET Key8132 Value8132 +SET Key8133 Value8133 +SET Key8134 Value8134 +SET Key8135 Value8135 +SET Key8136 Value8136 +SET Key8137 Value8137 +SET Key8138 Value8138 +SET Key8139 Value8139 +SET Key8140 Value8140 +SET Key8141 Value8141 +SET Key8142 Value8142 +SET Key8143 Value8143 +SET Key8144 Value8144 +SET Key8145 Value8145 +SET Key8146 Value8146 +SET Key8147 Value8147 +SET Key8148 Value8148 +SET Key8149 Value8149 +SET Key8150 Value8150 +SET Key8151 Value8151 +SET Key8152 Value8152 +SET Key8153 Value8153 +SET Key8154 Value8154 +SET Key8155 Value8155 +SET Key8156 Value8156 +SET Key8157 Value8157 +SET Key8158 Value8158 +SET Key8159 Value8159 +SET Key8160 Value8160 +SET Key8161 Value8161 +SET Key8162 Value8162 +SET Key8163 Value8163 +SET Key8164 Value8164 +SET Key8165 Value8165 +SET Key8166 Value8166 +SET Key8167 Value8167 +SET Key8168 Value8168 +SET Key8169 Value8169 +SET Key8170 Value8170 +SET Key8171 Value8171 +SET Key8172 Value8172 +SET Key8173 Value8173 +SET Key8174 Value8174 +SET Key8175 Value8175 +SET Key8176 Value8176 +SET Key8177 Value8177 +SET Key8178 Value8178 +SET Key8179 Value8179 +SET Key8180 Value8180 +SET Key8181 Value8181 +SET Key8182 Value8182 +SET Key8183 Value8183 +SET Key8184 Value8184 +SET Key8185 Value8185 +SET Key8186 Value8186 +SET Key8187 Value8187 +SET Key8188 Value8188 +SET Key8189 Value8189 +SET Key8190 Value8190 +SET Key8191 Value8191 +SET Key8192 Value8192 +SET Key8193 Value8193 +SET Key8194 Value8194 +SET Key8195 Value8195 +SET Key8196 Value8196 +SET Key8197 Value8197 +SET Key8198 Value8198 +SET Key8199 Value8199 +SET Key8200 Value8200 +SET Key8201 Value8201 +SET Key8202 Value8202 +SET Key8203 Value8203 +SET Key8204 Value8204 +SET Key8205 Value8205 +SET Key8206 Value8206 +SET Key8207 Value8207 +SET Key8208 Value8208 +SET Key8209 Value8209 +SET Key8210 Value8210 +SET Key8211 Value8211 +SET Key8212 Value8212 +SET Key8213 Value8213 +SET Key8214 Value8214 +SET Key8215 Value8215 +SET Key8216 Value8216 +SET Key8217 Value8217 +SET Key8218 Value8218 +SET Key8219 Value8219 +SET Key8220 Value8220 +SET Key8221 Value8221 +SET Key8222 Value8222 +SET Key8223 Value8223 +SET Key8224 Value8224 +SET Key8225 Value8225 +SET Key8226 Value8226 +SET Key8227 Value8227 +SET Key8228 Value8228 +SET Key8229 Value8229 +SET Key8230 Value8230 +SET Key8231 Value8231 +SET Key8232 Value8232 +SET Key8233 Value8233 +SET Key8234 Value8234 +SET Key8235 Value8235 +SET Key8236 Value8236 +SET Key8237 Value8237 +SET Key8238 Value8238 +SET Key8239 Value8239 +SET Key8240 Value8240 +SET Key8241 Value8241 +SET Key8242 Value8242 +SET Key8243 Value8243 +SET Key8244 Value8244 +SET Key8245 Value8245 +SET Key8246 Value8246 +SET Key8247 Value8247 +SET Key8248 Value8248 +SET Key8249 Value8249 +SET Key8250 Value8250 +SET Key8251 Value8251 +SET Key8252 Value8252 +SET Key8253 Value8253 +SET Key8254 Value8254 +SET Key8255 Value8255 +SET Key8256 Value8256 +SET Key8257 Value8257 +SET Key8258 Value8258 +SET Key8259 Value8259 +SET Key8260 Value8260 +SET Key8261 Value8261 +SET Key8262 Value8262 +SET Key8263 Value8263 +SET Key8264 Value8264 +SET Key8265 Value8265 +SET Key8266 Value8266 +SET Key8267 Value8267 +SET Key8268 Value8268 +SET Key8269 Value8269 +SET Key8270 Value8270 +SET Key8271 Value8271 +SET Key8272 Value8272 +SET Key8273 Value8273 +SET Key8274 Value8274 +SET Key8275 Value8275 +SET Key8276 Value8276 +SET Key8277 Value8277 +SET Key8278 Value8278 +SET Key8279 Value8279 +SET Key8280 Value8280 +SET Key8281 Value8281 +SET Key8282 Value8282 +SET Key8283 Value8283 +SET Key8284 Value8284 +SET Key8285 Value8285 +SET Key8286 Value8286 +SET Key8287 Value8287 +SET Key8288 Value8288 +SET Key8289 Value8289 +SET Key8290 Value8290 +SET Key8291 Value8291 +SET Key8292 Value8292 +SET Key8293 Value8293 +SET Key8294 Value8294 +SET Key8295 Value8295 +SET Key8296 Value8296 +SET Key8297 Value8297 +SET Key8298 Value8298 +SET Key8299 Value8299 +SET Key8300 Value8300 +SET Key8301 Value8301 +SET Key8302 Value8302 +SET Key8303 Value8303 +SET Key8304 Value8304 +SET Key8305 Value8305 +SET Key8306 Value8306 +SET Key8307 Value8307 +SET Key8308 Value8308 +SET Key8309 Value8309 +SET Key8310 Value8310 +SET Key8311 Value8311 +SET Key8312 Value8312 +SET Key8313 Value8313 +SET Key8314 Value8314 +SET Key8315 Value8315 +SET Key8316 Value8316 +SET Key8317 Value8317 +SET Key8318 Value8318 +SET Key8319 Value8319 +SET Key8320 Value8320 +SET Key8321 Value8321 +SET Key8322 Value8322 +SET Key8323 Value8323 +SET Key8324 Value8324 +SET Key8325 Value8325 +SET Key8326 Value8326 +SET Key8327 Value8327 +SET Key8328 Value8328 +SET Key8329 Value8329 +SET Key8330 Value8330 +SET Key8331 Value8331 +SET Key8332 Value8332 +SET Key8333 Value8333 +SET Key8334 Value8334 +SET Key8335 Value8335 +SET Key8336 Value8336 +SET Key8337 Value8337 +SET Key8338 Value8338 +SET Key8339 Value8339 +SET Key8340 Value8340 +SET Key8341 Value8341 +SET Key8342 Value8342 +SET Key8343 Value8343 +SET Key8344 Value8344 +SET Key8345 Value8345 +SET Key8346 Value8346 +SET Key8347 Value8347 +SET Key8348 Value8348 +SET Key8349 Value8349 +SET Key8350 Value8350 +SET Key8351 Value8351 +SET Key8352 Value8352 +SET Key8353 Value8353 +SET Key8354 Value8354 +SET Key8355 Value8355 +SET Key8356 Value8356 +SET Key8357 Value8357 +SET Key8358 Value8358 +SET Key8359 Value8359 +SET Key8360 Value8360 +SET Key8361 Value8361 +SET Key8362 Value8362 +SET Key8363 Value8363 +SET Key8364 Value8364 +SET Key8365 Value8365 +SET Key8366 Value8366 +SET Key8367 Value8367 +SET Key8368 Value8368 +SET Key8369 Value8369 +SET Key8370 Value8370 +SET Key8371 Value8371 +SET Key8372 Value8372 +SET Key8373 Value8373 +SET Key8374 Value8374 +SET Key8375 Value8375 +SET Key8376 Value8376 +SET Key8377 Value8377 +SET Key8378 Value8378 +SET Key8379 Value8379 +SET Key8380 Value8380 +SET Key8381 Value8381 +SET Key8382 Value8382 +SET Key8383 Value8383 +SET Key8384 Value8384 +SET Key8385 Value8385 +SET Key8386 Value8386 +SET Key8387 Value8387 +SET Key8388 Value8388 +SET Key8389 Value8389 +SET Key8390 Value8390 +SET Key8391 Value8391 +SET Key8392 Value8392 +SET Key8393 Value8393 +SET Key8394 Value8394 +SET Key8395 Value8395 +SET Key8396 Value8396 +SET Key8397 Value8397 +SET Key8398 Value8398 +SET Key8399 Value8399 +SET Key8400 Value8400 +SET Key8401 Value8401 +SET Key8402 Value8402 +SET Key8403 Value8403 +SET Key8404 Value8404 +SET Key8405 Value8405 +SET Key8406 Value8406 +SET Key8407 Value8407 +SET Key8408 Value8408 +SET Key8409 Value8409 +SET Key8410 Value8410 +SET Key8411 Value8411 +SET Key8412 Value8412 +SET Key8413 Value8413 +SET Key8414 Value8414 +SET Key8415 Value8415 +SET Key8416 Value8416 +SET Key8417 Value8417 +SET Key8418 Value8418 +SET Key8419 Value8419 +SET Key8420 Value8420 +SET Key8421 Value8421 +SET Key8422 Value8422 +SET Key8423 Value8423 +SET Key8424 Value8424 +SET Key8425 Value8425 +SET Key8426 Value8426 +SET Key8427 Value8427 +SET Key8428 Value8428 +SET Key8429 Value8429 +SET Key8430 Value8430 +SET Key8431 Value8431 +SET Key8432 Value8432 +SET Key8433 Value8433 +SET Key8434 Value8434 +SET Key8435 Value8435 +SET Key8436 Value8436 +SET Key8437 Value8437 +SET Key8438 Value8438 +SET Key8439 Value8439 +SET Key8440 Value8440 +SET Key8441 Value8441 +SET Key8442 Value8442 +SET Key8443 Value8443 +SET Key8444 Value8444 +SET Key8445 Value8445 +SET Key8446 Value8446 +SET Key8447 Value8447 +SET Key8448 Value8448 +SET Key8449 Value8449 +SET Key8450 Value8450 +SET Key8451 Value8451 +SET Key8452 Value8452 +SET Key8453 Value8453 +SET Key8454 Value8454 +SET Key8455 Value8455 +SET Key8456 Value8456 +SET Key8457 Value8457 +SET Key8458 Value8458 +SET Key8459 Value8459 +SET Key8460 Value8460 +SET Key8461 Value8461 +SET Key8462 Value8462 +SET Key8463 Value8463 +SET Key8464 Value8464 +SET Key8465 Value8465 +SET Key8466 Value8466 +SET Key8467 Value8467 +SET Key8468 Value8468 +SET Key8469 Value8469 +SET Key8470 Value8470 +SET Key8471 Value8471 +SET Key8472 Value8472 +SET Key8473 Value8473 +SET Key8474 Value8474 +SET Key8475 Value8475 +SET Key8476 Value8476 +SET Key8477 Value8477 +SET Key8478 Value8478 +SET Key8479 Value8479 +SET Key8480 Value8480 +SET Key8481 Value8481 +SET Key8482 Value8482 +SET Key8483 Value8483 +SET Key8484 Value8484 +SET Key8485 Value8485 +SET Key8486 Value8486 +SET Key8487 Value8487 +SET Key8488 Value8488 +SET Key8489 Value8489 +SET Key8490 Value8490 +SET Key8491 Value8491 +SET Key8492 Value8492 +SET Key8493 Value8493 +SET Key8494 Value8494 +SET Key8495 Value8495 +SET Key8496 Value8496 +SET Key8497 Value8497 +SET Key8498 Value8498 +SET Key8499 Value8499 +SET Key8500 Value8500 +SET Key8501 Value8501 +SET Key8502 Value8502 +SET Key8503 Value8503 +SET Key8504 Value8504 +SET Key8505 Value8505 +SET Key8506 Value8506 +SET Key8507 Value8507 +SET Key8508 Value8508 +SET Key8509 Value8509 +SET Key8510 Value8510 +SET Key8511 Value8511 +SET Key8512 Value8512 +SET Key8513 Value8513 +SET Key8514 Value8514 +SET Key8515 Value8515 +SET Key8516 Value8516 +SET Key8517 Value8517 +SET Key8518 Value8518 +SET Key8519 Value8519 +SET Key8520 Value8520 +SET Key8521 Value8521 +SET Key8522 Value8522 +SET Key8523 Value8523 +SET Key8524 Value8524 +SET Key8525 Value8525 +SET Key8526 Value8526 +SET Key8527 Value8527 +SET Key8528 Value8528 +SET Key8529 Value8529 +SET Key8530 Value8530 +SET Key8531 Value8531 +SET Key8532 Value8532 +SET Key8533 Value8533 +SET Key8534 Value8534 +SET Key8535 Value8535 +SET Key8536 Value8536 +SET Key8537 Value8537 +SET Key8538 Value8538 +SET Key8539 Value8539 +SET Key8540 Value8540 +SET Key8541 Value8541 +SET Key8542 Value8542 +SET Key8543 Value8543 +SET Key8544 Value8544 +SET Key8545 Value8545 +SET Key8546 Value8546 +SET Key8547 Value8547 +SET Key8548 Value8548 +SET Key8549 Value8549 +SET Key8550 Value8550 +SET Key8551 Value8551 +SET Key8552 Value8552 +SET Key8553 Value8553 +SET Key8554 Value8554 +SET Key8555 Value8555 +SET Key8556 Value8556 +SET Key8557 Value8557 +SET Key8558 Value8558 +SET Key8559 Value8559 +SET Key8560 Value8560 +SET Key8561 Value8561 +SET Key8562 Value8562 +SET Key8563 Value8563 +SET Key8564 Value8564 +SET Key8565 Value8565 +SET Key8566 Value8566 +SET Key8567 Value8567 +SET Key8568 Value8568 +SET Key8569 Value8569 +SET Key8570 Value8570 +SET Key8571 Value8571 +SET Key8572 Value8572 +SET Key8573 Value8573 +SET Key8574 Value8574 +SET Key8575 Value8575 +SET Key8576 Value8576 +SET Key8577 Value8577 +SET Key8578 Value8578 +SET Key8579 Value8579 +SET Key8580 Value8580 +SET Key8581 Value8581 +SET Key8582 Value8582 +SET Key8583 Value8583 +SET Key8584 Value8584 +SET Key8585 Value8585 +SET Key8586 Value8586 +SET Key8587 Value8587 +SET Key8588 Value8588 +SET Key8589 Value8589 +SET Key8590 Value8590 +SET Key8591 Value8591 +SET Key8592 Value8592 +SET Key8593 Value8593 +SET Key8594 Value8594 +SET Key8595 Value8595 +SET Key8596 Value8596 +SET Key8597 Value8597 +SET Key8598 Value8598 +SET Key8599 Value8599 +SET Key8600 Value8600 +SET Key8601 Value8601 +SET Key8602 Value8602 +SET Key8603 Value8603 +SET Key8604 Value8604 +SET Key8605 Value8605 +SET Key8606 Value8606 +SET Key8607 Value8607 +SET Key8608 Value8608 +SET Key8609 Value8609 +SET Key8610 Value8610 +SET Key8611 Value8611 +SET Key8612 Value8612 +SET Key8613 Value8613 +SET Key8614 Value8614 +SET Key8615 Value8615 +SET Key8616 Value8616 +SET Key8617 Value8617 +SET Key8618 Value8618 +SET Key8619 Value8619 +SET Key8620 Value8620 +SET Key8621 Value8621 +SET Key8622 Value8622 +SET Key8623 Value8623 +SET Key8624 Value8624 +SET Key8625 Value8625 +SET Key8626 Value8626 +SET Key8627 Value8627 +SET Key8628 Value8628 +SET Key8629 Value8629 +SET Key8630 Value8630 +SET Key8631 Value8631 +SET Key8632 Value8632 +SET Key8633 Value8633 +SET Key8634 Value8634 +SET Key8635 Value8635 +SET Key8636 Value8636 +SET Key8637 Value8637 +SET Key8638 Value8638 +SET Key8639 Value8639 +SET Key8640 Value8640 +SET Key8641 Value8641 +SET Key8642 Value8642 +SET Key8643 Value8643 +SET Key8644 Value8644 +SET Key8645 Value8645 +SET Key8646 Value8646 +SET Key8647 Value8647 +SET Key8648 Value8648 +SET Key8649 Value8649 +SET Key8650 Value8650 +SET Key8651 Value8651 +SET Key8652 Value8652 +SET Key8653 Value8653 +SET Key8654 Value8654 +SET Key8655 Value8655 +SET Key8656 Value8656 +SET Key8657 Value8657 +SET Key8658 Value8658 +SET Key8659 Value8659 +SET Key8660 Value8660 +SET Key8661 Value8661 +SET Key8662 Value8662 +SET Key8663 Value8663 +SET Key8664 Value8664 +SET Key8665 Value8665 +SET Key8666 Value8666 +SET Key8667 Value8667 +SET Key8668 Value8668 +SET Key8669 Value8669 +SET Key8670 Value8670 +SET Key8671 Value8671 +SET Key8672 Value8672 +SET Key8673 Value8673 +SET Key8674 Value8674 +SET Key8675 Value8675 +SET Key8676 Value8676 +SET Key8677 Value8677 +SET Key8678 Value8678 +SET Key8679 Value8679 +SET Key8680 Value8680 +SET Key8681 Value8681 +SET Key8682 Value8682 +SET Key8683 Value8683 +SET Key8684 Value8684 +SET Key8685 Value8685 +SET Key8686 Value8686 +SET Key8687 Value8687 +SET Key8688 Value8688 +SET Key8689 Value8689 +SET Key8690 Value8690 +SET Key8691 Value8691 +SET Key8692 Value8692 +SET Key8693 Value8693 +SET Key8694 Value8694 +SET Key8695 Value8695 +SET Key8696 Value8696 +SET Key8697 Value8697 +SET Key8698 Value8698 +SET Key8699 Value8699 +SET Key8700 Value8700 +SET Key8701 Value8701 +SET Key8702 Value8702 +SET Key8703 Value8703 +SET Key8704 Value8704 +SET Key8705 Value8705 +SET Key8706 Value8706 +SET Key8707 Value8707 +SET Key8708 Value8708 +SET Key8709 Value8709 +SET Key8710 Value8710 +SET Key8711 Value8711 +SET Key8712 Value8712 +SET Key8713 Value8713 +SET Key8714 Value8714 +SET Key8715 Value8715 +SET Key8716 Value8716 +SET Key8717 Value8717 +SET Key8718 Value8718 +SET Key8719 Value8719 +SET Key8720 Value8720 +SET Key8721 Value8721 +SET Key8722 Value8722 +SET Key8723 Value8723 +SET Key8724 Value8724 +SET Key8725 Value8725 +SET Key8726 Value8726 +SET Key8727 Value8727 +SET Key8728 Value8728 +SET Key8729 Value8729 +SET Key8730 Value8730 +SET Key8731 Value8731 +SET Key8732 Value8732 +SET Key8733 Value8733 +SET Key8734 Value8734 +SET Key8735 Value8735 +SET Key8736 Value8736 +SET Key8737 Value8737 +SET Key8738 Value8738 +SET Key8739 Value8739 +SET Key8740 Value8740 +SET Key8741 Value8741 +SET Key8742 Value8742 +SET Key8743 Value8743 +SET Key8744 Value8744 +SET Key8745 Value8745 +SET Key8746 Value8746 +SET Key8747 Value8747 +SET Key8748 Value8748 +SET Key8749 Value8749 +SET Key8750 Value8750 +SET Key8751 Value8751 +SET Key8752 Value8752 +SET Key8753 Value8753 +SET Key8754 Value8754 +SET Key8755 Value8755 +SET Key8756 Value8756 +SET Key8757 Value8757 +SET Key8758 Value8758 +SET Key8759 Value8759 +SET Key8760 Value8760 +SET Key8761 Value8761 +SET Key8762 Value8762 +SET Key8763 Value8763 +SET Key8764 Value8764 +SET Key8765 Value8765 +SET Key8766 Value8766 +SET Key8767 Value8767 +SET Key8768 Value8768 +SET Key8769 Value8769 +SET Key8770 Value8770 +SET Key8771 Value8771 +SET Key8772 Value8772 +SET Key8773 Value8773 +SET Key8774 Value8774 +SET Key8775 Value8775 +SET Key8776 Value8776 +SET Key8777 Value8777 +SET Key8778 Value8778 +SET Key8779 Value8779 +SET Key8780 Value8780 +SET Key8781 Value8781 +SET Key8782 Value8782 +SET Key8783 Value8783 +SET Key8784 Value8784 +SET Key8785 Value8785 +SET Key8786 Value8786 +SET Key8787 Value8787 +SET Key8788 Value8788 +SET Key8789 Value8789 +SET Key8790 Value8790 +SET Key8791 Value8791 +SET Key8792 Value8792 +SET Key8793 Value8793 +SET Key8794 Value8794 +SET Key8795 Value8795 +SET Key8796 Value8796 +SET Key8797 Value8797 +SET Key8798 Value8798 +SET Key8799 Value8799 +SET Key8800 Value8800 +SET Key8801 Value8801 +SET Key8802 Value8802 +SET Key8803 Value8803 +SET Key8804 Value8804 +SET Key8805 Value8805 +SET Key8806 Value8806 +SET Key8807 Value8807 +SET Key8808 Value8808 +SET Key8809 Value8809 +SET Key8810 Value8810 +SET Key8811 Value8811 +SET Key8812 Value8812 +SET Key8813 Value8813 +SET Key8814 Value8814 +SET Key8815 Value8815 +SET Key8816 Value8816 +SET Key8817 Value8817 +SET Key8818 Value8818 +SET Key8819 Value8819 +SET Key8820 Value8820 +SET Key8821 Value8821 +SET Key8822 Value8822 +SET Key8823 Value8823 +SET Key8824 Value8824 +SET Key8825 Value8825 +SET Key8826 Value8826 +SET Key8827 Value8827 +SET Key8828 Value8828 +SET Key8829 Value8829 +SET Key8830 Value8830 +SET Key8831 Value8831 +SET Key8832 Value8832 +SET Key8833 Value8833 +SET Key8834 Value8834 +SET Key8835 Value8835 +SET Key8836 Value8836 +SET Key8837 Value8837 +SET Key8838 Value8838 +SET Key8839 Value8839 +SET Key8840 Value8840 +SET Key8841 Value8841 +SET Key8842 Value8842 +SET Key8843 Value8843 +SET Key8844 Value8844 +SET Key8845 Value8845 +SET Key8846 Value8846 +SET Key8847 Value8847 +SET Key8848 Value8848 +SET Key8849 Value8849 +SET Key8850 Value8850 +SET Key8851 Value8851 +SET Key8852 Value8852 +SET Key8853 Value8853 +SET Key8854 Value8854 +SET Key8855 Value8855 +SET Key8856 Value8856 +SET Key8857 Value8857 +SET Key8858 Value8858 +SET Key8859 Value8859 +SET Key8860 Value8860 +SET Key8861 Value8861 +SET Key8862 Value8862 +SET Key8863 Value8863 +SET Key8864 Value8864 +SET Key8865 Value8865 +SET Key8866 Value8866 +SET Key8867 Value8867 +SET Key8868 Value8868 +SET Key8869 Value8869 +SET Key8870 Value8870 +SET Key8871 Value8871 +SET Key8872 Value8872 +SET Key8873 Value8873 +SET Key8874 Value8874 +SET Key8875 Value8875 +SET Key8876 Value8876 +SET Key8877 Value8877 +SET Key8878 Value8878 +SET Key8879 Value8879 +SET Key8880 Value8880 +SET Key8881 Value8881 +SET Key8882 Value8882 +SET Key8883 Value8883 +SET Key8884 Value8884 +SET Key8885 Value8885 +SET Key8886 Value8886 +SET Key8887 Value8887 +SET Key8888 Value8888 +SET Key8889 Value8889 +SET Key8890 Value8890 +SET Key8891 Value8891 +SET Key8892 Value8892 +SET Key8893 Value8893 +SET Key8894 Value8894 +SET Key8895 Value8895 +SET Key8896 Value8896 +SET Key8897 Value8897 +SET Key8898 Value8898 +SET Key8899 Value8899 +SET Key8900 Value8900 +SET Key8901 Value8901 +SET Key8902 Value8902 +SET Key8903 Value8903 +SET Key8904 Value8904 +SET Key8905 Value8905 +SET Key8906 Value8906 +SET Key8907 Value8907 +SET Key8908 Value8908 +SET Key8909 Value8909 +SET Key8910 Value8910 +SET Key8911 Value8911 +SET Key8912 Value8912 +SET Key8913 Value8913 +SET Key8914 Value8914 +SET Key8915 Value8915 +SET Key8916 Value8916 +SET Key8917 Value8917 +SET Key8918 Value8918 +SET Key8919 Value8919 +SET Key8920 Value8920 +SET Key8921 Value8921 +SET Key8922 Value8922 +SET Key8923 Value8923 +SET Key8924 Value8924 +SET Key8925 Value8925 +SET Key8926 Value8926 +SET Key8927 Value8927 +SET Key8928 Value8928 +SET Key8929 Value8929 +SET Key8930 Value8930 +SET Key8931 Value8931 +SET Key8932 Value8932 +SET Key8933 Value8933 +SET Key8934 Value8934 +SET Key8935 Value8935 +SET Key8936 Value8936 +SET Key8937 Value8937 +SET Key8938 Value8938 +SET Key8939 Value8939 +SET Key8940 Value8940 +SET Key8941 Value8941 +SET Key8942 Value8942 +SET Key8943 Value8943 +SET Key8944 Value8944 +SET Key8945 Value8945 +SET Key8946 Value8946 +SET Key8947 Value8947 +SET Key8948 Value8948 +SET Key8949 Value8949 +SET Key8950 Value8950 +SET Key8951 Value8951 +SET Key8952 Value8952 +SET Key8953 Value8953 +SET Key8954 Value8954 +SET Key8955 Value8955 +SET Key8956 Value8956 +SET Key8957 Value8957 +SET Key8958 Value8958 +SET Key8959 Value8959 +SET Key8960 Value8960 +SET Key8961 Value8961 +SET Key8962 Value8962 +SET Key8963 Value8963 +SET Key8964 Value8964 +SET Key8965 Value8965 +SET Key8966 Value8966 +SET Key8967 Value8967 +SET Key8968 Value8968 +SET Key8969 Value8969 +SET Key8970 Value8970 +SET Key8971 Value8971 +SET Key8972 Value8972 +SET Key8973 Value8973 +SET Key8974 Value8974 +SET Key8975 Value8975 +SET Key8976 Value8976 +SET Key8977 Value8977 +SET Key8978 Value8978 +SET Key8979 Value8979 +SET Key8980 Value8980 +SET Key8981 Value8981 +SET Key8982 Value8982 +SET Key8983 Value8983 +SET Key8984 Value8984 +SET Key8985 Value8985 +SET Key8986 Value8986 +SET Key8987 Value8987 +SET Key8988 Value8988 +SET Key8989 Value8989 +SET Key8990 Value8990 +SET Key8991 Value8991 +SET Key8992 Value8992 +SET Key8993 Value8993 +SET Key8994 Value8994 +SET Key8995 Value8995 +SET Key8996 Value8996 +SET Key8997 Value8997 +SET Key8998 Value8998 +SET Key8999 Value8999 +SET Key9000 Value9000 +SET Key9001 Value9001 +SET Key9002 Value9002 +SET Key9003 Value9003 +SET Key9004 Value9004 +SET Key9005 Value9005 +SET Key9006 Value9006 +SET Key9007 Value9007 +SET Key9008 Value9008 +SET Key9009 Value9009 +SET Key9010 Value9010 +SET Key9011 Value9011 +SET Key9012 Value9012 +SET Key9013 Value9013 +SET Key9014 Value9014 +SET Key9015 Value9015 +SET Key9016 Value9016 +SET Key9017 Value9017 +SET Key9018 Value9018 +SET Key9019 Value9019 +SET Key9020 Value9020 +SET Key9021 Value9021 +SET Key9022 Value9022 +SET Key9023 Value9023 +SET Key9024 Value9024 +SET Key9025 Value9025 +SET Key9026 Value9026 +SET Key9027 Value9027 +SET Key9028 Value9028 +SET Key9029 Value9029 +SET Key9030 Value9030 +SET Key9031 Value9031 +SET Key9032 Value9032 +SET Key9033 Value9033 +SET Key9034 Value9034 +SET Key9035 Value9035 +SET Key9036 Value9036 +SET Key9037 Value9037 +SET Key9038 Value9038 +SET Key9039 Value9039 +SET Key9040 Value9040 +SET Key9041 Value9041 +SET Key9042 Value9042 +SET Key9043 Value9043 +SET Key9044 Value9044 +SET Key9045 Value9045 +SET Key9046 Value9046 +SET Key9047 Value9047 +SET Key9048 Value9048 +SET Key9049 Value9049 +SET Key9050 Value9050 +SET Key9051 Value9051 +SET Key9052 Value9052 +SET Key9053 Value9053 +SET Key9054 Value9054 +SET Key9055 Value9055 +SET Key9056 Value9056 +SET Key9057 Value9057 +SET Key9058 Value9058 +SET Key9059 Value9059 +SET Key9060 Value9060 +SET Key9061 Value9061 +SET Key9062 Value9062 +SET Key9063 Value9063 +SET Key9064 Value9064 +SET Key9065 Value9065 +SET Key9066 Value9066 +SET Key9067 Value9067 +SET Key9068 Value9068 +SET Key9069 Value9069 +SET Key9070 Value9070 +SET Key9071 Value9071 +SET Key9072 Value9072 +SET Key9073 Value9073 +SET Key9074 Value9074 +SET Key9075 Value9075 +SET Key9076 Value9076 +SET Key9077 Value9077 +SET Key9078 Value9078 +SET Key9079 Value9079 +SET Key9080 Value9080 +SET Key9081 Value9081 +SET Key9082 Value9082 +SET Key9083 Value9083 +SET Key9084 Value9084 +SET Key9085 Value9085 +SET Key9086 Value9086 +SET Key9087 Value9087 +SET Key9088 Value9088 +SET Key9089 Value9089 +SET Key9090 Value9090 +SET Key9091 Value9091 +SET Key9092 Value9092 +SET Key9093 Value9093 +SET Key9094 Value9094 +SET Key9095 Value9095 +SET Key9096 Value9096 +SET Key9097 Value9097 +SET Key9098 Value9098 +SET Key9099 Value9099 +SET Key9100 Value9100 +SET Key9101 Value9101 +SET Key9102 Value9102 +SET Key9103 Value9103 +SET Key9104 Value9104 +SET Key9105 Value9105 +SET Key9106 Value9106 +SET Key9107 Value9107 +SET Key9108 Value9108 +SET Key9109 Value9109 +SET Key9110 Value9110 +SET Key9111 Value9111 +SET Key9112 Value9112 +SET Key9113 Value9113 +SET Key9114 Value9114 +SET Key9115 Value9115 +SET Key9116 Value9116 +SET Key9117 Value9117 +SET Key9118 Value9118 +SET Key9119 Value9119 +SET Key9120 Value9120 +SET Key9121 Value9121 +SET Key9122 Value9122 +SET Key9123 Value9123 +SET Key9124 Value9124 +SET Key9125 Value9125 +SET Key9126 Value9126 +SET Key9127 Value9127 +SET Key9128 Value9128 +SET Key9129 Value9129 +SET Key9130 Value9130 +SET Key9131 Value9131 +SET Key9132 Value9132 +SET Key9133 Value9133 +SET Key9134 Value9134 +SET Key9135 Value9135 +SET Key9136 Value9136 +SET Key9137 Value9137 +SET Key9138 Value9138 +SET Key9139 Value9139 +SET Key9140 Value9140 +SET Key9141 Value9141 +SET Key9142 Value9142 +SET Key9143 Value9143 +SET Key9144 Value9144 +SET Key9145 Value9145 +SET Key9146 Value9146 +SET Key9147 Value9147 +SET Key9148 Value9148 +SET Key9149 Value9149 +SET Key9150 Value9150 +SET Key9151 Value9151 +SET Key9152 Value9152 +SET Key9153 Value9153 +SET Key9154 Value9154 +SET Key9155 Value9155 +SET Key9156 Value9156 +SET Key9157 Value9157 +SET Key9158 Value9158 +SET Key9159 Value9159 +SET Key9160 Value9160 +SET Key9161 Value9161 +SET Key9162 Value9162 +SET Key9163 Value9163 +SET Key9164 Value9164 +SET Key9165 Value9165 +SET Key9166 Value9166 +SET Key9167 Value9167 +SET Key9168 Value9168 +SET Key9169 Value9169 +SET Key9170 Value9170 +SET Key9171 Value9171 +SET Key9172 Value9172 +SET Key9173 Value9173 +SET Key9174 Value9174 +SET Key9175 Value9175 +SET Key9176 Value9176 +SET Key9177 Value9177 +SET Key9178 Value9178 +SET Key9179 Value9179 +SET Key9180 Value9180 +SET Key9181 Value9181 +SET Key9182 Value9182 +SET Key9183 Value9183 +SET Key9184 Value9184 +SET Key9185 Value9185 +SET Key9186 Value9186 +SET Key9187 Value9187 +SET Key9188 Value9188 +SET Key9189 Value9189 +SET Key9190 Value9190 +SET Key9191 Value9191 +SET Key9192 Value9192 +SET Key9193 Value9193 +SET Key9194 Value9194 +SET Key9195 Value9195 +SET Key9196 Value9196 +SET Key9197 Value9197 +SET Key9198 Value9198 +SET Key9199 Value9199 +SET Key9200 Value9200 +SET Key9201 Value9201 +SET Key9202 Value9202 +SET Key9203 Value9203 +SET Key9204 Value9204 +SET Key9205 Value9205 +SET Key9206 Value9206 +SET Key9207 Value9207 +SET Key9208 Value9208 +SET Key9209 Value9209 +SET Key9210 Value9210 +SET Key9211 Value9211 +SET Key9212 Value9212 +SET Key9213 Value9213 +SET Key9214 Value9214 +SET Key9215 Value9215 +SET Key9216 Value9216 +SET Key9217 Value9217 +SET Key9218 Value9218 +SET Key9219 Value9219 +SET Key9220 Value9220 +SET Key9221 Value9221 +SET Key9222 Value9222 +SET Key9223 Value9223 +SET Key9224 Value9224 +SET Key9225 Value9225 +SET Key9226 Value9226 +SET Key9227 Value9227 +SET Key9228 Value9228 +SET Key9229 Value9229 +SET Key9230 Value9230 +SET Key9231 Value9231 +SET Key9232 Value9232 +SET Key9233 Value9233 +SET Key9234 Value9234 +SET Key9235 Value9235 +SET Key9236 Value9236 +SET Key9237 Value9237 +SET Key9238 Value9238 +SET Key9239 Value9239 +SET Key9240 Value9240 +SET Key9241 Value9241 +SET Key9242 Value9242 +SET Key9243 Value9243 +SET Key9244 Value9244 +SET Key9245 Value9245 +SET Key9246 Value9246 +SET Key9247 Value9247 +SET Key9248 Value9248 +SET Key9249 Value9249 +SET Key9250 Value9250 +SET Key9251 Value9251 +SET Key9252 Value9252 +SET Key9253 Value9253 +SET Key9254 Value9254 +SET Key9255 Value9255 +SET Key9256 Value9256 +SET Key9257 Value9257 +SET Key9258 Value9258 +SET Key9259 Value9259 +SET Key9260 Value9260 +SET Key9261 Value9261 +SET Key9262 Value9262 +SET Key9263 Value9263 +SET Key9264 Value9264 +SET Key9265 Value9265 +SET Key9266 Value9266 +SET Key9267 Value9267 +SET Key9268 Value9268 +SET Key9269 Value9269 +SET Key9270 Value9270 +SET Key9271 Value9271 +SET Key9272 Value9272 +SET Key9273 Value9273 +SET Key9274 Value9274 +SET Key9275 Value9275 +SET Key9276 Value9276 +SET Key9277 Value9277 +SET Key9278 Value9278 +SET Key9279 Value9279 +SET Key9280 Value9280 +SET Key9281 Value9281 +SET Key9282 Value9282 +SET Key9283 Value9283 +SET Key9284 Value9284 +SET Key9285 Value9285 +SET Key9286 Value9286 +SET Key9287 Value9287 +SET Key9288 Value9288 +SET Key9289 Value9289 +SET Key9290 Value9290 +SET Key9291 Value9291 +SET Key9292 Value9292 +SET Key9293 Value9293 +SET Key9294 Value9294 +SET Key9295 Value9295 +SET Key9296 Value9296 +SET Key9297 Value9297 +SET Key9298 Value9298 +SET Key9299 Value9299 +SET Key9300 Value9300 +SET Key9301 Value9301 +SET Key9302 Value9302 +SET Key9303 Value9303 +SET Key9304 Value9304 +SET Key9305 Value9305 +SET Key9306 Value9306 +SET Key9307 Value9307 +SET Key9308 Value9308 +SET Key9309 Value9309 +SET Key9310 Value9310 +SET Key9311 Value9311 +SET Key9312 Value9312 +SET Key9313 Value9313 +SET Key9314 Value9314 +SET Key9315 Value9315 +SET Key9316 Value9316 +SET Key9317 Value9317 +SET Key9318 Value9318 +SET Key9319 Value9319 +SET Key9320 Value9320 +SET Key9321 Value9321 +SET Key9322 Value9322 +SET Key9323 Value9323 +SET Key9324 Value9324 +SET Key9325 Value9325 +SET Key9326 Value9326 +SET Key9327 Value9327 +SET Key9328 Value9328 +SET Key9329 Value9329 +SET Key9330 Value9330 +SET Key9331 Value9331 +SET Key9332 Value9332 +SET Key9333 Value9333 +SET Key9334 Value9334 +SET Key9335 Value9335 +SET Key9336 Value9336 +SET Key9337 Value9337 +SET Key9338 Value9338 +SET Key9339 Value9339 +SET Key9340 Value9340 +SET Key9341 Value9341 +SET Key9342 Value9342 +SET Key9343 Value9343 +SET Key9344 Value9344 +SET Key9345 Value9345 +SET Key9346 Value9346 +SET Key9347 Value9347 +SET Key9348 Value9348 +SET Key9349 Value9349 +SET Key9350 Value9350 +SET Key9351 Value9351 +SET Key9352 Value9352 +SET Key9353 Value9353 +SET Key9354 Value9354 +SET Key9355 Value9355 +SET Key9356 Value9356 +SET Key9357 Value9357 +SET Key9358 Value9358 +SET Key9359 Value9359 +SET Key9360 Value9360 +SET Key9361 Value9361 +SET Key9362 Value9362 +SET Key9363 Value9363 +SET Key9364 Value9364 +SET Key9365 Value9365 +SET Key9366 Value9366 +SET Key9367 Value9367 +SET Key9368 Value9368 +SET Key9369 Value9369 +SET Key9370 Value9370 +SET Key9371 Value9371 +SET Key9372 Value9372 +SET Key9373 Value9373 +SET Key9374 Value9374 +SET Key9375 Value9375 +SET Key9376 Value9376 +SET Key9377 Value9377 +SET Key9378 Value9378 +SET Key9379 Value9379 +SET Key9380 Value9380 +SET Key9381 Value9381 +SET Key9382 Value9382 +SET Key9383 Value9383 +SET Key9384 Value9384 +SET Key9385 Value9385 +SET Key9386 Value9386 +SET Key9387 Value9387 +SET Key9388 Value9388 +SET Key9389 Value9389 +SET Key9390 Value9390 +SET Key9391 Value9391 +SET Key9392 Value9392 +SET Key9393 Value9393 +SET Key9394 Value9394 +SET Key9395 Value9395 +SET Key9396 Value9396 +SET Key9397 Value9397 +SET Key9398 Value9398 +SET Key9399 Value9399 +SET Key9400 Value9400 +SET Key9401 Value9401 +SET Key9402 Value9402 +SET Key9403 Value9403 +SET Key9404 Value9404 +SET Key9405 Value9405 +SET Key9406 Value9406 +SET Key9407 Value9407 +SET Key9408 Value9408 +SET Key9409 Value9409 +SET Key9410 Value9410 +SET Key9411 Value9411 +SET Key9412 Value9412 +SET Key9413 Value9413 +SET Key9414 Value9414 +SET Key9415 Value9415 +SET Key9416 Value9416 +SET Key9417 Value9417 +SET Key9418 Value9418 +SET Key9419 Value9419 +SET Key9420 Value9420 +SET Key9421 Value9421 +SET Key9422 Value9422 +SET Key9423 Value9423 +SET Key9424 Value9424 +SET Key9425 Value9425 +SET Key9426 Value9426 +SET Key9427 Value9427 +SET Key9428 Value9428 +SET Key9429 Value9429 +SET Key9430 Value9430 +SET Key9431 Value9431 +SET Key9432 Value9432 +SET Key9433 Value9433 +SET Key9434 Value9434 +SET Key9435 Value9435 +SET Key9436 Value9436 +SET Key9437 Value9437 +SET Key9438 Value9438 +SET Key9439 Value9439 +SET Key9440 Value9440 +SET Key9441 Value9441 +SET Key9442 Value9442 +SET Key9443 Value9443 +SET Key9444 Value9444 +SET Key9445 Value9445 +SET Key9446 Value9446 +SET Key9447 Value9447 +SET Key9448 Value9448 +SET Key9449 Value9449 +SET Key9450 Value9450 +SET Key9451 Value9451 +SET Key9452 Value9452 +SET Key9453 Value9453 +SET Key9454 Value9454 +SET Key9455 Value9455 +SET Key9456 Value9456 +SET Key9457 Value9457 +SET Key9458 Value9458 +SET Key9459 Value9459 +SET Key9460 Value9460 +SET Key9461 Value9461 +SET Key9462 Value9462 +SET Key9463 Value9463 +SET Key9464 Value9464 +SET Key9465 Value9465 +SET Key9466 Value9466 +SET Key9467 Value9467 +SET Key9468 Value9468 +SET Key9469 Value9469 +SET Key9470 Value9470 +SET Key9471 Value9471 +SET Key9472 Value9472 +SET Key9473 Value9473 +SET Key9474 Value9474 +SET Key9475 Value9475 +SET Key9476 Value9476 +SET Key9477 Value9477 +SET Key9478 Value9478 +SET Key9479 Value9479 +SET Key9480 Value9480 +SET Key9481 Value9481 +SET Key9482 Value9482 +SET Key9483 Value9483 +SET Key9484 Value9484 +SET Key9485 Value9485 +SET Key9486 Value9486 +SET Key9487 Value9487 +SET Key9488 Value9488 +SET Key9489 Value9489 +SET Key9490 Value9490 +SET Key9491 Value9491 +SET Key9492 Value9492 +SET Key9493 Value9493 +SET Key9494 Value9494 +SET Key9495 Value9495 +SET Key9496 Value9496 +SET Key9497 Value9497 +SET Key9498 Value9498 +SET Key9499 Value9499 +SET Key9500 Value9500 +SET Key9501 Value9501 +SET Key9502 Value9502 +SET Key9503 Value9503 +SET Key9504 Value9504 +SET Key9505 Value9505 +SET Key9506 Value9506 +SET Key9507 Value9507 +SET Key9508 Value9508 +SET Key9509 Value9509 +SET Key9510 Value9510 +SET Key9511 Value9511 +SET Key9512 Value9512 +SET Key9513 Value9513 +SET Key9514 Value9514 +SET Key9515 Value9515 +SET Key9516 Value9516 +SET Key9517 Value9517 +SET Key9518 Value9518 +SET Key9519 Value9519 +SET Key9520 Value9520 +SET Key9521 Value9521 +SET Key9522 Value9522 +SET Key9523 Value9523 +SET Key9524 Value9524 +SET Key9525 Value9525 +SET Key9526 Value9526 +SET Key9527 Value9527 +SET Key9528 Value9528 +SET Key9529 Value9529 +SET Key9530 Value9530 +SET Key9531 Value9531 +SET Key9532 Value9532 +SET Key9533 Value9533 +SET Key9534 Value9534 +SET Key9535 Value9535 +SET Key9536 Value9536 +SET Key9537 Value9537 +SET Key9538 Value9538 +SET Key9539 Value9539 +SET Key9540 Value9540 +SET Key9541 Value9541 +SET Key9542 Value9542 +SET Key9543 Value9543 +SET Key9544 Value9544 +SET Key9545 Value9545 +SET Key9546 Value9546 +SET Key9547 Value9547 +SET Key9548 Value9548 +SET Key9549 Value9549 +SET Key9550 Value9550 +SET Key9551 Value9551 +SET Key9552 Value9552 +SET Key9553 Value9553 +SET Key9554 Value9554 +SET Key9555 Value9555 +SET Key9556 Value9556 +SET Key9557 Value9557 +SET Key9558 Value9558 +SET Key9559 Value9559 +SET Key9560 Value9560 +SET Key9561 Value9561 +SET Key9562 Value9562 +SET Key9563 Value9563 +SET Key9564 Value9564 +SET Key9565 Value9565 +SET Key9566 Value9566 +SET Key9567 Value9567 +SET Key9568 Value9568 +SET Key9569 Value9569 +SET Key9570 Value9570 +SET Key9571 Value9571 +SET Key9572 Value9572 +SET Key9573 Value9573 +SET Key9574 Value9574 +SET Key9575 Value9575 +SET Key9576 Value9576 +SET Key9577 Value9577 +SET Key9578 Value9578 +SET Key9579 Value9579 +SET Key9580 Value9580 +SET Key9581 Value9581 +SET Key9582 Value9582 +SET Key9583 Value9583 +SET Key9584 Value9584 +SET Key9585 Value9585 +SET Key9586 Value9586 +SET Key9587 Value9587 +SET Key9588 Value9588 +SET Key9589 Value9589 +SET Key9590 Value9590 +SET Key9591 Value9591 +SET Key9592 Value9592 +SET Key9593 Value9593 +SET Key9594 Value9594 +SET Key9595 Value9595 +SET Key9596 Value9596 +SET Key9597 Value9597 +SET Key9598 Value9598 +SET Key9599 Value9599 +SET Key9600 Value9600 +SET Key9601 Value9601 +SET Key9602 Value9602 +SET Key9603 Value9603 +SET Key9604 Value9604 +SET Key9605 Value9605 +SET Key9606 Value9606 +SET Key9607 Value9607 +SET Key9608 Value9608 +SET Key9609 Value9609 +SET Key9610 Value9610 +SET Key9611 Value9611 +SET Key9612 Value9612 +SET Key9613 Value9613 +SET Key9614 Value9614 +SET Key9615 Value9615 +SET Key9616 Value9616 +SET Key9617 Value9617 +SET Key9618 Value9618 +SET Key9619 Value9619 +SET Key9620 Value9620 +SET Key9621 Value9621 +SET Key9622 Value9622 +SET Key9623 Value9623 +SET Key9624 Value9624 +SET Key9625 Value9625 +SET Key9626 Value9626 +SET Key9627 Value9627 +SET Key9628 Value9628 +SET Key9629 Value9629 +SET Key9630 Value9630 +SET Key9631 Value9631 +SET Key9632 Value9632 +SET Key9633 Value9633 +SET Key9634 Value9634 +SET Key9635 Value9635 +SET Key9636 Value9636 +SET Key9637 Value9637 +SET Key9638 Value9638 +SET Key9639 Value9639 +SET Key9640 Value9640 +SET Key9641 Value9641 +SET Key9642 Value9642 +SET Key9643 Value9643 +SET Key9644 Value9644 +SET Key9645 Value9645 +SET Key9646 Value9646 +SET Key9647 Value9647 +SET Key9648 Value9648 +SET Key9649 Value9649 +SET Key9650 Value9650 +SET Key9651 Value9651 +SET Key9652 Value9652 +SET Key9653 Value9653 +SET Key9654 Value9654 +SET Key9655 Value9655 +SET Key9656 Value9656 +SET Key9657 Value9657 +SET Key9658 Value9658 +SET Key9659 Value9659 +SET Key9660 Value9660 +SET Key9661 Value9661 +SET Key9662 Value9662 +SET Key9663 Value9663 +SET Key9664 Value9664 +SET Key9665 Value9665 +SET Key9666 Value9666 +SET Key9667 Value9667 +SET Key9668 Value9668 +SET Key9669 Value9669 +SET Key9670 Value9670 +SET Key9671 Value9671 +SET Key9672 Value9672 +SET Key9673 Value9673 +SET Key9674 Value9674 +SET Key9675 Value9675 +SET Key9676 Value9676 +SET Key9677 Value9677 +SET Key9678 Value9678 +SET Key9679 Value9679 +SET Key9680 Value9680 +SET Key9681 Value9681 +SET Key9682 Value9682 +SET Key9683 Value9683 +SET Key9684 Value9684 +SET Key9685 Value9685 +SET Key9686 Value9686 +SET Key9687 Value9687 +SET Key9688 Value9688 +SET Key9689 Value9689 +SET Key9690 Value9690 +SET Key9691 Value9691 +SET Key9692 Value9692 +SET Key9693 Value9693 +SET Key9694 Value9694 +SET Key9695 Value9695 +SET Key9696 Value9696 +SET Key9697 Value9697 +SET Key9698 Value9698 +SET Key9699 Value9699 +SET Key9700 Value9700 +SET Key9701 Value9701 +SET Key9702 Value9702 +SET Key9703 Value9703 +SET Key9704 Value9704 +SET Key9705 Value9705 +SET Key9706 Value9706 +SET Key9707 Value9707 +SET Key9708 Value9708 +SET Key9709 Value9709 +SET Key9710 Value9710 +SET Key9711 Value9711 +SET Key9712 Value9712 +SET Key9713 Value9713 +SET Key9714 Value9714 +SET Key9715 Value9715 +SET Key9716 Value9716 +SET Key9717 Value9717 +SET Key9718 Value9718 +SET Key9719 Value9719 +SET Key9720 Value9720 +SET Key9721 Value9721 +SET Key9722 Value9722 +SET Key9723 Value9723 +SET Key9724 Value9724 +SET Key9725 Value9725 +SET Key9726 Value9726 +SET Key9727 Value9727 +SET Key9728 Value9728 +SET Key9729 Value9729 +SET Key9730 Value9730 +SET Key9731 Value9731 +SET Key9732 Value9732 +SET Key9733 Value9733 +SET Key9734 Value9734 +SET Key9735 Value9735 +SET Key9736 Value9736 +SET Key9737 Value9737 +SET Key9738 Value9738 +SET Key9739 Value9739 +SET Key9740 Value9740 +SET Key9741 Value9741 +SET Key9742 Value9742 +SET Key9743 Value9743 +SET Key9744 Value9744 +SET Key9745 Value9745 +SET Key9746 Value9746 +SET Key9747 Value9747 +SET Key9748 Value9748 +SET Key9749 Value9749 +SET Key9750 Value9750 +SET Key9751 Value9751 +SET Key9752 Value9752 +SET Key9753 Value9753 +SET Key9754 Value9754 +SET Key9755 Value9755 +SET Key9756 Value9756 +SET Key9757 Value9757 +SET Key9758 Value9758 +SET Key9759 Value9759 +SET Key9760 Value9760 +SET Key9761 Value9761 +SET Key9762 Value9762 +SET Key9763 Value9763 +SET Key9764 Value9764 +SET Key9765 Value9765 +SET Key9766 Value9766 +SET Key9767 Value9767 +SET Key9768 Value9768 +SET Key9769 Value9769 +SET Key9770 Value9770 +SET Key9771 Value9771 +SET Key9772 Value9772 +SET Key9773 Value9773 +SET Key9774 Value9774 +SET Key9775 Value9775 +SET Key9776 Value9776 +SET Key9777 Value9777 +SET Key9778 Value9778 +SET Key9779 Value9779 +SET Key9780 Value9780 +SET Key9781 Value9781 +SET Key9782 Value9782 +SET Key9783 Value9783 +SET Key9784 Value9784 +SET Key9785 Value9785 +SET Key9786 Value9786 +SET Key9787 Value9787 +SET Key9788 Value9788 +SET Key9789 Value9789 +SET Key9790 Value9790 +SET Key9791 Value9791 +SET Key9792 Value9792 +SET Key9793 Value9793 +SET Key9794 Value9794 +SET Key9795 Value9795 +SET Key9796 Value9796 +SET Key9797 Value9797 +SET Key9798 Value9798 +SET Key9799 Value9799 +SET Key9800 Value9800 +SET Key9801 Value9801 +SET Key9802 Value9802 +SET Key9803 Value9803 +SET Key9804 Value9804 +SET Key9805 Value9805 +SET Key9806 Value9806 +SET Key9807 Value9807 +SET Key9808 Value9808 +SET Key9809 Value9809 +SET Key9810 Value9810 +SET Key9811 Value9811 +SET Key9812 Value9812 +SET Key9813 Value9813 +SET Key9814 Value9814 +SET Key9815 Value9815 +SET Key9816 Value9816 +SET Key9817 Value9817 +SET Key9818 Value9818 +SET Key9819 Value9819 +SET Key9820 Value9820 +SET Key9821 Value9821 +SET Key9822 Value9822 +SET Key9823 Value9823 +SET Key9824 Value9824 +SET Key9825 Value9825 +SET Key9826 Value9826 +SET Key9827 Value9827 +SET Key9828 Value9828 +SET Key9829 Value9829 +SET Key9830 Value9830 +SET Key9831 Value9831 +SET Key9832 Value9832 +SET Key9833 Value9833 +SET Key9834 Value9834 +SET Key9835 Value9835 +SET Key9836 Value9836 +SET Key9837 Value9837 +SET Key9838 Value9838 +SET Key9839 Value9839 +SET Key9840 Value9840 +SET Key9841 Value9841 +SET Key9842 Value9842 +SET Key9843 Value9843 +SET Key9844 Value9844 +SET Key9845 Value9845 +SET Key9846 Value9846 +SET Key9847 Value9847 +SET Key9848 Value9848 +SET Key9849 Value9849 +SET Key9850 Value9850 +SET Key9851 Value9851 +SET Key9852 Value9852 +SET Key9853 Value9853 +SET Key9854 Value9854 +SET Key9855 Value9855 +SET Key9856 Value9856 +SET Key9857 Value9857 +SET Key9858 Value9858 +SET Key9859 Value9859 +SET Key9860 Value9860 +SET Key9861 Value9861 +SET Key9862 Value9862 +SET Key9863 Value9863 +SET Key9864 Value9864 +SET Key9865 Value9865 +SET Key9866 Value9866 +SET Key9867 Value9867 +SET Key9868 Value9868 +SET Key9869 Value9869 +SET Key9870 Value9870 +SET Key9871 Value9871 +SET Key9872 Value9872 +SET Key9873 Value9873 +SET Key9874 Value9874 +SET Key9875 Value9875 +SET Key9876 Value9876 +SET Key9877 Value9877 +SET Key9878 Value9878 +SET Key9879 Value9879 +SET Key9880 Value9880 +SET Key9881 Value9881 +SET Key9882 Value9882 +SET Key9883 Value9883 +SET Key9884 Value9884 +SET Key9885 Value9885 +SET Key9886 Value9886 +SET Key9887 Value9887 +SET Key9888 Value9888 +SET Key9889 Value9889 +SET Key9890 Value9890 +SET Key9891 Value9891 +SET Key9892 Value9892 +SET Key9893 Value9893 +SET Key9894 Value9894 +SET Key9895 Value9895 +SET Key9896 Value9896 +SET Key9897 Value9897 +SET Key9898 Value9898 +SET Key9899 Value9899 +SET Key9900 Value9900 +SET Key9901 Value9901 +SET Key9902 Value9902 +SET Key9903 Value9903 +SET Key9904 Value9904 +SET Key9905 Value9905 +SET Key9906 Value9906 +SET Key9907 Value9907 +SET Key9908 Value9908 +SET Key9909 Value9909 +SET Key9910 Value9910 +SET Key9911 Value9911 +SET Key9912 Value9912 +SET Key9913 Value9913 +SET Key9914 Value9914 +SET Key9915 Value9915 +SET Key9916 Value9916 +SET Key9917 Value9917 +SET Key9918 Value9918 +SET Key9919 Value9919 +SET Key9920 Value9920 +SET Key9921 Value9921 +SET Key9922 Value9922 +SET Key9923 Value9923 +SET Key9924 Value9924 +SET Key9925 Value9925 +SET Key9926 Value9926 +SET Key9927 Value9927 +SET Key9928 Value9928 +SET Key9929 Value9929 +SET Key9930 Value9930 +SET Key9931 Value9931 +SET Key9932 Value9932 +SET Key9933 Value9933 +SET Key9934 Value9934 +SET Key9935 Value9935 +SET Key9936 Value9936 +SET Key9937 Value9937 +SET Key9938 Value9938 +SET Key9939 Value9939 +SET Key9940 Value9940 +SET Key9941 Value9941 +SET Key9942 Value9942 +SET Key9943 Value9943 +SET Key9944 Value9944 +SET Key9945 Value9945 +SET Key9946 Value9946 +SET Key9947 Value9947 +SET Key9948 Value9948 +SET Key9949 Value9949 +SET Key9950 Value9950 +SET Key9951 Value9951 +SET Key9952 Value9952 +SET Key9953 Value9953 +SET Key9954 Value9954 +SET Key9955 Value9955 +SET Key9956 Value9956 +SET Key9957 Value9957 +SET Key9958 Value9958 +SET Key9959 Value9959 +SET Key9960 Value9960 +SET Key9961 Value9961 +SET Key9962 Value9962 +SET Key9963 Value9963 +SET Key9964 Value9964 +SET Key9965 Value9965 +SET Key9966 Value9966 +SET Key9967 Value9967 +SET Key9968 Value9968 +SET Key9969 Value9969 +SET Key9970 Value9970 +SET Key9971 Value9971 +SET Key9972 Value9972 +SET Key9973 Value9973 +SET Key9974 Value9974 +SET Key9975 Value9975 +SET Key9976 Value9976 +SET Key9977 Value9977 +SET Key9978 Value9978 +SET Key9979 Value9979 +SET Key9980 Value9980 +SET Key9981 Value9981 +SET Key9982 Value9982 +SET Key9983 Value9983 +SET Key9984 Value9984 +SET Key9985 Value9985 +SET Key9986 Value9986 +SET Key9987 Value9987 +SET Key9988 Value9988 +SET Key9989 Value9989 +SET Key9990 Value9990 +SET Key9991 Value9991 +SET Key9992 Value9992 +SET Key9993 Value9993 +SET Key9994 Value9994 +SET Key9995 Value9995 +SET Key9996 Value9996 +SET Key9997 Value9997 +SET Key9998 Value9998 +SET Key9999 Value9999 \ No newline at end of file diff --git a/tests/e2e/test-data/bulk-upload/bulkUplAllKeyTypes.txt b/tests/e2e/test-data/bulk-upload/bulkUplAllKeyTypes.txt new file mode 100644 index 0000000000..3b71461d24 --- /dev/null +++ b/tests/e2e/test-data/bulk-upload/bulkUplAllKeyTypes.txt @@ -0,0 +1,9 @@ +HSET hashkey1 'field' 'value' +LPUSH listkey1 'element' +SADD setkey1 'member' +ZADD zsetkey1 1 'member' +SET stringkey1 'value' +JSON.SET jsonkey1 . '1' +XADD streamkey1 * 'field' 'value' +GRAPH.QUERY graphkey1 "CREATE ()" +TS.CREATE tskey1 \ No newline at end of file diff --git a/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts b/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts index c94ade284a..98f6b62b1b 100644 --- a/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/bulk-delete.e2e.ts @@ -45,7 +45,7 @@ test('Verify that user can access the bulk actions screen in the Browser', async // Verify that user can see warning message clicking on Delete button for Bulk Deletion const warningTooltipTitle = 'Are you sure you want to perform this action?'; const warningTooltipMessage = 'All keys with HASH key type and selected pattern will be deleted.'; - await t.click(bulkActionsPage.deleteButton); + await t.click(bulkActionsPage.actionButton); await t.expect(bulkActionsPage.bulkActionWarningTooltip.textContent).contains(warningTooltipTitle, 'Warning Tooltip title is not displayed or text is invalid'); await t.expect(bulkActionsPage.bulkActionWarningTooltip.textContent).contains(warningTooltipMessage, 'Warning Tooltip message is not displayed or text is invalid'); await t.expect(bulkActionsPage.bulkApplyButton.exists).ok('Confirm deletion button not displayed'); diff --git a/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts b/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts new file mode 100644 index 0000000000..9fd365c1f8 --- /dev/null +++ b/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts @@ -0,0 +1,70 @@ +import * as path from 'path'; +import { t } from 'testcafe'; +import { rte } from '../../../helpers/constants'; +import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database'; +import { BrowserPage, BulkActionsPage } from '../../../pageObjects'; +import { commonUrl, ossStandaloneRedisearch } from '../../../helpers/conf'; +import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; +import { deleteAllKeysFromDB, verifyKeysDisplayedInTheList } from '../../../helpers/keys'; + +const browserPage = new BrowserPage(); +const bulkActionsPage = new BulkActionsPage(); + +const dbParameters = { host: ossStandaloneRedisearch.host, port: ossStandaloneRedisearch.port }; +const filesToUpload = ['bulkUplAllKeyTypes.txt', 'bigKeysData.rtf']; +const filePathes = { + allKeysFile: path.join('..', '..', '..', 'test-data', 'bulk-upload', filesToUpload[0]), + bigDataFile: path.join('..', '..', '..', 'test-data', 'bulk-upload', filesToUpload[1]) +}; +const keyNames = ['hashkey1', 'listkey1', 'setkey1', 'zsetkey1', 'stringkey1', 'jsonkey1', 'streamkey1', 'graphkey1', 'tskey1']; +const verifyCompletedResultText = async(resultsText: string[]): Promise => { + for (const result of resultsText) { + await t.expect(bulkActionsPage.bulkUploadCompletedSummary.textContent).contains(result, 'Bulk upload completed summary not correct'); + } +}; + +fixture `Bulk Upload` + .meta({ type: 'critical_path', rte: rte.standalone }) + .page(commonUrl) + .beforeEach(async() => { + await acceptLicenseTermsAndAddDatabaseApi(ossStandaloneRedisearch, ossStandaloneRedisearch.databaseName); + }) + .afterEach(async() => { + // Clear and delete database + await deleteAllKeysFromDB(dbParameters.host, dbParameters.port); + await deleteStandaloneDatabaseApi(ossStandaloneRedisearch); + }); +test('Verify bulk upload of different text docs formats', async t => { + // Verify bulk upload for docker app version + const allKeysResults = ['9Keys Processed', '9Success', '0Errors']; + const bigKeysResults = ['10 000Keys Processed', '10 000Success', '0Errors']; + const defaultText = 'Select or drag and drop a file'; + + // Open bulk actions + await t.click(browserPage.bulkActionsButton); + // Open bulk upload tab + await t.click(bulkActionsPage.bulkUpdateTab); + // Verify that Upload button disabled by default + await t.expect(bulkActionsPage.actionButton.hasAttribute('disabled')).ok('Upload button enabled without added file'); + + // Verify that keys of all types can be uploaded + await bulkActionsPage.uploadFileInBulk(filePathes.allKeysFile); + await verifyCompletedResultText(allKeysResults); + await t.expect(bulkActionsPage.bulkUploadCompletedSummary.textContent).notContains('0:00:00.00', 'Bulk upload completed summary not correct'); + await browserPage.searchByKeyName('*key1'); + await verifyKeysDisplayedInTheList(keyNames); + + // Verify that Upload button disabled after starting new upload + await t.click(bulkActionsPage.bulkActionStartNewButton); + await t.expect(bulkActionsPage.actionButton.hasAttribute('disabled')).ok('Upload button enabled without added file'); + + // Verify that user can remove uploaded file + await t.setFilesToUpload(bulkActionsPage.bulkUploadInput, [filePathes.bigDataFile]); + await t.expect(bulkActionsPage.bulkUploadContainer.textContent).contains(filesToUpload[1], 'Filename not displayed in upload input'); + await t.click(bulkActionsPage.removeFileBtn); + await t.expect(bulkActionsPage.bulkUploadContainer.textContent).contains(defaultText, 'File not removed from upload input'); + + // Verify that user can upload 10000 keys + await bulkActionsPage.uploadFileInBulk(filePathes.bigDataFile); + await verifyCompletedResultText(bigKeysResults); +}); From 98c670141d37c374dd280212d9077ed5b8004812 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 20 Apr 2023 09:23:33 +0300 Subject: [PATCH 059/106] add additional tests for 10_000 keys unit + integration --- .../bulk-actions/bulk-import.service.spec.ts | 23 ++++++++++++++ ...T-databases-id-bulk_actions-upload.test.ts | 30 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts index 4fb410217c..ba8ea3616e 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts @@ -151,6 +151,29 @@ describe('BulkImportService', () => { }); }); + it('should import data (10K) from file in batches 10K each', async () => { + spy.mockResolvedValue(Object.assign(new BulkActionSummary(), { + processed: 10_000, + succeed: 10_000, + failed: 0, + })); + expect(await service.import(mockClientMetadata, { + file: { + ...mockUploadImportFileDto.file, + buffer: generateNCommandsBuffer(10_000), + } as unknown as MemoryStoredFile, + })).toEqual({ + ...mockImportResult, + summary: { + processed: 10_000, + succeed: 10_000, + failed: 0, + errors: [], + }, + duration: jasmine.anything(), + }); + }); + it('should not import any data due to parse error', async () => { spy.mockResolvedValue(Object.assign(new BulkActionSummary(), { processed: 0, diff --git a/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts b/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts index c07440c91b..d9d6b3056e 100644 --- a/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts +++ b/redisinsight/api/test/api/bulk-actions/POST-databases-id-bulk_actions-upload.test.ts @@ -65,6 +65,36 @@ describe('POST /databases/:id/bulk-actions/import', () => { }, }); }); + it('Should import 10K strings', async () => { + await validateApiCall({ + endpoint, + attach: [ + 'file', + Buffer.from( + (new Array(10_000)).fill(1).map( + (_v, idx) => `SET key${idx} value${idx}`, + ).join('\n'), + ), + 'any_filename_and_ext', + ], + responseBody: { + id: 'empty', + databaseId: constants.TEST_INSTANCE_ID, + type: 'import', + summary: { processed: 10_000, succeed: 10_000, failed: 0, errors: [] }, + progress: null, + filter: null, + status: 'completed', + }, + checkFn: async ({ body }) => { + expect(body.duration).to.gt(0); + + expect(await rte.client.get('key0')).to.eq('value0'); + expect(await rte.client.get('key9999')).to.eq('value9999'); + expect(await rte.client.get('key10000')).to.eq(null); + }, + }); + }); it('Should import 50 out of 100 keys strings', async () => { await validateApiCall({ endpoint, From 4f85347604d35df09e5fce7aedf4f593054bfaa1 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Thu, 20 Apr 2023 09:39:16 +0200 Subject: [PATCH 060/106] #RI-4326 - add highlighting for bulk upload --- .../ui/src/constants/featuresHighlighting.tsx | 13 +++--- .../components/keys-header/KeysHeader.tsx | 45 +++++++++++++------ .../components/keys-header/styles.module.scss | 4 ++ .../EnablementArea/EnablementArea.tsx | 21 +-------- .../EnablementArea/components/Group/Group.tsx | 18 ++------ .../components/Group/styles.scss | 11 ----- 6 files changed, 46 insertions(+), 66 deletions(-) diff --git a/redisinsight/ui/src/constants/featuresHighlighting.tsx b/redisinsight/ui/src/constants/featuresHighlighting.tsx index d83df513d4..bfd7e0d460 100644 --- a/redisinsight/ui/src/constants/featuresHighlighting.tsx +++ b/redisinsight/ui/src/constants/featuresHighlighting.tsx @@ -1,5 +1,4 @@ import React from 'react' -import { PageNames } from 'uiSrc/constants/pages' export type FeaturesHighlightingType = 'plain' | 'tooltip' | 'popover' @@ -9,11 +8,11 @@ interface BuildHighlightingFeature { content?: string | React.ReactElement page?: string } -export const BUILD_FEATURES: { [key: string]: BuildHighlightingFeature } = { - myTutorials: { + +export const BUILD_FEATURES: Record = { + bulkUpload: { type: 'tooltip', - title: 'Upload your own tutorials', - content: 'Upload tutorials to work in Workbench and share them with others.', - page: PageNames.workbench + title: (New: Bulk Upload), + content: 'Upload your data in bulk from a file.', } -} +} as const diff --git a/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx b/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx index ec9bf0f141..23118aea4b 100644 --- a/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx +++ b/redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx @@ -23,10 +23,17 @@ import { getBasedOnViewTypeEvent, sendEventTelemetry, TelemetryEvent } from 'uiS import { isRedisearchAvailable } from 'uiSrc/utils' import { OnboardingStepName, OnboardingSteps } from 'uiSrc/constants/onboarding' -import { incrementOnboardStepAction } from 'uiSrc/slices/app/features' +import { + appFeatureHighlightingSelector, + incrementOnboardStepAction, + removeFeatureFromHighlighting +} from 'uiSrc/slices/app/features' import { OnboardingTour } from 'uiSrc/components' import { ONBOARDING_FEATURES } from 'uiSrc/components/onboarding-features' import { setBulkActionType } from 'uiSrc/slices/browser/bulkActions' +import { BUILD_FEATURES } from 'uiSrc/constants/featuresHighlighting' +import HighlightedFeature from 'uiSrc/components/hightlighted-feature/HighlightedFeature' +import { getHighlightingFeatures } from 'uiSrc/utils/highlighting' import AutoRefresh from '../auto-refresh' import FilterKeyType from '../filter-key-type' import RediSearchIndexesList from '../redisearch-key-list' @@ -77,6 +84,8 @@ const KeysHeader = (props: Props) => { const { id: instanceId, modules } = useSelector(connectedInstanceSelector) const { viewType, searchMode, isFiltered } = useSelector(keysSelector) const { selectedIndex } = useSelector(redisearchSelector) + const { features } = useSelector(appFeatureHighlightingSelector) + const { bulkUpload: bulkUploadHighlighting } = getHighlightingFeatures(features) const rootDivRef: Ref = useRef(null) @@ -241,6 +250,7 @@ const KeysHeader = (props: Props) => { const openBulkActions = () => { dispatch(setBulkActionType(BulkActionsType.Delete)) handleBulkActionsPanel(true) + dispatch(removeFeatureFromHighlighting('bulkUpload')) } const handleSwitchView = (type: KeyViewType) => { @@ -301,18 +311,27 @@ const KeysHeader = (props: Props) => { ) const BulkActionsBtn = ( - - - - - + + + + + + + ) const ViewSwitch = (width: number) => ( diff --git a/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss b/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss index 3c04df9b57..fd7ea87d18 100644 --- a/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/components/keys-header/styles.module.scss @@ -29,6 +29,10 @@ padding: 0 !important; } } + + .bulkActionsHighlighting { + display: inline-block; + } } .top, diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx index 6d94c5d1f7..a29d44938b 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/EnablementArea.tsx @@ -15,8 +15,7 @@ import { FormValues } from 'uiSrc/pages/workbench/components/enablement-area/EnablementArea/components/UploadTutorialForm/UploadTutorialForm' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' -import { appFeatureHighlightingSelector, removeFeatureFromHighlighting } from 'uiSrc/slices/app/features' -import { getHighlightingFeatures } from 'uiSrc/utils/highlighting' + import { getMarkdownPathByManifest, getWBSourcePath @@ -69,8 +68,6 @@ const EnablementArea = (props: Props) => { const history = useHistory() const dispatch = useDispatch() const { search: searchEAContext } = useSelector(appContextWorkbenchEA) - const { features } = useSelector(appFeatureHighlightingSelector) - const { myTutorials: myTutorialsHighlighting } = getHighlightingFeatures(features) const [isInternalPageVisible, setIsInternalPageVisible] = useState(false) const [isCreateOpen, setIsCreateOpen] = useState(false) @@ -80,18 +77,6 @@ const EnablementArea = (props: Props) => { const searchRef = useRef('') const { instanceId = '' } = useParams<{ instanceId: string }>() - useEffect(() => { - if (isCreateOpen && myTutorialsHighlighting) { - dispatch(removeFeatureFromHighlighting('myTutorials')) - } - - return () => { - if (myTutorialsHighlighting) { - dispatch(removeFeatureFromHighlighting('myTutorials')) - } - } - }, [isCreateOpen, myTutorialsHighlighting]) - useEffect(() => { searchRef.current = search const pagePath = new URLSearchParams(search).get('item') @@ -215,9 +200,6 @@ const EnablementArea = (props: Props) => { const currentSourcePath = sourcePath + (uriPath ? `${uriPath}` : (args?.path ?? '')) const currentManifestPath = `${manifestPath}/${key}` - const isMyTutorialsGroup = level === 0 && currentSourcePath.startsWith(ApiEndpoints.CUSTOM_TUTORIALS_PATH) - const isHighlightGroup = isMyTutorialsGroup && myTutorialsHighlighting - switch (type) { case EnablementAreaComponent.Group: return ( @@ -229,7 +211,6 @@ const EnablementArea = (props: Props) => { isShowActions={currentSourcePath.startsWith(ApiEndpoints.CUSTOM_TUTORIALS_PATH)} onCreate={() => setIsCreateOpen((v) => !v)} onDelete={onDeleteCustomTutorial} - highlightGroup={isHighlightGroup} {...args} > <> diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/Group.tsx b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/Group.tsx index 8d4fa48528..6da932066e 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/Group.tsx +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/Group.tsx @@ -5,8 +5,6 @@ import { useParams } from 'react-router-dom' import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { workbenchCustomTutorialsSelector } from 'uiSrc/slices/workbench/wb-custom-tutorials' -import { BUILD_FEATURES } from 'uiSrc/constants/featuresHighlighting' -import HighlightedFeature from 'uiSrc/components/hightlighted-feature/HighlightedFeature' import DeleteTutorialButton from '../DeleteTutorialButton' import { EAItemActions } from '../../constants' @@ -45,7 +43,6 @@ const Group = (props: Props) => { onCreate, onDelete, triggerStyle, - highlightGroup } = props const { deleting: deletingCustomTutorials } = useSelector(workbenchCustomTutorialsSelector) const { instanceId = '' } = useParams<{ instanceId: string }>() @@ -90,18 +87,9 @@ const Group = (props: Props) => { const buttonContent = (
- - - {label} - - + + {label} + {isShowActions && actionsContent}
) diff --git a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/styles.scss b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/styles.scss index 687d8a1a13..b8e013ce21 100644 --- a/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/styles.scss +++ b/redisinsight/ui/src/pages/workbench/components/enablement-area/EnablementArea/components/Group/styles.scss @@ -112,15 +112,4 @@ background-color: var(--hoverInListColorDarken); } } - - .dotHighlighting { - width: 8px; - height: 8px; - top: 0; - right: -8px; - } - - .wrapperHighlighting { - display: flex; - } } From 839a8dbe61a518269cf1d8f91e18c133044d60a7 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 20 Apr 2023 11:00:48 +0300 Subject: [PATCH 061/106] fix ITests --- ...databases-id-cli-uuid-send_command.test.ts | 30 +++++- .../test/api/database/POST-databases.test.ts | 91 ++++++++++++------- 2 files changed, 84 insertions(+), 37 deletions(-) diff --git a/redisinsight/api/test/api/cli/POST-databases-id-cli-uuid-send_command.test.ts b/redisinsight/api/test/api/cli/POST-databases-id-cli-uuid-send_command.test.ts index 79aeef190a..ab738e5654 100644 --- a/redisinsight/api/test/api/cli/POST-databases-id-cli-uuid-send_command.test.ts +++ b/redisinsight/api/test/api/cli/POST-databases-id-cli-uuid-send_command.test.ts @@ -73,20 +73,22 @@ describe('POST /databases/:instanceId/cli/:uuid/send-command', () => { }); describe('Common', () => { - describe('String', () => { + describe('Analytics', () => { + requirements('rte.serverType=local'); + const key = constants.getRandomString(); [ { - name: 'Should create string', + name: 'Should create string and send analytics event for it', data: { - command: `set ${constants.TEST_STRING_KEY_1} ${constants.TEST_STRING_VALUE_1}`, + command: `set ${key} ${constants.TEST_STRING_VALUE_1}`, outputFormat: 'TEXT', }, responseSchema, before: async () => { - expect(await rte.client.exists(constants.TEST_STRING_KEY_1)).to.eql(0); + expect(await rte.client.exists(key)).to.eql(0); }, after: async () => { - expect(await rte.client.get(constants.TEST_STRING_KEY_1)).to.eql(constants.TEST_STRING_VALUE_1); + expect(await rte.client.get(key)).to.eql(constants.TEST_STRING_VALUE_1); await analytics.waitForEvent({ event: 'CLI_COMMAND_EXECUTED', properties: { @@ -101,6 +103,24 @@ describe('POST /databases/:instanceId/cli/:uuid/send-command', () => { }); } }, + ].map(mainCheckFn); + }); + describe('String', () => { + [ + { + name: 'Should create string', + data: { + command: `set ${constants.TEST_STRING_KEY_1} ${constants.TEST_STRING_VALUE_1}`, + outputFormat: 'TEXT', + }, + responseSchema, + before: async () => { + expect(await rte.client.exists(constants.TEST_STRING_KEY_1)).to.eql(0); + }, + after: async () => { + expect(await rte.client.get(constants.TEST_STRING_KEY_1)).to.eql(constants.TEST_STRING_VALUE_1); + } + }, { name: 'Should get string', data: { diff --git a/redisinsight/api/test/api/database/POST-databases.test.ts b/redisinsight/api/test/api/database/POST-databases.test.ts index f26673428a..ac8cc17209 100644 --- a/redisinsight/api/test/api/database/POST-databases.test.ts +++ b/redisinsight/api/test/api/database/POST-databases.test.ts @@ -115,6 +115,65 @@ describe('POST /databases', () => { requirements('rte.type=STANDALONE', '!rte.ssh'); describe('NO AUTH', function () { requirements('!rte.tls', '!rte.pass'); + describe('Analytics', () => { + requirements('rte.serverType=local'); + + it('Create standalone without pass and tls, and send analytics event for it', async () => { + const dbName = constants.getRandomString(); + + await validateApiCall({ + endpoint, + statusCode: 201, + data: { + name: dbName, + host: constants.TEST_REDIS_HOST, + port: constants.TEST_REDIS_PORT, + }, + responseSchema, + responseBody: { + name: dbName, + host: constants.TEST_REDIS_HOST, + port: constants.TEST_REDIS_PORT, + username: null, + password: null, + connectionType: constants.STANDALONE, + new: true, + }, + checkFn: async ({ body }) => { + // todo: find a way to test rest of the fields + await analytics.waitForEvent({ + event: 'CONFIG_DATABASES_DATABASE_ADDED', + properties: { + databaseId: body.id, + connectionType: body.connectionType, + provider: body.provider, + useTLS: 'disabled', + verifyTLSCertificate: 'disabled', + useTLSAuthClients: 'disabled', + useSNI: 'disabled', + useSSH: 'disabled', + version: rte.env.version, + // numberOfKeys: 8, + // numberOfKeysRange: '0 - 500 000', + // totalMemory: 881632, + // numberedDatabases: 16, + // numberOfModules: 0, + timeout: body.timeout / 1000, + // RediSearch: { loaded: false }, + // RedisAI: { loaded: false }, + // RedisGraph: { loaded: false }, + // RedisGears: { loaded: false }, + // RedisBloom: { loaded: false }, + // RedisJSON: { loaded: false }, + // RedisTimeSeries: { loaded: false }, + // customModules: [], + buildType: serverConfig.get('server').buildType, + }, + }); + }, + }); + }); + }); it('Create standalone without pass and tls', async () => { const dbName = constants.getRandomString(); @@ -136,38 +195,6 @@ describe('POST /databases', () => { connectionType: constants.STANDALONE, new: true, }, - checkFn: async ({ body }) => { - // todo: find a way to test rest of the fields - await analytics.waitForEvent({ - event: 'CONFIG_DATABASES_DATABASE_ADDED', - properties: { - databaseId: body.id, - connectionType: body.connectionType, - provider: body.provider, - useTLS: 'disabled', - verifyTLSCertificate: 'disabled', - useTLSAuthClients: 'disabled', - useSNI: 'disabled', - useSSH: 'disabled', - version: rte.env.version, - // numberOfKeys: 8, - // numberOfKeysRange: '0 - 500 000', - // totalMemory: 881632, - // numberedDatabases: 16, - // numberOfModules: 0, - timeout: body.timeout / 1000, - // RediSearch: { loaded: false }, - // RedisAI: { loaded: false }, - // RedisGraph: { loaded: false }, - // RedisGears: { loaded: false }, - // RedisBloom: { loaded: false }, - // RedisJSON: { loaded: false }, - // RedisTimeSeries: { loaded: false }, - // customModules: [], - buildType: serverConfig.get('server').buildType, - }, - }); - }, }); }); describe('Enterprise', () => { From a7dc684e3e3ee8c9607e5db63487f955c6638d91 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 20 Apr 2023 12:37:00 +0300 Subject: [PATCH 062/106] add listen interface for be server --- redisinsight/api/config/default.ts | 1 + redisinsight/api/src/main.ts | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/redisinsight/api/config/default.ts b/redisinsight/api/config/default.ts index c163451dfe..6b6a31edbc 100644 --- a/redisinsight/api/config/default.ts +++ b/redisinsight/api/config/default.ts @@ -39,6 +39,7 @@ export default { }, server: { env: 'development', + listenInterface: process.env.RI_LISTEN_INTERFACE === '*' ? '' : (process.env.RI_LISTEN_INTERFACE || '127.0.0.1'), port: 5000, docPrefix: 'api/docs', globalPrefix: 'api', diff --git a/redisinsight/api/src/main.ts b/redisinsight/api/src/main.ts index f4db104011..37d37f1a2e 100644 --- a/redisinsight/api/src/main.ts +++ b/redisinsight/api/src/main.ts @@ -12,10 +12,11 @@ import { AppModule } from './app.module'; import SWAGGER_CONFIG from '../config/swagger'; import LOGGER_CONFIG from '../config/logger'; +const serverConfig = get('server'); + export default async function bootstrap(): Promise { await migrateHomeFolder(); - const serverConfig = get('server'); const port = process.env.API_PORT || serverConfig.port; const logger = WinstonModule.createLogger(LOGGER_CONFIG); @@ -47,7 +48,7 @@ export default async function bootstrap(): Promise { const logFileProvider = app.get(LogFileProvider); - await app.listen(port); + await app.listen(port, serverConfig.listenInterface); logger.log({ message: `Server is running on http(s)://localhost:${port}`, context: 'bootstrap', From 2d84bdcaa7234c8c933f68e30df00ab29a791ab9 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Thu, 20 Apr 2023 12:27:38 +0200 Subject: [PATCH 063/106] #RI-4428 - update telemetry events #RI-4417 - clear state after start again --- .../bulk-actions/BulkActions.spec.tsx | 2 +- .../components/bulk-actions/BulkActions.tsx | 9 +-- .../BulkActionsTabs/BulkActionsTabs.spec.tsx | 57 ++++++++++++++++++- .../BulkActionsTabs/BulkActionsTabs.tsx | 24 +++++--- .../bulk-actions/BulkUpload/BulkUpload.tsx | 1 + .../components/key-list/KeyList.spec.tsx | 4 +- redisinsight/ui/src/telemetry/events.ts | 2 - 7 files changed, 80 insertions(+), 19 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx index 6af517622a..55625efb01 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx @@ -153,7 +153,7 @@ describe('BulkActions', () => { eventData: { databaseId: 'instanceId', action: BulkActionsType.Delete, - search: '', + match: '*', filterType: 'hash' } }) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx index 5300aa21d0..a6f8cfeb8a 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx @@ -18,6 +18,7 @@ import { import { BulkActionsType } from 'uiSrc/constants' import { keysSelector } from 'uiSrc/slices/browser/keys' import { getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { DEFAULT_SEARCH_MATCH } from 'uiSrc/constants/api' import BulkUpload from './BulkUpload' import BulkDelete from './BulkDelete' @@ -41,16 +42,12 @@ const BulkActions = (props: Props) => { const dispatch = useDispatch() useEffect(() => { - let matchValue = '*' - if (search !== '*' && !!search) { - matchValue = getMatchType(search) - } sendEventTelemetry({ event: TelemetryEvent.BULK_ACTIONS_OPENED, eventData: { databaseId: instanceId, filterType: filter, - match: matchValue, + match: (search && search !== DEFAULT_SEARCH_MATCH) ? getMatchType(search) : DEFAULT_SEARCH_MATCH, } }) }, []) @@ -71,7 +68,7 @@ const BulkActions = (props: Props) => { } if (type === BulkActionsType.Delete) { - eventData.search = search + eventData.match = (search && search !== DEFAULT_SEARCH_MATCH) ? getMatchType(search) : DEFAULT_SEARCH_MATCH eventData.filterType = filter } diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.spec.tsx index c311269238..b35b9114b8 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.spec.tsx @@ -1,15 +1,70 @@ import React from 'react' import { mock } from 'ts-mockito' -import { render } from 'uiSrc/utils/test-utils' +import { fireEvent, render, screen } from 'uiSrc/utils/test-utils' +import { BulkActionsType } from 'uiSrc/constants' +import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import BulkActionsTabs, { Props } from './BulkActionsTabs' const mockedProps = { ...mock(), } +jest.mock('uiSrc/telemetry', () => ({ + ...jest.requireActual('uiSrc/telemetry'), + sendEventTelemetry: jest.fn(), +})) + +jest.mock('uiSrc/slices/browser/bulkActions', () => ({ + ...jest.requireActual('uiSrc/slices/browser/bulkActions'), + selectedBulkActionsSelector: jest.fn().mockReturnValue({ + type: 'delete' + }), +})) + +jest.mock('uiSrc/slices/browser/keys', () => ({ + ...jest.requireActual('uiSrc/slices/browser/keys'), + keysSelector: jest.fn().mockReturnValue({ + filter: 'set', + search: 'dawkmdk*' + }), +})) + describe('BulkActionsTabs', () => { it('should render', () => { expect(render()).toBeTruthy() }) + + it('should call proper telemetry events', async () => { + const sendEventTelemetryMock = jest.fn(); + (sendEventTelemetry as jest.Mock).mockImplementation(() => sendEventTelemetryMock) + + render() + + fireEvent.click(screen.getByTestId('bulk-action-tab-upload')) + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.BULK_ACTIONS_OPENED, + eventData: { + databaseId: '', + action: BulkActionsType.Upload, + } + }); + + (sendEventTelemetry as jest.Mock).mockRestore() + + fireEvent.click(screen.getByTestId('bulk-action-tab-delete')) + + expect(sendEventTelemetry).toBeCalledWith({ + event: TelemetryEvent.BULK_ACTIONS_OPENED, + eventData: { + databaseId: '', + action: BulkActionsType.Delete, + match: 'PATTERN', + filterType: 'set' + } + }); + + (sendEventTelemetry as jest.Mock).mockRestore() + }) }) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx index 79346a51f6..0096ee39fa 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionsTabs/BulkActionsTabs.tsx @@ -5,8 +5,11 @@ import { useSelector } from 'react-redux' import { BulkActionsType } from 'uiSrc/constants' import { selectedBulkActionsSelector } from 'uiSrc/slices/browser/bulkActions' -import { sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' +import { getMatchType, sendEventTelemetry, TelemetryEvent } from 'uiSrc/telemetry' import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances' +import { DEFAULT_SEARCH_MATCH } from 'uiSrc/constants/api' +import { keysSelector } from 'uiSrc/slices/browser/keys' + import { bulkActionsTypeTabs } from '../constants/bulk-type-options' import styles from './styles.module.scss' @@ -17,16 +20,23 @@ export interface Props { const BulkActionsTabs = (props: Props) => { const { onChangeType } = props const { id: instanceId } = useSelector(connectedInstanceSelector) + const { filter, search } = useSelector(keysSelector) const { type } = useSelector(selectedBulkActionsSelector) const onSelectedTabChanged = (id: BulkActionsType) => { + const eventData: Record = { + databaseId: instanceId, + action: id + } + + if (id === BulkActionsType.Delete) { + eventData.match = (search && search !== DEFAULT_SEARCH_MATCH) ? getMatchType(search) : DEFAULT_SEARCH_MATCH + eventData.filterType = filter + } + sendEventTelemetry({ - event: TelemetryEvent.BULK_ACTIONS_SWITCHED, - eventData: { - databaseId: instanceId, - prevValue: type, - currentValue: id - } + event: TelemetryEvent.BULK_ACTIONS_OPENED, + eventData }) onChangeType(id) } diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx index 48c2b8822a..275144f225 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -56,6 +56,7 @@ const BulkUpload = (props: Props) => { const onStartAgain = () => { dispatch(setBulkUploadStartAgain()) setFiles(null) + setIsSubmitDisabled(true) } const handleUploadWarning = () => { diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx index c09cfc41ce..598131120b 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx @@ -3,7 +3,7 @@ import { cloneDeep } from 'lodash' import { fireEvent } from '@testing-library/react' import { cleanup, mockedStore, render, waitFor, screen, clearStoreActions } from 'uiSrc/utils/test-utils' import { KeysStoreData, KeyViewType, SearchMode } from 'uiSrc/slices/interfaces/keys' -import { deleteSelectedKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' +import { deleteKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' import { apiService } from 'uiSrc/services' import KeyList from './KeyList' @@ -196,7 +196,7 @@ describe('KeyList', () => { fireEvent.click(screen.getByTestId('submit-delete-key')) const expectedActions = [ - deleteSelectedKey() + deleteKey() ] expect(clearStoreActions(store.getActions().slice(-1))).toEqual(clearStoreActions(expectedActions)) }) diff --git a/redisinsight/ui/src/telemetry/events.ts b/redisinsight/ui/src/telemetry/events.ts index 2fc6614096..f7a2112e15 100644 --- a/redisinsight/ui/src/telemetry/events.ts +++ b/redisinsight/ui/src/telemetry/events.ts @@ -198,8 +198,6 @@ export enum TelemetryEvent { BULK_ACTIONS_WARNING = 'BULK_ACTIONS_WARNING', BULK_ACTIONS_CANCELLED = 'BULK_ACTIONS_CANCELLED', BULK_ACTIONS_STARTED = 'BULK_ACTIONS_STARTED', - BULK_ACTIONS_STOPPED = 'BULK_ACTIONS_STOPPED', - BULK_ACTIONS_SWITCHED = 'BULK_ACTIONS_SWITCHED', DATABASE_ANALYSIS_STARTED = 'DATABASE_ANALYSIS_STARTED', DATABASE_ANALYSIS_HISTORY_VIEWED = 'DATABASE_ANALYSIS_HISTORY_VIEWED', From dc0677c99d9f37439eccc481a2368f8f5815676c Mon Sep 17 00:00:00 2001 From: Zalenski Egor <63463140+zalenskiSofteq@users.noreply.github.com> Date: Thu, 20 Apr 2023 18:29:54 +0800 Subject: [PATCH 064/106] #RI-4119 - SNI not saved for connections --- .../AddInstanceForm/InstanceForm/InstanceForm.tsx | 3 ++- .../home/components/AddInstanceForm/InstanceFormWrapper.tsx | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/InstanceForm.tsx b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/InstanceForm.tsx index 2d669a8d2a..6484a77900 100644 --- a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/InstanceForm.tsx +++ b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceForm/InstanceForm.tsx @@ -128,7 +128,7 @@ const AddStandaloneForm = (props: Props) => { provider, ssh, sshPassType = SshPassType.Password, - sshOptions + sshOptions, }, initialValues: initialValuesProp, width, @@ -162,6 +162,7 @@ const AddStandaloneForm = (props: Props) => { showDb: !!db, showCompressor: compressor !== NONE, sni: !!servername, + servername, newCaCert: '', newCaCertName: '', selectedCaCertName, diff --git a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx index 22eb04e73f..1889fc8b11 100644 --- a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx +++ b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx @@ -68,6 +68,7 @@ const getInitialValues = (editedInstance: Nullable) => ({ : (editedInstance ? '' : undefined), tls: !!editedInstance?.tls ?? false, ssh: !!editedInstance?.ssh ?? false, + servername: editedInstance?.tlsServername, sshPassType: editedInstance?.sshOptions ? (editedInstance.sshOptions.privateKey ? SshPassType.PrivateKey : SshPassType.Password) : SshPassType.Password @@ -87,7 +88,7 @@ const InstanceFormWrapper = (props: Props) => { const [initialValues, setInitialValues] = useState(getInitialValues(editedInstance)) const [isCloneMode, setIsCloneMode] = useState(false) - const { host, port, name, username, password, timeout, tls, ssh, sshPassType } = initialValues + const { host, port, name, username, password, timeout, tls, ssh, sshPassType, servername } = initialValues const { loadingChanging: loadingStandalone } = useSelector(instancesSelector) const { loading: loadingSentinel } = useSelector(sentinelSelector) @@ -541,7 +542,8 @@ const InstanceFormWrapper = (props: Props) => { sentinelMasterUsername, sentinelMasterPassword, ssh, - sshPassType + sshPassType, + servername, } const getSubmitButtonText = () => { From edb07d0fae64b28d26c5300eca27aeb29f842c91 Mon Sep 17 00:00:00 2001 From: Zalenski Egor <63463140+zalenskiSofteq@users.noreply.github.com> Date: Thu, 20 Apr 2023 18:48:23 +0800 Subject: [PATCH 065/106] #RI-4119 - fix tests --- .../ui/src/pages/browser/components/key-list/KeyList.spec.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx index c09cfc41ce..598131120b 100644 --- a/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx @@ -3,7 +3,7 @@ import { cloneDeep } from 'lodash' import { fireEvent } from '@testing-library/react' import { cleanup, mockedStore, render, waitFor, screen, clearStoreActions } from 'uiSrc/utils/test-utils' import { KeysStoreData, KeyViewType, SearchMode } from 'uiSrc/slices/interfaces/keys' -import { deleteSelectedKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' +import { deleteKey, keysSelector, setLastBatchKeys } from 'uiSrc/slices/browser/keys' import { apiService } from 'uiSrc/services' import KeyList from './KeyList' @@ -196,7 +196,7 @@ describe('KeyList', () => { fireEvent.click(screen.getByTestId('submit-delete-key')) const expectedActions = [ - deleteSelectedKey() + deleteKey() ] expect(clearStoreActions(store.getActions().slice(-1))).toEqual(clearStoreActions(expectedActions)) }) From def29a177e824a7c4af33cc70dc1e5def7e452e4 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Thu, 20 Apr 2023 13:39:01 +0200 Subject: [PATCH 066/106] #RI-4428 - add action to first open --- .../pages/browser/components/bulk-actions/BulkActions.spec.tsx | 3 ++- .../src/pages/browser/components/bulk-actions/BulkActions.tsx | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx index 55625efb01..a3df4f08fc 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.spec.tsx @@ -140,7 +140,8 @@ describe('BulkActions', () => { eventData: { databaseId: 'instanceId', match: '*', - filterType: 'hash' + filterType: 'hash', + action: 'delete' } }); diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx index a6f8cfeb8a..9d74631930 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActions.tsx @@ -48,6 +48,7 @@ const BulkActions = (props: Props) => { databaseId: instanceId, filterType: filter, match: (search && search !== DEFAULT_SEARCH_MATCH) ? getMatchType(search) : DEFAULT_SEARCH_MATCH, + action: type } }) }, []) From 12d428408eabd1e1b224c912625a998dd8fe9eb3 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 20 Apr 2023 16:56:13 +0300 Subject: [PATCH 067/106] listen for all network interfaces by default. 127.0.0.1 for electron --- configs/webpack.config.main.prod.babel.js | 1 + configs/webpack.config.main.stage.babel.js | 1 + redisinsight/api/config/default.ts | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/configs/webpack.config.main.prod.babel.js b/configs/webpack.config.main.prod.babel.js index 112ad4572c..2a4857c0c7 100644 --- a/configs/webpack.config.main.prod.babel.js +++ b/configs/webpack.config.main.prod.babel.js @@ -66,6 +66,7 @@ export default merge(baseConfig, { SERVER_TLS_KEY: process.env.SERVER_TLS_KEY || '', APP_FOLDER_NAME: process.env.APP_FOLDER_NAME || '', UPGRADES_LINK: process.env.UPGRADES_LINK || '', + RI_HOSTNAME: '127.0.0.1', BUILD_TYPE: 'ELECTRON', APP_VERSION: version, AWS_BUCKET_NAME: 'AWS_BUCKET_NAME' in process.env ? process.env.AWS_BUCKET_NAME : '', diff --git a/configs/webpack.config.main.stage.babel.js b/configs/webpack.config.main.stage.babel.js index 6da6591471..42956ea34a 100644 --- a/configs/webpack.config.main.stage.babel.js +++ b/configs/webpack.config.main.stage.babel.js @@ -26,6 +26,7 @@ export default merge(mainProdConfig, { SERVER_TLS_KEY: process.env.SERVER_TLS_KEY || '', APP_FOLDER_NAME: process.env.APP_FOLDER_NAME || '', UPGRADES_LINK: process.env.UPGRADES_LINK || '', + RI_HOSTNAME: '127.0.0.1', BUILD_TYPE: 'ELECTRON', APP_VERSION: version, AWS_BUCKET_NAME: 'AWS_BUCKET_NAME' in process.env ? process.env.AWS_BUCKET_NAME : '', diff --git a/redisinsight/api/config/default.ts b/redisinsight/api/config/default.ts index 6b6a31edbc..43b3c974b8 100644 --- a/redisinsight/api/config/default.ts +++ b/redisinsight/api/config/default.ts @@ -39,7 +39,7 @@ export default { }, server: { env: 'development', - listenInterface: process.env.RI_LISTEN_INTERFACE === '*' ? '' : (process.env.RI_LISTEN_INTERFACE || '127.0.0.1'), + listenInterface: process.env.RI_HOSTNAME ?? '0.0.0.0', port: 5000, docPrefix: 'api/docs', globalPrefix: 'api', From df61e826a116ad448be951903dd6d58c3e733c4b Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 20 Apr 2023 19:48:31 +0300 Subject: [PATCH 068/106] #RI-4436 close connection after import --- .../src/modules/bulk-actions/bulk-import.service.spec.ts | 4 +++- .../api/src/modules/bulk-actions/bulk-import.service.ts | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts index ba8ea3616e..3ace41a9f2 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.spec.ts @@ -5,7 +5,7 @@ import { mockClientMetadata, mockDatabaseConnectionService, mockIORedisClient, - mockIORedisCluster, MockType + mockIORedisCluster, MockType, } from 'src/__mocks__'; import { MemoryStoredFile } from 'nestjs-form-data'; import { BulkActionSummary } from 'src/modules/bulk-actions/models/bulk-action-summary'; @@ -195,6 +195,7 @@ describe('BulkImportService', () => { }, duration: jasmine.anything(), }); + expect(mockIORedisClient.disconnect).toHaveBeenCalled(); }); it('should throw an error in case of global error', async () => { @@ -205,6 +206,7 @@ describe('BulkImportService', () => { fail(); } catch (e) { + expect(mockIORedisClient.disconnect).not.toHaveBeenCalled(); expect(e).toBeInstanceOf(NotFoundException); } }); diff --git a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts index 022cfc71f9..c9ee4cbff2 100644 --- a/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts +++ b/redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts @@ -80,8 +80,10 @@ export class BulkImportService { let parseErrors = 0; + let client; + try { - const client = await this.databaseConnectionService.createClient(clientMetadata); + client = await this.databaseConnectionService.createClient(clientMetadata); const stream = Readable.from(dto.file.buffer); let batch = []; @@ -126,9 +128,12 @@ export class BulkImportService { this.analyticsService.sendActionStopped(result); + client.disconnect(); + return result; } catch (e) { this.logger.error('Unable to process an import file', e); + client?.disconnect(); throw wrapHttpError(e); } } From 473f343788af740b21cac681b8a9d6aa38b0ff78 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Fri, 21 Apr 2023 14:56:13 +0200 Subject: [PATCH 069/106] #RI-4121 - fix db index when editing connection --- .../home/components/AddInstanceForm/InstanceFormWrapper.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx index 22eb04e73f..b91baed5fa 100644 --- a/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx +++ b/redisinsight/ui/src/pages/home/components/AddInstanceForm/InstanceFormWrapper.tsx @@ -371,6 +371,7 @@ const InstanceFormWrapper = (props: Props) => { name, host, port, + db, username, password, timeout, @@ -384,6 +385,7 @@ const InstanceFormWrapper = (props: Props) => { name, host, port: +port, + db: +(db || 0), username, password, compressor, From 34058a39125850ef6b3198973e3842b9c51be576 Mon Sep 17 00:00:00 2001 From: Roman Sergeenko Date: Mon, 24 Apr 2023 09:32:32 +0200 Subject: [PATCH 070/106] #RI-4443 - change keys to commands for bulk upload result --- .../BulkActionSummary/BulkActionSummary.tsx | 17 +++++++++++++++-- .../bulk-actions/BulkUpload/BulkUpload.tsx | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx index bb4db91e45..800a023a5c 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkActionSummary/BulkActionSummary.tsx @@ -2,17 +2,28 @@ import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui' import React from 'react' import { numberWithSpaces } from 'uiSrc/utils/numbers' import { millisecondsFormat } from 'uiSrc/utils' +import { BulkActionsType } from 'uiSrc/constants' import styles from './styles.modules.scss' export interface Props { + type?: BulkActionsType processed?: number succeed?: number failed?: number duration?: number 'data-testid': string } -const BulkActionSummary = ({ processed = 0, succeed = 0, failed = 0, duration = 0, 'data-testid': testId }: Props) => ( +const BulkActionSummary = ( + { + type = BulkActionsType.Delete, + processed = 0, + succeed = 0, + failed = 0, + duration = 0, + 'data-testid': testId + }: Props +) => ( {numberWithSpaces(processed)} - Keys Processed + + {type === BulkActionsType.Delete ? 'Keys' : 'Commands'} Processed + {numberWithSpaces(succeed)} diff --git a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx index 275144f225..1295143f96 100644 --- a/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx +++ b/redisinsight/ui/src/pages/browser/components/bulk-actions/BulkUpload/BulkUpload.tsx @@ -143,6 +143,7 @@ const BulkUpload = (props: Props) => { subTitle={(
{fileName}
)} > Date: Mon, 24 Apr 2023 11:03:06 +0200 Subject: [PATCH 071/106] fixes for failed e2e --- .../upload-tutorials/testTutorials.zip | Bin 448299 -> 518807 bytes .../critical-path/database/modules.e2e.ts | 4 ++-- .../regression/cli/cli-command-helper.e2e.ts | 6 +++--- .../regression/workbench/autocomplete.e2e.ts | 2 +- .../e2e/tests/smoke/browser/filtering.e2e.ts | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/e2e/test-data/upload-tutorials/testTutorials.zip b/tests/e2e/test-data/upload-tutorials/testTutorials.zip index 365ef7c425185f03d618763c4094f04b00cecd20..b1b91a22e5fbed5a99c38275a8dfa2e56f738097 100644 GIT binary patch literal 518807 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
iRr-yv#X$YF4_+547o))1mHnS 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 z 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
-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�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

3* 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%0DeNKiG)QH4G9dgi%RYtQwpCNNJLMdM7dj5O&_ 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 z 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

}`kyU`&fbr^SkgBWQGG zI8G=}C&bqw$R#m~Z=gYy36-}2N*KNt+D0Dc+Am~RtLXL?f)3Xi9YGnRn;Sfux#mhmK4bK z1H54@EG?x?^*Zn=TYuFnZq8k}Taiog2sl!%J;PfvdkZpzkJvj9jPa zIBolc7RUL)mVC&;(Fuh6iV%Po=bapupAPRBb=V;A0=aJ%B6sD&(;Pt9tQv$tLWF1H z;wgTBFj;r;NH*G_{DP$$?COA1dZtmC`;Snz>J z%D&)Ib#umX=e2OQUC!ez`8!pY;EAhFVXT>jaS${C@oVjlI|pHpr?JV14G958cLR{SIp^&aj zLYdR8NJ-~gIYdU4yL61Xu2d}$k0>-xt5vW)pz;ukB(y3GanErf>{{%Ey3o)sf&LFoQHd5p->a5-Li>Ji;R6$M5SnQ5!ycO*xHubb@ zsZpxn)uP>%?mBPDMPgqED#YrJsFU^CqEcj6e#fQe$GNj5TOkdmSi~}WGqkdbb4Ub9 zC?eQ%#gg_`+NjjmYd|DHH&H~*IZO|%EL(Oh zfGE|o>^uj_@-in{Abdg@>s2#9#R@6CGbXdx=4W{W2c8zUdc|pVWhA(0U<*;VXUatg z@MH)*HmEZqG*Qgc_`Xj=07vA{0`Uk!CRJEx>s%aIC)b)&67%#t_z7y$c7R@|k5&nN z*I*rdjDfrMM!{2+MYBf|Wm6943#Wse55v3=6|igF1OV_D-Qf};ZEx^)sIpTg0NC@# z8X)96`8I^Wpabt-ZdkBFa-Y!@`~>7Z16>iUO>A zAksS(IcubHljny;#}nG79_~yJ5L@}5RW;S}tringDH$@4F-~!Hv zL8Zv~z##NABzPcx>dGsK_>z#wMMDx_bIGiaKjjOnH}p2_60Q|+)#G)%0+On}+FOSE zZs!iLQzdLV>fu}YA>;6E2zb_BfWxIzsw1RZbTTJ0sf1v*hq;RfM|uhoBT<$rQ9@^V zPm`Z4?}SDdV7}xgetq|)=^f|_sYF-LQv!v))>HRlVwq!-WK(|PRO?tyuqrR7jm`sm zEcez_7{$z>N-fW#5MzZ*nLIIy>T?WnFsCi&B?nP9_w4`0s0&P^AMf$qn~?VG1uu<^ zZL6B8bM0PeG1Ev4z;&p}6&yIdZNeLrMBs&7^q&8a!{eJp@xhYuZ{yeg0^SWzSZrZb z%apVRWccgD#2R!rX@x*)&-WO(v|;EV4_5UAeX+?LQx3Y_Jb!Ap?6M?2O=5Zp<++Ek zf-=KW?YXLD4ON8`U4ttK3%QWBzkecsY(rF#X2GU>uaugqtWetV{R<5^HA|0O z1@q5|<0z_(xmBm$kdDV0mBZ5+BNI8&atSJ>*mw?vgQototFEL!L^1`UGnJwA8$TiA zi;pvol;OU)k{)>VYcz6nRp=`-{Vq|M<6mKjjRmrakyC(P=um zy2uS2JUW352P;yf;(fIuCEfp#lK=X^z-5FH5K@|m4tE9)OB_1N&WA?FkxHjMAmgCV z@d2&IyQa#>gAdqdKznL1v|WI(A}UW7lyz@a;RC^|3JmY$XvbbvLgXqBGHoEpXXh}| zVVJgRO1Q|YSKmSkzT_N2WROGhvyeJ~rL7#*Ln`Y*@{>c~SYhoaTBQ{He z4W2U1ebug6dA3}vEP$VL5i%TvWQG!gq0arer>+xmqlt+vb>grhh|Jn4e_DNk$Um-t zorWGD>*>!?ge9!Z4Rqom!XI9`JDWfJJ8{M{Z<+INQs?pJqLyfNc=8#BC?Jt2y4O?+ zgmMCGjtGoKk07Nxqi)Ir(bcq2v+%hw%usnZPK}nUO2V zp5*Vs5e@TxZNNHQv<$#fNPO_rNnCvD4H0R|Ii)P9j0jTxG8ZdQtMBEUs)!I0tynT% zor^B7xz9PdCFUm>6w`0J4YR0-I4+E>r@;4vjoESJj{}NV&zMu!Coui^ZG+cYjZ0nS z@Niyexo$=~t|{jBWb4$C&~;aP%m&?c{N*p`>Ur@MTmFu}{=H=c5y7i}yG}CbD;zxC zzgn)YtA|)-NqD?alxxbS$6)!HQ7uoGR+zoU3?QO#vz@;_%in&%g%7P|^ruLDyLfRu z-ma3E6+DBHT@veKy%C-wi_QGMJcy_Df^5qRak>Ne+gbZZK29#Q2dM@K?onJMBS|xWD$(&{fGm7@*Un$ws;kCsZ6r zJpd*KO7v4l8hhS zd#Vls`gEWcMkAqUO6MW_q&O4Etp_RsbFqXBu=g`jvf0m3glgd-# zD&a}Ob1SK=r~tXRCCEWLYBu=ey93U(QV%hcR&z zBIXhx&af3bAA^-@nO%*KdaH$~B9Eb$W*>`0s0y;L^&b>+JhbO$nH}+YcleZCU^sac!5hb{% zVD%jTx*;qs)c_FEtETV2B?ww~OU{k`EYzrFvju;oy!%E~NR`Y`zYe-mH4Ki6IGBNa z8IvU@b3j^5eCzC^MzVE!6!j7JGjgI>WUPc^AE?QoK74C1$+=e7vMX1J8X42Vxi4(X z&`i_8YozR{MfSPbZY6J*Xl0>jG^sHFtW{4|>`a&WATLZ`6~oazG82xGjbnL3+OALH zbxf0WxWeZ6#wCmKJ85NV)!$=u%nISg|DOtNMU4V2nO+fg;^N1hv3W1lb2yA%V$|>hC(ywSi!OY zI7=#TcR0~fwn&-&4rDMW-UO-{9ojPI9x)TpLbeVSRRqe+Q>Dmh*S@|O-%SwX#BZA9 zwQMQ#-k?@S{KJ82RhKR0$O(Mk5f?^y3tY`_xuZ4(*j`E}x)#I9%ErDTieKWk5QYP= zcK8mzU6%`K3BaB_Gt!L4g79t?Yk??C$$23`C5R0crBqLF9^I=S`T5G3QK$POZoQa$bfq{XqYNA6)1ui@ zad4fn%4r?3Rtmoih4Ea_7IZ5R3x#rHF!^I!Es`l8ewJ+ELs_tu8hene3q#z=T?LgE z*QR!|J(io45-}%(wGk2((3X*Kelh8SPyZ~O#)!Wc?PDfF1^=2w5PIt^pqeGCTzrt7 zd)2TO)hm^{@3ASp5tc-@Dsn04;wwFs$ltVWz6O2s48L1jcHTgs6`?i4qcp`r*WWKy z?cZOGCkH5F9&lidtjV?Q8+Ij~=OlT?2<2$yHC}j&D;Y~RfPocojMcQVLg|D?tp|P$ zDsny;*qVl+G9*omK(Df~uCpqZC6NdO`S7cY2e}?WMnlf3VlgANuZ%88OA(4Aj*x_A z802bx(GyuFr8jr3)}Lbwr%=kpn?|X#5>BtZQ@Hj$XJJ) z&0zQ$D`5z$j;BA75BHEj2skomUkJfAecGbZ2B~ALpTIahmRfuN|um!t?8YLGF`i# zALGn6i*`kXDIEJsYM$tQPgRHR^z|d)1P+=bUSUI`_PDtNzt^cU+%OBoTI4X|FIBh?CO##F=E~6O8X- z&=awBq54j(2@{eD%@T-!1zWq`vq%sYx$$9)0$ywt9Rr}nTg}=H6&X>E} zts$f8ZTifazK}atAo$CNZ=us+kW1F22Qo!8aHrZjP<1Co+@7m|ys^!oj98xKg6$0B z&r~>fPa(2^h46r8!RVp9+F~4~k3pPf2BI5dsoNGL2xKlLr3l& z&5`M9|3Ezy%a8EgUz|s%B1-L$D%sqZbv?~~Z+eD1_a#>mJ+m{1xFGMV< zCcV{{&@wnPc>dz{sFmlj6iqOgd_lN|>CU(h@8-5q9{_`+pg~>Q%xeuJ6mZsbk+sfL zVQwiY=S<#VKVnzG8x^l?^i@7r5P z*FI+;0k~&IQneH^efFO8`45}fcCOmB$~KfgqxOx}*^MU%CS4a^PTjikZq+g0*9@4_ zK&1%OoC4w#0%LRx422-N#?zUX=gMlkKl_dU>}zZ+#whCu;AH|O@h76|L?B+YXebjn z_NwRx$Pm$MI;cZk8Z^)Bz{Ot8gGGcr!7_K<-vf=5=2S)h5!PnhuKYo64#A*Fu1NI8 z?hmwBHQW(WC?gR|9f}qlYj$3P@XISq#_b(}(1{|)Hpoa(SNoX7Ss9ecsxo8Zq}aow zCgJ@fO@xU&!-c|Oe*;41L0^~;zG{f82Cz-rSITba+m>?VOVG^^?mcIa_9N6NcFlWIRG; zUN!!TB3#yrvDBuqCdQ|Z)C6c}Vi2LE;>An^hkgnuEAT)fxHufaHVpuK6q@bn4|idS zlGz3@`Hrscnlh;_Cs;$2x7Uai)5C&d&M?Y8`1GqxPYH{!HagpV$OT6-^YfTabz>I_ zaWz+$@I+1I z&eQxr-NjL6=db4G(3?Iw1+p|09XOdd5}74J5_svZCLmUPo?V>#x!SJs{g~#Exk63_ zhp%_>vilGxZ!%}@!2m`{*m)pYGE3!cZbxlLDlEm0m5stPO{J$3soTs@%19lv#&_Rh zrIW!6e7YuSt0TlQ-Lkhx`L*2$3SmM{>r0Nx<{Ew9Fu=a$l0nd|1*a~B*pKi+6G(@%br+s-^X}n{iyM_z(A6h@(3~jC42SX;>MdRa!@;2a1~vZ zf0D2gY+a{a^ge;k_+esg|83^Oj1vvTJQ!IFU2~B7)O{eL6o8C$LEhRDo}Mi zUOg^1C-a;qilCo8eGah+G4@I7kV$3GC_H5gr}PGuKV1AinF6+Xo7~2S>yp>9A|A@$ zrXEO7$%^+CFs^#7s3w*4coJxM9C= z$#-qGRei;D0;o8NCqJitVYXzNFc-Or8Ly>G`XxE%JJhq<5M+k2OH|NU1c{F%#HqKV z+>&Imi+I848Ty5>2%55UY^&^hutkJ>Ql>(o(-WOmoFU-61mPoD4j-rDz&`utX#NAD%{cLhHvhR>6!257{yVJAzcr2euYIEYvrcu0`o6u7 z{2KS9L-*Bu_eXDbbV#I{!d*J8mz9+>!?kl{+T8Z-ncSypyKo&DVMbW&rt=^gI3?g@vz z{bP68dW~h zBHQ@X8-m%iZY7Gt`A*fF6&SBugu`CF&pe#}@8qI(w!hbV*?gVP_E&lj=6Z@{DJf+M z3;o?a*S%&RKt64|Q|&a<>IcVB6$eGRv%53@@!xlxa$KdbW-9t`)vC-sB>s>I{tFi+ z?K)AzJgKh^)+YUHdDqIi93#d}u?*P-1<8|X^fy=KEb+aa=0aDxu`Em3PoJSwoAee$ zFMN{hIqq0NXlM|O?)+p={`xMvOWtw90kG<@xcyxMFe88rB|e+xfPPax+f zWJh-@u*ljhS3r~Ua2u~3Oeh%KyKpA;Wy=MShFc9`A~BN_nGma2zJ<58fPoo()Iez? z3~pvLQ3$Bp-uZx^?3kxaXZWpZ!q0{9GhlQ?>npt&U^z)`riRK-uS2XLDjOp0gIKqa zc{~s|pZ_A2)S9Nlnl2WJiuCuyD$i`)36T0w@QvZeMZ@|K*d1kyQVx1jabhLd5fq}y z_^_aEK}9%$9ei{5F(6*AkGxG!l|Jk*u7snRMW`vPu;@(-gfm0Ly^p9ZjGQY$P1o5fi8K`(Lcn0YlbV7H~ zaNpQXC*;NXGzpIu?Gs>CyG5ew?Ld3MQy7ne!)y5Zxv18s3^4f;T`5s0Kp8lCn0Izb zQCzYQV-a{YpyTKHyS(!Q(C=+zP7Ly9(?%MLpn__3CZZ1e+3{WP7=(d}d)qu3^8QT^06Oq0OVAVWa}K_7i3sxcut&`-dai6rRcncVK< z^xM1JwyllEk|gkME8=hip%cXI*mVUC+tH+zpp!D+JpPO>1Z}gTLDeJgMg?~dK6{(y*XwnB zH-1fIwDt{FqW*SC;&uy?2jz1KWIj^Gtn#89e6v3gttNT_))Rp%XQ4UrV?%FHBzyCr zv9sG|5(x~b>>OEDq>aG=eCl)O`tM_PnCSbKMgv1~W6iECry{q&Ct)Fp$>&tk{~3{< zGwC=V0Avy->Z(eDq9ySg%$FJ@Y*Pqr5(8#sL(pJ~sok9y9uVcPx;7-%9LqZ$Kz{Cc5GA6zRxqV`^Sklu^?;liia{-}s zCrkM- zq>@l8*h+9Og$%xMNB60CptdsfVYQYU9`x8VXezPJJ8&5E4zW&=jF5FyRxkcpr1T`{ z`c~Kl!d*2VE^`Ff4;&7zkgW;JuioCpFvd;;&wCCz+C( zro}6);B@kbLT09)YV?iQk@f@R9v#~c|JztP9GL=+89ZMb1(ZzP@- zqkdaw(`zr?}op$0}@=v+WjA+dnx4mIE>*Z3bFoL79TsApqDnGW>oPk8+Dm z%qb9W`2f0#r@UwP5QUGqeSGka2-`9jrzeo^mD^6J59Xf0+{Yn`-g5P++0a;F>ruco zpcBHTSqk0Kmc|?p&>F=t%RNhQW^WnF=u{*PQ=Y!40B|L23SJEE%Hf@iA6E~}$I*xpqnSC`Lhc|n*eD3nZNAaQ8BQr!2kerq@!86bTC z1Zx_3L}eKIP?Zx0*#HZ%MkDs|;-Cb-Z59012T&GUEOYBr4NNwCUD@7NyK6b{i#ElK ziXWiKTO*Z!lXKeCdayvT8l1%dC%lm6dL&8S6&REdUGR?ixpv9m=&2BxL!2f8GbJ^y zKGQyj?zBo%xeDI-<-PHI9Trzz-qxKyIvey6;bzJjQ(W7lQ!*FDv~etQX4QGd++{8x zl(rnQ)-@Y@p!+NL1<37|#00zzn|fhoh-9U8>!W%*3}q_W_MJNlvJ ze?GfC7Q)|MXsjyzbpB*wa>h}osu6Q_YAkZOM<7dSg_+7{X3u~p5J%%|SjYp6$#>R< z)bWp}5P+B^^C;?SSxV{7r@uBhE;Bl+#Ez;!o?BuOnupa3n7KsRL9CQGco>zS`S740 zX75{^uAqY&A6Q(3rQu>=X%ckF@m{Kgh=aqMc~=ZUV{Gu=XraElhp*4nN(ud(%K~8j zL?fBe8EZTU0>&SZm*NlbbU>T|ED8zCnH|jty9mEUg#@L$*1&+Rkz2N?9PN85i%1Bx zSkL3-2f2hO>-#I+$h^^!0pwKndKo3}r2yR8;kp5@ojM64jSCIsgyP3H)Lc7HhO7Fpo{l~v0@n0ai)K9R?FO$4yc^_PCo^F~T zdpGNHjNoOjPc3IvXNa=|^6^w>ZEnqvy9T3h_JUj_dLQQ(9n4fgH|X%IUrhYjEdX`ug6nE)0;>-en2qt$QJvhKeym^hPOs5TDl-Q01cC=z|bz~+F(>hxu@7L8I^34m$>#kFD zED>6PZJC~HU^aSlVj>=wE9n8B;X554CB`-b=#}*GcPppkaw=%A>j| z5)Bksp^7oe+iV{;8>ojiICi4b z#v%t!5@H=Z>g#`$9!xFs1tf&j%LYB^D#x$x2#=%7&UFO2X;zhs5)~de0syPl^*&I6 zczPZo(XLSIVekh$L*v%;S<>EyeT7#JF$5fnI0z?P=7;bS0-*b8W+VR03bG-)- z*I=I|x-e#b55}!ic7j=v6nAu{;#J(Z2jZ(bLCrdo{d^H~|DU_r z&0wzkp-AigB}q%ETVA&fDbWItjksP-UB2noy3i290ti9iq9O9(0%R@I!cIZ^F)W6j7eRXI+Dm$gusp*=LW~tii7)W` z>yAiXJTn0#LVXbrfuI3)f{YetB^JP9s05RRu@;jHc+9f`K&&ZzxO7yIl95D0iW-X~ zd9J6gl${!?!QJJ|781V(#tUrB6s6~0E%Jh?h6aa|_hjg~H!f>V;b4rhaHxgn+CIj6 zCVRZCj^)_JW)Wp##hHoNvQonA$ZNe^#u7;dwPcKZv}ncT9oYq>p9(LQ#Z#IY1o7@B zzFslvD~;#5E=1_g*)S4oxa62$p&6eTc7puDqr+J ztRxYdc#H3vFEkOQTziRgCr%|u2jW~bfj?qUT6N9oIP-pK4sDSA&J$$s%9cQyP)!df zeL7x00&ZN-a_f)fFKk>Tv_an%zkL3@i=}}eM=L3r(^L^S(#aB@$YK;6YON{D!h0|= zfmG8Ko6(=*^N~Vg;21Hnj0-}DQ{TkCp0Pz7fi$p7h;WQPqJkdkziHoP=e`tq$J{tQ z1cPi&$mlNXoAJGJVV*FHi=SC~^MY+#qnCLHj?31Tj-V74aB{62Ui9Y}r>30L=!z-; zY-S!~-QyFFW_~Y#&yZzn4H`kEJD%3ZHC}VafTh&lb`nqV)+Vkh`ze5t8P07^p4cu7E@m%5 zYhQhSu69E@X6#s_483d!O~^u;V+!FpgtJ&V09G#lE$b)lvVNWyySv2#MCW-^e4RG) zoyuqXgyS%>Y@g=#e-E0ItPKA(z2`v-IGFtZnKixL{e33UbQveWis@2*_+VcfsIg;LJvHf~%A zGdj{|o)%z5z(@;*Xe!Hx)MhxEQpJhMFA0wjupx%I+1S5LB4T#snZHaBf@{Ft-~U56NKrcGmkE*@7(mJolyXEw9FprAxLY}5Bj2U?O}gCd*>MWoOEOADhzwHHxDll&;Rfa4Tu8aQSN zx)ZT32a6Jqex;JEarxXvQORttYWQTpFf|?dm25mT?_JM3WWIXP8?C;)_QIfQQ0O&+ zRjCjVL-66kfa0N)5tY(+p+o}*s*W;E*i_`YLH=Rv9*&wm002zE@klowD~J*KczZMN zIt5@xb({FM0ZJQiclUlh2eA%VCB{-zo|2(v@!W5O6QK1wtVq=dLft1 z${GtqK*e*nM~h0n2ElH+i&!Fvb0?~Amb|2RrU(JI2-OkHm?FX0(ud<;zp@Lt_07np z%GAZs>%Y4IS3s!0PPT+{?=#NL!~r9my4XWhzKU*M!cN6^b2!7PoO70_a1q<`z#_UW z?!%yc6CxyiA##sxgD-(!j8a6<@qiGW&5*o?%a0%`pTUHRe_l-`3>vygK4v)YtofkWJhU*R63vEMznfo8v8Quh9G)gNE0NSGPgmBvDxhfq(%o5 z)`;HxwBtdA+CB)LYDlqk);Bf4hjmCAh|9V;cx3xHgk|)@ua%P+m5H;e|BIJ6;(nYn z2MaAu-KhKCbnnR^a#Q<+u3U|mQ&Em!7wBJUH1?(lvw)?EFIkhuw8^ofFV>8Rp@yp{ zW^De+_7RW;kZmYL7Ps5(a0uRp3nsDUC5l&o=n+ayW;gEJk`=&fYbsy#EvDv6MATZdsfa??d1qQz?)W`tTOW)X6gu|%+kNu zx@zlSxm(yUv|)&OVPtb2t+glgG6sbiC2GQo`qP4H3zR-Ug^9nE`zg_o^p^>?131>V zClwV!tmSt0CaMjfmqGxEI=yI=FemexE(ya8oF$QZH6ke5SUSZ^c{o6Y{$uhJuXm#6 zyW}c!X4L8pjRe}k8XMdpdiM(FOShyp&1UcbKAxpbnpyrbAfa9xMFsZs!laHg8H<(%zp94Zc;@M!CsvwEPxu(Cn&}~InN0e` z_zRjANLNEh6ks6z18{AGg(g~tJ9=o?j4@y&(c}_}^(@@O19>YNCx`2Q&lP{K?Rz{@XYSv>7ezsgaWUC#vLgN{5WTF>^ON{Aa_S!H>HwHUT`Caa+0@_p zdTzZbG*9@e@Gez0fvLOW?SPPi5SCDD35$nfrhr-MA&T_}U;$)L%R_E;%=mU7qiRI7 z0S4=M{Ehu0(ostn_Gt2WC07nqp%k>fo}(mF!trCNtJ7$>@EBwFum;8G*GJt^qLRta zEhI|WS@PY-Q{bA>SI`J#S2#S2@7|ao;A;_wa@&mrn?)nPDc=4{?;wD4ObdZFcx}5y z(fJ;$4!s|bKd@vt908sq84gVEl^1hCoRe;@O7wJHpdb{(4_WV@+#I;M=#dF@#AaG4qMI*cp-hda%?w4xM5%VWXtUZQaZ7u5i2Tcb~wi9HL@7UgAIwmKXL; z9Sxsm>$z3@X4)t0y{tJXF}U$)6{EW`6m@{ZPUxAQ?N>ZT15A@TA-X}A)LvU_t2goBZf51qa+V!%!Awlm) z%QGWLB0$asxsl%j5kv^u!ILV%0*~BA4 zkyY12n@?$MUd1X3#jE7C6+1M8N7Mv(r%XXD0{(ej$be7_B1#&Mc-Y1PF*dO$75f1S z=<|sIBC-n7gP97*CDjvIw0FOeYe>f3r zfH;K?XXpDtZe_MmFBx14M9U3+={vSn8?zu3C2ZAg6xDEJcs>fwu%TtG$5yuY%n=`2 z6qqeyA!j>$U*w+rIdNBheYfwH=@5T@6G78Uz<4~YFEZQ5Zzetn6atP#k0dQggd_NH zBnBi3hJ0n{iTDQiY#ubeC9otUYrF_oviJ)lqt^cU1LI7!j>+J>Q2>66kx7NtW)B`= zWI(-PqtsSSI-E`CrC!Lw41)Jy?|G9`-Zad?{%nT}l@w>YN1!R9uqF%t9%J!km(at9 z79J-p8La)peD1%(rr>ej9k1ySXtRvs$ud^ZvBT0Cye|E?M+${q*`{qA*{dMtMr$cS zhqyV%;8W&hNHZwHAYP&Rylj7Ew`gU7o6D`=z_2U_Ja#ghf&1Vn zq(+}4ECb|07@beWG0bqFGz-4MXe>l1bTp99`;qMo#=&GgY+HFn6dKp*$$h@!;M!%o z0{|NCUx%X&VHCZ!AHf#QBD}?bazQLVK%tuCY0~4X!9=fQ{RAz=4N(No`K30FsYA5H zE#Obc+oT04_HjyWLFf`SSa?Zu0LGh#jzl~>MXqkUN@NH`jCzJRF3IYu<2Q>4nOle4 zXJtW4H?PrWC$ZUjmI2nDbmmI}V1mR|s)s zRz=?ywV(5B$HXFb*J>eiCW|}0+cHdE{K#Yq#q1vd+}SaU_(yR$K>rc{xK#~B~ zq%5E=0Ulgs#g2;kj(4*cSnhXJYg!F^(oLB>s{?wns5Bc|=}< zctY+-J9=R2n`jr6n{ijP7W#@k@?l@2FGo)JGFdnbZz7mMxH2e_!Q_f|fP(;S2`@j@ zhBHsL13x~KcQEIKY_H*i1OwAZD*@LCjpUOBT6hWzkQejWSt?Y|$Q= zi}Z>ne)K!l_?a|HMbp@LLv3Umh3hs5upJDs+|Kh&bQZ)sIwTM$b)HcJ!`2FAP7jkdXSP_04bLYf=if4 zHGYfkSmnBzHg4wW@4ZDmz~WSP>T_uHK`{CF1^X2xq@|{W6+!`2ufD)n+*9b`As8wB z_`n2w1-=1h&vpCXC2d6L@C0T5r+Er>o{Dw*-xEG9r+T>F9&n8*<2rqWu zPvP*iQ@7rhn5)UXWpL-Qekp*iq5(r$k03B6wiak$Qly`c31a~EACJ;Y66&lK2f9$mHIeg zvk?l`2%|(1b=g;J^yH{Nrw-UZU3RGZ0!{|Nd!KVvWnnSL{@m9#2P@g}KW8;V)pF#9 z2*%)=*;K58MeB8;BIB6T=Ej`9*>!prEjWmu3K?=LK}#4|SJ6KVU&a0G!RJ#n1pKY` znuM0TgSrKg6Gwo8Z?=?Sg+ydqr=n*h3SlV!Fi? z9A>n9bz}Hn|KopJ7R&x@w_fSp>K!&}oaOsrZEWxC71RCyP5Z23?|_Lu`v(U^2{P20 z-t(h*Z)e_PW3BzIhG0He9HbC!p}&@m6bVM#&F;Zr56Lp^4l#(_ca?i}**mC_Tw{4m zhg!}5HlK!-7o&F!J>FU2Df%?0$JO$=i9X7mH<3(rx^JBPMW+J8BQJxei(EYja+P?3 z`CupquL#}9_B)`eWQ<4#amgIfFz1A75~LKLVjos$Hb@KH&RjZw?`8eJZ+vv?-X3PlgF>4+P zw`50(5=Ssm(U}#wJ8)^+rx}uI(fAmW-PMZ{aq=PkMU57S#M$@k==X!h<7=&|w*?!W zc_p<9HvHm7$%g2y!_${4j0}(tVnx$K$fiXo;i=-^ue(K{r>Lvk8A5RP(-)w&M_E3- zja^HxK3d>S^Qb%qSv$I1QdA072m(WHlmF6NhK`-okctbgzLT~qO=ccQO3PQU0@AP7y>Ya*v!dGxh79^8 zL>}Y-+sD=e^iAOoVxCExa$$Vr7W-G|xBo1jhg3F3g}#UH1=0`r?R_0NU1 z%Cc(gt)1N1?UM5*A!tr zEh(sEq^PW!1lB~aAKHTAUXy(s2_eC0%>Hy%gD+s?SUCo1OZps_f{P6DLAieKQbTe;k(IMC8f$mofa zg^-VgEA`ZXpmEIH^|f6u1ka(H*#Kt%4kQ?EI;W?n0y!Aw%uLkTZ7cSg(Do({-BVnelj#qQFP$--97i2$hQ>zhd++y{sHZC5g z+xh8e5H#=rZFs`IBoKJ=doE}a0?WFCYgZ!*l9unv?JU%X3T3zT@RGHX;h8hG3M_{+ zlecQzz-n6`C;=YY!mQc%)CiHf(G^SJc#rM$^-VaSV5tUvgTTS$DwHs)@bk)QZuJ@0 zeko-0$oK>JT@^}w6>)!QQyCJpCjxsw@?*Rq54fR(kI&5k`jRr@*xNrUBS2dOusGZT`2_7DSv zr_-5f37RuOOam2_atEP5@$rWR0pMSOU}(*bA;o2n9#{|WFc?YMk${}&&u2d6;K)v& zEnM>@@z95mc4N&q1Smtra1l}cxwCI%Hu)Ga9n3@p$Z`sT=7g2VI19tUWcU|dXBU`< ze7+!I-*P~xPO)Y&j(i!aL+f24XVp9z5S*Yk(r+gH`HhT-nl!0vJ(TGS z9@&d~9j|VEGMQFN#yPVK`BQ*e4wh5N=Ugp(VX+YR!5&#Pt40~6W&{oGQzslb-%VFG z{8aaxD)O#z=4`aqkf90~5=|LU1kbW6grgOwA z=T3}a|6>2{_kOaKXCKGbHjpCt$Hz_0{8anGHd0Zsdv`n;yvy^hO;#m2!2;9}HIK5X z21tS%L{*tS*;>TIX#zU=;1ex^@b5DXktl-@&7`NX)J-@@AHVih28ASr`t*Xh2w6^V zEvJbn9ZQlumzq7u4T6TKfIm>$c-!VRw(K1C8;e&tW*Su^fH++-MJt!94X@S+iY9#w z(L;CXK)n-ki3sb8n=irWk*1>sJq<8>omK7j%K7Vt15Y!j{`E0#_JC$9g66KdZ0d zJ?t9NVnYHcyyh+)*q+jIjZU%S@Ck;I{r)3)L?6WnQoRpq?K0&nacmH-BlM@r3Ve+T zfWwC9yIR$2Y|1#G2y{fl`bfU%7}GdQv47{pCJ#}<1nwH_>*GqaH>0P37YI@HSk^aw zp~G)j^^UXhg^zEtau{AG%TB3B-+es*$Y3NcgF7L#z-wuWL$%r1oi8VolW!y=Y|j9= zD$ExIxmYQ#YT&olc0xQq!BaY~FmBnjCaOw?+tGX~u_4U~6;G zw+snb=oQv!Ob*Od@?bMSSivp)x~&l$#HVnZiU9TwCq1xZ1;X_Zx>dc26bBdyUj9<$ z#S8y5Q*TDzy?mJKI3IXr!6Xf)%W7$S(62>rKgA%c71)y1ot*VNnPgNl_JL;=+iJ)J zX|mzFv-{w+(aHEF^Q^$Av;o+33cFt7IPNxdjv6WO92*kQU(@6xpYp;63fLfaFYuV(l#n;I%fQvn(0B>6@zPLm;yTG5G|UGkK1k_z2Zg5uhlrZG{?a zK_rWO7HmoTBRYuPW4f7{GF8Pw^9nOMjWf)*m|DP5YOm_yfH z%B^aW+mC&uGGU#_z>{Ok=j@P)aLvhs@j@AIUf>>KpNG1&YW`R>9M7iZ05@bQ ziS1}?nr%A0tV7_jUgJ#KH+W-$^6_8@FIyem7U9vLWr2Nl&~x$tiQPU14)&*}E~SU)U64N^9H)i1 zZ7*q(?%AxZ;z==lk=xM;j{K1f3G$zN*r{wcAh+jTAssY2i-efM2iI~PPYyHyf256@ zjQEM+6MtNI1)6)PCxRx!^7E>Z7I&U~Hvsa=6^8&f-D~^>ms?mtI+^rf5%Bm4G#OD( z3_H$I?>sl}`cu&-_!6#{5`=)&fPj^oqt%WKg6!TeCn(REX-$wpFfx+s={t)>aBdL` zG@S?BUS*rpn7pX}V&CD?Vu(Kyx0WUtYc}koRRT&xVsc#UN(h$aJIl~v8DA-R-Q~VO zj3Q-WoX!jI-h`|>e`FKJ44XSx?ag0e0UB+gIGLYWG>aoa)h&|p3uufDqT7=@YoeTz zVS0Bo(1k-m#>dQAa=Rg!fN53x_c`ec6ru^5XA$rkei9%9`#=D3$S6@z@;Lx7&vQMS zZPYx^Rgk4O7jdL=9Kb>?V9oki1Wk2T7sO`K@E}N#gy0B5v44h=H@SJr=>*MN1m@i% zMDGX~S%5Ef=j4q;3~lo5`(u2%vHse08NogS8w+C;NH|NXhdl(9!}wMvK5aTc(BUU( z9E1Vb>&J>#f~+2)SsL_bLzzjTtlPnSZoZT=1bthXsSON(@SfZ()$G+=Ide)jI<+ zBM0_f{+`y$EJWC3CD5_OslR$yOikRha6p=>57?wR%Y1;Z$Y4O4;L zz+tIR-%LbVOs4Z4gpth)0fgi!RtMXQnV=a-$}@xkXFAS3cJ6bJ7=P27nPb;CnF&Dz zx#doT|Kx_vKY<+scCs}CJ+iByryJ}Y$LiLwDz4_UG@pLS%`Xy4%oQzRH~j4|*qTG% zrI3c%*W8SwT|5%TH*^0%L97iJi#42e_C@cc!v{7;d==MZk6vj!ZMb$1e5eTCj~{Y5 zL0JA2{h1W&R1e^TU&h^4LlbQkHmb(BJHMNKz?X4)^7T|28X9p%M#Zu177>`}9vd#Q zD$3>~G()|TG19mG)sucmnZrXZs5Aa&A{L`gvTdXDrirt;Gw&`)mIwXp_gdc7WE3ot zv7<53r};xl;3^z_R9$S@kmPI{kzkiG4@F?;)@H;sHjIJ91$K*9Kif)=4{`yPa%&*f zua|SVE7ctwM+)o&mIv(UO-3gsphHIQ2w<*LsCQj4x3l2^!0|NgY5OH9@8p&)Pn-Dz zRs?sTt*x?L-J%O&u>S>eyS#qKyB02je7|QB?`|Rr_RGu}oBArJvy1rp>-KqDZ1?7n zZ4rp@J<`Zc7fW)dDC7t{9p(F)|{( z8t4KHm~1;2-t(x7UK3d@CJl&twU85|g8&9X$ z?Cl?^`PBbex2$L-_^;VEKAC1~=eRj!&P=aB=E~vDN$-b~)Q8Mx+22Jsr=nLM%{qjd zqq3Rtx&Jx}kH@n!>$N+x!+EbcIdEfYra;=6?r+bE>Z=~w6o)^0)$C~Jke#(~_trLU zcfab2cBk2`4MoSjs==giOVQ5V5Qo9lLDZY?qq9`C?cRTA**9T$bBXxhCj- zh2`mzg*W6eu>f5e z9}-VhP?CMA6oBheWY7+_+iDD^R$U-k_#l4(_3TjcO4`1WTgwMNZ7G+v?v)qLIm1%{ z1ZLo?tSe4NPcPWlPM7gaW5Nap|1fw2OQ;#j?H*7Uk8bCtWpY(aJG6y_^E zE%bosE5Yf~~aBGJ_ zl%Bcc;?7M=8vRD&j?r^>f08C4uQy@*=A_q!!Bt+3=}{KOK(B`8HmQdXbY;ww!5h@bc(&l-__LsM<9`=Zl^ z#+4r%j41bCXZh}NOlW6ag})N~1pk=#@W2RRbHEx4@bfMZ_f*M)V`#&TWp2Yy*k>^U zXM2KOf+flH zFh)0eQ~s$U4to2X?oCKPj6zezoG?u0Jn}# z1s4}mpP+}sf{igCpdzj_#!8`b8&{I9U*`%@4<;9H;a;H25EPD(Y;pfF90|_wf6jEL zuKKDsHW0LmB%i_aA5ToY#*_%G5;A2Gw(bOHMf13}c8jj~ zfys*k-P`MMav%4PR-b}d*n$L=Ar$_#r7ZZg1?sE*U42meYTbqscAk8k=lY49Jj_#{-a8C|&B<>?Z}WU`yOLIG3PmjU8GnRt!8=W-Ty*bnK@wm?3*NLA*}g zAhfC$8Jhj|uIwZ>jxYKz@-8+I4nO2w&>(~`_wcc#t?>fR4Jy8kKOy|fV-W6vn~1Wx zgr|r`xgfi6JLt3OYP5q%iN9B*Y1CN;0uDWcXrF9_xDlt5dW4$jaOCJiFMsmY`>`Qm zv>%u5cxFtK{D8?E?kUj)Tb9AWW!!lgulomtE@U|TibFQKXO^qW80JII8eC%Q0q3X) zCsTi*!f@ku735Z!Zr72`iRX)7%%(up$c?hMamJ^HnkMsQ_UMdOQChyS;f6dtkyqWS zJOl=BQRYr;D&BJIU_mu1($5!3dA7907{QCG1W-A{2>9p7ZRyQLT_{K5qg<4_D4wDo zVM2##d`1RYD&zLYJM4-f1swz_d^6Ox_>FzkDPmr4q}jy>xq*@c4kT$q!~hU#WsTmK z>v?Bm^5{N-kWDF*mvTAG+v?0hp(bGZX5d$Ne>?MA@?ESDfO?s(jz|hMvzR2N*@MqX zdiN5E;f_0c(l}$}-bAhB4gWBnFQW5$d4o{X!sHctZ#p0i%h*n!-d5 zWiOsPL?W$aycNmnj6&!xMe3J)frwuTlV5ven>rf%0(v%v!`Hwp^>5(4 z^fl1p&`kp0FME^CpbFYAzwtcwl7k8klPk!dO$OIt%CgvXh=oO!Q_}@rfQ?h0ink|C z8}`9P6(E;Aelh891g3%Jh-v;&q2f?+2iHvIxqxb*FClINrtOotaG@>b%Y3}yuF+R?fna1q22l;Xmn~zp?(g)e&oB!zNfauvKj}U>4 zg~iCuc-xL~rVy{_kC(`Oe989L5IkDMI@#3{|@D;Mo>1Y_FZ$YN- z(BjDraH^|R+=ivM=DS!gfVT(PGmy;YL`tEJZ{os7k~ThJ1SSrTm)zz@uTRCF5vz?; z08X$1ju)K0^(A|DA4^ZLv76J${)xX?;rDukAWIxPhtR73e(=ZwYZBOMMu}kxqz0KO zop}o{59@g26_T@P5qMTv*>Bd+ed8`_xJGZ=K5k#M;k3n50K$K^Ihc)Bl?9=Nm#*{xin;To) zGPR9{>p}}4nkdCJ4D_)NU&78Lf-*(UNV>FZ?LdP#GO_M9&+S)rGq)Zj8W97Wl_?@{ zJPvb8%leKd+=n6L2w+LCh=)^2PwM1SB1ydk^ekrd86mR~0hXjq&u<`O5E==>+}G~Z z?T225_zc|w7#8^+k4JSP^EpQO{70^`6h8I>*0x!F@R|bq=r46LI#UKl#*Scy;Wf}h zy7BC)&59!&rU!e=R0g*_P#2Pmg4}?w15un4K)3bAfb9)v##rVpwZ9Z{AG4>d!c4+5 zc}I;6!=QWs_CB1v0Y60u#!}G@*sTixn)Km{84nc$dA4#jmjMS$nw{egbp>ErLR(00 z{bUgvr)&ES&Vrk-WU4#leVP8jiF8~K;iXXW9aLSY(K1U3nd~icBgUX}W=Zkhu6!1O zCH1aBftJQZRE;JfjM*&Bh4KywjI^>5Jr1fZcyKPW3OgM6E&5z1@7(^8{!r*5zbvaN z6XcQ*1FC|W;atbM3C92>muT=T^7fJiRtGE13;jqX!KOZG#0<1mGp>djE5$ReY1XOr zr|_GzNp%UOUd*RrKl;AqWI|skTS&%`f26G9UT%3`6cFF+Qouw;kZRaAVr_ec z1hU3Bc(}Z-rRj322R0^CP~s^g4_0a8NlgCFfpzUGZN3pT%-%ptmHB#{FC-tUNg!|A zr|D2z9K)8OQ>gVadmA3P6T<=tB>TE*1{5DqdZC!B8CX=_es=Sp?0#CnhK9&8bga0l zN4Le~rc{+)q=SPy`(}9KFAr}Sh{t>mnP5&&K^M6dBY`)z9{rk@%6_0Nyx)+wDwuAP)H(Hb-Ly*b*u0QPe)=m8!I%Iz?TfFkZvOJxzF|}hU*kp zw~Qo=tqRkeVu+*f*q6!oT#b)d#srcXp!p@UAt`@Lt!dGJIPumh(5!T@#rs!{M@Mg| ze%|s~H*$e_hS^)pW|-nerb&bV1GiFuCCK_`zHDRdRF%=#TFSkRy?CRsAzOGA&omEs zLYCVlj4&3*lLNeeNa*7S$WM1JbOt8F2Ne2Xnd&)3jOQ?SX6ySBpkoqC`m(rUTN`(L zpQFKm(@Jk`Tm*C{nYc|_pw+t7EhW#rbCPv@ECi`9UOQ#JQw$|dvMr)jQcZMn-hKue zvi2|0%KXdo1LQEn`laxpR{Ek#T3a|;fG~F=Tp64CL>^!`xEwLp9%mW5I*HFOD)h?a z&%^ZawO&B8x{;0L>o|jG!_;r(Y=O?Jfkdca7^cH__wWVPKT=XEXlLS+s#Ma=N%53G z^iI)4p1qG90VObn7=I-F=eV?ea4G$C>hB z51u8Y82cbS7M^ZZ(YxNWriKw^SvzH{AY#xHDDk+k{FdgbA_`CCV~w@yf;RejrHhA7 zMZT445Ab6e^E`_cU~YktRUfI`BY$9I*$H@KnD%esu}%qh;AY0_^ju-tV8T)WmD=U9 zx{M|MjD^JBc*CFpYF7uu6XBwfK1lvcIEEpqB)XM8f~@j>G)G2Gip;W`#zrjkB?5dO z8loI-Vp7k=D{Np-ie?os4031d)c(}K0|J|CG6)8f0_0o1MMW3zqmZgu(C> ztk0Gk#sM;fnCVjV);HV*$R(P71t^e`jJ|I-&F*1uyEq2CQ0*=|REpEl!Pcy(l}ytQ z`u*je8?*03Hr@Y@SEC_U@6OBK#`m4W!`^x{4%{sFEVTw1IQQJgqurvneN-O)Uu?!j z?36ttqp{eAcs&p#EdnhRWkyofD23m$<5H+Q2EiH#7b?v{<*r|j5Wb2H(0|(PcC59 zvd>7-a8JAg3@=(Zcq^J{ux}59jGBm~x2f)Kh*>Mu??6akC%k1=Dx><=Q72OzTYtWw z-C!Ii@;*l@_lx*t7a|E^$C_1TOhF1~&ut4K-9m3L{Lr4(0iz42S_0#sRja8BZ_^P3 zi@AyodUpy!4zeoor42l9TU5g8rDal-<<;BX#PtUPDx5bwaW2{DlzKT~b)YkyILQ0C zk5O-!3X9bPf#Mbt5%tssAB!QvXk{l<6Y5A;8ncaoGe#JRFL88E!pUDq`Jbs4mpKH4 z+#zN@iRtH82u>zqt1ldy0(FjM>RudgViYLLeZ3+o@rkfC-;e5HZvhmxIK-P8dAti5 zQj7?ML=|Cq5;{j?mAspxO?(Y8oke3`F!WU95>|vV9!@7x3{`NP=GNzIH!a7P*?f2m zCq~%7c`T>GT?`keU--;;@*@#|sz=|_&wi`#C&LD~Py}zqLxa(kQ^bO@y%I48HZdW6 zIfgJgqiqO4EMzVxW}1*NW7*~{kk)Iub6TK=o&4T3im-+YW#}ySB_w{SxkM3cUozJykH9IZ{awo^zWLQJ+vmmfV@EK`Ra<37_J5Z2kH%O*3~72{M;jmd|;JThqE z+jMi-?im8+X!R7l%=ppT1VS)mK`o>uj|iKTZwZSK%y>S=>XSjzTfea_%&rI)1+6U_ zgLl;uO+{kEq6{ByAyLQ?>dan@0U?OrPw%$C3j!JtCVC!hG1;8wN_HU$M9a3fh?%sT zG>Qv^eGvO;hmSH5Xxo2iTt>8j#zqlu&2j1A;v~KI_;MzIcR`sHqXHd>nTQpkHmZo9 zuIn}i<{g3YF%S-QzVtBrjb4V{Y*P)0%?Fo8*C*OPXNvMVEKPjPFTJRX5!)65e}PYW zpMUY#&CMhhXYhqwUcla)D zVxx;dSt^RVc+M2XL>u-i2qyvav;C5B`jUViSaA8}tAUcVVEb^GJyHX9(J-&#H=6Q}T8thx>Hn?6%pPvJ^7)1YY zX%iibkghzmr)%Pnb^EC(kVhmN05?#s?6Z7}ZGmtx7Wr4KAnY%av?$ha9R^L$Y3*&e zr;=lAv!)kMlE_Q}@Oa^KZdm;t6;^4442SX*m=iorw6-!^E@&x^`cof14kjWFQA$QB zZ)mazH=coO#0|}$p`^0om)^lOky`H>wX=gLuxf(-bDwSIbZ5&nIi?yx(osaW62^7C zx}g>KPfkXp107v^7y>cig?EdxTT1mA(++_5AfY(1lfZ0fUJg` zk`Q8=;FQpiP~oiq9qHZVeLQd^;Q`E^rDn)n)rL%^{eF=ziUC_`uf*7%2gT6|eEdzj zWfooZNA^z%iUQH+7Wj&zDcmXJNEVBG=YZ{$wU4kvQzybje2u*g@f{>Z z#mIv5Ok{Nw z0IJH-Yz}1~O}v?#Pg?Xsz!)08?Y@2qqgUs%D~xRqwPQ=9XDmncgVN{q_q=n?B$1J# zQ#5YMD#v^-JHfH`?w?#G2)@CK5BX9M#>eTQR*`D~$4J!zvYP!{RAYrsFC%o6Nqd*i zW~=%1x|L+NFClP=mK6`vTNnG;uY67y>&0Dc!Rp$3>J2Fx_Cw^>Ub;vk-m{DeZskQ2 z7d*Ja>h6DlBF9(7a<&8auFtdLVY%-Y;2SjtaCxyl+{{gVAUYQX+`wyElfp>suJt*9 z%bM%MkO#hTJMNYfJqD2!6rai+U`tmD1<1VdHVvuoxVIjE&%1gKa1p~^rQQ*;mE2=+ zRdCM`5`qDH?;w009XbkGr zOQy3qZlH|v22{Q&V`~RpuZcwve4&`51R*$g7qt5sY0%~kqT_l@t4EZ*OTgn|-oE)H?XOBsuAHLp4-=7!fBYs%slg9Reju>1UnWpya}FO;Y_?at zqj?GNa;a6Ky*SyxhBA0!_zg5IjRoRfvUfV81+ZQ81lWGz2}STd?IZhhk_dY=6!Uk% z8fK5vRd;a27Fp;rA7I_NV3x_2>nv1BI);E1DC?K0?j!Bldh3S!&vqD@d2ycQ`uG?_&DE1+wPX>w} zb6P(4#rB=rWixGM;GqPwwtpj|RQPE)*vbSY)5}Yf4A7`dj$qMb@R1G^JgY?no%OaO znyZ*WH&-2@@@umxZTEgNC6wXqIN$%ll?r4gYvc&hSAIQ zRHR5h7Rl!M=nrVEh%W<*9iq#d8|}gqy-EtajXoK35z(kganw5 zAohyHFj|8wUC)&nJhbEvo|nf9|2abl{kJILYKO>+j+3|Mp`o^gP*4vn?QWObi;^nr zfzJ$Xk006_#v(dvO$QsjO~Eq5*SPeFwyCH930V#=AORg5&1{)CyqKGtjxXbz3lKp> z3}9skt@uop0PCrY93;T9(O#x^>Tn~<@d0Qe`}iiK%aG!0NPKLei%2#FEdIiTYXA*6 z@OjT}pV|Y<9W~ER>8oN`VBxsSmZl*FD6XSm`$_J6KP7=pG9>0yTh?0d6A|P4QL+Kk7DNVS6|kl7*RsOy!O^6P*gM#Nt}=I*RqzXFiImj zH=F8~B0Jp)$M=Jaxdd~FMb~$SkPld8P<&v^HduXkC+{HsiDHf*&eYp%YLiFrRVaF; z&gI}{Vp)W zAU14mHFJFf%1OMBfGHoa`Ws1tC4b1<$!CP9BoM9<6Z2xsTgQ2y26I;%u9wmXOQBi1 zpQT}nLHf8ouN&jx-Xe^K|w!KtbS;>d7WH z&(4x9&e)v^Jft%sdSF@vZ!Q1eL;9_1gTT{rqqv4 zTwo#hLZ70iM0!Y_0`h2XzI%vm!i$dGvZ^;XT`{BgOs8dm)hG>-*x66-L6>6U^;?m% z1z)Bcxj>Hqn*(MS_F)mxxPS-b2L;iF$xq`+D! zs@zmt&sKCK-?eABhH`HX7RS2wl zToIn|Y>p#q>kN8i);BA*SrH`WWsZ^Z3euLSAGKY;_F;LKp~dpFaB(c59}3GCYc0yb zI_M~s)Cu}ewO-Ws+MB&&I|`KY)6@eb=$Fh`Wvm|gLxpPb&KSggQ@%i5mpVlt(G+q> z2TcvL>>qMP&h$L>x~s?6sUvc!@zS5Q|1C?W|DUsTZqJ(H>;BQa>$>HP5X;fIJFSlZ zRY0o0X8Zq#SU{td;eWycYIk;b1t4>HP*nJG{#|{x4vuC`@9kP|rmy#B0?8>1Oa|Yq z^Zwo;u!(~gGIrL4qzHjeT+r4_f zIh?xR=WadG!i*_2%mKpU4uYLypy5;)Xx%$#W=P=yrq4?6|4y^7M>o8TB45)NO_aS; zPI-6sF%d(z5-oH5%(HMqz;8&~dc|F#IybpNL8OQFl_MTNI z&O#L6;{-ik!YLem;o!Fz3Bk!=ggQ)`+c3g>j0i_duMEL%L2kYy-1*~`w;d45F3#vf z)&I5+zJj9af`pM|F`rvN0;nRDA8J8Tu1b?Js!Ty}0NJED8nDBDknwg&1@t`S7&kvy@XVUVbuW8a^3R8>hd=OpVsNaN+AUyu9He+ z31#qLVARo-D}F0OHjMoM7%CV^F?tZtoGD;SFh6LJOw+rvn>v?MU&Hj45Y2Re*{Ns+ zGQ6;rF`KpUV~eCs%Ot&THm8wQ(gwfv0HWcyKL6_Orjo@#QpiZctg7aFrf18aKz!aS zSRK5sKpV-DUh>A~S;43-qWA32aD=76S`O|ksG=Mo>`-ddTy^})h6$hvDLrTK#m!Yc zvu)PFg6R*ol1?uvSmD;OMm0~D$&Flw(ZWs701W0IWta9yJ+E>#AApTU?;#rt;FphB z%Zr(qjg_BNh8Gc_W?o6GpIRip)U1<^{9McM@j{I!@Nd%c3cvW=tP7VGZhh8U`}#Rz zv?jmVyfg7s?Utn8d!Ne2Qod7elB0_J?%-?{=X0Q%8ghQ^j#qB^UgvT-#RLxL8L<6n z?q&VH+s#JOlrx8!F)j9N{^I#P8 zzObT@!X9EbdBvJ~-Bdy-am%M4LJj<$%(r}F{H3ZrW!#W73hGRrPbx6&WUd!Q_QR05;Gf}+=BIrVFj|PYi zR0CKV{urW3!0+Tlzli2!0Ya28(r#~TM+bB{vn#HbBpyQvN$V^j>& z-p_sG}#JkaCbgkF=Pr&4!_tc9D<0Dqs^UJjStt zs0TbnA8vY)dG@!D{tgi?WcBAEmh7UhiFQkZ6{v9a?g{fj5Hhag^y?>(rs;4Zh1WJY zwBJ(Gr;&C&dZ3w|Ol9iOS zb+fXPU1o(rAAQm5;Fb-qu$>7lQJoE3u_wNPo3n<&x^KNVohj!6S(8knleFy@(NCO{ zuyvB7@n|=@^(0q4W@)lZVS&EZ#N$bnP!@c684hjpn44TfWL1E}QR%%S`(OC)5wsyJ zCu~36=A2}#+qC1mzPQVdkKr7No07JH?R%1>;8LN0{Bwb3;MqHUyQu#$ndI|PZnz%f z2Lv}BoB^YyrW)LIh}g(}<^7*NJ=XDZ@YdFglOZ+0jq13Pb-Qu(p1T%ZEA1v+hk-zQ zL4Gym6G;<=W17h>rkJFkKtkKPsZP$k$V`I_pH6z9t230?fb5I1^Lj2rH7q`+SjC4# z>y*QF!$C1UNrKISvzZ2D*@4vUa?AbTFIN`Eb=+($dJE`em77y`=QfdR(OHk#zzxDD zu{(PV(2T+{+K>0lyOrrs-Cj@yWHPf0*k>DE5?Y-L)9M={6;5oT6g)on3KR(CD&TeO zYrVI+0`XupE3A|)e7MA_ZF(W0({R{ejX`w-{V%I>mRsTdwIW|iFKw&<%?OAy<~c>q zX|ijL25`td&Fe^$1n?R3X|?suVnI!Ec41Z4R>popn~?~ILuEMUjN;b3XZquv$vRo{ z_IwLT#ay9x?tj`%+knA&Y+-s!%O2Mjg+kqFL360=CLHE{jI-}2x`We2Jh>$!xWQ^r zoIzBVi2vrkO1+fGDn=wsnli>j2uE%B;#KfD5IfRa0tfPnRWyrl@Nfe z>h$&4%VQ0?qVCb7>D$0W*iNy95M*NrDMeV(lgMmgUvs0rV&l*JYk7j2FD3+Y$Dcw3 zxAv~s+Up`tKmemO2Pz3vX?o|QR*M3*3ZB@ugPB-lU%p;Gs|y%J#Kq)3(EVR~2R!%6 z9mWEVcHm`aC7Q5;+I;{2CGShS;%1sG{|W}<_6F9zP!e7+c;7Ji@ggr;*$Z4028_*b zpS(9BCHj4*duG1OnRBMkdHOX~Dk+s284($A<3=~9bKesCU}mO?>JS!`sFMt^ZN(h>n+-q*4cpK|_NCKzw5OqBAga&{tH5 zzRZa9`gj4|d1_tcvu2yADXd5-AoKS!*F3&AwY({F(Wyu#)`-q%wXFS7Vju-;BR8vs zwgV~p4W_n1l(rx~b>!rD7OE0?A2-bY7(vEQ!EQy9Gbg)31m^D7*ZBe_MOO)ug3-_% zauRuB?b0zSrdSujna{*aF~YZ^<$fF~vhqI8WiK zhw^=<6<`=x=or~A5P>-oi?6#?JW*^k3(sooJK=vLnHcBF#dIlcJgAEP;8(jE7i>FavCn7)*8NSb1NBj~vrttguFHQ{=AR0%iGXIXgWCaBEd8IbwBxX;1Q ziVn`SBYLa*yyT9BQBHa=V;EzNVtOR8~cm zpM2cLO{YIC+ ziFa>+m6Ntu)?J6+$@j@p;+;iv|~^Y(^V}o`LX`eB-5zmBBD`rNuByJ*LdA*_PN>DM&%;?oRgQ zCT^Vt(=%ON-uan97?UIt-s|wX2C5)wI7_7s z8%CCjmDL3){Z;Hd>QF@OoPeqZ+qOYQ5V?BBDtukU`W&_bN3P1-0To`~p__sJZ+Os$ zVz699PRo+=&@0SXZ^amqOQQ+qiry?X&b2JRzNQMI6!~yib0FN(L}EF(F*2fpWl-&I zJZjAfq69O!&7%#VNVp(r(WkX){?34)lA6~Hz%o`-C1W8NC2nMH97Lkb5>MWN{w0-~ zT^FfQS~feScbR&aLDe`D3379I{q=*75|5E!b<)v;qdzWBd}r&4?)A?Cl)vC zMtM}j@2sO&5TcPtu4A@iUg29ScIyPZD?GI;VN~2Gf_H zz0+d=DTn!f*^(GN8)|Xe3CGE{?9S+1;k+@Idsf3SsBU6kYACmAX-hfb+XFb79x48L63!-iCcIjzsI(S^?plmOaZr)8%qX4IaGBCG?RxQyFa zMeLf3lSsIRAuY+;r4F(KEDm!~4h+dAKU!N_X#>;>K81O`!#_H*6k6bj5v0Q(Mb8yP z%x0_Vv0DDYCHXQxoFJqxIBXAERyx&=%nm_`LLg=RvnrOjW;E#|c%>Fw#PTq_3hI~=>jg9-YjwPc8g|xno6oqy z1nxm0HQz4u38k54f+bZU8XxY}Y+cp+k2LfEgJE04l9{e4!4Br@0PHHrTQFNRbI6houCid-smK$>zgaI3cJ!LUgv58#Nk%Vhn+8;;}_ zbZ-TI(F_p*iZdytm@rBo%GwIBi4T6N_RrI`g4S~JAs}3QJrb!b7JUH+eq-Lw&zEI> zQgQ)#3TS1V0K^4azQwNfEMK!d<>4v$Vrqq>x-Seg^y%>D$$aI;_F5QF&IhhJ_9C%jmJw!Er_eRd|^{ zfhG@8k>}PZ;dVMKVTcSh$+uJ;5!LF=u}li2&fbLF|YUDxyUplujltU77% z)`y&z0Vnitq&g($0lKFKK8F-P{~fVTQ-7eYzX64f9BAr4|Besfk=ur)j1$CS^N&M=&h%rOa*s1~WHgc%T-W)&U{)6HO@@&q@>jhgT=%9+wxV|sMz*+iW z^5fKp8S1lBmsFa8d{aouM}rj2x36*^;!Oym=cWnie|*87K-RbhFrerDY}5?-+=#QE zIY?A1#f#+rWS$Cs1GlMb4c+p^x4ij1hkxGFG4OofmCO$&hB8u)xI^uVljRc;LJWosv} zC1i1$gIv&N_E;D%Dwx_p$3PS&JQyCF;5JLJGM)#zz&O&)sStBqzP1Cs@xxWS0hOJG zdR^*$(_6+Ls-gRd*Z$5ok-2NrnsFU8QK z&GmIu+P*L^;V-npaS=~$lJB-pVkF9tT;iZ>@9KM8sbb(3YGirKvKsxQaZ<J|-shCtA#2i%;FRmvqbNU;GrADfc`229?o1 z`*l@ji&W_C>xM7TRe{8XBqZ^F9&xg_)oxNdgXg?z9*O}L{^Z5ecN*n%l1+I#{vXd< z))-3d>%na@J){oCm+ac)B~DcBTX{8j6>I_qiK|>;qq(euPfq8EQ=%!obCMOZAnz) z5Ew3J>j^6}jFh7eGqC~rGjU!!$_Na-a6muCzIbj&awZk7IL5mXIbr(F4ZOa)jz1oC z(t*3m_H+u=_w3>)BBWnMxNH=Z`8kANo;SaQ`r<-1TR*R<3XLV>K~N4O@>MyY1osSC zrl&e7+)aC8^!IZ+=_<_RL|)A*dP& zr-ijiknSr+nXoA22j=qEHdYKo~gN+P8AOE%HC3phTvtHHy zRx?HXtP7x}(c@Am$0;BVE^Urp){xh{{?t06QeNxB%p6v@5Fp(G@1- zE7s4kt7`h#eS!ChC~sSGE2USet?)EP74*y6d2ua&c2NwyL=g^kiF?5=s~%@^H>fAu zIH(70qK=nZ#QCKo>lS!=&G!}GRLfitOu`-*Av1ssM8%k5;teX%loo8v5>PBL|{kAmwf_nf$0*26WzT`+<~^tvjbM4KtW7)Wh0AE_a?~S+9I+lywuH!uNX)v z`eGJNnzxig+27pMmuWj?PM)Lqnv z5zwu}V%K)0I=IMQL9d8CIBcWx(piGQ#*bx&GAyP-D?0Xd;Q@`672Y4V1;cOFb-8c@ zqAB3L;39GdR?g@envXcnyja<9_A10g52|2tm1&uCvKZ&3rp017>h6$5s_J$bjx2; z2A_ZDmj?_qJq;bVv$iw7Y1x4=0G^vivX2P6ARY~P`XmB|x%0M&r-jfmH;&O+ViQh4 z#q3$*Ja7BdS$+8+K=i8);4?EZj(J7ImyAdyi6hZi24;XqbZ8m#c(Sf^!8?qtdH(Xs z=5S=HI@Y$Opku435HXeFLCg8&$BrcC`J-wI+P754WmW?aUE>lU6ct_{{Z&>UPCsb2 z1ww{b#45oXv)t8=o8S2y$gFkX|H8gDFTbv<*~HNGwLF*3Of|%S8bIX)l`w{Od8;uR z^YF*Kt3scgN&+*gX<5HSz#Wtk`{bpQ27>RH)BM!)Ns!SYT(yD_rFNxZm$ zMhP`15uqn0GnvptiLtR3Q~fojq#Yp&B&cIdVJ%`#>(6LE;U}ab#mxhKVE55ld0Y&H zvQ;TeGtrspRpOKWr-I7e3ED~IKc5-O%4HzjLZpscpc<7n-DS~Hwj1Lk~_$jT6!>HSRW$VTW zF=l`!65YD4j}CNY_Yy<>3_W!ugJwrvxE5Z9AR`Pi4lFHbZ5rK|u&tf7+YE&RMeHqo z77x7d9b>zs!8?WSXr%HLLtXvFId};k zKpgw&c|fY@kf_li1k=;|IM<<#nu8r1)_Vi4$4?Vb^2qdzEK%{J(mk5 z4ZD1^sc?HuAM_1Qq4*K2bE9+pZ7EN#k@rQkghvLJCe-o``aS(+E3eD$$t+w&*qg8_I zzsu&(J4Vq}H4(3L8tDEx|123*GI-jB1_5yRaDk(KN;t$nuWXv=90P#~YU+)5_-eb5 zAh;Aonj_6>rd|MF)`lf{fvq)RtRsbjrm7^i#CVkOTuGwo$Obkq)fCekI+R9+fDp;_ z;|4!~t?9$ZU}^4b*+v~-|5(W3u)1}fCVHzKaWrMovl1Ty588LYsOqmDv^*b<4z!?g z%YJ{s_8lpQg@jGtVS6nrv>9iK@-ch5vvUf4g>p2ay54-j4`ywY-gpc=lBGO%aDYs+ zQw17nx7?c+9?gQf#2$g)L1X>ojq5R_MV#74Iz#0rrc25@t$hrR*w%5y{D-UpV4fG% zi_CzQ9yz=^VVE8-!LTEIh^t!mrJ+PzSv`!W`k1c*`pIR%R3gwanL>|I^VOoZrMOtN zFOQuR#J81v!?oDY#8ZI6=-tp%R@QRXLZ0ZrIPyqV6#JjC(GlqD`#Q1|k{0sLd?ASQ zz6Y3tY_l}Y6IJYq_K7uAc2Vz{vDISa3Ec zhC+vuN$GO8KD<`42=ZX^1Xth3Jx&=7AVo4B$E*{Piy@jIhs8Tg<(+(C&T4ziSg>m2 z(6{hjqq!9w3Wf*q>lTUW>oyq(@(DnK{*LTXtP;6RY2(099h~8-_A#_7;vn=0xPw39 zcV|53QD31+A)CD#tMFE5k4ZGRO3himH&nzin2s9}%Ba&PGN5EQFdcT?n(DgzgaI2D zwXmetb|aD*h&1Ag5SmyWEexJLUMqH7CZ9*f)C4t3Bn?$vBC1NYQ=O&h9wpQK^ZYP2 z(&cqOaOW4;LR-UZwf?4De1QJPeAYaq3<}={r(Orcxx-sFl5)W&tq#akGCuv(+9R zwA0BsK`O`7$>Dfw=I2SdzcW2I_nQFZ0*V-*bPmvFYv^6||1-Uf5siplc{J~Y@*w*3 z*0-tOlU*z#Mk9i642?q)7Y2RVW|h4a7UI5&&eouSDc5|*fLq6YolsI*(;`@JbW_ju zuZ(P?^=&9X#9>>})8i9W(Z1Sg79L@WrB@6{y=*hpGG z^evVtm@}EYm-%BUy<)qNyzqy#jS#C(Iru_~1oX-(`dCP!rNptQPP4_gckrV%HC4Xc zfi9p&YMde`;+;LX;7K4Hr!9$T(J}QJ6n?C$+d%(6mxg6ih!PI^5k^avID$_w+z5;T zFoCq1n3xvl`*L*g=&3HEr&d#P1|rWEESFSf!;uypo0ft7PD?D*1`6-^!TJzGbAtuj zDl3uoF_O7w93mlR+e31kAWq63JjKrYsN%~qrfT2}cA{1nwZ8ry`XRs3a>1k~7#T5S ze910>ElTcvN+Tc=YUcXNR{%AV2wj+%J*Q}_$oyEQLPj}a>#4g3mT6y%K6?vr$D9_D z@X?>K_c&FXYEoos#4~U4fKS=#jkhD2Q|xwjmPU@O1K|t(2niEIY~qb!7bQ+M$v~l5 zs*@#cX!P6Cmn*HXIN;&wb&Mk`WXWBU^45#|Hze|oT-~|nhuQu;Irl<{Y?{64q^3cW z?ka_3$Y#jcERZE`G(z>-4vd_rjfhB+yw2PE2+lJU>|(oONvg-6aOwUXhh!5*P%#je zx0&TYj6;Hlm<mQGG{tAlt}-;X~}^j{8vk!daRmoGsba2I{)Xf5;n3g}_^AC!#f--$jqy zav9C$(cBT~>N(b_C~t_EyAiV~l$k~Rg4+vrn-qH0T@8`7ED~d4BUt7#C2t<<{6-?` zMudz+fnpl@D4gy)?^4wl&!9k*m;DM$1fC)}DeEp?&~Ly)fE(5L<)X$6eFE*uVMWs5 z*|FZb!fr>0*DA5K(TxZP_3jpw!<=4QiuP?t^xTa_$}^V>naGgRcBBd3Sv$t;522s# z=5@kugbt+R1{m>r z&g>E|#iqeXR2VD%UG%Ii+$Tjod;=fZR+5c1`CF_y7x>m@A*WtP4T(MG@o&josA*)% zrQAXaC}kZK3-Fep5kemS&VOF{EuPQF0BnQ*=&vqhB)YLp@*N`xQ@uVB6(iYN2x>T= zBX?b^?Jbkzd5A3>QbHxL=F!5M{v3}@U$Uo>XK8QlOSD{9qJ!bQuYb6U*YU4?7}`-D zd>do|(FZ)!CIH!H3il{8cmIWa=77tPo<-*^SR`$Ad#I;M_%JoM2>(0rjL=t#eA9MB zGHhut@lHM{)65)5`VJoCJ!#`S6iaKi#1Ae6DBS8@<}eU_W|${rc)d+WuP#P;`a(>} z-VV!e@FNIsZl3AR2EJJr)- zfo4tm#FAqaXpB1Tn>Z3B0|mhxMKS>4)WZ-!OEN-;Q*gJ3FOleH>ZluD!SR=Ysz*o> zPMU@2awL#T9s3;9SL&7!PVGCevL#Fe^;|MHhkq^TmcYO}P`WT|OELF8NSP=T|EjjSXA0|=N_gHtKA@f%3-j4)6B=0VQ+BkjVz+nR~!u( zMb_zeEZ~OkX8*Uieq-AjC>{Qn?ft>BNC#dORN?kl@o2;Ri%J5_cfc;@>fa{q z(!BYhoV2_REMar`5-&IU20&CL3k2Y#hQ2)<~gbvjP4b}i7Vvt9@McNnkzSxcBlZjSQ_gj`cm}# z3FN|onAX|zThKk25qLdn045y5IGgzl^P6o$QY|HsR@1v_cKL;91&&J?Agmf?yqTE3 z^xDvMto9sECw2OIerxm`5V$J(sbBl^pHNWmxR#HWUTZMG+^YKQLoPbYku)o+3mv8j zq8!#biMR<7vB#|gYL7QE3og?mB=ahS8nbwhC)uO`i3_k;khU5fT;daTHB$c+d<)dX z`Z5WC3Ov}Ps^w@5>h$>q*73URxqi{z@7RWL$cWC2$?6G_#vRDJ<6Dt9yrZhO6#bxu zr{ZPT_x5!zz};?P@Py)oLrp8gOJuwuQC0%XJ#N7`sQ@m`K%!67>*BW;JnXQH5n7!- zieL23E`H6*cYm}lo6qV3oF!{_6@Tm;wb`q0MV}EQP8-V|4x+&mMKjvMKiM4xaVg)L z0c4FVFq@nY?qCx@bf+@`Cn)XwB@(9AvZsLY$Hq;vN4@nokFJB%W?hyrlnyY%GoIGH z$cs@c*DF7)Imwn#NaV!lMK9E;@oq0}VV0mVTY;*S+p8Ivd9h6IJd`V6Cybzs` zu!|J7EvK-NhZCXRDvlftRKppa$bi{a@NZ!Q;}e1=+)FxdBt~-OepUH(4VGN!1k1#d z%*9=76Bns#Y&wM=ZHFR1+j%jT=Mb38b!6i+AHG1xcA-?$z6@873TBJai&TS%S@NhW z)-a7SS3e5jZDDAfRxK0d$WlHogz~Ha-FA-2L^%qNUBZ94Pd$7W|9nAel$t{N2(ulr zjRWjjo1YsM=?*LpFlk;aTXg<4cFIJcQnK^4HBg@1n+Y|B<#>b97g)#TQ6lSR zCg_GNZ*AGnSay(PGY^dGgEl|zOn#U5pJtn<;DvIlj|ESzv&Hy6wlCdWRbOs-eovPO zs;S1#g3n7Qj!ddp!SfCc=)u=01NJQWS^&MrH&FD17{x=c40^Vm zmIhJ`I%FlP@@^r>Y=%LCPrTY_3|3IVO=lx)NLx#6uv4Qahy+2+6VeN8%4|&5iwN|@ zO>{%O2a>CI`P)6a7j~fK$Q2|o^QH4$lDfFK$3FvJx@}kR2Yd9QKMfC4a(vU(px8Re z%e$5-^1}`s2zD=3wkHXV70RrPt@{J2GyC&PAxT&P!u4nh16ez{x-RHa({7u2E2Y!< znGy3lIIq#bL-R5B1KFcOgzk^Y>S<&neQXcHiLMqVzO z3mTqu8jZBl${-A7nVs<@ialX=-ec<1+l7QI1G$ErFacNiy_gNra&It0M?jiFCM{x( zZMoU;9LXHz@&~XwK*d^@?r?RU6%z1(x=A<07O;+>{CmlB3Ec2@(0s!CqB34j-cwhP zk`=r#@idGxN5{%>Rh8GN>JQ%*a;D>{MZzoZMYQGUy83L;Gqsv6mj9MAYvj}jv-{y3 zjbx#18#5Vg*JF(m@1yvg%;h-CMlqU!1~{X|sM@qA!PG|}8O}7F?BMO_t{90L5ILz3 zl4gX(0r2(O*oui3^?(xhP}>3GMRh;cHMn!nX%g_~MlS^MV``HVdwU7fJ{aM#veXA{g8hD9O914$f@ z*Q6V>v+`}E>kUi7a9v%lKp7jmI-4)f_h|;R+k~uIt9xfEfEU7g<$QE|hnI!v7 zAPXt!##GQI9Bl9k*k(O*lh4iAPoVf{^^v5t9yBTu0&QqV7>MB6{ihe`=SWUyN7A@qbw-|Uv z8wC$Wfjvll9d#ww!=|;21Jze{Bq3GkT}ffVhV-AvA9b_J&YA(Y^pqdYLZ1MBA(&aN zt}Z0pd^dmdd`{n^GK&esxlHq|!~1eqh8iLqD5!=o%|XVZOw06EVJ)ia?b6VR1+T$` zpQnSi#@_6Kx@?OU*&V}vD*s}zsZS(_2C^76@p5{#h6Lm z!Ii)8XCwk@&Mg!D(AD);i>2MUU0V}U#jBXQOtgL3-nTQOpd?*GZg6N5+cq2C`anpI6v`e=$nWMI1VQ{IhnE|sPVke|6lZx`k#=@IRA>P8AxXEv02DtA!sR2 zrrU>;o$2{qVp1mUubtzznOS?kK689>eAJHl^P~N83P=iYEkvi({1~GJG^Ly#&$PeH zsLZ`i4rg}8=2LTFIo)2I*_fQ;nvO|Bq7z+?*Vl zkxl{qIWk9T^qLxmAdRh#r)_&Qb8H?xGd-z5L9?~rnx~m}*gkJ2<;ng|J=5%<-<6rv zX*+W?IsCQL0NQhEUf@KAVpihB+;>LcOn8iWjWJ%}6u6qhG43#lkM9D;vwuA09QkL- zOfxZq0|03}bJ%sj?vyjzCtK}IZD!M~+F>X7p#OV3H-Di65|%Wl$qj6Nx1ATUX6n9t zgidx{@>xEkKiS>PckgM$UOG%uKN|M|$J!*x&uIi$)7}nbsywp7Y4oyR_|YnD{(d2t zPUtTBVjW1Fl2H9ndbpADSd-{J!Nzdjmw`nZr2BE15ykfs|v7$w%)LM20uv&OdF znZdg;Z{)fg$SIK0wT4&MJg8umoa*^CZDj}|0`!AauRM(|@F=iIGDpMMa;1T0+d&zv zOd%6g#D5A+r|H?mQICc05sHlUXgS8ht7nzgbD=&ze54iQrTfMuD@C!4&WYw^@Dy?c za?A!1=*sMqL^4&ZKS_bpkqBv=fBpLiwZA+LHlu5OISPo>8Rcxj6hgV6HQAlFb?;xr z^O6uaBbdf3=ZhVSlhM=C7$bKn|74vDN^7(wxb%C4qtnz2t2&V_3=bvlhTOy)99AKa zXg%21kJBor8zcQ!_hbdXaAiQ2JIdjaW*6Ud5AT5%+F?4taVhn9qlQOD5UA#_bi7z4 zadN~~8e2N6_jC6VfrD=kAE_oD%~<9V7L}#*k*)2`L=F>MZ^ttk=C%U|S zY!R=G++X-tj0&(y<+c-soF?7mT~NWmm#>ViWA2jl9I&21c~^h|nje$wiX#A24;6(R za=UHbg$Mu!P*i-9<}q5ZFkkA?Q3+44^Q#Fk!XJ&CcpKOrg_~0kjn!pi65NA%-n3_A z5QZdqESg2C#j(ZOLcHv%ySKv@IOb4qk0h)&#C`2qpw=HjoT`mW`@(pE>riglkK+aT zY2E#Jq+&vPDc-J>)et?A;J5=6B~SS0g@XA&n&cGYrSpOzo5n-&JSk>brP-+iPNnmu z=z)gxRD98nHf~T?*dA0S>-UP`& zq23b@bnCs5t`znH&%Q5DMIxEM14I;-368DV42@_KQUH_z==dyK2*wo8;g3Ceahvv{ z4g(!bqmVHYRvA5R4n8SacWc#Z;)CN-54);h;QeSG%2m|ZpU$T$+V zHG>I93pux&@EzRJox{go{<2#Odi$ZqzuR^PJ}qu|yO^bedyJRfSLfaFkj(1P*kL%V zk4Rwa%S5C&WMS^h`s>m?wR3u8lh%8Mz}__0lCj>jO&_rw7#BC_NZuq*#M6BXZ{Dvu zy4{_uicxW2;yY~%6@yJqDflXq!c!USQ(DDKC+(0IOY}?g8b@M>B%2IR!KV1(Ef7*; zvmA}jdtYu0C4V^5bpEC)bsm2jor!S%6#r^P@o|gc>tOs^{>AiEI#fE7vsT#AJD~O1 zc(`XY19<^9g_D{!WHDb%v%3JL8^{DEtfC3!5Aznfx=>}V{JXRLq!5b`1C5rL@lX4P zHszv24Ayn9z|EU?&Tpv&>g3~+2VRn7qa&fsApu#fNulmLXGecaow^%JSyZuG>IjW8D|WlvXH4iU7s}>+Zb~ z;V`fI9_FQqKgk{w8l)UC7L!Rprbz zdM{Niw51-cg%ukDk^N0Y$Iwe?R(F(4QA|;%M{J2FY|3V5^w2z&^*mj2)({yDyGmin z2o5$c6UwvL_sKt|KooKe*I~NtZH!C!gC9cAx5g2*g*R5Q8Dj?LwITyOK#+1G=X|Y?xEkVvCcvojnyQ zl&reJB2O%Ym$&hel8vxfjQXGwGu4)>b|FyTW=2CXxPjF?((xy>WV14)B;L`@57(2o zVD#mv5K<1SLy7ldIcar&4wQ&>17ElPexC`Gzp^Nn^Q&X061bX^g29EBRadSGR-pIo zKACUfSsN<{TSXYVXWK(PqI;HEGVu($y3rcI_VZ}37_X^vNf@vTJXHo2h|7!+ULq0G z1sg=)VE21FxEqSEEmw0FExy1@`7$?T_L9@b&>664*5~AE2MI$-b>H|T09{5$8D{|v zP-NTIgL4i|>xecL(mkBxpbsj3Fk7g$FBGtDUf;aKL{q9wctL4eS3N+pJ`t~peli=Z z`&t!87H}-KYV^9i1H?q_{(dg60GT4#oilX$(Z0o!ZpJbvXoNnnBz4#j8ZLIWb|%BL zd=IV58Wx`HViGi9AEzU9LF~7jp`71mxu_^6dvG(B>me?R zi7jPp#FNzeDgoyfhvZJSEYQ}oeD*|Mqa}<$tW6^`W6KNXBsd=x@eJl)pXJfUxxDjE1qLuY>4!*sd1B{> zIFjZe0*H!EYy7(UgAURici%Ctdwczb07=mUrw!rxv2G@zjm&;RKn|&?H}QQ2>#Ue# zF?5bGCun~}OrEQ@i-DJ#?N_TB?L#>C5U;invWOb|hz$7BtO5(g)*7`4h;7Q5`1f#l zWI_QCbm`VmKt^IjyZ#h&Hj9%*C=aVy6y%}rpKvY^h0}@h(^H9J2=7o`K+F&*wH5_9 z!$=3Aenk&9PUKZBuCnr<7t(qdgJ}evt_}S*T0c88Yi!Bu%VhWWs2D%)g+u!usE;K? z>i+2I539Ou|09CsJFD->t(c?WM)y7`NQE zn=1;Iz5DVp(_&3ihc* z;gtLXB|}tCtdL$Dda#GdN5LNKUHYatQ|FJyjln4gBG4kKY4$U!cG_S+9}E=-UbkN$ zYPl?yZOaRt2cy6)kd!*(EWweqkbJWumnu=%HJ$Wj&zpNahLrqyt$&s4Xpt~abE z@_%V%AS+y)L-7YB5^)m}yPr#OS9h$Zap(_g!PU2MP*Ww|+Z))ZAlnd$>{#d(EYr+F zxz~0#Z>eB zZsXOT8we$Wh9!`lT;eVi*f-TK6Lmqf5$Sm$y}mWWeNbB15}5AvhtR6a=1%R_AK#zn%w7#{aQJa|u*pfT9#iJaYeO-){Rb>?FR?HV91P&M^6*GxP69*E%8_i?a z)%nx;75s3Dc_RmEC*v%ur7x$LHUbPmGfwO$Oo~y$a?UG16?%R#->2y}-PQ<(^xD`M zH?)o?e`QkiTp19^mSw03enPpY6%W>7fQ<)d7CsRDG0>#YvyK(F*egU7ck&8k_h2v;?kQXk zp<=rfKzpcDllr^QhWi>Jo@6qWomJ7Dzhj}?ad%nt=dd!_gM^O0y2H!UQ7#v-@Zmay zVo3z8O(uGQF-5q6eLNI|2Q{Z|`a`?C4 zCK8w5s1#Bw5tLlYe{%NBM5P+7&R2RalUC}kG5QCrIQ1tvO1QUD5m|HeGr#On_#N6p z&$_x{s?7)VYZvTrv3Nls1MJ+#F%q>#P1w@U?n-?EriUeG4Dlyxg%F%~(RH%2wrbkA zXVl-4Q0Q0Pr79qTMmE2ubM;6ZUZGM%M$NkCoU&MKE>*dI=2I&@gX>gtCx-GBV!sS$ z^`V&3n$1%g1drP_7Z)MR>gLRlYHK1K3`G4EAFLb>wNV|<+AWs#tBq9N&}^_YRtGn| zqpG~4+Ys;DnJA>R-20j(?=||CR4?HhG2H}So)(3MRbbZ$#|)NOQ_M;WvHmyYPShiJ z-X89sH|`akIm6)w8}6=NObJKOhgM*n#TMD_1 z>pAAnZgM!D-jW;sJlU!DX27BYIF2A~l=sFm;v@^lM{V28Y?+rmI&P=h&+2Hu9Z%0K zB*qMMyw%Q34`-%jy|>@aZ1dId2vXaCL}zAlcz8gvnuC*O>!h4C$NExeTxEWHxH$8F z4Omk%GD5-z?#iH;0&vT7F8*_^+I@o!lI?s(_zf(!HNTuCooXHiQ#3GwyR};AH2i5d z8+5Tb*P1KdUmF;qk}zD$U;P|_eFVR^H$@A0Je+P~Z=g0Kk%$Wvh-(L4RFkvN z&69``v+eGIlaO25%tFbd8k7yI2m;K1huQ{4Rdl52=Fl)Aj64@@d4-z@m{9zFIsv7s zO?D?tMJF7`mB7)vN`3Olk2%URdiiC8Je-7`@n{P>JIa!PM6e? ziN1pUl2yNW{uRa&;1U8I%FwgmcvsZE6KAW|svx5rz%Mfv7QSAD=oSW5dOTvHPM(h$ z`506&n|;DzB9JG;pg8__{Bh&jV43kTQ#LvqRrCp#B-`zVSi0nE&EWz)%NSa8Wql+q zJyuUgEf#wN)nd-YAC>P&Ay+*tCdfNAXS*=J*bT|HqMY%hmSli{prCr8LjI9B5iBVD zdNQ(B%jvvqYPN!U#Wbdr3wbHIYPo=7KfC&cwe$WVSW>Uj!D6chzHX}*U8p8OA`x4Qpn%`55V_79H zvcs!R3ed}p#Gk4W9%d~NY^jrhltR(nW0`oA$1s}3hsP>gy4r%M>w&@D3as-89bYvl zHqxyN^~8)e zbf`%cs^7&P9O$vlmQEPFu(x{WJ3vgR0UeY>tul!8}r#C z9Ottno?AEX(0g58Hnb_-L^Ue$9-U}xq2;M4_C)c#Q+_(hHn3q{3&Mm#aJE0iZyHc!Pqhbid&nm%o)etNC> zIoUeut_zm^0NTrykJI=zPpF=Zzduf4@Ach?Py(3v`JAT<$&TS(VOtT6WuRt6kMvA~ zAv)~xg2sp(;lKr$mx*N=9@*p)%H8=Kk zs_^+pr!Uq0jKXLlm8$D`b+QIILQf@`#?f9OXIQ6wcA8x*-%){Z4tQ+5zF<|*b9|#S z-&Ig{n|Kh|-U4DhJ^qK9Hrg*&hkL>7-&n0A05@^dJcnR9l-fzoQjfRTVA!GEU9>fG zOEBXx+k`>lIcYt`Lq-_E=>WEB(YCmAvs>>71g9@l^o$m6yQ@P-tOABH@sOoWY+{&i z6Hu3C#$4EGVOa&Frt7De(d?!?!JNdG4^b`TcDQ?evG7QqR(Kx&pS@ZiE-~PLYY-U@fh@b+));TZpH!B!SzJks26rV2^ z^y3+|y}r2s(UDx_?V71%Jw&A-D5j>-kH7!rsb%EU?#2g}pI z8gxS60V$vBc?yufGaH;oLtGiJ-6Dxpc|BWTD@J;uSd?-I;I|BZ*$o=X6SaZOtSkp* zwltIXo2-l6Jkb^ZDv0P|#w&$HYEthAQh>?F!?2DSZ&(p8VO;png%USICk5Idb-5bP z!%#2nh``a4BTTNkmcMz8FcnP7G8^3(wc7x{sHo7{GhkalST|G0h}%myS;2c~FLK zWH(-u&~qmmYUYe&%u?Q76jRtF9U0GmI&xxj1ARL4OUfRV)kHfjz!-9pLdgSwgNMxg59|8dJfrxat-pgA2=qwD}3vY z4FWss(lO9VJ-9SQNi_XC<5Zd%zJ1M#_YC#xtT_cC%<5EX2-q+ZGDV^qEL6&zxHH2p zIiw8H7p~^-;rY4D48_J9#m2Z)V5{$(x3~DizlFGDq*R3`2H#)G?U&h#KG9kYCKMe# zzzDkm;e4K~qII@QZ*xF75y#{q3d|SxZ8q@TaiKI_?~IO@Mow}o7Ufb9=U{>n?xcNd zXW;Xu4$L`yVEC!fYs@ZJe{+!#9-pzxD4@whU7iwf{!o1=!QW74zz>`)dQTHk=&tWj z(z(`2a?i{BcB$?HH@Tyvkz(~ymE;a?r|7&$8IstTY=%o$OH?CAaBU%wV z;AS+Edt6BF+-~%k)`o#J9F$xfcsmcSnDiyxT6Qf{MaS;QHHqNA7PdHeDjUjafhKf) zc6OobOy7!*qVrC>*r7thJE1rtPgm8i@CqvcJ3$Q)?dH0N*K)SQ(rSoS_kYX7J8W_9 z-#~UO{4oKwg4sa()_(99R&pn>-n+SR0CF3F+nyEc(#QfY;T?|-Z?O+B79zHh_#Mpo zVKKdT40|_vBEn&h!lW_4%@Opf{Jj;Z*RFXs;$hlo6rR&6nD-z0BF@6G{Hp|3wv~iV z*}ds6e^|zSO>kD4| zyZoP86eNgBs)lv%n560#l|Op-`Xb==0Lf;_$qMiIqL3U+8l3&rcXRR9r}*R9JZbO9 z&b%Yva&fK4#o#P9bd27y1mCIC*!b0uTZa{_5&fym8emeyhrj`jO57)}g}l4*h|2U3 zw0=>PXeTfkI*5#IiO*jwK5!`J#p4Xa8{)-5IfcRV{_&k zit%%@Q`NDRT49D2;lEU2joKGBCV>jKRL+nVmk^@nahm^>N$$HT;^C<(-p{4Xf`X66IbrApw)*ng) zW-4+|W|rDpfWmCv|GuAp{W(BOq(osJjV0UUbtaR;4p<~^B1;zc&P_RI2_goh&ICG< ze27jRu}>Z_7Cqt2CK05h5X!Yc5wF~cp*eg^_&ZsA zf|}Arnc$|{-;3AvX53fL8LerCrLpD^Yna3zFiPj`Hop6|hHa2vVn(esA_@H}O8>k1 zaVA4x*vgj+C@QUPVoBw{LOC{JxsSvX;DU)dL|%hSfD?JP|6cxg~2qVa}4PbF94TOcp@uNi!JGE zFYFqYQ5GN(;N{nsEUi22CMJM&Th+^h5qMZ{Xb4DUlvthX}63 z?g6WUB8js*jmlHCDf&~I#Q5`+)LrH3Nn{+Bc9};L+t6(T25J( zw?ikn*b(R0^BN>D$KhRpF3>uw}F^lId{M(R9DiY$5LUe4qkr!@a&>7^jWq zj}9-9Ns-XW;zzBUU`{f)dSG}G{v=u}K^3xu9su77IpU?|0V&t|TZ{T5oZtK;KNd|} zN7;74cC3wPXBj4@1AmnSE44lf8`;RXwz32saMxkdE&46PrZeFQvG2OtDt$gt#wbpV zA&eFFkeo6<6hh6zR*@bq;6^(HFpQxF!sVe=2}wlmlF{w^_B<>1H=ge7U`C{7su&6v za5u0VSIxl_+$DSZc^gJCZNKWADKrVrL3BHRvLt@qkFPc>{FJ?uAn`kR<4^e4Sj7ei z1~wP17IgjEe~M}T_j5U{9*dk&_D)pjVVtbL>G=vtZLrN#Gi7+uC}U6{q#_`VE~sysMN!P^Y__ z@;PBQXxH4yecSR}W{jyG281bMiCiKa^m|p`yANIrH(se)jpSx-y6V{rI0v9|0@s)s z1XciFQny5J^J})?lz668ogGmF*UcZ!=qJPrJFvpRj7)BoZi$<=04I|oPTPlbk5 zC+6bzcuE==5ZoLOSd-E`xHQ)j-eLhcW(dW9{A$UWBfo6^A89tVfx8@+JI!4)#+eT9 zedUeuoUR;C%j4-ztuUK@s@SB<+_x1T9rFnuQ%-l-YD?QwnOkj}+222(DVtrhlx4NA z6Q%q-$Nw!72d6~0{mIxQ#W?%Kilf@~b*n=h14t_A7kxTe>ri5dg20=h&hteoX>;5j zEFND!%@>bej=0svUvSO5=$a&1np;OJ!VDF{LRah|>C-X&$^@F@e&5wWRN))l?>Og} zhe=`kKKA}^`G)5sQS|VXP&iA^H?}!4d~<5G5gS=UUD4#2$JGA){LE-^VoX@M6@7CmeI-0?<5}usaIBG+ctD|7_`{WIdd~o)Y5H&RwqY)u9@WMF!_pMyqlsr5m z@X|bi7iPTGzCsb_7z`3-DJ_)9M@S^NdbSacX#OB%sO3vFWU{smL4B4@q)$&v<{Fx zo;f75<#sR~44t$`*+5*GNMRjA%FSL(-xmUm?bzUx6-(8{ZT&ruG(lm-b%Gf~jfC4G^2km) za8Y^GC6WLkW*p0S4(RfiLmL*lA1t6S{!E~vgNd_f!n(b=VdVnf-qiLjL_nx`5#tl; zn&AeFCg|NswijbyZOeF^e9TI+;7bfqr(v`g(@+{-X0aRw_#t;4LyitLt@JYrBc?H&0A^HtvML2k73TD{T-3IAk#XnI&t;b>%yzqr%l++Jn2l?=)mpx0&SWhJO%rdi(8}FSc!?|e z>`F9D8KDXVew~Ei&XLpNslHpnLTA~BE7iwX!^G|?bAv#qp~JpvyMJ`{u&7c=Xf_zp z>!hQKRLXQuO5%sq8OduEd4xYQM04;1=G_G*I#xBtDmGcKj)!Yxd#hNXN;MLPOeVqr zz@;XO1tO0C3&D-PuO@h=I>Umu>%%Ji}Wi^Fa0s13-W|h(DoX#j-FMX3)zsi#* zneiOzP_POPZ-Ua4F6KPEC$|xb{85t%;cLF3cD^E1*K(Vss9#QoIv)3bcgcU(+lZMkXc=Mb_| z?-hPxiy3`ePJQ%XpE@` zh?ebiAX}B}1*$4)>kFB8=3X2$@6((SZ5MqJUw=l2!-z%+>>2rp;lcywBVECb4tF6P zbhlb}<(@6+LF4JvrG$zm)Zyb{m9d2rwhgH-@fZ;GPxo{7&=7kw zHM^EBD6h(Ph@jVB1mRWw`N5Rp-QNR&m3NX1~z> zDoE9M;+uA&!>DEZ>zURpu-vnxI{qA7r8dnwCjI+Dy!}U0!Sw{M*YP z9IoZ0hawqh`W+KkBac-Q%M5en4UuTffLos6u^+MZ7pRcG+B?q`g6eQ(d~$rDhB6~z zM4641OW-E}Jg)$*GvXwi9G_n;DPTwEMoK?daEK)5N++h*`kth{^whACx|@g0T2`*L zjxzz0p6-dVPUI}Y|5{->_#zw4qD#i&^k@xVB+At`Ut@?M9nLpA6x8hbl-e9VAT4Qp zO9#ee89=akeRTMF6^I@^oXBpB}+)macZXRhwnKj0x{<-v-XZ`+63Yv;=dO zSc`<8p&Nw|3f+X*2y+!qlXJq?iIPZ~F?u(UWajpK1sqp7JV`Uo?}R1OJ)+5K(oZ_c zsY)bLv4nKT%Bq-v#Yv;apeJhM zT;TqP8s@PS`?eO71WmywaK<76$2{2+`@D>x+OYpi$Q=ss7qR?elfd zO1(Fb?X%-{w3hz^LB58_QC9*U1&(wjMXtZ|%!!eQyv1j1rz3r#2=a;61OzUHs?G7< zVW;wofQIAXq~mz49@MgnRhn)1FqfXN4A;95(##C> zk9?h?B0OzDA;ermGBSP@3F#;}>s`;~%2s_+if<-1-P8H5UT6xJKfo&3Mp8)2cToF0 zsQOdn?YNzUgl+k4G5sZWN9Yn4j9^)kyRy0qx`ZnIfNAcc7a%)q10d2OW2;5hEb<9Y zxVj2bIjh+BaQiFbtu`&M&%MePyniRld_Jt}% zG;nu1ap2;X0vU6Mn1hxZ2qUImPNZ>7o-V%QihjkN=Kg0B0p*i8AG0@BH5US9O_c7? z)77LyKvDXFX`RY=sV!iDfj)D(FK6f?D2D-=uL?aZ?Q7KC9E}Y2qVr3~${BzV)!&}} zll>#FQ#aYGhl}~Mdu(3;0rxI&$wDDcH>sB1AYle)dIYf0M+gSFd7whr$FutePAejG zg5%tnUO2-R^53{?-!*J(rhqQ1<(5T!GPXfCh*ltu?X(b#x`bLYRDS{QbU_vOz_C1x3HLKPD`2~U-W44XdO4%kkSq* zKWp1JIBl8p2ho%_BXtnJaN1l{O*rf#P>Y%&da=*^Z<^sXW_cl(stBnlee1tG zyMXmjTP)?ox3H%@HA>L$m@VQ98KgS5?=F5j&$#fB7zDr|y6yb%6fc?0|Hd9D+vVGA zwe(TL?Wl?Y>d7ArAB7901Q9ysacMlWr$x+-_H%>}VuV%>pjLuGv8V$JOd&mu-nXhB zt3&E$cLABlIe~hq)Cd5E?%jQjOFu|hZ9~50xr}(Ru(;YmQf?-(4N;s-pX3#g*;Dwi+p!SrW66sthv zF+;$R1R~s_ogxM(RHhT=@lu6ifuN}JnAXPGoee^{AP1!KpxNmH~Ms89%K zk;qc5RMTk#S$M*_t&VYQ+0=yX!N+a82iy!VFwMuA%&freM&>pEtyaU4vjl($WeZ~n zE%X_{ElIpQx(|KzC6g&)4I`$CE~eL)il~7QlgIUD68|&k{_AZVZ9st|>~SKO>?0NF z;#9I^7@b5XBRCTPS7LllOGb15qUcXAuyaH|vJqG*i(<6PO&p5k2v-+<v<+&nml)toSC;G(clo158l*Yq8n`eq3n1=cFC zrvT;V$8TF%s$}eV6%MkQ7m2CR&ChB7kzY&Q=1B%d0hZZOfNDGzHS_$&Q*I`J<*e=h zU}gk~ZR218>&ye3&?2x_n0Mkfd!#RjDvXM#U=|aZk0e>LDYHtNW3DV_B*+77O7a$` zvVc}GFn!bSiE`5lFv#j*qwFd|Uh##Sy@DD`9VQaZl!N!loDk(M0>oLja z-XX(Dp{luZw+}GZ(XZl4>vYwEQ1cEPC$@xU9LRrZk#wCr&)o4PmF}2rjyrT2?o_o% zP-#n^&+HV9Mp)ST;Rf1ULLRuHb^8e}Ku}s_J6MqCOEQVrtyUWu$91-_xE}72y4}v_ zakD452ecTrp5!y85AYdwbE@`{CxG~)JkBU(vy3)EY&;#oS~8xTat`iro73x#_|ExP zQG;f(+%7E9#kZ=qF{e@fq>yke^dNza0dM_w3$=FnIfRdLiMNK3z|l(xJTwyeuTY(2 zAjg>;PTQ0JIWvwQh8C)`a(HlXLfV#pXU5q-JRe{>-hbW7N`W@ok!q&qErC8U|2iti z7M)U#&v6OxCg#?Mf=@XF#)LoLJ*;LLTmXig5*QZ}<>>RfNqNu;`%I4^!d>^2NT&vb z1&lQ(Xd|^VHg7RDSDr7I7(z?yU;A zBL<9>m)OIu|48l*mBlca3Oa*WDNW6Vh$Hi6+&~VJgaA#XZ2XBW$pmSqVqH4QlEd0J z>=R!+yY7rTQ&C67S>He2%p=)SSQM6C|FN_o8{btQv`T*3Q{Ej6 zcUvt(+Nkv)zSQLl-w{*KE`CuhYD}`bpGfoHiJ-z%k~RT#lg{6CKK%zpga&~=Botu8MdTE7g+IN zUJD&=C4ZNyr>fMJcd$+v^VuS#o|=UMs|I2~Mrq3;2o;A6&~0Ax#Dk79om~<|_II8$ zwo(1RbRk$i>aF5~Kg%lemCl5mzJn2o>{H* zwYuH2ukx?N|5oZdcNmtd&UV0V%cHqBZ{%BAHONY{bh8ln7SLLB0*Q--GuqyEP~gbO zIcelT{gCq6ut+T+T|V;>^v)Lks144}Rrb$jms6*_Kx9oL=YyQ8I_+{p}u!S1)o0}BHB2ORt0DIe*cZy2H#pNKV^ zS`Bv;qNLS&_lqyFKt@d9Je=B-c>p0)G2Gd6K3R~LHuLYLv6RN4}*?z6T%HTwWqAlsKjTR7~QTc+c+m9YiB&O z*@04u2rwg6Kg6E(`OQRBH;X?@2sAyhpm7~ zca(|=lUkAG@8(P(-oK5d2pzmtlKwf(_4~_b@~w2aTFrmo)}}sO;1V@&41Xt9C&(-e z0Viw>m&806CP@iM3)_nGAaDcaes9&7@GKoJ7pj|ypwTVK?zf~|+W$riSHhxM+yV1| z2=-bNRCcc@9b%Yl>QfLdclFI$oqN8}$HJ!ecjb0AL(Enk_-&Q_x^{(-xe=RT>HQd4 zkwo$nv1-O;@watv;SFdf>_)^behJb|r{Q6t@}B?27)4~MRnc--E8A?_Bv z1Vj!vxDYFGE0bXg*i^nrqYtRGXG39Z(~58U0Z+?zZZUBE)Od{Ibr)ow7E_fVftbYk z;VqFydg-av2wX?E&=wNe9*7ZHvm%Fe#xO~MjINV2 z#ewP!pS_r|Mrn4Vm^BL;!IAIcU3o6{Y_A6J-t>R<1q1@XKA*TL`~;Fx_or%8X57dQh=_dIgsenhiZNdZoNOZF*_rXzz;I4UEFE zozQ@gtK4zErQV8}xw`zlUI;EOEq~he^FW1@!gs@wQlv_4t=H3{&kn?mG!HOvhz&oV zGI_y^wh<7~r`PT7jhykvHbdoU?{ZWYvH>M)`~~V2kt3toOHTdD8=YJfva>^$&NSx` z^QR>pXKDO~+ixG9N=2pk6`lCfFv&CZY3l5SZ=I;>0NWMHh1F?lP?ONOG`1+zqSiXJ zC$%01$^Vj8HyaDt9)8)<`7km=ysMo#UzfE(CkIH3(Y?S2`^Dga8qss(&-wHR7Q;!t zssvOWH((QrG%z8eiQ>5ooE7?2CPCzaUkM9 zk~bk62dXqQL<6W@>Dp(4i-dK82yw%&cl*Sf^xEM3(qTk$Px10BZ$Rs*I(zbugQ}jE zWewmGiZ2C_fCg1qK%+d&S!}#(9G9_OB;e|E=#$pB;)1(6YS8%ikxm>d3>Q|e;f{CJ zjPdA7!9rPmQ@+7)#JqEkTF9sQC34^|xkWVEcnRWJxX!svENx(FeEe%FOVR4=)7fqjOn`QDJzcE& z_J=}2OQP?1CU*62uuMovne1@*i-c2k;bROpm#sl}26IAYBV5mva%87hDx%q+kF5l= z+f=usMrV;Zz~)?Gwh34pO0pO-GRQLPK%_-(p&;E@5&& zt7c)`bYV?!B3%KkE1v%{o*-p~QNDO%0ys^0Sv;W+CTf4h$zXeHT#EdydUG!neHeCc= z3dBqX-< z?GYaT=CfrU+4G{GfXDeMrLv$hLxuEP)r6OzT|{S@PK#JdK|Dd64HXrO%wrMN#(Da7 zB;wi-2tdCuU>IzG|3imNC$Y)QsmobJ2r7)#G19D842)d++3aC4DQk?CC6zis>K##Y zY7!OR*kAm8rBTWf-dAfI~-Hp|edDQ*e~AEe2^bhJ~9 zhsx^}!vWlAu{-WQvY}a~AC;xM@K5`7UyEn(ak z=PljI!$;QmyOeJb!JFV18PThusPG(=c<^q?RxYAP+7cI4lS!un;87e{n{-3aY^&XD zP})t*X;UyKTbQT~`in6b*VthoLu(D;f0KzlA{#F`9!P~&_^D&N-gV<=m1u%itw)v$ zN8htq)?_pJ*NH-<#Nk*XG!5fX{K~J)VleZ9PIkwJKUp{e0wMi5*Px#K-~x7Bg*st$ zB-Im5okWl|3{&R90(}=39N+4DuJVXf)CC9TB19S(UQ6Ftp@jb?F>`7R;EL!a zxMe*AvvbY)Fu1M9VXkySRP3^Ms_8&E`yrbE_ZC@UoC4EB$c7lexcoSCnqVzx5uhU(x6a3^k-3dv}eZ zb%b9gM*dsjS97=nyxEp~m4niBVEt$!>;(1=S(66LZ8c;A?Wo8?<1?+bhKS$)^1=6{a!9EVr$y+ikUXJA=LqHz}2Xy z+&PbZU3`5*U{pIy(qQo}B{S+e+1-Log53n_6ZZ&uqB(ynODrV~tiQCf*3!OXEL39m zi@rq*2L+>>JLeo|M@2!@wF}7aDX-D#)f8imV-{vIa>J+)_6Ff~ z9Dr!6m1xfAr!ObpcSL9dosv1rfg6Ft@w3O5w2PJ^RqI`oui$y#L$WiQc_ttbFu$8e z-10YiSe$Piy+@IY6d|JMOjc!h5x1!BTctC*S4=F{N_f=PxUqlMyt~CFOM^3;@!AlT z&7v%5dTeed(~S!nB&9n93w7XVw}sTFr;AeXeaYKYX&?t-?yvyU1R=KoK-0#vH`Kz8 zC@XZm>Ncb`s3v}i&+eUR))n|g38PBYf7H07eT~azJKn#Vl(=lQN2jBM;~tPEjqUuW zmj})He{1%Wb3gj`DwlR}R014kaCp#QvQmA}9n@0zBF{CKaUxXRp0pO3M*eVce2xm2 z)2?d;aAm=`N%Oo>H##ssA6?0f_S)0qc09T=3qyHITc4hs9$)EuoShz==%lCpt7cSQ z9GT~1DR_*GP$FiFx$s9j>Mo90CS$hf0t;_=6>3>f1%rP-Sfg{&9Pkb20r_%tE;Ts* z&t%Yy4lY}O=^_-0P)i3?$CBr7K&*BgP8N} zQBg(zgdii{o^BX+B3LdaxkT+R=DAnql0GL}!YHsg?k+kxl?!1nL(CZ!6wBfrH`@~- z&iNG@rJT;6yoN+)^)zyWRK<%I1$zNR%!XpVRMo973f@VV47F2)l8L+Dx$3Hf70HpI ztD5E*DtuZSb@6Znuk?i)v42>UsDm|nSJ%+$^el+BB%lC?wRR8m6+?`f)$nTBynP7Q zr)!t;Ytq|Eek4-5vk_QC7O=s*6A8l5u{1Cligf5Xp*dQxME(d-^rT?O`_O7s1{Zk% zcW`Qq)Hy;YEq$c(mp0kv{Rg=VargQ3}hoF3$>;SvZ(IpuQ+1GG9 z4NwRs8*E_>5Dghb52VI3TivAR7JvrlG7F_Aq61v|8ui}HRtJQnh%lT{_ftkrizG9q zF(Gz%Ca?95755AV?lw!8BHgz*JBtsqS8w>E2!PUim2V^yvzP?wY|F}}zZ@PdBFfm! zgf+Jwp&_b%k~AWiXm?^_!)#GfzSnIPi;0N_*j$2vgU%9blu^QXleP{1oT1RlP(!&n zr)d$sANCo$M!y)R!k4RsIiyU`l{cx|;XnmsL_EHL-r=`mQdrr@-{~`}E5V9cd>-e| zG(~~l0+wtg1G%OP4f{%km-?#2ZLQ?lj{in}se=c0IxXbQb)clc62@a}$L<2xym6qX zULRqjfOS}ib#om|X)y0h8Gr(_HvT#k!OR*MXbPr@lKb))1_+~%`O=2GFxRRF zX8n)4d8|fx9f7JDo%DX&s=ZE@&!&dj-KUFoT!_;z@p2(N+XGcb*N#3IRZQ4)nDPX; z$3{BPI!w)$@&y)7VJ+0(FylGZ&0H&BWEZly9w?R(B^*4q(p4&`>UrI%R>>kzk_6{F z7x}Hn2=#K*V!8_mFi0`tX}MmE9WjfWMt`P@sH0$N;;9yam-se;lA|$brO{wT*A@mV z`OZeDj;!H%VvBJ4spr{38V037bwQSrPKQsRODf6h5{WG;CI$$4>w@EaIBT2p!JOKg zBQB2F06{aj`iXUCU$;oVz&C@r6Aaf2b+$08=i82|gytA7aL`42cl6v#k=H$L6Y;t^ zclhfs#3glvuy*Nx*?k6y1>eRdC=$o0{2`?}b4ic^h9{=swoqj1;U#DesMIr8;Bb9i zbasg&tKv_b^{S#k|8!wZ{2i46a6~8{D!H{B{>Qh-&M^Sz%V#7l#}@S8p8AEG{Q3?i z8Gc$SWI7J33UGYh(05cW)K{aT@84&d2DKaj7%M3UY_b}O_XOd+u1d0eeL-@q38^a; zqPH1I#7A`yd)p-8sz$1t^fi(y1nR_5lxPv@s}k{a4k|@ZPzeL{&(w%bQQNYNH2U~M z<#!NC1rNT~YJLZ&jl~dWgfn-DMP83Tqi(3_*1=qiqM28DD`f0g`Ga^~a93{RR%1qg zF;NvW!Z-s55~_z5Ggq@klx-)pjcShyC4m1@WUln~|f);PA z>voa@^?YSxBw@Kiof7NW8#6){b z9Dz|odY(-rbp?Ce&T3@Uk!u;|g)oaK&w0G_yCL>0#??d^3+&m>>CO0-pD4vx5ZM)* z)g)of{3ql@nO!67OXwxk!1b;11&2ToXpBrOA%(G`bYqz);Bk1rMft@>wH@cBE}-1s zvO*_XB(7yEyCicwc6Ar@dp#aC>N8!YvKX-k0X9+_jFY*{UVBAfcK|~VegSNt3X`oW z**N|kU#Gdvx$VQ6$tlEa2<6slRLo(b zGQ>zjD8ROwTg-SAkR(BlIm6NyDZF8fp0b*68IogAFBId!q6OBJ_;__-y_4AR4)q=EjiL%L6;E``i(Pui<<`{bq4yZKsEd$GT3IL0eI(o zu(RP@5H*bWSNbJ}KMN(M=oAXty@fxeOW2J-PrQ|-ShPGcwh?3&!bhgO;8Z`#iy5SHObgdSwkw4S=eAbDn?Bch4<>-pA zYp6faGbgx4SM7Z$UfY#ru>7D2r!WDu1EU3;Jti3`8fU?z z(K{{g?U9V`P=j3+J$8*VG`5)f+tLbq2F9cw&@#@J^dq=BmXx%>$J^$Y({9NB36(GG=>NXno@JmI@18Q5!)B3me{U*^#SD>;o)1maK%{ zlsu0eM9vd^I5-&T_;MoEWg@bQCuFQ+nVcv}6cJ@a6+8ysgG1_}CkTR|t0OZ^iK;bo zr46n#i7RvM%JWC^Sr;LrOL7b@{$^NAc#VxhfifG&>T33*exFAtL|=(sHY>RUK?t(; zE_F{yHb?J9K9ACEa)!a*uf^)sp{RWLT5q_ zzH+8rCybYd+2=JYqH#9Q3h6oOx>pc6`O5(gaCqz2EUqwjaoI8n89~4(DNM=9{kLS9 zGI>hLK7m}O#hy+8a@}x^et+bB!IBnWgCTpL{kc|Gfm@69wMqra1C?L(xzL8O1s-5u z6Ph;bGs>-Pyh-t_!i12zxHnE*jRMDi&74v#Ji;uYFTa=Yic(suk!TuQnAo*QBoRTR zUFu?{9J>c&UP}QxA<{ ze#S-{5;eD!LPf+`T?YqJ-+qiUC-Jv`Gg&SxTqt+13$>OI;a&nF(vw^$p0#3rj<~M? zFF?@0gFUj4KoSy0$&m9|7m)7UhJGr`HyGhd&15mG{b#$_D*pjc29TFm@hp1m_di;k zX0fgf$(JgqR4ue1ZE3T4Ecyiq`9^bjw{VB4g7&J}#d}a>9NN*~buJKXdtofDm{Y4lM2_us{r{1|XmO>e12S zpwG{u8Mm6xZp2nCci#P)q8yKTef2I`FUh<#x^p3~gM0E9n1!&4Cpf$~mqO8DNpGl7 zFvhI(+&r{0n5ap-s*0c5qL}dsJy^re68VtBG!Go5`SGD8UKAXn-%j)mDXn=JR?IO# zK5-&JbfC_Kqof4>C^@>A`UVX~5-$c7!+@~zM|-`wu_rgXKFps2!PF9RH0S9bu2LwO zFB${YX!{Sdx}DPYJyGuB!c{1mft5WOBa1XqAlDEd6%3`49tS6pP-L~)rpM5ihZ_Xa z!^EAZCXuK{Wj}U{elC&=fKb~BM@Xc0R*%a^nM-U8FH)+2lpWyqT*9$m$Yl8v1u~-c zzRLF8!#SgyrxpZ6S14vC_5)HK3u}P!$&uV@>Cx+iS(cgMlnVLjj{W(WC)`M2q-=IaA*ZiwS+=v)h1~- z!e?i~AE=W6q@rQ4hNocO9pxEL0IWye7*c}n9muS`Y*PBT-6V8ko0l-wS1O)C zJS=?2u!R%A!NGG9Q!{?3#7R3lgxIK{z)}q;G{GNl(Qr0vqGAp#N}^5lsX!l;HSu79 ze^=>V)UwC6Ot@v>MLJSemoZSS!Q4@6_p|2g?}nsOyD6+no<@BOoTm z&5{CMe{P49li-M0f~;T{*ubGKd*iLzl+%42r4bG93mfAYt9gkOK|0Qs=59oL!Ag!d zT!q>=)_eKYdiDW>bJ>H|qHlSa@8e>%I%}9ORLjubt@}Nn4Dxp4Y++_Cdt-Rh0uzyx zqe(?Bk;Huqi2&+3dy+r-`cNKEiZ&V-E+(Rg|2faexP!KU2E(1k zH$Y`JQk%YZH<+g`(t*~p!`u@3Azkwa()V=%)q$F=dHQ<{NVf)&^PB70KGXv z?adW%XHGD~33WE+`r~ty%lyDYu+Xvj;s0eo8iFg3pfe=&Z!2yE?Tb*wLA_ZBK9~hof2QhxsQ_ldvp3 znMY{;#V~eDa0CSzLLoNi=v3Dl(+6WoX*`Jg*T);3URa_L`kyT}B6Uu>svL>6vi(g& zD9aS!RarD*dSA}Nx4iw|*<}t3OjOF(AMVnkAaJV~pJywDpb&6q0hDWuo|}eB4a|!S zE0JH>6o7c9%Qm@S1|R*xWojh2M3zU0*EKJ#{k)S2tb)(wtQBg2;v3i#h$smT1KI|n zwo5l5VQ|7Wv6A4@MuWtnpH;M%bYZ0;bp`-^0^@9>8|}+Wy{;5>U$=|jMc&5siOili z#}Nr>NLBb^rUz|K`XOPkAW&;PAPJrvsk_7|d%%edMn)QaJ5p`Z&rE>OZ>6=9HI=F8 zKeIvU$n7V3lz-(ma*b@#q|?W7hmr&01@+d-F$rg7?WvR=(~Xyy3p;*%BtKgi}#uEzW~6+>wS* z%OsVlU`ow^HE+ad7EbBsVV82=HIcSywo$2g@=c=Q!b^3cU$W399@uu?c|9)QzJh4> zepE}NYnRzja_|iO(r3oLdAf*1`LEGED8cvxSXznU6N@4&b6fjMyDr?3qhd6F8qwM& zy9FY##kRDsAbZe=K?qlo8lbgx3n-6f8p*temq0&`7wgCPs7(=LWMOLiQu%~%)SaP9 zXDm-}0k>p}UrX=%CVm3tl}}{Rgtq~0Syuax)&5MAWn>$aL@%?5=xGk zb^-|Ulc^DN1zZVIIfMhb`yV-N`XpfWP~>2$yUOZ0U)!JBx4hZ(M60tGrM3pptsazM zS`BkTGexp}eG_r~1E-h~3mdui#)zp~Y9+9};o#9O{s-f*pbR)HTi0ge^9iboZSx7U z43TntbFl{RobG4KL%S#B#5TURxn7Vjp|eDTdpkmAZj$|xJ(r$RA^0l&u=uRdV0$4B zK&OjfxfM57Hzfk2l~T)P16KvlvcS*p@gfiP-QXN|%1wlm<*08sUu@_iTMtA^q704| zmAdp!ISwZn2{on9^yrrAHP((&jjwc<+s7J6Ss9W%mkoi{44^%Do=G+CUdX8*Y$A~aUw9+BrB3XfeT0{b~u0ieuX zx^qa!kZyvl4Bn2#B<5L0tn5oaJ;5gPI1h9IG+^d)S##onY*G2&RZj?k7BXLV8{*)* z+^=K#F<10MF<5L?9hJ@P$6StB2h~E-BT8E9H8Sfia?;`OtF3Sj&>N$nLslw=E>cz< zQ2O{K5Lam%+++(0(o^Q|g(RhDi##{TzLqPn8e|-i5!X#S^D$F7$vsz_&1GpQUR%a{ z%X!()V@{wk57)XXLIev+?CXaHn9vxlDy!!hJ)KW=|vr8!0YNN=9J zey%$LP~awA(Xbs#25MWvUPH>1Djl^F0WGQ;F!D60&+=2p>NlUf4B5q`0PB?{&Fre% z|2RU4Guy&si5ODSq}c`opuc|Vb3)Mrb~Z=r&A!8_dE25qsuGcb2oz03Ru?Tj5?xcm z;4lN(GnHvDc&5#YY-AI2bSmU{V3bh%yYaD2Rn*EEn#F*8btQ%2Sb$jEy9tQ?WQ>=} zxdW9503%8>66@Ru*`gE~HW7+)qEwSnb|E`wfv-^1=dfBk2@uF&NCG{^QcPBoiWF1i zo;-!&Udh=RN{F*l>>)EM*i#)esN12b85%LsT`HP~#C%dNiMw}tRGgLz2}CR;STs{M z_yK1IhmA!LKn4NH(9)(kuMk#H;@sb67#4^1PUUP_Kh{0tYZg7sUl-;Pz?(4I4EFL% zwB)eF+4=>zx{0m$g~5t7ll_(%5E8DR{;C5?*$mg*;BQn881(?jdHo8vxjPUzo|e*q z6hD^lxq41zxLxYgLs6CT7et^%%n?5a`OubyT7ID%@_HiTSvOiQ1KT0N;DJI4X}fck zQZ~AVSW@-ckd6S)FhLyV4`31y?yu5Av6P}7mGO(Q3igtF z$uXop%;TlJ@(q~6xTGUS3|;2vAo3!8X{@|~jJ9Z5PMoh_-@;#?L54ylg>N6+n47`? zInLogwl8<$>S~w#hQx2R(6LSQRnq< z_^DWP{6+o(q31?CoJ~1>*DA%*w%e&JpN53OF8Kn`Z5#?AQzED-OQa8I2JB`L{hgbaPijK? zGIr<oF$;JWnraC!Tt*jErWQem7rPQ-YBt^vRQB*7*D8tvtbq$?#>z$9!>`1 z+C2Y*Ek)O3geC-bBDXAhqW)y9wCw$aEatF~_&R&$P68_2{$N{|g8`60wklAXLjy_Q zoJ~WWEUrS;wwr3wjxStfhp21d96cy#m?&RM>6Bj-Jp(tQ0pvK??F4}zl-4JV8WDU$ z`z?}WiauH`JIUxUx~u7)(hFs0N(qyIb&3+9MY5t66#FUM2yj_ozK4!g7E@NGA3`ku z&E=6eB>{CIiV6$N-xP=Rzt}OY2h!b`IMc1(0ChsaOl8H|-A7+|%}9*&QYwy1ECXo+ zkcYItxT4{Vla|lYt;O@4@3`j^y^gNfln6k{NlbBF)AC@FQKUg4&@;4+v6QFeYPZ#K zZ%Md;?+yyB(V<0izLBpzF8T;Sq>g4A5oZ`a^CBr#i6?^0y{2Ga=vo{-33<3%iVQLn1y+zcHX=dz|Lp^^cT zfRzi%;6#|jgG0vfJyevaQfzrhV-!c#o}2F;4dg2v!xKC;wB2Q3a3>!dMYMSR@*{nm z2uQi+7`5Lk@!#Emdm}ypJx}U!SP>qkUQkd$=9hCX=W_L}0pucw-yrVB8$_MaEUE(7 zb>$t)FGT80R=@ZueGHqt?yoy32Si+-Xg_`PelfLu`e)o}ZZND78% zI@uILJh0@hvQ!AH=eI>)X-eX1giNLNo6Kul5+%K=(9kOd-6xq*qPrTpu!oqYE>+5~ zG2@CQ3e=viok!HhgM3${MjdC~<3ivQV4*aPBPW%z?g=&BWuR{AhGBbj{6bDZ);-)Qy;rtl)$S-7b zQndjD>hB#^>HnZ8-jweezxiOrwl9VvU|cR1m?JE)gpZgsXFdH&##Lon>3*`q<)rfv zb6+?Z0s)Ue|AMd&TpY`Op`Iy}G*%f8zZKI!JYfF@_;v%8iXqNsj5pY_P;@E_VVWmi zepl3(g=S?(D~k}D?p)-oS_)*Wp7&G7E+AR!au!4|F7f&8dp4e6UtwFqFlfSkq7ZO< zBe@M-9=uaCd@7n;+5ZjYNE-~!t{vm{94EU!i2;bU;qv{Fk%Acd| z*7jrIEjtH;p0HIm+eq5RCaFvzW`Q8nfmf{;PAQ9*r;`v1A&DC*G?e(8xHU^JutCk! z6O}=YqOh=*s#0ESabQgVITWPzTw<>i&6Enr0)kRz>qchNn2+IbP=`Kp>OQhH%x}M0 zH4MAyfq8#B-XoMlVw#wI4Dz8wfq=9&2g=Mx`Ab>1dB5#t92Nr+^FNik85v?(HD0ws z1)F#+AMmJ1t7ysPs6*~3%5LEqh>!RTCR5NQ`WSFM%>^c6{-#xnHdUfdv^WY2vBe|l z7G$L;(S2wm-SqLp!a{4C!?56jQUsy`trCgF6i+ggGagC&CDO-}UDKy(Ize_OM|jw9 zV-<^pF9P9d1Q6}xQkb1bSwH`oEy?D(arRf}k`-Agx`ml}XS#r8)LdzJznIKz^a@+E zi+jG+G&=S2{^m?v<|#>(QGF2zAm9QST8=>i690`z|+UdICx) z^u#p2jo&vd`$Lk6WL3e={W<`7e8OxFICg!Aj0HlheIqQ4dB?hnPpqbKUt?tmvNit4 zjEbBh%UTd_x8?LT%4SWgn$JUDT_tt$#u=4BfguZ6v&vrjU zUjZxzJ%tIEj{CVqpN=4eQ#lDWLb21+Yh@j5cff=I)xC6y*cm5wCu^Xry$_P4rziX{ zE&F0|V>?0KQnfv|i^Cqu(;al88oR)8-wRC8H`C}rvVTWfj~Tl_52pi#z7Rp01@)4fR(BQr-S zIu_1zqzu_)(LAaz#j}{BeH@b`h*P^3wdJM1 zuo5B_Fa1rxzz<;K2Mx)z7~b z{3QQ7)SQ#{2TE1W@d1ly+`v0N9*j`gGjJov{M?OBPgwDDY1VacJ~%o(*=wa#=KQFv z4_j2gpgLv@kel}M;Pm2ru-BfnqY}@VA5<6SFJq$6lt<^MgVHS3+z_QTdYf_Ep4rF5{*LuL{GPr>O(_|wp1 zb%;og$Kv|HY9B+ph%XSbn1QSY>H{7U!xpw&6neA|=(gkxO}k>~Nl6>m7b-6~o}?5T z&t;I!2%@z5o;@2X_!T`?fv9=#@p~T2m#sQ%IsO#|OMH@=10uZ-dTDJ`;>xx%A^A$Z z5XUK|mz4vdvw}zY%;Fb(unJ~}qlG(g+H077GbXZyKeQ-rtY9*J*|_NOg;=f(HN;qk zFH%DaIrhG)s%a7b!<-Vs(XeJh);!?`E)Zs#3i&!#(D>J|(YnE8ss#iWb)w9dxr9y2 zI)wHbCQ%jdWJ}LZ^5)S>PAio{H(`^mH&E?ZAJTi{oZXO5#ecm*{pzpgj?PcrBcR4a z7Pd(9+jt|s%G`@yzNHmM(bM`xthgbvY$Y1S>QvS@#uNIm5jxw?h|Mb#O-;j|7f%o* z6E6?*KVPIpWu*|OrpXRPC(?wMu?pr;SpA(oc`VO>5yLpC+8l&vr?}5_@t6-zH^)av z)s?TYLcLbPPiVA|#I|jvHZE&4Ld4QyPmQ@igVM=QYOGf_Lxq+Ij)S&M;O2gWJ8;#u z6KL7qI1+ms*TXwQ9bI5Aej^JIz{YUnm2Oz`frSiXFx85_z1uI*OO3BWlOgUFm7prN zZ9&Ne-WububHNxv=KC;B7Hn5d5;N_f~=cZJIs)dNgs}JLetSRN4=) zlG}vm_iM|xrn-mZUqejNT$<0clWGHLzDNm+QwC$2;-8_!Xos9>+%$1#b}<;5xhs~G zL2UwFftFDq+s_6z{_dnG?de#nUOw-11>?xvtHwa*Q~Z;V*iOv)2Sc z2;>bx776O3xz**zc|F-!7>#7jHvws)mzcH`4Y6FP3x_S86AzGSoj1Euewx=yYyZWH zehEPK##>mqIzhFA!*q77Gzl7EJyDY%Kv2gk=&P#wl}D!Q5DRkd1F)PpaqG?ORwdEpAzR6`lxB|>4OoofVoJy1^iTo#gY5zlrt@HHR&bQq&w+}a>H+6x_m5k zcOJ*rB(i%(%OygQ;@I3lKPc0xtpD`0KxH%}alPvFbBhHMxh(oVGshTA@)GRpC97aJ z($_;ZtexZwWN>*o!T6WvawKj!+*b4w)CL3>o25Y2sj4r&j4|8c<^9l_n=+i8(zl1T zPH~C(dqn$E(dVG^-i9sH;8P)Gk}xGGoj5X8@F#Mekw|fl`$ju}DnL1?p^Oo({ey$y z_Cs?7aIMi;!jjc4d*5pyE{eGu>=1SrVqV-N{BkDB(^g1HMb{aYfBzM;nK(WWI5lhZ zKo7JMGC<4bb3Y^6@i}gX{qden{8>AwrqxEr~hC>af4#S~F+(?i#dZjA&jfefjIgW?na*7`m)G)htoBpWUL5 zj9d*wjjM~nD|Rho%0%Y}Rx4^-o0k(*VbE5|A(OSJQd`s|3T6cIq9BHpV}a-eB3XYi zp9y+#tID6gh5}}zE`WMtxp5UQ@hJdXsQ^n;U1SnLTt^`i*s^5Z3IiT+@GN35Hlh@{ zYLo`n)`mm$XSZ&~y^!$CHb^|*fc&p9moZ5`>X$jfK$yz1#1agFgsjGIYZ%fOhUc3NoaL0CBYh000}!WT&KO(5H6^!P3bD-%5|B2bB&g%U#C z=4I!#8-}ATQZ`#0Unpq9poF2avmuGTSv!$#`~*v7sTsjY@OtiTD=?*AEj=fY zwu^piqM1==cZBCAEVLSC4r-{{C_BSetz$=aj<<8v)LZ1i(#PMN;hC7b?1LbT93)l; zbnK)9dVUGZ-Yq#+2;z%DUT;obr>eK#PD0}h$)H4!dpjjGXX9jyUqQ8i+gQC7&FFa$ zZL9%9yO5lW{Tenm-}Cc5mK{L`5MzH5wkSjuq{^2zU1qrJ3gdnjn@E6 zr(XVRW~7@=>RHXFW}9rZZAsGz0T=iDD^C-LklMKP?ybseVQ*8k=~0H@#oLL0VSyh? zC%d~T@3pf&#@`lHV)8kLF;Eu4LVfHi%%!>)FlKu$ej{|%1gHmcF*eE&xi7{5b1Bf) ztoTsj4QlDgl9ey*_{g!G|0yPDNQyx8{-gDw50U|W`5oaz@glfe^#~`&@qy+7hT>fn1q6CU z*Q6w14n$;EWtI*mz#(P#qUh^WyYddI-x9SSojCsq{Tz#PUt2V1i;sWtu~Kv!$mBA$+n&(pY%$=hQ!;H|EbahK@eiqlOmMRFo0umYo)cpE3BR6H<5HH-9 zZ`OzTGKh9PfBw|kSyMR1DTqFKOa|i&E~CvM19Su)a+#g(=>9Og;ZJNOsmHm_j&v(g zMNcq+U}6)obOWowJTc zXSlj!(baDXiG)(fQZ~y61VuO`r<@=}#DE>R9Xwj5Ybv-Mw4N|0Ng(%f_ycD4b0aUF zQIG(FU$#X;Dt~NkXeGLySXRUsiiH^@qxpf7g6cO_xysk@Fm{7ACC#Q9Z57~LTfy1< zp|%|B&W-!Xz<({&LAPJ&0dkFzHr``HWmSrND1{ElpVb0op#>Zxxgn>;(9?h{z#Z5a z(TF1EwgaqGQb4Ny?)v9q z{8KcX!0ji7AY?VaAnFA45o{STOxtbPNF1boG?kwh(!QlK)MWvm{=!ii7Oj%t|M5Bg z^81ix7e|mnld*U;r3c4w&ZWE=RXUr-%DakqDbqFa8t5(Oa~jb;B?g<2=%Ui%|LNPp zwkFz5%1H?@4HF+HIlL>hEwRX_*pG*LM_-smEJEO7_v4yz=FHQkK^bO0jbm!D5^%f> zsdX};_70mjj2cmLRB3{vXre$KL^LFC@+xU_tctRXcfQhSct=zlb5L+Sz@qWvoOTnr z0M0ZGFK+WI;%G=%geO!#VlW|@%KsF_hg>#YrcyA2HHE#Q=XuIaAa;QFXxQ$4)R)2& z*+H(93Hr8`5ypK&HIxf*0jJJ>9Q2rIIB%J~bX8~!{Y9V(JVlzAb(AdF;@C2Tgo(}8 zqDPY864-}o7h5{O*Y9nsh)>vO2R|FP4TT+L9Lj59a0WOD1Bv@!u#{Oeif53thY#BW zz*MS`gaYDM0ENeqr6cSpP=Y%5XCB_eK{2Lc9!HxQb-@J9VfoBwk-sHpe!%8;m0$?5 z4x8P{R)lRkFv|Fkc1as%Wj z<&vWRQHM2p4&LwpY!zp7+n$^qEfAy1Hd|u?z?h|F!C6#gwF7aFqE2?8Byux00*l5l z`UQMK?N5d2YP4Ov&fmJB{`&>|^y(X_+bj^a3CrthL-aCtSuSm+@}dt7OZ=OJY5qMq zc#i)8A)xvr(7gjcRdBr8>iZvSWkR2b;rmP$X6_6q^_nfMsNo5-;hk-GPo!pJS*>3e zYOu~iu50fGVZb4cN)BUbtf6);IzZ@{Jhn-Je&+>}2nl0+)g3ZwqIarKH$du;`3=SK zx?gI8h<`pwz8fw(nE;ShFl)^o5PFO1&Ho7QfaHZ&EQLwO@@j?xpT{!FMNfuc=Fru= zF4V1rXF#R|mtey6sV5-7)u<6k-aGu9F&7(s-Pv}eURGgyA6jD&7*)r>6rBTD-4 z;c1~TDMf6dd=nfWhruVRv>M8^g2pGnTx%(=++kY|>Qpep6X*R57dOfzEn}qPV#Y=x zS_p5KFao|=j*a40)d2{f6?@hD?9~GZ1DFKFjiUH?HexE{rLeVF>yZC3VCSrMU@kDn(9@OTNzR+gnpuRe^Wj3B0`C4Z4{7 z9;qb3Lt&UcN0*AUCQ?J|J|VzyERxMw6#qb0DP^`@2(o7br{JIAw2h@twfjLYH0I#E zD21}h{(PpMF%}o5DwxgR(2Y<7JSn4Dd2gm|unbNU>8#?4;^|M9`hZk4isXlHLo{2g z1|R`BYJx)H!ul0b_%?@a%ASk|I#vaVeqR?*PqHF?;vPY6N7XeHpHx4K;9@HSZtvwU zgHNb>szt_&9Z&~Jz9#E5qWWkDN0Ev4tCLmS|NdROE>CRCB+5@jb4sk*7t)|mg`X|c zb87je66^)-Mh|pRZup8YtwFVleXc%G*9=693s&7z9OF-1z9@FCSaHu@`g*P{Xv;^# zB?lSV`5LXIGc3Rt+T+L%8aL53E_*9~qS;Ym!H;b1Z)7}m=|PO;5d@3k0T84H3`Grs z^R)PZlE|qS)Wo8a>?U18JPmmAK@vafE8%bm(V{fH_vu$yHb~9&Em3HUYZdp0C`-futBL5071uIdy5xZZf5i2)qs$!SYn{;7A`c|P*+6!_;@ObOq6u9H-qW1%?3z6xT$|ru z*wW%<%3)F(!4X9W7Tr_fu0OeDQxgR~iqUeL22-mzt1og>+tI^D3}I0P7WJ>?NSky| zZ72*PPE>Xwd@_Ox$z;iH{RmO(x?z=4muM-A>wnz9PY>nTc&u*p_pU6Co(LD`xSs{t zJmlB|r$YM50YH>wB>!?msTx6{q^Tv&ff5>y!@@vh0_~6n5S#T-Gr{_tR>T+agUJm# zA)1xz?#KL&9J6E%;wOa^Y1T^Dpjt~1LBnJGuvc*M!5GKupePFVy*U~1TYHE%35vc^ zuBva{DJCg=BMk{S8s_V8PRTkW{Gjm8EsDGpH%ac%PFn8WbnQg3tpZe2%p*uHyO8NK zk~>1JlHF7;VT1se+TZau%-e#bSpHL`=Re69x?2IrEa&-7QwCrYIA2=k9cwg>t^e)B zLvm_MRvC|-0b5X=2qiYm`KXD3p z{pM(Y4#}`4{gA)btyNDd3yq6t<14I>4lV7{jQfkre&MHoAej99e|YIgc-@feA7Fs! zDjU5w@%gIn5Ym=nePMjM-StAI2haX5WZSrv4h^a7R1T~I+$>McM*^LY$$jS*;XKw7+YYkE}JNSij6qOf1I;N8G82YB!ChleP!~V zt2tMWQdxWj=J;S~!-^!tc7a8nFayWP!z)|^?NpxO@t*B+&llwAx#88y=W}3sk{((; z0gjX8FG~fZNy6p}w9oS=!jwcQWl1~a9o~?|p$XB*0^ANZE~Ry}J?vx!R`^NU54IE2 zu#QN;ZAidha)q&v4#B)#^Ge>8D~wTg$l1L;3t?!f@nIqa?}Zo{0FGZ5l9wQ;d8PXf z(NsHIc*H#+yHe7NvZSibN?grVURm%+eZIa8-6)C^)urr6@`W4e3NgsaTb6jguXJ@W z2Ck$g12MAygD8HU<&lSlt4OkMwfTUBLf+rI_!9JqkpeXbi$dg~qTN>Gn)iSYh{zQi zKp}{o?8`@ND*PxX_($HsC3CVrqx+{A=P&LJl#oDicqdz70;>g@m|l|HRuJuR&X{ar zbRV86s4TKT2ux!mtrsQH+{%1T55yJ?;{hqBJ^QbOsR*El!%LKd={NUh8)&^Kq%8$p zs|o>j1M`if(lJbmhnWc6R5GdNiKwWTkh+3};<7(ZH zMNi_K102(;xgK-7u6N)K*jA{mKfV&uJS#N?mZ?of)8;Us~Z@FawxnG96h1)0RIB(5K+{Rciq zv0q83So$uIt#zi-iV!(awh*gq6Tu=;iQX2|4=H$8U+AHr}Sl9Ycu3`0us*)r=*pZ(IIgNc$dZKONLY5D=wtBqOf>bz`eMPc}cnuuJ zXT$-^+pGte{490*WA4bb{#GB`sNNkB`eL+&@@U&>#C9_Q)@2IRCQ}I;;8_|;zuF25 zA94$Jtg9E`sRWd%dOB7hq~|TQ~-3mwyDxPA-$gnRHIMl|Ob10TyPf zG0!O5c|5V8IeD=i4wYA6E3;O}zissy7!Sk2QBmk%R*s<+sAF6j=rL4xH+0*eWI_Zy zFvtx%EScBeBKwSAZdkSIAx;qcvvlc1`^5+$CF@I(cta6q0;ckd=L3(nGal%~0>kZ% z`;#Bs$-i7rDj}WZwSCd4LTeq7THk*U5u-vC(TcGr#NX;D;36?s*vKJ$93Wzr&fFcI zg{-+w&aiDP&nEu2Zz)J_LhmuvRnh^8EV8gFIZ;XbLOC{4oH|b;38HFbs?xKB`eQQ) zWSGDqx^a#EVhtbB1=PJ`PeXMM>o}>Pg$TS0c4g24%#vvKhf^t>F9lE9;xgE+h0lPm z+4f3G*wg}d8KV?QE7s;lyBxEIk^(_=!A8&OYN~xqK+=~fKizoSSYW>rc71t|Y;?qZ zVxf6Oq2P3Ep|l%a5&Kk1pr8W)6%enwRqm@Ds##4Z$HG<~6Y)l^P0~IPL zw#+ZKh!~RSE$onBFjMp;7q!Cvat6eq1#Gz$WfHJ>tzArOZc@B1^UQ1m)G2Q95ZLE# z@>uP`WZuG)pu0-iM`#U9gFmzT=4_0K{y-jCH$#!oI6ypSta8|suW{-{3AwW<+iXP+ z52BX!Sq`bnt3u0bb2WoR>TM#PDI$x(d0+XV()V>&a?pH5pQ7ajgkJ%&HrsKrKu2Gu zp2u6W7(bmEvW5riVxus=3x*MC#(z0C@($O535E&a4j7rTEAV)SX?VpnPnGC9Zv5L=(YU(dJ-|I{L?~#TVN{1^NYfYohL=@uO`rYI6y`*R0#Fm7>IJfg$Zqe zD3wfN0|(mmnZDLdsD)eUAvoRR8NP>xPB;=!G+)`w!nlh(40na5WO_ErE}!WVkdc)F zgItK2K5Z~uTBx&4aOIm^BDb$~PiuCnVl$!=KI`&F1}PtxTlEpg&tpJDbAu-HvZ|iOiA0H zv?Rf$=FnWr##p&k4Ka}xBYny}he(KO)V0(lqTF#l{cpaA|hX`9JBkK>E<} zPG=_YE2yAnE&wv3&d>LB(U|9Mi*CUm751txVY zmtuObkbC{ocsx=mflW(vn;GYAM5wdE$9yZRPKCctQN%?1z7qmq^KRmtOy#OxWj~hZ z*vxJS$>=0=#zqy5Ee)?+PLQ8!wsSKQ15L&G-Hoh+(+prDvr6e~^+qU*IqyHi_V>DF zVLbPnyf7PkLx!2UFTeAprw{d8@gB&A<)e~U5UL<{W!0=LWBZ3VzSfT06o-pi_Bpty zTKw|}8#7!A3$6N#h2^9-@;8qBoGp?!#f3H6`osE6F=wc?TD#$PVM`b|Q%Yg=J%Z~L zN0gC722AY5EGFxSNP!eOWSTu>Njr@5y(dNA^i>DxG6y^3*z5oy)_rx8hgLzTzql{Z zxSD+s?wTNI;bd5)kjjZj{Ap7*o`F6m-2REH;naDPSc8C1;0)ElXPGzj5{&IKI?N!s zeUuJEM^X@ky?WRvo(t$Zf~|@2JtvP6>4P1@MUU9fI-AgWnc3eav`N%2W8L?<{0CBP z_#bsYeqZ}v18Fo&)CS-ULzaau|0Y1L1=@_zu;al`xZzgGJ!4{FS};y0y$rA9f* zpgFy$j@p3~?ChV8#tZxAW`MXkzQD}~%i|kmEHVab{zgHJE!T0KaIk;XjLer0>cO5_ z+!>08v_|LsM(8>~t~ogzn2)8>=f{5A9-R;N%gfgMrx6SttX>O)`nn?4^O#2#|6|m$ zzQ{b9AUlsY2OB>Q&d&$$gV-624vx>|fv7HeaymM`I4TGG7uC7U&Ej?sN^_6BQEN5; zg+Tl5!Dw*$<7Duoyb?&D$?UKn2l$e)JW85?Fk6jPx>sviimJq&Uey(gHMsv^$P0Dl<8 z=|A^jMnhruQy%?Yq{W!4599`9+ExTJlr@B<3sH-{AS24rJi^v2(0D5>1eM<;K&oS> zQfmd|pB?xgw2$vtEAX7p!s|vylgW6s|8*9BUDE6EF*+Y8Po+~9NeaOERlBbyDu|6< zGzf_Q0!_dtKgQLz#?EYT>8PaP$Ry|IqAZaeJdHe$7InvZU$dl#_#+%O7DGAAtK8Bk zFIX6@f~+#GhWAwv+OpmXP&`#LyPX*!c?Yp$m>znDFr{T8D1N_E$?n5GCp@&3Q1$Mj zd?E4i%>?S8>S0M+fYB}#ma4kr893fziDx{f+BhfJ6x;I`+o z02;z}T5orspm9(E@kgbu&L1v9PsNj%xFpigzx4&Qb4zOx5Ymkh z&3BF33zzL=&daA@Zg`{h!=3Dxc_TVK4W2JxRC6bq<{&O9m3MwMPj*(v&?Tk?tZT7{ z=9c-w%7A!sE+u4H$lXB08AyuhLn{7e=}r?0{}y;IgMIo&<~FHL=q%lJ#)_ zOl|cxkAS~o zc5CzuA70B7di0+}|5+;&_HWEbKN4BP)FCU{4XrWlVYtzTcsZQ_q^lnN$?qBJGy(Oix2Kk4%6CjeH4^qp-5%-Kvb&}!QwW* z0I3SMLC6cD-P+xBQ{ZyaM-O;(73Tgh(FPbjTI86xV80R3v+D@WP**n~gt3fBCZ1q( z*xO$zKnWp)A4-2ho$6vuOL7~`~>teb04t>4#9+~&fzhn2f zfc{hNX0NS$qSH@I3XnDB-~GgR0y z$BF(!x4y_9u;8{n6lq}1B~H9AC*gwxfXq^0THc28sLXvLD z8N126HrGM$KQ^jqqdgiO`UFr*$mBjwgi6Sos%&3RP9=qlhVUAGV#giCX z-Cd#m1*q<6aq>y-L3=RS&Hs_>Q{CVOV~T`Op<%wRXlx1b85vQXaK5(IH-d}OB*+hg zLcn*blea}bC6Eyxvu(!sq3{NUF@WVOTnXrf8A=OHTqzUbKv)jPVs@5bdhB}jb-!_< z){elkn_bJBwBK(qn3D{!**V=&D%D+K1*u|&gaJXhnJXfW<-k&S@Roy7*C8D9$Nky3 zBB9uMiBAksjq*J_zExS3guf>}g2sHFV$h&MGK{Ag%6>@i{#_v!>7bgO$5GIpM%aN{ z-{rG%Cn9v<4d~%_KW)f1eP@@pg2rO*2X;R>z;(a|5a3(zE#_TO5y>|lj{#xszIvjHAV05;1k&hB0Vj1Rghq?DYm$}Bkg})lvSJOz{m0>bZ5k3es_H` zmyPoj`nl=;PnY==d8Oeglz3tfSrl9f(M$K`9XU&>^IV3cZ-*~Q zaI~8j!qr?>-b7182JN2b<8q7jvF;uZcIALifj8hv<2{~E>hdj%++TV#6xOc2D~M&# zWp54y>(paY3)<(;kTaAtL~e_!;6_Z;Sw<@3Pli**m-?zi;cSm^t8*6J0#+ui&p2nG zRd~lLaxfFK3r2HFBIXRheKviL9iJdN;9K1G>HIysWVDW99BH-5Xq#bi&J1E)EJ8XP zFAe2W53jH)vtm|-1-KfNPhfpL?baHt)y%@*Z1YDU=o1{Ym|kTIudpYSK_QD9AC`|Fl|5z;@tkz7I!Be)L_hDw6% zSJdEed5M940Wcf4LX(TJ8)$Cg2Ar?pR%fxHp<*6aeI zZV8qFP*7zbcFZnX%=$Rl!*kWuq5`jO0+Kh}icH#Uk_q`egDhVrO8AI3qou@96GLwpYD@wT3QBwE|S$OZ-}Baj@MNlI(I zByz@XIt0ISb^~8~_DXl1`t2Det28%7E^K>=0X3@W8BXh#tut-@zl~R^K|_ucj5bkQ zVr&%FU$hK-d#pz$cGh!elSiNa(k56&j*>#^s{(F>t%OH(L^}AzEn&XE&=Y@Q5s0G) z%38Wky(ES`eerNd!at5B!f*|nm2H6-KIB_QWD-f4?Z=*eA8s@A))7jhs5I%NN$3@) z$^xurh+%jAun{=LpxActAK7mSbzXtWHo+(5{7ZQ)LCry^tZSB4ps^MT8(-xN#1oGY zBi5=5yS-58)SIB^a+u9E@cFvvA>3)fZiimV1}6|c+0pDIn8m=Ybuc9$sUtu-Os#2D zb+HJd)3jpnUA|H~*^WHa0RT1&Q8+%ik$;>|?IJ+#RPeiLAY;#nR#wq@ICBeLWV6GW2y%Xj)v&KsQsL=qOVH+x|oz?m}C$5fQ6lVM_&Hmi?}&2p;*eix`2m z5-FcWGp#}vb99T#VT(qPWq@%s*Il8aLbV+DxDle0Li1g;e|U>}K8)}Vb!&A zVNdx$>;aSB@MA08#rBUL2=CDZ4HM-x8kC3;9*$KKvpEj5Se2_RNBN7xJJYudv>F#1 zU#6=E7E#0)eAUE0(Hh1cQk9)yc*RCv5hZ;P(9z=Mp4u0!^X5KuX4j%0g@x@jTC?Y7 zx2QTYQK2AX!jz@bR@3ixh0-8_qek#p42}090;&?(XSR>yN=!`<1oCXd+}~Q>j5-N8 z8IbJd7fd;#cqj?_3I;@QCt-^$$I}Q!5lH=T^Rcz30jg^!0+ZPTM0atMuF+sU3()@* z;v`Y-yOs%F$a85d;2t*-fGRaS5Z@)GY~Zzz@RvYO*amCZyvDBVc8zV$Y`hAb?DO3l z$yQ>%Ab3`{*&SSjhW6+-43E-c81TX#_;GJ6LPas)4N1`{2&P(E#n4dEr0lFlM|3|c zO^gZXpKCc#!R2`*AGb^$1d4^sTo(YGxK+T7lSa8rg-iq^9`RkMlb%$i&0e0!Zc0Q` zr0@=UwNnn{OcI_0ir9?_&u@3}x(Z6>n46qD4OneDilvB623Na!3E2W7@dl8WG%sT- zkALF)RJF3wu~bb~`gmC;dD$l>B`^Ez9|>enomctg>D@vF^RJu*i9$!cvmLwSfh~~6 zFOae;qhjZVCiH}nr9i3iHie;kv z&c7GSj9PQux6>B+zN8|s$RMR}~`WuuTHnkj77Y$zF^h}0p+4)xgUOOW-ICxFY9O83H;WY zh=B%X2HibImWehCUB%9XFg#Rpf}lv(p(o1nk^M~XU-%fw~}_Xb2Y?R-FBoixwelvWh@RvnEFDh^UCsZ!p$MA*J(tl_iLL z!^bp$n2&Mu<+BND89S$p#Ua5tXIF(?MUY3b8buMpb2L)!ZLZ?lRyL+d^DB-zYE;K# z2m{!&c|;s5CXOPffeZ`E%H<|vu%DrFn%aHw{h9PYlhRl?+|1)CON zxWR=Ma3v88G{*Uum7~N;DrZmDAEX`K`o2h+sJZ?9IvB z+`bsSl8DgCGSo}8Aqq55I7#m;=od?oYg<^W21rRol`W6MV`^P;|Vd&U~(nr4h!~k1RXdlq3 zytd7vHO(Ue?9^ZFx^97v-&7brow5fj@hYPFMY`>HJ8m5A@KWyG2E&u3qOVqI{XaeQ zLP-N!XocJjH<$;SD7QHn5zcaGX$0D_<=`u_|7=Z9%`L^^W^fmbUaI+)dIytEhA!N> zr;bOo1qOsbqP1R6q#KM-qam(tAQ3mwPZ(@fb6;&NMhm2BFtk?hT^-wk+j1Ca3&3#4m}GsnJgGkMMuwlOd$ell2dY%GqhXUSyJ%UI z=ohH8c@Tfq3sAivRf3$uXwM498q_O|Sh3vt!Gje8o`}^Ghg7nKgZV%B>g8pjB}ykt zuelK7MX?)DN~%6R%JX=w=z%&2DrJtxrE(*t5Dp!F8lwmF?D16JI3zNCOh!t0wtcxP zk-A|@9!K&V+c_J>0>*cpZ|5MF2o9l-|?FKjcKr>{b z;cDF#_H%nkBa=v`MaD{!M6|P}gJ*=0*dC6}XXi1G`#JZe&UbqFuBI4emSj}Z)Yfld z)s%Eh267E2V3f|X?TJn0<(aHcoCc{Fr`P`_}(U>F8{@Eu`3=I~Tc~~3z%Um4FeG#Nftp)o0Gk$) z3Gs3`YHbg0Rp~BOr4Vh-Xgi2bV@eaVn=h=X_#~R3+{&akgu$p@J*bxKp$i5ZM(}{i zx_SZ2;?A6oTd%OXx`owmITE#3c!)LB zh}6WfjyP9gyDbXQX+21Xr7BRIoE8hQ%(1o9(u?!&zawaj>?XAVu*G8zUWJ6X(P3SFQH=?o_=jFXwJ-`x5)Yfi_C5EtM>n50EP1qagCD3fWWUdqN z>0{W~u#Q+C-P*mxs{!a}qr&fQrd*ul=Hji)UH9pa5gTeI%k2_;|87 z1os=0c}~?F#DE(_`WNIKzxr1?3eJN+Zw5UB@q@t^hd~ok={=@PALd9{Vtr;C}P_9>y2)4 z%znfeI(A#L47Xw5F8h81i^ekpibm=OduSWQf{q9^oX4Nd~X?0WCU4T?5i7{Bt zMOC)e7UE{MTn;+oi`y9qZ}dnX-RuvuBfU4J&$)1)2!WM#YBj*GQ8o$nIF6CqtT}z zd`;Svr$AKXQ*cp7Y1Sr4H&bQd#1Q$WONU+fi?TCPiyXr|O1va5Sfp}34LFda!9A6I z97!Y8Ftdx6m#)1!0K!UZ=V`+LrE3*&EHzX4j4%y`T$Dqk>wP*Ff!C-*0nt77x0pXvk zr;dLjAIy4SB@=Qz0cdZEpfd9`(6HgKegW|_#C=axzewm|q9_<|z|tH&r}PoX2Pi7= zuLzP7%6r!wv0)uwXM0lOPMg*zB?zCw-t27lg%!sR!no%3jN|1ZXGnC$t~Hij->B^z zsfbcCXw>&MuhIhK{RTJTUx@adk2ttzI3G^9=XT_^yx z@*6{1);dey12KkuGkiIKO0c^Du7=Yh^;qUd&UeP2@O;V?_O-A_7CrvK3%xt_T$*k9 z6X@mI1zrPSvb>TQ$4&Q5L@V_<`s1Wz^`|D6ezM%3_aUdgeSNj5)a=^SMrXiK6M+VKVjs_|-ZUKdq1R{5pSytH&+ zYDr*CM`E#)wV5|bKwOKUoB8ci47iTa^((r+9hgnY>Kg4znkr}pXm^hZLt+{Wu{)%e_ zW1a|FY5oi24rGfySuyz>@)IC5a5Ff>kP_G|zo{QtR`X$fW!{CYpl6;}MKY&yv45u# zGhdCKZio8LP(%dQ`MW55!Q#?N-y&rN3L`;YAvMeFG{LDNeq^g&&<2SAW%(LzSKUUl zl@n9KY+WM z%t~76?4@A&zo~oEtth%}Tl7`1-1-R`MHUfcgkph;wOC*gDp3MblL?4bJFjtG?>xz! zz4tLQIeV?P_WgBRyFb3Q1TrILF{(LcAAPtp%*312PdD#snq|nXYY8Xrn|~&64QZT! zq*7FL2#NRXw#a0$PKRfrPHRj3PBb)XeyMSGQWVHmyk$ed*ZLNLg#@*QzQGvHg%=Y& zAc?p=zdH{odiQ}AZyl3*=gU_`+XV*yi0j$5vnRCO^$|Ay)*t-tsSCONRVBP}68!_z znLBBkNPp)ri`^2e0whH9#Jm^^q(eVUiUP?DYVtZZn^z*&km!LMM+UQG(U(>1?t6}SVqW}trjQn=<$UanJ7PU+*T6O zW}C*aVSv2ENIRM|SMZlBk}bx*EH6MgM?KQQCccXYjRhhA7$0X#F8T^bGuN!Z>Z8XV8x@vBM6gR6V!>QOSWfGP*B{77^&Gle-8}`G9|JeYxj0oh{m@jlXcCh}xfF zere+IkRhO?_5 zw;CWxRkbw>wi{pX5Ob0DY}27!u>y&TXW5R10G*^#bJR)n&c;yNJzinKE_OCdL7UE+ zvLwylEm-`oGXDO#C5YHS0sW{$Z`lq{{F`t6^ony*>^W7=o_<8ry`=8JTQD-kNJ*&U z)GZh&J$q5xsguyNLV!>+R%IV?y;*OV3wDN1^fTYjLq;aiNqIbJRL*UNjHov2cM(3D zWMe2B;na8%#@)|94w;a`37~Jz0c!>;>_VQGvY)=hflVMf;BnJx3xgQ_`asXa>K(}J zzoE71PZ2v0w)Xehf8Wh29>%F5c9!>=n5#q0cccAMa4|6hAq?X{jpugu_cpA>(|D(>xAFDOa&K;H0)$R`vbBFap4({m z+M`mimWmCc{?GsV-{ZM*XS~mbQ0{@{&W?Y~q-_uUV|I`0O`u=!xO#v0pq*^tF*oN{ zCe|X02pyXh8*cF-<+OVj`(n*&I_|Ww(~jr3FwGqLS)u9G&Y8$lUYofqfh8 z5_6CVXU);79S~Dsp=PXJKM*Ow)!=+wmf7~$!cXnwFN_|LIYnV^Qf zNGFlM*oO1Smv^j@Oo)__A2dR&wttYnyup2?B_)4?&Tl`)$>=X03AAZxfwOqb?mi&Q zyO_2B=joD#16VS)-fLxircI%3?lOdbU(ey!*WLek;7Hd$Mve&A#W29`#AhCu2#?Zy zN{DN8rX)j59Tt%kv;cN;Iam?jX)-C|6{V>04cax9)jIH3}(ln0#O1T(PYty&x3@n087LiWly~D!g`>sz@17MU&CvX-i>?{zj=p8B7ujXEzR#DVyj2rAfbfUTh!{w8kx+gL0y-# zZ56TR{qM61`nJ1dT1a4c>Jj&g8VXCDbY04-TNdr(nx$=DjrD{IV5ua^t})YT^x+lC z<_282Rg^=}gg|9#qyx#02|geRT*32MV?Wb~_<2B-qZMw&6;fpvCW3Yol;jNNKEk-t z>=l*?I>T3nqgM=`u;qFejCI0WSJV#mz^}^M>E`kx_7NMZ3q(njpk_p^G?_aXBP^Y! zf_RtZEW0XQo?&6Jx;Q8ZJBD5De6!Ve+9Itp6InLDj^{Gpuz~ghHUWG@RKpfZ%)WZ% zQNF4@QsBD~{mh@eDrTujw8v47%pGNM`fqxmnr-6=LR8WQiY6J4-LPc|X>Zu(DwU;F zmI0C;ywj7DaM>3KYi~(tRqE#;+&)8*P~EfL>B_eoXbnUI@|`q_PlCd?C`&C|^4$|k zMv8ayk8XI(i!zu`p4yxm)OY9%9URyI`(@ip6~F<`FAp2^lB=YUNy7k$rG7jI7~-ye%q7dQF~>`OiT z0>I&>c{NBzBWpt)#2S?Q8kkQ|@FsD9M}eA~*Jphb0P-F2;6WKSui6aBikuSs8MNsa zn|P^j`=eswViO4oj6wefDS+sG(c{B^!xA=Kd_U9k%8G98tu|?jv;rU`TFqn~;r|F4 zX>MNw_KsEQ0~@Q`_r5K5Bts`47;-@US-}tKxYC!|=fAu;Ot6Iy^)eolf(!Y5TSiV5 zF1Ix;fB}ynuLQ)_1gw%x7WT129~|0oRy#a~k>x5}FD`C)(}S2T($X-X3(pO#ho@8X zR@^JPB{Xn{miTg$&c4KZxjJ}Zq}y%JC_kBFrWJpvHxO0b)0bEbg6zkXf87Oq+Ca)2 zY+XNJ(_Gm1%0*SI1?uh{+Ig&nGLRJnI0IWCHsS-;!T{lv+SW##$~Fr!IrOiw>KXW{ zAY(;eE5b#0XtapB8g84`SIIA1xBBSaOD~B~Ul4fV>5L;i049-5C2}5G$P~j+4-H@} z!rITjupVfvEDFY%o)kt@zdMY^ar+Sr?-nNYZ;R=%5W7X_M64I_cx`#eLax0nX$=uC zhZdb?AnmM7*n7Eo3G_hFl937gC%O-RFvn`w3*G_0NcvlnzcjR zCAZz*1rv)vOE<+wVI3&+us(3J&@qoYO#?tReU0<9%#kG+T^@h-=Kmi>L&}FPn4Fm$ zd#HXAb#d3MSE#ZWz#QDd4t8BgirjdS-4`V+fl3Xk z5K|w5YCaiVlP@23*~76v!3@4b{F}uOaAgRC(q#}kk4Ot&`-kJBJs()2G@seMZmF1} zV%ZdDYQ2UZz<>@Pd-l`s(4mdU#0LJM4)5S1t0u1veqRX8(+Gca@tYnyO9^o}`uDk}~EqX1zMb&RY z>J%UjWGHR?OCt-^Y7jfg|5t#D9Ajb$E8^B&j zfp&}iBM8gU1rAAT85_bj!NAfg+#z{blYiGTPHE~ITP>d{r8TBU9b!FiVUm$d1u6&NT_Y_z$L6R)rPIgu_J@$_OgyW0@UV;IRM=J*l=lfV6+I@>t1_M z=~EeX#d5oYZvcGra@dSfhyJc!Jwvi9!Kz@^vv!y^9k*OlAd@MzN3BpgT3AzXAa?=4 zNHDi)w=uF2lQ@@T}mw!sC? zYU9ftaIUL~2Mj~fn)xYB#KU1KUxErKrE)s+i!|J@&N_Br%}D|uj_zXvX*h9lVVVCu zj`^1s#Gm6SKD{d=$u~E!VL>yQQH9wNgTY&UI30YPrCA`eI)vEIsN?P*=xZKYk|Msz zKyU40qGy&mZ~{H~<1f3{9)8IrkY#e1bKQAC@eRRs0d5~-Z{Yd~M{Q&bd8G1&7Frj2HTf#T$O^g;t&hAK2;yR>PqDw^^OAKq zU6S+pkb~%DGv*clcF~_T-eB~&BS~@Ht+Rap*DS$SMN3Qi7Tkz47SbO z%6PHF2rHjekErFSk0H{S*5!g7t|}MDC7DWCq8Tr8l0u@E!Qud}%r}_#p!nWPo|8klw~!Qx%UT-gt7* z`)zVkg2#pI!`MY$oK_8^2HG^-2M)O#>vw$p$uTx%QxD=CaXi*t>h`Mr`47}ggUkWX3ubk|Oa@1gII-OkUe zT>Pb_XUlI=k)!dwogBNt7~=%b3dxCvr1}eKz4!g{n&ss^jqN+)0Cq1Q0uN8DHBnQQ zZRUWo@*Lw>ghQ;>a{F8-y1%vSR_GGNkSK`n;DX(hlv)(396=Pdv_l&80k{bU$4QQeZ3otAa0`tO+b9i0yA6T#IrFIC()mU zycnkNAi0^*Udz&!up*;u+2)Tw9FH=97lBK$ z2;xzGa{OsDUNZwxeKok zz^V+0fJJE?NNF;7wD8!E@o{L&*2Btv$*Sw9HwQcSo9aFObPvJ@7Wx*+9kJ^EGO?gO zq|(e*RB6rWNSYUP-kAWOr!%a3bv?A(#EVYZ8RotU`eID}`|#s&RX&-JgC zr4oKWdsoDZ!<*uU&1ImU9Vo@x{0Y?k z%o9;_aD>lJ_W4btyTMPJrTbARoG}nFTYHmo+7=40nxAuD*xR4X9UgB@+Ua-sXg#5= z38Oh}OZP2L^fMMGkDFTyB+uDgeFUPMX09JB#BO!=_W|euR}W}?Fv2igh$H`pa_oMM z*8#p$x^*bWXAAp#3+@dIJMG4JuG)7m-*v+&k2s}zXKS}|!_aI2@&Px|!r^hbgRWoi zx7^3E@Sn=A+dA5xn{0uzh>x$_NA_v~k2c)e-&{dwta|6TX^BwUKV2A4+5>|px%F_{ zu-oqLA7LBH-MO)wIDk>R2Mg|*TigY75_8MKXS$tnE4tNkZw_`!wEnx79`9D}e}VPd z5gy8IFh<11!t{5m9rwX&d;5IA{*Hm3#uGPTipPcPeEhkgjwi=Q&Dq>$yR(Z$oy_se zbi zX)0an6T}PvXxZt6x~)Lk-{G+j#9($Ug&?sti_dVL0Xz#J5Q-5qTQd=_s%9NbyQU?# zO06%JJQUUbaR}b4;LDr*bp8q=)=FlH#wNsZQI#<5i5oE+$8<8`LNl$_tlsM6WT#1H zLNk70{aYDaUb&F&22;XxswY1#+i+Qu=M1EIKyo7z>yy^k={pV%i)q5NjS*zyLYkMO ztzVsc2wX3FCLyi>^GmSL(<_2k*h+&BGml8O2kRYPwaXty^ybX*&VZzDje>3i0qWus9+EHw#xVmIPq)~^cGu>KtNAkdv^ZZ_Y8=P&vH}$g zyni!%Xrn=J+MYY4qBC~y&j@l|jrF@U{_8969xmCAR|lq$wp6qPAVlHuhoVfid8o-Z zDXts{wjc;3(y(e>{(D8f7aYj7!JILbX0Z^VA2o9qZd?ph((Tc_*35^(w4CM4$ho-C&4P6_kd<%(`wm0r z+hM2i%6fkAcFpG#6bXeL*0zk_lhKD}ij`S@M}wPYdtrgd*kF&V!$Z&GHZH8Uaju8p zToV{|Z?^xTVF$d%6{jHg~8GLlCPNRF2<*v}9=|31H*mK%0(sXt!Z zw(%s_@1laHEUDcW{_?%oOm(0``qO zMcBTWd0zLxvYEEBW$+G(%QQ9!G^_NGzprWItFKsib1LLM?HvL>z`FxCIwkZ@ianh; z71K5yw5|MxDK1ZctrYBSeUVuXR!$B>AV6{XR0G@V9Qh78uK(|No_L`_F%hzHDSxeL zg^c|Nk}=`*b}-HNd2m|W%45z$K^oHX^lrX8Z#2W)`?&Q^1dd0^uCp- zwa~L^et8ZTTz$MVJ9O5#cOY*8uKrv=Nn;GXCEGKAgYj2pl--*MB`DcpK(|zs(I@d` zJbY6_n?uyU@)sr=ycP6@)W*~2rW9oH zk4|Aka6I!lI0Qw6f%G&65^W8Z@;5M9KSrx7o(W5^4O+o(bZwYmM;s2NbXO`;cG-jX z{)qginoW)%M+~b6iocq63#FYr;+X*83}j%g$%E5aT-u?rT{hAhcM6* z`l-Vr4q1@RPGz=#yacc9z044Vul1poVt}k@TS`G+IyRk}p6% zEc8H727~0{>Q<`L30OqJF&Dl3J=d0rIhe$Dvo_MAz@FdpxDY`<>ExC$E9RMQ>64P2 zpPGEqr9VD~`CE+wKulf>1=VNnM=}e3u!!u18&H9C9o(%Jd+OdAaW$ z<$Kbc8zcX13HlV9&6|11P<~~;n08EHRoN6F7t2yiS;~nB?(ySrJJ-#uL_}Vr=$H%>5sl!M(X_JXoM4kKto~xrDn5rlQOuVE&)}U zl2iaHHq?~8LY|wQ``Vdw47)oF$_zo)E2fueY58N1%KDvmAm9J^0iuu$Y9|kWZ)0&L zB;Fb^(#Ia4cMno@0~Cq9uYuu62H6`c+^cg$RJy{RmxcFXeLK9x0FrEawH4 zXwoOyPk0e+s2;mvH7&Lbh4!?0lKfYiPb^%ZMh>yG_G0=~2kl)aI85q|A zRwpu3S^LC$*KL{XkpQdmMvdTNJC!&a6atHXQ`X$+b2Of2wfbl-PI@*&%BCT3ijlb%d zP&d*tr1lOBOI$s$(^dKueWpaL4-3$#$-5QqG9pb{yFFzZt1YI!oJnF>eVV!#uphVW zYw67+eI@|KfX=(U+vF34;UVsT;3Le)Z*01F0g%IU2y27~rLV=%i`wLxk4MT&5ZN2B zoe4`Ja1TyUNspM+C?W0%uPJZa6Uvv@?NWv@C-X|>7pv&T?$lcg_}9n3=Z|-9d?^M7 z6JgUKqwUCU)m2o6Fu8&P|At}8Obl>`7VG6H0Ho4r48MM#f55%sFnhE@xsd@Td5w9B zx>yt^9Jk-C+&fo6T{1r5&!o{FF zk-7Lw10dp2-s(8H>Yo&W^V z3|95mE}o}{omfDGBMcUzhE}^XDhx&S&JZL#y&rVp7{)*9YBYdJA+Qf0r1AF724CQbu9gQ18PH}T0r0_xQ_Bf*6NG)T zT)oqOq1kbT(HH}hW2jri#TlcIut&0%R-2;p;FrA_X@ZaWtjzQr(=MzI?54k1q&g5B z57lj?_7(Yw>kl-**G}&6(|_S&}qFr zJ_rj-NOYhtbm$)J0g7qwmEW&NiYWZGCE0%ak)FZR4fKwjnteS`*O>cDYx%&IlMMw1 z+B2uq`%W8ihs)xq-i|L*T`_~4X1Uo0F3|FH4g0lkT?N8WpH&IsxpM}f!MJVdJ0E>I zUkf*qfTN&|UlkMhfbtJyW+YQo_CKT&inh0E&u#ZEBg4fj(a>+zGxWv55V zlPQjf4w5mQ$z7}!K{(-pozBR{69bM;JqBwt(pwh;^e|*s;aU%51rw8H%`Q?KeNa`J zXy{Rm8ijJ$3M<;%xJk%Rq6Ow8I@7@pzidhr-gL)yr$KJOceFTc5Xm-YgDZI4{X!)M zbSl`*0GokjiV<55?ER(LV_4|=Z*g?RmH`%%XQgcQ&J18i=NFomv1~b=MJa^WLm#NX zS0HZqS1KD&1Ki22Eq@-^zYv~v7&@$c@MqgLC%Uta5Bz#zti3fa5Lin&D3PopR14m< z9{qf-=wM9AIJb#3$$h;j=-(?YX42LmdZIx|X7E2{^MFU*r?Re2a3R@H!lA7x!cgcN z8wgejiOvvfU|rknHc&&{K(?x;r(#Mooe`&{G(W@~R_bKbK-Gh!2b2Jou#Pv-8vv(6 zCzs2gX5VGrf#Cp6R`$gXSfa#vNzgbKJF{GV@%yy=L z>6ByyRf81RiH9&~Y*T{91Qn0%1fG_r!IgxiEstog6-I`QU#*4b7+qxq*Gigp1%WMg zEr5j5Yka6#;T@vrn<0!1uSTNUcREnPl-*AdCyVt|hZ2v?#ha55_lTGv6Ld2BN1qS$ z%`$rEPjlsj5BMo7Ospd$0~!3J%q~d`JU$9;w;O`{iH#;Pu)*jtWbu=}$CM9&eie*B zL2K_%&S~@Vhy82#f>r-!TznHOqT&Oey$qt)P}lnGo4G1*!iX1DSRe|d3=3;3u@%kY zYY%+BHBeR?gu@=@;&%C-`&0@zvRW#lf%M-Udw*Zz9O|%Y&F%-uPl-ucWp96Zmj|Ic z4)j#=L8am1*uANavhEW4o!U(6?YoOimT+z5x|;Y(PLQ~7-^^@JT!_LGMu|jwE%>D> z-h)6wc~A{CW>#NCIBk+eqVm$w!!|wwJ_(;D2AwI zBLTr?h#m%9i08LQ>-Ysj`GHw!vfM_pdR>?K0#GImny1h)c15Oy;|CG-ITMAYkH6m3 zU=c>K#JH#RWRsA7Gh+j2LD+|2gT$POt>f(KyIE|->uNV94=k;Ek7)|}g~~f~1ON6pTN*94`0m$?pkvya!5aalF`8n@jQqwV^dEwG~ z49IJ#ozI!L0Fbrt?Al9JeDK5*so9YlCJtty?A~l1K z;L#=BHN`Ja_0F?b_YEgnL1*Nd4k?u|{ellX>PWF<50 z5Y`UQJyNT)KDU7Fnr zP@zh*U)dor?DD7b;Oc!akkRtBneYNEzo)Nzd5B(3ZM}L;Gvh%xl$90zh?2Y_HR(UX z6C2yGG6GvDq0Bbz8cZ|_G_d8}q4Ovf{IUxO&M0Z`g`I9%`xD(@o4itvP|->fKS#Gr z&;X^IYOy!uYFdZy{PINHmbPVlmHKJmryYmEM+l5C?>tS;qRxp*ja!U#)3>M z&~cleoEu;xnPPoCK@-q{P+tRaLNmC+3`Afe6=m=58~%>f0BqQfw!~b2tcPeMaF${| zEi|3N59QzuS{O066y!)}_iVdKq~Q5@M;62fRdaQ%2>jJV38m^x##FFG>~_5v>URu^ zdgnr@p(G*1DWc=Olx;Bywopvr;^IR_Kx@)bpP25Dt5X#-OhkR)N48)VpX@NG{EYI? zTeFy|DPOz>@o3WXl8Lt>XTu*bn4!0FBS?2V8pAMh#+QtM#U~w+SyZC<<*%pce8C!N zPGS2^Vf5?xFZ0MBX+k%gWG8F10{ktGRgJW|9b5+oR$Jc4zN8*qL(NI<+fJZNTLol8 zIU6RcI`GLk3l?85m~{F&g7 z9bsT!)QJnZgeIBSuiKdDhWrQGE^ra;Kp<|b6OABgM?2@z-u{*JY3D3Fu-4g?_o&ni{24ammr$h2O0Tu z=iREXa>TsPCX~`cGRbg1j1C4logvge`@E8>fD?~k%UmoSF79x0@Mol8aIKgjJ)=8z zgTt)Alwuc#j4&VaDOqagqK(2I8?btPq}!dOADK&o&4Qq+Gnr;kci*MzRD2!{DsZJD zh1;S_c!-1s?LTCYx@fr_RyFuarH&W9#wiZjS%EFjHb3mzazcaMw6-MFzJm*#N)z3% z3Bz0rkD0-a?_{^p+1kCO(?`?t&w|XPdJ7|kR{~VxPA}ze@5UdWXAJuL$Y-H8;TlQ` z_SUV;cBgs(+l?Hfca6+zB;Vn-1}`t=nqM>6#1~HGTBi|VYz+&Nd`r8Tbf`;Z3*&yi z@~p5dZ*o^T(>-i@m#5nkTpzI10-4mb)z#L4c7P;ngnHHQu*EzqdCHL97RYARoZ31m zx8e7nNL7dVF0S*5l=RYA8lsHn(^|rju-FGX#IO;xX>4{z;aY!GsMf2jKY0C3O_(}T zbaP>oa>aHXqDykA{GizTXxhlH^bsU($Z z0z*m1l21yYA*k_aD3ybsa#<1Ej-ZD%J|sx;tNi5|u4QlzejO8DTX?BiA; z%FU`&R7%>4!IWsAX!`fCB42Lg+pefLA4?@llqhj&TC;(`~7Up@=yTdGnSbd@>P?s2tuO4N_H>dU%#Y7 zp12CZGE|(bV`=>E5r4g>Ai<-*)7uBdK-5YBi%l&x6cKn@00hYi)aP>8XmWrMDfM;^ z+J?neR`&4AER&CjjmDd6)U)IrbMp*ZvW3FvhVYkL@-t4GAIQv=ypU&$by0myXQX0B z6wWn%ly?dh;k&K8sNG3IJfCW6YZ8{b3NDjNuoo}_W%(Fr6vlk02OElFPoGChxGzEf zX}7q9WcQcfXbY_w5@=il!mH3?D#S50B?AB}!Z@r5JfyL-(Ea*UI!bp$q*MpWZeoXF znj>4O-Hkek*31VJI+J~X4Y6ii8bT5AyhR_3xT%IgF%?Y6LbP<7~#-Z zrZ-UZJR*6Vi~O+NBj0W#sj`}i#r>?N~5^I-LQvR+#TJkPvs`ZTqoz~ai z+lYHtf9hYXdg!0igy6R?BA7EcYA>6t{xr+a)(%02O=&%U)SH7^-xVz6CbHb<(D@9T zWWh!XBw~nB)-_gK4z4xh*3ADjlLhx>J<7U417U-h)Gl^*Tlq*;h&Q8(&VgS? zS}2ZYET!7mia8k!oA)Rs&F)JC7sPZU@4yQ_{U`qibJ19E;9T0ZQ|pS?n6Ho!K=N@1 zR#o4d^Os`~Y6RRotgy{>hCb_V8ueASXu+2LoZj#xzS@on3+GEY5G)7e){T4(wu#<; z@RrtqQD}!{?ls1FEr`E3ebNN>%#VSpp|_h+b>MwI8(g^5PDb^S0_& zhQ2c(sn3S193TE!c`VjP`66FDMwN$;Qd4<3gQU#=!qmr$=}$~Lzl=pgRKSjoLr)w- zu*%K+irXot$lBOMFCq;Cfo0IAK1gJ_F(59H>0^}H_=*zlU6{3RvHxxX+#@~pIg9_Q zH~3*^=^Vg~N49!&c2#T^{byL+OkS!9Z-82X>&&6vS}CkP;=lx$kgnI-M4=?#IP=hz z*$Ebsmv0QzVa@C77$_A0s~e54|K|k;D5-?k6n~Qlc?}YlGbJ!$}XOH9Hszk ztkMr2Lh5zmf$c+}nK)CiVNOXDGeQCO9>HGK8ZE&}0mh19bc@Zb$bipHZ+dXl7kG)- zqAgy_Gv^k4;)&||n;!1c>HDKXBAkllWS;=U#I5ZSO(Jz{!XP6HOAI2clGgyHy>18GO`L$!0U-1| zsHBVgnvy6cA!_Zl{H-%*4Eiew%kyY9KLQfc!j3H%>J}_ScHhxKlUkWGXh^ds_ML#R~=(NgCA*!3?3o(OYL>aUvaLS&VhSKfnOmGv^2(JXh z!?G<)@{N6i*_jFJl3hiX;B&4GCef+az1H>>VI)Yrx(GHqZ1$nPBr67BlPPgt*<%Jw z>L(W#v1C8Z^9F1gIb1ZK8(uKuNHB^?FZpUQH(n)2I2bUIi0H*%5Tu~PD2Wt= z$bKT5K)N5+kFX+y8P24+g=MZU&+f+<3dHtv1&o+8AgQ-`rC1k--RSzYLg^G@=;CEq zz}{jn zdmquEg_w|V+TZdbZqfMXo}@hS8&+#ie7Hgw4)%QLmuRt=CK+i2NsEezDG2AyK81wR zH_LDus2`{gKh2OY%=O`op#?0azBf--GOzMYJ}fI$qnxzoPGyhv3V)zDubSd-f+=db0*FyI4G1 zOO?G2x9oAO56bg7ILSL87~{Eq2p$2rH6;XJemDOb;P9LH#V&cj+B`A4KuA$%4kTea zX3}7y7qn#ImfV-wsR_O7)M}A&rkmBkkSa_)vv)U(Y2&N5_XN@e3bLj{B{>BH;hAkS zo=L{|o)P`RAeB$$)O>3Mxt5L)p^_}V$TqZ#OPdg$ktDDkPBb)P8*zFbj<5y?Gt{t> zf_FwHkN%zH8iy~kmJZ}fsO~d?bYq_Sz4zX}QtH3bp8@(TU9AB4Wi=H!Owo)|nADH9 z;N0qrh9TGApsK7qWuHZ8536(gH`(?WqX?;Kpfq#u1Ro#oYntFKd|sC><_!<{Vbf3V zK6rwJHmMJ6e^niCMH+Y^i`u!d|ANO!rg)rJJI5fwF*MHG{mB%B6DPx=fpFS;|H}Te zvwt?l-lR99{~LO9cdiC&4Znv@T40Ac-f4g`AvT3%FTl_&xVP?1xq$?Ad9%5-Tkh?P z8)tkrp0v9FlsM~ha&o$JhKIQCpO$BW$benvhgxY(d3WaL#v~OQAETAm&i<*Gf!aM1 z<$xckJ=z_kv)8G|>`dH0ZqB`8doVWQn(S}1Bm}}=&-RZ&9mIBFeoC9|&cS%@$Q^{b zE%F#)nr<{z>xQ`JyLD}iwVwY0`NC{z#!%^vHOhn0W&+ym%7B11ST%+>3t-+e)d+z^Ky^C^e#Y$if zzT-jUIDfTB+pv-ZRx21S1Lf9b&vy&mkEZUZI^e*nKS+;g6cO08F4Sf98~siP z-XEMh;Mjedk++sHXLYDW@yL3bPs9%{rUo3mK1ilcuaf*Lf;xt`7qsSnN$H|`##qbhqRMpH2LXd;{%Nm#o$GkH z5FKS(Js5$wml1=t#Y&W#;Ituc9gWx|ziE%b36sUIENUP81cO4IUH}0yWUp*8BG*L& zgpw__it9AyE?>v~pjc0h)J)Ta2|xQntQhBZ^FR8D3nO;f>PnI)n@%KTprCUELum z+p!AXo#3N+pSXTzBN}EzqR!c&iv@`EF^6o#QTmmHlZedjBM?KQ>=^xs8rC_|a)L_2 zV$vpjhSLYL<35g|7L){~@S#XN4Fbfee>F~~T>JNMLrttH3LSdc@)oQyVkm+}rZ6uY zh&g?6rQ(mWs6K3nE`QAZ4n3y3Gn~j;wqMdo_<$zQvP_;sEYaY1wBsns{vko zl-WyjEkSEu-gnHA{qTlxSL>&^ z_vE?GqZA2Op`ic+2Xm%A`$A9@jw(b)#DDA^J_f9jBU5K>duO*j(nyK0h=eu!N9H0K zkjfQ73+v0x_Mt2oc`a`@7I?nnZHEA%!Jpy}Y^@NY!r=KC29B-Iy zjh^Zml(*PNu%+y~$33NG>dkilo(UK!+39L&;d<6hj8Mbs1#ULl4r|>m-iL5}#AClK zpBpp>zBoF5SQxE0D=k`zY4i!PJ@1k*PE_HNAe?TD734h|c39|`PZ!G-en>j~5$&9l zFX!*qpaV9-|LV~rni#B9x6hxL)&;Xq&q^Z4NoLJwBUV4A!N zgIt89&EWMDcvK`JcrE9S>j^%B(^x##SW=ZsW%4J+j&Ou;;~ta8e-VP1AVn!NPEwu< zU8?EeoDv|pR4v+q^|4D$M)V`&CejB-_E*&LIvUQ_Polvch%A1>=2v8FLikkoX(66Mr^XopUeJ_VrHj# zbNV%pmgFt?l-@@}jRt+7NclVZNfR0#tLn=bURYS8?p*Q`M$zcD%)qZ-=3zK7gwBmE z5@ZX50bnv@=XRcrk)i0#5-o%RRzV|5R}y0?@})eI*QOU zD;-XIp@m+ax6voA*}=X%w54TcYe9cui*i_fVk(D+e{D(757R7@-aS0XG&_3Y0NuN2 z<Ewz*v(Fn{+ENk-D6)Ofp_Jf5mFy@R*K$-D6dFjmQtcyGiyQ zW44cMm~e0S9Q%9Y9>{lI!vc4MKUg`BP>u7=ch3PA^zD{(BgBx}OPxKFYV5qkEs!)M z?R&oMqMQ?}Fkzp_Sw@6BSC|5E_!0WbQwXeFg{CS@BQQpQiu9>Vdpr2~03|Q{+1e<^-#3jz^WtZnKkG$XO!|a&0_{vEB1=u)dnj-rnC?BhP z_~Fv5q^~mVWjT6jy8;Kjt*EK9U#I{SnjhZjydmns*Jp?yQ{Q`b_0nLKylhVzv&!I{Q8c zBykvOpd_Q}EYe{Bn=W9Bt7)@=vo$ZnXLCFDxq#0uqeHg)dJeM35wsF9Mp?9~9%jQH|hSDjAfyK|53Wi(Y>^msmoSCONLck}8|W1edwW z^|}6ZNZqrMRT|%YmOqjOV`u=wGniolgbAw8i6R;Ubn2T3asw|c)kDsgXb!t#C36>9 zXGb@*>Y{2;oK0qY9&jQd&I8i~hAK+K>UC{E9-F~8TVLKc5bOh*g{Gfk0mEnxV~X}? z*Xz`Imb?k=);R1BHz z>7}Y^j-d$<&EbK4tckAKWaF9~HF+|TqmGU2!OWi+IL?WWJ$kaQ>~ zgCuliyDdh4j5+_j{TAkQaOW;81uR|fO^zMtj&ti&Uw%LrA_7ZWlc3&sc2&@&Ki}$K zW%SQ%uUHoVXghNU>lPeGwl$>=6fSyG%}3+a)MTHqi*`+)Cj18!S$r@7jq&WHi#6@i zho)yR0+q9HN3>_;LM4AN8($0p-eK@-Dd-vrJ)@{hu&g+fvm^+*m@>NP>(j6iZA;Ks za>phGo+e(dz~_)tBL-_2PyGP+rKsT$!>uM&#oNzv81D!e>yq;~t*DC0GRBneFdI~( zFhE2^i@V z(US2KVa@OjFWMv65pMWpEEU2$UUm*{Xa`6M(7pkCQNwh96}*KI+>$%tYLlqVW=!Ts7x1i!Hh% zwNZ96gFXdjJJity0b2JYKfYs2+;$7t`bFsk!V71cwyzc77N{fa4HgHAL>wO8Q0a|4 zOUE`!{I2h9-(`C#;yxZLe^d@$elR9#j>- z(wTMc%8ZIEX`zWj7LJ-!iD#G;*!dw$VW04I=0|mPcUz z4OX1jnzlcf6T>Fvxrp#Z#L=+Uh71fWCk@!So_k26pdFV6Khvs(JmJT-DO9&m+9A%1 zB{ot9g&*w%4KZFyM@2ha=k?^!&4?7^26WWl1iEAJK}Rn zg>$H#7|6a)a+Or8(9};baB_py{LV$m5S^X5{fi?hHqXVw;=xr|AFK(Sk1W=yoQMyw z1mCAXKenA4Sm=f7-i`-)ydDOC4>&l=Y&mq|<&}Tn%z=>)3G7Sy2k0@|P*%1yEwP2L zb-iT@1Rl58yv(czErF-zV4ePX=t}4&H4psDQ0+u7mB7XkSKpBNT?T z=xMi#Y7DpfJgOm8uB~v(NEUqTJ}-1ib4@jVc|5bpsS`1~>LIB<1Q`j{u2$(2lKb9+ zydAi9Vpq^sxC9Cj4z~vxm zwT*{=cykZSF=d&Ze*2e*eT4?_?1f>wQ+}UNsMOmBPH30Opyr|WuLdBC)kWb44S*WgKC$)f zW1XyNe8S7YU^X;XsG1t`j6C>AsXLfCVTQa2ELf}4NJ5z6EkD^(`4$d13FByA)pzId zW@OX}hN&6*)iF)MJ59gy;ek5}G|fULCYzK+8_fV@Hr1k@&1f8nIN~dZ%!Jbb5Vkm+ z6^k{+(aKId2GlIc{2{$1#PE=cR~}`2|P^JGIrn;bY3| z@B-=?80LgfpfoTAC zb2jt>y)^2?@s{EEbN==*I*Fo65y`v32A^MORKy3cv>}jP=a#hc1I#9~RHSeJ{VS9v zokD3|v`6h$^Pib*!f@FCADL~?Luui^(c2{d9b&WUEOoH8vDY?JDwZgS{9w+|(`m;0 zGPkvRaMX^+?!)N*G-=020^yYHmWXjG_bb3&7E0@kHRZo?BPjmsq@8QYOoMMWH|Oro zq3zXvH+KMRjT`V3we#;8WDbt@PqvzNuG~EU+0A7C;D8;zj1^{%Ts?j$zCqZ(qnFXR z+?)0=0Rn&k@9B=ma;6Gq(czlh~xM|8!0V~@LXfGBw=@Yu2_9vSEz>pDT zxHfAA#FAYUV^+=a>e$2`KGQuM&A5X&n?D16CXYq%y}W5n&A1QDD$uw#`353`2Y6T? zcz&8|80BdtZU4|)G58^YEy;;X9)6TQPjPxZt4$9z&?*TFP_=6V5S1$okO+?IjEb_XBhEEdOGXQK@@XQMuGX>COD&tmb<{b2I#V+ z@EV;!eWrp{gCGaPUy^ni){zALH2AaZXa#Do|9(_t0eZNZl`GT+O{E6^*aa2tGITw)CGZDhhbTIMB{|9Dt zc$ZgcNBwmk4kz^8h_}lw*LxIGWQbvbEMQvYrG5~oE7e|;K9jARh6yr^1SK=hbq`>y zo9dNV__lusts}hi=bcZ@>K{8KB{3XS{p#;5BUTO1oeP*GY5h#mG{M&q2f_AJ`%KT& zhFs(j!lal&7D(Mp7pA^rrP^a=q(T-OJ4VSAm)H# zdQ3h;`N1qSPQ!&swg}N@tyXJ)W`}Wdv#7N=f{DIuAz}WJzFw!>S~(&*5n`onzWs>g z3jq%3lvF=b~HRrK;Revdat`1eW#PoY&7w zCd~*?+RL;2w0dj$1>FED)pJ^-)}X-?wD^yDEO#$yc2HEO$6BXwFBagzzR&&9jKB@lmwUIRN{$7DyRL}1OmM}3u7kd@; z+U%y2Gv6&8Lr!Awaa6r|cJb)CHyGA|Y^BG@hwT#TR&WeL0M-v#6PKEG#41)jJ3Y`-`fEyL{N0-}a%X6y=q!5NQT=gF7)3-$GG zwdip$Nzx_uzK!kEZiFUj@G%{M71)~re(_a(#;_cm^VfZf_hYH+jM8P^1@nk@D?A?# zyUuj@p60iWZi~B{MUj(@%0Fg$b#k%%%P%ucNp40}~f~rvzXrux|@-HM5Yk zmZ3Gh0K6R(Whr~7D)~XG1|}AJ3lFysVXMgU=@z*(!KL6xn5QAckhb9> zJ{R@@?>Lk+5_(Xa*!&T%|}Iw1&i2fm|1 zHHmbvSi=}Kd})XGpw-T_K)YqnhEk8l==K0&V-n8H50gw73UU!i@8yEtO{SC1%y*@q z!(o~4f?X%iCQ`tLJnW#8pXArxSvI>w!3+VkEF=#LOEPXkd%hPswe_h=drBy|ZGU5q z0ltVeeataI@&@_RIZH#+KfH?C1FSuhE?9)YiqGi%lJPK4%16`4Xz^9Id62CvUm|6{`hby|9I)PmMO)BNWGQqu$|@yj>ak(n%;CR2O$Oc-g$ z@o$nC#wMNg3#ZTwG9KW&>EXzB%2VvoPjqHQFsUhEjNxkU+*MH|Wl5q8d_8<0sP2&> z9NL_i2xwmso({H0oDf1@x3EUi%H%@WkmmDGC`jg92Wc1S^cizG@jM{K4=w zo|k?6bCSP?O3XNGht~;PBpo^q+FVOB4wWn#+M42;B}E);%@MLSeMwgls}|ByQ2+;0 zogiM{pXZwiaL+yG?i*k2qvcj*r^=EI|4ijThC@a=rI$&MAHSa03^I%PO zA%~lf>~zD%S|v`P=}@F}J)@A1Q7BgSFu?Yxqr{gUpK#8ncLQ`Ha0goO(1(C4VH=2MJgh<0g<3 z?Y!3jr#er-I90K_P=|Vg!bIt*kJI0RCV^+Q-b}AqIpviz(b)W{F+l#@`}+>a~TrPvK7a^?{mTe8l0(xLkqqcVKgEr$+8 zBOnDK%O%bhWdQzjVW|}$(b5A6k>H$C4ws(Vn-Yz}nSkHAC`(vyGg#w_zFU7h9Wj^O zbH?#IaL+9XlVX;kCcFbco}{#|$c+so-lC9nrZ$alfqR$TzixsfwQgPzNH{>`HTt}I zt}Re{+2<{OuYW{o^wgD9@|I1{6pZ~gS~zNW8FV9c!T!E&zAZGx75~pCu3qtij=iYl zDEVxx%0N>HaX!FBx~IP&2BO?T;x8RM%=Jx{ImP-w*t_sTEEw8R+CX}~UNIw*j`d{X zDQT{u_TsYph89#j->zB+xap{VCF>yy0oYV0^c zm;|b0nC(T~8E~eay{qi+X-Mufv>ESc;4+y5jMGJNlF`s#b206PAU4d8(a4S5qHq7q zKv>-X1Azr41|ZqbFI{+fFRI?ZC zPTf*F$`ugJFqOzXyNiVp>m$~@y^>#GS6N_PDSzCT$5M5c&G5u-27zLNHSOPo>8H%T z%4OP|`-RD%H=RQjYdFBAW9NQht_JJ-d=?GVVEXnUIJ7AgUJfH{F^lQtCY%zxC*e7) zTBNX5>PP^h*s3{PuxQg`&OE82_z4-eP%SSY`eXh(o<%TN92{V(X8x9mK}eV#P1QOE zRN53OSv$t9svU%By8X`>!kB%9+Hu*U_466^!cyL71<3Hr&X3O50}ca&#HYg9gSbi~ zBZtdCLv46(-PaPk75Q>wq)n-NZ}E%tRPH6fg+y3hIcBHJmSj+F^H!wgNnoF(|yF?Gt9oZ7Q)|$g>f*2({?I@1Ir{D*B6f zpFLvTS%-&Y&DpE$p?jM$&IMhPn(pP2xVEvlnBZUZ%n9h_+XIc2SImt!Teajj7_iW$ z_rN~W*E`9kR`)Kmy&OKKCf}$5Rh~)a1#Ihgpx;@1i zEgz@p(Fv~y2LjPYX?u|H2DL_ zuat6t6C2JpkuNJh=woEaao<-0dS2S%!kP6#=NU62<#5m=0H1dN8O&+_5})7}x&Jr& z2CjYM+#0a+5D^_4y(Ro#xnhdTE`8CCIa}t_=)$(gC~&GELglR3jal<_hPGkOr3Z^z zuSt+q1M)}plltMy7nag%1aro)RDNbjX-#y0ZB|H4&oQ4HmPiPj17LaT?k~Qc&6+&9 zBg_h3urPBK1Qy$h`lFss%*O~gnDQDno-&0XS7=Vz;V=RMo1ndCZ|%dQ+_Dt{gA?LD z)98u-A9n&9B7*6n2|6jElz@%Wz$ij*8i^uLhWH#vV_9s}pnzSc+mQ@| zTUex!c~6A#QWoyY82UDGWQ&O{YKOO@#Na>FyArz!a^(uV?!2S%_~o+BHtwI}mTojb z1tgd?0`fs-)+6K(8G6j@osiE1!0^U)s;4b?4&~Z14q3Qq%&t<-6$Z_%*Z>UcIl^C z`w!AaxKjh_sNqa;*3ZD^3WHi_Yrip3Ck!FD--0g2vR> z(76?6mJN{{Q*5Cavah0qi^no{ANUub%`lj8)@<&#RXYRP9JS^4{_(_PY@%NOf5zC9 zJIA|Qdt1l5=SXaZ|NrVAxbE(?dpCBQp# z@3-8?v8tcYk^N|YZnAaMj`jG;eFT&{_~M3J*_&7kwXy>IXlMU)VLWLM++54u)-4{; zNxSXt{t*yBN%^c&Qkk(Zg;ob2D@cA*m1jn0UqyG z*lIV8o%a7jY>^03eD=7Iv+4++A!Gx-)66Ned##aX5N@VUf%xR*hm1nLoeR0+$2>KS zWDe^z$Ju?z)F;dl>@EufS$Sh$VpbZ53z9BC>$_QfeA>Hg6qjXxTg;!;0qDBg!8^0w z>3)n<2TY|Y^ps1c-sKEn>cfct91Sa#jxc1wy z&jwpAK>1xeJINz&^OP(Mq^qR4yf5osS7>WoMw_fL4Gh%9<6H$AX2M#qnJzvqYk2%2 zK#2%KrjYD3I`)auHTuF7t2DW0n>Ms1!1<#a2D5}%Ie3BSfhYC^-Z0x=KQxddg5PH5 zt9fgb%&s-t7AD$Tcg!O(gl!(pqp5X*eyq57xpG-AV?wuwFXaj%I*J)LKGn`U=YA4p zhqphE{vgJJ|Kwdu>|Hhl;JQTyNsugisl-{0n|ui0cFBVEc3)Dc|F8@qXIr^y2P?8_ z_86&6@W*BQVj$sW<4K0TxaO|vcW?Ib@2_w@uPjy>dgcL^KH!TM`;eqVZG;Z~xdFa8 zCMnx2h!ArVjFc3!L|7z62t+!1;+_0hA))Rkjv;hRr`&`hKcO(5(HK;eocA`CSPtCh z48=PHZf%Q*g2*yaS*jqk!!0{m@naa06gQ!r$9Zq=z%&!EVTYywBD$}0B}qUIX=tE@l?sO zbvK-2tUaG{N7}-R`O1t6^*Zcw=pe&4tT{_`dzUwC4H|nL$K-~|=4)Q=!_&fU4`E~Q zM5g0<*6q}W#fuVm zGI8c31kfTDTXzdGc~;HP_@RGH^uWGt(wO?`_ca_JnKRjjWp6CTNbrxTL6Q=;=k=vkpLQ%ssex-3 znb=5W%XI~SAynpDNN*SVt|;0%dMlGvxI&Jf$xEuxALczfblNRQJkvHNQcS?rxF(=2 zgveJGt%LNBc4>nDsp(RVMlZFVoqBv##JeGDMKmN|5^B(5WnC~XHyhjV{0oA)!ZMj) z-^O+;FXpQcd}8hDwVhmlYspGLb8b$VcmIb_=|$nN3C0zj${C#JL-a8x(V)}T$I@hGT&nKoi`PbIV7K}bB>PX>~25jy?X02oO+u*+^wvIoTr~( z)ej`q>3NHdmH1s4(a8rqD#&Oi&K>CDC2sWeac%n8B%z7_F^`kVT7>l+Ll|hyz`h>6 z^|dFT0Ud4g$Af@r_kiSVeWS7-+QYE}iMJKfd^Lw#ytY+?)1_vo%-ZnPVFH0}`m1y_ zzwj3n%s{-@C)In+R+_7f`#n9M^*44n^hN3HO^(?&cNmVwN^Nz_PUqJEID^r~FM<{V-cX#K+YQx^~y7d zNkibY$(c$Y0YpRS*Ta4>m|Dk9eS=A570@p1E0?Al}eYhnf0HVz>ds(~6r^vwaK+4iR|kd(kDB!mwX304A7qOc6{UX-7zrmlU~T+kEtV+Pv36P$ zaDMeFtz72=++brK9E1!8B9og`c~TaZp?m`uOLWE-7s;ZPK?@V_WXarQQ$H*&W{Zn|={!A8Sf&l(ZBLg$1bX}VtDO`D@@adj*Vd>dopyC$ zy1z1MfCX{mp)OaiPCnr-D`_4DZKilsbv*Ad8EOgVz;zp1+~Vb2G^~$3PZ4Fnstj zKUl~9A$i>fC|G98+J;tV2}|?Y)~2>VgN-6Uv+cC%6c3sMNf2|Z11u=()Xfm`_6}~O zs=mrMBTU;XjQ2P%48Y1Z9A+oLf;iEtsrD+-e;yRc1Oa%Ad8Uv0o~U7>#jI@asJgJ# zq<|c*;Y(P{08Zw3)aNHI>a$Jy4$GSD-sAE0lRLo?$5xqlBnlfJZ7$nx5rmg?sDHtx z3chyp#}tX>&Tz}V*Z~_fF`=q7PqK$mTKYF%+ZPDCtMvsYbmK5@mJz)(o!$T8{TM`_ z>TvwoHjX`;Bfc5hiTe}cMi!-HJoR;GP%$k^kSPF(^wTHbE%J|T*8ObvTVLZq{4(q= z<4bVR&hzFHv(_d;6XKqOh*H;rU$j%csJu#Utny=fuRU&yh2HKNz5=T4-+hhirAl8YBs?p`wU^c~l_A9sO2-(blvFyaf1SFzr)MI%ATur(%5F^4olMRS2@J2sb-Q$% z|GFr1!9x_d$etr6!yJ8+gc2|;w{th0ee-=i*?Su2%RzRmF*hCVT3F1(K@$ij=;fC~ z>oJ7wm7iGnY0FgIK12&6yFT@`VPwQjd$t=1b$t;=z5nyMEgq~=d=)>SIHnG>D{d)` zbVvsVM!DJOZk+uvCP}Ku4+)lcX=m6qdPRMBjZ3cE6WLc7kq^ts`Fx?(b|C%g0crJ zKI7eH+7m}p;ppce-CVLB#`!MuM$wtw1l~C9rQRgUiKXf2iCzDhsJA3D*U=dZ8y#J3kZT3bB%j*7j6X_;>%S|}IUNgA?M_z)t z?ysTD)9|*jr_?f*N&h~iyTxxOm6(Zws}vMzZPJ2kAHfT=Pt+5H*5NhaA_O_W?{1nB zvAi^Vb^#3{NgnB4C44L5@v0eLGV5Ny-7ww2u^0l2>+p4$wiHrA`~f60LfQQ2`!W0` zs#sbA%E8=k*Q7o4rp&VT-k9VCcg(R>7#71!ta^35u6`>B2Jz;~MRjm69m*_5jAdi*?m%K657s_@M0!{~CqhuXg42VEb zhM#7@D3T|gBj;jSc*-PJ4P*RHl`@!Bc|*Ts;s)k~XzadHYaSpCeF+Au`R!jb&!fEA z)P1uD1y1h&4|Q+47RA#n14Scz_YUK>E|WnQRAZ5f~-Y;iO|}v{I_Fz*99#r3}RhJl2qbdHh|inFfkML}G zTa9Dwa)DXS1xLJ$<3)V@0(_=Al7<|>Pbf;Ra%mExFc)%U*d@MqfuE<(pW+W&YqnV( z7a^woENaybSk(=~%F(d0Kk_x=+73|Z@kYZJb#;GJcO`kEwnBYy6w7CX%ZDr?a2xO@ zYT;(ymRt3Av5-eGn&m zEgCPYrOfwdIvxzguu71QX*9BCmjrbKo-XU(T)-2uRiKd-5q=Rfaz)KPGN}`$2 z{|M`N@St$2o=Q#PdEk}#3&M-2^<-&$1f_{&H$*C0*Nydl>lQK%V!6jrvERNs56#lqf;m_N$83PmN-xU7%VVL}n zg+KoZSI3Q(-Tz$n)AWYTW$$}4p5O!4fw+OE1v*RSlCC<(7Vx0FXEZ#}VNsLQqB=o! z&tWm_9Zi9L(|kX|)T)DK*o+H22SqIyHT8f0pa0jSSDa2p94%#Th|yDen`zUW+uNL7 zRENOZ!R@Ni*?BWP!flp&ECt#;y_g*KCPiHXU1!uzo8hE4B4E$anZClsq>;KIt-q;z zJ54b?A5Er9y~EKZ;C+_xB26(lI=$)@^|4t&!Es%vXsYW;Z#tSm3UT4aMwk|p=~30g zTd_iDg85vm5&AEIfXud?_1-ln=H35SR_3Umw4($IBTC=_?tOzSuI@A%PK3gAFhP|Z z8bRGnGE`ouR=AhV>Q9|m z6W`@*PX;xT^!p9H4sJ>5AAJt&0W#XxMBx=_Q4 zy;+cGQ5MKqndkhOu4(ZJ%o`h?qmPVceJgR@-C3hZ8{#IN)x(w@V<8OGM8=BXSJ>&_ zHdzW^f|VI07U(UD@y{a9?whMhI`o;~{YF)~^Y>J zwv%9Q%6Qm;U*5|#jE+;~6hyp;yUfn>R?L{V8JItG6AIB16Qcgz2GRRm53;>A;u4K| znW?mEVYn)^@||V*7z((KxAm9ik0y!$%JjwJal&M7bPvK0vu@V9U7)Gtm(`hUi=EDB z1JM>Nyg|81rx-b?7gKQh=sa%P1wt&Nl7s_(lZYGq&@zIsN5lERtdr``q8)_~t;1ky zBm3$&2t^aE5$sR!npU=BdO}t@hSBmh-CEv|cdEQ4wY6Atk7avluEzCRs@xI_%u{IZ z+y9Q^$bz@xVlr_Sq9d5l4mt=z-iulKNM8l~!~kZcLrqaZj}|0YBGSW%xABDD1d0^_ z7dZOdzt?xIE!|*3bibv@gHsJ^Vk2y02UaGn`apImF`)!w_tyYM-R@_(Q3XPV)MOiC zlxx>irUmzbtAheg#5Q0RPI+3+078@Sw;S7lF2_|nvm6snhPCq&kpe6yQkm7gRmCsF z7H}4At>8aq1&AzjFmU1jL`^_~Mop>j(q1Xg@~Ar5pb81YZc{C|gY??%P(Y!5VoiMY z8eez~Z<&ovh&F>U^$TwEk%pz%YmQ6=WAQm*s?qBwLCwnkgjD9?BG?1765L>rNsDwW z1KwAD=yrmgSP!I}t2~2AQ0Dg^8o*~zEL0f_uaS2GUO(_S9KZddFD4US3&N0s_3ZxO zmZG7o8|>;?k;$26BvGvDe63j3W-AL(k}q6n5EfJU2x%86LNxcEf0K7*=LEFIQ80m0 zicoCJ!6)HSftG3aCbBSwg<_bskja?XV6%E{`1S`{l<_T{06jp$ze{hPvGqnv z4HyXUfE{a9B zw9Set&KQUh6uEtN1H@WAgm^cxOr4K!&2m>!Qy~K;wMS09 zRXZ04s=A=gFk&Kxv;b%lsK=?Y9XSMxmdFSl()Tf<)-keQoWtg)s(k3AMW~EUTA)Oc z#E{7m=kt}kgKg4IBKUU93b+|sHdznq6F!^nsdpu}U}gzkbb?_>G^9`|J#T0eatxd8 zIrq~a-)t#Zq31)*Knf9%sn*pcDfbB!0dLJ0XT+P68|1$;wJ)=P~f2c|8G(@7KJwNkNvX2cwk*-9b(a z>F=xZ4i=O}=JQ-fx8_z%NA4id8Vs%mQ~cZ{)7bDHIq`#7qs6 z=i=#0Lc@GD5q!S)?ckp`w$(IRpKA)NXBFG%#4HbWXD%3>6h#IXbM-+lY zQSc?_wmz8{4lLWmJ68h~v{Y7DvPjTa9tpPS3uL9Qf zv{$kA%aT))BUJ>}?mNYKp*`x#9T>q4CP?Da{DuWZAofN+C^)hxoT$HP?lnEm z^8DpZnROYm>my8APo`}C7szwaIo7VLF+LEKV0dLiPs;la=2$s?aDa=xU0S7s&KKjk z0O}r;&yB-UFz=-1)^KtQ%x4*J5YHx)QLrKN$RlQ8Cz@n;jO^VB#xX;e8pZ!zQvi#@Agz#R*GjtPY4o zZ^ZyiXBxUgFq?=KW1aH0d@=*}NRmzLA?J}cHs^u2Wc4#Huixb3?d;Pv;f>2UPqwL3 zsFo6i2XOsat>X=1El;5syj;ga%sFpE{R2ux09h5iNwhNBi#H$^@1(*7@ik+=a*h>= z%-F>2o(KAa78=zss6h!2#DdwUsS=wDS zG2Qn7$WvZ3b!=~w~yn49>+6Go-{Qv<Y;fFsy>rjUf=!$RVw~ zUlK^*cLGgOrU;M_6OU6w>shvw5Lcjnq7Z_H1Eny~OiTPn#tfD*ViQ|Gk(*dJ6@rm8 z%B*d3v&HyCkVZ@V$=F$bU`x+pEUxhf$DPtMul!NW2ccWTVP%wmX{i^Aul879=8}#M z(#6e7-Dvkbq7f9G^l8sXD!v;(Y^_?zrpO+bTYwpvE=Ngm*6 z2x={ij?t}6Qeay-OBoAHabtj^ls%!;L>P+hnR%eGewO9W#sniNVreo$;>3-}8~ue? zzS20`Fqh-ls6o1yNs#K7usIa&t!`o13s?jbZIJ-tKQWOxBa8<$ z-$V~r?R`WQPvls~*+F)sW2aW5XOuZlAi~g+MzvL<)`PT4&4}bktOOXyGH|dgPh$OE zD8gK=iLub3)x3Z(6W>u3oNf#<`o0R^y_H#l!GMH%XA`@e0oa)aQ3WhHsrLAU zj<)Fskjyfk-SnB({7N!vmpYg{E0uz;DbrE{Q~))29X;f z4P4jQ{h|!I%H&PV3(WIN`I{|(NPsS^j)2=t?-Xx~^;q;z-V@tUD;sfduver-BSBkV zV55FZCQqB^r05G5mIq1_@Wq>Fdd9?A_5tt!-6lKo_2C+dRdGHw8ssg!qIl^~Z|90d z2l{>vwACS=3m`^u03YeS8x`mzp-P@Ep|-E0K&|XymNCo)bB#LGcuR|O;8AowAox(x zln8_%$x>xc=)vemRK~|8My6MsMoIZ;Zt+{b%ETn4CrFc}?zT#i=Lf0_Kk6@#^NDV2 zDa^#lq?A*-YtpTRqhxtlOpBVOh?X2s+Ym#JG!=lzSwh7fSWtV8w_o35Y&%0v&Ir{Y zyASz99fAumve_0m!H&QUxP5<5m6gC_PH=(G7O_W48+376W*2HXa0~I<6#x8`-vo2P z0o~I&P(8OV$d_vR|3&~2$Umq7tdobt5M}R#*&-6%958vO&8adF0 z?wF7FWmFA39BRc!(O(ixLW+tMKRuK`VqGop=h4h;)+IQ4dqOh;P5-sT#5<;M@k&1M z2RIfKN5&EI(d+a9L}%TPblL9g?o7us#2JY^HIBtQY`|?KFMTo+3t#X+f@ak6WS&t! zJ#P=wzwdF}*?rL}EQ+jtsZqp}UX6j1RikSEvA%xw^W_ps{;0N*0*w+#g@pV^i{8KqSYXSF>ID0#pS0EWOX+DESaBb4C=+f z$sDz#=eQ8YMRG!-H+G~&@~fO3l|Z(?fwCLBo9JD*x&7BD!six&X`5_sCPpZf8c`!_ z;uqM^2%(k0Ttq?E6DgGHInLGA<`cxO7K%1}y$kuh0+gw^0ahBgKvBc)YXkD)=M6PzN1AWLZ&miJWU)>IpH3tO+cx0!c^%<%C>#2>_xdiSms z89Ng#I;&Y!f1DNDUHWVOYd#)adRCdw$qgteS?1-~`#9jYU9HK2-O&D4dgd8$3y)Tn zx=M6PCv4=cWVdX^>U(BNT-vh?n*$xm(n{7EVdNsKUldr1z1VR30yz9zrG91P5q@-`_jWULJq zT4jLxUxlWTJkf&6NYeL)+=2qL{=6`2@WV@Tpq?WS;DCcjyE>!}I_K~$9uYluI4UgH zhsdk-B;t37?c!)-naOZ|4-!w3du6?a+oQGDRYhrDSY2na3_;g@X;V*}?;3s86eq*3 z;cRD_+d^uR>f4R2X;;WS8WqDVLKCI(MGj85K9*l3JCKl4hFv!z2m(orq(I*_BcP73 zdC6!c)jy9Z_^2o9hL5!9fr>PIf{#6n*g3^^H7ps&I8WK#Yk*4JQ)2H?=sGXqETp2F zK)YSVk0;T1WAxk;yG+vk_ZU(jE1lwZPZkt6C$I67doR*MWWIzw%y?g5mXMacJqS>w z2`N43hmq%0N7CnvZy*E#x=K)!z|-sCN@{r*ge%NyU&;4K5bZBcMDWJkn|~=r>LzS8 zuZxrB%>3)hk=DN#-I%YSt3=u!74?4wKXf{}>WYy1%l^OCAYG2mn&G|4c~c#=N7WJ` zhVG4; z)V5|dQpLo9Ur8}M(Gs7=USIciUf~ue%l|u<89kq(WD1`WEeZHXXXb%*Z*e#xg3##n z0`N&k!^w1fQSk`oZp(DE8CKC`dNDS8f7qO!0aa<*=kvh96UR)983UMe{k!b=q^2F)-+kHLAMC6S%sE87QTQQgCubt_GYdKsC!Pxrysx4Ggv&tAj z{Koiy-K-3zPs3tf?p=jX-|1TtHyN{Z^mjZ0O$8$D<=opcc_mL(zkv~xhLRD@Ih-Dn=0?(Y3wpnGrW64s0zIxA0IQ8gDwE&~ax$^Lc4al z=%B3rnr=3pt=l(0R+g-HH`Td!E96SKwsNG*4(=u*bxbGE+YKK`x|zMoh#PYwU6TF< zc|}Q*c0=Fp-?5k{7NtfW!4 zVhQ(H3%DKcrFGvzkxf!lG4}@YjUf>>Pt@`Y0u)7%&i&fWWP8{~s3cK^S2ij8MqXKP z+gkahc2i&5AO=FGViKd$57^9N|1;)56ivKgfkbHKrO0g>>Hl~JfzAjcb~q+bHRf{I z=`_NVqAa~c1h-mQx9QV9YerpUScmT$7e4~Jo|=IAFu zgDF)k!i_C&{WI%z#PPTV63A>F3eS-SBQO@tEJH8s@?c+!@zTt@rq6e0qtb}9=c=;| zEsmZ;i!DzZ03Di~UdiJ|ESx3X*Wk$8h>>Gm3~aEkCAyKN2nf{l7Ig6xA_Th~>PvAX zPjoz(&@UU36F`8aCRwT`OK^KdE-0t-4xZ3~?e4G2-!B;Pf3L#RXE^ec{R@#cl>2CxjT4yH@C}Wz4{)$Z%CqPIuNLTWH?)b&(h#$AzI>G> zk(0U6CVHaBh4>!uHlyX1u8@u|PcS=H#5gfaLvgJg{!}g{p zC?c{^IRv!@K^&^Ce0@8skci;hg`b|{OGiR;0yXhL)-1B}NE9^#grx`x#&B^pA)Na1 z1zYl22knLFIB63T`my;Q8Pk=vP7JxRo%hkk5oz&G#&741n6P}_6jybg7(4# zJZ@2w3l-#d@_ipkNe+@k|6c75m{4uE0l$;@mx^*;dx(lVcH~e1YR0f+P)Qg2j4mhm z2_SC*&~*2Ob#Ix&Mhv^GAHN;1oT*0O>3b@AtMf6fqf=V1G@Vi_X^Tox)oDzG8A$%l_q zniW4&)ssF*n(%Ff91*7yxBgq)t+VYbIht;GRwdGwjpv=JlVi5dJF^au=k>}-PPa-* zj_=i&`CwOnPS7>7QmsPniSm7u;l+EY}6XPi=)gol8M4=2+a~vQwhs86M zMlF0VyA7egN^vHco61c`cbVpExh~28KJ-%GwV9hm$Q>rX$PQ@f>!!NEK(DZmjGbsr zkI_o_-s^0j#meN#&q}V=Hbl8=uqqQvA*XZsJgMKzASuiEy=}gQwEO_@NI-gkiSTDO ztGN~V4N7J28M(ZGt5kmgz;z9Rz-U_s~{@lOPKIX!g$6r9X`{J37D0{z*UNb?oD`7qEFdu zhp}hA&K-i$S>0j_j-C_fs}amTT-A7kuVOgFak{PLrlow9`8&w2Mh=k;LbXRAzG%%J z^fOJNNZ}kzH*AIs6-s5JocI~q1RzKRp`gK$;)nX)7!nvAIn-0ifQi4Mnyw7Lf5U2C z2<=D&?Xt-`7&$27#`@@Wu&TBI*4;>1PVXb*DaVK-i91kMsBn^+l+D+V2ABCf;$E(l z;s!Hok5IfaTkXo~p1E&%H|@0KFkEqs%+1PISr3#M0>qTmO$y(2USxpGk)jv~l9C4e zd%U!f*uziatjY}PPkGahF7#0#=D3@R$ zZwNYzRBuM<@7tmx7=-!{WwJhwOJMrW6?jGfMTx+cs7=G;k8H&+98m~2XRu<TYNpeoJ1GgZYJ#$09V87Eg{hR;e#J` z>Kh^qj=lmtBAiPf4UaX-G&&$hb-^SJ{a_EjrE{lvJbKS!zn&dynLIR->6?+P8Bldf;eS+Zene1>+JOH#qMq z%$jOfQS}f{7Gvl~KK(h6C&P-c1&l7(MuPc|eyPYRM5#jE^3SXyY$hw7k~gR5M8a)d z8X9hb&u~!T{IwDrf0U^5+==aMa#^&b`K&o(o#2|L8!OKiXIRk_{kx7oTwtS81GcQ3 zm2}}qi`!UYSzFW9!n%>3l{KUrQT{*-1I86uBg&n5C7WyuQCj!B+nyXstwjS}>j`E% zW+9kE7mLH+!YB^P57m-QvI|0n59&IP@Y&zHlqJSg1UED-G+&zlD6HzE0IWhZo5RHl z)ohMH^@4SKB3r1ay@On*LfB-6>!P+0@{CbKkc=DuR#C{g?J?tJPK*$;9?5tNy$#sT*h~*9RRyI@yL`PN3*od>8D+5|Td09&BTXYll%5Lrid^)B zj4eoggRK+Sb|3q}1AC%+Kv{!G2}UTV>ViW=69D&cw)gw1wYzK!K_N=ZGe+ip~Xl>*>%fR!k+>MCxu9EP3eyI zEQfR<>$Ih+W$ipz%{x{RU>^A$v#Do|u%Vo%_`ttx^`d$QbvZyls;uwA7O0zd`1uC> z9msRkX|*B*#67<&duyxKnUD@ygc1uOT8qy}M&TjxG78HT&xCGd1RoHk2^7-$yVugX zC4`|h*9jfRI!kG9jp_O(@$L5@oEYW?ChxZ1#L15K(dx|laU7i#h9eaM!b1?V4e-{& z(JTw~XYWFtjT4KqcMoPH!h!C6t?hE9Z@HFPe#JQNa^>6}n+Jy>+VaB;2EPqU7PLWK z_Ki}Y6ahJ5bf8(#3Nu?`3$I=MS<~xOrp7IXaMP-yCg1y!YrYN?a%tKzCeM^|2%xm^_P=>H+>8rH^W+SZ;FfQ;b?p`y;>5aoaXz{ z#MsaqJKMd<#pJvh613?2w3xP|@fj*@&W+jFu&PB$TBg0Gm`-}A#JQT9l^^tu6sD+{ z9xnIZjj!;Xi}S;y(^Go|M}QH?Xga;>)x~&dR&M?*OEOPBKOc>!nD}+x)SOW^TY?Nk z6Eq{t^Xg46N>uwCoNA?z*}k)4IFf;5lPmMhvtHA3&EK0-^SBWTa4w50ecZ6u{4iTN zG+SwhnJx7uBfP6wh}mUe1DzE|!)Y_*^fB{(=KE(804QDBA!}wmb}O%-htXp+zskj)M^XTR5U_ z8Z4w=3kozEQ*CYmB-m80d=|YHRqMK#{4Ay`taer<(%|`<&l8R0sZ{{kW3uZMWpB(j z($NC{ctN_fu9Lr59unFbjp8iLejM7uLp7QMjrJDM{l<0|1`WhKkZc|D4ALo@iJj7x zD{Gxb6S2@2;b(!bS&>;;RfHtHYo$r@I+tJwgIWF!ZEMAk!}$e_ zojM--mqUp3K7ra8@Po(c7sv`WT?=iE#j-n&@f2gZSU6p-#6JT50(#n2`?qo?MhT3u z>{D4_QT)ussi>5GF)>mxJL|AN9Kc*JRSA{(5VkJ%6fs!39Yp5f1+eVut-UvTF=1x_ zAW;(l5&q6UcpMrfvaZW?OfyX_f&#Q~2LC4odCHKw6qTv&=?4K0il`ST-v`p0(`1 znB9qXj!^A0q}jCbr>b#2EW&D8d`>$@5Z7TN8sB$bSVFuzBzhaXZ^}Y5hf{y9gK4_x z95jMzqZH(Urn;>x6l0i#TQEWscIJQwId?;T;S}X?*1?Yzzy@M=0<>U_OY5??R|<0D z#_(oZ0IxOPGx>HE;WkLz^Q2M#9w8Y}-n9)P@)tIO!c;Y)1MgJ4f+$?bHq!}~_2&u} zDAVGO3MZIsY^4k3Np@I?b-xJn8vu+7K>$gZa(CuS1tm+X8)uoAQB42g1%Uwync+Zq zG%liB`rd8u7xC3~SS<4&B#!fJ*~*F~xmTGmAgkQSqj7cfHB zNT&ygEx3(zZc!>!B$R=NQ@;QkR~I+sc!+=%sXP)G5z1|lT5v6$-WFSO0qk4HJJQ2M zKX-}vN85g}#bL}g#}}C-xvn*hCbDO?W|O6t7>mO)z6M!vVtX;r&<=)sGk^-l(^}-q z;`l^?!HIb0cd*HQ5yg!80}`w8mNMa`q+Nv!hjm<7WE9L0xA-_TSo<>oGS^SO;-(wU zF59Uh3%bN$U@V0VkJMiW zQ2>EUyWO)pS)zbNI&IWGrQl8OaY2&!O8<}vHE4X)tnl407Xd=6_1KDElbpx6#k*WWWORsZY>?{;U$IW%6{G;kTve=uk3YPT!zRNvqI4}G zVWZ94LW8oTrVBA_AKL)dRO{FfF2%;MGlNp~xrkMXt{ks|degIeTH%Nw4Z9ooq?SFI zDt+IIvS1vkpnak5T?QkpW3U6)ryxEXM7Z!1*@0FP_38n1K1s&Q#T6r?)Itdoqbklw zAqyLEb_%|Ab@N*JQlXo`%x6GBx+#3F0n*{3L_Frf)TQj8k)&P2#SkI_670qK*I=3`B?}&8gA6kkRZ2 zVHl-VGX;lVJlUaac>bK7^Oca3&5y}YT-C7^NtbrP zTwzR3F7@V2D)p`5@l&(TWHlG};LuY4FJ=loBCtT7s+tL;q3pJ-t%7QoC~G-P0u0SAgbE>ez_CqVD#2k5E}mdvui|(wl^3l%xcL-llt_TOuY8)Vu+5>j z%IvFI|}BG#E&%w8}y5I!(iBPPJd{QW)0WoU|K>2)QH4h zq;Jh}zW6X<^D;9CbeIye4bVLTZHZWiYfV+apCp#BW^$N~xQuhm(8c>dfb&6is%^UZ z87_T+9%c5>)*9@Abb}Sa;CRIxPMdgu_GVz(6}B?uy{qk|K!XiuZ^Z6-Uw49@NDMuL zWC3@1mZY!U9aXE^qnBs?cvrv{$=>Kp&9&xCZG1Zb8#|jR|%FSq6?Ma4Bu0)rjQN6Pj~M zOs>`0oq&eo9JuQA$$Q*ZS0iceR9%y9R<9yJs}|D6SNgPCbiQs4{#BN5Uc_q1%V>~H9hk~mz_E#tNU?a=TVlmDP5 zHYG6$N4WiR84@%a3{crm@lsg#6)W!x^D>CQ7z!q)C?*gQFH6}rTiK&y%!C_id6%x) zfQa-LPyz@WJft5!Q7IK>k6_SLe)`V^>%j_<5;7EprVe^r++5DYRw23Jo;5A7lBj^b z!%Is)!A77aGsF3<9mko;*W3Pz2r!PjQywPTv-u}zVCU;9bIRmiuEzB7_@zFa?=eHO zaiXXCwv0;itZ+0$EeSBh1u{X8f2?IxjMIOY8;KWz=uUK!t*t^ZV=Lmih zzAW=zbSYUu(6VD%XiCbNHQ!h30xG-odnyVkzZOLs)XYQ1qB01p+xG9;yB*n#J#EzBB;;Tw z&}fM?yF8_z_Py^6wYr0uZkFR_lOIw83hRx++4pEz`{Ih60EG}0(mVEd870>&(}?V zkFB-c+;}aURVLU!>@LMGEcKAq{rap_tOV}66(~Gt-!4Y*wnR@!h(k zyes#W+$)B}O9Iul{DF<@85$NHF_hmFkj=!lqGR4S6eE3{Pesl$tOJczlo%ZB#&@6K zPMI=r1gQzzi^Cl80PRk-kONY}4zXA7zf&xYq}jJcADdE)3Dra_9va&$Xn-^?cKOqZ z4oYB?Wt2;OGIQJ{PFxDP$3{8{y>ORMLrl`gF*_{-2QIa2xrJ^TX;ge5>t)cf+2#BO zEIriatL8FZ;2Q24%eQ%!#5}DJE?6iU-_sqYrnP-=g^%q zfzUn{#)RP~S2b%bN6|JElZ`0B3c?X;mY3mcNM4#d?Zj>4z zo+|&_^A0Ut-x;!_Z_8LXEubK!-NR#kW^`L9HXR?sXvn%!vwu^23Lp*{@BodGC~5cU zG(%r#GOh+YQ1olMB21PfGgQf1u0FzWji5&aC}A?8Ig@Y40a|IvC@q^_;zA`JrD*k3 z#Z%G1u&5TkZ)UewwcxJphxrT(G~^kWyF+@1BG;up>_qDn31$T~-m*u5##@x$JW+aW z>svQcm6V`52)v5zN)hg2-m&)f^iY~Rie1!Tm~I@Vz5SVZAWoLqxh|4l%Uva44bcV4E+T4zW!bnAzU_wAnO&nDrb>+mD{a@GmT>;*my-nzU-on9b)#t9IAX9J zn2A1SftTnvGp?TME!swe_e#Y;NLV_B+qjBI*62!$$L}*)M5W}*^Hy%N8ADJfEkCLR z+#H@Q_aTx@gucRbOYIJ-5@%x|*S7@(Mm2c?MT^VrGH{ml#5_%qL65XK(UME~UNwz` zp8==if+ll|+0G5bQoyd1RINTSRGnVS@3fKoa|&u>1nxZW$Nm4#nMJyas1+z#oPuswD_c?}Njt=%sE#i3TCbUhQrw8ChE`k-Du~ zx4e3VuS=Q!=`}h535Wjdt!&YfEmR|fAjC?eELH}OfzK*vN=RsXB5DZ;Q#?bwsYTk2 zJwLA9bxkh8%LiDrbM&1paA;eMHo#@H^4cz4r$v`85Lt;@U z-SY2Qr3OuP00JCH=@oPV!wL+E6tCris{iv#Mo?`F2^G<3#qO44HF)}ZLZnQd<_+;a zQn_vGt!i0cRNqfsdWEU1BlfoO{g1MGDPTslU-k~CZBEA~Gt7SF8bEI2Uo)$p8KuYu zeL=kbYx#?dpqf=AP#0~5n&pJkLs;J&iAZg|bnzUFZG0gd4(P~GjO%^WM~At>hw_|X z!{z`7Izdk#S!0N0ST7+@ia3_Kq|qJlkv4(ybJ4*hbon=@EwlgP)%iiN|dPIy75hPI?v#rTe*k-y0 zwuFR3#ki@Pv|L6_61$^otB&^M8y(ye?&eNuLA}=ZPXy@2#bh#uqU{Pf_(&sDiHses z^KNX68)o038I|6p{c~R*(-+NSqeL;{tu z3bZv{+VZbFjpr2IJI*`d?^fuvZrF}X2Zrz9#GllKrTY?qNd_-vlcc$)FJBfG5S4fhTIg8(=JIuB^4uAo)&nGYV)M-f>dXM7LGQk{n7#!3E753Rh+zB- z|5uB=D}`WTcZWR*(ow>%*f!JZFa0z1UEJ^%{lND}*xz*ODMn+>mS-v42>}go3;ldd zwnSPp7*Ei!k~&0+jGYg1YZis$4A^yo9rWJgFOPE>8|ciw#`Lu=Pm08pm#P(5QzZU( zE9%yg8P{rUWI}UPdlNvzv3rDl0126g6@oXY5d$G4$rYpJ&`EDy;X8OK*h;S2IEWb& zJ<5t#<64daBZlZb!rXOGYQPkI1aV%K>$+6@07;y1NSUxK5ie*sI^w+u;KaelT!vZT zNMLZ)9K*$BG7;}BDi78-m*FeX@h`^JXE{71u zV~od<1_<410;jI(o-$65V+^J2yTC7`(jjn@IRMrxu*-lPJP$(0-|Oj-6+>8AK4z~T z!D$$b4Mm1`fN!4vE zO95tLJvpnE$ij<8&%ANn6$&~yACR<6716tV z#EujRzE#3Vu?%W`E1TQ(4->$EDs<&?Mxv~HHM-~f2qD_R*0ifE6VeyIXmpfI2OENC z3=vq0#@v#^A3PUcjzhw?%NUdx)+tgrKpX>}DzG61$2kC%Om)d6wGM+XKOkn%^zEYA zoFQ?CC9s(6=0?AzV{ynk3cbed%62B_&#bf_vD@5~(mW8=l^wQvG8=2z!dB!MK{Q_# z6%+QfCBCN3*IaRd9}H|5eX@=V>u;n3R_y@vqC#ZT);U<{57)nGlhA6KB|azFAlOGq z)QUE!JxnbDb;pfel`>L-(sR%#Bm8CCby`_oaI2>R7naX2y-DPrar-NMkIv2-0wDhU zL!n53=mZ2zT_>bzi@~W33eaxV$CutOJL9#u!m5ZuE?NU{D}f=^#za`Ynd<})m|teA7P8wPl@SYn5!;;pk(aB&tR8We zN`#6F}*y$jW!3zIbLbbKs|3ofHu9*v9hk?yQm5f?oF9^z4r! znNp?Tyb0M3#(^O+~W zt`AT7fSI&FpAyUO!nRirJq}5|Ho&dbpUE9@@eKDCe&K7&O$|qWa;>h^g>4HliBcQW8Tmz4Mse~;set7^m9bN%_)w$ilAV zlU!0XCqKYUP#WzCt8r*4L*-ZDoZO08AoIvX-#4IeGRNljeT3Dt!21XA?zq zP+*7rgH3l(DpJ;?Z`fy6x_Qr2jA)R4<9v#1S#cbH)uQS+yrFDfpKfE}+2IWsKg6N+ zEzvxYqcEcI3_^BdPvksjfyhv3(zrR(Hz1%D{5}MU5UVNt1R;&>?4u^kjYqjcUcYSC z19;CwU`?k$ZR{7HGKv;)oSSeROGM zvqY9~Ss4~X3LUQC{R&)#e1-a&;TEiA6@ zgH{vta}Co7t;7Gn6cnM$e3*f=-M#E1B;I=t4t!%vDt;?tXr(RXkUty0z+7ZAOFgqT zv6!Z>PG+pajz|36%{w92_3L3#zMQwz+MbHUV5J~)@r5!J)Bg#lfh5$gKNl_k>@Wt8h! z68YU4pJGUbs)|rwWmd*2lv>p%EHasb2Pz%dTbRA}lJ_640dWWHwHUg6(OZT!hnLn8 zF&c%nON@jD(MIROOlSk5GQzV@EQNDrI(4I&0>~b5hY%OylrDFWU5Un# z_LU7B=`Es7NANK?#-)KF1GEvdlQf6-VY&Mh#}s$4GUDY%w}NvdWe21LiM);aBe%bg z?(0J0FG3N-l_~X7XS&9OziOle!F2X{5p5C#5pLtF$Arvqh?icuB^)!BA#uD@mE3=Y zuw+dH%|Zm=b>%5&J>U>K4$PzC_`pevK8M|7TMUKKiszL2+FB70p!OUV zynuEI!ibypsZxU9c^7aOh#2fAYhV-%bu4t?Sj3DNIHIJ%@+ZULs7=^k^R0**FwXdQc6R>9}ZB;%+(5*nElPF9T(hW6xG0><`OZk2-Q+((K z#{by72P#KEHf*m8L@Ko^QBdpIQ2Hhdvfh@M$kke|vur~RUq3ujpteV?;wof3zD4LbR88R-`Nu^TEWAqf$jT$aE46D zxz+<9?jER%dSFkPq11n19X~_dh{~zfy?`$9ZJ?nQxEO~wxO@Tejh%CNPkjolg>Xyn z3PhgR&(_A;FYmZ(n(-?TWs=4y_@Yt?dnqeqv;k79`l}9tv_XQnksaU}$T8>gcQHaX zUedMWR7c0Ygn2XtNvQ1O_H_kqg4rc(K6xU$!jihK**;n6iCFFAS@OuL7RXMAr}5y} zepcG*kaT_6DH>x6(^K-Qb-Uwi=PmEm38 z8Wku`oGl9zOLuLe+z;;z7CAv2Sx@UdnRzW$2!R=?$x{*5dWO{T;mM)ACV{LQty>Ta{3w0%8WH?u)WhT| ztunDNF(UzuDMuIPqTzomlUX}0aL*V;JWXxxJi0hX)y~1u_h!;NKW&E7D^$9$oW`v8 zfcKjg)yZko0~pUl>R%3c1dU`5*&_f-M zyba1~4x6Jf>R-(Iua#@tae9YHbEpYmROsyb-{h( ze7u0WPRsjxJzgE=CDnf6-cTNGWtEcc`yx`7c36UIZjjp`#NxMdf!j~M$sHXA|5fbQ z{o5zF_up@#8%wcjQRb0jWVEr0?#y!jPW42;)2e;vv~W^c!NFE?BOz%$QH$VHDzZ!j z5^?lc{#}Z!wIw{Tp#grshI}*YtRSn0^iW~wn^*j?n0LWAYc(-e4(AJFw$m+wZofDYd#(FNFc?wa$$IxmUhJlIHIiXyUA zGVB0NK(fDWAQU#zz*1bD??I|>>82L)*3yQHowy@)j#2@3BwHmu{!pxJV_Y2y$=Ql` z>H^RLv|WY5FouVc2xGwo+Xxr@qkGO-SqK$3)s3SxpZ`77#rm*Lw&Yuwr8CCoH-%F> zTtRSsd?CN!5A45a^mn>(59Jp`b=Z%f++VwAYb(d+*M{sCORxgd^-WCpM7RbkpxaVx z%vnp7TB|>EK3wJ~ocIBkN4Yh4qBaM8VXUeA&6Dt)^oib;0qt^qnr+!~qEtR*T!xG` z5t{D^*sw>z+F;f|6`Sh(=*dgq^$>JHlNl8cf_ojwwXSj@3-_@EX3fkw01>OT{e4X` zID)YpM=DF8XRC1C5{h*VTTJe$mD(yPxt@*oDU_vL)_FU}D>lQ7zr)IeIW7EtJ_l+| z|B5hh0~G9C>+hD@$Jov<+JkJr3!{Q&f^8rHdO#mz<0) zhWRP(K-(Q7 z=cofT2N>W|Pd3J8dl+d2o$3u>qq)v+y;~8l=uf4bcTr>)SPr*g4Lf)uo6n(xe<{5J z902p6weWx8rSC7Ksgq_b!dK$KH#aF6p1qZYlool&p%dhcmQ*BD=3CfTw-tMJ_-BS~ z#94{P1-4a34Hj;(VIV;vwy@drU+8+3tN_srd{V69%h}rtg3^R2u)M~#Mu2`rlM$;i z)vb^wza<57$E&x;8G(nf)ylYZhZ}0DSBQ|~{aF_k=!I-jjhFN}t;iUuIr>}9)>j(J zpV#AYpI~r8QU%`)bs0f;#aD#O!}F0w>E;!P7VAMjYzN-i@5a{o@)pcA*YJe^jl=2O ziEOs;*^2OR+emY#@hrxela_=>_-pUcr|jj*%(=5eVC;Mir^Fxq!Lhs>Q`UkPILo>* ztJgGO#tzp9^jy0SfU8$oMquktFU;=Wn4JOnmEqKsm@Ejs14cYX6PYdepe%C1ibkfW z|3;zES!EA!Y=cx}31iQM6a0M#xN%PK@LYFT{P@@kM;dN)rRwD>#WqwzC#h#^!J_fK(02>%2#JzbiYtd>iJuuIE0p~zB}&N9o76KA(@ zm@|RWs&wGukP3;jQWOYcS<^djS6&J|ShW8J#Vg#-?*bQuCQ*S-7dyz#0pPEoGQ2aZsdr(L>e8Z1B@1&$fmcc&581i?xd`D(&oCht zF^q=wnNR}c@xLOy2)E$4AF^yuv$K($XW1-)4AFqa+>@kwHh<|mC-<#x6P8Izd>aW; zx0tgr3si4HJPRD9_6S!<$~n>q{^gpn7wPKg^0$v5A<~aN3v9hjOFj$lR?&9E>^I>% zeaPAkoQFB_v98C{E$-3_VVpi&Vz>~!u>=_=pW`fGwNWa0Yq}B&qp$K33}gBns96;^ zx&}NK+(nUe3XWaD?2p+1!agY;tErbaaF1-1&p*MPm$CMN(nQH8f@m-fSY#T@fEH60 zWYaS0aJ3+-DRNVxY@QsK7>H04eY(G`Kh?sYf*Zujvr?56O>5L_f6sybm3x9yjpzK- zKY4Nk7n*`WVp@VI7As|g*w^pPXv};G)u(*SCd635);+esgAM|2?BQ%CEcSC-wGA6y zeM&E2y`r7+EYHko3pUC+%Ay~ocQ@d+)b4(mT^=xlT@@qMYA8D`l{q+$#iOIm=TM9W zY&Bs-PQ^5HdHrwrjS_uj!vE9*c&ZWnMa~(mMDZ|4UeSyNXgu5T>XlCr z`&`LK9R=ykw6qvsj{9~a+lS0#K)OXv6B*z-eoQmtCB@df9s$r_WWW<_3V#pvu%Lei zYFQYI4YLZ-Ct@dEvRn(H;hzM5M0|-e8h0^bBe%AMI!H+&o0JEOAA5S1ZZ1U{h5XKh zY^27KZ9(p4aG=Sy6v_RZgMmD@Cdwb{J0!jD@_p9YVN_dNqZp5I#J-#fhA9tikk`Ba zUf+`a$#HgbHnEBp41VTcV0;C)F&hI$J2t4b8Uij)-J}=K+3(JBFmBf`5I~B!2i3ER zT=NQ3WivYlv*>4FW~E!1hUY{2f zEwN`QAv%AB`I_Q8xVLs38^8YGg1PgA!ngH$6zT$m>Q@13p zuSE#a>J<$Plws|zUnTh8ciYHs$j>^$R=Rrx|hAqE<< z9JAm4Ag4$Q1dr$xG{_>@paT5JUe?bEXF{gO@Rtwoz%2_B#5f^hp9 zLpT`hGgnw1~&x?mC8)9d6q~!lpU4xlz`Ii{_(X1$u z7AFca3=_@Y(ilHV4+uigUpX8oB}q%$P26v?r4_G8(T-}0gfj(IiC1por{83M5vwx3 zdsP^z;hYp7lEXrC%5)Drb~hJD8kN=-PKmBkB9AMQKYIR^ZUFE8`~o@-1sEK_*2sly zu2Q<8b z^2BnJ7FFq`i@}J@i6%s7G~DhB{l=WTNAS=X0+(}4UAYNIx;6``crff1sHhPVB}ziE zYZC*9OVFK{1lD}X(?`n|=t30&3%r?%suzYcKQKYghZ&q5vKp>VK86kZm;}k;@!!Z2_vW>E#Xji+}v_^|rii{|2 z7L%AQdv^Cg?JlgGBJ1B)97CL8UpPPpN4XY65O+(yD3(^`?&%)3-l4v55kTrlX(h7S zfJI|@I{I2107!|YY!=NSU##ToU{6r0L$ncJQGw|T(tD~nbPu*1+udDdMve|CC_c-E z@x)r`9UQ>4B3&!g;jj^`cqVQYOIM_Wf7au`06dl^Z1MNS4;kv_2lYADFu0Y5)ImOsHNpBxt%Zu0k4u1NLAJJmR3T5vKGi-63 zwS-%rY$ppMD6fUM@@t~5mC4GJ9glL+*z8b+AZ_1|}OX|w|7=QYbkaVHEsI*CZ zfB6IdyY=BQ0s>CIhj+vndYLQ_Kz!H7@DQ4bG@JG)ih*ZJIKq&})vvbi&By0ie3bX-o{OF9%rG>&l$XY1VOU=B>97#>qj{}gJo0SnsF zfz9{c!V9eAom!$97iZ6Q_H}s>uD;DU4Iry=qDUz7u-KE-*y<;T%!B$)PDLm#vq%rs z&7RiR(3Wu5;?+QQDJC!sJ6K?N(qKv`d>|1j(cBCgvFReRc`;cP(@XRZp6IE|&Q5Vn zEbAgnOqAs5$IrE{zz{JTVFEox@0e5SShv}5_(?2>BSYIzY+S?6Ca|`B^S1b6-AZl{ zrpT6c_VaVPdpx5!SCClIPZk?xE_+R*7r!8Y*tD*bZ*}<@dw%V=ah>9pg;Uvf&r$yv5L6tP(p|8vE3N4MQes&EsBE`TN$u0C!R$?su z_%E<)qOO+a+10^OQ~dimR-O|k|1YX({$-Mt^RMVNwy>lcoi!7bpPUt^4Qo}}hChC9 z#vEJKTST#meu(lDfv2g*qx18o?p5Q_WKtI6+e^F{f1H?GYFUdhJEs@pX0p_qTvUg> zLcn2)^5_)ftfr&>+2~?8ofXT-P0kBc?u3|!)eHq62A7={W7OYVnfopG{{KLwhzWxiP)%s_B>f=gzbPdMIdiVf!WpEuJZp!58WW1foLj<(KyR?vsMfIafeL#z# zC%1(~91mAM%EinDuq4sVHSPWLtu;7wT()nOtD|Nn_7Ri7Xon)9nPA!w%VJoD(t2u_ z8BfcG2Juyx@G-_@ic^F~K&sWB?TPK!+Lfo*BL8Nar}?ZWIhlK}$3wHt_!QHp#5v|Y zpbrWFmX(e960~Le43jG0X;ewN_~9dtgcCh&GC!0u?27%hp|=Nkxy~sw%8&J}XQJuZ zu!d<8#w5mwpw@+#3#}0ga@qG>Jj_;>!wyavadh{W!t!x!r>3vBNowgovT$38OR=s* zC=~*0Gfa(`-oA0~xPPCpZ&mhORGZX5?B7wAt)0Jbu7z2@KA=gNR5b*y1jH)_Q&zlTVj_9phTbogr&-& z6l3@9Kun~n*chxruylhuzbXwXcz)~5Wi3sb@oY01tBBzd5}lA57k9=t*s+U9b)w&o z-8uS-coWaQ2_~kt)ykuChEWGTWmJeBTHo8qZv36~$W*}_n=q0cVfhtfO&4;Vq(fK6 zdyIFJ_pq~^GXFO7#3pKrmAAW)W&_S~H5U!hQo#*fasnFxR z^W###jn0G+9(0MMeMq{ylPl6TkEQxDTQ&DiKm)2!#TOlaS41$v-vU_jsGF)rPIQ}9 zy$c>%Gk0T&G1ls{7{pcDZ>lF+wxq{H?hDH^3}1P^wx^146e6>ZiZ8v`alRmuj?@M)d`l12HRdEdsmVMu z_c7MVp$=!a``ygVlC;Dg>$9H<m|t41oB*yzO^D)Nc<~WOE6&#B=b~KmkeNg{^^C zwKw1BYC~;pLdk|xUSOOf+sVU2eN&ui@RFejc~K68N=U`F>dN@fd;w!i>}Y!m@SSLx zl#d}l144jDfK*|RB~%_FZA`3r582pej;5MrqX~OqyU&t%e@4s-MV2}71NgZz$C^Q$ ze*PbT`CJFirfpBL>NajTXKSG5o)0~^0%`zIFYQ&&M&@Z1X>ePQm&OZ(kz*H=DI*lJ z&kQw$+~;`>DaPqtAtVb0?X)Ye^eq!z26nRi(R`DS2}oy@8f6hAJF``+Zy=J9+1!Sf zr~6o!0_%iBDap=QLo2ma>lzkjZFTY-U$`yzV;I==w(kvcMa!FEx8qGLtqlA2POi#lD5Btiw@K17abJfb;@c<_m%!2ELfKT8wHPO}#kD&-(+w5cM zzt6ka3dtRZz#$fZrm|gGtZBk=u#nghn{PRn5yFn%s{L$*HMpsKFPGNtyECi?7D}L$k{1A3GVu1_X?n3MGuK@e`>85B> zf%yi{Bu5avHOswAy8jH2A{*v`Y_Bmk`io| zSa7l|-kWq`ub`7?H6!v{0$mN~*-#e(guFv61X$IBzqe;Q3%yo1sJ&%2C|*(a#!=G` zC9e}M47=`x>~RV5d1dGZ!FL;JE}SL!@J9AepM%MQkBT$F@UciL(Z@yj1(-ohit0aBvz8NXKRu5>iLHVs>}-LbIHH&-!$Me)Sx=U82FOS;t(AOE7ki&E2VDB* zEzKtugY_lwq;33&K&s|$)+M45?OKt1{}(~eK7cH>Dw)7GtTR)6SkKrD_<^XTXfZd? zmebTK10|36OiutA(zf1Wt*Y1nm7G4$)+o0}E8CQV^Lm#s#ho4ZK4%#;dQp(;%mhzq zzcEI|3hTtdX6Oray;~|slTZgT;7a7vD`g^PHd+-O-6TirB)XsYg3|*n{;yVk3q9FU z(k!-vKoabo&3{s(IA~?`XHt>{v>|$VcpR3!Dy1w6lklc)x!pk@F~2-ZMRB;L_! z-er=ckRl^wL)-S@|MO1~%e^T2%IeK>`XqXUpKe02UZn#G{DC5n#$(lp^>!Gl!e6Qm z@T~#xUaRL+C$FtLj87UH#SS50pWsI2@)?c@n?jf~Fiwp1x>kgW&0m#Hn4%;72SfDW471j_dukRJfujp~&iA3qrGB zzuRv;gyKrl>ed5+l)V4l`IXR4_&^B;^KG0)lB3er8bSbFdt6z7|Nz6%ONfSF9k;(`QyU1}P31QI_6EdLCX&X%jB3i$ z(5&=1tSp08X*YEV5KyGkT2Dm-28PVeVZhO>2c9J1lx&o~`piH!Y;(gr zN-c~#;t8xFtA*Za`cl^K-Ows*7ezB2U^CSoyCMB>ORHp!W81&#(Rs_%$Ri~V){aTmw2HOS`&Dp6tIBR0Vu1`v7Ozt%*LGiWVg zhn#q)#RWEr$|-AnMk*i2NV16cum&=u6wEk5?sNiIyBa?UdfVt)_Ny={d_8;vFMW;<;`GO98z~b6hsHm1M znt5Rl77P`T10S(=*qQ9`sff(TX#xezFbpGZ#L)H@>=8UwEzJ%XNKq1eDGXXG`U%e6 zHsJ*S4}0&q700r53%&|M=E?v{Z>UT;5JE_33waYVX#rtXRS1w9{SN(x{UjZ8t`%9F z?|k>%+y8p>=rOi|qB1iwVtF&yIYd~YX+AUn@`~z@Nb~ulSz!~${-u^$^Kz}zida8= z4ZWj6rScfFgj>+Ph2YWyls?{1FW$(F8t)&9!;15jg=|qB$ZBM3;|K$)zGlkn-jUG+ zHycSWGjMa(HroR%kQLw!FNXk_#pa}Vr`vPmZ^ABnK8x?VscbH^NxCp;cQw}D>cvF**RkyEu!QOs0>|zF1D|#(UM+;C)tlR8F zK#S+}Z^b_8Q0%i(?eFhSrbk1$&*A#+{=O^q3FE*4=lu5*s(Os5`Y&Uu@}=N^R_9|M zxr>sXxoU3zXo_N(e;LtqaCF$6FU`H>P^h`d{%*6kIN90lrzlp@@)}gnOfZk?z!l!0 zR%Ss^YIX;}oztD&W`~2O4(;Ek_U*cAPY`RW!#&o~42x;T73N}D8a_e=(qYpr&CNYO znW8=hg*DToZC2&*s`H~0f$~vcpPgztx6|z(W5AZ(k6l6l+0UBl5KuWRR+9I#i{q~T zhZ38cRNZGNs~clD91IS|up$w=>Lbm+;hmF0 zL_P^+vN3uvK0__35V4Kl`)SX#Mt-TsWtBPRwud&%RKsg zU+zyw836&-HYW<_zzuloe|M|5|BtWWm!>%=R8iJOro<36CVvC1*E>y&2ZtXX>sn(7 z93;VT?<`Qc0&}_TZj_?j?5<7aX?gn<>YPo`bi`W_Su2HcrN#?{Nl><&)oLM*pA|1sPdPXrU1}5;tVWVFUKm^ zVWnywnu+Hi{+l3A_+rU1O3};CcY0Pbe|Xlc2p5($(Lru0bqM4)MfwKl(yV<(iXF$q zQ9p@pPfWZfs)=4CWe<}Fb}1{9P$f<PXJ7R*OD_!vS$uI=eMZpfo#D@RHg+>30GS_QCzge3 zS#?iy;tR|1G3*0Qf`cG#2priV^_e$}S|dj)wR@`4hzvrF2O6d?lF1D!r3vggyB0cq z(^@GPLy&3TWE2!oa0yH;`1To^_v_{xhu4(Vj&eOy3ejSTy?f}wVu-uOE_D?Fy%|^= zs5=;2;uhfmW>3lcM_+Wk2vZWCH81Y2L(a&+df+0BVBcNFXUifB{8UL7W;5IqDWb}a z0z9JBs}4?Ovxy%NVwMGqkRu(gO@J?{%$}27aiMZIiA-#ld#`4dOss$iHDV3v0%;}I z2e>=ao*@vf01y;H=Xv;7OHBHM6)k!4jr7jtqc=}yPw3N4WqXI#r#L3#1*CVqPeNB=KQdSO-(qS!bwjQ%i2$3Q z|5jc`jJUo)K(Mg=UiFFJuU}|TgE)3b-Zcg&D=r}7pxI*i96Nfbck$%_7%;BoQGF=y zZfOiMjFD&S*uhXoSjyLa&?Y^4Tdsc0fqBBnv@VS4=D^6TGOifu9+v4qiA5qKs2lpN z8FF^*UvmZ*2G;$Mq))n*$=pn!MSl8>`T9)wZ%0xI-;Kie#DDjL_r4R%`qZwG zL0&H+9iQK5326l>$+h3woYg@yiQ6%f4|Nv()eI(VX@S|tD}ZMLSw|hOxf;Ib@V#-! z5Td%ha?T#@Buf?8_Yg9E7q~vGGG)XrW}P0Jj`8R2C6x`Fhdp@=tJ7ke2Jy8W%Fh0xCfT+ATl1|sJ`5;#scb%FT z?s)iO){&?C7d|OPb5NF&-Z?@nEqoCZ6(t9D+cK;?HkflOes*f4>VV(0Pqum-lzZ(~Zg0d}BZJ-)7N2F3^ul~yweC_F7_KR=87L0Yz9G(XQv_AVKM%GM4 zL>%h0D_=mkVuxYg`1PGaI8^$JRg>iPKeLl-(qHn}HowlH6qTqH)&R6u!D4;(kY!?g z;hhG+Yu0-GfD=O%ZjStX72i77x2_iI5(BpLYIOM1p#pxx=`B*%ty5-Q6X^x7a9k!J zf`<9V*2dL6bh?xq<>844LD3oUsNWi$ugn)sJrD4Foy^%8-b4N$O63b(fy5 zsD6hv8XT8$kL-x#mz`p;}(8bL*{}0 zG2Xf-PwCjWt~553%}4b3U!nj*lm{C`eC4d>EVvG9>!a^`zHwKxAViuhi!rFETQ*~G{QntNR?0zB09^M5)5?%oVXql_qVe^+dyF|Od z3soGiXO|PKTE@o@nfDYoUW2eDAMB|i=?n{0_x3LNZiTL3&7iCXf1;SKbCxv$Kf_PQ z7<`u{*hA{|d>>C5$;ze64U6`n%h1|q4|ZJM5bh+TjsRs`1DUcJ3ssZU=l*T5KTxMc z1RfEo^02Q*Z;XPH;p6`Mox$eBNCNbjgrZBT7NNep;nXD{OIB-O;;w&!Nf257m@E=m zopHEe<^c!h_xD+56nv0j=ZAT8R4m?M)?ay5UCH@pYkKtc7gtC*miCMimrs0G!jr1m;_85j6=DVR zmu;vY*pB#y7mq#)Dbsbgwj`3ptOoK`YW9A3wT!-g$KHc%@x6eK0EZ1xiF)}b0`ljx z_I^pc0sn+RZT7f9Sk?OSM*S|0kkib-_ zW(pNtHW(W0n}7<&*L-J4*V*}L0U)eif?)H|QO|*fQwO^R;SM_arY~$xJml){_0m5V z$$WQ>boKJZ3UIkQjs+kH5oej8o2aWs=~kR+4YNRz$LPG` zTx&%mcE!{W+mNP!R8Kf`7WPs?y$OEXA_R&DX~q_BJvD);LCz1S`p?b*Wyr#;TEOFY zCTGk;v4FFN*)O|etpwtNAdK%_~YqdW;Q5a0PRDST4`YSp5vrFsazA41LF=1YHZ zHQ0dF3hXJ8Fxc(DHXoET4dLlXZ^S8p4=AW8ci)^k63axCc=|?dyD#M9;?Ug%SpT+q zxHnSX^KaqmLzSZ`8<_mDelHYd<0dC@=ovI2*FBb-i!6cgB`ZUPu$v3YohjIsCJMjH z2Dq3cxFg5G=nkkH|M%P*Ur~Jsy)U5)w8r<;5mY?^28QxzK?f<)woTljT5za|;B^PV8NZVdW59B3uR8y`l;6crYWrc?H{L4pLOc7MVUsI+}(OC(0(9DX71GtrQWLMSlZof=*d(|>U$f+kVEGo zZHl0!L5$>9Cw&lGN`ahq2)?hFpGxoxf;AGB;;=|iYgUgSlB-1^)%reatF!KGM$z1~ z7Va$Vy7WRDSV(_nzI-)@f_Kz;{#)rvcCmEj{CM&|say$A`74zx-Gl$dsHb=-|JQ<* z*Wwp&R2bij=XR`$ zuTJ)Nn;9s~snoc-HyeJJk>1+_X{(gO#2fZ;z{1>PhTD z2McqPBRtalk8wA5cyx+KvsPyH)!fU|-N|I`MU;B>MGhu20GqX=@xjS{HMet8Pw>2I zIyb3y+XcHF`1{3qPb{bDtHWtEncBr)70-I(^ON1)xnK+!6d$(e&uhS4T1YT2~R5d*C>E);tvrJNqCq zs5Vyb?v&FF$I~q3_Q9$J0sHuP2Mxk>bA)FuOMI>m)u!_hR1+t(-&xRi>Ni|Mf&MbK zK>fVjhjh)#D-f`TmNirj{ms{mg0MC1@>;hUID1vqKV5{tDtRSWwA;$iA=V z!JZ$8JAd?3PN(nDu1#;b)iX*KF&-K<8IjiH!X9BSf%PSTYw=??gI$d8WeQKrX_%*z z*Hif$zE0c@=VD_iR`4W1kNJs(!`73$P6O-o)3Rg)x&L=*((uQv-(qt|#EQk_U~9$R z%*>$t*%p!s0Z@6gvSl*t>h*6Wgj$IYn-$Zydie*Fe!Tt|rH!0Q?akKC683FBhSMwY@*cBRd=)K^4*u44-T7*52vIw+x#V=hmE@nezEBlwX&n2%l*1e*i z*Mw*-;5cNcU`{eX3S9POaYuf#$h@<-7S+szjq`%*<3c%^KCA8^ zXOTa`i!7VzM|mN3jI$CS&!niy%bP}~anYlrv2&<$LdYIr#dHzWRv=l`ughPhE}Tj} zp0HZOvmdZvBFhe*=_*ih5~<_PM$^_+xK^KZAIWpcSN#}_Q}4=QW-!g9zwpJ<5M}Zf z{=t4n1?=)1y+EE?X2dz^rGbey0BuYhFq?Kf&=YQ12W$Eruxi3z(C0z-q82-dow?FF zj@@2@YaR-xIb51vrkzN5ou$<()#~~wnuGQHbHuIK70=;!u!dSRXwj?-$`JbEy3nY! zfiq$1i>Mm<(W9UD(C&>u9U(eljN=Zjyqk3_`JS?I-l+V~lP9bj!T~ZhN!In1!|<*! z5M}s8h^=9Ok%iwL6cpc;kJu9X4K}{nqkqM6PxOD#u@VhL&^F-?8DCzLgJe*(6sOce zq+PBDKm~#)NW9W=EdqSp~bqsr%wo$-{My9bh{I*;%V7u3mDi_@pDiV zNGJG(PKi#Ai@VGO5mb#Yh!-dpbxg55s{&&(D!hqbzTk!9@<<*h^*se40MK{9Bci;{ zj`0^rl}bf#Glf5ni4J{L2%yblY$a&9+M={vk~>P_g_TA!K3l^vg21He{@H-MiDXhn zAX%k4@hWf9$;;jB2g~jE3X;IQ8Ng=j^2TZ`6%0Kw!O)(ople^CHB&suExixq)iN^Wz8_MV4n9K0;<@@X6zIj=J1Dv9^)e}Yz*%DTu8!$2YGhwj;ueA zCR`eR?1TwLhtN>Sic`4q*kHfIWFLV@YnZ3Dw^=(LBDbFGto0X{jJWeq_EfV2RO+j3 z2a>V}EsbL9?$!%4B$V1T+$|?xXVJPEW0(kI?4z-Zv3~Hdy&LCrr9dIUKDnY1wmo5a z%nI!6sejmF_K=v4pMXxPFN*Q?REP;2_YN&E&a$C89CTdlMzi#m4!Q&dG8tnNP7q;H zL^*2ZgkTO#`H~>!MA)Oz`$^5YlNRZZ4UNwLz9lzf8S^R~rl@~A%1nMMwgf9}z znwnpg`!Nj}`iM!%WTs);_8Ssj_6)I@8~GMAA1X8ap#1uc^P;B0eqMr(q_)SnFh<82 zeeS(IqmlF{=T9{x1ZO6{f&L1p&7mOP@<^j3$alg%SO$|CkLZW+0$&~3e5nh+GMS-C z5#KGCkpY-5W0Nr1^)7vfoC>2zBlzQNAY|zfjyQXnPX3S#PKDZsR#n}5;$;xGO)TWM z!ZWTDzzgodn07cxWJfS)HOIoGT3(OXw5lhO{>|mMWfSSK(aSV;8LsGwY-!!@y>W@!czadNH%fUDn3>OzhP6f-@=C?Y+=Z+zcAm*a z+Jng>d@niN*BXWZ{Mwhd-eIRo+1ECFFV~6#scB{MN_U~$D3zx>fS68&8}s9wWtVDa zCugIfb(Z$y>$O=GhtJ|IOHmHmw7Co0jyP#>0P-S6bMXi^v%h*Q2jI8o|DaHS<*gJD zbJt3G%-I0Wqx=I~2l9@aNPhxJkv{$!K@#EGUdVYnR?i_xB$kuIRX2!yjGp#p(Z zIfHf;oO>iUZQ=Jw-nV|t8B&O$1=MJNn>P@FAo`wcahu9^-VE}NpwR&fbUmCyv4?4e zJg!(59u)ViqyHK4Ejma6$R3qYoI(v&4jovL1DbGdQsotEuW<$)@R!}Zxh8$XaLGt7 z=NVSvE&VHTZoP8uj9n`7OwfC9jN0I;TQ2Q+UmeXRI5=-S>yTg~ImU8;!@NGbu@ySKrW3Is6*R9@+O?{!SQH#116qZ|` z>@nA=6vFP^xz@ryEjQ+l&;fKuMQFUJ{ew%dizZ^DfLLr`#P)%(vddDF4-(2VW(yJP zmH`*D5-q%*=PjYch467a^}zceSe!xTEBssjmogEr8Gm-zCHcol-i$3Z{e^=4K=zh} zl7sPxFN5#0@4NCK0+?W&q(YAPp>sp(>NoK2i^r3CHrCTuAxFz8RHQR*HmZ4>s_1{C z#ur;Io$CmF@+Gk>fGUFFthIC^+sEv*Ozl_(pc>;@p2~dx0(s>5OHn~}_1tMXj7C6VRqtnexT3kPNMVC2wo1>otR$}DDvsM70(D3w|lo}1v){j#Wgh?Hh>5kcY=n8oAQy%AlA6W zyLfAu7VRfDaRcmp?*9NQLy93tMIsE1)B?rwJ6q`bIsGLNNhgqxQkX;5!iD*DwQpfB zVE}EvEZ?rY7lml&Ci#xm9M5$_60DDj6uU>4Z!oCA3PZs02GP7I9p`-lY@Ht$&0vZ0Z%_6PVi7T4d2R`N8oIY-ATtg?JuH=euz2 zm3$2J-HMqC?y;xx7Y25+!0Iqa$q4pC)jqgBIu)w36pGjZj+yaN_7mU3Ew4N~fY>nkI3b>Fjv?d~kSN*WD6m9#@x9+7C|PHPU9sZ3(+OwTCx7|UYuM%N!Oj47 z$XhX(~@#{>C?c{(f;U=4t{u)@YV@~--TrLnsM3cNhR`HxY=X-!|glwi2N!?Nhz*(D)3;ri2Zz@>FU{M~kFim10H^svmdzX1^mub~NF;M-TN-tlr`V6&|@KLw42#pm~`W-1)Is}Ut4 zg|}8*#vj#30zt}v4H5CVsuZWxrRv-jF3XIhD{{Lk`9vYLE8@c$**$uUWS9l2I??c< zgz0r}{_2K9&aznukAs;Y5lsB`75>ZpX`vyqR(uhENf)S#9-123mHlFA!)>kzYY2Of zT^pgCkSjm5?>`UtsL<&Vh#HvcWQB7%6`#H8tt^VkA@-FCvg2e4`nY|w>V%h({8+ET z(yEuM`1rtRX$WTu8EL0xi!XMvv8=+Ys5 zFx%$KyUB~ij;+NbBxYhCjiyP3YrA*kC{$HSv!{eJO-O zB)j2@$nf>xc$_>E$gSi6qNR9!^b`-CPI&eJGlsDi$i13m=f3QMS8u6?$$Jli2^F4D zaKx3cJE0Z?J9Vu>X*Yzh^0b`e3(m_Ob7)(~avX9C6{;L$a%U~$Z2^!S{2U26UPM@c z1;jbHtZItQtmYukZ(hdvs8#aRXfhhHvNm}n+rVkx&@*t@05?F$zdLUNSyp}=IYtQX z8>X}Csc&5jUXgcK;*yMq5GWHw{{{<_54AO~cBj?hYy=d*Q;triuDHfhLh!#a0qS3h zY?3AKUyE$+&)K`~&wV@M2qqMhEL0sb84$H!O{R0_#DKvQ0U?9R zlXK2g>W+`b)Bmqj<~;6)8&o}ZxSFd^TD*eP;mja!@L=7Cy0hEEqu>iSD6PS>|MOTU z=2j>tABym85w)Q%>mllihazSo@~!cna1pZy`BUoxELPP${VdZvsMu}N{zDn8EtaE2 z#Id~i1*n*;fpM8_fwBqKZ}(~hRdu;2DnVr4ts8(3m3BfSMeX>14PpDJ6b0QiEV4?0b;w%!+`@eD&N5@iH6B!PAJMG)S6wSw<b_#R1ei3B1d(5#x;0W#F>@)wN= zH1Gv0LUEJ3JNcMh6xE*+@52g)uJ9kc!QY^)P|iYoO`2q^eS`>f9z?QaXm_t4;|nK7 zqUV*od{&(qr+}vm&V)>5S6n=i4l>6WVST{t8WbQ*y3A;4@bftcbdF<{s9+PLZJ&Ms z4;OYPG$aFNHR9PcdZH7f1DAm)V+CiZ?~V~VZX77E{l~YB;^8ZOc-^vUT}#?WsvbLv z)!#}C@a!u&0VJvF zZh2(1=->B#G0zej4Z*-M^|Z2@v5L%Stk@`&M#%9n0Nx|+quqtB{!P8xmW7as7eU8n z?WiE2aXJFe44FN2=GATi@L`{S!B2@{&`ogC1`r8$?KU-{oBpvQKw&Z={^WrH;Wpu; zGVF{(`qf_`E^=!L@o~h4z@_xmiH1-UOwM{BqBtwMxAZ`6uwWL>l(!&YHkRlFryA@l zfJsJ@diLLn;U@gj9rFe4ar7S9-|}_Am`EizVII8Ym*#IicF+Ju#;TB*+x@SF*g1ak zjt!ytwero|*?W7)TZ;YghU`_NAE^(2>9#bo0}gzS?LYOsQr6H8RT&sd<1!6Zbk7kJ zNEbm3E-b$n%1^YlBei;(6?tu!glpS-Q&Llf-Nd>sgO2|xZWubOEG@4wTU){s_DhLj zxQZpUfX*g9Kr}kMtA7Jcgnx!=V=TN@ZkNzuVksL3nklz=Xi6i#B4at-XSJJ~2eSX1 z{{o-vl<&-9EmEN-ajXzGk}&}!q5t`&ktPPa#g+j@Ajtr5C*4?!?V~4wQ{Z_x$=NRM zfa(Vywhv3fT1>TTf5e>Yg_lnk-J5(Nk1(OB<&n%c`_8FoGZAa{Xs*jseTSvibc_QN zfZm0S>-R<~F}wOEVjxU7X!W>s(&e=2POziw*o8b~3KBM5JvCbBNO%}`R$@Lg-Xp)* z_Zl2(`Wu3mzHhV+d~V?nF8%StC^F9B-Dg|~2^6kD)4aqN-`^|C^r3M*zm)V)X?{=T zmiM9>`%PgrzaEJkg930FOxALWe?YN%&gyjgBx~rq_KiMTFp`a6$wwxC6=h(bmhAA& zzNu!Zf5DB>(%U+|=_CX$@vb1A$uYFbIx_nCg?ziiJ*9@x?xP<(GAa$Sup9-lu%@Tw z9+IxIr;qeXo&qFpj*?eb*~f$M^sSrQnbBH@18hBmKZK)jUl8q2pE}mhE71tn<{twl z)Sg+RJfNK z(V9})xvMnxnETR{pK-O;0I|$aEg))|Wn7RlT`t1U)T>&A@IF`v-eu5;nr!ZV_dqeW;&7 z3KPtkwV~m47606)7C?5#XagLo}d#v7z$wzQ@IQk9( zzbqdM1Rl1K$h?ekLPIk(#!GMfF*5{TSR4MvNERz4BihTwsJ@luDgrXe7Gv<2HO+GQ zgD58GY-DZ_!S3d-5{C*oWv5xAuVx5Yb_Qr8s1Ra}nzg(fY&u?B%6T!Xo6AYjX2(Dt zE@0@sH$&}m&pDj5vA9T9@H7tu$^N6c0IR5C&>3oMvtqv$&y{TVhC*~+50Xg&7*^C7 z9mFzQx~Qd>7hZfvu)H}_?Fu)Eu7mGRnSE@?ZUN1_cC)Y`rFs`gr0@;yVmB;tPRr`% z4Lv}-Uaz-OOH2kfW`KKUzb}P0n#Awg?+H@J0c>o-L&S#WxRyrSRlWUFh)z!XC2WBJ zfu!qodmltWX&S)ah-7J;CL4eh5V!y&^r)^w9-wXn7$#Rj$*Js=Ga(%a1=7p!;P&2A z%?XV{u_TGK9W#r!;1bA}o{}=;IMf03k&&q|k(>D1++=0dV&Ni! zLE;xFsX)v&qWqE-FqWSwb2slRGe9`??I)uc>Qig+v;o`CbK~j~MXPwkS@f_B)Js?< z*rLlGs5Hg)R(9?7tYB*OpLp}BzLsVgDZ4UQG+j1!tS!n$P_^V?)cRScMb8WdAX$MoI3C~q(_3kaL?`a+S%R=+k$w%q}$6#4?`pG!MLonk!Cb%;_O1Z^+qf(k2pWTrA zG78HgV=gH*^JpjJUjo$LST#hEyYS<3@d10#;yfHG7h?`s9Vh>v{*3LDcP`k&4eiHx)7@L6<6tF>2h%5N8X?W^y?IJ2Y1d65jZpKDyl*75jQ` zN}q{vp9ldWf}1>EQrQIRv1|poO^*ullGP4iC}6}=c#d{hWgLnym76msB5)D@9iyJ4 zNZbxU^gM+~NJlUrc{9HPKuiZGku=lDWdfjf2}DIc1sC;{W?lBGRF#Dj1GFh!I_$#V z(pPGcV?fYJg$&D9NuY($68j(oDFAtD9^I8MYz*nni8I$#59C@VL?GA%8JjIBj4&|E z#o@3$xC-4ah%6xkNk5gP>Z!`|w*P3{_D`FmB4;O|5>Lu%_U%VLHq7gRn(jw`-n2iVjFAvS)X%fxqjC-5ON zYwp_OXTxDH_861*ItnTIMJzO#S;<8{G733ux2GqQ(0T`rVx_6>8uQJ;pAvumI5VZR z7stBE&B-m&_wlB3D~pY>@tv7D()N*zb<$yjjY|jOErbb(#7q7$^UHG7b`?Npfl^7$ z&|wB{!zoBY5GH%2+OxhbfztZQS|JC-e|iJ=d_%L9P$mm9d^?iaN*ZOL$eaFV%A+{7>uJ|L0OI(fa zCqzfNPyG4zFP=}C5<=plQiS+j(T3h#%H@kUm}{V;!5Tk=Sj7CFszuJW?Z2sLg+BLm zSXiah|Oly&r2-#o(BzbMDxk^`sS zjdU*Ns#Yus9hR3gkino<&9k;|2O}yZ956g1UWna=*kIyP;@QgD%$sB&F67>WIUFv_ zk`fY8KKU+tuLLbpy#00;Umo54VRV!LtO5U$uGLeO!B*h(;R^T}Y7?fbT4Z(yV3g$X zZQTyL9(Hsz9lJjoRl_X6@6_(AkS!P2%3cETp6BH+?~&W0_fAYcHmrLzbTb(6;D) zC;(^)%e6!}GpMip2nocxFZO7$mhmbuJ-w6?=FLxLnr?$6k9AQH@eo06xp#k2?$WkT z4ae-xd6U|+@OKd4bkFmO`J$|{_aud14;PPvgzQ_?%UQ57sLVG%{7eptFMuUW}>*p4t0 zvFc~YY}&tmZ7mhCioS#5>B!lAX6GmCF7Yb8>@E2_lckaK@j|T5C!>J2!d+boeK57a z&~u2n1*)GRE?P$>dIK8m?Qd(ri3R-n9VOmZywq#G4uBhwE|BhmkI~KU(DgS)IQZLt z@Y$1Oma1fdLvRztTOd3kX}qh?*oGA|@9*_Q`hH*r*jh$?A%yK2He&(Q=Q754$r`N& zmTl#`4bWXg$zS6kfU7WeG=Vw9jdQ7~W-O=Gu`|dIek=gG()g9xHhyg#{6mMEJ~$ z1SQxki-tHbv0hP9W6rixlcLcrfwRMMiq%^nl@fSZ4laN-S+(qY-AW_jJN&r&356~m zUU@)Cg`8r~PV;Bhmv!8UKGZc#5IM%Knx>V+Il0M)dg$N{82GG9h4Sht2#8#uiaH~#6^UK*cy4|L zf9W(_#W<1EdG zZu8Xx++gQqvWp@g`#k{0%uTCp7RVg2z-2nFcK0Wo#B^F6PA77w$;srnJDgxm_)Aw! z&N(QG_&sw{yu{0!qY1}OO=R5ExSQ+Fc;$~yc5(9mlJQgb_xDlmgz;0mQ}aK#ySoR+ z<8H#W9#_p?wLP1h#lu~&r^mh8)!Hfh&v7^1o!Tq@V*!w*iCG8_)ZX=9%T-#TPDmk@ z>>EkzcRu{P8qsqWFH|LR6E2+QC6i0IXyrK>z=-XTsM%U$DB3VK9GAepVo!x{1UQW{ znSiE^j=_Qb8XDD}u? zXz-(-hrmNUG+LGs%cKoc_w1*?%}_p45k)RVoR~4Y1WWV?sr{h`2-gJrMYvo!X&U&x>+~!RenRu`-d2f)P+v4g zhM=zeUt%QKr9?Kpa6@kapaz9a01n(gp6wOxB$GSQpPyesX2pv@u9W_pMn=CuZ6Mwa z)7IfB00vD)M>5KQ1$U!MFR>!Lo!uxGju7&Cq94?^l}yA-25lM%*RZ}hflX0dyGge8 zi}TUQ%;Skf$gIRBAXs_F$ve&+Mwrq&tMTA_MrVC&7`lkF(0A{%#4L~{^>y}9ernV2 zw^1EIR@86P`@=3}1)j+I3V}P~TQ~Y>(!+h6>otAZ&>nDYZ3=6uH}~XQO}D3NmewK< zhhli-M6}4hTa&Q+&*1@&b z&CjustYYThyj@;>$BJuvya>+wmNIG%X~-)X?*U=6f(Jn8^-YP}vAGu;2K(QWwywXv ze8#e32mb1jSW!2?O8a+j)po9w?}pkHfM>IMAN?{?X)KfC>-61ghR%finxvS3!1b?{ zC$g|{`vYv$s29JvV)?)ycq~3PtjUu@@8&J?&5W&b#KB2fA$KJ=JIF>1)#0`(BJlSQ-#*zBgG&m(V zE*qYdvT7h0@fv zoBmqanc8hLPI20#1O!UM|!N)3_cPu+96og4~@oB7Xlv(Shek&G&%v4<Lcr?M03?l_**I>Qpe8z@w6aQBpYLIZy@c#l<&Bt3Xv{ z@2$-P#z#xu9z2w6yhsggz4&7kd|sIdi=cFjl#Kt@mmbP{)a_?INk>e_RgPGKrAgGn zB-fljYo%nsl8c^l3?E-3@*BL>8)PNy1qBlXVcUI}?Rd>j6!!>Zn0r@Hv|+_o=4Dr? zAg#6Qh?2$-K`gA3K9A4WM8gdE4D=aCSdfvhx^?XtRA7a?Q9JuO+fyM;y?^B91i{M} zN~1vPPjEZ(uS()7yNm!8(oW1jG8T#A!-_Blpg|=l+9p_zr^*Pg>OES8iXrR(-}uct zRoOM_4D1eFR{etLq=c^!8xg}kPxnCG#XciA%EVQSV1a@tKs&|D$4U+g6~y^I7_Jks zcrW;j6i*(#l=h=OE>ut0U#hKjf?CTdaCtZK~Dt5G}bcc>O&<~`z2U4;62 z#$}8fK<&xq5(p04(&Aj;uD+27- z1BfGnbjLHsV+%9nw{_tTf$1pL#S^0?Y3~%=y{GW%9+p%LFHuVAA{KT1V*~nHB_%q1 ztvDf*2x!bxS+fNAvY$8PyKE4kb5M&oWnqclsPPVY!EX}BynL8Lc?$s%f%QZm3hUQ0 zqzg$B0Xs3X65~ehZTGajq#>+%NUxD@Qm%G@^?lG|0%45r%NxLZd@i)*cgw$&XJ+UG zO+7%TfsmSv^`=PlR(c@$XNUuATsD1%>=4oInKnTWAA49k$B2#WhsUaNa{hx$MkA@s z+qrVVXU+%OSh`BX11+#jiw;V$W3RWiEi)aMJ;ue0SCtyOXGSx?wAQsA3VEbe2gJzI z7VIE#<~yZSWGq3O*1(-F*S3v#uy_Pk&g>>kAL54DlmF=?5u`IJX|3^?KpwGwvNlrj zH1t=C8{{%awBJ0?L4F@fjZr{P=%e?R|B5tas14K-t-RHr(%^FO`;Qq~^4%1lA*0Jz zQ~lH-6;OHTEAGALsMDvBS9GLwAq(AXY5(HODrVY#v{mn+ADajfA)1Gu)h)%$z?(q`vuBY6WuBe>iC9ykjWP{D0{4W*(or% z>`W)HunrVQjAf2!!NtCQ4{j&!uCl(aE}0oFVy0V+o?JS?9>H5WC2b}EyqXzK;Ppyf z!cVz@%W@Io3N}572=c+~b@ z+qI7FfnX>@KNtmUhBKGu2`w%UN~n)SQIAC^4K+WQ#fG!`DAR7ZFGz=b z8~UEDNVlA&bxQPFxSi4Csu~7Sy7#)J)>OyY!>8zcm!_yGL{s;!b&RI8Dh~;jjH9!B zGjMb;QD&pR!2)H-VP1`;L8is8@1wfclWwC`Aw9eNJBM<9jq7#dzdBQ$#b7PB0MkT3 zQ%$kP1SgO53ZY1RCsYQgPNbNu@uyM=zE&=8T~{mbZ|TQsl(fn`9oFqxQzapiucRSq zwP)HwZZBu)fL}hjZX}vkL8ndEa8h)^b>t$^5V1?Bpk&&wAD8mjEWp0^`5%>zee#rD z6)5Bth?;Mo`ShRI&inWYA_tvFs!S2OY%qC>WjDMqQgM~ba=T!wRI0(;kRc3Xl>l@l z2S5b>n4x$Z!Y{9m^=q>KLn^#Niw*rF0&#^nxnhzkw|3daCcgJp2zS6HK&utll$|}$ zAtEP7Na8|&S@qJOhylQy>Hh5SPz=hk4_-0dKG9cV!<3n&e^FvQ1Yz3yZ}8Lf^D6$g zh6SJ^TvWMI2BaK{KKlfSSd35BMf6Nm1>TjO4N3y@OQ3|}6!ZfNjFtM(;%O1+Dp==$ z*I@{&S$qgZUOpicMXKl9VfXU)@61eqa0->wp!w-KDef``hl2J&B9(3=K_71F zFIINV+VeBr1PNO22*V=sJvCCFPC~vCZx@?NVxb#jCh+@W?^>ZDV;>6!jS*GUh8xb>WfNKLD`|0^Tx@u>d>DFl`B>M4y?XD))@K?m9Lbst-bv&Vg1Sc1k{yQR;KK-@$G%NMnz zw(<%qHP}bu#hg9`&?119v}k5gJU$Kof`ht6xfwIoodjGE-|qB)ny;1>_-ZuH5Ob&h z10!B3B{N#vD}tBw#ryY*N>ozLO)MH89JDUaY~uyzpQY^LQX`X-fgyOf?~nw5dmEDtXe4F7_PbJ-LkNyz|byhG*W znrGIr4PWu?%{k^7TcIon$(*T|rYd%Koo+yo3A%~6PT*w@S4OU}m$!G#?H*Jh$+$LZ zKpo&exBU;gRj{C_qE*kbk+dqmFd$pWMer**jhgn=Lry%z2njg`FD(zi8-sUYrI2=k zl1M-xH5x6O)Eap;kb|0Pj9meVhO#}@(%-_$lu_8Sn?9FyLkM_1&*X*bO%66a;I zZ`AS>XB^Rd0RE{)yQqY%EOC`jJ`8r3OwPNni@HSBFfe2-Ee@% z`_-zGjK{jKKqhGALqB^Zzx4GLOD786M0!bZmNjZ|Yh`WLA_Y+2P%3qB#mvM)E*WeV z$~5d1sq_sYVd+o%vQ{rDE^W~q`3+K7Rk30B5wy$dOO8>im4$#D=_RTNI0;T5$q(*s z7Yp_lE)CqF4!85&GGK5bz{Ru_4xBON<_#Efgs)oOczVk{Jp~Ems!T0OL*ht?MdBXGb9a z26Tmi6;{1HXNKj!;`~@w*_8}Eu8zCu$z&)R!T_zIR47lgi={&U3xuC+Df+L)K^+iv zc-8T^n@+VbN6~&zBeUPlRr`~pxw=Ey3ZZoLZr$P0$@UHlWxk*6PP@7GWQ^HSg2Uq= zd{B)uH#wh7yMwt7ZA~b3**|CD&0KX_ohzEp;aqoSSAA$#-Bc61s%b}rp54jZY(H!4YHIsFMD1buj)N-t&y%pKWmb~G_D|7TkzpqD+2Dmp+X09ASu1=4 zpopSTitC`X8>c~tr7zQS0Of?=MRn+TseY9mbF9#-u z_p=zOmE}u0jx&VV%xf(=?uMLhd9r4tE{aN&=Qo;>TEIOm4228`N;pUi_+h)UGMV5DLWs@)swceL?k`~>dFR`BR8HS}~hCFscwfBNAg5f1U54*h|s zKh^*xmKe7Bx*6sa;fYjlb`P;NsKlt=zNH%}3nYqkBOR{D$q_+uq_5mxd80q!y<~!o z^`Bw=Ne%dO`C+Ki_r)}HYw7D#P)YmOK7xLs;_hf)uiY;XOv6AxB$QD>c*wh1kwh){ zP9K2CbqzA?XH%BhWdj|};1I!4aD0;OKS5+LYoC-qO3ngumN@-mm7Dw>mw+Uqv+>Q3gMZ&=!%p0)HZU}zYK$NZk z&cWYVX+VF72-jURn!X*P8&Zx)v_n+7VMp?qJcrIM*e@=h)3=L)N`s6qYbCHufJd`> z5=PKR^zfMG{XWTX^C^+IIlqIhuJz<5iVM!ZTsOB4s;^7G6sPG``9Mjv-GgfVCZE;a zj+ssPO}@Yxu6{gvN&WJ}Zqdim?Qbhs_z0q~dw>E8{-xlRz&-SS6=Nsqn#;!uDkZjz zRy(q0gpfMe(_R#r^qBU_kqk8Ddg2J&WlC?1?J_oK$+SMkR#F^Tj_F6AVi+)$C3z?_ zyc#)4D3Fb;9mz^^42{YcC_)}}@bp|R3v|*{<`8ys2f*KT4=?GuK{=tySLQ$QfwSj` zVHRRb5$hR-$0oCLOABqxpo@!#B5a93j~*mL$SEWaO5_xGP`(-N7!4?&$U>XG2-g_I zKxmw9B%>fe#BiL3`Js>y{^**#c-D<>9Jq)C3$~q9NH5SKc8-lS+{*9FoLYVzU!`Tu z*XsP&6Zxs>A2=_c!5^6HK^DhZ_Cda`78(San^Yl5mD$g)f{7RZQKO1p6;6eXHU}AJA54MWX9PvM!D69XnV<&>T=Jt=@+O z@~i#XBrM zaTWm7V@-jpNaxD?^6eXjhMx*?x|&{=tTPnUfcfwq;$~V)KX%K-K|FQ&lE+YqEUN~` zu!_NtuCm&c!FrS>h15N<>?r?r77Dy+dEE*p~ojSqz( zk=xt|7#5iQ10}YfNEfX2Ve8@^|E3vcydk214DokwSb7cd!-{-A{`&%?%PL~!7ccur zV$-v9(n%`dn335ZoB3k*5%>La{#T9w?y(<@F;mNuNB(EnTuz;p7 zPvGSg=yak%m{|fbf6+HU7DwAwTKR$$mha$pct(5gGS*c*dg&xI3MZ49JIZio%kNx+ zTp^X6-!W?EX|ulWp_bp+8^vbU>63#AeMf{qkfLD)mJu9u=!3&w@^@AN!`JTUlj8Vw z9s#8lob$$QHl&A}BMV0*VjV)lfC_zBBkfCE7WiX8Op>1BQW%7aowT}dhJphEf}#Ez z1o82O{eWmF2zBEo6!R!z%S1lqDcn;`DyW;!H;e#yRPmP4#3H^EZDJiq3%KL52wDQ~ ziM3HN-q>X?%nUV-@dgR721F>OlBSA9EGECNvMK%M&f`c{pL6m@XTAw+bY z608>}#&#{kc!O9egavoGe&vjkEg#jnUH2p!N@E}xpSr?0RFXhYj z{FV;1vZ?Qvf4WzANlLD7cNCEb^;qnw(i&5+I#WCRv42& z;Ec6cJ<_dx{KL5U4cS4zjtY8OR!obo$_Bu09zSOS8YG?E8tI+T9~COH2V7svXKN@5 z@``_ig&fU_^>UvS4v7g1DhDt~78hGq8c3c3fh=x`6@ml_i~#hQr_TXu2lulTS1EX5 zW{wLKk~P2^94EzRW*jgL(gOK*^`do`!4I_h7F$m6XeWf>NP8+`*H0 z1`($mc(<;ET=B!+=n#V7D%Ov44ws8@ERqW0&f!et1&rp#y5S-y_MORv z+6^D}CVaQpk%p@)W4s_&b`g3*V~Hq_tvfT{0UuKohvg~^C8YB6@V@F(W+&X7C&_Z5 z;Ux309(^4N>Dd3X!7Mq!r=wm7R1)?FB8BWWM$*M}0AXWISSw{hk^W#(pxMa$R65qJ zs86f<>jhGwrc+Xx+jtF zuy4X>D~Y+M9t17rT3-;<4c7D=9qj(r0$GR+1TtJPIV;8DFOV-d&g$0k4KpB-nz%g# z?RVav8L$cqPeQ~q0Il4Gp?pj%wBe=6Etv-N+09nbX7L{kh|6f8uIhf^dMxd2v+zH#IN)$^QN# zi(c$)94=10l>RrkI6#9r8UG6=&e+{^?*IBf{?EBuDoGBHq-bQa+t>#+JE#=-|3_H; zKO13%k}zLFmhjK}S8N-Fd6^4IO8*3yf#sT3&Ie||*I-B%yvL4101%*wFmk+Q?=buM z2ebo*X{%8Na+QGSZ_Vbjs#cnkTQ;vr%FbF}EXc`LMv1JgW{4#eT`<%R7Di?DLIw$2xFpPa%9T9$7dT zLjSr373*eQ+NCVRJw7)>C4pF!s$u9)*JS?M%;3UvXoT2rg6AVMU0y9<`fUqWT*r?Dqw|gD7TA&%o(( zXTPCbKG$DpO!i_f(wM~hD>EA&h)AwD%Bd)c0p_UL7bJ0pb0L8~ent)qY4k^8c({j< z+~5|5Becm8Hl&rM=000I;MJigwD?$y#Uw#xz`ep_to%zXFPMz<4-bGwv)>>2W=%Wh_+=lLpXHaMu# zKE};{VSvcmK)3N4;1o+rz;tcB7pw_{VU2D)e?Z@fp7=w~-G0H%!3&U>JUxuDx2&yu{lQBTdeeJ+NK0lMgX(?Ki|PCpYhu>sayTGWIZ7#Pa}$5WO{G z(Bv+8h-0xng8c$(*kDp~22dsK{rk6%jGCaEbg$>6Vk_fdIPU3k3A6@@EgtA8=wj*e zq6xo4nh}yoNKv-MxUqixTwbKr=>p7chlCwLi$IJA(E|VngmS*~a#^kaGB_s_ieaD} zBlIBxkn;%XseZ=~Xw<;s!kY}=f=Fsitx^bJwffK@#i28K@ccFPi=m0%5U-o1?N+M5 zCf3o&gS?WltlDXZ4z;|VwkXVJOB`pwFjEg%Ei-PhAh3CG8DIT^z#q#XaSq+pQYfqM zt=}W^5Pv!vvHRA3{F7~5&8%vriC=<|ir2@|K@`3>3LStTjOU!2U*dC$`M(I&gu{VL zhq4qgEkPmO`dY~bUeeZ?h+64ow6|oPCqK>`uM^|r4W7eio%y%9ll?vc6tkNB{K`au61t;RZTAxS+k3%&v z)#^k~$=kW)UeGQkdWc_I&UvujBGGR12XbTPW}{a|DbwL8&AmhRY*&d zK2ybSwusHI@I>2 z>^l=)_Lm{#p9oLLY@d&^3#^oI|02fP;LBs9&L3>jNQkl3UU)Id5&;v@fERJ13em_@ zNNo1+r!O3*c5Bd(#oV14SJE!Qu0UxhI4aj^KgyUiTbD2A`dkVH*V-=ak29S|^A38| zquyW%F$DGT>a0N5uGNefb*?CT8wsu>286RiWXfuB{5R{TGV2fG0W6yeIS)-zOu+fc zPrW%SXO@m=pxUnjBq1S2QY7MqY+*3_M%KT5A4~*}lgjT4=YxK47N)cL(rVMx=>c>U zqvjiKzul900$DLbW<|jOrHp3&%edmQr9uJPtd+oxiz1C86baWJG`JYOah28Byh2!) z>m`-^l+9$vm}@8(V8Z6_HXh@nGfKt@g0;s?vNe#O+-PptD-2cX(+Bc=aw8-On~#H2 z2S7phgCg~^(ON5P((b9;>+m(D-F=)RYJ2_Q_^sTKYA>FXHT0=d~NuinxXpP`t*owRX41{J^d%7UUF}49%q8 zOsnWKp;dZ}U_5_-dt>kr;06VIc3f!|0IVrTDuyC?3b*7X1vZ0RLGp!2dh^Snb1uPd zkwii|LN%(0b!*Xh=`HciFsuQap3wTGm6?6IFE*an9+84Ts)qxbz*6*yUBE{?Qx(v#bp_mkZ#{DuC>vDkIu4xFdvWKpB$$ z1%3>w83O$RYQdOSaoW|Fb0wGw=pw-^pDZi<@)5WNEZ^?zT-bn9X(_1!v;WCR6u3G( zbi0ERZSpq6oPSkCy-dM&a&GWas~sJBzvn z?Fkn))#{e~g<EG%|eRT zcx+rG7-!<+HpQ{lX4Zv^cq3L1q*0VjSl=53o7n|KjO_0Z)ki2!L$`m!5DfbPQ*$Ai zW%;00-hsf+{9EM{LzAdyZdp%E0Y&)WHoI4Ryk-<&Z(mfF^~8R@Ff-5Y$eWA zaoicb+t;69&PZVz`<$)RM`dEql6Z%W%G9q1MGRf z_T3Cpn`SXpj%E1KHzVL9N+T8LCJuEoSe7CZqZ>hVCWBCHX7A!Ut1AYFsQd0BT%%9``ufe`i@rYVS+Knq#5^xm#vw-1uFT%ghByO%}A#`EhzEZoU4emdXi>-|@*7H+=&F zXTBs}ztYWamV|G*aP$$|_X6*cto)LjbX)^$21X?k+6EOXVm*)(ZI6(2A@bkzuc&5k zgMX%MheDA)Cr86*7u*5}>i#mmWT|FA5ZG)| zHklfIbK>ym)iO1Fbgl%8j87 zp%KMsy)-PmqNbzmWDRt!w`Qs!YDSqKk-=fxxTMe+>7 z0MtBm=Gg^ccQdSkC|&Rvz;KG(~%?=@;3cYx%nI=kV80I8bEY(YQ%O63UY^ zQQO45^7^0mWwq84!Sc($uP(_4O#BRBQc?6oADD_zb=g@Non;w@;_2qpaiy?-PaqN{ zO25Bmn4F6}1`I)giIv>U#nS`g8Jr!d7^;goyaVqQEnO=AR8Gvm&tU%o1TVH7LlLzG z$MYA>kZvI!PxT7Pqb&T)I3eIpSqs=>&k$J05Fe&(Sc9HFbL@kfvwV5v5(elQExsL~ z%C^~LS6SqeOOKB6I!o^yWg+9^>RCPPHTWxWZjRkwdq}QK$S2$!z6^EJi#QSm^cXxA zGBEqpT}>Ttx5^)F$a{B5dgdBIU?s^YibBi;c^FShcb*OQy;BALFj-MTvA@(Ruy*+!={aE?}ig72&U3U$@;&pR&)vanz>2FBkkMP zth?YiG!2N*WPe@WpM}3jJ$z52)eT?u52~YNd*^Uj(;IJ;F!<3cPd1YSBLh8Z_6~#y z-c&rw+EfU+}m&bVI7!o973hG)zef}2PZ|^i#T3VY^ z3r*!uZ0kbdJv4=;Dk=!6T;dh-wYobvV+k@Dn4odMh;lgf;2#08Vt|lVzvF7Dx0OcS zvGoq%4|IOZ;F2${FTZ6BXU~pg?u-cSF zN^Y>RagVWahp9(7=?@+(K*Sk+rYm7OUl5>m_lrniS-O{l~v#@9XPI_ijjXu6K9|2|!zPM+OW%#bmKpo*$nsnP(o1&24$T@%~A5 zD08-|li@`(JZOd!a}1|PMa2c4AD8BTM`jxU<$1y5Ht*BJ!h_2r^TCDT2_JBBbdJ+A z$2A$9SGc+H%pE@d#!|;-Y4tTwbB=MSD24RcokUR}!IRhh_ZM4|-2 z>%cfIXSrkqlHL8+cU6)}XFgpioQs|_gIVS7;0o5tOqQ_%1bJUtmK3e0+qu?!t69@2jJGYrW%bpl`${dk)|sQ`*ua)V9%fzTw=l4=^!{9PKqxz>w> ziN@}$>8UsFCw%}_>D1gJ&R%#VpJb_3w1kRzoV#>m!WiJj2l9c+TSbw#S?esO>$L4= zdUweN%5ku$gpK40tlGo1wQ_3RXj7-NJI()x*{UdUYtdHaA+7vPEIbh#H4Z9kD7cL0 z;{a&L<=PnVH^bX&;u_oSCZYql?`Y^N zYnA|lHQaQ>qN`9Z%n0I4PLp9EvH)s_L#BbsPr_9?d0m2vHfhajLqFHD$DAqg+C53H z?scOHe0*b35hTqC6cIq}%vNTSeGF~0i$|YUT_T7`6DAaKFVR_m#h@Y3 zi$fYQ)~eHCKHbjH4RnL6<9H1p0yq`tPtfiywiwYSO|9KnGdvnb^de!1f}sSEo!6lX z8Oz({d~mQ>sRFpp%5nxD_^OOy$11}`^pz^`7OnHVi-ZAq#|Y;$HC~Mag%)zx?fR+6WTMUrMO}6oz@YeJ6 zd@t8IGpa|pner9vTpO0^_GT$91 z5NwF_aJDT)W}_F#ZVL3ru&npBDyep`FR!){ZEg`>7Hk}yT>#<+kW4Ps^inTHy21mA zltQe~D4&*XfB@SYEW_q1oJWQu_-ySHb8ANX&$8X5ewoP^rBe-J65~Zr&xX15H~2vH zEtuHGx&S>bn(w>lMUh>-Gt?I`B(90Ri}DfLe2sX+5Kx^?FW6muY@`dZ>4Q-~W2xN; z9pfP1C;hn*MrY;STumeSbzczg!D=o@J3M@3=t%R@_d<*A{%t)%Jx1-T>pxHA_pq0m zK7iKjfD7Z6Z|xuRWc>64XOdbjF(MFOVOtOEZ~2tAs0e1oLo{5d97Njjk_Yz48P zk)5#06o!MvT}*mk&-DXf2X6}b#ypv)++4l+p=(htWmY(p(~x@+5o*5n03w#&PhA`j><0W@%l|hMh6YweJKQePCOfUeN^>ye#e1*e$ zfREjJ$s}DJIs&U}b`au5d{8#4)k%2S#0os2XBjG>!a@(nT5M#9N`$uC9f>i63sz7O z%tWxB%yrVN!vmzHQ`kw24kn@M+**<%AHch9izY&X`UuF2VGn=^AZaW41|oPu8itZ2 ztds!LET0v@)&%M8hg!SC>cHr|oEl?I%?&g&+T~DegBNC5h?VZixaq$(-1E3*syO66GF&~KZqM(E5vVvLNpl?eO+?W60KWmT;Te7YM zpl_OASh!OLZGUlbT=2Y@Gqc567DLkRFby=Rk=D`o4CH ze--kvA8pz_5p#kBfCa(G;ECbpAW|4!=2q~w&xkAnuLuL@``H$KQ6;*n;ajecNc>N6 zjt}(`U_(aZ!5<&(pa~+vQicV?F4W>aax@0OY6}AM`u_r@#JU+;Ny_M*$qM{Bd_eD+ zC8q5ZNS5USE~{WF&YwVtceimkgYyLdFrg=9lztw_t+Hp%m#1=C z0>lFI9YL-b5atI$jZ<7Yk1 zE|W@eC;kmy2;z#*^&L?1KC^!P8&a!vPwjP^<79xQM4=FcHixq*IoVkp4v{060ucyX zq)PKE>8XGKtJa!_>94Il$RG2FeVAMP4vMg#>fGXED)duv#vzEV5UmD0ixm*A=rVaU z*}5g94Ao-n_8+GZ%TOLnFXD0u)04i~daK(FpQ-p4rH@aE;XRDQ{)ZQQJTGgM4p)vW$d zkr85sxYD895 zvKiOfn+zx2*9|+%;IguEZ{rvHt12ladd44K2oXuM2lNJHlm+6C>v!@6Yl%2YQ%qbm zD!ohZd#=Xub6h`cOcsr_M=HYHW+xSHZ=x-f%Hq!*Z-w7-O$`3dRmqQ7J8n!sMX6-9 z2lQg08^A70n9WSKdm3@1QO7T1&Cye_L4Iz%!GAVHI1oOAMXNjnG!=Uv{=t$%eY=_& zMRc*LZ?86X;G2gee#MV8*H(uwa^`1*d2%|A^^+(_fqmG^WoU%to8kR>h=0MumI6?X%1p4;Ky(?2+_O|^ z41FvEj3@%d5mtx=TIDbo&yV(K+(X?*T`cQEh>eUdiT%Ehyi-y=m3e_m9>98S0!BmO zx7AkH07@ykt2(vlzfpOv{_yhM8=Xfyh+K=!4wY1J_2uh)^aYRb#u))a98Lv=rxr_| z#Xk#e`x2bMJ_p@4&*gW?ExTwLd1Go)N^&6 z(`l(tf^Z6B!;Q@NfC2sfrL_`Z#IlhCjK9LJwtmKIU6;j_eKIIYa1#~2BOHTyJUfT6 zUcEa<@Eak-ZRK-pH727)QZWGN1!KHbQTpr|3>MfX`4lpgRm}*PFaJ)#3DhJ9JeNtH+;Hcr3!cS$rPN$C{ zPhc>Y;fj>WwuE%?=*ji2_jKYJdq$UFo-lBi$%b;u51@$tPRpkRo(0JUFFQG z{L68lS&{uVvRsB+{+(-6K`#A`&H;WXHmt**EYKr~FBJ2feF88SJnrq2t-Pkc69d!6 zkozTn2?}iOA(D_$(aMc4+e9D{%=*)z6S(5GLHS#O`G0MZ?xgcTMq#iWw+VPpE}!_J zkzQ0w&|z+w&59ySsIO5wOH|94+)VPa)%cNe2MSsY^Uyh~@1qjZt>*{%M8XNiXv1dg zIk8~G-^=a@RduzIk?^cEIlNf7EwSeIN0ult8ehPuRP>v%vdGv}v=#bVVrB>#2ER0( z{lJs$*<#pYbej!}p%o+ zDXLAAxAjD>NGPq6;}qx;)l@)h(-LJDhKU_95-ao9E?MXa{soVsl1S)`(5Kci8O^G5 z;ap6$-5fY4G#Ho%RV)Iy3;7cT6E%Ok_u)E20Mg?(L3^!AgmN+0zS#6Tg!==XMglx8 zC{9n-!DYPu2*_sD;y? z_{*f{65!O(Fh#tfysf2iFsy=4HZFoh=l(Lu^SQcXe`u1ngWmKfLfCtm>qde;(QC_ z4A~ZK7|sUuDYwmqNQ2rL=zyHk{IU;KI$|k6QanT77>E+EB}nTw8gHSG&qnEfZyEp* z*AnNuB3!}Rb+JgzZagjJEyC>&Sn0o&76sGNq66b7pO06yv}o<3u!TiI6na`%)U5tH zde8as0g!;Ehj>|sCU>jrv$bcotUTN;rQ%6K5xE!c``a&{{JhF{vT8xS*Ru6kG&B5fEi;W z^D%R%=CS4j=6RTNHXJr1MJ&S9ul9UA?wwrXm-}W1{|RJ>-Jnz-11l}Gt*R)Weiq)s zuLv=1tlCwxd5S<0HIsjgZ7}GQhXhTLx@TS+F36_g+mMuH4yu(wJ z-$S#-Jxs@`3!0F2LU9gEJ>Pc!djI4dG!s)a5ahNUjVhjqjEsV?BjILIdn5jN7VJ+flPR*;gac8&rJ670*6N{#J7@ukoKDd>sUnT0%0g;w=cQ z>NDyMlQnF8P~x0)Ibviw&5;W}peGBJCNzwjY^|=s?p}-4y!IhWdxzXBG#X%Ne$WMA%@vR;C7wK};CP4x z;)&JYkF4Nhvfw~|V7Zt7NPdW;?|bsEB>0+lP5UGXSnTOWLr_SSEphq%gW zcHS-$m&F$p6;yWOGArS#F~Mja8oj2jVMp8{!qE20dUYE^mTlQ`6g79m2}YyNVS!m zeu0!tf>gHhiY+qstvL8r>4>Qnkp+@1kXcUP_sUWS4h?w@sRRP&5kDHY{p9;EzI$X8 zlktlu`DAV&cg()ViWQX6DzK4Qf}>A>r!A$qcn9ZqAwZ9GVI-4ez&1$x+eRqIo!ifj z7HvW6bLfh7tTF_IJr7`T9O={hZ;hTkEDUQZr6zv7C>vpEa%lP5nCqFl@6qtyN(kW^9dtwi&^9>X`lH6G2NgB+WsUL z06zLZs4j2PV=K|kw*)2{)Pa{cBC@4m1^iTB;5eb7`AhblMYXr+lDsc0N2^6;MH1?KiIr%n19>?jYc`jAlj&LMz zn;DZ@U*m>nQ>Z2^oT0uty}QIK;pP}AGCUSb?a$r!(4Xe1Wl&A!1+-ONJPA5bK1E}2phpU$Np?82Zs(1ULfRb&h(IEggw(zp4Q1sjx&sTVPw~1f)x$E2Rt;ZhOJ*ji%JxMaB&r-4 zoDApim*ZTG2`@>o!VWS@#SW9ODj{$IEL6V1hb|b63C2cvwMOWsUg>Z0RQg!_JGKk76Jc-Wxr`>Fw}oV9Uoa=l-O+wb z=bjhx1Xq+Zg0(DLw71l#bcT^D0MPt4rvjt>sBEr16Q{IYHL}1gCj$?4#gT6 zLO;u;fTN<9+1=f_Y&t$t3l7T${w7=u?b zgh^YipHGEkqMu`Y`35W}G>%!n;jwyAf2+y1ib-z%@QYy8z-C24SXe0L|4c&9({ zpes=J9oZm_RF}coM9?}{7Jex=)r19SNzSTP{VrW(G$zcq>4jv-y?L2Zt*x{pS#Bf|g+!w1B`z*CG`fRpynTkKpR0|2V(w zM%#jIAQ4%>0sB@^HJf~P86HU_2bD>W`9|I$D^XCAx6|j}6)lvZDNdOK)xQMos4O$A z_8Y(3d7H~{E!MO$nZz-RVV2%|CljxC$!oCf3#E(dVm15v2rXo6fUcF%LGIwpmHbp? zg6(go-he_-1B{cj@Lw-k`<<(W`4x`|l!8=yBp~&wzI>Z9Spxb(Zvi9qC6~4fUK@l* ziX?W}}^k>O>2m-p6UtAA8Js9ry|Bbu?;Xb~e_YSa-^4q+3K zr6U!BMuAGX!euX4Y|9v#?~k3t7;fjPGw$XRevHd=RVf%SL8hmGdG^Ap?JJ>1v#WKz zKN87j7#hGZD4GQ@AxfoaR*>6E5yf$$jBa?xST%5EjYoq6gJIt?J{5>`aoWK@99dL+ z$*1Tsm5xtxrq~pPHIK;-Oarj7DNvsP0KL(_)T*0B_ce^2V6E6~QC|GPLW?~cq(R)+ zMu2H=mXEViq@N&AoeOQ~Lm?q3GE&)h5h2Fl7YMDZ#j*^% zTai}6#<)1v=YZfr-mK;I{@A<5E^fUh&;C~0tAwekyZP2Jm@LU8RIcMo9}5M_7%Ojd zHNb6d-Wcu$7mHwSg|muN&)yToV<6Il#!_ReTZtQ;u8C$Be|1KrxsW<&uU$(&ie!{X z=|jCJJ5{QEkx$#w(Y;-Y+%tFbIPX$7V%z^pC;1J?X%E*kr>7BhQ7KrYt-mT?tifuw zRmTvH`2Zkb2DD1p91fjR3JF@YEyDkSSBPK{izKc3GU8UM-BZVZpwb6cLeuY};Eim& zvmap~;8~WAEv2&1OCy$CUkYv6{7mJQEJb#?KI4bbNvY%wZgKPh+6m3<#+{y58Br3= z!--KnYHYuJH^yh3sWp$nsk(nP?PEn)i{>H)YACW;48-`KBbuV#Qp#~jZnSGrYuIA| zTB=t?0=G_Ebo_84bM!>w4&&K|3aRElk^|ap_Q9}X~gWUiJGe}2dX?X@U zF3Xe3f~qe)eenu~u?)Y&XofZN**KoOHby!DNdg|LA@KREzk30^_8n+@K zI~A&zoUi85FSJ&Q9h|x)*Uv7t7Vy1vNk1M7su>7$<3?CYADjq+rTGEkm46hUsAL>i zCMM7zNbj8mx#ja|aX04C*9@Sb-rZ;}XB9}Z2qHH*c5O^5KCaqF2^#$2lRBEHY>*V%RK?^izX@0 z@jN}lI#$zRE)|ZnB|Q=Tq1H{ujQ~YP%k-;0Each^@=~tb7UVMv?t!KUOL735ergP# z$t_)~&#^ZSjW4=i{>yBB5yWD*-70}WO!vu_I3)Ip5t`x$gex07QB3RD(}2`sV`s%< z`a?w^kFkJV##&H;gV1!-Je4)!83fZKT62IkJp#yC9Kdc(j7Ag1S!!e`$Ym@W*$g%v zr@nYXOg2%<+s83_I9apP*_6<72%DKxft&d6B}ZXba`dD)Iyx9nPP(F_)lpL%o}5p* z*qm%1t)sgc*tB$rtWidp}3M+B;Q1Zg+p(TzCYp@`x3)(n3AMf|ZMO~W@ zj8EE0GaR$_r8hY^Zltc|e5@a~#W=kWO))t=8BZ2_`zM!;`Lxu`6ypOF7}dZ+D#|0N z{jYJaMG?(-a!~a~#YD=5#=ZJP3WmB7Wc9(g!ueqLENuGN98N|j zSWPi8t3Id~%^8>_niHMe1a2yByg-M8{c9nQS&||(U2y$o5v)&QWfdQVvZa6B4Ih3w z;^~b4Lut=gBn1P`QfX-`eHkR}uo{j1O08Lzn`>eMQJlvZx)`Fm4pxNCa>x`0gi-3w zJ}}gp&Y$Gc%+DIyQiX^LK_@=ecj3j}N;ZHYK@eh4Zh;J&E!gW&1AQt}V3;S+4d`^? zBfv;9i^|F8nIWWHc6PyONI4QXRhP@>qpgOD7ZX8&?=STX@GfTbp?I11S^h#h6=JXg zIuG_DVC6Wf*SXY5xyid+%Jj8lLv(F9Se{l>H+Qn#v2>0^% z+?*t#)-Mazah?>3tVAE6&#OKjd|0+1CXAdJ=_Dl#msh!Vvy5csE?R$?0U!x{jKUiy z4y;2-eW~GM1LR0(7u=nvx|P*C=-X)eFrFD$D{Y-h#U}b_5MdT6!DHCSU`+3>xiT*?6MiDP|{(15B4UUfIwi7NI{9Jz}9L z41oi^SxZ$IErs5fl((vN=n?b25ly$nSE%_;XAYV{bz^~M>E@&?{t~RLz=q!8R61Nu z{Wm5$ghoXfoAR~WK@@S$PHavi_w++pd!_dxv~RrG0MpSNp#GEVq;Fc!4WEfl*>}x~ zvhso1`l-DtUuo7!AO2j@R|MGEE&Ty0ikuZwKKXx`9rXgGExPG}zAHI8)31QEU0RFh zA8lM8RNTnHPW zE>*}m;U97y*qO17RBNqe9P~#VtaSjAzwh;5-m$K#6e?*2ISo|Ra9WArmzsAo6lN?U z-1l>Pz6DY=#(GVTS5;PmeU((DAzE;sbHZj6oTTrT&-`9bHB+$ekcvR+z@mHBa>Uo?SGYx+6H7#wt_~pH`Rg8d*x&V7^zUOBm7r zhCV*nc8KD(@6?qwtANvie=`SelnkMOk(a^#Nb?YEu0|WF7Qto+LV&g6<{>`w8|i1> zRv=_z+x=)@Bi)`LBqQ}1dWtn9AgbM((#BlN>O0Dmsug)Sf#p=^2qwW#-4i65_b%1L zVAnPJMT6T4zh0Hwu`HsPV|2mqWdBbsjPbD|~8TUpNDv%VSci3DxR7q#vB!C`WS=6jv4MFZoSt>!D zBw#M)2kE11ISbPTOD<>OBfF?un$TdAJ2CD2!OzF}v{S~D3oP_!`fCotEz$|Usypqg z0G7@q<-oGszD!b+ht%#Vae9ls!{erq>h;{;mz~!2X+x}nL42_a2v8UL{ z&!`3A7dT=M=)CbGtO=JEbbN}NCGsu1B3Nu*=-G9=dx_7aR}&m{)l<`jIYMwjxqx!u zHolz>lQ)@FT=3`EQ&QP_#V^W?pt+jF*9DOw03kD}alk_@dl|R&Xza9>N+^M_<4*ew zEja@$hiKGB`Yh*NF$yNoZA!WUHy`Fwo?QUb!66D1L}mZ4maag~hxX>5*VAydSm!d- z>y0t4wKns>4s-;O0AzlV4t9Q*-ORy-DoTQ$eY_~V9 zy^|?32o9w4uix{u=5Ev_5Qmazq=V04VE3c1Ur``9o>0;8LIT21yD=Lnc;XpbX09S<&oY1le~E8*#J`%v@sb zZB>}OrYv?=^*~~g65n{LdHPuihlj$G+Fy|+nmc4ukz01X;9 zTUVAd%nys^*t9m>jG3-AD(bpK~<6627?3Pqf1G6Z`VGv!Gq^V~d;s&uA z#seS|Ah=rpg{UB^sX|UcxaR9wwZ?Ft<78~jo2H0-EGty*xSSkOpRh%KFCMzUwk1jYA5;lP9M zER1w01C(FrdcZ)+Xo2DkLU|-*w^SD3%%HN7qpbRC_Lacd+~YJA&gU^FF@iPRpl7=7 zYDDTUu;`n5x$8DkPYDBV#Cvi5#eC{=mm(_bLQZy8S%pE{q&pOuY-GdS3`cmM(9>CY z>qyF!5xR-kdliVxm@O8$93i|UP<0EBUi<{%O)QQf>+<>hy=)))nBU(b>yudkSs}F? zKvoAMu-lcIkZh7jkWr79fX7|dS_@a$ff=Q9YRuT#sFe_6rG%US{H$}|V^B?+y?Fvd z4HkLqFysLO+(b?yw1t42-K{J*uwI!u=KHroH5fQWE>^o>tOMd<%%Bz(#q)`E^8oX0qM!eT=_tb+U(8n6}z^Tk}IlH z`q80~aN?zRfd))>QT#hR82+_0#Y%`HI`@Ou@hx2<=3CLVAvu@!Qt>AoK4H>e)k!WA zRX)6LkxnVz_vHCq(#pXk5vOzi@q?kM8l*)L-kWyF50$415hOoOZL6uMb1*81A4&+2 zK5+>-qRZxxir@i6F>p)T3(P*EVZ!1l4%Id*e*h(RH@i@^Tk-)Q8yauW1JM&5!$VIh zWY;RLsaa0JaFI1-!5!F?UM%Zk`ue+4{u?_%$1!t>Hq*NOFiCSQvh$qR++}obWY(m}-={ zVqaAIACVofroH!A$-C%*`-rZhx}lYca2Ir4jTm1?y&R8~s@EuMHY1g2%akzWd#EgO zB=OX2=5cB}!psD>lPG1IsSGwf1q0)T0lYv#2_e~{VFc{b`sj8Nr_X!~)Wq4j_S_(P zE#a#-v)dpU~n5#Dah5LK>R%ZmVVh@9*9Pw ztw>pUuFS)z(*(+hJMZ62exQru-D6N~JkGD|NOR7}Nv8M;wQ+eBFx9O6lR6^k{ghhscFR(+z$2B;>7%~FtC zEefY7lf_RG6rLEB96((;jR`-cCKj#K;ue3fWo8yy6^f!scbB(T{_L1vG4VnTu#i}5{Hu#2PryRv?LW40y&w)JQHa0^t57GGx!dY_l$ zaow|AN;+fbUM^sni~y2u2cotBW@jD^{p?#8J-&RRYboW%oiKZ4#H!4vIQ)XzZWm*Q z@*)mxH;d)1WbhDtLx$NEc9N0ijZmr+r?l{ZbYtYyfzpXD93t4go*aA~rH~K)942sR zmi;ye;94)mL8PJ`ydRuq)e5f`hF3!DO+c>5X&d?e>LV$7dmncMcA*$-1|Zw=NBSpR z%JKYvlk8e51G4q>oWr1_-EBEeTvZ zFu;@k#k7~MM$2uN8&Ge~)}|N*vxaHAWq2R=81C}-KQACGBGTwF-U$X)J}Ij^^V4Aj z|EN>}tYzs7)lPD0_TYyvzhXH9WdO+=Z01s7$RE~Kf|BPR3-?sE78bABwdl1?-6qy-z;Xu3ZCf+GwDG%kO1 zWX4>|Nb`Hv#uh@jxlX# zXP~g4!LfgrQjjY}bu4lkvwC@0rTGV%!5V4)eu**AaYVWEttC&Izk5AS`7)$d(G>-U zpopIpUlbngJv}t%*BcfT#;@&t8|f(t#lr_QFf_4+)v!xr4<4?-No2of z@($CKIadxxM(bAbUi~_@&#-9Qc3D(K_Wj{B)y&FusGJ1jcg&Y)FZ^4zO~0$Qc?*=B z;dFS|+Gy`&cyip04~wHvYi&?xW4?7hoB$H%|6+#N&BB{#+5gwN8-5!AF{pS!rHNF~ z6yx5}0RU#~7tJqDPsZbe5|}e<mV62@A9;0e^F!!5fc+UBVqBJ#@?7pW&C$5GUtBcie+aL0 z#Fd?&?v09C%4Iyq^A>yKlMcaXcyftXa|+tikG&6<2jg*XGl(3s*JF!Dak`M(g-7ufJq#@y| zL6pE+tqVGjzU|XI1FavY15reu?lBjDiF!rtfTwBvQ5q~{Z$t#f0_l2Xo4lQfVAj>~ z;PFt?mEd)bA&)Z^@iwkfQham1Js7D~tsv6Qs1SiRgW+5#Pximvf-kExsf1x5)+uQq zx~o5Q5RKi_0>6`AsvvtVp`Tmt3Sz(dwJ+ag1SSysgsd5#LRvoPTDQCAM}o6)sHBwC zAmG%-FjE*l!%38YHE8^OJz#Tkb$^+AGn;Sy!OzuPVPfUc6@G6O5~nUT@<+-|hqm<@ zYNI7*C2J6Ig(*~})h#fJT3-11sUA0S-Yhfc_(&ux1f^L-dm$N=2clP*nv#J@3?moC z@h{mk;l?ZLCty1e?**M2B5)S+dln!NoD6@*T_iBsT;S0bcHZWLZ?@ZO2fJa;EKvi3 zN*9Oi3{*}tkKCk>`uVhcD$+MWmdA+Fa-e1#>{6z8m& z6+{JjO&vV49P?w^;Y_;e+mNN2EzH|vHSi-D2P0mPhrW=neCvc&EtwcUjfdNlc?-5G zDwndDK3!bVNV8ft*8~f>!q>uNED_$YFu##ZI0dXCwkJ8bf}x-A{^_G5K+@y*yO4u% zNpM>XxVeNEM%aM;4J4NpJ)}s@j#$oso(XUH<6b^`uqr%7vl2(;%YlertS6L2);0iz zz*giObC#`wz0429p<;JDDj*ogg5}N(8*ghy*wD61G@L-iTX=BHLJ$8v{s+AnQiTlK zG)HuEkV5U_1<~NgZ)|IzZ)J5DtdrQ#x=rLd&6`}au#{Hj%W#`o2j|N+zpv#TT?&>( z`NrV4;U7VU!7t;C-{;*1_zLWjf+0(9dGzyqS*%ql5 zMO?GEYD6L>O^fm?SN8~azb*ff9|~Nnt5ik*4`yeOiNus_y!_F{P{zjV)?!0Fu>C7( z(gh;%y4t|Z)%$=cVwzmpjD=1Ck80y6;df>iu0Tf|cV(;h@eL#EegbNmNe|1R>_MpW z;Q_@pQu=y!9In(iuGH+C``OqqjJ4%iUl*L~ZWEF8l0~K0GRRoCMtY{K2V+8tk=58c zRf#-sz3k(6E^Batvc3_c?s`OoqSSI2Bzo@o!!l??>4)m1kF;{0--{q z5T1ULl`-`h+<>wKo$6#sq`yFtH;XMVDF^$nPxX7a z6N{fu?RhH4W5Qt9Yxp+s!A5r|j}zIs1)^}Ie?gzsifky9L5Mei41(5&QZ)40 z$sWozUJ-paX5S`W1v8knrVNI~Z_^L@1V#)%ob}sm{#%{heLs^czv713QZ3CuWn+Ou zLuqO#bahqo+PbE3_^i#YlYDkX4=qF}4}J9_&Cx918vTJt5^9l9O@k6PV<^!N`2+sh z)=fF@Sc%~2;n1;M{jD0e2)?1Y9)*q%+9#F&M(?t=f|UgjV6-|r5VGrPlmTeVKI786 zJkC|iyinOyLIy0tmSCYmtMyFvsT{XqYvjWOn&j1I{52H;G4-bhB2nBpgRK#LOA+a{%w9Hh$Z5AgiuhvvWjW4%Abj~iN>m52dW_A+teKAqYI)c*xQ$=u}5v}+s30x>BwJ96t2 zi*PG0uz?5@SlFMgG9oSxAbHUhOp(v@i9be1uEY5{>;V&*(#m*)`t$m}uA`8{gd=VK zX9L^JPCBHw)m*0#;fE8^?wVU+P(mgOLh!1@VN#I6n1zgH z(M&Dkq>9t@Eotg37c&;F3%a=&{oe%hvRxox%6OZoxScvydy#_a!cvcZTy4Qr4GnQFJ_qP!4itqPN7#Be`oUph^Yo(sYKMVt?zkP zU=_Dp#+Wp!$Zbc{>nHX+L}&f=#nhH#J2g(0`{R5WbKojj7~^YR;t-%F+8bD8bVvA% z6Ub@=0zm}{8fpw5c9!bbNbMun{fDhC(60p7m&UU)VWR^N|L&AxK#WnluWmhZj1UFR z;7CN6;Hj65MCgqL=*xn;dT49Spb;V9LeLzM|4PSC(@cIZ7Y?x$t8P(QPk6FuFXjFx zWBf7^k~gm9dj#*bWTJMq5X_B%y=8M#(ifn~;<{b2LlENV4D6JJeL26fbYNAt@>dz! zWIu21?w)!R-&3 zp$*$HPFWu16JiwCsws$LZ}hSJ85GUphCqI9!ppvX5%L;XeN?V6Uc%pC*mnCTe>W1j z73+;KHV|p5fPS&qif?5pOwMwkvrxMECa*8n-56SGqRUJhfFaVzd~XrRVwFH2ToGkP zEe)|>0BLbRTb0^+VAg#bvuwhgfAyB6cng>RUhkyTl28P_86Sc|k)DSS(@+6!o`vgt zz^m22(e$Az%m5|8s6x2z0_`a>yTk%yFGd2OcjeL(up&iJHaxVcrd5$p+Eoo>^ zssT%Iee9kw%6KYRWFj#zpX%}(xCdG_)_Y_>2(AE>saK*%oPr}-vdY_>p3Ic_4W30J zg-rljK&8LvATo-2#Oll%p29_n2I&r(lp6OVc1xZA1;IelIDulMB;p1aVz~lL19Oz_ z6<*DvGE{)j<%@50ouT^2sp3`HUS;(#gl=>zJvs$=I?I>Xhu1duw0|c=YQ#SDV%36k(UB%oe-<5alUDQ{Vj zEjca9eZp5JVz{n?I@K8^unZ)sl8RgWc$n?LS|C5bnxPd1Ic7ynAs=nZs%K;ddBdWkjZ>YJ>frmwhh9`N^Ggi&KY~9vD<4)r~@VO}4KyOv~1Csqy_E46_ z8nxQKfIQm>`T~y`2 zhf9JA5^awWiB{3F$2$s@1*|E-C_!FIyn8nrt=cDBm2M8r<5)Yxv$nCIY(L^K@UgE7 zG=twlD2`3lX-T`2>)0u5~?JXf2TJwe2HLL(;<9D!mH=ScWyiyo(v=S92<*_QM zNI)U`Hy91DTk*Uu%lrHV|9UH0$k5K`bWxWZiGm)pvQLd{kL)yO^-s%mIh8j<2`*w{3wqX0j7hvV}#P^FT;yW zvpKh@=(mb4_y9ySKGbX(hKHSu#{MK$hane%cR6LYDC=-yswu$5kQzR{qrf`AKxJu2 zg2*4s70`XvbLQGxD7}?|@GL8}YFSO$%-ukRE>JP|!; z?Aq7HJ76f{%XmuGbo#JjJiA_c_?w3XA3Yh|eRg2uScH$w-mF>ziGRHI0_Lw z6x2D(VWdLO`j|=Zkds2NI)P0CVctg?En#tlk`CkiwOto@>L+9jrDG2l3)p=bVY6V;OTFm&X}h zjxaIH1tE_eWra$NSp0vX+jnISbLZp=S)21`1}{(r<77{Ryi5A9I$x4=Coqm9P4^%O zoY=7DL9Sz{@WZ41o0`QaKKKw6Wsn|SX}<@`WzU-XbH(01yI65%JNl9r{*9tutqZS2Ef`Hftb!ISbejDr;5gjlw$e;6hb^JT92b=0|ga zILHxV*==_G!4{D&V&0?cg-M!Ca4Z9%2$}zZ4}>D#rF{9{3Ui{aFlYUG@1QBVx}4$q z!O@Ye%JIE0(5jqGz}EcV6yvz=viq;qIChv521PZ)$>@6NsJSq29oeV#{`0C5*@3a}UC!=Ey!|L^3 za7Y*saAbbhc-$P9#wqVD3{N=I>g4Dg1HBH0eh zUTIB9&i5H3ZG&MH_)L+VM<{C2Qery}85IExq~;G=H`+s9kTb|?eQ%*k5M(K5@;=wG znoreEpv!^9`y>Y-u?9*Xg<*q|WtY6CFH;Q+72q^h?Ga0kGI(oe*KQ%7LIb!0(u`j4 z)7#wRpi_i~Wm?rB0AVrYGn)$nBpI-ucN4M-c4}&6PTBT35Dc2)3=uykeY*-um1ODP zR7E#xwv`p|b1f}_un!!6@Ye%5qQy$93k^MC8 zHOzYg(|yl;W7H~SVsFDvNvefjgl{gvmDY+y zJhicO&Ct<=Cz7*Z&4H3Nw)5z7c8}%<8VJzAS1K^-tPL=4Jh2%+L{p=WG``{XCwh!E zUIe>LEKZ}XyTiKL&}DHmpnzKB1xFt7@t$cizD!kAZV91ebC6$2_n2!KKjHFnd1pxL}xDQ$B1&rW4uERD8m z70g)P%k!15k42R58n8Sc;+rDQ{MHQ=sJ}6$F{+|~&@>~3RxBxv@jhwiS_NtE+UqXf zS+U4isl0%D!?0z>)BvRd9xh}(2^?0p&30k-TRq$eVF(M|CRUY^n@YwsE%8YTW00TG zyhfza$8c6N;f&h3p=a0~PqtmlB|5?YGqw}xIHMTyM6h2Wiv&+O+Em5`o1mG&2J;G# zi9mCl)JTV9ml#KpKQR!k#%&NUK8MnS5B&wW3h8jddrF?)|Y5=?kW# z5%~mfQU>ET@my-L59Hq@1+oj%`mCBPl=289fYtFZ{bk64RNn8#-+_5kkd!l#QDX8y z{A}qlaUxY9B2fy=0vtW_c4#t^BVji~w_8n$BW8pYPZ501c9bfZH_|N_y^O6zOSv>@ z2-w0S`2-|2)uyWwELKO0ykZWk!;dbS7a*?myOB{wI{uc^Vtz#pN2`o@367n*!pxN~ zkSmi-NGpp5i2mWyp`f6sTEsva#*IG0C@1MidAFBa1GMD)Q5^c&MF~6p zxS@wZhUVoR=uxrL()nTK_t#Yn1VJI$3yhp$B{_;;vFZq`Cb)f)5_rJ7Q!PzmP0pZ^;%A7@8y&?sX9xxfI^F@#n&aq+SgssYuTp1W zZBTUn@)IqoEIz74Pr%Sd*K8^KfJmyn>s-n{9Cv+7_ci#CcU2+;>hcjR(IK^dK0GEE z*d>$4*CI;=%;I!GWS-eJ#t(6+A#6bVF#imKALcGo&ZNC3c=$a2^+=?Iq+D5J!X^$O zC*r61sEq&tOrvHs(tR54xeWnCmjqAuZ>REAhGeNyF7U1`6q-P4HC6hBSVy7W0ITr) z^vBtfg2!{zu6EbqMwx81i-PKGc=Kj$?9`%^xFxHjPe-cSnWE8G{$FJQ*s+|OO2$HH z*j2MCVfPna)F_p3(3|9p6wCoHg|cO#MIjIZad^gGi)yT406Wzma84@cD#0&&VPWlY z_W2z{TFDcZT^XTA!BA#G7`AZBSb-RC1&LQJvw*vnYlWZS%vnk7KF$0)b}|xEk<~rf zjT3H7GhlIjPr?(Yx&QH&Ub(nxwa^d~KB%v%!m%DRte031SKN<7-pID_k(>;Ro_NK- z^>vstL^&Q!UFgOrb`6RMYL)plb9ktgF5#*bEcLP=fwj&NI?Dwq39nCnEGe6zbCdso z5mUtdhZ#mzi3>T#qqb%BwC@8>JVPem0qO$VfBG`}Qf~#aupA4~*>Fpf+=s3(moq{S zZo2n5@2Wr@)IAaNl~Xl}Kjg|>a!SkqhC;Lj+mL;@iaep)P;LzoIk3kNX{0#blBY7W zgay;Co5*eEB^h08ZXoS2TI(P|1EWG(xL%5I;w&UyN}$Ul=t^@tS9XwJ*gQ3J6u4f5 z&W*(~m;JdTmsS?$@ieXOA`}Y0tt@vQDI7mB-i9QUXPWUg#@~%VQY}KE2`LYv*T1t% zgv$;=pk-QL5m^l;LGpAUS4*oB!Ba=sw@|X-CDzkkHr9Z}mYIffn+?Y(7BhM0vlW>2 z07DBiege+GfD$uqV@6*I*Arc0shfC~sJ>Yd{c06)Rs~FCkxfiu#R-aStzM|yw;Q@j z=8&=e60Ja8|7`WC(6_NPldyc%4YZt+Ys!LM zF-Bn@#d+_lG-`JVH0hMCJ1!_|>e!H)zqsqSGiPePoPP*=_3 z;|kkLm)3GAWZ?KvLW&F)uW$+|`Jlwmv#~(Fj^4R+eor?GN|mWeNOV#tUh}!Xa#f*3 zN$=x{D@qJ#uMh(_r@%1M<4EZPZ%v@g2+LNYp$|Rz*l#p=Ci*wguO~!7H$rbDk81C; zRnWXnD-)?lW6RQ?53GR8Y1tAFk$PnP$!YpsRCJ38)KZQ1Mm}zydV#B-%MNwtgnLHE z7t||z0!uMISjmXns-KYnU;H(`>+pC1?+oV#C#9mQ0Cq?U$&vMqn8a-@CY`kyif=$O*+^19t2?P!SQNCBX z46~`hz;cdYWBSB{K%I!pG#0+q<~BgcHm4qrhzm7@|`oRltOco4ru=TjSWuK*iHRW9_=bSg zoGw@^QBHvYc`k?oa~OHLe}Q8h+$bgP&IK!LS!#*$1_v$IETQt{xL6yjjK(iGlZhTA z-s?}e{Et}vU@S7EAnrqy&mO0o42uR2a->A$-lAo>E^H|YA&y+4o=HFuQ}ViLqSz<9 zW2(JGB|i7>^8+VA-er$s|1CjS=FH288eD4!ALHmb#>!j(I2wW5T4JX{Ev5TvKu{TY zU!4RhYeT%xxDVo3DJ2I<;HlENxWwZh(1bVI6gnFOg`Kwq51daK%4Y{&so{|?IBU%?QKJdrq>S_{7nkXUmFZ0+7 z2DLI5>)y-$oKV#62%~l#b#VH9OA&pDXk9bpg0x5BXG1Ebv!_v?&M2Xsb22ag5`Y8i z-6O@|^W5%Og^w)QkLj;Z=2&oJbJiX3dtW$08V1fBix0nuL*%CyZc(@; zq6gTm&1$e_jB>UzJWcC2N+xwUW9>*BBF>5#+)(*nqb$UBvU3{{DrxAp))%jk7{bz7 z<{Ichlp66S!K1=GksukMzSb$^`2gNEu7DMtWd`6h4vOE0UaNs16Vyu zTu$IHU;sw*R--{MZu|#&`Y5KBK?U0nbr^ZVg7O9!W3G2sUWkdsW(C>7bzW5`tsLJpcd}>8Kux0^h&M0>9W{EMRLe}wr3-Ut`C!wpKZOWoV4uNk zW{%?5YO|n!K zqw-`pEujgQlYcFtd3G}DjrXs6=0C;Ws2PtBE)>CKyx2QswTk&ueK4Bz0NZk8>t9&< zQl1p!$+&lTP%pKkgJxJCUHA5yljCMG5}23qWOOpz>z$n!9KLi~jLgRil+GL<3=fXY zGH)Q?{C|32)rJ%q6-P(r(R+>g)`%~gg8A^oIDTrsIXWHpMwrx$BBV?Ft}@qawp5>( zUkH$ng$4T006BnxV?qjj+wr2RpGuUUgi*l-f3(Vy2vCL= za)S3jK}o)dO<9!L?(c3e3NjK7$~)R}N!}M%yC|j+EQa~)-iOW_0C%&*X5twk`w=Wf z{@RiEH2srY8!}pNFQ4ik^Nyl(s9S5}Ak!IX2Oy<^?v-+|*;iTYG&9rqI7cDCN}wZR zc;2<0DUP%gtER8qCjv75HCM0hQ1V8$Bf*XL7c#XQpeh&zq3rf`F?bS_+0~s9K3Y0Y zIztTj9!Trz%Ysb}K~bjrOX)T%@>Vb#L&iVL=$|H^{gR4l(U#i-5p+e!H?HOr)B-Vw z1o;|s>RpuU(9nH1%vzep#K$>2^7?hIk*Ip%VF{L;MvSR4AI4Hb$ZH zKUy8AE%F^$%_78ML^1EK(wFo7V7JirZG}K>oh2k;9V6f!wY_O`JBRK>ki@0c$bfcW zDPu6La-jPtDRl%X9U=w)BTAXTIt{FB>rOIeSXov50hDvc)_0k|8nq-Hq@r70f5bnG zE&%b#;_tqVIY5^%waCaIuALJ1*CyLvhWFIEE&hkcW6?#)?vLfs&h)&opIF${Tcw?j91E*N}c~{p$e&aQolPila zx!R_h8ICQ<>F-Yw>Pg>CaA*(4W@#SnCu3D`>I~a2rC$NRKD~elLg?IVXci>dmpjs9 ze~cBT*BeudrBDSdAc_a`mN(>>DJq=B%VbR5VR?yS%KS0XheExgcyOr z5*^B>jhw8^)&vQZF?@e6LrBav4lrD0ye}zI@S;K=;1xAG7qrYYsZouf8_nd|;T7ve8E z;TW{3?70k8IPkTXxNzR@ijYF3e+Kx=3}pja zcZ(@>kc)A>QX}w37{YuVfNNf?iW;X-w45$m+wb*27>znuJU`rLT|Pw*h+(Bqc+;E^ zt2Fb3`EVKi3lLW}k7*~Y5E{=o40n+Sa@)^{BEmyx^`;3|hxtEr9Cu|V-$0HXYyx13 zS(%lkq!IL|vd2ySOr2Gx%DE}55YPAV>%r1Olp$>?mONrJeMSZwU|5>xE@hvDWNp;~ z)g2JF)W)D#Xg--UGjH6>R0x5N>jAtph`C0M87F!|m*WAV1LiT{TwJsgHCZ%NrPHt@ z0PnuAs%uWg6{@Md@hW~j5J4(Ew%ar@Og zg1;@KV+f-R6bnzT0cd^6%oujZ%zvS}2mM2=!vb+eUD0R)<;zkeK_UFplj~qY$$XcC zJa7kyc7Grz`|FHxJ0iCwR{c`%yR07H%e7Hy0&SRA`cTl-Cz0&k zAT3V>9?f8lqhfF~|H!~|(#>Y^g@j zZ_;!z&H)fG2rLQHobcA*za|-kUx0+*2G`T3oP2gW3m5b~l_g}BT1)-m4P}ptzWG#? zkmLPH-__GPNq_(12`E1{9~x9qT%$)v8)EUzIUT;k4DFhLemg0LqmjQET(`GPJC^NKazbh z{lK9w9uASn-d)?Uv0cm2bbd-@+&~`ui3n4c+EFHAXT0F$JE4jV=o?$1>;#)Ypkm=3 z^DMQjRsiy!)9~wL>Y-%NWW{(+j4<=1112ZX12MaXe>|JB;Psrb25p;E zOJGNP!9{4!jv|EgTL3bz2?ox^d^)oRxkN`{jfsDvFkR_)quZ$X-i5=xYa2-rHSwoC zRxIQ&ezpzL6DZLSvYjp9l(VeKS6ECWsT?L=vHSi4G#GmxLzYL|@BpJxtU#$oy^?*J*;b7vml%8(XftwN$wDHdkyQa#9` z*UOpIyoC=^>^FJ7i+>r@+j{$0uVvngKOuA@71{4HO@BO&tnj#U&`T2>?mcum=JXkKr9U>*;!v zOBpf%1zj?Hsl){Zyu zpDQ_PSE+{Jo3II2aFa3I_+e&l*79wJSwQsfEC@ zQk?+OXE7yJ=e%05tRjS&H6@h!N~>5{RuWE}h|fr3<)X zt_39)NHVjX>K8;OfOe z!D3-gxR^@cL^h@oqR6dvo=v^a1Xy|WF=K+g2qpsc&mLz~S+vel1&%Wfe3$UT7{+6% z1TL~nKf}B-60j$3kga`Wr6xrf>`ScQw;KPQY{o*>LSWillT@@Cq3yiOu0?rSSZ`KD z_$Zo3is6a^&dnYzU|BGfMHMm<4+|}@q7B}!g;Lf?ud(_tZ`RfdV!IOAV0cwlAYB`! z5+w!_CVBKZ6J<*7fZfX0m5}31&y3{gB1L#HvZh2h zdiH&qZ7f^5B5DxWoA8qm0`*v*QOV}mfoL25>>|2aF5eb7nsafS!N!2s;$KDDbYh6$nB0=FqS6vhAt6913JB@O9|)!~JDM<}L8fX`DR&0Evb- zFuVicEUK1gb%GSUewI($DaLlfklRP!t6-aDYwNJ9QQZ`>%z;9K@S;ws z!i=%el2FdDV-bL92X8;;QVq;YiI%hV!(;Xi-73tQ(ltD-R@u+#b(AvclWFZ%(?8Fr zm1E^}&l>mOIDlF;hu#dL3EgxrLZ>s3E&F5WtmNtBEVu&wu&K}$%N9ugXy7)a`v@(e zR7aqON{xYF~b`7jVeVpdMnqNj0evtek9>k_rErVTWVW4dZi z(}?OTzf^~ZPHG%hwTa(c=Zd;UBoPf8G%Cu7Q^_QCuB&0~t}~5i;+gaYY1ertxYx6HN;##E!LolctvE zk<%yAo;%&WL$ELW5G-#Y6v~U@+J;X~_0)Vhk%H}SzTQ`V_Xx#8L3(ut)M__y0c}cr z#HMFVbXKLFciGHH5ySXVJbfzI{P z$#BVhcA-y4oJsFn(Y6O>jgx~> zGnU7f#Ss8@_{BYQHp?&m1uy65STD)3=f*mxvkxB zIU}U*GTY?Nojc788BghFlr9|`xtpJygl>x&$jy2Xb!(8o9ZNn21%VQN0Auxc#JrY!jFZJmGW41T4P8rfF<%dQM>Kmd@Vh!Xzw{g*W(Lc2845KRo?k}1()(!=)41=TVGdlSsV&a6x{F3& z`HnFIrQ3IBy=k&5%e1UnvPX%J)$1#J{{}ZiD@~s@zEzBTzRy>mLMB)QwY6{DM^MeDXXvS z7Va*Js?IzJsGfSoAd3fut4K{VC>2E){M;dic8{K)X}ZHD7#XLS_l7Cws<`Svn9p9! z@%anOqxKkq6Fq`U7#8}SI)WaMt;g2l^E9<$7dA$-FMOoi+Az7d%(2lWr)*~MA`@O{ z&mW^X5tE+#Kx9Us7e6qfnF|a1M;w{?ad0*o;S8&ro-I60+Zx`Cqws!s-a%YDOB)3= z)+S?%n+*d3uTUWgaR>XH1-7h&o5f^-u)^al(&6IfJU%723}zK7-VLA%4{gj?BGav9 zLM&QO#x6eo7(?x6+uM-v|NSFgm2ZDD{{1gTuPH>EcOwj+@Tagng{*$U2gVtlL4@;aixl63;B*U4%@Q&@;+)Zt;w^Ld7J6WeCTbI*oV#i<>jA+#l9t3 z5D8{3yleXl+uh%OF<9LD{LtHqR|qXHQgq-#ZQ{*Hswa=-q8nR5lNH@$?6TXbMY3lC$8gz!`N zP}*L{IJjz4f(FEHx)RUgSgtMMr2VZiy?|C)`R}lc!z{N{8g!5FC68OO6v1#*yU{r_ zP7I56fEDU~(Yws>{qb`4rmKbLxei0koDuTA^qU3g?iRg+0A>;m!HnE*@dFO@sc^$* zkHQ6tkge=V7 znWG0I!lFB?4-88L#uAOR6+Ey>X~~dTS-i!^GQ3K|%*J^5{DBK@POR?`obU0|QF|*} zD84+4l~b;)qPy}9k4USUH|!*zr3{Z}u9kdc?_e_KmOW~;kki7=M}tch4;w;vG<-6QDM>i!ICcH#EPVW%uRf)Xo@{bBw<$O1 zlM$mu!jS8uvO|Y*KGVHnz-dPTv%kZGz$5WQ6UVaU9Xvf&8l13E91JkkAouFzJ=|g} zsoZegp0k{t&G$}Y^rD+ulc(|U21A;4&*Cjme>L6D_b9eI>jxG~NTc%v+W0aaD&Jy` zbe>|^V4^3y4`c3vZ~=DeSIpn9_Ln-{zJXMnmV6Aqdtpx+?M{?$*i=l5UO?jBHFh3W z_NB1eZz(da&?tt8FEl%a6^&Mw6e!()0G)ujizkZ*r!M9u3|OgcvPeGCn0a*5+mgj+ zFd8^!jvlYQnG#!^*e}epgrUZ0rS8fDH|1AeN`dC3feA*|uxQ5L&f@Z~?k*#r8T?zt zcigcCU`JO^|B7O-ft`h?5Hy~JH@9fK2D7ftEky}Fx_8EnkwL8vJ>~t>(HkT@b66q5 zG(&YWH+NSvdKpX#^H!qSDfxt(KT0@U2QEl5+FssadM$j&W4p!8>g+Qre{eD3ArQ8$ zb7Z=we~Yzwm7Yg0Ozeg0;o{HT!V0Zr-&7ol=*DJ$`-wWFIAKi8P<$-TPQfHVx>}6XM}5Kjb!>U z-w%_!)O0(KyK*}FH*Vl9X|U5x)KEaM47C2=3KC>O}DwIbMNok#zUqMHf=c*aS7a%H)wgoT48Sg~26rv(M!Pt5-q%RaRs9n;1!f{Ydg{QaS|yDbcV zK~ga3+t8cHGyw!Qa|6QMU%yb}rx?(^B)b#jHI9JMOfG}V>@)nZaI!eyu=WL-TjFWW{4+JQBSxM>gHEGQab284T9Uwz#pWE=F;8h>JLl3tSD&K6dC60|J3oCbxcM z8N8ctWbys4Ki1EFD!ft#tQG}IX5+95riIzH#h+Zh7mw{ll9CdJ{kZtP{vOj0Rab{- zQ`mKy@(td35<0OMPtWlQNAm|J5ot`N$4guEu0!-iEw_9Qrj)96kuvi|!U}7+BQy>g zI%YPTn2x-$BgyqOn{Pn}`1HB3@T0PM>zmG$X5880hY4}&BXm|wZ@arAJXR|2(mt`@ z7@{j&{0Mwr6V$$CEGjpQKL42=HuM{dD<##9r4IzxyUEh|is^yOTxd_hQG~B?d+Dlk zfh{J62E2eq_BRVbonC=2znPF-T*6k2DH-=k9HZE9Q2pC3EV7b@)UmBF)ntB9SRxRA z*%Xm7>3E%a?uWlQe?!}>xf(v-#K521kd2}3W~eS2-pd-vOMwa zBnQt%(fcb{RsrO>o1gzptL0o~ z{xhYG12ee&%{H|jg&LbpzWbxHlsJx(X>S|HfD`NRCcBs0zvu~E*>@;i{0%sGupAD3 zm_ZOSw#SAxrk}4)+3Z2sr6Bs3v4D(6o&JSOpiQTDkXn-qAGEy|t{5%EU(6OYU|#I{ zH@ENF#4{uay^f{4vA60x@f-a7w}Q?pa|;JLuYg4~*yD7_>gr-WHgQt{qVSZGG)x7H4ch zAk^yfFP35s!-SD?s9K$5N0%NM4F1Kug5c{$9QV07zF!^tN3aK-VaaUHPw!wPHt%lv z?ZZc`93f9&a4ou-XSM`e0{*@49;AbV*$I|8$?qlKBtSx{MI*6S&vo>br3-^k6 zVN4h5D$@t{Ua^|zBx}^2s^o_jkYKcZRQ_kM~cWowcFuu4bp{+G^A09GZTjURZ{j4xYVK(SrHb*E`%fqw(_=VAWZa6vebNQ5vJ?6-!HfgIz z@8+4=lO`xPIVmnORq7 z*(v)%+Fo_@81o5a3_NUoAkmf4dnfT8<{oOax7a*+3k`=@Z2FdRf!{;&wXWfQKaR!` zlCXC(MyGLEXD?ywl`duA^qR&*jFvVVDi56~E#ts88j~~XVEoHoE*)Jf+;J%^CtN(1 zb8@*m=j?$tKSqLP#_XY+!-~OXvQp?%4CN;tbP^hw2QnNDw@l55+p`i$J>o7H^Q|7m zlnhuYN=q+@TBtVJDvXhC{G54m@jBhF{1(LX$Zs|=2^!|~GrW6;zw#Wt^FkftuxLRU zhdi5J%D=2~^?t_@f)4rbPCh{ej!r)JU;bA1YU^NUe{cV7bnuxb>3{U^`R`eK2Iq$V z(;hzmOVjXdym@2IxdIQRor9JQg>Ua3gm>Iq`CNWI%Zgyj7W%x4FSRRhvf1yfa##D| z5KcPbkt`ij)9(G}JUqxB&_JE*#;b*=IP)#%I2OoxM@bA(!-}>zud_M#iR%)^-qtaf zBuE1_K5PGA$r@;yC2S`R3yg%7FWk18tY3n0uj;2on?l5AjPb@1*m&`Edp+OygPPt? zjOMVPJQ6kpRwtu4vRCvQV{CU~0O$)`V4A-#T!W?-wpW<{^Z+x>{0^U+OzQ1*BP550 zE!wBpbtbkOw-!Tl;+9X>f!)>e-Pu=Y?to^WO}|(uz>^EB-T*n;)o-(A-Yie6|=>OzLbn^$N>WeFkMJ;$a*hTLU_=wa24{;0 zs%JGmCY#arZTmiy{jRU2j6{8~4ZF65W>0)LGya~3SJ`6wD>k{jG|EIkii=vU3hF2hqeLiLsxV zdUtt3#<*8tbe!eIbgc@980ZA%xi4cv0-u<}D57ziP`gq^pY&0TXK9h4t9R-gz6q+A z_eZq?KhSpKEl!UZ)>F))WaA!Uj2zxqaMM#5qDafsJb-b)>Zk4E?NKYqtmSiCMd{{5 z*MX5=FU{9x=e%Ds@47hk5IEL+$bHr)>oBy0_qOyB=+BLUbDG;~WB?jrE;C3Gu?yvC zdxLWJ_Gx|&LDEb}_N6#jz+S@R^RiD})YY>EI%swivzAd}8J1>Re37^WD|+Puq51RI zO(Z!&S9USLJex4TLTA0&&CJif@C`9?yTWZ^%pkz9YVRtZp+Pc*$uzhJ^IL;0el}e^c-x3 z5Uvz~wNHZPmo2ri5Ld-gZI`xVMMp)zPDLq^1o5Uj7*Tmp!st6q4?Ky#+ngRpkd%K z#>=YI{=qe8aYtRo*0&Ps^=uPg+_Bdm zz*xZDd$)WZq$@~z^BGiK)|N>Ze?Iwy-)-4S(Ih!$#LU;b##%dRpRSJ%i$0x~MFWSy zhbuF|W*ZaK9oQpx-Td=O3bV5C3h%hw6F)2;p=3Zhh$f?{4FE=Xvx+!&&s;FZ_E#FE zS)dXb1I?}YSzH>oFneDuel~FlV%`;;Mxi0<;oen@^CV32=u(0sr1&PGg_u4YY0Y?k z#rP_$D-6mB^N*2sR;vw{A1)InRn5#Ld|1qfi_;cNGcPO!6Ha2n1_v5%!9o(JJaB4w zEQ)jtqQl?9?2}uU@zd$kJ`M&JVTylkdY8xYhS(Y))-TDg7e2%(^xxl$|E!i?Q7K=F zdipDSAM;?MmI?`5Uwn&sT+$cc)Pp$6Tg+Q5Gl)We6c^E?e1W;1@0(`&)4hM$7WHz0 zuIf`qac93hqt`KLhF@%&hE?<2jhO9;6}lOf-h6ut@8TpopTMrco5CqQftOi44#I_I zodwNeLa?-MXY;Yc9iiwkxEm+l6-z!drj7Ge8PTLENEpQo*lNlBS!#bbXLzx2=db+f)VS02f!1;3>cPDQOQ_OG}!+BfzB<-Dt zQm#)I@GNEHGBlnuCqme8b%xQL2^pdeBM1_Xj2L^_5hus}eO5{UG+pdltGy$DE? zCen!l5duW2^qz}5JKotlcW3S&aL<`@=6Pqn`OWj4b7sDocjkQW#dK)a3d=9bkO4c! z=;>F>4U~`^gS$m~3jEn|R`ySr(sz2!ZT8FHJOukfN&7pp+Gjp^tX$j}5Z=p-lv{%8 z`;8hZD(xKS00sr51gYbHkLsQme9lCoREN7bBG;j83rSUZeCJl%lW-b!fKayVg7{m(MH?XY3!9#B3u}V`DVAmr#Erg zWW57!KHz+Wbo<>5$xe{mvtGj^5KIDjz>yN#@?vxq!xB0{e|~Lg8tc}V7NgdiHI8G4#ikn|vA6i0BMgs! z(H&DHYdl!Y^eS&*)dhXi9s@JXLNki2);kd7BH!9RQLJ9=6;uE4u8r8qV$;fG3Hz~@`+m>?TPH9t>erYq- z#WiA(v|Fv(FsVDar*tye4~}sXkwFQa7(q52fq;IImRboW5@OK;IQygJD7>_q5qlqB zkwg0E?SN85U^`FDQ2uF{xjS>|%I4Hp>h7@W{n<^mtWVEh_LBh|eC8*w<8NGtrQ6f| zDhE@?*Oq?^)QKX)(?grdV0Aqw))quK0~Iq;Bc&NF*8JE9v(+Z-|1K`a#4~JTCm(V!Z7L3&sGXX z=$baXui|LFogYj}(o?3vtAWcIEgooI(ZNivtI)>L(dH)FbtgNHpiAX_T#+&9O_ECq zyQZNg#zOd(r^G97?ypKsT)+^f9X|kn8E%EYZCu6Kk;i6;Fc{BN2UvF-J2fz8(w1Ro z(La5!-!tVr2)NHC!@_c!RT)~dcg5G)xyh=3Zg;B9aVLeY;m?~HK6U=tj$a5qfsnR` z2p|)D`&69Fy!`FDSM7pNmTG2p>Y5);sp>|i(Fk8;5|_@Mzf*KaKNrV^ofI?I)AE0l zBYZ`(iSo)dvV%{+hr=tW5(%#HA!hK=E54y~tY-N|og;0!Zg2Y>4$JUgy`@c5NlA04 zM^#2t+0HO>^;^XaA%fP>Fs{UrT|9T%CG8nDaYTb}qm3PRm-Wh1j7~%+;oL|xcvP0@ zW$|Hf?URa-aK+=AN~9^Q3tY6y&*$UGMB-^Gn`dv+UhCn`d8)#$Au}{qhQNEx!2h_0 z9D9%m$V3@(>codF!bIS-W%6a2;ggHPR)=1ylka1om-nlw32s7jeG{QR+UBz#KgYE- zt!ZAcEm*A{OonXG{C$pQg5j!&*OE$o9%6?^q^S0Ia}?l8^GHoUW_|8XM!%eKNSM{> z*;Z(%|4ia_&bCL8yFGbDDpJ;MD9?9JQ5%>{QItQiEIq6~6AuCi`nUTw5yoWo(w zyiQ9%ZFmmj#czscVIM}D3rNZ>jO=1)UF1-*a=EEeeqe2`>m}|!?{;}&AJGPe2 zlF1bzF-@`-t6jxbMo|fYi4r^?LApPcvA1v_3H6hK}`mEiH0#~xkw7Dw0Ui0 ziWX8+*Y8PJYL4awPJGoa5!rJbOmGnR2DVInDO352lQAM#)RBY#UU+PPwj9+}R25&f z;6O2Yp)uM^5YJ95BzA=a=X^el7hw;Gb|9*#J#dS=%hgfTo>X{9 za&A@~r)IQT8YBs=pg7-0k=02{RUN@Bv^U>)61T7?y+=Vw=z~IK4%~D#x0;c$Xax3? zgkrPZF8u6silVk_Suf;31gv~%vDQxs^GS=1>dGU84T0FgP$BHlmLm2Env5IS#FFSn zaqJ#dshz_s!=62@Nm(``Y8zZu;M@Y4ZJrVL;oVYc%PV~wK%}RegkZnYL^aX|Ce;4` z9Z;?bRG85WEKTkXu2X@k3Z>~~9Md~3dW%E%*CAF%4+N+z!R8S!;t}hPizM+x9{dPI zWUZKguo?%HeR|5gf;l&oX~;&OpG?69fz3QIB5qC6rzjQzcWiA$lweZq{ubtY;a9US zz2S?JZAMiWw`21j4-NM@6e`GA(u6P+)45vk4ddJfXNL45d+%_{5#4e*3qt!62ucZx zRt##)>WQcbuBU%j(%iZi@l0#WW&*u0q^mzmi5Dx=dw4iM;h8Th_95R z7{)8X#BO!FR3z1a{ArB6vB~2@i|yE%mRhlj0xIv=+42Ow+jbArVWc z&a(AY&wE$R!p_w64AUTB(G`|^r`tFvuj@{=;$Cis^qsve+(mBqV-9t zFnQdKwMLHeo8Tkn9ffzoefAR0m?BF}dt9s|%_w?>!#uC+J7MH00tJ2{@tu>~6C%EO zRV>82KYTG9UMGg9hrHWBTMMIo=DW%UHd { filteringGroup = 'Gears'; commandToCheck = 'RG.GETEXECUTION'; - commandArgumentsToCheck = 'RG.GETEXECUTION id [SHARD | CLUSTER]'; + commandArgumentsToCheck = 'RG.GETEXECUTION id [SHARD|CLUSTER]'; externalPageLink = 'https://redis.io/commands/rg.getexecution'; // Open Command Helper diff --git a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts index 61334f5002..38331b544a 100644 --- a/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts +++ b/tests/e2e/tests/regression/workbench/autocomplete.e2e.ts @@ -72,7 +72,7 @@ test('Verify that user can see the static list of arguments when he uses “Ctrl await t.pressKey('enter'); // Check that the command is displayed in Editing area after selecting const script = await workbenchPage.queryInputScriptArea.textContent; - await t.expect(script.replace(/\s/g, ' ')).eql('JSON.ARRAPPEND key value [value ...] ', 'Result of sent command not exists'); + await t.expect(script.replace(/\s/g, ' ')).eql('JSON.ARRAPPEND key value ', 'Result of sent command not exists'); // Check that hint with arguments are displayed await t.expect(workbenchPage.monacoHintWithArguments.visible).ok('Hints with arguments are not displayed'); // Remove hints with arguments diff --git a/tests/e2e/tests/smoke/browser/filtering.e2e.ts b/tests/e2e/tests/smoke/browser/filtering.e2e.ts index 6fe3e17a03..b5334ce1c3 100644 --- a/tests/e2e/tests/smoke/browser/filtering.e2e.ts +++ b/tests/e2e/tests/smoke/browser/filtering.e2e.ts @@ -12,7 +12,7 @@ let keyName2 = common.generateWord(10); let randomValue = common.generateWord(10); const valueWithEscapedSymbols = 'KeyFor[A-G]*('; const searchedKeyName = 'KeyForSearch\\*\\?\\[]789'; -const searchedValueWithEscapedSymbols = 'KeyFor\\[A-G\\]\\*\\('; +const searchedValueWithEscapedSymbols = 'KeyFor\\[A-G\\]\*\('; fixture `Filtering per key name in Browser page` .meta({ type: 'smoke', rte: rte.standalone }) From a27cec7d358b1ad37b78e1370f7450104a1af6f4 Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Mon, 24 Apr 2023 12:49:14 +0200 Subject: [PATCH 072/106] upd for e2e --- tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts b/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts index 9fd365c1f8..abfc1708c0 100644 --- a/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts +++ b/tests/e2e/tests/critical-path/browser/bulk-upload.e2e.ts @@ -36,8 +36,8 @@ fixture `Bulk Upload` }); test('Verify bulk upload of different text docs formats', async t => { // Verify bulk upload for docker app version - const allKeysResults = ['9Keys Processed', '9Success', '0Errors']; - const bigKeysResults = ['10 000Keys Processed', '10 000Success', '0Errors']; + const allKeysResults = ['9Commands Processed', '9Success', '0Errors']; + const bigKeysResults = ['10 000Commands Processed', '10 000Success', '0Errors']; const defaultText = 'Select or drag and drop a file'; // Open bulk actions From 754fa9aaae5f7bdde3334b843b6a43ae13c03e8d Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Mon, 24 Apr 2023 12:54:48 +0200 Subject: [PATCH 073/106] upd --- ...{testTutorials.zip => customTutorials.zip} | Bin 518807 -> 518807 bytes .../workbench/import-tutorials.e2e.ts | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename tests/e2e/test-data/upload-tutorials/{testTutorials.zip => customTutorials.zip} (99%) diff --git a/tests/e2e/test-data/upload-tutorials/testTutorials.zip b/tests/e2e/test-data/upload-tutorials/customTutorials.zip similarity index 99% rename from tests/e2e/test-data/upload-tutorials/testTutorials.zip rename to tests/e2e/test-data/upload-tutorials/customTutorials.zip index b1b91a22e5fbed5a99c38275a8dfa2e56f738097..5bdcb5f91337b395e8476e3a6be59a5b316fb8e7 100644 GIT binary patch delta 292 zcmbP!Ret(a`3Z9T$)&|5`MDvbCHX~}i8;j+b=A>@HYOVeqKi#l9H@aVHvQsDcJa+0 z13g&LWhQ%sW2kPf4{xszX9Qv du9xf<7=l38xnc;azQR;FxjtNUdgCj0F#y1Tc8UN1 delta 292 zcmbP!Ret(a`3Z9T#fiBEIjOq2iFui6sl_D|b=A>@HYOVeqKi#l9H@aVHvQsDcJa+0 z13g&LWhQ%sW2kPf4{xszX9Qv du9xf<7=l38xnc;azQR;FxjtNUdgCj0F#tctaykG2 diff --git a/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts b/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts index 100eec6f4c..062fea0a09 100644 --- a/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts +++ b/tests/e2e/tests/regression/workbench/import-tutorials.e2e.ts @@ -9,8 +9,8 @@ import { deleteStandaloneDatabaseApi } from '../../../helpers/api/api-database'; const myRedisDatabasePage = new MyRedisDatabasePage(); const workbenchPage = new WorkbenchPage(); -const filePath = path.join('..', '..', '..', 'test-data', 'upload-tutorials', 'testTutorials.zip'); -const tutorialName = 'testTutorials'; +const filePath = path.join('..', '..', '..', 'test-data', 'upload-tutorials', 'customTutorials.zip'); +const tutorialName = 'customTutorials'; const tutorialName2 = 'tutorialTestByLink'; const link = 'https://drive.google.com/uc?id=1puRUoT8HmyZCekkeWNxBzXe_48TzXcJc&export=download'; let folder1 = 'folder-1'; From bd5a0936681258eb69ad0fc78b30babc6f6cb4bb Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Mon, 24 Apr 2023 13:02:35 +0200 Subject: [PATCH 074/106] upd --- tests/e2e/tests/critical-path/database/modules.e2e.ts | 4 ++-- tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/e2e/tests/critical-path/database/modules.e2e.ts b/tests/e2e/tests/critical-path/database/modules.e2e.ts index 3204791250..94cb751419 100644 --- a/tests/e2e/tests/critical-path/database/modules.e2e.ts +++ b/tests/e2e/tests/critical-path/database/modules.e2e.ts @@ -35,8 +35,8 @@ test const moduleIcons = databaseLine.find('[data-testid^=Redi]'); const numberOfIcons = await moduleIcons.count; for (let i = 0; i < numberOfIcons; i++) { - const moduleName = await moduleIcons.nth(i).getAttribute('data-testid'); - await t.expect(moduleName).eql(await moduleList[i].getAttribute('data-testid'), 'Correct icon not found'); + const moduleName = moduleIcons.nth(i).getAttribute('data-testid'); + await t.expect(await moduleName).eql(await moduleList[i].getAttribute('data-testid'), 'Correct icon not found'); } //Minimize the window to check quantifier await t.resizeWindow(1000, 700); diff --git a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts index a8860b6e82..ae25c4a027 100644 --- a/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts +++ b/tests/e2e/tests/regression/cli/cli-command-helper.e2e.ts @@ -150,7 +150,7 @@ test ]; commandsArgumentsToCheck = [ 'AI.MODELDEL key', - 'AI.SCRIPTSTORE key CPU | GPU [TAG] ENTRY_POINTS entry_point [entry_point ...]', + 'AI.SCRIPTSTORE key CPU|GPU [TAG tag] ENTRY_POINTS entry_point_count entry_point [entry_point ...]', 'AI.SCRIPTEXECUTE key function [KEYS key_count key [key ...]] [INPUTS input_count input [input ...]] [ARGS arg_count arg [arg ...]] [OUTPUTS output_count output [output ...]] [TIMEOUT timeout]', 'AI.TENSORSET key FLOAT|DOUBLE|INT8|INT16|INT32|INT64|UINT8|UINT16|STRING|BOOL shape [shape ...] [BLOB blob] [VALUES value [VALUES value ...]]' ]; From 5583e79fbc0c73f6618481d6486efc7782b6b8c6 Mon Sep 17 00:00:00 2001 From: vlad-dargel Date: Mon, 24 Apr 2023 13:05:32 +0200 Subject: [PATCH 075/106] update for tutorial --- .../upload-tutorials/customTutorials.zip | Bin 518807 -> 499745 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/e2e/test-data/upload-tutorials/customTutorials.zip b/tests/e2e/test-data/upload-tutorials/customTutorials.zip index 5bdcb5f91337b395e8476e3a6be59a5b316fb8e7..c52a99076b5e264baae425f699ab478e18f3b751 100644 GIT binary patch literal 499745 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 ?6dtX8&>E3w!T|N1+1-Y<76$Z$dPlZK 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 )w^p%n{niM`f>a^W&XEC5(h^z{#RHOzWfj( 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

NDA3M9d$=`HmbkZ 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

}`kyU`&fbr^SkgBWQGG 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