From b4ebaf3f60efa0bb51422059bf631f9e1e076666 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Tue, 16 Aug 2022 11:05:18 +0200 Subject: [PATCH 001/243] feat(components/molecule/tabs): make tabs accesibles --- .../tabs/src/components/MoleculeTab.js | 3 ++ .../tabs/src/components/MoleculeTabs.js | 23 +++++++---- components/molecule/tabs/test/index.test.js | 38 +++++++++++++++++++ 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTab.js b/components/molecule/tabs/src/components/MoleculeTab.js index 52636797f5..85e9c0e3d7 100644 --- a/components/molecule/tabs/src/components/MoleculeTab.js +++ b/components/molecule/tabs/src/components/MoleculeTab.js @@ -54,6 +54,9 @@ const MoleculeTab = forwardRef( className={className} onClick={handleChange} ref={useMergeRefs(innerRef, forwardedRef)} + role="tab" + aria-selected={active} + aria-controls={`molecule-tab-content-${numTab}`} > {icon && {icon}} {!isNaN(count) && {count}} diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 754f1ef41e..eee9515cb1 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -42,20 +42,29 @@ const MoleculeTabs = ({ const activeTabContent = childrenArray.reduce((activeContent, child) => { if (child) { - const {children: childrenChild, active} = child.props - return active ? childrenChild : activeContent + const {children: childrenChild, active, label, numTab} = child.props + return active ? ( +
+ {childrenChild} +
+ ) : ( +
{activeContent}
+ ) } - return activeContent + return
{activeContent}
}, null) return (
-
) } diff --git a/components/molecule/tabs/test/index.test.js b/components/molecule/tabs/test/index.test.js index 36633d62dd..0128f895b0 100644 --- a/components/molecule/tabs/test/index.test.js +++ b/components/molecule/tabs/test/index.test.js @@ -10,6 +10,8 @@ import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' +import {fireEvent} from '@testing-library/react' + import json from '../package.json' import * as pkg from '../src/index.js' @@ -148,6 +150,42 @@ describe(json.name, () => { count[2].toString() ) }) + + it('should switch content when tab 2 is clicked', () => { + // Given + const library = pkg + const {MoleculeTab} = library + const expectedContent1 = 'Content 1' + const expectedContent2 = 'Content 2' + const props = { + children: [ + + {expectedContent1} + , + + {expectedContent2} + + ] + } + + // When + const {getByRole} = setup(props) + const tab1 = getByRole('tab', {name: 'Tab 1'}) + expect(tab1).to.have.attribute('aria-selected', 'true') + + const content1 = getByRole('tabpanel') + expect(content1.innerHTML).to.equal(expectedContent1) + + // Click on second tab + const tab2 = getByRole('tab', {name: 'Tab 2'}) + expect(tab2).to.have.attribute('aria-selected', 'false') + fireEvent.click(tab2) + const content2 = getByRole('tabpanel') + + // Then + expect(tab2).to.have.attribute('aria-selected', 'true') + expect(content2.innerHTML).to.equal(expectedContent2) + }) }) describe('moleculeTabsTypes', () => { From bb8e8a22092b430cf18a71d2ce7a7f2f048db9e2 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Tue, 16 Aug 2022 11:21:14 +0200 Subject: [PATCH 002/243] refactor(components/molecule/tabs): not update activeContent element --- components/molecule/tabs/src/components/MoleculeTabs.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index eee9515cb1..c55f241ed6 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -42,10 +42,9 @@ const MoleculeTabs = ({ const activeTabContent = childrenArray.reduce((activeContent, child) => { if (child) { - const {children: childrenChild, active, label, numTab} = child.props + const {children: childrenChild, active, numTab} = child.props return active ? (
) : ( -
{activeContent}
+ activeContent ) } - return
{activeContent}
+ return activeContent }, null) return ( From 71296a319365c6109c7e9aaa2077933ceb80d09e Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Tue, 16 Aug 2022 12:09:06 +0200 Subject: [PATCH 003/243] feat(components/molecule/tabs): add orientation aria attribute --- .../molecule/tabs/src/components/MoleculeTabs.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index c55f241ed6..59b9e7ce21 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -25,6 +25,7 @@ const MoleculeTabs = ({ [`${BASE_CLASS}--${type}`]: type }) const childrenArray = Children.toArray(children) + const isVerticalOrientation = type === TYPES.VERTICAL const [isIntersecting, outerRef] = useOnScreen() @@ -60,7 +61,14 @@ const MoleculeTabs = ({ return (
-
    +
      {extendedChildren}
    {activeTabContent || null} From 8eeca333bf1c944de479ed3c3383d5fba03b2dbc Mon Sep 17 00:00:00 2001 From: Javier Auso Date: Thu, 29 Sep 2022 17:04:54 +0200 Subject: [PATCH 004/243] feat(components/atom/slider): add z-index in tooltip --- components/atom/slider/src/styles/index.scss | 2 ++ components/atom/slider/src/styles/settings.scss | 2 ++ 2 files changed, 4 insertions(+) diff --git a/components/atom/slider/src/styles/index.scss b/components/atom/slider/src/styles/index.scss index ce98114ade..654bcec5db 100644 --- a/components/atom/slider/src/styles/index.scss +++ b/components/atom/slider/src/styles/index.scss @@ -147,6 +147,8 @@ $class-tooltip-hidden: '#{$class-tooltip}-hidden'; } #{$class-tooltip} { + z-index: $z-atom-slider-tooltip; + #{$class-tooltip-inner} { background: transparent; border-color: transparent; diff --git a/components/atom/slider/src/styles/settings.scss b/components/atom/slider/src/styles/settings.scss index e49c28b540..62cd847ec2 100644 --- a/components/atom/slider/src/styles/settings.scss +++ b/components/atom/slider/src/styles/settings.scss @@ -22,3 +22,5 @@ $h-atom-slider-track: 8px !default; $p-atom-slider: $p-l !default; $mt-atom-slider-mark: 10px !default; + +$z-atom-slider-tooltip: auto !default; From 4e13e98affe157059edaeaf1843880e017fbc1f1 Mon Sep 17 00:00:00 2001 From: Carlos Parodi Date: Thu, 29 Sep 2022 18:59:03 +0200 Subject: [PATCH 005/243] feat(components/atom/image): rename node prop ISSUES CLOSED: #2319 --- components/atom/image/src/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/atom/image/src/index.js b/components/atom/image/src/index.js index 2069f47d20..fa0024eef5 100644 --- a/components/atom/image/src/index.js +++ b/components/atom/image/src/index.js @@ -31,7 +31,7 @@ const AtomImage = ({ placeholder, skeleton, sources = [], - spinner: Spinner, + spinner, ...imgProps }) => { const imageRef = useRef() @@ -78,9 +78,9 @@ const AtomImage = ({ backgroundImage: `url(${placeholder || skeleton})` } - const SpinnerExtended = - Spinner && - cloneElement(Spinner, { + const spinnerExtended = + spinner && + cloneElement(spinner, { className: CLASS_SPINNER }) @@ -107,7 +107,7 @@ const AtomImage = ({ /> - {!error && isLoading && SpinnerExtended} + {!error && isLoading && spinnerExtended} {error && ( )} @@ -148,7 +148,7 @@ AtomImage.propTypes = { skeleton: PropTypes.string, /** Spinner (component) displayed while the final image is being loaded */ - spinner: PropTypes.oneOfType([PropTypes.element, PropTypes.func]), + spinner: PropTypes.node([PropTypes.element, PropTypes.func]), /** Icon (component) to be displayed in an Error Box when the image cannot be loaded */ errorIcon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]), From decdf78cb3daa82ebb01d7c1e10165c503982d42 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 29 Sep 2022 17:15:25 +0000 Subject: [PATCH 006/243] release(components/atom/image): v2.14.0 [skip ci] --- components/atom/image/CHANGELOG.md | 9 +++++++++ components/atom/image/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/image/CHANGELOG.md b/components/atom/image/CHANGELOG.md index e2f7a1d541..5d8fec840b 100644 --- a/components/atom/image/CHANGELOG.md +++ b/components/atom/image/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.14.0 (2022-09-29) + + +### Features + +* **components/atom/image:** rename node prop ([4e13e98](https://github.com/SUI-Components/sui-components/commit/4e13e98affe157059edaeaf1843880e017fbc1f1)), closes [#2319](https://github.com/SUI-Components/sui-components/issues/2319) + + + # 2.13.0 (2022-07-18) diff --git a/components/atom/image/package.json b/components/atom/image/package.json index af3b2f90e5..dae67839c3 100644 --- a/components/atom/image/package.json +++ b/components/atom/image/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-image", - "version": "2.13.0", + "version": "2.14.0", "description": "", "main": "lib/index.js", "scripts": { From 21e9d050797b29347035730aac816e40370d44f6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 30 Sep 2022 07:10:58 +0000 Subject: [PATCH 007/243] release(components/atom/slider): v1.29.0 [skip ci] --- components/atom/slider/CHANGELOG.md | 11 +++++++++++ components/atom/slider/package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/components/atom/slider/CHANGELOG.md b/components/atom/slider/CHANGELOG.md index e53f1cab9b..ba57412e16 100644 --- a/components/atom/slider/CHANGELOG.md +++ b/components/atom/slider/CHANGELOG.md @@ -1,5 +1,16 @@ # CHANGELOG +# 1.29.0 (2022-09-30) + + +### Features + +* **components/atom/slider:** add z-index in tooltip ([8eeca33](https://github.com/SUI-Components/sui-components/commit/8eeca333bf1c944de479ed3c3383d5fba03b2dbc)) +* **Root:** Delete undefined dependencies ([c145905](https://github.com/SUI-Components/sui-components/commit/c145905350328925ba6fda2a462d7f8b508c8ea0)) +* **Root:** Merge commit ([d3735d0](https://github.com/SUI-Components/sui-components/commit/d3735d0644332e674d5a5b6291680697f0d6f7c4)) + + + # 1.28.0 (2022-07-06) diff --git a/components/atom/slider/package.json b/components/atom/slider/package.json index 3e78add891..ad39c164bc 100644 --- a/components/atom/slider/package.json +++ b/components/atom/slider/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-slider", - "version": "1.28.0", + "version": "1.29.0", "description": "", "main": "lib/index.js", "scripts": { From 4d851af456be1b44f9ea126d9151c6384e8e8312 Mon Sep 17 00:00:00 2001 From: Oriol Egea Date: Fri, 30 Sep 2022 09:45:54 +0200 Subject: [PATCH 008/243] refactor(components/molecule/avatar): Replace cloneElement with sui primitive injector ISSUES CLOSED: #2330 --- .../avatar/src/AvatarFallback/index.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/components/molecule/avatar/src/AvatarFallback/index.js b/components/molecule/avatar/src/AvatarFallback/index.js index 61b34f915a..aabcf79d03 100644 --- a/components/molecule/avatar/src/AvatarFallback/index.js +++ b/components/molecule/avatar/src/AvatarFallback/index.js @@ -1,8 +1,8 @@ -import {cloneElement} from 'react' - import cx from 'classnames' import PropTypes from 'prop-types' +import Injector from '@s-ui/react-primitive-injector' + import AvatarFallbackIcon from '../AvatarFallbackIcon/index.js' import {BASE_CLASS_NAME as FALLBACK_ICON_CLASS_NAME} from '../AvatarFallbackIcon/settings.js' import AvatarFallbackName from '../AvatarFallbackName/index.js' @@ -14,11 +14,15 @@ const MoleculeAvatarFallback = ({ ...others }) => { const className = cx(classNameProp, FALLBACK_ICON_CLASS_NAME) - return name ? ( - - ) : ( - cloneElement(icon, {...others, className, role: 'img'}) - ) + + const [Component, providedProps] = name + ? [AvatarFallbackName, {name, ...others}] + : [ + props => {icon}, + {...others, className, role: 'img'} + ] + + return } MoleculeAvatarFallback.displayName = 'MoleculeAvatarFallback' From 014c3c19eb8e5f4039c02e7180ed4b6459f9d2d9 Mon Sep 17 00:00:00 2001 From: Oriol Egea Date: Fri, 30 Sep 2022 09:58:54 +0200 Subject: [PATCH 009/243] feat(components/molecule/avatar): Add primitive injector dependency --- components/molecule/avatar/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/molecule/avatar/package.json b/components/molecule/avatar/package.json index 46da409b3c..918a45a928 100644 --- a/components/molecule/avatar/package.json +++ b/components/molecule/avatar/package.json @@ -10,7 +10,8 @@ }, "dependencies": { "@s-ui/react-atom-image": "2", - "@s-ui/react-atom-skeleton": "1" + "@s-ui/react-atom-skeleton": "1", + "@s-ui/react-primitive-injector": "1" }, "peerDependencies": { "@s-ui/component-dependencies": "1" From 8b50366891753a60711c72cba662986d56069fa7 Mon Sep 17 00:00:00 2001 From: Oriol Egea Date: Fri, 30 Sep 2022 12:07:28 +0200 Subject: [PATCH 010/243] refactor(components/molecule/field): replace cloneElement with injector ISSUES CLOSED: #2321 --- components/molecule/field/package.json | 3 ++- components/molecule/field/src/Label.js | 33 ++++++++++---------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/components/molecule/field/package.json b/components/molecule/field/package.json index b2203fffc7..71446a74d9 100644 --- a/components/molecule/field/package.json +++ b/components/molecule/field/package.json @@ -11,7 +11,8 @@ "dependencies": { "@s-ui/react-atom-help-text": "1", "@s-ui/react-atom-label": "1", - "@s-ui/react-atom-validation-text": "1" + "@s-ui/react-atom-validation-text": "1", + "@s-ui/react-primitive-injector": "1" }, "peerDependencies": { "@s-ui/component-dependencies": "1" diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index c1ee638a32..1a22712bde 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -1,9 +1,9 @@ -import {cloneElement} from 'react' import {isElement} from 'react-is' import PropTypes from 'prop-types' import AtomLabel, {AtomLabelTypes} from '@s-ui/react-atom-label' +import Injector from '@s-ui/react-primitive-injector' import {CLASS_NODE_LABEL_CONTAINER} from './config.js' @@ -15,27 +15,20 @@ const MoleculeLabel = ({ onClick }) => { const innerLabel = () => { + const baseProps = { + type: typeValidationLabel, + name, + onClick + } + if (label) { - return isElement(label) ? ( - cloneElement(label, { - type: typeValidationLabel, - name, - onClick - }) - ) : ( - - ) + const [Component, providedProps] = isElement(label) + ? [props => {label}, baseProps] + : [AtomLabel, {...baseProps, text: label}] + + return } else if (nodeLabel) { - return cloneElement(nodeLabel, { - type: typeValidationLabel, - name, - onClick - }) + return {nodeLabel} } return null } From b8a71dad8113831a61015cdd51c9b17f97725e38 Mon Sep 17 00:00:00 2001 From: Oriol Egea Date: Fri, 30 Sep 2022 12:45:42 +0200 Subject: [PATCH 011/243] refactor(components/molecule/buttonGroup): Replace cloneElement with injector in molecule/buttonGrou ISSUES CLOSED: #2333 --- components/molecule/buttonGroup/package.json | 3 ++- components/molecule/buttonGroup/src/index.js | 26 ++++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/components/molecule/buttonGroup/package.json b/components/molecule/buttonGroup/package.json index 51688c899c..b3bef87d88 100644 --- a/components/molecule/buttonGroup/package.json +++ b/components/molecule/buttonGroup/package.json @@ -11,7 +11,8 @@ "dependencies": { "@s-ui/component-dependencies": "1", "@s-ui/react-atom-button": "1", - "@s-ui/react-primitive-polymorphic-element": "1" + "@s-ui/react-primitive-polymorphic-element": "1", + "@s-ui/react-primitive-injector": "1" }, "keywords": [], "author": "", diff --git a/components/molecule/buttonGroup/src/index.js b/components/molecule/buttonGroup/src/index.js index 67682c36b5..6a548d2ad5 100644 --- a/components/molecule/buttonGroup/src/index.js +++ b/components/molecule/buttonGroup/src/index.js @@ -1,9 +1,10 @@ -import {Children, cloneElement} from 'react' +import {Children} from 'react' import cx from 'classnames' import PropTypes from 'prop-types' import {atomButtonDesigns, atomButtonSizes} from '@s-ui/react-atom-button' +import Injector from '@s-ui/react-primitive-injector' import Poly from '@s-ui/react-primitive-polymorphic-element' import {BASE_CLASS, combineProps, isFunction} from './settings.js' @@ -46,15 +47,20 @@ const MoleculeButtonGroup = ({ isFunction(onClickChild) && onClickChild(event, ...args) isFunction(onClick) && onClick(event, ...args) } - return cloneElement(child, { - ...props, - negative: combineProps(negativeChild, negativeProp), - size: combineProps(sizeChild, sizeProp), - design: combineProps(designChild, designProp), - groupPosition, - fullWidth, - onClick: clickHandler - }) + + return ( + + {child} + + ) }) return ( From 58719439ec5e98e8a81d2b77b53e9a7cdd9bbee1 Mon Sep 17 00:00:00 2001 From: Carlos Parodi Date: Sat, 1 Oct 2022 17:56:54 +0200 Subject: [PATCH 012/243] feat(components/atom/image): replace cloneElement spinner ISSUES CLOSED: #2320 --- components/atom/image/package.json | 3 ++- components/atom/image/src/index.js | 14 ++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/components/atom/image/package.json b/components/atom/image/package.json index dae67839c3..b5f888eb72 100644 --- a/components/atom/image/package.json +++ b/components/atom/image/package.json @@ -9,7 +9,8 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "@s-ui/component-dependencies": "1" + "@s-ui/component-dependencies": "1", + "@s-ui/react-primitive-injector": "1" }, "keywords": [], "author": "", diff --git a/components/atom/image/src/index.js b/components/atom/image/src/index.js index fa0024eef5..ee28dfb0de 100644 --- a/components/atom/image/src/index.js +++ b/components/atom/image/src/index.js @@ -1,8 +1,10 @@ -import {cloneElement, useCallback, useEffect, useRef, useState} from 'react' +import {useCallback, useEffect, useRef, useState} from 'react' import cx from 'classnames' import PropTypes from 'prop-types' +import Injector from '@s-ui/react-primitive-injector' + import ErrorImage from './ErrorImage.js' import { BASE_CLASS, @@ -78,12 +80,6 @@ const AtomImage = ({ backgroundImage: `url(${placeholder || skeleton})` } - const spinnerExtended = - spinner && - cloneElement(spinner, { - className: CLASS_SPINNER - }) - return (
    - {!error && isLoading && spinnerExtended} + {!error && isLoading && spinner && ( + {spinner} + )} {error && ( )} From 46db525cf5c574c6a0efbf247bbe15e9e5156528 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 1 Oct 2022 16:10:41 +0000 Subject: [PATCH 013/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5a8df9a2c6..a84ff23210 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.02%25-orange) -![branches](https://shields.io/badge/branches-57.61%25-AA0000) +![statements](https://shields.io/badge/statements-72.01%25-orange) +![branches](https://shields.io/badge/branches-57.59%25-AA0000) ![functions](https://shields.io/badge/functions-58.85%25-AA0000) -![lines](https://shields.io/badge/lines-73.69%25-orange) +![lines](https://shields.io/badge/lines-73.68%25-orange) ## ✨ Features From 1c3d5645fae2fe988a72b170b2f144324cc6a1ad Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 1 Oct 2022 16:12:04 +0000 Subject: [PATCH 014/243] release(components/atom/image): v2.15.0 [skip ci] --- components/atom/image/CHANGELOG.md | 9 +++++++++ components/atom/image/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/image/CHANGELOG.md b/components/atom/image/CHANGELOG.md index 5d8fec840b..f6db1b1a5e 100644 --- a/components/atom/image/CHANGELOG.md +++ b/components/atom/image/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.15.0 (2022-10-01) + + +### Features + +* **components/atom/image:** replace cloneElement spinner ([5871943](https://github.com/SUI-Components/sui-components/commit/58719439ec5e98e8a81d2b77b53e9a7cdd9bbee1)), closes [#2320](https://github.com/SUI-Components/sui-components/issues/2320) + + + # 2.14.0 (2022-09-29) diff --git a/components/atom/image/package.json b/components/atom/image/package.json index b5f888eb72..0614a7a662 100644 --- a/components/atom/image/package.json +++ b/components/atom/image/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-image", - "version": "2.14.0", + "version": "2.15.0", "description": "", "main": "lib/index.js", "scripts": { From 9e62e189e80fc76288c7c83c384610c2fd925bbb Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sat, 1 Oct 2022 10:52:28 +0200 Subject: [PATCH 015/243] docs(components/atom/skeleton/demo): Update skeleton demo --- components/atom/skeleton/demo/ArticleVariant.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/components/atom/skeleton/demo/ArticleVariant.js b/components/atom/skeleton/demo/ArticleVariant.js index d25fb1d0ac..2398e456e0 100644 --- a/components/atom/skeleton/demo/ArticleVariant.js +++ b/components/atom/skeleton/demo/ArticleVariant.js @@ -14,6 +14,9 @@ import { import AtomSkeleton, {atomSkeletonVariants} from '../src/index.js' +const height = 200 +const width = 200 + const ArticleVariant = ({className}) => { const [variantState, setVariantState] = useState() return ( @@ -44,7 +47,11 @@ const ArticleVariant = ({className}) => {

    - + ) } From 4881c4b79e5f2f4da5e6986c542ac36e253d1316 Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sat, 1 Oct 2022 10:22:45 +0200 Subject: [PATCH 016/243] feat(components/atom/slider): Remove -system --- components/atom/slider/src/styles/settings.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/slider/src/styles/settings.scss b/components/atom/slider/src/styles/settings.scss index 62cd847ec2..c303d303f2 100644 --- a/components/atom/slider/src/styles/settings.scss +++ b/components/atom/slider/src/styles/settings.scss @@ -13,7 +13,7 @@ $ml-atom-slider-handle: 0 !default; $ml-atom-slider-label: 0 !default; $mb-atom-slider-label: $m-m !default; $trf-atom-slider-label: translateX(-50%) !default; -$c-atom-slider-label: $c-system !default; +$c-atom-slider-label: $c-black !default; $w-atom-slider-handle: 24px !default; $b-atom-slider-handle: $bdw-s solid $c-primary !default; $bxsh-atom-slider-handle: none !default; From 50ba7220a71b7b123bb8e93dd3db5dde3911e5cc Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sat, 1 Oct 2022 10:27:04 +0200 Subject: [PATCH 017/243] feat(components/atom/tag): Remove -system --- components/atom/tag/src/_settings.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/tag/src/_settings.scss b/components/atom/tag/src/_settings.scss index 6b0ff182d2..05132670cf 100644 --- a/components/atom/tag/src/_settings.scss +++ b/components/atom/tag/src/_settings.scss @@ -37,7 +37,7 @@ $w-atom-tag-clickable: 32px !default; // closable $bgc-atom-tag-closable-icon: transparent !default; -$c-atom-tag-closable-icon: $c-system !default; +$c-atom-tag-closable-icon: $c-black !default; $bgc-atom-tag-closable-icon--hover: $c-gray !default; $c-atom-tag-closable-icon--hover: $c-gray-light-3 !default; From b84c52c956db4b709039dc6739f60c48b5427a79 Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sat, 1 Oct 2022 10:28:07 +0200 Subject: [PATCH 018/243] feat(components/molecule/notification): Remove -system --- components/molecule/notification/src/_settings.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/molecule/notification/src/_settings.scss b/components/molecule/notification/src/_settings.scss index c3d9e19170..5f341033b8 100644 --- a/components/molecule/notification/src/_settings.scss +++ b/components/molecule/notification/src/_settings.scss @@ -32,7 +32,7 @@ $notification-type-colors: ( success: $c-success, warning: $c-alert, error: $c-error, - system: $c-system + system: $c-black ) !default; $notification-type-positive-colors: ( @@ -77,7 +77,7 @@ $notification-type-positive-text-colors: ( success: $c-success, warning: $c-alert, error: $c-error, - system: $c-system + system: $c-black ) !default; // Positive Icon color @@ -86,7 +86,7 @@ $notification-type-positive-icon-colors: ( success: $c-success, warning: $c-alert, error: $c-error, - system: $c-system + system: $c-black ) !default; // Effects From dc7bd06a57c74e6112589ec6a97b738f090632cc Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sat, 1 Oct 2022 10:29:13 +0200 Subject: [PATCH 019/243] feat(components/molecule/rating): Remove -system --- components/molecule/rating/src/styles/settings.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/rating/src/styles/settings.scss b/components/molecule/rating/src/styles/settings.scss index 55e823696e..068bc9b402 100644 --- a/components/molecule/rating/src/styles/settings.scss +++ b/components/molecule/rating/src/styles/settings.scss @@ -21,5 +21,5 @@ $m-l-molecule-small-rating-stars: $m-l-molecule-rating-stars !default; $p-molecule-rating-label: $p-m !default; $p-molecule-rating-stars: 0 !default; -$c-molecule-rating-svg: $c-system !default; +$c-molecule-rating-svg: $c-black !default; $c-molecule-rating-svg-hover: $c-primary !default; From 146a2b7fddeb0954b8ca2b3b66636b6972fdd4e9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 1 Oct 2022 16:49:17 +0000 Subject: [PATCH 020/243] release(components/atom/slider): v1.30.0 [skip ci] --- components/atom/slider/CHANGELOG.md | 9 +++++++++ components/atom/slider/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/slider/CHANGELOG.md b/components/atom/slider/CHANGELOG.md index ba57412e16..858af22095 100644 --- a/components/atom/slider/CHANGELOG.md +++ b/components/atom/slider/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.30.0 (2022-10-01) + + +### Features + +* **components/atom/slider:** Remove -system ([4881c4b](https://github.com/SUI-Components/sui-components/commit/4881c4b79e5f2f4da5e6986c542ac36e253d1316)) + + + # 1.29.0 (2022-09-30) diff --git a/components/atom/slider/package.json b/components/atom/slider/package.json index ad39c164bc..b05be9a37f 100644 --- a/components/atom/slider/package.json +++ b/components/atom/slider/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-slider", - "version": "1.29.0", + "version": "1.30.0", "description": "", "main": "lib/index.js", "scripts": { From 5ae2f572038b1060e14870b766ff47db318c41cd Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 1 Oct 2022 16:49:23 +0000 Subject: [PATCH 021/243] release(components/atom/tag): v2.44.0 [skip ci] --- components/atom/tag/CHANGELOG.md | 9 +++++++++ components/atom/tag/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/tag/CHANGELOG.md b/components/atom/tag/CHANGELOG.md index d26397c0f4..59795e42a7 100644 --- a/components/atom/tag/CHANGELOG.md +++ b/components/atom/tag/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.44.0 (2022-10-01) + + +### Features + +* **components/atom/tag:** Remove -system ([50ba722](https://github.com/SUI-Components/sui-components/commit/50ba7220a71b7b123bb8e93dd3db5dde3911e5cc)) + + + # 2.43.0 (2022-07-27) diff --git a/components/atom/tag/package.json b/components/atom/tag/package.json index 87c82d74b3..8d3856fe6f 100644 --- a/components/atom/tag/package.json +++ b/components/atom/tag/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-tag", - "version": "2.43.0", + "version": "2.44.0", "description": "", "main": "lib/index.js", "scripts": { From 2ebd0a2544b03d5392c0a9027902f41fe3f9ac8c Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 1 Oct 2022 16:49:30 +0000 Subject: [PATCH 022/243] release(components/molecule/notification): v1.34.0 [skip ci] --- components/molecule/notification/CHANGELOG.md | 9 +++++++++ components/molecule/notification/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/notification/CHANGELOG.md b/components/molecule/notification/CHANGELOG.md index 9d12828e7c..9f672b78ff 100644 --- a/components/molecule/notification/CHANGELOG.md +++ b/components/molecule/notification/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.34.0 (2022-10-01) + + +### Features + +* **components/molecule/notification:** Remove -system ([b84c52c](https://github.com/SUI-Components/sui-components/commit/b84c52c956db4b709039dc6739f60c48b5427a79)) + + + # 1.33.0 (2022-09-19) diff --git a/components/molecule/notification/package.json b/components/molecule/notification/package.json index b4331e830a..472d434e86 100644 --- a/components/molecule/notification/package.json +++ b/components/molecule/notification/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-notification", - "version": "1.33.0", + "version": "1.34.0", "description": "", "main": "lib/index.js", "scripts": { From c29a7b3ba793d8bc4a9dff662655081e30ae9a09 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Sat, 1 Oct 2022 16:49:36 +0000 Subject: [PATCH 023/243] release(components/molecule/rating): v1.21.0 [skip ci] --- components/molecule/rating/CHANGELOG.md | 9 +++++++++ components/molecule/rating/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/rating/CHANGELOG.md b/components/molecule/rating/CHANGELOG.md index 4b041efc8a..096cc33ff1 100644 --- a/components/molecule/rating/CHANGELOG.md +++ b/components/molecule/rating/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.21.0 (2022-10-01) + + +### Features + +* **components/molecule/rating:** Remove -system ([dc7bd06](https://github.com/SUI-Components/sui-components/commit/dc7bd06a57c74e6112589ec6a97b738f090632cc)) + + + # 1.20.0 (2022-06-23) diff --git a/components/molecule/rating/package.json b/components/molecule/rating/package.json index 6a0fc59052..15a9f5ed3e 100644 --- a/components/molecule/rating/package.json +++ b/components/molecule/rating/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-rating", - "version": "1.20.0", + "version": "1.21.0", "description": "", "main": "lib/index.js", "scripts": { From 26ac8b10a174385381260b582e10cca950f2ad01 Mon Sep 17 00:00:00 2001 From: Javier Auso Date: Mon, 3 Oct 2022 08:46:22 +0200 Subject: [PATCH 024/243] docs(components/atom/slider): Add AtomSlider marker prop doc --- components/atom/slider/README.md | 10 ++++++++++ components/atom/slider/src/index.js | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/atom/slider/README.md b/components/atom/slider/README.md index 7d2e937fcf..dd8b24c246 100644 --- a/components/atom/slider/README.md +++ b/components/atom/slider/README.md @@ -20,6 +20,16 @@ import AtomSlider from '@s-ui/react-atom-slider' ``` +### Basic usage with custom markers (only first and last position) + +```js + +``` + ### Step 25 and default value 50 ```js diff --git a/components/atom/slider/src/index.js b/components/atom/slider/src/index.js index ace2d5779a..4eaeebfead 100644 --- a/components/atom/slider/src/index.js +++ b/components/atom/slider/src/index.js @@ -155,7 +155,7 @@ AtomSlider.propTypes = { /* only if range=false, shows a position fixed label with the current value instead of a tooltip */ valueLabel: PropTypes.bool, - /* Set your own mark labels */ + /* Set your own mark labels, usually first and last positions */ marks: PropTypes.array, /* callback to format the value shown as label */ From 6949cbd9d8deea42d8cef294a11d97e01f48e8f9 Mon Sep 17 00:00:00 2001 From: Javier Auso Date: Mon, 3 Oct 2022 09:39:22 +0200 Subject: [PATCH 025/243] docs(components/atom/slider): update indent --- components/atom/slider/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/atom/slider/README.md b/components/atom/slider/README.md index dd8b24c246..7bb0500d3f 100644 --- a/components/atom/slider/README.md +++ b/components/atom/slider/README.md @@ -24,9 +24,9 @@ import AtomSlider from '@s-ui/react-atom-slider' ```js ``` From 4b23d946fa2a865b539084171dd57c44973f29b9 Mon Sep 17 00:00:00 2001 From: Oriol Egea Date: Mon, 3 Oct 2022 09:51:26 +0200 Subject: [PATCH 026/243] refactor(components/molecule/buttonGroup): Remove not-needed code --- components/molecule/buttonGroup/src/index.js | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/components/molecule/buttonGroup/src/index.js b/components/molecule/buttonGroup/src/index.js index 6a548d2ad5..8be6b1cc42 100644 --- a/components/molecule/buttonGroup/src/index.js +++ b/components/molecule/buttonGroup/src/index.js @@ -7,7 +7,7 @@ import {atomButtonDesigns, atomButtonSizes} from '@s-ui/react-atom-button' import Injector from '@s-ui/react-primitive-injector' import Poly from '@s-ui/react-primitive-polymorphic-element' -import {BASE_CLASS, combineProps, isFunction} from './settings.js' +import {BASE_CLASS} from './settings.js' const getGroupPosition = ({groupPositions, numChildren}) => @@ -36,27 +36,17 @@ const MoleculeButtonGroup = ({ const extendedChildren = Children.toArray(children) .filter(Boolean) .map((child, index) => { - const { - size: sizeChild, - design: designChild, - negative: negativeChild, - onClick: onClickChild - } = child.props const groupPosition = getGroupPositionByIndex(index) - const clickHandler = (event, ...args) => { - isFunction(onClickChild) && onClickChild(event, ...args) - isFunction(onClick) && onClick(event, ...args) - } return ( {child} From af717a90e81e1330cfb00aa158ed7de2fc6d7785 Mon Sep 17 00:00:00 2001 From: Oriol Egea Date: Mon, 3 Oct 2022 10:00:48 +0200 Subject: [PATCH 027/243] refactor(components/molecule/buttonGroup): Remove no-longer needed variable renaming --- components/molecule/buttonGroup/src/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/molecule/buttonGroup/src/index.js b/components/molecule/buttonGroup/src/index.js index 8be6b1cc42..762b5e9e23 100644 --- a/components/molecule/buttonGroup/src/index.js +++ b/components/molecule/buttonGroup/src/index.js @@ -21,9 +21,9 @@ const MoleculeButtonGroup = ({ as = 'div', children, fullWidth, - size: sizeProp, - design: designProp, - negative: negativeProp, + size, + design, + negative, groupPositions, onClick, ...props @@ -41,9 +41,9 @@ const MoleculeButtonGroup = ({ return ( Date: Mon, 3 Oct 2022 10:08:40 +0200 Subject: [PATCH 028/243] refactor(components/molecule/buttonGroup): Remove no-longer needed functions --- components/molecule/buttonGroup/src/settings.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/components/molecule/buttonGroup/src/settings.js b/components/molecule/buttonGroup/src/settings.js index 3d3293baf1..c5c2ae5da7 100644 --- a/components/molecule/buttonGroup/src/settings.js +++ b/components/molecule/buttonGroup/src/settings.js @@ -1,6 +1 @@ export const BASE_CLASS = 'sui-MoleculeButtonGroup' - -export const isFunction = fn => typeof fn === 'function' - -export const combineProps = (childProp, wrapperProp) => - childProp === undefined ? wrapperProp : childProp From 6d10752a3345126ffd9880f7d84da8dd5facce0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Lucas?= Date: Wed, 10 Aug 2022 11:59:13 +0200 Subject: [PATCH 029/243] feat(components/primitive/portal): first approach --- components/primitive/portal/.gitignore | 2 + components/primitive/portal/.npmignore | 4 ++ components/primitive/portal/README.md | 34 +++++++++++ .../portal/demo/articles/DefaultArticle.js | 36 ++++++++++++ components/primitive/portal/demo/config.js | 2 + components/primitive/portal/demo/index.js | 48 ++++++++++++++++ components/primitive/portal/demo/index.scss | 3 + components/primitive/portal/demo/package.json | 12 ++++ components/primitive/portal/package.json | 26 +++++++++ components/primitive/portal/src/index.js | 52 +++++++++++++++++ components/primitive/portal/src/index.scss | 5 ++ .../primitive/portal/test/index.test.js | 56 +++++++++++++++++++ 12 files changed, 280 insertions(+) create mode 100644 components/primitive/portal/.gitignore create mode 100644 components/primitive/portal/.npmignore create mode 100644 components/primitive/portal/README.md create mode 100644 components/primitive/portal/demo/articles/DefaultArticle.js create mode 100644 components/primitive/portal/demo/config.js create mode 100644 components/primitive/portal/demo/index.js create mode 100644 components/primitive/portal/demo/index.scss create mode 100644 components/primitive/portal/demo/package.json create mode 100644 components/primitive/portal/package.json create mode 100644 components/primitive/portal/src/index.js create mode 100644 components/primitive/portal/src/index.scss create mode 100644 components/primitive/portal/test/index.test.js diff --git a/components/primitive/portal/.gitignore b/components/primitive/portal/.gitignore new file mode 100644 index 0000000000..a9f4ed5456 --- /dev/null +++ b/components/primitive/portal/.gitignore @@ -0,0 +1,2 @@ +lib +node_modules \ No newline at end of file diff --git a/components/primitive/portal/.npmignore b/components/primitive/portal/.npmignore new file mode 100644 index 0000000000..d5a120008c --- /dev/null +++ b/components/primitive/portal/.npmignore @@ -0,0 +1,4 @@ +assets +demo +src +test diff --git a/components/primitive/portal/README.md b/components/primitive/portal/README.md new file mode 100644 index 0000000000..845aa5f6bc --- /dev/null +++ b/components/primitive/portal/README.md @@ -0,0 +1,34 @@ +# PrimitivePortal + +> Description + + + +## Installation + +```sh +$ npm install sui-primitive-portal +``` + +## Usage + +### Basic usage + +#### Import package and use the component + +```js +import PrimitivePortal from 'sui-primitive-portal' + +return () +``` + +#### Import the styles (Sass) + +```css +@import '~@s-ui/theme/lib/index'; +/* @import 'your theme'; */ +@import '~sui-primitive-portal/lib/index'; +``` + + +> **Find full description and more examples in the [demo page](#).** \ No newline at end of file diff --git a/components/primitive/portal/demo/articles/DefaultArticle.js b/components/primitive/portal/demo/articles/DefaultArticle.js new file mode 100644 index 0000000000..780caa27f7 --- /dev/null +++ b/components/primitive/portal/demo/articles/DefaultArticle.js @@ -0,0 +1,36 @@ +import {useState, useRef} from 'react' + +import PropTypes from 'prop-types' + +import {Article, H2, Paragraph, Input} from '@s-ui/documentation-library' + +import PrimitivePortal from '../../src/index.js' + +const DefaultArticle = ({className, container}) => { + const [data, setData] = useState('portal') + const ref = useRef() + return ( +
    +

    Default

    + paragraph + setData(event.target.value)} /> + +
    + {data} +
    +
    +
    + ) +} + +DefaultArticle.propTypes = { + className: PropTypes.string, + container: PropTypes.object +} +DefaultArticle.displayName = 'DefaultArticle' + +export default DefaultArticle diff --git a/components/primitive/portal/demo/config.js b/components/primitive/portal/demo/config.js new file mode 100644 index 0000000000..75ebd84b82 --- /dev/null +++ b/components/primitive/portal/demo/config.js @@ -0,0 +1,2 @@ +export const BASE_CLASS_DEMO = `DemoPrimitivePortal` +export const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` diff --git a/components/primitive/portal/demo/index.js b/components/primitive/portal/demo/index.js new file mode 100644 index 0000000000..1710b4df05 --- /dev/null +++ b/components/primitive/portal/demo/index.js @@ -0,0 +1,48 @@ +import {useRef} from 'react' + +import { + H1, + Paragraph, + Grid, + Cell, + Article, + BootstrapIcon, + Button +} from '@s-ui/documentation-library' +import AtomIcon from '@s-ui/react-atom-icon' + +import DefaultArticle from './articles/DefaultArticle.js' +import {CLASS_SECTION} from './config' + +const Demo = () => { + const ref = useRef() + const handleFocus = element => () => element?.scrollIntoView() + return ( +
    +

    PrimitivePortal

    + paragraph +
    + + + + + + + + +
    + + +
    +
    + ) +} + +export default Demo diff --git a/components/primitive/portal/demo/index.scss b/components/primitive/portal/demo/index.scss new file mode 100644 index 0000000000..cd7c259df7 --- /dev/null +++ b/components/primitive/portal/demo/index.scss @@ -0,0 +1,3 @@ +@import '~@s-ui/react-atom-icon/lib/index.scss'; + +@import '../src/index'; diff --git a/components/primitive/portal/demo/package.json b/components/primitive/portal/demo/package.json new file mode 100644 index 0000000000..24de1b801f --- /dev/null +++ b/components/primitive/portal/demo/package.json @@ -0,0 +1,12 @@ +{ + "name": "@s-ui/react-primitive-portal-demo", + "version": "1.0.0", + "private": true, + "description": "Demo for sui-primitive-portal", + "dependencies": { + "@s-ui/js": "2.26.0", + "@s-ui/react-atom-icon": "1.18.0", + "@s-ui/react-primitive-injector": "1.2.0", + "@s-ui/react-primitive-polymorphic-element": "1.2.0" + } +} diff --git a/components/primitive/portal/package.json b/components/primitive/portal/package.json new file mode 100644 index 0000000000..8e09beacca --- /dev/null +++ b/components/primitive/portal/package.json @@ -0,0 +1,26 @@ +{ + "name": "@s-ui/react-primitive-portal", + "version": "1.0.0", + "description": "", + "main": "lib/index.js", + "scripts": { + "prepublishOnly": "rimraf lib && npm run build:js && npm run build:styles", + "build:js": "babel --presets sui src --out-dir ./lib", + "build:styles": "cpx './src/**/*.scss' lib" + }, + "peerDependencies": { + "@s-ui/theme": "8" + }, + "repository": { + "type": "git", + "url": "https://github.com/SUI-Components/sui-components" + }, + "keywords": [], + "author": "", + "license": "MIT", + "dependencies": { + "@s-ui/js": "2.26.0", + "@s-ui/react-primitive-injector": "1", + "@s-ui/react-primitive-polymorphic-element": "1" + } +} diff --git a/components/primitive/portal/src/index.js b/components/primitive/portal/src/index.js new file mode 100644 index 0000000000..761e23d327 --- /dev/null +++ b/components/primitive/portal/src/index.js @@ -0,0 +1,52 @@ +import {forwardRef, Fragment, useMemo} from 'react' +import {createPortal} from 'react-dom' +import {isFragment} from 'react-is' + +import PropTypes from 'prop-types' + +import Injector from '@s-ui/react-primitive-injector' +import Poly from '@s-ui/react-primitive-polymorphic-element' +import {getTarget} from '@s-ui/js/lib/react/index.js' + +const PrimitivePortal = forwardRef( + ( + { + container = globalThis?.document?.body, + as: AsProp = Fragment, + children, + ...props + }, + forwardedRef + ) => { + const target = useMemo(() => getTarget(container), [container]) + const As = useMemo( + () => + isFragment() && forwardedRef !== undefined ? 'div' : AsProp, + [AsProp, forwardedRef] + ) + return target + ? createPortal( + ) || + (forwardedRef !== undefined && { + className: 'sui-PrimitivePortal', + ref: forwardedRef + }))} + > + {children} + , + target + ) + : null + } +) + +PrimitivePortal.displayName = 'PrimitivePortal' +PrimitivePortal.propTypes = { + as: PropTypes.elementType, + container: PropTypes.object, + children: PropTypes.node +} + +export default PrimitivePortal diff --git a/components/primitive/portal/src/index.scss b/components/primitive/portal/src/index.scss new file mode 100644 index 0000000000..9acbf00ac6 --- /dev/null +++ b/components/primitive/portal/src/index.scss @@ -0,0 +1,5 @@ +@import '~@s-ui/theme/lib/index'; + +.sui-PrimitivePortal { + // Do your magic +} diff --git a/components/primitive/portal/test/index.test.js b/components/primitive/portal/test/index.test.js new file mode 100644 index 0000000000..48861ec5ba --- /dev/null +++ b/components/primitive/portal/test/index.test.js @@ -0,0 +1,56 @@ +/* + * Remember: YOUR COMPONENT IS DEFINED GLOBALLY + * */ + +/* eslint react/jsx-no-undef:0 */ +/* eslint no-undef:0 */ + +import ReactDOM from 'react-dom' + +import chai, {expect} from 'chai' +import chaiDOM from 'chai-dom' +import Component from '../src/index.js' + +chai.use(chaiDOM) + +describe('PrimitivePortal', () => { + const setup = setupEnvironment(Component) + + it('should render without crashing', () => { + // Given + const props = {} + + // When + const component = + + // Then + const div = document.createElement('div') + ReactDOM.render(component, div) + ReactDOM.unmountComponentAtNode(div) + }) + + it('should NOT render null', () => { + // Given + const props = {} + + // When + const {container} = setup(props) + + // Then + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) + }) + + it.skip('should NOT extend classNames', () => { + // Given + const props = {className: 'extended-classNames'} + const findSentence = str => string => string.match(new RegExp(`S*${str}S*`)) + + // When + const {container} = setup(props) + const findClassName = findSentence(props.className) + + // Then + expect(findClassName(container.innerHTML)).to.be.null + }) +}) From 6bc3d3785d81a9adea14200bf5ed64f625915855 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Wed, 17 Aug 2022 15:30:29 +0200 Subject: [PATCH 030/243] test(components/primitive/portal): add tests --- components/primitive/portal/README.md | 13 ++- .../portal/demo/articles/DefaultArticle.js | 94 ++++++++++++--- components/primitive/portal/demo/index.js | 40 +------ components/primitive/portal/demo/package.json | 5 +- components/primitive/portal/package.json | 1 + components/primitive/portal/src/index.js | 51 +++++---- components/primitive/portal/src/settings.js | 14 +++ .../primitive/portal/test/getComponent.js | 33 ++++++ .../primitive/portal/test/index.test.js | 108 +++++++++++++----- 9 files changed, 247 insertions(+), 112 deletions(-) create mode 100644 components/primitive/portal/src/settings.js create mode 100644 components/primitive/portal/test/getComponent.js diff --git a/components/primitive/portal/README.md b/components/primitive/portal/README.md index 845aa5f6bc..c28b751cca 100644 --- a/components/primitive/portal/README.md +++ b/components/primitive/portal/README.md @@ -2,12 +2,15 @@ > Description +Renders a React subtree in a different part of the DOM. + + ## Installation ```sh -$ npm install sui-primitive-portal +$ npm install @s-ui/primitive-portal ``` ## Usage @@ -17,9 +20,11 @@ $ npm install sui-primitive-portal #### Import package and use the component ```js -import PrimitivePortal from 'sui-primitive-portal' +import PrimitivePortal from '@s-ui/primitive-portal' -return () +return ( + {children} +) ``` #### Import the styles (Sass) @@ -27,7 +32,7 @@ return () ```css @import '~@s-ui/theme/lib/index'; /* @import 'your theme'; */ -@import '~sui-primitive-portal/lib/index'; +@import '~@s-ui/primitive-portal/lib/index'; ``` diff --git a/components/primitive/portal/demo/articles/DefaultArticle.js b/components/primitive/portal/demo/articles/DefaultArticle.js index 780caa27f7..2c702e0b67 100644 --- a/components/primitive/portal/demo/articles/DefaultArticle.js +++ b/components/primitive/portal/demo/articles/DefaultArticle.js @@ -1,35 +1,91 @@ +import AtomIcon from '@s-ui/react-atom-icon' import {useState, useRef} from 'react' import PropTypes from 'prop-types' -import {Article, H2, Paragraph, Input} from '@s-ui/documentation-library' +import { + Article, + H2, + Paragraph, + Input, + Grid, + Cell, + Button, + BootstrapIcon, + Code +} from '@s-ui/documentation-library' import PrimitivePortal from '../../src/index.js' -const DefaultArticle = ({className, container}) => { +const DefaultArticle = ({className}) => { const [data, setData] = useState('portal') - const ref = useRef() + const targetRef = useRef() + const portalRef = useRef() + const baseRef = useRef() + const handleFocus = element => () => element?.scrollIntoView() return ( -
    -

    Default

    - paragraph - setData(event.target.value)} /> - -
    - {data} -
    -
    -
    +
    + + +
    +

    Default

    + + When an element is given to the target (element) prop + it is triggering it. By default, the element is the document's + body. + + setData(event.target.value)} + /> + +
    + {data} +
    +
    +
    +
    + + + + + + + + + + + +
    + + +
    ) } DefaultArticle.propTypes = { - className: PropTypes.string, - container: PropTypes.object + className: PropTypes.string } DefaultArticle.displayName = 'DefaultArticle' diff --git a/components/primitive/portal/demo/index.js b/components/primitive/portal/demo/index.js index 1710b4df05..93fcd7300a 100644 --- a/components/primitive/portal/demo/index.js +++ b/components/primitive/portal/demo/index.js @@ -1,46 +1,16 @@ -import {useRef} from 'react' - -import { - H1, - Paragraph, - Grid, - Cell, - Article, - BootstrapIcon, - Button -} from '@s-ui/documentation-library' -import AtomIcon from '@s-ui/react-atom-icon' +import {H1, Paragraph} from '@s-ui/documentation-library' import DefaultArticle from './articles/DefaultArticle.js' import {CLASS_SECTION} from './config' const Demo = () => { - const ref = useRef() - const handleFocus = element => () => element?.scrollIntoView() return (

    PrimitivePortal

    - paragraph -
    - - - - - - - - -
    - - -
    + + Renders a React subtree in a different part of the DOM. + +
    ) } diff --git a/components/primitive/portal/demo/package.json b/components/primitive/portal/demo/package.json index 24de1b801f..3b65b82438 100644 --- a/components/primitive/portal/demo/package.json +++ b/components/primitive/portal/demo/package.json @@ -4,9 +4,6 @@ "private": true, "description": "Demo for sui-primitive-portal", "dependencies": { - "@s-ui/js": "2.26.0", - "@s-ui/react-atom-icon": "1.18.0", - "@s-ui/react-primitive-injector": "1.2.0", - "@s-ui/react-primitive-polymorphic-element": "1.2.0" + "@s-ui/react-atom-icon": "1.18.0" } } diff --git a/components/primitive/portal/package.json b/components/primitive/portal/package.json index 8e09beacca..285d712553 100644 --- a/components/primitive/portal/package.json +++ b/components/primitive/portal/package.json @@ -20,6 +20,7 @@ "license": "MIT", "dependencies": { "@s-ui/js": "2.26.0", + "@s-ui/react-hooks": "1", "@s-ui/react-primitive-injector": "1", "@s-ui/react-primitive-polymorphic-element": "1" } diff --git a/components/primitive/portal/src/index.js b/components/primitive/portal/src/index.js index 761e23d327..78581419af 100644 --- a/components/primitive/portal/src/index.js +++ b/components/primitive/portal/src/index.js @@ -1,4 +1,4 @@ -import {forwardRef, Fragment, useMemo} from 'react' +import {forwardRef, Fragment, useMemo, useState, useEffect} from 'react' import {createPortal} from 'react-dom' import {isFragment} from 'react-is' @@ -6,37 +6,39 @@ import PropTypes from 'prop-types' import Injector from '@s-ui/react-primitive-injector' import Poly from '@s-ui/react-primitive-polymorphic-element' -import {getTarget} from '@s-ui/js/lib/react/index.js' +import useMountedState from '@s-ui/react-hooks/lib/useMountedState' + +import {BASE_CLASS, getContainer} from './settings.js' const PrimitivePortal = forwardRef( - ( - { - container = globalThis?.document?.body, - as: AsProp = Fragment, - children, - ...props - }, - forwardedRef - ) => { - const target = useMemo(() => getTarget(container), [container]) + ({target, as: AsProp = Fragment, children, ...props}, forwardedRef) => { + const isMounted = useMountedState() + const hasForwardRef = forwardedRef !== null + const [container, setContainer] = useState('') + + useEffect(() => { + if (isMounted()) { + setContainer(() => getContainer(target), [target]) + } + }, [target, setContainer, isMounted, getContainer]) + const As = useMemo( - () => - isFragment() && forwardedRef !== undefined ? 'div' : AsProp, - [AsProp, forwardedRef] + () => (isFragment() && hasForwardRef ? 'div' : AsProp), + [AsProp, hasForwardRef] ) - return target + + return container ? createPortal( ) || - (forwardedRef !== undefined && { - className: 'sui-PrimitivePortal', - ref: forwardedRef - }))} + {...(!isFragment( || hasForwardRef) && { + className: BASE_CLASS, + ref: forwardedRef + })} > {children} , - target + container ) : null } @@ -44,8 +46,11 @@ const PrimitivePortal = forwardRef( PrimitivePortal.displayName = 'PrimitivePortal' PrimitivePortal.propTypes = { + /* Render the passed value as the correspondent HTML tag or the component if a function is passed */ as: PropTypes.elementType, - container: PropTypes.object, + /** Element where portal should be rendered, by default new div element is created and appended to document.body */ + target: PropTypes.object, + /** inner virtual-dom elements **/ children: PropTypes.node } diff --git a/components/primitive/portal/src/settings.js b/components/primitive/portal/src/settings.js new file mode 100644 index 0000000000..c1ca64174f --- /dev/null +++ b/components/primitive/portal/src/settings.js @@ -0,0 +1,14 @@ +import {getTarget} from '@s-ui/js/lib/react/index.js' + +export const BASE_CLASS = 'sui-PrimitivePortal' + +const isRef = ref => typeof ref === 'object' && ref.hasOwnProperty('current') + +export const getContainer = target => { + if (target === undefined) { + return globalThis?.document?.body + } else if (isRef(target)) { + return target.current + } + return getTarget(target) +} diff --git a/components/primitive/portal/test/getComponent.js b/components/primitive/portal/test/getComponent.js new file mode 100644 index 0000000000..8a7bbcc5dc --- /dev/null +++ b/components/primitive/portal/test/getComponent.js @@ -0,0 +1,33 @@ +import {useRef} from 'react' + +import PropTypes from 'prop-types' + +const getComponent = ({triggerClass, targetClass, component: Component}) => { + const TRIGGER_CLASS = triggerClass + const TARGET_CLASS = targetClass + + const Response = ({children, ...props}) => { + const ref = useRef() + return ( + <> +
    + + {children} + +
    +
    + + ) + } + + Response.displayName = 'Response' + + Response.propTypes = { + component: PropTypes.elementType, + children: PropTypes.node + } + + return Response +} + +export default getComponent diff --git a/components/primitive/portal/test/index.test.js b/components/primitive/portal/test/index.test.js index 48861ec5ba..8438c43f2e 100644 --- a/components/primitive/portal/test/index.test.js +++ b/components/primitive/portal/test/index.test.js @@ -4,53 +4,107 @@ /* eslint react/jsx-no-undef:0 */ /* eslint no-undef:0 */ - import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' -import Component from '../src/index.js' + +import json from '../package.json' +import * as pkg from '../src/index.js' +import getComponent from './getComponent.js' chai.use(chaiDOM) -describe('PrimitivePortal', () => { +describe(json.name, () => { + const {default: Portal} = pkg + const TRIGGER_CLASS = 'trigger-class' + const TARGET_CLASS = 'target-class' + const Component = getComponent({ + triggerClass: TRIGGER_CLASS, + targetClass: TARGET_CLASS, + component: Portal + }) const setup = setupEnvironment(Component) - it('should render without crashing', () => { + it('library should include defined exported elements', () => { // Given - const props = {} + const library = pkg + const libraryExportedMembers = ['default'] // When - const component = + const {default: PrimitivePortal, ...others} = library // Then - const div = document.createElement('div') - ReactDOM.render(component, div) - ReactDOM.unmountComponentAtNode(div) + expect(Object.keys(library).length).to.equal(libraryExportedMembers.length) + expect(Object.keys(library)).to.have.members(libraryExportedMembers) + expect(Object.keys(others).length).to.equal(0) }) - it('should NOT render null', () => { - // Given - const props = {} + describe(Portal.displayName, () => { + it('should render without crashing', () => { + // Given + const props = {} - // When - const {container} = setup(props) + // When + const component = - // Then - expect(container.innerHTML).to.be.a('string') - expect(container.innerHTML).to.not.have.lengthOf(0) - }) + // Then + const div = document.createElement('div') + ReactDOM.render(component, div) + ReactDOM.unmountComponentAtNode(div) + }) - it.skip('should NOT extend classNames', () => { - // Given - const props = {className: 'extended-classNames'} - const findSentence = str => string => string.match(new RegExp(`S*${str}S*`)) + it('should render null', () => { + // Given + const props = {} - // When - const {container} = setup(props) - const findClassName = findSentence(props.className) + // When + const {container} = setup(props) + const target = container.querySelector(`.${TARGET_CLASS}`) + const trigger = container.querySelector(`.${TRIGGER_CLASS}`) - // Then - expect(findClassName(container.innerHTML)).to.be.null + // Then + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) + + expect(trigger.innerHTML).to.be.a('string') + expect(trigger.innerHTML).to.have.lengthOf(0) + + expect(target.innerHTML).to.be.a('string') + expect(target.innerHTML).to.have.lengthOf(0) + }) + + it.skip('should NOT extend classNames', () => { + // Given + const props = {className: 'extended-classNames'} + const findSentence = str => string => + string.match(new RegExp(`S*${str}S*`)) + + // When + const {container} = setup(props) + const findClassName = findSentence(props.className) + + // Then + expect(findClassName(container.innerHTML)).to.be.null + }) + + it('should add a portal to the right dom place', () => { + // Given + const props = { + children:
    portal-test
    + } + + // When + const {container} = setup(props) + const target = container.querySelector(`.${TARGET_CLASS}`) + const trigger = container.querySelector(`.${TRIGGER_CLASS}`) + + // Then + expect(trigger.innerHTML).to.be.a('string') + expect(trigger.innerHTML).to.have.lengthOf(0) + + expect(target.innerHTML).to.be.a('string') + expect(target.innerHTML).to.not.have.lengthOf(0) + }) }) }) From 4acf62f502ad84ab56dff9b2044b8255bf17738e Mon Sep 17 00:00:00 2001 From: andresin87 Date: Thu, 8 Sep 2022 12:15:55 +0200 Subject: [PATCH 031/243] chore(Root): wip --- components/hook/use-portal/.gitignore | 2 + components/hook/use-portal/.npmignore | 5 + components/hook/use-portal/README.md | 54 ++++ .../demo/articles/ArticleCloseOnEvent.js | 49 ++++ .../demo/articles/ArticleDefault.js | 37 +++ .../demo/articles/ArticleStateful.js | 40 +++ .../demo/articles/ArticleStateless.js | 27 ++ .../use-portal/demo/articles/ArticleTarget.js | 27 ++ components/hook/use-portal/demo/index.js | 31 +++ components/hook/use-portal/demo/package.json | 16 ++ components/hook/use-portal/package.json | 17 ++ components/hook/use-portal/src/index.js | 238 ++++++++++++++++++ components/hook/use-portal/src/index.scss | 0 components/hook/use-portal/src/settings.js | 4 + components/hook/use-portal/test/index.test.js | 0 15 files changed, 547 insertions(+) create mode 100644 components/hook/use-portal/.gitignore create mode 100644 components/hook/use-portal/.npmignore create mode 100644 components/hook/use-portal/README.md create mode 100644 components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js create mode 100644 components/hook/use-portal/demo/articles/ArticleDefault.js create mode 100644 components/hook/use-portal/demo/articles/ArticleStateful.js create mode 100644 components/hook/use-portal/demo/articles/ArticleStateless.js create mode 100644 components/hook/use-portal/demo/articles/ArticleTarget.js create mode 100644 components/hook/use-portal/demo/index.js create mode 100644 components/hook/use-portal/demo/package.json create mode 100644 components/hook/use-portal/package.json create mode 100644 components/hook/use-portal/src/index.js create mode 100644 components/hook/use-portal/src/index.scss create mode 100644 components/hook/use-portal/src/settings.js create mode 100644 components/hook/use-portal/test/index.test.js diff --git a/components/hook/use-portal/.gitignore b/components/hook/use-portal/.gitignore new file mode 100644 index 0000000000..3063f07d55 --- /dev/null +++ b/components/hook/use-portal/.gitignore @@ -0,0 +1,2 @@ +lib +node_modules diff --git a/components/hook/use-portal/.npmignore b/components/hook/use-portal/.npmignore new file mode 100644 index 0000000000..83de8b2bf3 --- /dev/null +++ b/components/hook/use-portal/.npmignore @@ -0,0 +1,5 @@ +assets +demo +src +test +CHANGELOG.md \ No newline at end of file diff --git a/components/hook/use-portal/README.md b/components/hook/use-portal/README.md new file mode 100644 index 0000000000..fb64f6e74a --- /dev/null +++ b/components/hook/use-portal/README.md @@ -0,0 +1,54 @@ +# usePortal + +> The layout grid component adapts to screen size (responsive), ensuring consistency across layouts. + +## Installation + +```sh +$ npm install @s-ui/react-hook-use-portal +``` + +## Usage + +### Basic usage + +#### Import package and use in the component + +###### Stateless + +```js +import usePortal from '@s-ui/react-hook-use-portal' + +// Body portal ///////////////////////////////////////// +const App = () => { + const {Portal} = usePortal() + + return This text is portaled at the end of document.body! +} + +// Barcelona portal ///////////////////////////////////////// +const App = () => { + const element = document && document.getElementById('Barcelona') + const {Portal} = usePortal({ + bindTo: element + }) + + return This text is portaled into Barcelona! +} +``` + +### Arguments +```js +[ + { + hasCloseOnOutsideClick, // (bool, true) closes the portal when clicking outside + hasCloseOnEsc, // (bool|true) closes the portal when ESC key pressed + target, // attach the portal to this node in The DOM + isOpen, // (bool, false) statefull control + onOpen, // (function) fired when opening the modal + onClose, // (function) fired when closing the modal + onToggle, // (function) fired when modal open or closes + onClick, // (function) fired when clicking on the portal. + } +] +``` diff --git a/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js b/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js new file mode 100644 index 0000000000..097566d92c --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js @@ -0,0 +1,49 @@ +import {useState, useRef} from 'react' +import { + H2, + Paragraph, + Article, + Box, + RadioButton, + Grid, + Cell +} from '@s-ui/documentation-library' + +import usePortal from '../../src/index.js' + +const ArticleCloseOnEvent = ({className}) => { + const targetedRef = useRef() + const [isCloseOnOutsideClick, setIsCloseOnOutsideClick] = useState(true) + const [isCloseOnEsc, setIsCloseOnEsc] = useState(false) + + const {Portal} = usePortal({ + hasCloseOnOutsideClick: isCloseOnOutsideClick, + hasCloseOnEsc: isCloseOnEsc, + target: ref.current, + isOpen: true + }) + return ( +
    +

    Close on 'Esc' or outside click

    + + + setIsCloseOnOutsideClick(!isCloseOnOutsideClick)} + /> + + +
    + + + + + This text is closed when clicking outside! + + +
    + ) +} + +export default ArticleCloseOnEvent diff --git a/components/hook/use-portal/demo/articles/ArticleDefault.js b/components/hook/use-portal/demo/articles/ArticleDefault.js new file mode 100644 index 0000000000..37e477a48a --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleDefault.js @@ -0,0 +1,37 @@ +import { + H2, + H4, + Paragraph, + Article, + Box, + Code, + Button +} from '@s-ui/documentation-library' + +import usePortal from '../../src/index.js' + +const ArticleDefault = ({className}) => { + const {Portal, portalRef} = usePortal() + const clickHandler = () => portalRef.current.scrollIntoView() + return ( +
    +

    Default

    + + The portal is default appended at the document body. It is default + opened unless you define its initial isOpen configuration + settings to false. + + + + +

    Default Portal Result

    + + This text is portaled at the end of document.body! + +
    +
    +
    + ) +} + +export default ArticleDefault diff --git a/components/hook/use-portal/demo/articles/ArticleStateful.js b/components/hook/use-portal/demo/articles/ArticleStateful.js new file mode 100644 index 0000000000..672cceb0ee --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleStateful.js @@ -0,0 +1,40 @@ +import {useRef, useState} from 'react' +import {H2, Paragraph, Article, Button, Box} from '@s-ui/documentation-library' + +import usePortal from '../../src/index.js' + +const ArticleStateful = ({className}) => { + const targetedRef = useRef() + const [isOpened, setIsOpened] = useState(false) + const openHandler = () => { + setIsOpened(true) + } + const closeHandler = () => { + setIsOpened(false) + } + const {Portal, open, close, portalRef} = usePortal({ + target: targetedRef.current, + isOpen: isOpened, + onOpen: openHandler, + onClose: closeHandler + }) + console.log({portalRef, targetedRef}) + return ( +
    +

    Stateful control

    + asdasd +
    + + + + This is the content of the portal stateful opened. + + + + + {!isOpened && } +
    + ) +} + +export default ArticleStateful diff --git a/components/hook/use-portal/demo/articles/ArticleStateless.js b/components/hook/use-portal/demo/articles/ArticleStateless.js new file mode 100644 index 0000000000..5232302d72 --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleStateless.js @@ -0,0 +1,27 @@ +import {useRef, useState} from 'react' +import {H2, Paragraph, Article, Button, Box} from '@s-ui/documentation-library' + +import usePortal from '../../src/index.js' + +const ArticleStateful = ({className}) => { + const targetedRef = useRef() + const {Portal, open, close, isOpen} = usePortal({target: targetRef.current}) + return ( +
    +

    Stateless Control

    + +
    + {isOpen ? ( + + + + + + ) : ( + + )} +
    + ) +} + +export default ArticleStateful diff --git a/components/hook/use-portal/demo/articles/ArticleTarget.js b/components/hook/use-portal/demo/articles/ArticleTarget.js new file mode 100644 index 0000000000..8343b2283d --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleTarget.js @@ -0,0 +1,27 @@ +import {useRef} from 'react' + +import {H2, Paragraph, Article, Code, Box} from '@s-ui/documentation-library' + +import usePortal from '../../src/index.js' + +const ArticleTarget = ({className}) => { + const targetedRef = useRef() + const {Portal} = usePortal({target: targetedRef.current}) + return ( +
    +

    Target

    + Providing a target argument to the hook options will append the declared Portal's children. +
    + + + + This text is portaled at the end of the defined target provided in + options! + + + +
    + ) +} + +export default ArticleTarget diff --git a/components/hook/use-portal/demo/index.js b/components/hook/use-portal/demo/index.js new file mode 100644 index 0000000000..bc61269c1d --- /dev/null +++ b/components/hook/use-portal/demo/index.js @@ -0,0 +1,31 @@ +import {Paragraph, H1, Code, Anchor} from '@s-ui/documentation-library' + +import ArticleDefault from './articles/ArticleDefault.js' +import ArticleTarget from './articles/ArticleTarget.js' +import ArticleStateless from './articles/ArticleStateless.js' +import ArticleStateful from './articles/ArticleStateful.js' +import ArticleCloseOnEvent from './articles/ArticleCloseOnEvent.js' + +const Demo = () => { + return ( +
    +

    usePortal

    + + The usePortal hook offers the possibility to create a{' '} + Portal set + where is defined (default: document.body). + + +
    + +
    + +
    + +
    + +
    + ) +} + +export default Demo diff --git a/components/hook/use-portal/demo/package.json b/components/hook/use-portal/demo/package.json new file mode 100644 index 0000000000..bdb101b4a3 --- /dev/null +++ b/components/hook/use-portal/demo/package.json @@ -0,0 +1,16 @@ +{ + "name": "@s-ui/react-hook-use-portal-demo", + "private": true, + "version": "1.0.0", + "description": "", + "main": "lib/index.js", + "scripts": { + "prepublishOnly": "rimraf ./lib && npm run build:js && npm run build:styles", + "build:js": "babel --presets sui ./src --out-dir ./lib", + "build:styles": "cpx './src/**/*.scss' ./lib" + }, + "dependencies": {}, + "keywords": [], + "author": "", + "license": "MIT" +} diff --git a/components/hook/use-portal/package.json b/components/hook/use-portal/package.json new file mode 100644 index 0000000000..9a9f2cae15 --- /dev/null +++ b/components/hook/use-portal/package.json @@ -0,0 +1,17 @@ +{ + "name": "@s-ui/react-hook-use-portal", + "version": "1.0.0", + "description": "", + "main": "lib/index.js", + "scripts": { + "prepublishOnly": "rimraf ./lib && npm run build:js && npm run build:styles", + "build:js": "babel --presets sui ./src --out-dir ./lib", + "build:styles": "cpx './src/**/*.scss' ./lib" + }, + "dependencies": { + "use-ssr": "1.0.24" + }, + "keywords": [], + "author": "", + "license": "MIT" +} diff --git a/components/hook/use-portal/src/index.js b/components/hook/use-portal/src/index.js new file mode 100644 index 0000000000..8fccade57a --- /dev/null +++ b/components/hook/use-portal/src/index.js @@ -0,0 +1,238 @@ +import {useState, useRef, useEffect, useCallback, useMemo} from 'react' +import {createPortal, findDOMNode} from 'react-dom' +import useSSR from 'use-ssr' + +import { BASE_CLASS, errorMessage1 } from './settings.js' + +const usePortal = ({ + hasCloseOnOutsideClick = false, + hasCloseOnEsc = false, + target, + isOpen: defaultIsOpen = true, + onOpen, + onClose, + onToggle, + onClick, + ...eventHandlers +} = {}) => { + const {isServer, isBrowser} = useSSR() + const [isOpened, setOpened] = useState(defaultIsOpen) + + // we use this ref because `isOpen` is stale for handleOutsideMouseClick + const isOpen = useRef(isOpened) + + const setIsOpen = useCallback(value => { + // workaround to not have stale `isOpened` in the handleOutsideMouseClick + isOpen.current = value + setOpened(value) + }, []) + + const triggerElement = useRef() // this is the element you are clicking/hovering/whatever, to trigger opening the portal + const element = useMemo(() => { + let element = null + if (isBrowser) { + element = document.createElement('div') + element.classList.add(BASE_CLASS) + } + return element + }, [isBrowser]) + const portal = useRef(isBrowser ? element : null) + + useEffect(() => { + if (isBrowser && !portal.current) { + portal.current = element + } + }, [isBrowser, portal]) + + const elToMountTo = useMemo(() => { + if (isServer) return + return (target && findDOMNode(target)) || document.body + }, [isServer, target]) + + const createCustomEvent = event => { + if (!event) return {portal, triggerElement, event} + const response = event || {} + if (response.persist) response.persist() + response.portal = portal + response.triggerElement = triggerElement + response.event = event + const {currentTarget} = event + if (!triggerElement.current && currentTarget && currentTarget !== document) + triggerElement.current = response.currentTarget + return response + } + + // this should handle all eventHandlers like onClick, onMouseOver, etc. passed into the config + const customEventHandlers = Object.entries(eventHandlers).reduce( + (acc, [handlerName, eventHandler]) => { + acc[handlerName] = event => { + if (isServer) return + eventHandler(createCustomEvent(event)) + } + return acc + }, + {} + ) + + const openPortal = useCallback( + event => { + if (isServer) return + const customEvent = createCustomEvent(event) + // for some reason, when we don't have the event argument, there + // is a weird race condition. Would like to see if we can remove + // setTimeout, but for now this works + if (triggerElement.current == null) { + setTimeout(() => setIsOpen(true), 0) + throw Error(errorMessage1) + } + if (onOpen) onOpen(customEvent) + setIsOpen(true) + }, + [isServer, portal, setIsOpen, triggerElement, onOpen] + ) + + const closePortal = useCallback( + event => { + if (isServer) return + const customEvent = createCustomEvent(event) + if (onClose && isOpen.current) onClose(customEvent) + if (isOpen.current) setIsOpen(false) + }, + [isServer, onClose, setIsOpen] + ) + + const togglePortal = useCallback( + event => (isOpen.current ? closePortal(event) : openPortal(event)), + [closePortal, openPortal] + ) + + const handleKeydown = useCallback( + event => + event.key === 'Escape' && hasCloseOnEsc ? closePortal(event) : undefined, + [hasCloseOnEsc, closePortal] + ) + + const handleOutsideMouseClick = useCallback( + event => { + const containsTarget = target => target.current?.contains(event.target) + if ( + containsTarget(portal) || + event.button !== 0 || + !isOpen.current || + containsTarget(triggerElement) + ) { + return + } + if (hasCloseOnOutsideClick) { + closePortal(event) + } + }, + [isServer, closePortal, hasCloseOnOutsideClick, portal] + ) + + const handleMouseDown = useCallback( + event => { + if (isServer || !(portal.current instanceof HTMLElement)) return + const customEvent = createCustomEvent(event) + if (portal.current.contains(customEvent.target) && onClick) + onClick(customEvent) + handleOutsideMouseClick(event) + }, + [handleOutsideMouseClick] + ) + + // used to remove the event listeners on unmount + const eventListeners = useRef({}) + + useEffect(() => { + if (isServer) return + if ( + !(elToMountTo instanceof HTMLElement) || + !(portal.current instanceof HTMLElement) + ) + return + + // TODO: eventually will need to figure out a better solution for this. + // Surely we can find a way to map onScroll/onWheel -> scroll/wheel better, + // but for all other event handlers. For now this works. + const eventHandlerMap = { + onScroll: 'scroll', + onWheel: 'wheel' + } + const node = portal.current + elToMountTo.appendChild(portal.current) + // handles all special case handlers. Currently only onScroll and onWheel + Object.entries(eventHandlerMap).forEach( + ([handlerName /* onScroll */, eventListenerName /* scroll */]) => { + if (!eventHandlers[handlerName]) return + eventListeners.current[handlerName] = event => + eventHandlers[handlerName](createCustomEvent(event)) + document.addEventListener( + eventListenerName, + eventListeners.current[handlerName] + ) + } + ) + document.addEventListener('keydown', handleKeydown) + document.addEventListener('mousedown', handleMouseDown) + + return () => { + // handles all special case handlers. Currently only onScroll and onWheel + Object.entries(eventHandlerMap).forEach( + ([handlerName, eventListenerName]) => { + if (!eventHandlers[handlerName]) return + document.removeEventListener( + eventListenerName, + eventListeners.current[handlerName] + ) + delete eventListeners.current[handlerName] + } + ) + document.removeEventListener('keydown', handleKeydown) + document.removeEventListener('mousedown', handleMouseDown) + elToMountTo.removeChild(node) + } + }, [isServer, handleOutsideMouseClick, handleKeydown, elToMountTo, portal]) + + const Portal = useCallback( + ({children, isOpen: isOpenProp}) => { + useEffect(() => { + if (isServer) return + setIsOpen(isOpenProp) + }, [isOpenProp]) + if (portal.current != null && isOpen.current) + return createPortal(children, portal.current) + return null + }, + [portal] + ) + + return Object.assign( + [ + openPortal, + closePortal, + isOpen.current, + Portal, + togglePortal, + triggerElement, + portal + ], + { + isOpen: isOpen.current, + ref: triggerElement, + open: openPortal, + close: closePortal, + togglePortal, + Portal, + portalRef: portal, + ...customEventHandlers, + bind: { + // used if you want to spread all html attributes onto the target element + ref: triggerElement, + ...customEventHandlers + } + } + ) +} + +export default usePortal diff --git a/components/hook/use-portal/src/index.scss b/components/hook/use-portal/src/index.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/components/hook/use-portal/src/settings.js b/components/hook/use-portal/src/settings.js new file mode 100644 index 0000000000..a60d9963c0 --- /dev/null +++ b/components/hook/use-portal/src/settings.js @@ -0,0 +1,4 @@ +export const BASE_CLASS = 'sui-Portal' + +export const errorMessage1 = + 'You must either add a `ref` to the element you are interacting with or pass an `event` to openPortal(e) or togglePortal(e).' diff --git a/components/hook/use-portal/test/index.test.js b/components/hook/use-portal/test/index.test.js new file mode 100644 index 0000000000..e69de29bb2 From 73fa2b968254ce2af62c09f0f14ca8b536781ed3 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Fri, 9 Sep 2022 16:37:12 +0200 Subject: [PATCH 032/243] chore(Root): wip --- components/hook/use-portal/README.md | 14 +++ .../demo/articles/ArticleCloseOnEvent.js | 94 ++++++++++++--- .../use-portal/demo/articles/ArticleCustom.js | 20 ++++ .../demo/articles/ArticleCustom/useTooltip.js | 29 +++++ .../demo/articles/ArticleDefault.js | 30 ++++- .../demo/articles/ArticleStateful.js | 19 ++- .../demo/articles/ArticleStateless.js | 40 ++++--- .../use-portal/demo/articles/ArticleTarget.js | 1 + components/hook/use-portal/demo/index.js | 24 +++- components/hook/use-portal/demo/package.json | 4 +- components/hook/use-portal/src/index.js | 7 +- components/primitive/portal/.gitignore | 2 - components/primitive/portal/.npmignore | 4 - components/primitive/portal/README.md | 39 ------- .../portal/demo/articles/DefaultArticle.js | 92 --------------- components/primitive/portal/demo/config.js | 2 - components/primitive/portal/demo/index.js | 18 --- components/primitive/portal/demo/index.scss | 3 - components/primitive/portal/demo/package.json | 9 -- components/primitive/portal/package.json | 27 ----- components/primitive/portal/src/index.js | 57 --------- components/primitive/portal/src/index.scss | 5 - components/primitive/portal/src/settings.js | 14 --- .../primitive/portal/test/getComponent.js | 33 ------ .../primitive/portal/test/index.test.js | 110 ------------------ 25 files changed, 223 insertions(+), 474 deletions(-) create mode 100644 components/hook/use-portal/demo/articles/ArticleCustom.js create mode 100644 components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js delete mode 100644 components/primitive/portal/.gitignore delete mode 100644 components/primitive/portal/.npmignore delete mode 100644 components/primitive/portal/README.md delete mode 100644 components/primitive/portal/demo/articles/DefaultArticle.js delete mode 100644 components/primitive/portal/demo/config.js delete mode 100644 components/primitive/portal/demo/index.js delete mode 100644 components/primitive/portal/demo/index.scss delete mode 100644 components/primitive/portal/demo/package.json delete mode 100644 components/primitive/portal/package.json delete mode 100644 components/primitive/portal/src/index.js delete mode 100644 components/primitive/portal/src/index.scss delete mode 100644 components/primitive/portal/src/settings.js delete mode 100644 components/primitive/portal/test/getComponent.js delete mode 100644 components/primitive/portal/test/index.test.js diff --git a/components/hook/use-portal/README.md b/components/hook/use-portal/README.md index fb64f6e74a..c2423c1d2f 100644 --- a/components/hook/use-portal/README.md +++ b/components/hook/use-portal/README.md @@ -52,3 +52,17 @@ const App = () => { } ] ``` + +### Return +#### Object +```js +{ + isOpen, // (bool) is portal is visible or hidden + open, // (function) sets portal visible + close, // (function) sets portal hidden + toggle, // (function) toogles the visible/hidden portal state + Portal, // The rendered component + portalRef, // returns teh component ref + ...customEventHandlers // +} +``` diff --git a/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js b/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js index 097566d92c..9a8c7e6feb 100644 --- a/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js +++ b/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js @@ -1,47 +1,107 @@ import {useState, useRef} from 'react' import { H2, + H3, Paragraph, + Code, Article, Box, RadioButton, Grid, - Cell + Cell, + UnorderedList, + ListItem } from '@s-ui/documentation-library' import usePortal from '../../src/index.js' const ArticleCloseOnEvent = ({className}) => { - const targetedRef = useRef() - const [isCloseOnOutsideClick, setIsCloseOnOutsideClick] = useState(true) - const [isCloseOnEsc, setIsCloseOnEsc] = useState(false) + // outside click + const targetedOutsideClickRef = useRef() + const [isOpenTargetedOutsideClick, setIsOpenTargetedOutsideClick] = + useState(false) + const {Portal: PortalOutsideClick} = usePortal({ + hasCloseOnOutsideClick: true, + target: targetedOutsideClickRef.current, + isOpen: isOpenTargetedOutsideClick, + onClose: () => { + setIsOpenTargetedOutsideClick(!isOpenTargetedOutsideClick) + } + }) - const {Portal} = usePortal({ - hasCloseOnOutsideClick: isCloseOnOutsideClick, - hasCloseOnEsc: isCloseOnEsc, - target: ref.current, - isOpen: true + // esc press + const targetedEscPressRef = useRef() + const [isOpenCloseOnEsc, setIsOpenCloseOnEsc] = useState(false) + const {Portal: PortalEscPress} = usePortal({ + hasCloseOnEsc: true, + target: targetedEscPressRef.current, + isOpen: isOpenCloseOnEsc, + onClose: () => { + setIsOpenCloseOnEsc(!isOpenCloseOnEsc) + } }) return (
    -

    Close on 'Esc' or outside click

    - +

    Configured event listeners

    + + usePortal hook has 2 configuration properties for event + triggers: + + + + hasCloseOnOutsideClick (bool|false) + + + hasCloseOnEsc (bool|false) + + +

    hasCloseOnOutsideClick

    + + If the hook is configured with this feature enabled (true), the portal + will close on every single clicking event out of its own bounding area. + + setIsCloseOnOutsideClick(!isCloseOnOutsideClick)} + label="open" + checked={isOpenTargetedOutsideClick} + onClick={() => + setIsOpenTargetedOutsideClick(!isOpenTargetedOutsideClick) + } /> -
    +
    - + This text is closed when clicking outside! - + +

    hasCloseOnEsc

    + + If the hook is configured with this feature enabled (true), the portal + will close on every single 'Esc' keypress event. + + + + setIsOpenCloseOnEsc(!isOpenCloseOnEsc)} + /> + + +
    + + + + + This text is closed when pressing Esc key! + + + Portals can use both behaviors enabled also.
    ) } diff --git a/components/hook/use-portal/demo/articles/ArticleCustom.js b/components/hook/use-portal/demo/articles/ArticleCustom.js new file mode 100644 index 0000000000..b7f21d4879 --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleCustom.js @@ -0,0 +1,20 @@ +import {Article, Code, H2, Paragraph, Button} from '@s-ui/documentation-library' + +import useTooltip from './ArticleCustom/useTooltip.js' + +const ArticleCustom = ({className}) => { + const [bind, Tooltip] = useTooltip() + return ( +
    +

    Custom

    + + You can use an stateless Portal with its open{' '} + and close{' '} + + This is a cool tooltip 😜 + +
    + ) +} + +export default ArticleCustom diff --git a/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js b/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js new file mode 100644 index 0000000000..843da22eb1 --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js @@ -0,0 +1,29 @@ +import {usePopper} from 'react-popper' + +import usePortal from '../../../src/index.js' + +const useTooltip = ({isOpen = false, ...config} = {}) => { + const {Portal, onMouseEnter, onMouseLeave, portalRef, open, close} = + usePortal({ + onMouseEnter({portal, triggerElement}) { + open() + usePopper(triggerElement, portalRef) + }, + isOpen, + onMouseLeave: ({portal}) => { + portal.current.removeAttribute('style') + close() + }, + ...config + }) + + return [ + { + onMouseEnter, + onMouseLeave + }, + Portal + ] +} + +export default useTooltip diff --git a/components/hook/use-portal/demo/articles/ArticleDefault.js b/components/hook/use-portal/demo/articles/ArticleDefault.js index 37e477a48a..c574308f3e 100644 --- a/components/hook/use-portal/demo/articles/ArticleDefault.js +++ b/components/hook/use-portal/demo/articles/ArticleDefault.js @@ -1,3 +1,4 @@ +import {useRef} from 'react' import { H2, H4, @@ -5,28 +6,45 @@ import { Article, Box, Code, - Button + Button, + Anchor } from '@s-ui/documentation-library' import usePortal from '../../src/index.js' const ArticleDefault = ({className}) => { const {Portal, portalRef} = usePortal() - const clickHandler = () => portalRef.current.scrollIntoView() + const articleRef = useRef() + const clickHandler = element => () => element.scrollIntoView() return ( -
    +

    Default

    The portal is default appended at the document body. It is default opened unless you define its initial isOpen configuration settings to false. - + - +

    Default Portal Result

    - This text is portaled at the end of document.body! + This text is portaled at the end of document.body from the{' '} + + default demo + + !
    diff --git a/components/hook/use-portal/demo/articles/ArticleStateful.js b/components/hook/use-portal/demo/articles/ArticleStateful.js index 672cceb0ee..429c95bd5c 100644 --- a/components/hook/use-portal/demo/articles/ArticleStateful.js +++ b/components/hook/use-portal/demo/articles/ArticleStateful.js @@ -5,34 +5,29 @@ import usePortal from '../../src/index.js' const ArticleStateful = ({className}) => { const targetedRef = useRef() - const [isOpened, setIsOpened] = useState(false) - const openHandler = () => { - setIsOpened(true) - } - const closeHandler = () => { - setIsOpened(false) - } - const {Portal, open, close, portalRef} = usePortal({ + const [isOpened, setIsOpened] = useState(true) + const openHandler = () => setIsOpened(true) + const closeHandler = () => setIsOpened(false) + const {Portal} = usePortal({ target: targetedRef.current, isOpen: isOpened, onOpen: openHandler, onClose: closeHandler }) - console.log({portalRef, targetedRef}) return (

    Stateful control

    asdasd
    - + This is the content of the portal stateful opened. - + - {!isOpened && } + {!isOpened && }
    ) } diff --git a/components/hook/use-portal/demo/articles/ArticleStateless.js b/components/hook/use-portal/demo/articles/ArticleStateless.js index 5232302d72..3399143ba0 100644 --- a/components/hook/use-portal/demo/articles/ArticleStateless.js +++ b/components/hook/use-portal/demo/articles/ArticleStateless.js @@ -1,27 +1,37 @@ -import {useRef, useState} from 'react' -import {H2, Paragraph, Article, Button, Box} from '@s-ui/documentation-library' +import {useRef} from 'react' +import { + H2, + Paragraph, + Article, + Button, + Box, + Code +} from '@s-ui/documentation-library' import usePortal from '../../src/index.js' -const ArticleStateful = ({className}) => { +const ArticleStateless = ({className}) => { const targetedRef = useRef() - const {Portal, open, close, isOpen} = usePortal({target: targetRef.current}) + const {Portal, open, close, isOpen} = usePortal({target: targetedRef.current}) return (

    Stateless Control

    - + + You can use an stateless Portal with its open{' '} + and close{' '} + + + {'const {Portal, open, close, isOpen} = usePortal()'} +
    - {isOpen ? ( - - - - - - ) : ( - - )} + + + + + + {!isOpen && }
    ) } -export default ArticleStateful +export default ArticleStateless diff --git a/components/hook/use-portal/demo/articles/ArticleTarget.js b/components/hook/use-portal/demo/articles/ArticleTarget.js index 8343b2283d..1dfb9173a4 100644 --- a/components/hook/use-portal/demo/articles/ArticleTarget.js +++ b/components/hook/use-portal/demo/articles/ArticleTarget.js @@ -11,6 +11,7 @@ const ArticleTarget = ({className}) => {

    Target

    Providing a target argument to the hook options will append the declared Portal's children. + {'const { Portal } = usePortal({ target: element })'}
    diff --git a/components/hook/use-portal/demo/index.js b/components/hook/use-portal/demo/index.js index bc61269c1d..436930fc6f 100644 --- a/components/hook/use-portal/demo/index.js +++ b/components/hook/use-portal/demo/index.js @@ -1,10 +1,17 @@ -import {Paragraph, H1, Code, Anchor} from '@s-ui/documentation-library' +import { + Paragraph, + H1, + Code, + Anchor, + Emphasis +} from '@s-ui/documentation-library' import ArticleDefault from './articles/ArticleDefault.js' import ArticleTarget from './articles/ArticleTarget.js' import ArticleStateless from './articles/ArticleStateless.js' import ArticleStateful from './articles/ArticleStateful.js' import ArticleCloseOnEvent from './articles/ArticleCloseOnEvent.js' +import ArticleCustom from './articles/ArticleCustom.js' const Demo = () => { return ( @@ -15,15 +22,22 @@ const Demo = () => { Portal set where is defined (default: document.body). + + * Portals will be displayed in a dark Box to identify them. + +
    +
    -
    +
    -
    +
    -
    +
    -
    +
    +
    +
    ) } diff --git a/components/hook/use-portal/demo/package.json b/components/hook/use-portal/demo/package.json index bdb101b4a3..2b6a4ff93f 100644 --- a/components/hook/use-portal/demo/package.json +++ b/components/hook/use-portal/demo/package.json @@ -9,7 +9,9 @@ "build:js": "babel --presets sui ./src --out-dir ./lib", "build:styles": "cpx './src/**/*.scss' ./lib" }, - "dependencies": {}, + "dependencies": { + "react-popper": "2.3.0" + }, "keywords": [], "author": "", "license": "MIT" diff --git a/components/hook/use-portal/src/index.js b/components/hook/use-portal/src/index.js index 8fccade57a..bc644bc607 100644 --- a/components/hook/use-portal/src/index.js +++ b/components/hook/use-portal/src/index.js @@ -1,5 +1,6 @@ import {useState, useRef, useEffect, useCallback, useMemo} from 'react' import {createPortal, findDOMNode} from 'react-dom' + import useSSR from 'use-ssr' import { BASE_CLASS, errorMessage1 } from './settings.js' @@ -195,7 +196,7 @@ const usePortal = ({ }, [isServer, handleOutsideMouseClick, handleKeydown, elToMountTo, portal]) const Portal = useCallback( - ({children, isOpen: isOpenProp}) => { + ({children, isOpen: isOpenProp = defaultIsOpen}) => { useEffect(() => { if (isServer) return setIsOpen(isOpenProp) @@ -219,10 +220,10 @@ const usePortal = ({ ], { isOpen: isOpen.current, - ref: triggerElement, + triggerRef: triggerElement, open: openPortal, close: closePortal, - togglePortal, + toggle: togglePortal, Portal, portalRef: portal, ...customEventHandlers, diff --git a/components/primitive/portal/.gitignore b/components/primitive/portal/.gitignore deleted file mode 100644 index a9f4ed5456..0000000000 --- a/components/primitive/portal/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -lib -node_modules \ No newline at end of file diff --git a/components/primitive/portal/.npmignore b/components/primitive/portal/.npmignore deleted file mode 100644 index d5a120008c..0000000000 --- a/components/primitive/portal/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -assets -demo -src -test diff --git a/components/primitive/portal/README.md b/components/primitive/portal/README.md deleted file mode 100644 index c28b751cca..0000000000 --- a/components/primitive/portal/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# PrimitivePortal - -> Description - -Renders a React subtree in a different part of the DOM. - - - - -## Installation - -```sh -$ npm install @s-ui/primitive-portal -``` - -## Usage - -### Basic usage - -#### Import package and use the component - -```js -import PrimitivePortal from '@s-ui/primitive-portal' - -return ( - {children} -) -``` - -#### Import the styles (Sass) - -```css -@import '~@s-ui/theme/lib/index'; -/* @import 'your theme'; */ -@import '~@s-ui/primitive-portal/lib/index'; -``` - - -> **Find full description and more examples in the [demo page](#).** \ No newline at end of file diff --git a/components/primitive/portal/demo/articles/DefaultArticle.js b/components/primitive/portal/demo/articles/DefaultArticle.js deleted file mode 100644 index 2c702e0b67..0000000000 --- a/components/primitive/portal/demo/articles/DefaultArticle.js +++ /dev/null @@ -1,92 +0,0 @@ -import AtomIcon from '@s-ui/react-atom-icon' -import {useState, useRef} from 'react' - -import PropTypes from 'prop-types' - -import { - Article, - H2, - Paragraph, - Input, - Grid, - Cell, - Button, - BootstrapIcon, - Code -} from '@s-ui/documentation-library' - -import PrimitivePortal from '../../src/index.js' - -const DefaultArticle = ({className}) => { - const [data, setData] = useState('portal') - const targetRef = useRef() - const portalRef = useRef() - const baseRef = useRef() - const handleFocus = element => () => element?.scrollIntoView() - return ( -
    - - -
    -

    Default

    - - When an element is given to the target (element) prop - it is triggering it. By default, the element is the document's - body. - - setData(event.target.value)} - /> - -
    - {data} -
    -
    -
    -
    - - - - - - - - - - - -
    - - -
    - ) -} - -DefaultArticle.propTypes = { - className: PropTypes.string -} -DefaultArticle.displayName = 'DefaultArticle' - -export default DefaultArticle diff --git a/components/primitive/portal/demo/config.js b/components/primitive/portal/demo/config.js deleted file mode 100644 index 75ebd84b82..0000000000 --- a/components/primitive/portal/demo/config.js +++ /dev/null @@ -1,2 +0,0 @@ -export const BASE_CLASS_DEMO = `DemoPrimitivePortal` -export const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` diff --git a/components/primitive/portal/demo/index.js b/components/primitive/portal/demo/index.js deleted file mode 100644 index 93fcd7300a..0000000000 --- a/components/primitive/portal/demo/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import {H1, Paragraph} from '@s-ui/documentation-library' - -import DefaultArticle from './articles/DefaultArticle.js' -import {CLASS_SECTION} from './config' - -const Demo = () => { - return ( -
    -

    PrimitivePortal

    - - Renders a React subtree in a different part of the DOM. - - -
    - ) -} - -export default Demo diff --git a/components/primitive/portal/demo/index.scss b/components/primitive/portal/demo/index.scss deleted file mode 100644 index cd7c259df7..0000000000 --- a/components/primitive/portal/demo/index.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import '~@s-ui/react-atom-icon/lib/index.scss'; - -@import '../src/index'; diff --git a/components/primitive/portal/demo/package.json b/components/primitive/portal/demo/package.json deleted file mode 100644 index 3b65b82438..0000000000 --- a/components/primitive/portal/demo/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "@s-ui/react-primitive-portal-demo", - "version": "1.0.0", - "private": true, - "description": "Demo for sui-primitive-portal", - "dependencies": { - "@s-ui/react-atom-icon": "1.18.0" - } -} diff --git a/components/primitive/portal/package.json b/components/primitive/portal/package.json deleted file mode 100644 index 285d712553..0000000000 --- a/components/primitive/portal/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@s-ui/react-primitive-portal", - "version": "1.0.0", - "description": "", - "main": "lib/index.js", - "scripts": { - "prepublishOnly": "rimraf lib && npm run build:js && npm run build:styles", - "build:js": "babel --presets sui src --out-dir ./lib", - "build:styles": "cpx './src/**/*.scss' lib" - }, - "peerDependencies": { - "@s-ui/theme": "8" - }, - "repository": { - "type": "git", - "url": "https://github.com/SUI-Components/sui-components" - }, - "keywords": [], - "author": "", - "license": "MIT", - "dependencies": { - "@s-ui/js": "2.26.0", - "@s-ui/react-hooks": "1", - "@s-ui/react-primitive-injector": "1", - "@s-ui/react-primitive-polymorphic-element": "1" - } -} diff --git a/components/primitive/portal/src/index.js b/components/primitive/portal/src/index.js deleted file mode 100644 index 78581419af..0000000000 --- a/components/primitive/portal/src/index.js +++ /dev/null @@ -1,57 +0,0 @@ -import {forwardRef, Fragment, useMemo, useState, useEffect} from 'react' -import {createPortal} from 'react-dom' -import {isFragment} from 'react-is' - -import PropTypes from 'prop-types' - -import Injector from '@s-ui/react-primitive-injector' -import Poly from '@s-ui/react-primitive-polymorphic-element' -import useMountedState from '@s-ui/react-hooks/lib/useMountedState' - -import {BASE_CLASS, getContainer} from './settings.js' - -const PrimitivePortal = forwardRef( - ({target, as: AsProp = Fragment, children, ...props}, forwardedRef) => { - const isMounted = useMountedState() - const hasForwardRef = forwardedRef !== null - const [container, setContainer] = useState('') - - useEffect(() => { - if (isMounted()) { - setContainer(() => getContainer(target), [target]) - } - }, [target, setContainer, isMounted, getContainer]) - - const As = useMemo( - () => (isFragment() && hasForwardRef ? 'div' : AsProp), - [AsProp, hasForwardRef] - ) - - return container - ? createPortal( - || hasForwardRef) && { - className: BASE_CLASS, - ref: forwardedRef - })} - > - {children} - , - container - ) - : null - } -) - -PrimitivePortal.displayName = 'PrimitivePortal' -PrimitivePortal.propTypes = { - /* Render the passed value as the correspondent HTML tag or the component if a function is passed */ - as: PropTypes.elementType, - /** Element where portal should be rendered, by default new div element is created and appended to document.body */ - target: PropTypes.object, - /** inner virtual-dom elements **/ - children: PropTypes.node -} - -export default PrimitivePortal diff --git a/components/primitive/portal/src/index.scss b/components/primitive/portal/src/index.scss deleted file mode 100644 index 9acbf00ac6..0000000000 --- a/components/primitive/portal/src/index.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import '~@s-ui/theme/lib/index'; - -.sui-PrimitivePortal { - // Do your magic -} diff --git a/components/primitive/portal/src/settings.js b/components/primitive/portal/src/settings.js deleted file mode 100644 index c1ca64174f..0000000000 --- a/components/primitive/portal/src/settings.js +++ /dev/null @@ -1,14 +0,0 @@ -import {getTarget} from '@s-ui/js/lib/react/index.js' - -export const BASE_CLASS = 'sui-PrimitivePortal' - -const isRef = ref => typeof ref === 'object' && ref.hasOwnProperty('current') - -export const getContainer = target => { - if (target === undefined) { - return globalThis?.document?.body - } else if (isRef(target)) { - return target.current - } - return getTarget(target) -} diff --git a/components/primitive/portal/test/getComponent.js b/components/primitive/portal/test/getComponent.js deleted file mode 100644 index 8a7bbcc5dc..0000000000 --- a/components/primitive/portal/test/getComponent.js +++ /dev/null @@ -1,33 +0,0 @@ -import {useRef} from 'react' - -import PropTypes from 'prop-types' - -const getComponent = ({triggerClass, targetClass, component: Component}) => { - const TRIGGER_CLASS = triggerClass - const TARGET_CLASS = targetClass - - const Response = ({children, ...props}) => { - const ref = useRef() - return ( - <> -
    - - {children} - -
    -
    - - ) - } - - Response.displayName = 'Response' - - Response.propTypes = { - component: PropTypes.elementType, - children: PropTypes.node - } - - return Response -} - -export default getComponent diff --git a/components/primitive/portal/test/index.test.js b/components/primitive/portal/test/index.test.js deleted file mode 100644 index 8438c43f2e..0000000000 --- a/components/primitive/portal/test/index.test.js +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Remember: YOUR COMPONENT IS DEFINED GLOBALLY - * */ - -/* eslint react/jsx-no-undef:0 */ -/* eslint no-undef:0 */ -import ReactDOM from 'react-dom' - -import chai, {expect} from 'chai' -import chaiDOM from 'chai-dom' - -import json from '../package.json' -import * as pkg from '../src/index.js' -import getComponent from './getComponent.js' - -chai.use(chaiDOM) - -describe(json.name, () => { - const {default: Portal} = pkg - const TRIGGER_CLASS = 'trigger-class' - const TARGET_CLASS = 'target-class' - const Component = getComponent({ - triggerClass: TRIGGER_CLASS, - targetClass: TARGET_CLASS, - component: Portal - }) - const setup = setupEnvironment(Component) - - it('library should include defined exported elements', () => { - // Given - const library = pkg - const libraryExportedMembers = ['default'] - - // When - const {default: PrimitivePortal, ...others} = library - - // Then - expect(Object.keys(library).length).to.equal(libraryExportedMembers.length) - expect(Object.keys(library)).to.have.members(libraryExportedMembers) - expect(Object.keys(others).length).to.equal(0) - }) - - describe(Portal.displayName, () => { - it('should render without crashing', () => { - // Given - const props = {} - - // When - const component = - - // Then - const div = document.createElement('div') - ReactDOM.render(component, div) - ReactDOM.unmountComponentAtNode(div) - }) - - it('should render null', () => { - // Given - const props = {} - - // When - const {container} = setup(props) - const target = container.querySelector(`.${TARGET_CLASS}`) - const trigger = container.querySelector(`.${TRIGGER_CLASS}`) - - // Then - expect(container.innerHTML).to.be.a('string') - expect(container.innerHTML).to.not.have.lengthOf(0) - - expect(trigger.innerHTML).to.be.a('string') - expect(trigger.innerHTML).to.have.lengthOf(0) - - expect(target.innerHTML).to.be.a('string') - expect(target.innerHTML).to.have.lengthOf(0) - }) - - it.skip('should NOT extend classNames', () => { - // Given - const props = {className: 'extended-classNames'} - const findSentence = str => string => - string.match(new RegExp(`S*${str}S*`)) - - // When - const {container} = setup(props) - const findClassName = findSentence(props.className) - - // Then - expect(findClassName(container.innerHTML)).to.be.null - }) - - it('should add a portal to the right dom place', () => { - // Given - const props = { - children:
    portal-test
    - } - - // When - const {container} = setup(props) - const target = container.querySelector(`.${TARGET_CLASS}`) - const trigger = container.querySelector(`.${TRIGGER_CLASS}`) - - // Then - expect(trigger.innerHTML).to.be.a('string') - expect(trigger.innerHTML).to.have.lengthOf(0) - - expect(target.innerHTML).to.be.a('string') - expect(target.innerHTML).to.not.have.lengthOf(0) - }) - }) -}) From ee94f7116857db8348adab22fcad71a52c4c96e3 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Wed, 14 Sep 2022 12:29:34 +0200 Subject: [PATCH 033/243] chore(Root): wip --- components/hook/use-portal/.gitignore | 2 - components/hook/use-portal/.npmignore | 5 - components/hook/use-portal/README.md | 68 ------------- .../use-portal/demo/articles/ArticleCustom.js | 17 +++- .../demo/articles/ArticleCustom/useTooltip.js | 74 +++++++++++--- .../demo/articles/ArticleDefault.js | 10 +- components/hook/use-portal/demo/index.js | 10 +- components/hook/use-portal/demo/package.json | 8 +- components/hook/use-portal/package.json | 4 +- components/hook/use-portal/src/index.js | 97 ++++++++++--------- components/hook/use-portal/src/settings.js | 2 + 11 files changed, 144 insertions(+), 153 deletions(-) diff --git a/components/hook/use-portal/.gitignore b/components/hook/use-portal/.gitignore index 3063f07d55..e69de29bb2 100644 --- a/components/hook/use-portal/.gitignore +++ b/components/hook/use-portal/.gitignore @@ -1,2 +0,0 @@ -lib -node_modules diff --git a/components/hook/use-portal/.npmignore b/components/hook/use-portal/.npmignore index 83de8b2bf3..e69de29bb2 100644 --- a/components/hook/use-portal/.npmignore +++ b/components/hook/use-portal/.npmignore @@ -1,5 +0,0 @@ -assets -demo -src -test -CHANGELOG.md \ No newline at end of file diff --git a/components/hook/use-portal/README.md b/components/hook/use-portal/README.md index c2423c1d2f..e69de29bb2 100644 --- a/components/hook/use-portal/README.md +++ b/components/hook/use-portal/README.md @@ -1,68 +0,0 @@ -# usePortal - -> The layout grid component adapts to screen size (responsive), ensuring consistency across layouts. - -## Installation - -```sh -$ npm install @s-ui/react-hook-use-portal -``` - -## Usage - -### Basic usage - -#### Import package and use in the component - -###### Stateless - -```js -import usePortal from '@s-ui/react-hook-use-portal' - -// Body portal ///////////////////////////////////////// -const App = () => { - const {Portal} = usePortal() - - return This text is portaled at the end of document.body! -} - -// Barcelona portal ///////////////////////////////////////// -const App = () => { - const element = document && document.getElementById('Barcelona') - const {Portal} = usePortal({ - bindTo: element - }) - - return This text is portaled into Barcelona! -} -``` - -### Arguments -```js -[ - { - hasCloseOnOutsideClick, // (bool, true) closes the portal when clicking outside - hasCloseOnEsc, // (bool|true) closes the portal when ESC key pressed - target, // attach the portal to this node in The DOM - isOpen, // (bool, false) statefull control - onOpen, // (function) fired when opening the modal - onClose, // (function) fired when closing the modal - onToggle, // (function) fired when modal open or closes - onClick, // (function) fired when clicking on the portal. - } -] -``` - -### Return -#### Object -```js -{ - isOpen, // (bool) is portal is visible or hidden - open, // (function) sets portal visible - close, // (function) sets portal hidden - toggle, // (function) toogles the visible/hidden portal state - Portal, // The rendered component - portalRef, // returns teh component ref - ...customEventHandlers // -} -``` diff --git a/components/hook/use-portal/demo/articles/ArticleCustom.js b/components/hook/use-portal/demo/articles/ArticleCustom.js index b7f21d4879..32b17bd3c2 100644 --- a/components/hook/use-portal/demo/articles/ArticleCustom.js +++ b/components/hook/use-portal/demo/articles/ArticleCustom.js @@ -1,4 +1,13 @@ -import {Article, Code, H2, Paragraph, Button} from '@s-ui/documentation-library' +import {useRef, useState} from 'react' + +import { + Article, + Code, + H2, + Paragraph, + Button, + Box +} from '@s-ui/documentation-library' import useTooltip from './ArticleCustom/useTooltip.js' @@ -11,8 +20,12 @@ const ArticleCustom = ({className}) => { You can use an stateless Portal with its open{' '} and close{' '} - This is a cool tooltip 😜 + + + hello world + +
    ) } diff --git a/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js b/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js index 843da22eb1..5a1493cc20 100644 --- a/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js +++ b/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js @@ -1,28 +1,74 @@ +import {useRef, useState, useLayoutEffect} from 'react' +import cx from 'classnames' + import {usePopper} from 'react-popper' import usePortal from '../../../src/index.js' -const useTooltip = ({isOpen = false, ...config} = {}) => { - const {Portal, onMouseEnter, onMouseLeave, portalRef, open, close} = - usePortal({ - onMouseEnter({portal, triggerElement}) { - open() - usePopper(triggerElement, portalRef) - }, - isOpen, - onMouseLeave: ({portal}) => { - portal.current.removeAttribute('style') - close() - }, - ...config +const useTooltip = ({isOpen, ...config} = {}) => { + const { + Portal, + onMouseEnter, + onMouseLeave, + portalRef, + open, + close, + isOpen: isOpened, + triggerRef + } = usePortal({ + onMouseEnter: event => open(event), + onMouseLeave: event => close(event), + isOpen: false, + ...config + }) + + useLayoutEffect(() => { + const { + top: triggerTop = 0, + y: triggerY = 0, + height: triggerH = 0 + } = triggerRef.current?.getBoundingClientRect() || {} + const { + top: portalTop = 0, + y: portalY = 0, + height: portalH = 0 + } = portalRef.current?.getBoundingClientRect() || {} + console.log('useLayoutEffect', { + // isOpened, + triggerRef: triggerRef.current, + triggerRefBoundings: {top: triggerTop, y: triggerY, height: triggerH}, + portalRefBoundings: {top: portalTop, y: portalY, height: portalH}, + pageYOffset: window.pageYOffset, + y: window.pageYOffset + triggerTop + triggerH + // styles: structuredClone(styles), + // attributes: structuredClone(attributes), + // ...others }) + }, [isOpened]) + + const {styles, attributes, ...others} = usePopper( + portalRef.current && triggerRef.current, + portalRef.current + ) return [ { + ref: triggerRef, onMouseEnter, onMouseLeave }, - Portal + ({children, className, style = {}, ...props}) => { + return ( + + {children} + + ) + } ] } diff --git a/components/hook/use-portal/demo/articles/ArticleDefault.js b/components/hook/use-portal/demo/articles/ArticleDefault.js index c574308f3e..3f46c29951 100644 --- a/components/hook/use-portal/demo/articles/ArticleDefault.js +++ b/components/hook/use-portal/demo/articles/ArticleDefault.js @@ -1,4 +1,5 @@ import {useRef} from 'react' +import {findDOMNode} from 'react-dom' import { H2, H4, @@ -15,7 +16,6 @@ import usePortal from '../../src/index.js' const ArticleDefault = ({className}) => { const {Portal, portalRef} = usePortal() const articleRef = useRef() - const clickHandler = element => () => element.scrollIntoView() return (

    Default

    @@ -24,17 +24,17 @@ const ArticleDefault = ({className}) => { opened unless you define its initial isOpen configuration settings to false. - - - + +

    Default Portal Result

    This text is portaled at the end of document.body from the{' '} articleRef.current.scrollIntoView()} style={{ border: 0, padding: 0, diff --git a/components/hook/use-portal/demo/index.js b/components/hook/use-portal/demo/index.js index 436930fc6f..57ae20a0b5 100644 --- a/components/hook/use-portal/demo/index.js +++ b/components/hook/use-portal/demo/index.js @@ -27,15 +27,15 @@ const Demo = () => {

    - + {/**/}
    - + {/**/}
    - + {/**/}
    - + {/**/}
    - + {/**/}
    diff --git a/components/hook/use-portal/demo/package.json b/components/hook/use-portal/demo/package.json index 2b6a4ff93f..3cc9e19c90 100644 --- a/components/hook/use-portal/demo/package.json +++ b/components/hook/use-portal/demo/package.json @@ -3,14 +3,12 @@ "private": true, "version": "1.0.0", "description": "", - "main": "lib/index.js", "scripts": { - "prepublishOnly": "rimraf ./lib && npm run build:js && npm run build:styles", - "build:js": "babel --presets sui ./src --out-dir ./lib", - "build:styles": "cpx './src/**/*.scss' ./lib" + "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "react-popper": "2.3.0" + "react-popper": "2.3.0", + "@s-ui/react-hooks": "1" }, "keywords": [], "author": "", diff --git a/components/hook/use-portal/package.json b/components/hook/use-portal/package.json index 9a9f2cae15..1974b45f37 100644 --- a/components/hook/use-portal/package.json +++ b/components/hook/use-portal/package.json @@ -9,7 +9,9 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "use-ssr": "1.0.24" + "use-ssr": "1.0.24", + "classnames": "2.2.5", + "@s-ui/react-hooks": "1" }, "keywords": [], "author": "", diff --git a/components/hook/use-portal/src/index.js b/components/hook/use-portal/src/index.js index bc644bc607..e95ca34955 100644 --- a/components/hook/use-portal/src/index.js +++ b/components/hook/use-portal/src/index.js @@ -1,17 +1,29 @@ -import {useState, useRef, useEffect, useCallback, useMemo} from 'react' +import { + useState, + useRef, + useEffect, + useCallback, + useMemo, + forwardRef, + useLayoutEffect +} from 'react' import {createPortal, findDOMNode} from 'react-dom' +import {isFragment} from 'react-is' +import cx from 'classnames' import useSSR from 'use-ssr' -import { BASE_CLASS, errorMessage1 } from './settings.js' +import useMergeRefs from '@s-ui/react-hooks/lib/useMergeRefs' + +import {BASE_CLASS, errorMessage1, DEFAULT_IS_OPEN} from './settings.js' const usePortal = ({ hasCloseOnOutsideClick = false, hasCloseOnEsc = false, - target, - isOpen: defaultIsOpen = true, + target = document.body, onOpen, onClose, + isOpen: defaultIsOpen = DEFAULT_IS_OPEN, onToggle, onClick, ...eventHandlers @@ -29,21 +41,7 @@ const usePortal = ({ }, []) const triggerElement = useRef() // this is the element you are clicking/hovering/whatever, to trigger opening the portal - const element = useMemo(() => { - let element = null - if (isBrowser) { - element = document.createElement('div') - element.classList.add(BASE_CLASS) - } - return element - }, [isBrowser]) - const portal = useRef(isBrowser ? element : null) - - useEffect(() => { - if (isBrowser && !portal.current) { - portal.current = element - } - }, [isBrowser, portal]) + const portal = useRef() const elToMountTo = useMemo(() => { if (isServer) return @@ -52,14 +50,12 @@ const usePortal = ({ const createCustomEvent = event => { if (!event) return {portal, triggerElement, event} + debugger const response = event || {} if (response.persist) response.persist() response.portal = portal response.triggerElement = triggerElement response.event = event - const {currentTarget} = event - if (!triggerElement.current && currentTarget && currentTarget !== document) - triggerElement.current = response.currentTarget return response } @@ -79,25 +75,18 @@ const usePortal = ({ event => { if (isServer) return const customEvent = createCustomEvent(event) - // for some reason, when we don't have the event argument, there - // is a weird race condition. Would like to see if we can remove - // setTimeout, but for now this works - if (triggerElement.current == null) { - setTimeout(() => setIsOpen(true), 0) - throw Error(errorMessage1) - } - if (onOpen) onOpen(customEvent) - setIsOpen(true) + if (onOpen && isOpen.current === false) onOpen(customEvent) + if (isOpen.current === false) setIsOpen(true) }, - [isServer, portal, setIsOpen, triggerElement, onOpen] + [isServer, setIsOpen, onOpen] ) const closePortal = useCallback( event => { if (isServer) return const customEvent = createCustomEvent(event) - if (onClose && isOpen.current) onClose(customEvent) - if (isOpen.current) setIsOpen(false) + if (onClose && isOpen.current === true) onClose(customEvent) + if (isOpen.current === true) setIsOpen(false) }, [isServer, onClose, setIsOpen] ) @@ -160,9 +149,6 @@ const usePortal = ({ onScroll: 'scroll', onWheel: 'wheel' } - const node = portal.current - elToMountTo.appendChild(portal.current) - // handles all special case handlers. Currently only onScroll and onWheel Object.entries(eventHandlerMap).forEach( ([handlerName /* onScroll */, eventListenerName /* scroll */]) => { if (!eventHandlers[handlerName]) return @@ -191,21 +177,40 @@ const usePortal = ({ ) document.removeEventListener('keydown', handleKeydown) document.removeEventListener('mousedown', handleMouseDown) - elToMountTo.removeChild(node) } }, [isServer, handleOutsideMouseClick, handleKeydown, elToMountTo, portal]) - const Portal = useCallback( - ({children, isOpen: isOpenProp = defaultIsOpen}) => { + const Portal = forwardRef( + ( + {as: As = 'div', children, isOpen: isOpenProp, className, ...props}, + forwardedRef + ) => { + const ref = useMergeRefs(forwardedRef, portal, () => { + console.log(triggerElement) + debugger + }) useEffect(() => { if (isServer) return - setIsOpen(isOpenProp) + if (isOpenProp !== undefined) { + setIsOpen(isOpenProp) + } }, [isOpenProp]) - if (portal.current != null && isOpen.current) - return createPortal(children, portal.current) - return null - }, - [portal] + + return isOpen.current + ? createPortal( + ) && { + ref, + className: cx(BASE_CLASS, className), + ...props + })} + > + {children} + , + target + ) + : null + } ) return Object.assign( diff --git a/components/hook/use-portal/src/settings.js b/components/hook/use-portal/src/settings.js index a60d9963c0..64eb7058f5 100644 --- a/components/hook/use-portal/src/settings.js +++ b/components/hook/use-portal/src/settings.js @@ -2,3 +2,5 @@ export const BASE_CLASS = 'sui-Portal' export const errorMessage1 = 'You must either add a `ref` to the element you are interacting with or pass an `event` to openPortal(e) or togglePortal(e).' + +export const DEFAULT_IS_OPEN = true From bb0568ca265866d29a6ad024a0c9dfcd844b5c8a Mon Sep 17 00:00:00 2001 From: andresin87 Date: Fri, 16 Sep 2022 09:51:03 +0200 Subject: [PATCH 034/243] chore(Root): wip --- components/hook/use-portal/README.md | 98 ++++++++++++ .../demo/articles/ArticleCloseOnEvent.js | 23 ++- .../use-portal/demo/articles/ArticleCustom.js | 25 ++-- .../demo/articles/ArticleCustom/usePopper.js | 136 +++++++++++++++++ .../demo/articles/ArticleCustom/useTooltip.js | 65 ++++---- .../demo/articles/ArticleDefault.js | 89 ++++++++++- .../demo/articles/ArticleStateful.js | 23 ++- .../demo/articles/ArticleStateless.js | 14 +- .../use-portal/demo/articles/ArticleTarget.js | 17 ++- components/hook/use-portal/demo/index.js | 33 ++-- components/hook/use-portal/demo/index.scss | 10 ++ components/hook/use-portal/demo/package.json | 5 +- components/hook/use-portal/demo/settings.js | 2 + components/hook/use-portal/package.json | 6 +- components/hook/use-portal/src/index.js | 141 ++++++++---------- components/hook/use-portal/src/index.scss | 1 + components/hook/use-portal/src/settings.js | 3 - components/hook/use-portal/test/index.test.js | 65 ++++++++ .../molecule/autosuggest/demo/Icons/index.js | 2 +- .../molecule/autosuggest/demo/config.js | 1 + components/molecule/autosuggest/demo/index.js | 11 +- .../molecule/inputTags/test/index.test.js | 4 +- components/molecule/select/src/index.js | 8 +- 23 files changed, 595 insertions(+), 187 deletions(-) create mode 100644 components/hook/use-portal/demo/articles/ArticleCustom/usePopper.js create mode 100644 components/hook/use-portal/demo/index.scss create mode 100644 components/hook/use-portal/demo/settings.js diff --git a/components/hook/use-portal/README.md b/components/hook/use-portal/README.md index e69de29bb2..51d9faada5 100644 --- a/components/hook/use-portal/README.md +++ b/components/hook/use-portal/README.md @@ -0,0 +1,98 @@ +# usePortal + +> Provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component. ([doc](https://reactjs.org/docs/portals.html)) + +## Installation + +```sh +$ npm install @s-ui/react-hook-use-portal +``` + +## Usage + +### Basic usage + +```js +// Array destructuring +const Foo = props => { + const [Portal] = usePortal() + return ( + <> + This content is rendered on the propper VDOM tree. + This content added at the end of the document.body + + ) +} +``` + +```js +// Object destructuring +const Foo = props => { + const {Portal} = usePortal() + return ( + <> + This content is rendered on the propper VDOM tree. + This content added at the end of the document.body + + ) +} +``` + +### Target Configuration + +Target is the DOM place where the Portal might the appended. By default it is document.body. To set a different element, just add it to the hook configuration option arguments object: + +```js +const Foo = props => { + const portalContainer = useRef() + const {Portal} = usePortal({target: portalContainer.current}) + return ( + <> +
    + This content is rendered on the propper VDOM tree. + + This content added at the end of the portalContainer element + +
    +
    {/** <-- this is the container where the portal children will be rendered **/} + + ) +} +``` + +### Open and Close + +Portals can be opened and closed. + +```js +// Statefull (uncontrolled) +const Foo = props => { + const {Portal, open, close, isOpen} = usePortal() + return ( + <> + {!isOpen && } + + This is added at the end of the document.body + + + + ) +} +``` + +```js +// Stateless (controlled) +const Foo = props => { + const [isOpen, setIsOpen] = useState(true) + const {Portal} = usePortal() + return ( + <> + {!isOpen && } + + This is added at the end of the document.body + + + + ) +} +``` \ No newline at end of file diff --git a/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js b/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js index 9a8c7e6feb..afdc94f88e 100644 --- a/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js +++ b/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js @@ -1,16 +1,19 @@ -import {useState, useRef} from 'react' +import {useRef, useState} from 'react' + +import PropTypes from 'prop-types' + import { + Article, + Box, + Cell, + Code, + Grid, H2, H3, + ListItem, Paragraph, - Code, - Article, - Box, RadioButton, - Grid, - Cell, - UnorderedList, - ListItem + UnorderedList } from '@s-ui/documentation-library' import usePortal from '../../src/index.js' @@ -106,4 +109,8 @@ const ArticleCloseOnEvent = ({className}) => { ) } +ArticleCloseOnEvent.propTypes = { + className: PropTypes.string +} + export default ArticleCloseOnEvent diff --git a/components/hook/use-portal/demo/articles/ArticleCustom.js b/components/hook/use-portal/demo/articles/ArticleCustom.js index 32b17bd3c2..c1697c4608 100644 --- a/components/hook/use-portal/demo/articles/ArticleCustom.js +++ b/components/hook/use-portal/demo/articles/ArticleCustom.js @@ -1,13 +1,6 @@ -import {useRef, useState} from 'react' +import PropTypes from 'prop-types' -import { - Article, - Code, - H2, - Paragraph, - Button, - Box -} from '@s-ui/documentation-library' +import {Article, Button, H2, Paragraph} from '@s-ui/documentation-library' import useTooltip from './ArticleCustom/useTooltip.js' @@ -17,17 +10,19 @@ const ArticleCustom = ({className}) => {

    Custom

    - You can use an stateless Portal with its open{' '} - and close{' '} + You can use the hook defining custom event handlers to extend its + functionalities to may other ways like creating tooltips. - - - hello world - + + hello world
    ) } +ArticleCustom.propTypes = { + className: PropTypes.string +} + export default ArticleCustom diff --git a/components/hook/use-portal/demo/articles/ArticleCustom/usePopper.js b/components/hook/use-portal/demo/articles/ArticleCustom/usePopper.js new file mode 100644 index 0000000000..bc02ae8511 --- /dev/null +++ b/components/hook/use-portal/demo/articles/ArticleCustom/usePopper.js @@ -0,0 +1,136 @@ +import {useMemo, useRef, useState} from 'react' +import isEqual from 'react-fast-compare' + +import {createPopper as defaultCreatePopper} from '@popperjs/core' + +import useIsomorphicLayoutEffect from '@s-ui/react-hooks/lib/useIsomorphicLayoutEffect' + +const EMPTY_MODIFIERS = [] + +const usePopper = function usePopper( + referenceElement, + popperElement, + options = {} +) { + const prevOptions = useRef(null) + const optionsWithDefaults = { + onFirstUpdate: options.onFirstUpdate, + placement: options.placement || 'bottom', + strategy: options.strategy || 'absolute', + modifiers: options.modifiers || EMPTY_MODIFIERS + } + + const [state, setState] = useState({ + styles: { + popper: { + position: optionsWithDefaults.strategy, + left: '0', + top: '0' + }, + arrow: { + position: 'absolute' + } + }, + attributes: {} + }) + + const updateStateModifier = useMemo(function () { + return { + name: 'updateState', + enabled: true, + phase: 'write', + fn: function fn({state}) { + const elements = Object.keys(state.elements) + setState({ + styles: Object.fromEntries( + elements.map(function (element) { + return [element, state.styles[element] || {}] + }) + ), + attributes: Object.fromEntries( + elements.map(function (element) { + return [element, state.attributes[element]] + }) + ) + }) + }, + requires: ['computeStyles'] + } + }, []) + + const popperOptions = useMemo( + function () { + const newOptions = { + onFirstUpdate: optionsWithDefaults.onFirstUpdate, + placement: optionsWithDefaults.placement, + strategy: optionsWithDefaults.strategy, + modifiers: [].concat(optionsWithDefaults.modifiers, [ + updateStateModifier, + { + name: 'applyStyles', + enabled: false + } + ]) + } + + if (isEqual(prevOptions.current, newOptions)) { + return prevOptions.current || newOptions + } else { + prevOptions.current = newOptions + return newOptions + } + }, + [ + optionsWithDefaults.onFirstUpdate, + optionsWithDefaults.placement, + optionsWithDefaults.strategy, + optionsWithDefaults.modifiers, + updateStateModifier + ] + ) + const popperInstanceRef = useRef() + + useIsomorphicLayoutEffect( + function () { + if (popperInstanceRef.current) { + popperInstanceRef.current.setOptions(popperOptions) + } + }, + [popperOptions] + ) + useIsomorphicLayoutEffect( + function () { + if ( + referenceElement == null || + popperElement == null || + popperInstanceRef.current + ) { + return + } + + const createPopper = options.createPopper || defaultCreatePopper + const popperInstance = createPopper( + referenceElement, + popperElement, + popperOptions + ) + popperInstanceRef.current = popperInstance + return function () { + popperInstance.destroy() + popperInstanceRef.current = null + } + }, + [referenceElement, popperElement, options.createPopper] + ) + return { + state: popperInstanceRef.current ? popperInstanceRef.current.state : null, + styles: state.styles, + attributes: state.attributes, + update: popperInstanceRef.current ? popperInstanceRef.current.update : null, + forceUpdate: popperInstanceRef.current + ? popperInstanceRef.current.forceUpdate + : null + } +} + +export default usePopper diff --git a/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js b/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js index 5a1493cc20..e752f29b0e 100644 --- a/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js +++ b/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js @@ -1,11 +1,12 @@ -import {useRef, useState, useLayoutEffect} from 'react' -import cx from 'classnames' +import {useCallback, useState} from 'react' -import {usePopper} from 'react-popper' +import cx from 'classnames' import usePortal from '../../../src/index.js' +import usePopper from './usePopper.js' const useTooltip = ({isOpen, ...config} = {}) => { + const [isVisible, setIsVisible] = useState(false) const { Portal, onMouseEnter, @@ -18,57 +19,43 @@ const useTooltip = ({isOpen, ...config} = {}) => { } = usePortal({ onMouseEnter: event => open(event), onMouseLeave: event => close(event), + onOpen: () => setIsVisible(true), + onClose: () => setIsVisible(false), isOpen: false, ...config }) - useLayoutEffect(() => { - const { - top: triggerTop = 0, - y: triggerY = 0, - height: triggerH = 0 - } = triggerRef.current?.getBoundingClientRect() || {} - const { - top: portalTop = 0, - y: portalY = 0, - height: portalH = 0 - } = portalRef.current?.getBoundingClientRect() || {} - console.log('useLayoutEffect', { - // isOpened, - triggerRef: triggerRef.current, - triggerRefBoundings: {top: triggerTop, y: triggerY, height: triggerH}, - portalRefBoundings: {top: portalTop, y: portalY, height: portalH}, - pageYOffset: window.pageYOffset, - y: window.pageYOffset + triggerTop + triggerH - // styles: structuredClone(styles), - // attributes: structuredClone(attributes), - // ...others - }) - }, [isOpened]) - - const {styles, attributes, ...others} = usePopper( - portalRef.current && triggerRef.current, - portalRef.current + const {styles, attributes} = usePopper( + triggerRef.current, + isVisible ? portalRef.current : null ) - return [ - { - ref: triggerRef, - onMouseEnter, - onMouseLeave - }, + const Tooltip = useCallback( ({children, className, style = {}, ...props}) => { return ( {children} ) - } + }, + [isOpened, styles, attributes] + ) + + return [ + { + ref: triggerRef, + onMouseEnter, + onMouseLeave + }, + Tooltip ] } diff --git a/components/hook/use-portal/demo/articles/ArticleDefault.js b/components/hook/use-portal/demo/articles/ArticleDefault.js index 3f46c29951..a8f7e5f004 100644 --- a/components/hook/use-portal/demo/articles/ArticleDefault.js +++ b/components/hook/use-portal/demo/articles/ArticleDefault.js @@ -1,14 +1,21 @@ import {useRef} from 'react' -import {findDOMNode} from 'react-dom' + +import PropTypes from 'prop-types' + import { - H2, - H4, - Paragraph, + Anchor, Article, + Bold, Box, - Code, Button, - Anchor + Code, + H2, + H3, + H4, + ListItem, + OrderedList, + Paragraph, + UnorderedList } from '@s-ui/documentation-library' import usePortal from '../../src/index.js' @@ -48,8 +55,78 @@ const ArticleDefault = ({className}) => { + + usePortal hook admits many different options as an{' '} + object argument to configure the portal: + + + + isOpen (boolean|true): sets the initial state visible or + not. + + + onOpen (func): opens the portal + + + onClose (func): closes the portal + + + onToggle (func): changes between open/close the portal + + + hasCloseOnOutsideClick (boolean|false): auto-close the + portal on outside click + + + hasCloseOnEsc (boolean|false): autoClose the portal on + 'Esc' press + + +

    Result

    + + usePortal hook result can be destructured using an array or + an object. + +

    Array

    + + const [Portal, open, close, isOpen, togglePortal, triggerRef, portalRef] + = usePortal() + +

    Object

    + + { + 'const {Portal, open, close, isOpen, togglePortal, triggerRef, portalRef} = usePortal()' + } + + + + Portal: The portal component + + + open: The action to open the portal + + + close: The action to close the portal + + + isOpen: The portal current state + + + togglePortal: The action to toggle the state + + + triggerRef: The trigger element ref + + + portalRef: The portal element ref + + ) } +ArticleDefault.propTypes = { + className: PropTypes.string +} + export default ArticleDefault diff --git a/components/hook/use-portal/demo/articles/ArticleStateful.js b/components/hook/use-portal/demo/articles/ArticleStateful.js index 429c95bd5c..a6b45c15a3 100644 --- a/components/hook/use-portal/demo/articles/ArticleStateful.js +++ b/components/hook/use-portal/demo/articles/ArticleStateful.js @@ -1,5 +1,15 @@ import {useRef, useState} from 'react' -import {H2, Paragraph, Article, Button, Box} from '@s-ui/documentation-library' + +import PropTypes from 'prop-types' + +import { + Article, + Box, + Button, + Code, + H2, + Paragraph +} from '@s-ui/documentation-library' import usePortal from '../../src/index.js' @@ -16,8 +26,11 @@ const ArticleStateful = ({className}) => { }) return (
    -

    Stateful control

    - asdasd +

    Stateful Control

    + + You can also define the Portal behavior under the isOpen{' '} + (boolean) Portal prop as a controlled component. +
    @@ -32,4 +45,8 @@ const ArticleStateful = ({className}) => { ) } +ArticleStateful.propTypes = { + className: PropTypes.string +} + export default ArticleStateful diff --git a/components/hook/use-portal/demo/articles/ArticleStateless.js b/components/hook/use-portal/demo/articles/ArticleStateless.js index 3399143ba0..77c632d57a 100644 --- a/components/hook/use-portal/demo/articles/ArticleStateless.js +++ b/components/hook/use-portal/demo/articles/ArticleStateless.js @@ -1,11 +1,14 @@ import {useRef} from 'react' + +import PropTypes from 'prop-types' + import { - H2, - Paragraph, Article, - Button, Box, - Code + Button, + Code, + H2, + Paragraph } from '@s-ui/documentation-library' import usePortal from '../../src/index.js' @@ -33,5 +36,8 @@ const ArticleStateless = ({className}) => {
    ) } +ArticleStateless.propTypes = { + className: PropTypes.string +} export default ArticleStateless diff --git a/components/hook/use-portal/demo/articles/ArticleTarget.js b/components/hook/use-portal/demo/articles/ArticleTarget.js index 1dfb9173a4..940a5b7393 100644 --- a/components/hook/use-portal/demo/articles/ArticleTarget.js +++ b/components/hook/use-portal/demo/articles/ArticleTarget.js @@ -1,6 +1,8 @@ import {useRef} from 'react' -import {H2, Paragraph, Article, Code, Box} from '@s-ui/documentation-library' +import PropTypes from 'prop-types' + +import {Article, Box, Code, H2, Paragraph} from '@s-ui/documentation-library' import usePortal from '../../src/index.js' @@ -10,8 +12,13 @@ const ArticleTarget = ({className}) => { return (

    Target

    - Providing a target argument to the hook options will append the declared Portal's children. - {'const { Portal } = usePortal({ target: element })'} + + Providing a target argument to the hook options will append + the declared Portal's children. + + + {'const { Portal } = usePortal({ target: element })'} +
    @@ -25,4 +32,8 @@ const ArticleTarget = ({className}) => { ) } +ArticleTarget.propTypes = { + className: PropTypes.string +} + export default ArticleTarget diff --git a/components/hook/use-portal/demo/index.js b/components/hook/use-portal/demo/index.js index 57ae20a0b5..ce56774d3a 100644 --- a/components/hook/use-portal/demo/index.js +++ b/components/hook/use-portal/demo/index.js @@ -1,24 +1,27 @@ import { - Paragraph, - H1, - Code, Anchor, - Emphasis + Bold, + Code, + Emphasis, + H1, + Paragraph } from '@s-ui/documentation-library' -import ArticleDefault from './articles/ArticleDefault.js' -import ArticleTarget from './articles/ArticleTarget.js' -import ArticleStateless from './articles/ArticleStateless.js' -import ArticleStateful from './articles/ArticleStateful.js' import ArticleCloseOnEvent from './articles/ArticleCloseOnEvent.js' import ArticleCustom from './articles/ArticleCustom.js' +import ArticleDefault from './articles/ArticleDefault.js' +import ArticleStateful from './articles/ArticleStateful.js' +import ArticleStateless from './articles/ArticleStateless.js' +import ArticleTarget from './articles/ArticleTarget.js' +import {CLASS_SECTION} from './settings.js' const Demo = () => { return (

    usePortal

    - The usePortal hook offers the possibility to create a{' '} + The usePortal hook offers the possibility to + create a{' '} Portal set where is defined (default: document.body). @@ -27,17 +30,17 @@ const Demo = () => {

    - {/**/} +
    - {/**/} +
    - {/**/} +
    - {/**/} +
    - {/**/} +
    - +
    ) } diff --git a/components/hook/use-portal/demo/index.scss b/components/hook/use-portal/demo/index.scss new file mode 100644 index 0000000000..798de8267e --- /dev/null +++ b/components/hook/use-portal/demo/index.scss @@ -0,0 +1,10 @@ +@import '../src/index'; + +.sui-DemoTooltip { + background-color: $c-primary-light; + border-radius: $bdrs-base; + padding: $p-base; + border-width: $bdw-m; + border-color: $c-primary; + border-style: solid; +} \ No newline at end of file diff --git a/components/hook/use-portal/demo/package.json b/components/hook/use-portal/demo/package.json index 3cc9e19c90..af4067ae9c 100644 --- a/components/hook/use-portal/demo/package.json +++ b/components/hook/use-portal/demo/package.json @@ -7,8 +7,9 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "react-popper": "2.3.0", - "@s-ui/react-hooks": "1" + "@popperjs/core": "2.11.6", + "@s-ui/react-hooks": "1", + "react-fast-compare": "3.2.0" }, "keywords": [], "author": "", diff --git a/components/hook/use-portal/demo/settings.js b/components/hook/use-portal/demo/settings.js new file mode 100644 index 0000000000..633d43cc40 --- /dev/null +++ b/components/hook/use-portal/demo/settings.js @@ -0,0 +1,2 @@ +export const BASE_CLASS_DEMO = `DemoUsePortal` +export const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` diff --git a/components/hook/use-portal/package.json b/components/hook/use-portal/package.json index 1974b45f37..b59e1f5bfc 100644 --- a/components/hook/use-portal/package.json +++ b/components/hook/use-portal/package.json @@ -13,7 +13,11 @@ "classnames": "2.2.5", "@s-ui/react-hooks": "1" }, - "keywords": [], + "keywords": [ + "react", + "hook", + "portal" + ], "author": "", "license": "MIT" } diff --git a/components/hook/use-portal/src/index.js b/components/hook/use-portal/src/index.js index e95ca34955..c88893c9d4 100644 --- a/components/hook/use-portal/src/index.js +++ b/components/hook/use-portal/src/index.js @@ -1,44 +1,36 @@ +/* eslint-disable react/prop-types */ import { - useState, - useRef, - useEffect, + forwardRef, useCallback, + useEffect, useMemo, - forwardRef, - useLayoutEffect + useRef, + useState } from 'react' import {createPortal, findDOMNode} from 'react-dom' import {isFragment} from 'react-is' import cx from 'classnames' +import PropTypes from 'prop-types' import useSSR from 'use-ssr' import useMergeRefs from '@s-ui/react-hooks/lib/useMergeRefs' -import {BASE_CLASS, errorMessage1, DEFAULT_IS_OPEN} from './settings.js' +import {BASE_CLASS, DEFAULT_IS_OPEN} from './settings.js' const usePortal = ({ - hasCloseOnOutsideClick = false, - hasCloseOnEsc = false, + isOpen: defaultIsOpen = DEFAULT_IS_OPEN, target = document.body, onOpen, onClose, - isOpen: defaultIsOpen = DEFAULT_IS_OPEN, onToggle, onClick, + hasCloseOnOutsideClick = false, + hasCloseOnEsc = false, ...eventHandlers } = {}) => { - const {isServer, isBrowser} = useSSR() - const [isOpened, setOpened] = useState(defaultIsOpen) - - // we use this ref because `isOpen` is stale for handleOutsideMouseClick - const isOpen = useRef(isOpened) - - const setIsOpen = useCallback(value => { - // workaround to not have stale `isOpened` in the handleOutsideMouseClick - isOpen.current = value - setOpened(value) - }, []) + const {isServer} = useSSR() + const [isOpened, setIsOpened] = useState(defaultIsOpen) const triggerElement = useRef() // this is the element you are clicking/hovering/whatever, to trigger opening the portal const portal = useRef() @@ -50,7 +42,6 @@ const usePortal = ({ const createCustomEvent = event => { if (!event) return {portal, triggerElement, event} - debugger const response = event || {} if (response.persist) response.persist() response.portal = portal @@ -71,30 +62,22 @@ const usePortal = ({ {} ) - const openPortal = useCallback( - event => { + const setIsOpen = useCallback( + value => event => { if (isServer) return const customEvent = createCustomEvent(event) - if (onOpen && isOpen.current === false) onOpen(customEvent) - if (isOpen.current === false) setIsOpen(true) + if (onOpen && value === true) setTimeout(() => onOpen(customEvent), 0) + if (onClose && value === false) onClose(customEvent) + setIsOpened(value) }, - [isServer, setIsOpen, onOpen] + [isServer, setIsOpened, onClose] ) - const closePortal = useCallback( - event => { - if (isServer) return - const customEvent = createCustomEvent(event) - if (onClose && isOpen.current === true) onClose(customEvent) - if (isOpen.current === true) setIsOpen(false) - }, - [isServer, onClose, setIsOpen] - ) + const openPortal = setIsOpen(true) + const closePortal = setIsOpen(false) - const togglePortal = useCallback( - event => (isOpen.current ? closePortal(event) : openPortal(event)), - [closePortal, openPortal] - ) + const togglePortal = event => + isOpened ? closePortal(event) : openPortal(event) const handleKeydown = useCallback( event => @@ -108,7 +91,7 @@ const usePortal = ({ if ( containsTarget(portal) || event.button !== 0 || - !isOpen.current || + !isOpened || containsTarget(triggerElement) ) { return @@ -139,8 +122,9 @@ const usePortal = ({ if ( !(elToMountTo instanceof HTMLElement) || !(portal.current instanceof HTMLElement) - ) + ) { return + } // TODO: eventually will need to figure out a better solution for this. // Surely we can find a way to map onScroll/onWheel -> scroll/wheel better, @@ -180,51 +164,58 @@ const usePortal = ({ } }, [isServer, handleOutsideMouseClick, handleKeydown, elToMountTo, portal]) - const Portal = forwardRef( - ( - {as: As = 'div', children, isOpen: isOpenProp, className, ...props}, - forwardedRef - ) => { - const ref = useMergeRefs(forwardedRef, portal, () => { - console.log(triggerElement) - debugger - }) - useEffect(() => { - if (isServer) return - if (isOpenProp !== undefined) { - setIsOpen(isOpenProp) - } - }, [isOpenProp]) - - return isOpen.current - ? createPortal( - ) && { - ref, - className: cx(BASE_CLASS, className), - ...props - })} - > - {children} - , - target - ) - : null - } + const Portal = useCallback( + forwardRef( + ( + {as: As = 'div', children, isOpen: isOpenProp, className, ...props}, + forwardedRef + ) => { + const ref = useMergeRefs(forwardedRef, portal) + useEffect(() => { + if (isServer) return + if (isOpenProp !== undefined) { + setIsOpened(isOpenProp) + } + }, [isOpenProp]) + + return isOpened + ? createPortal( + ) && { + ref, + className: cx(BASE_CLASS, className), + ...props + })} + > + {children} + , + target + ) + : null + } + ), + [isOpened, portal, target] ) + Portal.propTypes = { + as: PropTypes.elementType, + children: PropTypes.node, + isOpen: PropTypes.bool, + className: PropTypes.string + } + Portal.displayName = 'Portal' return Object.assign( [ + Portal, openPortal, closePortal, - isOpen.current, - Portal, + isOpened, togglePortal, triggerElement, portal ], { - isOpen: isOpen.current, + isOpen: isOpened, triggerRef: triggerElement, open: openPortal, close: closePortal, diff --git a/components/hook/use-portal/src/index.scss b/components/hook/use-portal/src/index.scss index e69de29bb2..bd7f4f88aa 100644 --- a/components/hook/use-portal/src/index.scss +++ b/components/hook/use-portal/src/index.scss @@ -0,0 +1 @@ +@import '~@s-ui/theme/lib/index'; diff --git a/components/hook/use-portal/src/settings.js b/components/hook/use-portal/src/settings.js index 64eb7058f5..c0afc7796c 100644 --- a/components/hook/use-portal/src/settings.js +++ b/components/hook/use-portal/src/settings.js @@ -1,6 +1,3 @@ export const BASE_CLASS = 'sui-Portal' -export const errorMessage1 = - 'You must either add a `ref` to the element you are interacting with or pass an `event` to openPortal(e) or togglePortal(e).' - export const DEFAULT_IS_OPEN = true diff --git a/components/hook/use-portal/test/index.test.js b/components/hook/use-portal/test/index.test.js index e69de29bb2..6ed7d51987 100644 --- a/components/hook/use-portal/test/index.test.js +++ b/components/hook/use-portal/test/index.test.js @@ -0,0 +1,65 @@ +import React from 'react' +import ReactDOM from 'react-dom' + +import chai, {expect} from 'chai' +import chaiDOM from 'chai-dom' + +import {act, cleanup, renderHook} from '@testing-library/react-hooks' + +import json from '../package.json' +import * as pkg from '../src/index.js' + +describe(json.name, () => { + const {default: hook} = pkg + const setupEnvironment = + hook => + (...args) => + renderHook(() => hook(...args)) + const setup = setupEnvironment(hook) + + it('library should include defined exported elements', () => { + // Given + const library = pkg + const libraryExportedMembers = ['default'] + + // When + const {default: usePortal, ...others} = library + + // Then + expect(Object.keys(library).length).to.equal(libraryExportedMembers.length) + expect(Object.keys(library)).to.have.members(libraryExportedMembers) + expect(Object.keys(others).length).to.equal(0) + }) + + describe('hook', () => { + it('should be called without crashing', () => { + // Given + + // When + const {result} = setup() + + // Then + expect(() => result.current).to.not.throw() + }) + + it('should return proper props as an array', () => { + // Given + + // When + const {result} = setup() + const [ + Portal + // open, close, isOpen, toggle, triggerRef, portalRef + ] = result.current + + // console.log(result.current) + + // Then + expect(Portal).to.be.a('function') + // expect(Portal.displayName).to.equal('Portal') + // expect(open).to.be.a('function') + // expect(close).to.be.a('function') + // expect(toggle).to.be.a('function') + }) + }) +}) diff --git a/components/molecule/autosuggest/demo/Icons/index.js b/components/molecule/autosuggest/demo/Icons/index.js index 0bc30a8341..83d665d084 100644 --- a/components/molecule/autosuggest/demo/Icons/index.js +++ b/components/molecule/autosuggest/demo/Icons/index.js @@ -1,7 +1,7 @@ import PropTypes from 'prop-types' -import AtomIcon, {atomIconColors, atomIconSizes} from '@s-ui/react-atom-icon' import {AntDesignIcon} from '@s-ui/documentation-library' +import AtomIcon, {atomIconColors, atomIconSizes} from '@s-ui/react-atom-icon' const alert = ( diff --git a/components/molecule/autosuggest/demo/config.js b/components/molecule/autosuggest/demo/config.js index 47b27aa17f..865f65d3cc 100644 --- a/components/molecule/autosuggest/demo/config.js +++ b/components/molecule/autosuggest/demo/config.js @@ -1,6 +1,7 @@ import {withStateValue, withStateValueTags} from '@s-ui/hoc' import MoleculeAutosuggestField from '@s-ui/react-molecule-autosuggest-field' import MoleculeAutosuggestOption from '@s-ui/react-molecule-dropdown-option' + import MoleculeAutosuggest from '../src/index.js' import withDynamicOptions from './hoc/withDynamicOptions.js' import {getAsyncCountriesFromQuery} from './services/index.js' diff --git a/components/molecule/autosuggest/demo/index.js b/components/molecule/autosuggest/demo/index.js index 7da6f5a582..3bf122450b 100644 --- a/components/molecule/autosuggest/demo/index.js +++ b/components/molecule/autosuggest/demo/index.js @@ -9,19 +9,18 @@ import MoleculeAutosuggestOption from '@s-ui/react-molecule-dropdown-option' import ComboCountries from './components/ComboCountries.js' import { - iconClose, - iconSearch, iconAlert, + iconClose, + iconError, iconInfo, - iconError + iconSearch } from './Icons/index.js' - import { CLASS_DEMO_SECTION, - options, MoleculeAutosuggestWithState, MoleculeAutosuggestWithStateTags, - MoleculeAutosuggestWithStateTagsLabels + MoleculeAutosuggestWithStateTagsLabels, + options } from './config.js' import './index.scss' diff --git a/components/molecule/inputTags/test/index.test.js b/components/molecule/inputTags/test/index.test.js index 4078321014..8d9b8ff67d 100644 --- a/components/molecule/inputTags/test/index.test.js +++ b/components/molecule/inputTags/test/index.test.js @@ -127,7 +127,7 @@ describe(json.name, () => { sinon.match({ tags: [], name: props.name, - value: value + value }) ) }) @@ -161,7 +161,7 @@ describe(json.name, () => { sinon.match({ tags: props.tags, name: props.name, - value: value + value }) ) }) diff --git a/components/molecule/select/src/index.js b/components/molecule/select/src/index.js index 7a8c4c0868..bffe13fbb2 100644 --- a/components/molecule/select/src/index.js +++ b/components/molecule/select/src/index.js @@ -2,11 +2,11 @@ import { Children, cloneElement, createRef, + forwardRef, useCallback, useEffect, useRef, - useState, - forwardRef + useState } from 'react' import PropTypes from 'prop-types' @@ -20,10 +20,10 @@ import MoleculeSelectMultipleSelection from './components/MultipleSelection.js' import MoleculeSelectSingleSelection from './components/SingleSelection.js' import { ENABLED_KEYS, + getClassName, getOptionData, SELECT_STATES, - SELECTION_KEYS, - getClassName + SELECTION_KEYS } from './config.js' const MoleculeSelect = forwardRef((props, forwardedRef) => { From 28b946a949759b70e18c58c1699d19689c55d9f7 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 19 Sep 2022 10:04:29 +0200 Subject: [PATCH 035/243] chore(Root): wip --- components/hook/use-portal/test/index.test.js | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/components/hook/use-portal/test/index.test.js b/components/hook/use-portal/test/index.test.js index 6ed7d51987..a27da44bae 100644 --- a/components/hook/use-portal/test/index.test.js +++ b/components/hook/use-portal/test/index.test.js @@ -1,21 +1,29 @@ -import React from 'react' +import React, {useRef} from 'react' import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' -import {act, cleanup, renderHook} from '@testing-library/react-hooks' - import json from '../package.json' import * as pkg from '../src/index.js' describe(json.name, () => { - const {default: hook} = pkg - const setupEnvironment = - hook => - (...args) => - renderHook(() => hook(...args)) - const setup = setupEnvironment(hook) + const {default: usePortal} = pkg + const Component = ({children, ...props}) => { + const targetRef = useRef() + const {Portal} = usePortal({target: targetRef.current}) + + return ( +
    +
    + {children} +
    +
    +
    + ) + } + + const setup = setupEnvironment(Component) it('library should include defined exported elements', () => { // Given @@ -32,34 +40,29 @@ describe(json.name, () => { }) describe('hook', () => { - it('should be called without crashing', () => { + it('should render without crashing', () => { // Given + const props = {as: 'h1'} // When - const {result} = setup() + const component = // Then - expect(() => result.current).to.not.throw() + const div = document.createElement('div') + ReactDOM.render(component, div) + ReactDOM.unmountComponentAtNode(div) }) - it('should return proper props as an array', () => { + it('should NOT render null', () => { // Given + const props = {} // When - const {result} = setup() - const [ - Portal - // open, close, isOpen, toggle, triggerRef, portalRef - ] = result.current - - // console.log(result.current) + const {container} = setup(props) // Then - expect(Portal).to.be.a('function') - // expect(Portal.displayName).to.equal('Portal') - // expect(open).to.be.a('function') - // expect(close).to.be.a('function') - // expect(toggle).to.be.a('function') + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) }) }) }) From e5a4657e54159da74135dadd2d09506ab1feeda0 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 19 Sep 2022 12:32:57 +0200 Subject: [PATCH 036/243] chore(Root): wip --- components/atom/tag/package.json | 2 +- components/hook/use-portal/test/index.test.js | 68 ----- .../hook/{use-portal => usePortal}/.gitignore | 0 .../hook/{use-portal => usePortal}/.npmignore | 0 .../hook/{use-portal => usePortal}/README.md | 0 .../demo/articles/ArticleCloseOnEvent.js | 0 .../demo/articles/ArticleCustom.js | 0 .../demo/articles/ArticleCustom/usePopper.js | 0 .../demo/articles/ArticleCustom/useTooltip.js | 0 .../demo/articles/ArticleDefault.js | 0 .../demo/articles/ArticleStateful.js | 0 .../demo/articles/ArticleStateless.js | 0 .../demo/articles/ArticleTarget.js | 0 .../{use-portal => usePortal}/demo/index.js | 0 .../{use-portal => usePortal}/demo/index.scss | 0 .../demo/package.json | 0 .../demo/settings.js | 0 .../{use-portal => usePortal}/package.json | 0 .../{use-portal => usePortal}/src/index.js | 0 .../{use-portal => usePortal}/src/index.scss | 0 .../{use-portal => usePortal}/src/settings.js | 0 components/hook/usePortal/test/index.test.js | 245 ++++++++++++++++++ 22 files changed, 246 insertions(+), 69 deletions(-) delete mode 100644 components/hook/use-portal/test/index.test.js rename components/hook/{use-portal => usePortal}/.gitignore (100%) rename components/hook/{use-portal => usePortal}/.npmignore (100%) rename components/hook/{use-portal => usePortal}/README.md (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleCloseOnEvent.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleCustom.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleCustom/usePopper.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleCustom/useTooltip.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleDefault.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleStateful.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleStateless.js (100%) rename components/hook/{use-portal => usePortal}/demo/articles/ArticleTarget.js (100%) rename components/hook/{use-portal => usePortal}/demo/index.js (100%) rename components/hook/{use-portal => usePortal}/demo/index.scss (100%) rename components/hook/{use-portal => usePortal}/demo/package.json (100%) rename components/hook/{use-portal => usePortal}/demo/settings.js (100%) rename components/hook/{use-portal => usePortal}/package.json (100%) rename components/hook/{use-portal => usePortal}/src/index.js (100%) rename components/hook/{use-portal => usePortal}/src/index.scss (100%) rename components/hook/{use-portal => usePortal}/src/settings.js (100%) create mode 100644 components/hook/usePortal/test/index.test.js diff --git a/components/atom/tag/package.json b/components/atom/tag/package.json index 8d3856fe6f..22fd9ce780 100644 --- a/components/atom/tag/package.json +++ b/components/atom/tag/package.json @@ -9,7 +9,7 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "@s-ui/component-dependencies": "latest" + "@s-ui/component-dependencies": "1" }, "keywords": [], "author": "", diff --git a/components/hook/use-portal/test/index.test.js b/components/hook/use-portal/test/index.test.js deleted file mode 100644 index a27da44bae..0000000000 --- a/components/hook/use-portal/test/index.test.js +++ /dev/null @@ -1,68 +0,0 @@ -import React, {useRef} from 'react' -import ReactDOM from 'react-dom' - -import chai, {expect} from 'chai' -import chaiDOM from 'chai-dom' - -import json from '../package.json' -import * as pkg from '../src/index.js' - -describe(json.name, () => { - const {default: usePortal} = pkg - const Component = ({children, ...props}) => { - const targetRef = useRef() - const {Portal} = usePortal({target: targetRef.current}) - - return ( -
    -
    - {children} -
    -
    -
    - ) - } - - const setup = setupEnvironment(Component) - - it('library should include defined exported elements', () => { - // Given - const library = pkg - const libraryExportedMembers = ['default'] - - // When - const {default: usePortal, ...others} = library - - // Then - expect(Object.keys(library).length).to.equal(libraryExportedMembers.length) - expect(Object.keys(library)).to.have.members(libraryExportedMembers) - expect(Object.keys(others).length).to.equal(0) - }) - - describe('hook', () => { - it('should render without crashing', () => { - // Given - const props = {as: 'h1'} - - // When - const component = - - // Then - const div = document.createElement('div') - ReactDOM.render(component, div) - ReactDOM.unmountComponentAtNode(div) - }) - - it('should NOT render null', () => { - // Given - const props = {} - - // When - const {container} = setup(props) - - // Then - expect(container.innerHTML).to.be.a('string') - expect(container.innerHTML).to.not.have.lengthOf(0) - }) - }) -}) diff --git a/components/hook/use-portal/.gitignore b/components/hook/usePortal/.gitignore similarity index 100% rename from components/hook/use-portal/.gitignore rename to components/hook/usePortal/.gitignore diff --git a/components/hook/use-portal/.npmignore b/components/hook/usePortal/.npmignore similarity index 100% rename from components/hook/use-portal/.npmignore rename to components/hook/usePortal/.npmignore diff --git a/components/hook/use-portal/README.md b/components/hook/usePortal/README.md similarity index 100% rename from components/hook/use-portal/README.md rename to components/hook/usePortal/README.md diff --git a/components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js b/components/hook/usePortal/demo/articles/ArticleCloseOnEvent.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleCloseOnEvent.js rename to components/hook/usePortal/demo/articles/ArticleCloseOnEvent.js diff --git a/components/hook/use-portal/demo/articles/ArticleCustom.js b/components/hook/usePortal/demo/articles/ArticleCustom.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleCustom.js rename to components/hook/usePortal/demo/articles/ArticleCustom.js diff --git a/components/hook/use-portal/demo/articles/ArticleCustom/usePopper.js b/components/hook/usePortal/demo/articles/ArticleCustom/usePopper.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleCustom/usePopper.js rename to components/hook/usePortal/demo/articles/ArticleCustom/usePopper.js diff --git a/components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js b/components/hook/usePortal/demo/articles/ArticleCustom/useTooltip.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleCustom/useTooltip.js rename to components/hook/usePortal/demo/articles/ArticleCustom/useTooltip.js diff --git a/components/hook/use-portal/demo/articles/ArticleDefault.js b/components/hook/usePortal/demo/articles/ArticleDefault.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleDefault.js rename to components/hook/usePortal/demo/articles/ArticleDefault.js diff --git a/components/hook/use-portal/demo/articles/ArticleStateful.js b/components/hook/usePortal/demo/articles/ArticleStateful.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleStateful.js rename to components/hook/usePortal/demo/articles/ArticleStateful.js diff --git a/components/hook/use-portal/demo/articles/ArticleStateless.js b/components/hook/usePortal/demo/articles/ArticleStateless.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleStateless.js rename to components/hook/usePortal/demo/articles/ArticleStateless.js diff --git a/components/hook/use-portal/demo/articles/ArticleTarget.js b/components/hook/usePortal/demo/articles/ArticleTarget.js similarity index 100% rename from components/hook/use-portal/demo/articles/ArticleTarget.js rename to components/hook/usePortal/demo/articles/ArticleTarget.js diff --git a/components/hook/use-portal/demo/index.js b/components/hook/usePortal/demo/index.js similarity index 100% rename from components/hook/use-portal/demo/index.js rename to components/hook/usePortal/demo/index.js diff --git a/components/hook/use-portal/demo/index.scss b/components/hook/usePortal/demo/index.scss similarity index 100% rename from components/hook/use-portal/demo/index.scss rename to components/hook/usePortal/demo/index.scss diff --git a/components/hook/use-portal/demo/package.json b/components/hook/usePortal/demo/package.json similarity index 100% rename from components/hook/use-portal/demo/package.json rename to components/hook/usePortal/demo/package.json diff --git a/components/hook/use-portal/demo/settings.js b/components/hook/usePortal/demo/settings.js similarity index 100% rename from components/hook/use-portal/demo/settings.js rename to components/hook/usePortal/demo/settings.js diff --git a/components/hook/use-portal/package.json b/components/hook/usePortal/package.json similarity index 100% rename from components/hook/use-portal/package.json rename to components/hook/usePortal/package.json diff --git a/components/hook/use-portal/src/index.js b/components/hook/usePortal/src/index.js similarity index 100% rename from components/hook/use-portal/src/index.js rename to components/hook/usePortal/src/index.js diff --git a/components/hook/use-portal/src/index.scss b/components/hook/usePortal/src/index.scss similarity index 100% rename from components/hook/use-portal/src/index.scss rename to components/hook/usePortal/src/index.scss diff --git a/components/hook/use-portal/src/settings.js b/components/hook/usePortal/src/settings.js similarity index 100% rename from components/hook/use-portal/src/settings.js rename to components/hook/usePortal/src/settings.js diff --git a/components/hook/usePortal/test/index.test.js b/components/hook/usePortal/test/index.test.js new file mode 100644 index 0000000000..df7dcc535c --- /dev/null +++ b/components/hook/usePortal/test/index.test.js @@ -0,0 +1,245 @@ +import React, {useRef} from 'react' +import ReactDOM from 'react-dom' + +import chai, {expect} from 'chai' +import chaiDOM from 'chai-dom' +import sinon from 'sinon' + +import {fireEvent} from '@testing-library/react' + +import json from '../package.json' +import * as pkg from '../src/index.js' + +describe(json.name, () => { + const {default: usePortal} = pkg + const Component = ({children, isOpen: isOpenProps, ...handlers}) => { + const targetRef = useRef() + const {Portal, isOpen, open, close, toggle, bind} = usePortal({ + target: targetRef.current, + isOpen: isOpenProps, + ...handlers + }) + + return ( +
    +
    + {children} +
    +
    + + + + +
    + ) + } + + const setup = setupEnvironment(Component) + + it('library should include defined exported elements', () => { + // Given + const library = pkg + const libraryExportedMembers = ['default'] + + // When + const {default: usePortal, ...others} = library + + // Then + expect(Object.keys(library).length).to.equal(libraryExportedMembers.length) + expect(Object.keys(library)).to.have.members(libraryExportedMembers) + expect(Object.keys(others).length).to.equal(0) + }) + + describe('hook', () => { + it('should render without crashing', () => { + // Given + const props = {as: 'h1'} + + // When + const component = + + // Then + const div = document.createElement('div') + ReactDOM.render(component, div) + ReactDOM.unmountComponentAtNode(div) + }) + + it('should first render null', () => { + // Given + const props = {} + + // When + const {container, getByTestId} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + + // Then + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + + it('should add portal to the right place', () => { + // Given + const props = {children: 'portal-content'} + + // When + const {container, rerender, getByTestId} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + + // Then + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + + // When + rerender() + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + }) + + it('given isOpen=false should NOT add portal', () => { + // Given + const props = {children: 'portal-content', isOpen: false} + + // When + const {container, rerender, getByTestId} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + + // Then + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + + // When + rerender() + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + + it('given isOpen=true should add portal', () => { + // Given + const props = {children: 'portal-content', isOpen: true} + + // When + const {container, rerender, getByTestId} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + + // Then + expect(container.innerHTML).to.be.a('string') + expect(container.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + + // When + rerender() + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + }) + + describe('fire events', () => { + it('should fire onClose when it is triggered', () => { + // Given + const spyOnClose = sinon.spy() + const props = {children: 'portal-content', onClose: spyOnClose} + + // When + const {container, rerender, getByTestId} = setup(props) + rerender() + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + + // And + // When + fireEvent.click(getByText(props.children)) + }) + }) + }) +}) From 34625400523cda7345e7d4d99666efa0f4bbd32b Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 3 Oct 2022 10:34:22 +0200 Subject: [PATCH 037/243] feat(components/hook/usePortal): first version --- components/hook/usePortal/demo/index.scss | 2 +- components/hook/usePortal/test/index.test.js | 70 +++++++++++--------- 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/components/hook/usePortal/demo/index.scss b/components/hook/usePortal/demo/index.scss index 798de8267e..0164645161 100644 --- a/components/hook/usePortal/demo/index.scss +++ b/components/hook/usePortal/demo/index.scss @@ -7,4 +7,4 @@ border-width: $bdw-m; border-color: $c-primary; border-style: solid; -} \ No newline at end of file +} diff --git a/components/hook/usePortal/test/index.test.js b/components/hook/usePortal/test/index.test.js index df7dcc535c..b02db1a629 100644 --- a/components/hook/usePortal/test/index.test.js +++ b/components/hook/usePortal/test/index.test.js @@ -1,11 +1,19 @@ +/* + * Remember: YOUR COMPONENT IS DEFINED GLOBALLY + * */ + +/* eslint react/jsx-no-undef:0 */ +/* eslint no-undef:0 */ + +import PropTypes from 'prop-types' import React, {useRef} from 'react' import ReactDOM from 'react-dom' -import chai, {expect} from 'chai' -import chaiDOM from 'chai-dom' -import sinon from 'sinon' +import {/** chai, **/ expect} from 'chai' +// import chaiDOM from 'chai-dom' +// import sinon from 'sinon' -import {fireEvent} from '@testing-library/react' +// import {fireEvent} from '@testing-library/react' import json from '../package.json' import * as pkg from '../src/index.js' @@ -34,6 +42,11 @@ describe(json.name, () => { ) } + Component.propTypes = { + children: PropTypes.node, + isOpen: PropTypes.bool + } + const setup = setupEnvironment(Component) it('library should include defined exported elements', () => { @@ -178,10 +191,10 @@ describe(json.name, () => { const {container, rerender, getByTestId} = setup(props) const portalContainerElement = getByTestId('portal-test-container') const portalContainerOriginElement = getByTestId( - 'portal-test-container-origin' + 'portal-test-container-origin' ) const portalContainerTargetElement = getByTestId( - 'portal-test-container-target' + 'portal-test-container-target' ) // Then @@ -210,35 +223,32 @@ describe(json.name, () => { }) describe('fire events', () => { - it('should fire onClose when it is triggered', () => { + it.skip('should fire onClose when it is triggered', () => { // Given - const spyOnClose = sinon.spy() - const props = {children: 'portal-content', onClose: spyOnClose} - + // const spyOnClose = sinon.spy() + // const props = {children: 'portal-content', onClose: spyOnClose} // When - const {container, rerender, getByTestId} = setup(props) - rerender() - const portalContainerElement = getByTestId('portal-test-container') - const portalContainerOriginElement = getByTestId( - 'portal-test-container-origin' - ) - const portalContainerTargetElement = getByTestId( - 'portal-test-container-target' - ) - + // const {container, rerender, getByTestId, getByText} = setup(props) + // rerender() + // const portalContainerElement = getByTestId('portal-test-container') + // const portalContainerOriginElement = getByTestId( + // 'portal-test-container-origin' + // ) + // const portalContainerTargetElement = getByTestId( + // 'portal-test-container-target' + // ) // Then - expect(portalContainerElement.innerHTML).to.be.a('string') - expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) - - expect(portalContainerOriginElement.innerHTML).to.be.a('string') - expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - - expect(portalContainerTargetElement.innerHTML).to.be.a('string') - expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) - + // expect(portalContainerElement.innerHTML).to.be.a('string') + // expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + // + // expect(portalContainerOriginElement.innerHTML).to.be.a('string') + // expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + // + // expect(portalContainerTargetElement.innerHTML).to.be.a('string') + // expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) // And // When - fireEvent.click(getByText(props.children)) + // fireEvent.click(getByText(props.children)) }) }) }) From 6488d3a2d52d68af134cfd1cc60961b01748f37e Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 08:55:34 +0000 Subject: [PATCH 038/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a84ff23210..8c9d5e2ca4 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.01%25-orange) -![branches](https://shields.io/badge/branches-57.59%25-AA0000) -![functions](https://shields.io/badge/functions-58.85%25-AA0000) -![lines](https://shields.io/badge/lines-73.68%25-orange) +![statements](https://shields.io/badge/statements-71.55%25-orange) +![branches](https://shields.io/badge/branches-56.87%25-AA0000) +![functions](https://shields.io/badge/functions-58.63%25-AA0000) +![lines](https://shields.io/badge/lines-73.38%25-orange) ## ✨ Features From 78db20d2fe8e58f0b061bc0fe0078740c90a7606 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 08:56:47 +0000 Subject: [PATCH 039/243] release(components/hook/usePortal): v1.1.0 [skip ci] --- components/hook/usePortal/CHANGELOG.md | 11 +++++++++++ components/hook/usePortal/package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 components/hook/usePortal/CHANGELOG.md diff --git a/components/hook/usePortal/CHANGELOG.md b/components/hook/usePortal/CHANGELOG.md new file mode 100644 index 0000000000..f2357b83a3 --- /dev/null +++ b/components/hook/usePortal/CHANGELOG.md @@ -0,0 +1,11 @@ +# CHANGELOG + +# 1.1.0 (2022-10-03) + + +### Features + +* **components/hook/usePortal:** first version ([3462540](https://github.com/SUI-Components/sui-components/commit/34625400523cda7345e7d4d99666efa0f4bbd32b)) + + + diff --git a/components/hook/usePortal/package.json b/components/hook/usePortal/package.json index b59e1f5bfc..3355d1a14d 100644 --- a/components/hook/usePortal/package.json +++ b/components/hook/usePortal/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-hook-use-portal", - "version": "1.0.0", + "version": "1.1.0", "description": "", "main": "lib/index.js", "scripts": { From 6492fa12026d9843fe8de9aa767b0101daa19410 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 3 Oct 2022 11:19:12 +0200 Subject: [PATCH 040/243] chore(Root): add issue test template --- .github/ISSUE_TEMPLATE/test.yml | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/test.yml diff --git a/.github/ISSUE_TEMPLATE/test.yml b/.github/ISSUE_TEMPLATE/test.yml new file mode 100644 index 0000000000..ed05361730 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/test.yml @@ -0,0 +1,34 @@ +name: Report a bug / issue +description: Report a bug / issue to help us improve SUI +title: '🧪 ' +labels: [test] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this test addition report! + + Testing purports commitment against users. + - type: input + id: component + attributes: + label: Component + description: Component name + placeholder: component + validations: + required: true + - type: input + id: category + attributes: + label: Category + description: Category name + placeholder: category + validations: + required: true + - type: textarea + attributes: + label: Tests + description: tests needed. + validations: + required: false + From f5d04a29b2d6fbb57b77302ee0f1c6a4168267cc Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 3 Oct 2022 11:22:40 +0200 Subject: [PATCH 041/243] chore(Root): modify the test report --- .github/ISSUE_TEMPLATE/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test.yml b/.github/ISSUE_TEMPLATE/test.yml index ed05361730..e4799c04d1 100644 --- a/.github/ISSUE_TEMPLATE/test.yml +++ b/.github/ISSUE_TEMPLATE/test.yml @@ -1,5 +1,5 @@ -name: Report a bug / issue -description: Report a bug / issue to help us improve SUI +name: Test +description: Report test case title: '🧪 ' labels: [test] body: From 9d2d9a6b343ddcf90810c84340667ef346c35f3b Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 09:54:51 +0000 Subject: [PATCH 042/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8c9d5e2ca4..55c6832e8c 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.55%25-orange) -![branches](https://shields.io/badge/branches-56.87%25-AA0000) -![functions](https://shields.io/badge/functions-58.63%25-AA0000) -![lines](https://shields.io/badge/lines-73.38%25-orange) +![statements](https://shields.io/badge/statements-71.6%25-orange) +![branches](https://shields.io/badge/branches-56.96%25-AA0000) +![functions](https://shields.io/badge/functions-58.83%25-AA0000) +![lines](https://shields.io/badge/lines-73.42%25-orange) ## ✨ Features From c8838dcd409d233b40e1536d00fe8133f1c4d57a Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 09:55:53 +0000 Subject: [PATCH 043/243] release(components/molecule/avatar): v1.15.0 [skip ci] --- components/molecule/avatar/CHANGELOG.md | 9 +++++++++ components/molecule/avatar/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/avatar/CHANGELOG.md b/components/molecule/avatar/CHANGELOG.md index e845b0cf2a..8b8e179243 100644 --- a/components/molecule/avatar/CHANGELOG.md +++ b/components/molecule/avatar/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.15.0 (2022-10-03) + + +### Features + +* **components/molecule/avatar:** Add primitive injector dependency ([014c3c1](https://github.com/SUI-Components/sui-components/commit/014c3c19eb8e5f4039c02e7180ed4b6459f9d2d9)) + + + # 1.14.0 (2022-09-29) diff --git a/components/molecule/avatar/package.json b/components/molecule/avatar/package.json index 918a45a928..87591ea560 100644 --- a/components/molecule/avatar/package.json +++ b/components/molecule/avatar/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-avatar", - "version": "1.14.0", + "version": "1.15.0", "description": "", "main": "lib/index.js", "scripts": { From 4b77543d4c8537d76c136b1b4a234dc31c2183eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Mon, 3 Oct 2022 12:14:55 +0200 Subject: [PATCH 044/243] fix(components/atom/image): update proptype --- components/atom/image/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/image/src/index.js b/components/atom/image/src/index.js index ee28dfb0de..32d617a498 100644 --- a/components/atom/image/src/index.js +++ b/components/atom/image/src/index.js @@ -146,7 +146,7 @@ AtomImage.propTypes = { skeleton: PropTypes.string, /** Spinner (component) displayed while the final image is being loaded */ - spinner: PropTypes.node([PropTypes.element, PropTypes.func]), + spinner: PropTypes.node, /** Icon (component) to be displayed in an Error Box when the image cannot be loaded */ errorIcon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]), From eb4b19abe26578b5fcef26fb061f60e3e070715b Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 10:20:36 +0000 Subject: [PATCH 045/243] release(components/atom/image): v2.16.0 [skip ci] --- components/atom/image/CHANGELOG.md | 9 +++++++++ components/atom/image/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/image/CHANGELOG.md b/components/atom/image/CHANGELOG.md index f6db1b1a5e..8519440acd 100644 --- a/components/atom/image/CHANGELOG.md +++ b/components/atom/image/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.16.0 (2022-10-03) + + +### Bug Fixes + +* **components/atom/image:** update proptype ([4b77543](https://github.com/SUI-Components/sui-components/commit/4b77543d4c8537d76c136b1b4a234dc31c2183eb)) + + + # 2.15.0 (2022-10-01) diff --git a/components/atom/image/package.json b/components/atom/image/package.json index 0614a7a662..0d64e5be3b 100644 --- a/components/atom/image/package.json +++ b/components/atom/image/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-image", - "version": "2.15.0", + "version": "2.16.0", "description": "", "main": "lib/index.js", "scripts": { From dc756099656d26a083d1ad1888be06909f3faac4 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 3 Oct 2022 16:32:25 +0200 Subject: [PATCH 046/243] chore(Root): update the isue templates --- .github/ISSUE_TEMPLATE/demo-improvements.md | 20 ---------- .github/ISSUE_TEMPLATE/demo-improvements.yml | 28 +++++++++++++ .../ISSUE_TEMPLATE/propose-a-new-component.md | 21 ---------- .../propose-a-new-component.yml | 40 +++++++++++++++++++ 4 files changed, 68 insertions(+), 41 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/demo-improvements.md create mode 100644 .github/ISSUE_TEMPLATE/demo-improvements.yml delete mode 100644 .github/ISSUE_TEMPLATE/propose-a-new-component.md create mode 100644 .github/ISSUE_TEMPLATE/propose-a-new-component.yml diff --git a/.github/ISSUE_TEMPLATE/demo-improvements.md b/.github/ISSUE_TEMPLATE/demo-improvements.md deleted file mode 100644 index f97700471e..0000000000 --- a/.github/ISSUE_TEMPLATE/demo-improvements.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Demo Improvements -about: Demo is not following the agreements -title: Component DEMO -labels: '' -assignees: '' - ---- - -# Acceptance Criteria -The `COMPONENT` demo viewed on sui-studio is not following the agreements. -It can be previewed on the following link: - - -# Definition Of DONE - - - -> ### Jira Task - diff --git a/.github/ISSUE_TEMPLATE/demo-improvements.yml b/.github/ISSUE_TEMPLATE/demo-improvements.yml new file mode 100644 index 0000000000..89beb719b8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/demo-improvements.yml @@ -0,0 +1,28 @@ +name: Demo Improvements +description: Demo is not following the agreements +title: 🎨' +labels: [demo] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this new component definition! + - type: textarea + attributes: + label: Acceptance Criteria + description: Please add a clear and concise predefined requirements that must be met to mark a user story complete. + validations: + required: false + - type: textarea + attributes: + label: Definition of done (DOD) + description: An agreed-upon set of items that must be completed before a project or user story can be considered complete + validations: + required: false + - type: textarea + attributes: + label: Additional info + description: Add any other context about the problem here. + validations: + required: false + diff --git a/.github/ISSUE_TEMPLATE/propose-a-new-component.md b/.github/ISSUE_TEMPLATE/propose-a-new-component.md deleted file mode 100644 index 9c2b9d76b8..0000000000 --- a/.github/ISSUE_TEMPLATE/propose-a-new-component.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Propose a new component -about: Do you need a new component? -title: '' -labels: '' -assignees: '' - ---- - -**Is your component proposal related to a problem? Please describe.** -A clear and concise description of what the problem is. - -**Describe the solution you'd like** -A clear and concise description of what you want to have. - -**Describe alternatives you've considered** -Have you considered iterating an existing component? -If so, please add a clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/propose-a-new-component.yml b/.github/ISSUE_TEMPLATE/propose-a-new-component.yml new file mode 100644 index 0000000000..34d7498ef2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/propose-a-new-component.yml @@ -0,0 +1,40 @@ +name: Propose a new component +description: Do you need a new component? +title: 🧱' +labels: [] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this new component definition! + - type: textarea + attributes: + label: Is your component proposal related to a problem? Please describe. + description: Please add a clear and concise description of what the current problem is. + validations: + required: false + - type: textarea + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to have. + validations: + required: false + - type: textarea + attributes: + label: Describe alternatives you've considered + description: | + Have you considered iterating an existing component? + If so, please add a clear and concise description of any alternative solutions or features you've considered. + validations: + required: false + - type: textarea + attributes: + label: Additional context** + description: Add any other context or screenshots about the feature request here. + - type: textarea + attributes: + label: Additional info + description: Add any other context about the problem here. + validations: + required: false + From 95cb5d3ce428c45f8e510fa92af08dbc46e0e6a5 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 3 Oct 2022 16:36:55 +0200 Subject: [PATCH 047/243] chore(Root): improve issue reports --- .github/ISSUE_TEMPLATE/demo-improvements.yml | 2 +- .github/ISSUE_TEMPLATE/propose-a-new-component.yml | 2 +- .github/ISSUE_TEMPLATE/propose-an-improvement.yml | 2 +- .github/ISSUE_TEMPLATE/report-a-bug.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/demo-improvements.yml b/.github/ISSUE_TEMPLATE/demo-improvements.yml index 89beb719b8..683fb6e263 100644 --- a/.github/ISSUE_TEMPLATE/demo-improvements.yml +++ b/.github/ISSUE_TEMPLATE/demo-improvements.yml @@ -1,6 +1,6 @@ name: Demo Improvements description: Demo is not following the agreements -title: 🎨' +title: '🎨 ' labels: [demo] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/propose-a-new-component.yml b/.github/ISSUE_TEMPLATE/propose-a-new-component.yml index 34d7498ef2..1be90126ef 100644 --- a/.github/ISSUE_TEMPLATE/propose-a-new-component.yml +++ b/.github/ISSUE_TEMPLATE/propose-a-new-component.yml @@ -1,6 +1,6 @@ name: Propose a new component description: Do you need a new component? -title: 🧱' +title: '🧱 ' labels: [] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/propose-an-improvement.yml b/.github/ISSUE_TEMPLATE/propose-an-improvement.yml index e25cce2734..60151d748f 100644 --- a/.github/ISSUE_TEMPLATE/propose-an-improvement.yml +++ b/.github/ISSUE_TEMPLATE/propose-an-improvement.yml @@ -1,7 +1,7 @@ name: Improve an existing component description: Suggest to add a new Prop, SCSS Variable and else title: '✨' -labels: [] +labels: [enhancement] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/report-a-bug.yml b/.github/ISSUE_TEMPLATE/report-a-bug.yml index 86a23484a4..b98ae32005 100644 --- a/.github/ISSUE_TEMPLATE/report-a-bug.yml +++ b/.github/ISSUE_TEMPLATE/report-a-bug.yml @@ -1,7 +1,7 @@ name: Report a bug / issue description: Report a bug / issue to help us improve SUI title: '🪲 ' -labels: [] +labels: [bug] body: - type: markdown attributes: From 44d215dcd2e9299e8ba051415c662afaf15f0f85 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Sat, 24 Sep 2022 19:37:45 +0200 Subject: [PATCH 048/243] docs(Root): improve the commit message documentation --- CONTRIBUTING.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 92ab3cf9e0..6b4e4b437d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,6 +19,38 @@ Some base commands (based on sui-studio) you should acknowledge : * `npm run co` to commit your changes with a wizard. * `npm run release` publish all your changes for all packages (once your PR is merge). +## Commit Conventions +Any commit message given has to follow the pattern: +`[TYPE](components/[CATEGORY]/[COMPONENT]): [MESSAGE]` + +valid `[TYPE]`: + +| [TYPE] | description | action | +|----------|--------------------------------------------------------------------------------------------------------------------------|----------------------------------| +| feat | New features on existing components or even new components also. | CI updates the published version | +| fix | Any kind of update which fixes and error or a bug. | CI updates the published version | +| docs | for documentation only changes | | +| refactor | for necesary refactors that never change the behavior and does not affect to the published component results | | +| perf | for necesary performance refactors that never change the behavior and does not affect to the published component results | | +| test | for adding tests | | +| chore | for project structure changes | | +| release | do not use | | + +Ex: + +`feat(component/atom/button): this is a commit message example of a feature in Atom Button Component` + +`fix(component/molecule/inputTags): this is a commit message example of a bug fix in Molecule InputTags Component` + +When merging a PR with that message, the CI will publish a new minor version of AtomButton/InputTags Component in npm. + +`docs(component/atom/image): this is a commit message example of a documentation improvement on Atom Image` + +When merging a PR with that message, the CI will **NOT** publish a new minor version of AtomImage Component in npm. + +## NPM Conventions +We only use major and minor incremental versioning, and never use the patch. + ## Naming Conventions ### Event Handlers From 8aed35f630d035321a9d5a7bbf70e8a8a7dd6f1d Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 3 Oct 2022 17:15:46 +0200 Subject: [PATCH 049/243] chore(Root): update mermaid image sync with node CI workflow --- .github/workflows/node.js.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/node.js.md b/.github/workflows/node.js.md index f101082c1e..e9553c5844 100644 --- a/.github/workflows/node.js.md +++ b/.github/workflows/node.js.md @@ -24,9 +24,12 @@ stateDiagram-v2 check_skip: check-skip jobs_fork_state_start --> assign_pr_owner jobs_fork_state_start --> build + jobs_fork_state_start --> lint jobs_fork_state_start --> testing build --> deploy + lint --> release + lint --> deploy testing --> release testing --> deploy From 1b461d7b8499e14c27327b9466918e3a055f972b Mon Sep 17 00:00:00 2001 From: Carlos Parodi Date: Mon, 3 Oct 2022 18:05:31 +0200 Subject: [PATCH 050/243] feat(components/molecule/dropdownList): replace cloneElement by Injector ISSUES CLOSED: #2331 --- components/molecule/dropdownList/package.json | 1 + .../dropdownList/src/ExtendedChildren.js | 28 +++++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/components/molecule/dropdownList/package.json b/components/molecule/dropdownList/package.json index 2094664c37..de67bdd167 100644 --- a/components/molecule/dropdownList/package.json +++ b/components/molecule/dropdownList/package.json @@ -12,6 +12,7 @@ "@s-ui/react-atom-input": "5", "@s-ui/react-hooks": "1", "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-primitive-injector": "1", "lodash.isequal": "4.5" }, "peerDependencies": { diff --git a/components/molecule/dropdownList/src/ExtendedChildren.js b/components/molecule/dropdownList/src/ExtendedChildren.js index b0c2f7aabb..4e164fba63 100644 --- a/components/molecule/dropdownList/src/ExtendedChildren.js +++ b/components/molecule/dropdownList/src/ExtendedChildren.js @@ -1,8 +1,8 @@ -import {cloneElement} from 'react' - import isEqual from 'lodash.isequal' import PropTypes from 'prop-types' +import Injector from '@s-ui/react-primitive-injector' + const ExtendedChildren = ({ value, children, @@ -24,19 +24,29 @@ const ExtendedChildren = ({ onSelectOptionHandler(...args) typeof onSelectListHandler === 'function' && onSelectListHandler(...args) } - return cloneElement(children, { - ...props, - selected: selectedChild === undefined ? selected : selectedChild, - onSelect: onSelectHandler, - checkbox: checkboxChild === undefined ? checkbox : checkboxChild - }) + return ( + + {children} + + ) } ExtendedChildren.propTypes = { /** selected value */ value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), + /** checkbox contained in all DropdownOption **/ + checkbox: PropTypes.bool, /** each single node to be included in the list (MoleculeDropdownOption) */ - children: PropTypes.node + children: PropTypes.node, + /** callback on select option **/ + onSelect: PropTypes.func } export default ExtendedChildren From 01d811ea44dbda9bd37c2a7edfc4a8016cc546a3 Mon Sep 17 00:00:00 2001 From: Carlos Parodi Date: Mon, 3 Oct 2022 18:23:37 +0200 Subject: [PATCH 051/243] feat(components/molecule/dropdownList): remove unnecesary code --- .../dropdownList/src/ExtendedChildren.js | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/components/molecule/dropdownList/src/ExtendedChildren.js b/components/molecule/dropdownList/src/ExtendedChildren.js index 4e164fba63..9ca263b6f5 100644 --- a/components/molecule/dropdownList/src/ExtendedChildren.js +++ b/components/molecule/dropdownList/src/ExtendedChildren.js @@ -3,34 +3,18 @@ import PropTypes from 'prop-types' import Injector from '@s-ui/react-primitive-injector' -const ExtendedChildren = ({ - value, - children, - onSelect: onSelectListHandler, - checkbox, - ...props -}) => { - const { - value: valueChild, - onSelect: onSelectOptionHandler, - selected: selectedChild, - checkbox: checkboxChild - } = children.props +const ExtendedChildren = ({value, children, onSelect, checkbox, ...props}) => { + const {value: valueChild} = children.props const selected = Array.isArray(value) ? value.some(innerValue => isEqual(valueChild, innerValue)) : isEqual(value, valueChild) - const onSelectHandler = (...args) => { - typeof onSelectOptionHandler === 'function' && - onSelectOptionHandler(...args) - typeof onSelectListHandler === 'function' && onSelectListHandler(...args) - } return ( {children} From b79e726198db88d1517bd266819226d215a3186b Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 20:19:12 +0000 Subject: [PATCH 052/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 55c6832e8c..3c344b354f 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.6%25-orange) -![branches](https://shields.io/badge/branches-56.96%25-AA0000) -![functions](https://shields.io/badge/functions-58.83%25-AA0000) -![lines](https://shields.io/badge/lines-73.42%25-orange) +![statements](https://shields.io/badge/statements-71.64%25-orange) +![branches](https://shields.io/badge/branches-57.06%25-AA0000) +![functions](https://shields.io/badge/functions-58.9%25-AA0000) +![lines](https://shields.io/badge/lines-73.46%25-orange) ## ✨ Features From 4dcba4fabbb3c770cab962a6e9fb9cff10097a08 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 3 Oct 2022 20:20:22 +0000 Subject: [PATCH 053/243] release(components/molecule/dropdownList): v1.33.0 [skip ci] --- components/molecule/dropdownList/CHANGELOG.md | 10 ++++++++++ components/molecule/dropdownList/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/molecule/dropdownList/CHANGELOG.md b/components/molecule/dropdownList/CHANGELOG.md index 209f0eb3cf..dd88ff6672 100644 --- a/components/molecule/dropdownList/CHANGELOG.md +++ b/components/molecule/dropdownList/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.33.0 (2022-10-03) + + +### Features + +* **components/molecule/dropdownList:** remove unnecesary code ([01d811e](https://github.com/SUI-Components/sui-components/commit/01d811ea44dbda9bd37c2a7edfc4a8016cc546a3)) +* **components/molecule/dropdownList:** replace cloneElement by Injector ([1b461d7](https://github.com/SUI-Components/sui-components/commit/1b461d7b8499e14c27327b9466918e3a055f972b)), closes [#2331](https://github.com/SUI-Components/sui-components/issues/2331) + + + # 1.32.0 (2022-07-26) diff --git a/components/molecule/dropdownList/package.json b/components/molecule/dropdownList/package.json index de67bdd167..ea1e3f63c7 100644 --- a/components/molecule/dropdownList/package.json +++ b/components/molecule/dropdownList/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-dropdown-list", - "version": "1.32.0", + "version": "1.33.0", "description": "", "main": "lib/index.js", "scripts": { From 605fc5a33e79f3280980ff8f913a73299f086598 Mon Sep 17 00:00:00 2001 From: Carlos Parodi Date: Mon, 3 Oct 2022 19:06:08 +0200 Subject: [PATCH 054/243] feat(components/molecule/field): refactor Label's conditional in field ISSUES CLOSED: #2334 --- components/molecule/field/src/Label.js | 31 +++++++++++++------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index 1a22712bde..8cb5420b96 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -1,9 +1,9 @@ +import {cloneElement} from 'react' import {isElement} from 'react-is' import PropTypes from 'prop-types' import AtomLabel, {AtomLabelTypes} from '@s-ui/react-atom-label' -import Injector from '@s-ui/react-primitive-injector' import {CLASS_NODE_LABEL_CONTAINER} from './config.js' @@ -15,20 +15,21 @@ const MoleculeLabel = ({ onClick }) => { const innerLabel = () => { - const baseProps = { - type: typeValidationLabel, - name, - onClick - } - - if (label) { - const [Component, providedProps] = isElement(label) - ? [props => {label}, baseProps] - : [AtomLabel, {...baseProps, text: label}] - - return - } else if (nodeLabel) { - return {nodeLabel} + if ((label && isElement(label)) || (label === undefined && nodeLabel)) { + return cloneElement(label === undefined ? nodeLabel : label, { + type: typeValidationLabel, + name, + onClick + }) + } else if (label) { + return ( + + ) } return null } From 1f0d041c59751f969d80ce11f32a87be62cc1404 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 08:48:16 +0200 Subject: [PATCH 055/243] refactor(components/molecule/field): solve conflicts --- components/molecule/field/src/Label.js | 34 +++++++------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index 8cb5420b96..a880ab1676 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -1,35 +1,22 @@ -import {cloneElement} from 'react' import {isElement} from 'react-is' import PropTypes from 'prop-types' -import AtomLabel, {AtomLabelTypes} from '@s-ui/react-atom-label' +import AtomLabel from '@s-ui/react-atom-label' +import Injector from '@s-ui/react-primitive-injector' import {CLASS_NODE_LABEL_CONTAINER} from './config.js' -const MoleculeLabel = ({ - label, - nodeLabel, - type: typeValidationLabel, - name, - onClick -}) => { +const MoleculeLabel = ({label, nodeLabel, ...props}) => { const innerLabel = () => { if ((label && isElement(label)) || (label === undefined && nodeLabel)) { - return cloneElement(label === undefined ? nodeLabel : label, { - type: typeValidationLabel, - name, - onClick - }) - } else if (label) { return ( - + + {label === undefined ? nodeLabel : label} + ) + } else if (label) { + return } return null } @@ -38,10 +25,7 @@ const MoleculeLabel = ({ MoleculeLabel.propTypes = { label: PropTypes.string, - nodeLabel: PropTypes.element, - type: PropTypes.oneOf(Object.values(AtomLabelTypes)), - name: PropTypes.string, - onClick: PropTypes.func + nodeLabel: PropTypes.element } export default MoleculeLabel From 7c05eb2b0923ead87ec54827db272ac09ab9be57 Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sat, 1 Oct 2022 10:37:13 +0200 Subject: [PATCH 056/243] refactor(components/molecule/avatar): Replace cloneElement by injector --- components/molecule/avatar/src/index.js | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/components/molecule/avatar/src/index.js b/components/molecule/avatar/src/index.js index 4ae97864d5..d583abd129 100644 --- a/components/molecule/avatar/src/index.js +++ b/components/molecule/avatar/src/index.js @@ -1,10 +1,4 @@ -import { - Children, - cloneElement, - forwardRef, - isValidElement, - useCallback -} from 'react' +import {forwardRef, useCallback} from 'react' import cx from 'classnames' import PropTypes from 'prop-types' @@ -14,6 +8,7 @@ import AtomSkeleton, { ATOM_SKELETON_ANIMATIONS, ATOM_SKELETON_VARIANTS } from '@s-ui/react-atom-skeleton' +import Injector from '@s-ui/react-primitive-injector' import AvatarBadge, { AVATAR_BADGE_PLACEMENTS, @@ -42,15 +37,12 @@ const MoleculeAvatar = forwardRef( style, isLoading, imageProps = {}, - children: childrenProp, + children, ...others }, forwardedRef ) => { const className = cx(baseClassName, `${baseClassName}--${size}`) - const children = Children.toArray(childrenProp) - .filter(child => isValidElement(child)) - .map(child => cloneElement(child, {size})) const renderContent = useCallback(() => { if (isLoading) { @@ -73,7 +65,7 @@ const MoleculeAvatar = forwardRef( ) : ( fallback )} - {!isLoading && children} + {!isLoading && {children}} ) }, [ From c72b3402d65cad1a467828c4b9de06de29603fb4 Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sun, 2 Oct 2022 22:31:22 +0200 Subject: [PATCH 057/243] fix(components/atom/input): Add input validator function for input type number --- components/atom/input/src/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/atom/input/src/index.js b/components/atom/input/src/index.js index 382998bf1d..20b25c439c 100644 --- a/components/atom/input/src/index.js +++ b/components/atom/input/src/index.js @@ -8,11 +8,29 @@ import Password from './Password/index.js' import {INPUT_SHAPES, TYPES} from './config.js' const AtomInput = forwardRef(({type, ...props}, ref) => { + const checkIfValidNumberInput = event => { + // Check if input type number is valid as input type number doesn't currently work in browsers like Safari and Firefox + // Allowing: Integers | Backspace | Tab | Delete | Left & Right arrow keys + const allowedCharacter = + /(^\d*$)|(Backspace|Tab|Delete|ArrowLeft|ArrowRight)/ + + return !event.key.match(allowedCharacter) && event.preventDefault() + } switch (type) { case 'sui-password': return case 'mask': return + case 'number': + return ( + checkIfValidNumberInput(e)} + /> + ) + default: return } From ff7a1f8a2dad54200423d5e2ef3565f58e466feb Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sun, 2 Oct 2022 22:36:00 +0200 Subject: [PATCH 058/243] refactor(components/atom/input): Update props order --- components/atom/input/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/atom/input/src/index.js b/components/atom/input/src/index.js index 20b25c439c..92e6df93fd 100644 --- a/components/atom/input/src/index.js +++ b/components/atom/input/src/index.js @@ -24,10 +24,10 @@ const AtomInput = forwardRef(({type, ...props}, ref) => { case 'number': return ( checkIfValidNumberInput(e)} ref={ref} - {...props} type={type} - onKeyDown={e => checkIfValidNumberInput(e)} + {...props} /> ) From efb05fb3a58554b21a05385187169bba0c899fcc Mon Sep 17 00:00:00 2001 From: Stefi Rosca Date: Sun, 2 Oct 2022 23:28:58 +0200 Subject: [PATCH 059/243] refactor(components/atom/input): Moved checkIfValidNumberInput to helper file --- components/atom/input/src/helper.js | 7 +++++++ components/atom/input/src/index.js | 9 +-------- 2 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 components/atom/input/src/helper.js diff --git a/components/atom/input/src/helper.js b/components/atom/input/src/helper.js new file mode 100644 index 0000000000..882d809f56 --- /dev/null +++ b/components/atom/input/src/helper.js @@ -0,0 +1,7 @@ +export const checkIfValidNumberInput = event => { + // Check if input type number is valid as input type number doesn't currently work in browsers like Safari and Firefox + // Allowing: Integers | Backspace | Tab | Delete | Left & Right arrow keys + const allowedCharacter = /(^\d*$)|(Backspace|Tab|Delete|ArrowLeft|ArrowRight)/ + + return !event.key.match(allowedCharacter) && event.preventDefault() +} diff --git a/components/atom/input/src/index.js b/components/atom/input/src/index.js index 92e6df93fd..7eed8b90ff 100644 --- a/components/atom/input/src/index.js +++ b/components/atom/input/src/index.js @@ -6,16 +6,9 @@ import Input, {inputSizes, inputStates} from './Input/index.js' import Mask from './Mask/index.js' import Password from './Password/index.js' import {INPUT_SHAPES, TYPES} from './config.js' +import {checkIfValidNumberInput} from './helper.js' const AtomInput = forwardRef(({type, ...props}, ref) => { - const checkIfValidNumberInput = event => { - // Check if input type number is valid as input type number doesn't currently work in browsers like Safari and Firefox - // Allowing: Integers | Backspace | Tab | Delete | Left & Right arrow keys - const allowedCharacter = - /(^\d*$)|(Backspace|Tab|Delete|ArrowLeft|ArrowRight)/ - - return !event.key.match(allowedCharacter) && event.preventDefault() - } switch (type) { case 'sui-password': return From 1e8b676269654e3dd5251b8fbf82e1a9e78d01ae Mon Sep 17 00:00:00 2001 From: Stefania Rosca <30704597+stefi23@users.noreply.github.com> Date: Sun, 2 Oct 2022 23:32:37 +0200 Subject: [PATCH 060/243] Update components/atom/input/src/index.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Andrés --- components/atom/input/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/input/src/index.js b/components/atom/input/src/index.js index 7eed8b90ff..5ae81987c2 100644 --- a/components/atom/input/src/index.js +++ b/components/atom/input/src/index.js @@ -17,7 +17,7 @@ const AtomInput = forwardRef(({type, ...props}, ref) => { case 'number': return ( checkIfValidNumberInput(e)} + onKeyDown={checkIfValidNumberInput} ref={ref} type={type} {...props} From 52f28198912680e1c7697bc527af1f7c1b0ccbb9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 06:57:16 +0000 Subject: [PATCH 061/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3c344b354f..a45919d926 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.64%25-orange) +![statements](https://shields.io/badge/statements-71.54%25-orange) ![branches](https://shields.io/badge/branches-57.06%25-AA0000) -![functions](https://shields.io/badge/functions-58.9%25-AA0000) -![lines](https://shields.io/badge/lines-73.46%25-orange) +![functions](https://shields.io/badge/functions-58.67%25-AA0000) +![lines](https://shields.io/badge/lines-73.36%25-orange) ## ✨ Features From 234144a32a35e2110fbc53de989a09bbc95d8af1 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 06:58:10 +0000 Subject: [PATCH 062/243] release(components/atom/input): v5.22.0 [skip ci] --- components/atom/input/CHANGELOG.md | 9 +++++++++ components/atom/input/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/input/CHANGELOG.md b/components/atom/input/CHANGELOG.md index 8fb06f2a0c..52d0ebbfeb 100644 --- a/components/atom/input/CHANGELOG.md +++ b/components/atom/input/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 5.22.0 (2022-10-04) + + +### Bug Fixes + +* **components/atom/input:** Add input validator function for input type number ([c72b340](https://github.com/SUI-Components/sui-components/commit/c72b3402d65cad1a467828c4b9de06de29603fb4)) + + + # 5.21.0 (2022-08-26) diff --git a/components/atom/input/package.json b/components/atom/input/package.json index c07fe87751..84c5ca087d 100644 --- a/components/atom/input/package.json +++ b/components/atom/input/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-input", - "version": "5.21.0", + "version": "5.22.0", "description": "", "main": "lib/index.js", "scripts": { From b52dc0c4c90dd46dfc0253c132af49b7fe318e3f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 06:58:17 +0000 Subject: [PATCH 063/243] release(components/molecule/field): v1.35.0 [skip ci] --- components/molecule/field/CHANGELOG.md | 9 +++++++++ components/molecule/field/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/field/CHANGELOG.md b/components/molecule/field/CHANGELOG.md index 105767084a..bf26f72d83 100644 --- a/components/molecule/field/CHANGELOG.md +++ b/components/molecule/field/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.35.0 (2022-10-04) + + +### Features + +* **components/molecule/field:** refactor Label's conditional in field ([605fc5a](https://github.com/SUI-Components/sui-components/commit/605fc5a33e79f3280980ff8f913a73299f086598)), closes [#2334](https://github.com/SUI-Components/sui-components/issues/2334) + + + # 1.34.0 (2022-06-23) diff --git a/components/molecule/field/package.json b/components/molecule/field/package.json index 71446a74d9..d15be89cb2 100644 --- a/components/molecule/field/package.json +++ b/components/molecule/field/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-field", - "version": "1.34.0", + "version": "1.35.0", "description": "", "main": "lib/index.js", "scripts": { From dee7ab8692fc52bd36d56f3cf880db7fd4ebe516 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Tue, 4 Oct 2022 11:55:35 +0200 Subject: [PATCH 064/243] fix(components/molecule/field):less strict label validation --- components/molecule/field/src/Label.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index a880ab1676..4edf0a42c8 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -9,10 +9,10 @@ import {CLASS_NODE_LABEL_CONTAINER} from './config.js' const MoleculeLabel = ({label, nodeLabel, ...props}) => { const innerLabel = () => { - if ((label && isElement(label)) || (label === undefined && nodeLabel)) { + if ((label && isElement(label)) || (!label && nodeLabel)) { return ( - {label === undefined ? nodeLabel : label} + {!label ? nodeLabel : label} ) } else if (label) { From 76b87574da9703888a202d97ba9c5811e33a9386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Tue, 4 Oct 2022 12:00:23 +0200 Subject: [PATCH 065/243] refactor(components/molecule/field):lint --- components/molecule/field/src/Label.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index 4edf0a42c8..e0d3d98793 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -11,9 +11,7 @@ const MoleculeLabel = ({label, nodeLabel, ...props}) => { const innerLabel = () => { if ((label && isElement(label)) || (!label && nodeLabel)) { return ( - - {!label ? nodeLabel : label} - + {!label ? nodeLabel : label} ) } else if (label) { return From 9f56f8bfee58813850bc68492b8696d97098f4c4 Mon Sep 17 00:00:00 2001 From: Rafa Moral Date: Tue, 4 Oct 2022 12:03:24 +0200 Subject: [PATCH 066/243] fix(components/molecule/field): fix lint error --- components/molecule/field/src/Label.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index e0d3d98793..6b65128cb6 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -10,9 +10,7 @@ import {CLASS_NODE_LABEL_CONTAINER} from './config.js' const MoleculeLabel = ({label, nodeLabel, ...props}) => { const innerLabel = () => { if ((label && isElement(label)) || (!label && nodeLabel)) { - return ( - {!label ? nodeLabel : label} - ) + return {!label ? nodeLabel : label} } else if (label) { return } From eb878d2bf15eba30047b14891f6a42d80096136f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 10:10:17 +0000 Subject: [PATCH 067/243] release(components/molecule/field): v1.36.0 [skip ci] --- components/molecule/field/CHANGELOG.md | 9 +++++++++ components/molecule/field/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/field/CHANGELOG.md b/components/molecule/field/CHANGELOG.md index bf26f72d83..273dbd7d5a 100644 --- a/components/molecule/field/CHANGELOG.md +++ b/components/molecule/field/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.36.0 (2022-10-04) + + +### Bug Fixes + +* **components/molecule/field:** fix lint error ([9f56f8b](https://github.com/SUI-Components/sui-components/commit/9f56f8bfee58813850bc68492b8696d97098f4c4)) + + + # 1.35.0 (2022-10-04) diff --git a/components/molecule/field/package.json b/components/molecule/field/package.json index d15be89cb2..140b50f82d 100644 --- a/components/molecule/field/package.json +++ b/components/molecule/field/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-field", - "version": "1.35.0", + "version": "1.36.0", "description": "", "main": "lib/index.js", "scripts": { From e378505c0bdde3058ac0c2b542a41a41d11fac8d Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:04:51 +0200 Subject: [PATCH 068/243] docs(Root): upgrade demo versions --- components/molecule/photoUploader/demo/package.json | 2 +- components/molecule/selectField/demo/package.json | 2 +- components/molecule/selectPopover/demo/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/molecule/photoUploader/demo/package.json b/components/molecule/photoUploader/demo/package.json index 3347b27be7..9a78a21592 100644 --- a/components/molecule/photoUploader/demo/package.json +++ b/components/molecule/photoUploader/demo/package.json @@ -12,7 +12,7 @@ "license": "ISC", "dependencies": { "@s-ui/react-atom-button": "1", - "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-molecule-select": "1" } } diff --git a/components/molecule/selectField/demo/package.json b/components/molecule/selectField/demo/package.json index 6aaac19f57..f66d073fa0 100644 --- a/components/molecule/selectField/demo/package.json +++ b/components/molecule/selectField/demo/package.json @@ -12,7 +12,7 @@ "license": "ISC", "dependencies": { "@s-ui/hoc": "1", - "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-molecule-field": "1", "@s-ui/react-molecule-select": "1" } diff --git a/components/molecule/selectPopover/demo/package.json b/components/molecule/selectPopover/demo/package.json index fcdfd82e15..c12143910c 100644 --- a/components/molecule/selectPopover/demo/package.json +++ b/components/molecule/selectPopover/demo/package.json @@ -12,7 +12,7 @@ "license": "ISC", "dependencies": { "@s-ui/react-icons": "1", - "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-molecule-modal": "1", "@s-ui/react-molecule-select": "1" } From e05859e6135cf0400b616705dce25c0f00a89c2f Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:05:42 +0200 Subject: [PATCH 069/243] feat(components/molecule/select): upgrade dropdownOption version --- components/molecule/select/demo/package.json | 2 +- components/molecule/select/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/molecule/select/demo/package.json b/components/molecule/select/demo/package.json index 0ba8ff5989..b562f0365e 100644 --- a/components/molecule/select/demo/package.json +++ b/components/molecule/select/demo/package.json @@ -12,6 +12,6 @@ "license": "ISC", "dependencies": { "@s-ui/hoc": "1", - "@s-ui/react-molecule-dropdown-option": "1" + "@s-ui/react-molecule-dropdown-option": "2" } } diff --git a/components/molecule/select/package.json b/components/molecule/select/package.json index c9887d8beb..f220aac065 100644 --- a/components/molecule/select/package.json +++ b/components/molecule/select/package.json @@ -12,7 +12,7 @@ "@s-ui/js": "2", "@s-ui/react-atom-input": "5", "@s-ui/react-hooks": "1", - "@s-ui/react-molecule-dropdown-list": "1", + "@s-ui/react-molecule-dropdown-list": "2", "@s-ui/react-molecule-input-tags": "2", "@s-ui/react-primitive-injector": "1" }, From c6e900e197cccbf7a85e55e7b794333e9da3e997 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:06:27 +0200 Subject: [PATCH 070/243] feat(components/molecule/dropdownOption): change prop naming following conventions --- components/molecule/dropdownOption/package.json | 2 +- .../dropdownOption/src/handlersFactory/index.js | 12 ++++++------ components/molecule/dropdownOption/src/index.js | 11 +++++++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/components/molecule/dropdownOption/package.json b/components/molecule/dropdownOption/package.json index 52ccd33a12..9713335461 100644 --- a/components/molecule/dropdownOption/package.json +++ b/components/molecule/dropdownOption/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-dropdown-option", - "version": "1.45.0", + "version": "2.0.0", "description": "", "main": "lib/index.js", "scripts": { diff --git a/components/molecule/dropdownOption/src/handlersFactory/index.js b/components/molecule/dropdownOption/src/handlersFactory/index.js index 4de11bdb91..6037722ea5 100644 --- a/components/molecule/dropdownOption/src/handlersFactory/index.js +++ b/components/molecule/dropdownOption/src/handlersFactory/index.js @@ -1,7 +1,7 @@ const handlersFactory = ({ disabled = false, onSelect, - onSelectKey = 'Enter', + selectKey = 'Enter', selected, setInnerSelected, value @@ -14,11 +14,11 @@ const handlersFactory = ({ } const handleKeyDown = ev => { const {key} = ev - const isStringOnSelectKey = typeof onSelectKey === 'string' - const isPressedOnSelectKey = isStringOnSelectKey - ? key === onSelectKey - : onSelectKey.includes(key) - if (isPressedOnSelectKey && !disabled) { + const isStringSelectKey = typeof selectKey === 'string' + const isPressedSelectKey = isStringSelectKey + ? key === selectKey + : selectKey.includes(key) + if (isPressedSelectKey && !disabled) { ev.preventDefault() onSelect(ev, {value, selected: !selected}) setInnerSelected(!selected) diff --git a/components/molecule/dropdownOption/src/index.js b/components/molecule/dropdownOption/src/index.js index 2e30941887..4f893bcf65 100644 --- a/components/molecule/dropdownOption/src/index.js +++ b/components/molecule/dropdownOption/src/index.js @@ -35,7 +35,7 @@ const MoleculeDropdownOption = forwardRef( highlightQuery, highlightValue, innerRef, - onSelectKey, + selectKey, onSelect, selected, defaultSelected, @@ -72,7 +72,7 @@ const MoleculeDropdownOption = forwardRef( ]) const {handleClick, handleKeyDown, handleFocus} = handlersFactory({ disabled, - onSelectKey, + selectKey, onSelect, selected: innerSelected, setInnerSelected, @@ -179,7 +179,10 @@ MoleculeDropdownOption.propTypes = { /** Text to be display if used with highlight query with custom content */ highlightValue: PropTypes.string, /* key to provoke the onClick callback. Valid any value defined here → https://www.w3.org/TR/uievents-key/#named-key-attribute-values */ - onSelectKey: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), + selectKey: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.arrayOf(PropTypes.string) + ]), /** Custom ref handler that will be assigned to the "target" element */ innerRef: PropTypes.object, /** Text with css clamp = 2 */ @@ -193,7 +196,7 @@ MoleculeDropdownOption.defaultProps = { disabled: false, onSelect: () => {}, defaultSelected: false, - onSelectKey: 'Enter', + selectKey: 'Enter', innerRef: createRef() } export default MoleculeDropdownOption From 6d1788c8b2df523ab806dd88069a380292b48162 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:07:03 +0200 Subject: [PATCH 071/243] feat(components/molecule/dropdownList): upgrade dropdownOption version --- components/molecule/dropdownList/demo/package.json | 2 +- components/molecule/dropdownList/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/molecule/dropdownList/demo/package.json b/components/molecule/dropdownList/demo/package.json index e2c1c085ae..fc3995f62c 100644 --- a/components/molecule/dropdownList/demo/package.json +++ b/components/molecule/dropdownList/demo/package.json @@ -11,6 +11,6 @@ "author": "", "license": "ISC", "dependencies": { - "@s-ui/react-molecule-dropdown-option": "1" + "@s-ui/react-molecule-dropdown-option": "2" } } diff --git a/components/molecule/dropdownList/package.json b/components/molecule/dropdownList/package.json index ea1e3f63c7..586f0a397b 100644 --- a/components/molecule/dropdownList/package.json +++ b/components/molecule/dropdownList/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-dropdown-list", - "version": "1.33.0", + "version": "2.0.0", "description": "", "main": "lib/index.js", "scripts": { @@ -11,7 +11,7 @@ "dependencies": { "@s-ui/react-atom-input": "5", "@s-ui/react-hooks": "1", - "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-primitive-injector": "1", "lodash.isequal": "4.5" }, From 484a9999fa2eace0fcaf27f73d37872b3d1ca208 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:13:07 +0200 Subject: [PATCH 072/243] feat(components/molecule/select): set new prop name following conventions --- components/molecule/select/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/select/src/index.js b/components/molecule/select/src/index.js index bffe13fbb2..ee9c8b0744 100644 --- a/components/molecule/select/src/index.js +++ b/components/molecule/select/src/index.js @@ -57,7 +57,7 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { refsMoleculeSelectOptions.current[index] = createRef() return cloneElement(child, { innerRef: refsMoleculeSelectOptions.current[index], - onSelectKey: keysSelection + selectKey: keysSelection }) }) From 5e00fc0117bac4c92119440e36f40372b38c5d4d Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:18:18 +0200 Subject: [PATCH 073/243] chore(components/molecule/autosuggestField): upgrade versions --- components/molecule/autosuggestField/demo/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/autosuggestField/demo/package.json b/components/molecule/autosuggestField/demo/package.json index 8d1ed9e8ca..9bb12b8aec 100644 --- a/components/molecule/autosuggestField/demo/package.json +++ b/components/molecule/autosuggestField/demo/package.json @@ -13,7 +13,7 @@ "dependencies": { "@s-ui/hoc": "1", "@s-ui/react-molecule-autosuggest": "1", - "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-molecule-field": "1" } } From 01facc9fb7058abda63dc9667fabee5cf44d8d36 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 4 Oct 2022 13:24:13 +0200 Subject: [PATCH 074/243] feat(components/molecule/autosuggest): update the dropdownOption new prop name --- .../molecule/autosuggest/demo/package.json | 2 +- components/molecule/autosuggest/package.json | 2 +- components/molecule/autosuggest/src/index.js | 23 +++++++++++++++---- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/components/molecule/autosuggest/demo/package.json b/components/molecule/autosuggest/demo/package.json index 8e41c8acb2..cf9206a5b1 100644 --- a/components/molecule/autosuggest/demo/package.json +++ b/components/molecule/autosuggest/demo/package.json @@ -15,7 +15,7 @@ "@s-ui/react-atom-button": "1", "@s-ui/react-atom-icon": "1", "@s-ui/react-molecule-autosuggest-field": "2", - "@s-ui/react-molecule-dropdown-option": "1", + "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-molecule-input-tags": "2", "@s-ui/react-molecule-select": "1", "axios": "0.21.4" diff --git a/components/molecule/autosuggest/package.json b/components/molecule/autosuggest/package.json index 050c823c40..b85b549f1b 100644 --- a/components/molecule/autosuggest/package.json +++ b/components/molecule/autosuggest/package.json @@ -12,7 +12,7 @@ "@s-ui/js": "2", "@s-ui/react-atom-input": "5", "@s-ui/react-hooks": "1", - "@s-ui/react-molecule-dropdown-list": "1", + "@s-ui/react-molecule-dropdown-list": "2", "@s-ui/react-molecule-input-tags": "2", "@s-ui/react-primitive-injector": "1", "lodash.isequal": "4.5" diff --git a/components/molecule/autosuggest/src/index.js b/components/molecule/autosuggest/src/index.js index 083de1d291..f47e016072 100644 --- a/components/molecule/autosuggest/src/index.js +++ b/components/molecule/autosuggest/src/index.js @@ -81,7 +81,7 @@ const MoleculeAutosuggest = ({ refsMoleculeAutosuggestOptions.current[index] = createRef() return cloneElement(child, { innerRef: refsMoleculeAutosuggestOptions.current[index], - onSelectKey: keysSelection + selectKey: keysSelection }) }) @@ -117,7 +117,6 @@ const MoleculeAutosuggest = ({ ev.persist() const {current: domInnerInput} = refMoleculeAutosuggestInput const {current: optionsFromRef} = refsMoleculeAutosuggestOptions - const {current: innerRefInput} = innerRefMoleculeAutosuggestInput const {key} = ev const options = optionsFromRef.map(getTarget) @@ -137,7 +136,7 @@ const MoleculeAutosuggest = ({ else if (isSomeOptionFocused) handleFocusIn(ev) if (key === 'Enter') { typeof onEnter === 'function' && onEnter(ev) - innerRefInput && (!isControlled || autoClose) && innerRefInput.focus() + handleFocusInput() } } } @@ -180,8 +179,22 @@ const MoleculeAutosuggest = ({ } const handleClick = () => { + handleFocusInput() + } + + const handleFocusInput = () => { const {current: innerRefInput} = innerRefMoleculeAutosuggestInput - innerRefInput && (!isControlled || autoClose) && innerRefInput.focus() + if (innerRefInput && (!isControlled || autoClose)) { + innerRefInput.focus() + } + } + + const handleClear = ev => { + ev.stopPropagation() + handleFocusInput() + if (onClear) { + onClear(ev) + } } const autosuggestSelectionProps = { @@ -196,7 +209,7 @@ const MoleculeAutosuggest = ({ keysSelection, onBlur, onChange, - onClear, + onClear: handleClear, onEnter, onFocus, onInputKeyDown: handleInputKeyDown, From f145bd96bcd5725182139322c18a97f1a31c7731 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 14:57:32 +0000 Subject: [PATCH 075/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a45919d926..1eaf6bad15 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.54%25-orange) -![branches](https://shields.io/badge/branches-57.06%25-AA0000) -![functions](https://shields.io/badge/functions-58.67%25-AA0000) -![lines](https://shields.io/badge/lines-73.36%25-orange) +![statements](https://shields.io/badge/statements-71.43%25-orange) +![branches](https://shields.io/badge/branches-57.08%25-AA0000) +![functions](https://shields.io/badge/functions-58.53%25-AA0000) +![lines](https://shields.io/badge/lines-73.24%25-orange) ## ✨ Features From ab1bff0e03a22c62040cbd74f52a86912a8a46cd Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 14:58:40 +0000 Subject: [PATCH 076/243] release(components/molecule/autosuggest): v2.66.0 [skip ci] --- components/molecule/autosuggest/CHANGELOG.md | 9 +++++++++ components/molecule/autosuggest/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/autosuggest/CHANGELOG.md b/components/molecule/autosuggest/CHANGELOG.md index 036fc81316..c5ac8b9380 100644 --- a/components/molecule/autosuggest/CHANGELOG.md +++ b/components/molecule/autosuggest/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.66.0 (2022-10-04) + + +### Features + +* **components/molecule/autosuggest:** update the dropdownOption new prop name ([01facc9](https://github.com/SUI-Components/sui-components/commit/01facc9fb7058abda63dc9667fabee5cf44d8d36)) + + + # 2.65.0 (2022-08-22) diff --git a/components/molecule/autosuggest/package.json b/components/molecule/autosuggest/package.json index b85b549f1b..e74bba9fd6 100644 --- a/components/molecule/autosuggest/package.json +++ b/components/molecule/autosuggest/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-autosuggest", - "version": "2.65.0", + "version": "2.66.0", "description": "", "main": "lib/index.js", "scripts": { From 6b337127af3f2facb97c5e53228ec1f2506b7d0d Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 14:58:50 +0000 Subject: [PATCH 077/243] release(components/molecule/dropdownList): v2.1.0 [skip ci] --- components/molecule/dropdownList/CHANGELOG.md | 9 +++++++++ components/molecule/dropdownList/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/dropdownList/CHANGELOG.md b/components/molecule/dropdownList/CHANGELOG.md index dd88ff6672..d8598b0ad5 100644 --- a/components/molecule/dropdownList/CHANGELOG.md +++ b/components/molecule/dropdownList/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.1.0 (2022-10-04) + + +### Features + +* **components/molecule/dropdownList:** upgrade dropdownOption version ([6d1788c](https://github.com/SUI-Components/sui-components/commit/6d1788c8b2df523ab806dd88069a380292b48162)) + + + # 1.33.0 (2022-10-03) diff --git a/components/molecule/dropdownList/package.json b/components/molecule/dropdownList/package.json index 586f0a397b..4a7f5e8273 100644 --- a/components/molecule/dropdownList/package.json +++ b/components/molecule/dropdownList/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-dropdown-list", - "version": "2.0.0", + "version": "2.1.0", "description": "", "main": "lib/index.js", "scripts": { From 8b4f212a59dd91300bdfa56c6a9b526710994f96 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 14:58:59 +0000 Subject: [PATCH 078/243] release(components/molecule/dropdownOption): v2.1.0 [skip ci] --- components/molecule/dropdownOption/CHANGELOG.md | 9 +++++++++ components/molecule/dropdownOption/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/dropdownOption/CHANGELOG.md b/components/molecule/dropdownOption/CHANGELOG.md index eb92ab45ca..52317137af 100644 --- a/components/molecule/dropdownOption/CHANGELOG.md +++ b/components/molecule/dropdownOption/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.1.0 (2022-10-04) + + +### Features + +* **components/molecule/dropdownOption:** change prop naming following conventions ([c6e900e](https://github.com/SUI-Components/sui-components/commit/c6e900e197cccbf7a85e55e7b794333e9da3e997)) + + + # 1.45.0 (2022-07-22) diff --git a/components/molecule/dropdownOption/package.json b/components/molecule/dropdownOption/package.json index 9713335461..05b5d7b301 100644 --- a/components/molecule/dropdownOption/package.json +++ b/components/molecule/dropdownOption/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-dropdown-option", - "version": "2.0.0", + "version": "2.1.0", "description": "", "main": "lib/index.js", "scripts": { From e0061cdc9c51f45d78bc55995302f89de43916f9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 4 Oct 2022 14:59:08 +0000 Subject: [PATCH 079/243] release(components/molecule/select): v1.56.0 [skip ci] --- components/molecule/select/CHANGELOG.md | 10 ++++++++++ components/molecule/select/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/molecule/select/CHANGELOG.md b/components/molecule/select/CHANGELOG.md index 1c9e1a45d7..c3fcf5c6fb 100644 --- a/components/molecule/select/CHANGELOG.md +++ b/components/molecule/select/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.56.0 (2022-10-04) + + +### Features + +* **components/molecule/select:** set new prop name following conventions ([484a999](https://github.com/SUI-Components/sui-components/commit/484a9999fa2eace0fcaf27f73d37872b3d1ca208)) +* **components/molecule/select:** upgrade dropdownOption version ([e05859e](https://github.com/SUI-Components/sui-components/commit/e05859e6135cf0400b616705dce25c0f00a89c2f)) + + + # 1.55.0 (2022-07-29) diff --git a/components/molecule/select/package.json b/components/molecule/select/package.json index f220aac065..4a3e655c35 100644 --- a/components/molecule/select/package.json +++ b/components/molecule/select/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select", - "version": "1.55.0", + "version": "1.56.0", "description": "", "main": "lib/index.js", "scripts": { From 0af4cb1dfb0d3870523433282eec4056827c4917 Mon Sep 17 00:00:00 2001 From: Wermeille Bastien Date: Tue, 4 Oct 2022 10:56:05 +0200 Subject: [PATCH 080/243] Add title props for image component --- components/atom/image/src/types.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/atom/image/src/types.js b/components/atom/image/src/types.js index 8f121030f6..5ecc76ac0e 100644 --- a/components/atom/image/src/types.js +++ b/components/atom/image/src/types.js @@ -12,7 +12,8 @@ const htmlImgProps = { sizes: PropTypes.string, srcset: PropTypes.string, usemap: PropTypes.string, - width: PropTypes.string + width: PropTypes.string, + title: PropTypes.string } export {htmlImgProps} From d220860d0fcf514b87386b841471f806b368f68d Mon Sep 17 00:00:00 2001 From: Wermeille Bastien Date: Tue, 4 Oct 2022 11:04:37 +0200 Subject: [PATCH 081/243] Update image component readme --- components/atom/image/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/components/atom/image/README.md b/components/atom/image/README.md index 2ca431e149..6a3200fb7b 100644 --- a/components/atom/image/README.md +++ b/components/atom/image/README.md @@ -26,12 +26,23 @@ import AtomImage from '@s-ui/react-atom-image' /> ``` +### With a title + +```javascript + +``` + ### With skeleton while loading ```javascript ``` @@ -42,6 +53,7 @@ import AtomImage from '@s-ui/react-atom-image' ``` @@ -52,6 +64,7 @@ import AtomImage from '@s-ui/react-atom-image' ``` @@ -62,6 +75,7 @@ import AtomImage from '@s-ui/react-atom-image' @@ -75,6 +89,7 @@ Loads 50x50 image when the viewport is under 480px, elsewise it loads a 150x150 Date: Tue, 4 Oct 2022 23:04:18 +0200 Subject: [PATCH 082/243] Reorder image props --- components/atom/image/src/types.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/atom/image/src/types.js b/components/atom/image/src/types.js index 5ecc76ac0e..9ecf420d98 100644 --- a/components/atom/image/src/types.js +++ b/components/atom/image/src/types.js @@ -11,9 +11,9 @@ const htmlImgProps = { referrerpolicy: PropTypes.string, sizes: PropTypes.string, srcset: PropTypes.string, + title: PropTypes.string, usemap: PropTypes.string, - width: PropTypes.string, - title: PropTypes.string + width: PropTypes.string } export {htmlImgProps} From f41967ec354662dcc551562ccfe75aa729aff29e Mon Sep 17 00:00:00 2001 From: andresin87 Date: Thu, 6 Oct 2022 12:13:08 +0200 Subject: [PATCH 083/243] feat(components/atom/helpText): admit react nodes as a text --- components/atom/helpText/demo/InputDemo.js | 17 ----- .../ArticleCheckbox.js} | 14 +++-- .../helpText/demo/articles/ArticleInput.js | 27 ++++++++ .../ArticleTextArea.js} | 14 +++-- components/atom/helpText/demo/index.js | 13 ++-- components/atom/helpText/demo/package.json | 1 + components/atom/helpText/demo/settings.js | 17 +++++ components/atom/helpText/package.json | 3 +- components/atom/helpText/src/index.js | 19 +++++- .../demo/articles/ArticleDefault.js | 57 +++++++++++++++++ .../demo/articles/ArticleNodes.js | 63 +++++++++++++++++++ 11 files changed, 211 insertions(+), 34 deletions(-) delete mode 100644 components/atom/helpText/demo/InputDemo.js rename components/atom/helpText/demo/{CheckboxDemo.js => articles/ArticleCheckbox.js} (68%) create mode 100644 components/atom/helpText/demo/articles/ArticleInput.js rename components/atom/helpText/demo/{TextareaDemo.js => articles/ArticleTextArea.js} (53%) create mode 100644 components/atom/helpText/demo/settings.js create mode 100644 components/atom/validationText/demo/articles/ArticleDefault.js create mode 100644 components/atom/validationText/demo/articles/ArticleNodes.js diff --git a/components/atom/helpText/demo/InputDemo.js b/components/atom/helpText/demo/InputDemo.js deleted file mode 100644 index 921d3e1e4a..0000000000 --- a/components/atom/helpText/demo/InputDemo.js +++ /dev/null @@ -1,17 +0,0 @@ -import {Article, Code, H2, Paragraph} from '@s-ui/documentation-library' -import AtomInput from '@s-ui/react-atom-input' - -import AtomHelpText from '../src/index.js' - -const InputDemo = () => ( -
    -

    Text

    - - The prop text is used to set the text included in. - - - -
    -) - -export default InputDemo diff --git a/components/atom/helpText/demo/CheckboxDemo.js b/components/atom/helpText/demo/articles/ArticleCheckbox.js similarity index 68% rename from components/atom/helpText/demo/CheckboxDemo.js rename to components/atom/helpText/demo/articles/ArticleCheckbox.js index 778cac64bc..0888169bda 100644 --- a/components/atom/helpText/demo/CheckboxDemo.js +++ b/components/atom/helpText/demo/articles/ArticleCheckbox.js @@ -1,16 +1,18 @@ import {useState} from 'react' +import PropTypes from 'prop-types' + import {Article, H2} from '@s-ui/documentation-library' import AtomCheckbox from '@s-ui/react-atom-checkbox' import AtomLabel from '@s-ui/react-atom-label' -import AtomHelpText from '../src/index.js' +import AtomHelpText from '../../src/index.js' -const CheckboxDemo = () => { +const ArticleCheckbox = ({className}) => { const [isChecked, setIsChecked] = useState(false) return ( -
    +

    Checkbox

    { ) } -export default CheckboxDemo +ArticleCheckbox.propTypes = { + className: PropTypes.string +} + +export default ArticleCheckbox diff --git a/components/atom/helpText/demo/articles/ArticleInput.js b/components/atom/helpText/demo/articles/ArticleInput.js new file mode 100644 index 0000000000..d384ec12fd --- /dev/null +++ b/components/atom/helpText/demo/articles/ArticleInput.js @@ -0,0 +1,27 @@ +import PropTypes from 'prop-types' + +import {Article, Code, H2, Paragraph} from '@s-ui/documentation-library' +import AtomInput from '@s-ui/react-atom-input' + +import AtomHelpText from '../../src/index.js' +import {nodeText} from '../settings.js' + +const ArticleInput = ({className}) => ( +
    +

    Text

    + + The prop text is used to set the text included in. + + + + The component also admits a react node as a text + + +
    +) + +ArticleInput.propTypes = { + className: PropTypes.string +} + +export default ArticleInput diff --git a/components/atom/helpText/demo/TextareaDemo.js b/components/atom/helpText/demo/articles/ArticleTextArea.js similarity index 53% rename from components/atom/helpText/demo/TextareaDemo.js rename to components/atom/helpText/demo/articles/ArticleTextArea.js index d491bcfbed..9e3d262e95 100644 --- a/components/atom/helpText/demo/TextareaDemo.js +++ b/components/atom/helpText/demo/articles/ArticleTextArea.js @@ -1,14 +1,20 @@ +import PropTypes from 'prop-types' + import {Article, H2} from '@s-ui/documentation-library' import AtomTextarea from '@s-ui/react-atom-textarea' -import AtomHelpText from '../src/index.js' +import AtomHelpText from '../../src/index.js' -const TextareaDemo = () => ( -
    +const ArticleTextArea = ({className}) => ( +

    Text-area

    ) -export default TextareaDemo +ArticleTextArea.propTypes = { + className: PropTypes.string +} + +export default ArticleTextArea diff --git a/components/atom/helpText/demo/index.js b/components/atom/helpText/demo/index.js index 92a0cd43fd..c4ce176913 100644 --- a/components/atom/helpText/demo/index.js +++ b/components/atom/helpText/demo/index.js @@ -2,9 +2,10 @@ import {H1, Paragraph} from '@s-ui/documentation-library' -import CheckboxDemo from './CheckboxDemo.js' -import InputDemo from './InputDemo.js' -import TextareaDemo from './TextareaDemo.js' +import ArticleCheckbox from './articles/ArticleCheckbox.js' +import ArticleInput from './articles/ArticleInput.js' +import ArticleTextArea from './articles/ArticleTextArea.js' +import {CLASS_SECTION} from './settings.js' import './index.scss' @@ -16,11 +17,11 @@ const Demo = () => { Help Text is a feedback that the system gives users to make them clearly understand which information is required - +
    - +
    - +
    ) } diff --git a/components/atom/helpText/demo/package.json b/components/atom/helpText/demo/package.json index b876d031b2..9c30b8a8d3 100644 --- a/components/atom/helpText/demo/package.json +++ b/components/atom/helpText/demo/package.json @@ -12,6 +12,7 @@ "license": "ISC", "dependencies": { "@s-ui/react-atom-checkbox": "2", + "@s-ui/react-atom-icon": "1", "@s-ui/react-atom-input": "5", "@s-ui/react-atom-label": "1", "@s-ui/react-atom-textarea": "2" diff --git a/components/atom/helpText/demo/settings.js b/components/atom/helpText/demo/settings.js new file mode 100644 index 0000000000..6c37233a1c --- /dev/null +++ b/components/atom/helpText/demo/settings.js @@ -0,0 +1,17 @@ +import {AntDesignIcon} from '@s-ui/documentation-library' +import AtomIcon from '@s-ui/react-atom-icon' + +export const BASE_CLASS_DEMO = `DemoHelpText` +export const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` + +export const checkIcon = ( + + + +) + +export const nodeText = ( + + node text{checkIcon} + +) diff --git a/components/atom/helpText/package.json b/components/atom/helpText/package.json index e02c04c255..681fb89b4d 100644 --- a/components/atom/helpText/package.json +++ b/components/atom/helpText/package.json @@ -9,7 +9,8 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "@s-ui/component-dependencies": "1" + "@s-ui/component-dependencies": "1", + "@s-ui/react-primitive-injector": "1" }, "keywords": [], "author": "", diff --git a/components/atom/helpText/src/index.js b/components/atom/helpText/src/index.js index 3e8602f471..63c84fb15f 100644 --- a/components/atom/helpText/src/index.js +++ b/components/atom/helpText/src/index.js @@ -1,13 +1,28 @@ +import {forwardRef} from 'react' + import PropTypes from 'prop-types' +import Injector from '@s-ui/react-primitive-injector' + import {BASE_CLASS} from './settings.js' -const AtomHelpText = ({text}) => {text} +const AtomHelpText = forwardRef(({text}, forwardedRef) => { + const isTextString = typeof text === 'string' + const Component = isTextString ? 'span' : Injector + return ( + + {text} + + ) +}) AtomHelpText.displayName = 'AtomHelpText' AtomHelpText.propTypes = { - text: PropTypes.string.isRequired + text: PropTypes.oneOfType([PropTypes.element, PropTypes.node]).isRequired } export default AtomHelpText diff --git a/components/atom/validationText/demo/articles/ArticleDefault.js b/components/atom/validationText/demo/articles/ArticleDefault.js new file mode 100644 index 0000000000..a0574e4180 --- /dev/null +++ b/components/atom/validationText/demo/articles/ArticleDefault.js @@ -0,0 +1,57 @@ +import { + Article, + Cell, + Code, + Grid, + H2, + Input, + Label, + Paragraph, + RadioButton +} from '@s-ui/documentation-library' +import AtomValidationText, {AtomValidationTextTypes} from '../../src/index.js' +import {flexCenteredStyle} from '../settings.js' + +const DefaultArticle = ({className}) => { + return ( +
    +

    Type

    + + using the prop type user can inherit the helpText color + styler for validation text usages. + + setMode(mode === 'light' ? 'dark' : 'light')} + label={mode} + /> +
    +
    + + {Object.values(AtomValidationTextTypes).map((type, index) => ( + + + + ))} + {Object.values(AtomValidationTextTypes).map((type, index) => ( + + + + + ))} + +
    + ) +} diff --git a/components/atom/validationText/demo/articles/ArticleNodes.js b/components/atom/validationText/demo/articles/ArticleNodes.js new file mode 100644 index 0000000000..6f7f538353 --- /dev/null +++ b/components/atom/validationText/demo/articles/ArticleNodes.js @@ -0,0 +1,63 @@ +import { useState } from 'react' + +import { + Article, + Cell, + Code, + Grid, + H2, + Input, + Label, + Paragraph, + RadioButton +} from '@s-ui/documentation-library' + +import AtomValidationText, {AtomValidationTextTypes} from '../../src/index.js' +import {flexCenteredStyle} from '../settings.js' + +const ArticleDefault = ({className}) => { + const [mode, setMode] = useState('light') + return ( +
    +

    Type

    + + using the prop type user can inherit the helpText color + styler for validation text usages. + + setMode(mode === 'light' ? 'dark' : 'light')} + label={mode} + /> +
    +
    + + {Object.values(AtomValidationTextTypes).map((type, index) => ( + + + + ))} + {Object.values(AtomValidationTextTypes).map((type, index) => ( + + + + + ))} + +
    + ) +} + +export default ArticleDefault From ba8379babb0085e61f99de0e69740f749e558b88 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Thu, 6 Oct 2022 12:13:33 +0200 Subject: [PATCH 084/243] feat(components/atom/validationText): admit react nodes as a text --- .../demo/articles/ArticleDefault.js | 16 ++++- .../demo/articles/ArticleNodes.js | 30 ++++----- components/atom/validationText/demo/index.js | 63 +++---------------- .../atom/validationText/demo/package.json | 5 +- .../atom/validationText/demo/settings.js | 18 ++++++ components/atom/validationText/package.json | 3 +- components/atom/validationText/src/index.js | 22 +++++-- 7 files changed, 76 insertions(+), 81 deletions(-) diff --git a/components/atom/validationText/demo/articles/ArticleDefault.js b/components/atom/validationText/demo/articles/ArticleDefault.js index a0574e4180..59d325f576 100644 --- a/components/atom/validationText/demo/articles/ArticleDefault.js +++ b/components/atom/validationText/demo/articles/ArticleDefault.js @@ -1,3 +1,7 @@ +import {useState} from 'react' + +import PropTypes from 'prop-types' + import { Article, Cell, @@ -9,12 +13,14 @@ import { Paragraph, RadioButton } from '@s-ui/documentation-library' + import AtomValidationText, {AtomValidationTextTypes} from '../../src/index.js' import {flexCenteredStyle} from '../settings.js' -const DefaultArticle = ({className}) => { +const ArticleDefault = ({className}) => { + const [mode, setMode] = useState('light') return ( -
    +

    Type

    using the prop type user can inherit the helpText color @@ -55,3 +61,9 @@ const DefaultArticle = ({className}) => {
    ) } + +ArticleDefault.propTypes = { + className: PropTypes.string +} + +export default ArticleDefault diff --git a/components/atom/validationText/demo/articles/ArticleNodes.js b/components/atom/validationText/demo/articles/ArticleNodes.js index 6f7f538353..29a333dd28 100644 --- a/components/atom/validationText/demo/articles/ArticleNodes.js +++ b/components/atom/validationText/demo/articles/ArticleNodes.js @@ -1,33 +1,25 @@ -import { useState } from 'react' +import PropTypes from 'prop-types' import { Article, Cell, - Code, Grid, H2, Input, Label, - Paragraph, - RadioButton + Paragraph } from '@s-ui/documentation-library' import AtomValidationText, {AtomValidationTextTypes} from '../../src/index.js' -import {flexCenteredStyle} from '../settings.js' +import {flexCenteredStyle, nodeText} from '../settings.js' -const ArticleDefault = ({className}) => { - const [mode, setMode] = useState('light') +const ArticleNodes = ({className}) => { return ( -
    -

    Type

    +
    +

    Node texts

    - using the prop type user can inherit the helpText color - styler for validation text usages. + The component is prepared for admit react node elements as a text. - setMode(mode === 'light' ? 'dark' : 'light')} - label={mode} - />

    { key={index} > - + ))} @@ -60,4 +52,8 @@ const ArticleDefault = ({className}) => { ) } -export default ArticleDefault +ArticleNodes.propTypes = { + className: PropTypes.string +} + +export default ArticleNodes diff --git a/components/atom/validationText/demo/index.js b/components/atom/validationText/demo/index.js index 5c5d89f089..a48da57383 100644 --- a/components/atom/validationText/demo/index.js +++ b/components/atom/validationText/demo/index.js @@ -1,23 +1,10 @@ -import {useState} from 'react' +import {H1, Paragraph} from '@s-ui/documentation-library' -import { - Article, - Cell, - Code, - Grid, - H1, - H2, - Input, - Label, - Paragraph, - RadioButton -} from '@s-ui/documentation-library' - -import AtomValidationText, {AtomValidationTextTypes} from '../src/index.js' -import {flexCenteredStyle} from './settings.js' +import ArticleDefault from './articles/ArticleDefault.js' +import ArticleNodes from './articles/ArticleNodes.js' +import {CLASS_SECTION} from './settings.js' export default () => { - const [mode, setMode] = useState('light') return (

    Validation Text

    @@ -25,45 +12,9 @@ export default () => { Validation text is used for indicating whether the entered data is correct. It is provided by using the "Help Text" plus one color each. -
    -

    Type

    - - using the prop type user can inherit the helpText color - styler for validation text usages. - - setMode(mode === 'light' ? 'dark' : 'light')} - label={mode} - /> -
    -
    - - {Object.values(AtomValidationTextTypes).map((type, index) => ( - - - - ))} - {Object.values(AtomValidationTextTypes).map((type, index) => ( - - - - - ))} - -
    + +
    +
    ) } diff --git a/components/atom/validationText/demo/package.json b/components/atom/validationText/demo/package.json index 6ab06e87a2..eb54c97a6c 100644 --- a/components/atom/validationText/demo/package.json +++ b/components/atom/validationText/demo/package.json @@ -9,5 +9,8 @@ }, "keywords": [], "author": "", - "license": "ISC" + "license": "ISC", + "dependencies": { + "@s-ui/react-atom-icon": "1" + } } diff --git a/components/atom/validationText/demo/settings.js b/components/atom/validationText/demo/settings.js index 566c484899..09e20c085c 100644 --- a/components/atom/validationText/demo/settings.js +++ b/components/atom/validationText/demo/settings.js @@ -1,3 +1,9 @@ +import {AntDesignIcon} from '@s-ui/documentation-library' +import AtomIcon from '@s-ui/react-atom-icon' + +export const BASE_CLASS_DEMO = `DemoValidationText` +export const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` + export const flexCenteredStyle = { display: 'flex', justifyContent: 'center', @@ -5,3 +11,15 @@ export const flexCenteredStyle = { alignItems: 'center', alignContent: 'center' } + +export const checkIcon = ( + + + +) + +export const nodeText = ( + + node text{checkIcon} + +) diff --git a/components/atom/validationText/package.json b/components/atom/validationText/package.json index f7ead2c6cf..5c8bb2b6fe 100644 --- a/components/atom/validationText/package.json +++ b/components/atom/validationText/package.json @@ -9,7 +9,8 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "@s-ui/component-dependencies": "1" + "@s-ui/component-dependencies": "1", + "@s-ui/react-primitive-injector": "1" }, "keywords": [], "author": "", diff --git a/components/atom/validationText/src/index.js b/components/atom/validationText/src/index.js index 1934f37fa6..2217690962 100644 --- a/components/atom/validationText/src/index.js +++ b/components/atom/validationText/src/index.js @@ -1,16 +1,30 @@ +import {forwardRef} from 'react' + import PropTypes from 'prop-types' +import Injector from '@s-ui/react-primitive-injector' + import {getClassNames, TYPES} from './settings.js' -const AtomValidationText = function ({type, text}) { - return {text} -} +const AtomValidationText = forwardRef(({type, text}, forwardedRef) => { + const isTextString = typeof text === 'string' + const Component = isTextString ? 'span' : Injector + return ( + + {text} + + ) +}) AtomValidationText.displayName = 'AtomValidationText' AtomValidationText.propTypes = { type: PropTypes.oneOf(Object.values(TYPES)).isRequired, - text: PropTypes.string.isRequired + text: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.bool]) + .isRequired } export default AtomValidationText From a946f54bae2d472c25efab4a5d9709c021c92834 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Thu, 6 Oct 2022 12:14:49 +0200 Subject: [PATCH 085/243] feat(components/molecule/field): admit react nodes in error alert success and help text --- components/molecule/field/src/index.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/components/molecule/field/src/index.js b/components/molecule/field/src/index.js index ab11d8a920..e27892a0dd 100644 --- a/components/molecule/field/src/index.js +++ b/components/molecule/field/src/index.js @@ -140,16 +140,32 @@ MoleculeField.propTypes = { name: PropTypes.string.isRequired, /** Success message to display when success state */ - successText: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]), + successText: PropTypes.oneOfType([ + PropTypes.element, + PropTypes.bool, + PropTypes.node + ]), /** Error message to display when error state */ - errorText: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]), + errorText: PropTypes.oneOfType([ + PropTypes.element, + PropTypes.bool, + PropTypes.node + ]), /** Error message to display when alert state */ - alertText: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]), + alertText: PropTypes.oneOfType([ + PropTypes.element, + PropTypes.bool, + PropTypes.node + ]), /** Help Text to display */ - helpText: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]), + helpText: PropTypes.oneOfType([ + PropTypes.element, + PropTypes.bool, + PropTypes.node + ]), /** Boolean to decide if elements should be set inline */ inline: PropTypes.bool, From 43c4f9d8a20dae73a7da981421f0b3a95ceb721f Mon Sep 17 00:00:00 2001 From: andresin87 Date: Thu, 6 Oct 2022 12:15:17 +0200 Subject: [PATCH 086/243] test(components/hook/usePortal): lint sorting imports --- components/hook/usePortal/test/index.test.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/components/hook/usePortal/test/index.test.js b/components/hook/usePortal/test/index.test.js index b02db1a629..b5ea19f213 100644 --- a/components/hook/usePortal/test/index.test.js +++ b/components/hook/usePortal/test/index.test.js @@ -5,16 +5,15 @@ /* eslint react/jsx-no-undef:0 */ /* eslint no-undef:0 */ -import PropTypes from 'prop-types' import React, {useRef} from 'react' import ReactDOM from 'react-dom' import {/** chai, **/ expect} from 'chai' +import PropTypes from 'prop-types' + // import chaiDOM from 'chai-dom' // import sinon from 'sinon' - // import {fireEvent} from '@testing-library/react' - import json from '../package.json' import * as pkg from '../src/index.js' From 8fe861ac698a0b43c61d6eea1605eeb090e48e65 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:23:10 +0000 Subject: [PATCH 087/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1eaf6bad15..65ae548d10 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.43%25-orange) -![branches](https://shields.io/badge/branches-57.08%25-AA0000) +![statements](https://shields.io/badge/statements-71.46%25-orange) +![branches](https://shields.io/badge/branches-57.21%25-AA0000) ![functions](https://shields.io/badge/functions-58.53%25-AA0000) -![lines](https://shields.io/badge/lines-73.24%25-orange) +![lines](https://shields.io/badge/lines-73.27%25-orange) ## ✨ Features From 4723e30bb3c2cb24e6582bad817664067796e409 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:24:19 +0000 Subject: [PATCH 088/243] release(components/atom/actionButton): v1.10.0 [skip ci] --- components/atom/actionButton/CHANGELOG.md | 4 ++++ components/atom/actionButton/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/actionButton/CHANGELOG.md b/components/atom/actionButton/CHANGELOG.md index 2524392573..a35eba537e 100644 --- a/components/atom/actionButton/CHANGELOG.md +++ b/components/atom/actionButton/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.10.0 (2022-10-06) + + + # 1.9.0 (2022-06-20) diff --git a/components/atom/actionButton/package.json b/components/atom/actionButton/package.json index 7a1c362e9c..4b7019a90e 100644 --- a/components/atom/actionButton/package.json +++ b/components/atom/actionButton/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-action-button", - "version": "1.9.0", + "version": "1.10.0", "description": "", "main": "lib/index.js", "scripts": { From 7b888f48d25df68111cfc4696455e58facd95c49 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:24:26 +0000 Subject: [PATCH 089/243] release(components/atom/backToTop): v2.3.0 [skip ci] --- components/atom/backToTop/CHANGELOG.md | 4 ++++ components/atom/backToTop/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/backToTop/CHANGELOG.md b/components/atom/backToTop/CHANGELOG.md index 71a4904013..e80af331c4 100644 --- a/components/atom/backToTop/CHANGELOG.md +++ b/components/atom/backToTop/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.3.0 (2022-10-06) + + + # 2.2.0 (2022-06-20) diff --git a/components/atom/backToTop/package.json b/components/atom/backToTop/package.json index 3f26cd02b1..d6538d23d4 100644 --- a/components/atom/backToTop/package.json +++ b/components/atom/backToTop/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-back-to-top", - "version": "2.2.0", + "version": "2.3.0", "description": "", "main": "lib/index.js", "scripts": { From 28bfbeec9795a22d51a8477cecf3991c5c3e7aa9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:24:34 +0000 Subject: [PATCH 090/243] release(components/atom/badge): v1.28.0 [skip ci] --- components/atom/badge/CHANGELOG.md | 4 ++++ components/atom/badge/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/badge/CHANGELOG.md b/components/atom/badge/CHANGELOG.md index 86a1d202c5..ba43f06040 100644 --- a/components/atom/badge/CHANGELOG.md +++ b/components/atom/badge/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.28.0 (2022-10-06) + + + # 1.27.0 (2022-06-20) diff --git a/components/atom/badge/package.json b/components/atom/badge/package.json index a1db4f93a6..13b97c42ce 100644 --- a/components/atom/badge/package.json +++ b/components/atom/badge/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-badge", - "version": "1.27.0", + "version": "1.28.0", "description": "", "main": "lib/index.js", "scripts": { From 779cf1068a55ac2acf8cfc9dad00f5ab1a132485 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:24:41 +0000 Subject: [PATCH 091/243] release(components/atom/card): v1.24.0 [skip ci] --- components/atom/card/CHANGELOG.md | 4 ++++ components/atom/card/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/card/CHANGELOG.md b/components/atom/card/CHANGELOG.md index 0a4ee3fbd3..4a7de93d2a 100644 --- a/components/atom/card/CHANGELOG.md +++ b/components/atom/card/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.24.0 (2022-10-06) + + + # 1.23.0 (2022-06-20) diff --git a/components/atom/card/package.json b/components/atom/card/package.json index b52cdb35ed..f24da9b09a 100644 --- a/components/atom/card/package.json +++ b/components/atom/card/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-card", - "version": "1.23.0", + "version": "1.24.0", "description": "", "main": "lib/index.js", "scripts": { From 6e08b4835705e1cc357eb7d01c0bbbb2ca19c6d6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:24:49 +0000 Subject: [PATCH 092/243] release(components/atom/helpText): v1.9.0 [skip ci] --- components/atom/helpText/CHANGELOG.md | 9 +++++++++ components/atom/helpText/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/helpText/CHANGELOG.md b/components/atom/helpText/CHANGELOG.md index 20a6ceea92..ebf0b88b31 100644 --- a/components/atom/helpText/CHANGELOG.md +++ b/components/atom/helpText/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.9.0 (2022-10-06) + + +### Features + +* **components/atom/helpText:** admit react nodes as a text ([f41967e](https://github.com/SUI-Components/sui-components/commit/f41967ec354662dcc551562ccfe75aa729aff29e)) + + + # 1.8.0 (2022-09-20) diff --git a/components/atom/helpText/package.json b/components/atom/helpText/package.json index 681fb89b4d..2185b3da0a 100644 --- a/components/atom/helpText/package.json +++ b/components/atom/helpText/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-help-text", - "version": "1.8.0", + "version": "1.9.0", "description": "", "main": "lib/index.js", "scripts": { From a2d0a9809c7345cfa225178bc4e72aa9e42fbc5f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:24:56 +0000 Subject: [PATCH 093/243] release(components/atom/popover): v3.12.0 [skip ci] --- components/atom/popover/CHANGELOG.md | 4 ++++ components/atom/popover/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/CHANGELOG.md b/components/atom/popover/CHANGELOG.md index 403d0c5c29..8372f08983 100644 --- a/components/atom/popover/CHANGELOG.md +++ b/components/atom/popover/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 3.12.0 (2022-10-06) + + + # 3.11.0 (2022-06-20) diff --git a/components/atom/popover/package.json b/components/atom/popover/package.json index a3f91f9816..35c01ed8cd 100644 --- a/components/atom/popover/package.json +++ b/components/atom/popover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-popover", - "version": "3.11.0", + "version": "3.12.0", "description": "", "main": "lib/index.js", "scripts": { From ebfb5cf72b24c771145cd924dc3f533d499bfea6 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:06 +0000 Subject: [PATCH 094/243] release(components/atom/progressBar): v2.9.0 [skip ci] --- components/atom/progressBar/CHANGELOG.md | 4 ++++ components/atom/progressBar/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/progressBar/CHANGELOG.md b/components/atom/progressBar/CHANGELOG.md index 4c55159eae..344e25d3fa 100644 --- a/components/atom/progressBar/CHANGELOG.md +++ b/components/atom/progressBar/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.9.0 (2022-10-06) + + + # 2.8.0 (2022-06-20) diff --git a/components/atom/progressBar/package.json b/components/atom/progressBar/package.json index 47e3d64066..93d78fe5df 100644 --- a/components/atom/progressBar/package.json +++ b/components/atom/progressBar/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-progress-bar", - "version": "2.8.0", + "version": "2.9.0", "description": "", "main": "lib/index.js", "scripts": { From 721b71926131b78184d64cbf21942d96b6e76ab5 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:13 +0000 Subject: [PATCH 095/243] release(components/atom/radioButton): v1.10.0 [skip ci] --- components/atom/radioButton/CHANGELOG.md | 4 ++++ components/atom/radioButton/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/radioButton/CHANGELOG.md b/components/atom/radioButton/CHANGELOG.md index e0f53f2f9e..8ea6a9c73e 100644 --- a/components/atom/radioButton/CHANGELOG.md +++ b/components/atom/radioButton/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.10.0 (2022-10-06) + + + # 1.9.0 (2022-06-20) diff --git a/components/atom/radioButton/package.json b/components/atom/radioButton/package.json index cf7c144b0a..1adf827dc3 100644 --- a/components/atom/radioButton/package.json +++ b/components/atom/radioButton/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-radio-button", - "version": "1.9.0", + "version": "1.10.0", "description": "", "main": "lib/index.js", "scripts": { From 26443b30444a87ba4ea081d5efdcfa7d2474cbdd Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:21 +0000 Subject: [PATCH 096/243] release(components/atom/skeleton): v1.6.0 [skip ci] --- components/atom/skeleton/CHANGELOG.md | 4 ++++ components/atom/skeleton/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/skeleton/CHANGELOG.md b/components/atom/skeleton/CHANGELOG.md index ec75638849..c8496da3a9 100644 --- a/components/atom/skeleton/CHANGELOG.md +++ b/components/atom/skeleton/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.6.0 (2022-10-06) + + + # 1.5.0 (2022-06-20) diff --git a/components/atom/skeleton/package.json b/components/atom/skeleton/package.json index 8193374e78..7ce157fec0 100644 --- a/components/atom/skeleton/package.json +++ b/components/atom/skeleton/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-skeleton", - "version": "1.5.0", + "version": "1.6.0", "description": "Display the loading state of a component while avoding layout shift", "main": "lib/index.js", "scripts": { From 92de01a528816146ad09f4568bdc2d315e78feca Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:28 +0000 Subject: [PATCH 097/243] release(components/atom/spinner): v2.3.0 [skip ci] --- components/atom/spinner/CHANGELOG.md | 10 ++++++++++ components/atom/spinner/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/atom/spinner/CHANGELOG.md b/components/atom/spinner/CHANGELOG.md index 02a9f39827..d11c59e8ba 100644 --- a/components/atom/spinner/CHANGELOG.md +++ b/components/atom/spinner/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 2.3.0 (2022-10-06) + + +### Features + +* **Root:** Delete undefined dependencies ([c145905](https://github.com/SUI-Components/sui-components/commit/c145905350328925ba6fda2a462d7f8b508c8ea0)) +* **Root:** Merge commit ([d3735d0](https://github.com/SUI-Components/sui-components/commit/d3735d0644332e674d5a5b6291680697f0d6f7c4)) + + + # 2.2.0 (2022-06-20) diff --git a/components/atom/spinner/package.json b/components/atom/spinner/package.json index 1acd22447d..54ffca2ff5 100644 --- a/components/atom/spinner/package.json +++ b/components/atom/spinner/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-spinner", - "version": "2.2.0", + "version": "2.3.0", "description": "", "main": "lib/index.js", "scripts": { From e8006f9549230227f31860d71f176fdffbdd8f93 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:35 +0000 Subject: [PATCH 098/243] release(components/atom/switch): v1.28.0 [skip ci] --- components/atom/switch/CHANGELOG.md | 4 ++++ components/atom/switch/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/switch/CHANGELOG.md b/components/atom/switch/CHANGELOG.md index a0e9bdffb2..b63522fba0 100644 --- a/components/atom/switch/CHANGELOG.md +++ b/components/atom/switch/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.28.0 (2022-10-06) + + + # 1.27.0 (2022-06-20) diff --git a/components/atom/switch/package.json b/components/atom/switch/package.json index e8af0fcd64..40fe1944ea 100644 --- a/components/atom/switch/package.json +++ b/components/atom/switch/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-switch", - "version": "1.27.0", + "version": "1.28.0", "description": "", "main": "lib/index.js", "scripts": { From e29642dbf4c6835a42fd642b9007a9bd7fad1913 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:43 +0000 Subject: [PATCH 099/243] release(components/atom/table): v1.14.0 [skip ci] --- components/atom/table/CHANGELOG.md | 4 ++++ components/atom/table/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/table/CHANGELOG.md b/components/atom/table/CHANGELOG.md index 77f680d322..cdc85eaff5 100644 --- a/components/atom/table/CHANGELOG.md +++ b/components/atom/table/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.14.0 (2022-10-06) + + + # 1.13.0 (2022-06-20) diff --git a/components/atom/table/package.json b/components/atom/table/package.json index c0e14f8150..fc033aa4ea 100644 --- a/components/atom/table/package.json +++ b/components/atom/table/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-table", - "version": "1.13.0", + "version": "1.14.0", "description": "", "main": "lib/index.js", "scripts": { From 75556eb883353163c38ed0df41399731294dbafe Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:51 +0000 Subject: [PATCH 100/243] release(components/atom/textarea): v2.20.0 [skip ci] --- components/atom/textarea/CHANGELOG.md | 10 ++++++++++ components/atom/textarea/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/atom/textarea/CHANGELOG.md b/components/atom/textarea/CHANGELOG.md index fa3daf55f5..1412cdfef0 100644 --- a/components/atom/textarea/CHANGELOG.md +++ b/components/atom/textarea/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 2.20.0 (2022-10-06) + + +### Features + +* **Root:** Delete undefined dependencies ([c145905](https://github.com/SUI-Components/sui-components/commit/c145905350328925ba6fda2a462d7f8b508c8ea0)) +* **Root:** Merge commit ([d3735d0](https://github.com/SUI-Components/sui-components/commit/d3735d0644332e674d5a5b6291680697f0d6f7c4)) + + + # 2.19.0 (2022-06-20) diff --git a/components/atom/textarea/package.json b/components/atom/textarea/package.json index 030c8143f7..b26903a7ff 100644 --- a/components/atom/textarea/package.json +++ b/components/atom/textarea/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-textarea", - "version": "2.19.0", + "version": "2.20.0", "description": "", "main": "lib/index.js", "scripts": { From 8b8cbb729ab71c4aec6300d956517faaa18c9c67 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:25:59 +0000 Subject: [PATCH 101/243] release(components/atom/tooltip): v2.5.0 [skip ci] --- components/atom/tooltip/CHANGELOG.md | 4 ++++ components/atom/tooltip/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/tooltip/CHANGELOG.md b/components/atom/tooltip/CHANGELOG.md index 1cffe00e61..e838575023 100644 --- a/components/atom/tooltip/CHANGELOG.md +++ b/components/atom/tooltip/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.5.0 (2022-10-06) + + + # 2.4.0 (2022-06-20) diff --git a/components/atom/tooltip/package.json b/components/atom/tooltip/package.json index a90bd6612c..ffbf00afda 100644 --- a/components/atom/tooltip/package.json +++ b/components/atom/tooltip/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-tooltip", - "version": "2.4.0", + "version": "2.5.0", "description": "", "main": "lib/index.js", "scripts": { From 89b37ba22c33bf6f6181f98860ff4c7712b374d2 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:07 +0000 Subject: [PATCH 102/243] release(components/atom/upload): v3.10.0 [skip ci] --- components/atom/upload/CHANGELOG.md | 4 ++++ components/atom/upload/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/upload/CHANGELOG.md b/components/atom/upload/CHANGELOG.md index 954d5e3fd2..4d638f172e 100644 --- a/components/atom/upload/CHANGELOG.md +++ b/components/atom/upload/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 3.10.0 (2022-10-06) + + + # 3.9.0 (2022-06-20) diff --git a/components/atom/upload/package.json b/components/atom/upload/package.json index 47b4097f76..95a208d30a 100644 --- a/components/atom/upload/package.json +++ b/components/atom/upload/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-upload", - "version": "3.9.0", + "version": "3.10.0", "description": "", "main": "lib/index.js", "scripts": { From ce272d7faf570767780dc839659e8e508d172623 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:14 +0000 Subject: [PATCH 103/243] release(components/atom/validationText): v1.9.0 [skip ci] --- components/atom/validationText/CHANGELOG.md | 10 ++++++++++ components/atom/validationText/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/atom/validationText/CHANGELOG.md b/components/atom/validationText/CHANGELOG.md index 5b8e95cafd..5d7afeed95 100644 --- a/components/atom/validationText/CHANGELOG.md +++ b/components/atom/validationText/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.9.0 (2022-10-06) + + +### Features + +* **components/atom/helpText:** admit react nodes as a text ([f41967e](https://github.com/SUI-Components/sui-components/commit/f41967ec354662dcc551562ccfe75aa729aff29e)) +* **components/atom/validationText:** admit react nodes as a text ([ba8379b](https://github.com/SUI-Components/sui-components/commit/ba8379babb0085e61f99de0e69740f749e558b88)) + + + # 1.8.0 (2022-09-20) diff --git a/components/atom/validationText/package.json b/components/atom/validationText/package.json index 5c8bb2b6fe..706a87e9dd 100644 --- a/components/atom/validationText/package.json +++ b/components/atom/validationText/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-validation-text", - "version": "1.8.0", + "version": "1.9.0", "description": "", "main": "lib/index.js", "scripts": { From e5120b05a2becd622c36b58eb6c0721c52f3fc68 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:22 +0000 Subject: [PATCH 104/243] release(components/behavior/sticky): v1.9.0 [skip ci] --- components/behavior/sticky/CHANGELOG.md | 4 ++++ components/behavior/sticky/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/behavior/sticky/CHANGELOG.md b/components/behavior/sticky/CHANGELOG.md index e9ebbd7162..e6bfb59e20 100644 --- a/components/behavior/sticky/CHANGELOG.md +++ b/components/behavior/sticky/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.9.0 (2022-10-06) + + + # 1.8.0 (2022-06-22) diff --git a/components/behavior/sticky/package.json b/components/behavior/sticky/package.json index fc28eccf7e..ba7c136438 100644 --- a/components/behavior/sticky/package.json +++ b/components/behavior/sticky/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-behavior-sticky", - "version": "1.8.0", + "version": "1.9.0", "description": "", "main": "lib/index.js", "scripts": { From 585035ecade1ce5a57e5da4772aa2c21a7c278bf Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:29 +0000 Subject: [PATCH 105/243] release(components/layout/grid): v2.13.0 [skip ci] --- components/layout/grid/CHANGELOG.md | 4 ++++ components/layout/grid/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/layout/grid/CHANGELOG.md b/components/layout/grid/CHANGELOG.md index 7cbd87cb73..425303fd24 100644 --- a/components/layout/grid/CHANGELOG.md +++ b/components/layout/grid/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.13.0 (2022-10-06) + + + # 2.12.0 (2022-06-20) diff --git a/components/layout/grid/package.json b/components/layout/grid/package.json index 711b9d33ae..9ec365d7da 100644 --- a/components/layout/grid/package.json +++ b/components/layout/grid/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-layout-grid", - "version": "2.12.0", + "version": "2.13.0", "description": "", "main": "lib/index.js", "scripts": { From afd111656518bb0d8209678c3ecd4f90b826ab3c Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:36 +0000 Subject: [PATCH 106/243] release(components/molecule/accordion): v2.7.0 [skip ci] --- components/molecule/accordion/CHANGELOG.md | 4 ++++ components/molecule/accordion/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/accordion/CHANGELOG.md b/components/molecule/accordion/CHANGELOG.md index d886fb855d..84f0106851 100644 --- a/components/molecule/accordion/CHANGELOG.md +++ b/components/molecule/accordion/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.7.0 (2022-10-06) + + + # 2.6.0 (2022-06-20) diff --git a/components/molecule/accordion/package.json b/components/molecule/accordion/package.json index e1ca83b557..ab0aff5b7b 100644 --- a/components/molecule/accordion/package.json +++ b/components/molecule/accordion/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-accordion", - "version": "2.6.0", + "version": "2.7.0", "description": "", "main": "lib/index.js", "scripts": { From 1d65dd3b1061ae9bebaa61773d437252590fbd53 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:44 +0000 Subject: [PATCH 107/243] release(components/molecule/autosuggestField): v2.11.0 [skip ci] --- components/molecule/autosuggestField/CHANGELOG.md | 4 ++++ components/molecule/autosuggestField/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/autosuggestField/CHANGELOG.md b/components/molecule/autosuggestField/CHANGELOG.md index 90b5ff5ce1..5d5bde86d2 100644 --- a/components/molecule/autosuggestField/CHANGELOG.md +++ b/components/molecule/autosuggestField/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.11.0 (2022-10-06) + + + # 2.10.0 (2022-06-22) diff --git a/components/molecule/autosuggestField/package.json b/components/molecule/autosuggestField/package.json index 268957c004..8fa02421af 100644 --- a/components/molecule/autosuggestField/package.json +++ b/components/molecule/autosuggestField/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-autosuggest-field", - "version": "2.10.0", + "version": "2.11.0", "description": "", "main": "lib/index.js", "scripts": { From a29ac5cfe723b9266bb71d648f6bd0983a60a4dc Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:26:52 +0000 Subject: [PATCH 108/243] release(components/molecule/avatar): v1.16.0 [skip ci] --- components/molecule/avatar/CHANGELOG.md | 4 ++++ components/molecule/avatar/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/avatar/CHANGELOG.md b/components/molecule/avatar/CHANGELOG.md index 8b8e179243..731142dab3 100644 --- a/components/molecule/avatar/CHANGELOG.md +++ b/components/molecule/avatar/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.16.0 (2022-10-06) + + + # 1.15.0 (2022-10-03) diff --git a/components/molecule/avatar/package.json b/components/molecule/avatar/package.json index 87591ea560..8348db7971 100644 --- a/components/molecule/avatar/package.json +++ b/components/molecule/avatar/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-avatar", - "version": "1.15.0", + "version": "1.16.0", "description": "", "main": "lib/index.js", "scripts": { From bcfad6466c9af20f68e59800e1dca1265caef19c Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:27:00 +0000 Subject: [PATCH 109/243] release(components/molecule/breadcrumb): v1.27.0 [skip ci] --- components/molecule/breadcrumb/CHANGELOG.md | 4 ++++ components/molecule/breadcrumb/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/breadcrumb/CHANGELOG.md b/components/molecule/breadcrumb/CHANGELOG.md index 0ebd69d8e1..62085b4bdf 100644 --- a/components/molecule/breadcrumb/CHANGELOG.md +++ b/components/molecule/breadcrumb/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.27.0 (2022-10-06) + + + # 1.26.0 (2022-06-22) diff --git a/components/molecule/breadcrumb/package.json b/components/molecule/breadcrumb/package.json index 15bb8a6014..8e7eb41577 100644 --- a/components/molecule/breadcrumb/package.json +++ b/components/molecule/breadcrumb/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-breadcrumb", - "version": "1.26.0", + "version": "1.27.0", "description": "SUI Breadcrumb Basic", "main": "lib/index.js", "scripts": { From 0f079736e664e570ada21c68e8537758764babcc Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:27:08 +0000 Subject: [PATCH 110/243] release(components/molecule/buttonGroup): v2.10.0 [skip ci] --- components/molecule/buttonGroup/CHANGELOG.md | 4 ++++ components/molecule/buttonGroup/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/buttonGroup/CHANGELOG.md b/components/molecule/buttonGroup/CHANGELOG.md index e4e0a6e28f..c4336c95f7 100644 --- a/components/molecule/buttonGroup/CHANGELOG.md +++ b/components/molecule/buttonGroup/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.10.0 (2022-10-06) + + + # 2.9.0 (2022-06-22) diff --git a/components/molecule/buttonGroup/package.json b/components/molecule/buttonGroup/package.json index b3bef87d88..2aa80ea4bd 100644 --- a/components/molecule/buttonGroup/package.json +++ b/components/molecule/buttonGroup/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-button-group", - "version": "2.9.0", + "version": "2.10.0", "description": "", "main": "lib/index.js", "scripts": { From 2cc58f8621c12f0eb840e1359cf35dfa6a96cd73 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:27:15 +0000 Subject: [PATCH 111/243] release(components/molecule/buttonGroupField): v1.9.0 [skip ci] --- components/molecule/buttonGroupField/CHANGELOG.md | 4 ++++ components/molecule/buttonGroupField/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/buttonGroupField/CHANGELOG.md b/components/molecule/buttonGroupField/CHANGELOG.md index 6ccce7b5de..b17a7556c9 100644 --- a/components/molecule/buttonGroupField/CHANGELOG.md +++ b/components/molecule/buttonGroupField/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.9.0 (2022-10-06) + + + # 1.8.0 (2022-06-22) diff --git a/components/molecule/buttonGroupField/package.json b/components/molecule/buttonGroupField/package.json index 264b663169..392f478c1a 100644 --- a/components/molecule/buttonGroupField/package.json +++ b/components/molecule/buttonGroupField/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-button-group-field", - "version": "1.8.0", + "version": "1.9.0", "description": "", "main": "lib/index.js", "scripts": { From 902c82ff2caf652e3c210af9f1432cf2b873815f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:27:23 +0000 Subject: [PATCH 112/243] release(components/molecule/checkboxField): v5.1.0 [skip ci] --- components/molecule/checkboxField/CHANGELOG.md | 9 +++++++++ components/molecule/checkboxField/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/checkboxField/CHANGELOG.md b/components/molecule/checkboxField/CHANGELOG.md index c528035bf4..d14ea7e0d4 100644 --- a/components/molecule/checkboxField/CHANGELOG.md +++ b/components/molecule/checkboxField/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 5.1.0 (2022-10-06) + + +### Features + +* **components/organism/nestedCheckboxes:** remove unnecesary lines ([6339679](https://github.com/SUI-Components/sui-components/commit/633967945b38296dd61597aa8c748a0950540b0a)) + + + # 5.0.0 (2022-07-18) diff --git a/components/molecule/checkboxField/package.json b/components/molecule/checkboxField/package.json index 74be695463..190008c691 100644 --- a/components/molecule/checkboxField/package.json +++ b/components/molecule/checkboxField/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-checkbox-field", - "version": "5.0.0", + "version": "5.1.0", "description": "", "main": "lib/index.js", "scripts": { From af703f9968e6ef427b4809fc28505ed29a3642e8 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 6 Oct 2022 11:27:31 +0000 Subject: [PATCH 113/243] release(components/molecule/field): v1.37.0 [skip ci] --- components/molecule/field/CHANGELOG.md | 9 +++++++++ components/molecule/field/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/field/CHANGELOG.md b/components/molecule/field/CHANGELOG.md index 273dbd7d5a..940a3a788e 100644 --- a/components/molecule/field/CHANGELOG.md +++ b/components/molecule/field/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.37.0 (2022-10-06) + + +### Features + +* **components/molecule/field:** admit react nodes in error alert success and help text ([a946f54](https://github.com/SUI-Components/sui-components/commit/a946f54bae2d472c25efab4a5d9709c021c92834)) + + + # 1.36.0 (2022-10-04) diff --git a/components/molecule/field/package.json b/components/molecule/field/package.json index 140b50f82d..d8914ce888 100644 --- a/components/molecule/field/package.json +++ b/components/molecule/field/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-field", - "version": "1.36.0", + "version": "1.37.0", "description": "", "main": "lib/index.js", "scripts": { From 80e987adcdce582c1301f4f8df2ea40232a6ec66 Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Thu, 6 Oct 2022 23:46:11 +0200 Subject: [PATCH 114/243] docs(Root): put correct links on the homepage of SUI Components --- components/README.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/components/README.md b/components/README.md index 8ceaa4816a..7905b8e8d1 100644 --- a/components/README.md +++ b/components/README.md @@ -2,21 +2,14 @@ ### SUI Components is an Open-Source, high quality library of React components that empowers teams to craft any product with ease. -## Contribute - -Report a bug or defect +Report a bug Improve an existing component Propose a new component -## Current status - -Performance dashboard - -## Documentation +## Performance Metrics -Contributor +Design System Dashboard -## Coverage -Contributor \ No newline at end of file +Test coverage \ No newline at end of file From e76108b3abc8ec627295a00fc48bf3e17aa8031f Mon Sep 17 00:00:00 2001 From: "jordi.munoz@adevinta.com" Date: Fri, 7 Oct 2022 09:09:43 +0200 Subject: [PATCH 115/243] docs(Root): use new URL for bug reporting --- components/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/README.md b/components/README.md index 7905b8e8d1..936530631b 100644 --- a/components/README.md +++ b/components/README.md @@ -2,7 +2,7 @@ ### SUI Components is an Open-Source, high quality library of React components that empowers teams to craft any product with ease. -Report a bug +Report a bug Improve an existing component From a6dac91162387b0aa7e5fb99557d76f061ba034b Mon Sep 17 00:00:00 2001 From: andresin87 Date: Fri, 7 Oct 2022 11:27:20 +0200 Subject: [PATCH 116/243] feat(components/atom/popover): add icon color type --- components/atom/popover/demo/ArticleType.js | 82 +++++++++++++------ components/atom/popover/demo/index.scss | 12 ++- components/atom/popover/src/styles/index.scss | 8 +- 3 files changed, 76 insertions(+), 26 deletions(-) diff --git a/components/atom/popover/demo/ArticleType.js b/components/atom/popover/demo/ArticleType.js index 6c6e07f4bb..1883d94147 100644 --- a/components/atom/popover/demo/ArticleType.js +++ b/components/atom/popover/demo/ArticleType.js @@ -1,32 +1,68 @@ import AtomPopover from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' -import {Article, Button, H2, Paragraph} from '@s-ui/documentation-library' +import IconClose from './Icons/IconClose.js' +import { + Article, + Button, + H2, + Paragraph, + Grid, + Cell +} from '@s-ui/documentation-library' const ArticleType = ({className, content: Content}) => { return ( -
    -
    -

    Custom Types

    - - You can even define some other extra types defining your own vertical - custom types and looping this defined keys through scss. - -
    - - - - +
    +

    Custom Types

    + + You can even define some other extra types defining your own vertical + custom types and looping this defined keys through scss. + + + + } + content={Content} + hideArrow={false} + > + + + + + } + content={Content} + hideArrow={false} + > + + + +
    ) } diff --git a/components/atom/popover/demo/index.scss b/components/atom/popover/demo/index.scss index 4b02526904..4d4706421a 100644 --- a/components/atom/popover/demo/index.scss +++ b/components/atom/popover/demo/index.scss @@ -1,13 +1,21 @@ @import '~@s-ui/theme/lib/index'; +@import '../src/styles/settings'; + $popover-type: ( dark: ( bgc: $c-gray-dark-3, - bdc: $c-gray-dark-3 + bdc: $c-gray-dark-3, + c-icon: $c-white + ), + alert: ( + bgc: $c-alert-dark-3, + bdc: $c-alert-dark-3, + c-icon: $c-white ) ); -@import '../src/index'; +@import '../src/styles/index'; .DemoAtomPopover-section { .blink { diff --git a/components/atom/popover/src/styles/index.scss b/components/atom/popover/src/styles/index.scss index 27181642ae..c077193dc0 100644 --- a/components/atom/popover/src/styles/index.scss +++ b/components/atom/popover/src/styles/index.scss @@ -27,10 +27,16 @@ $class-arrow: '#{$base-class}-arrow'; @each $type-key, $type-value in $popover-type { $bgc: map-get($type-value, bgc); $bdc: map-get($type-value, bdc); + $c-icon: map-get($type-value, c-icon); &--type-#{$type-key} { background-color: $bgc; border-color: $bdc; + #{$base-class}-closeIcon { + svg { + fill: $c-icon; + } + } } } } @@ -43,7 +49,7 @@ $class-arrow: '#{$base-class}-arrow'; z-index: $z-tooltips; svg { - fill: $c-atom-popover-close-icon !important; + fill: $c-atom-popover-close-icon; height: $sz-atom-popover-close-icon; width: $sz-atom-popover-close-icon; } From 4b62ac2a5d5e764f542059a93578af9172980ec2 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 7 Oct 2022 09:42:16 +0000 Subject: [PATCH 117/243] release(components/atom/popover): v3.13.0 [skip ci] --- components/atom/popover/CHANGELOG.md | 9 +++++++++ components/atom/popover/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/CHANGELOG.md b/components/atom/popover/CHANGELOG.md index 8372f08983..e825a143e7 100644 --- a/components/atom/popover/CHANGELOG.md +++ b/components/atom/popover/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 3.13.0 (2022-10-07) + + +### Features + +* **components/atom/popover:** add icon color type ([a6dac91](https://github.com/SUI-Components/sui-components/commit/a6dac91162387b0aa7e5fb99557d76f061ba034b)) + + + # 3.12.0 (2022-10-06) diff --git a/components/atom/popover/package.json b/components/atom/popover/package.json index 35c01ed8cd..38568d53ad 100644 --- a/components/atom/popover/package.json +++ b/components/atom/popover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-popover", - "version": "3.12.0", + "version": "3.13.0", "description": "", "main": "lib/index.js", "scripts": { From 557f807de7a807db4bd459e01ebee45fb1cda6ac Mon Sep 17 00:00:00 2001 From: Najeeb Date: Sat, 8 Oct 2022 16:50:41 +0530 Subject: [PATCH 118/243] fix(component/molecule/accordion): The arrows are upside down --- .../molecule/accordion/src/styles/index.scss | 4 +- yarn.lock | 10159 ++++++++++++++++ 2 files changed, 10161 insertions(+), 2 deletions(-) create mode 100644 yarn.lock diff --git a/components/molecule/accordion/src/styles/index.scss b/components/molecule/accordion/src/styles/index.scss index ee8e226e96..af50d8ccff 100644 --- a/components/molecule/accordion/src/styles/index.scss +++ b/components/molecule/accordion/src/styles/index.scss @@ -148,11 +148,11 @@ $base-class-item-panel: '#{$base-class-item}Panel'; box-sizing: border-box; } &::before { - transform: rotate(-45deg); + transform: rotate(-135deg); left: 33%; } &::after { - transform: rotate(-135deg); + transform: rotate(-45deg); right: 33%; } } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..76c1a0f446 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,10159 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/cli@7": + "integrity" "sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg==" + "resolved" "https://registry.npmjs.org/@babel/cli/-/cli-7.19.3.tgz" + "version" "7.19.3" + dependencies: + "@jridgewell/trace-mapping" "^0.3.8" + "commander" "^4.0.1" + "convert-source-map" "^1.1.0" + "fs-readdir-recursive" "^1.1.0" + "glob" "^7.2.0" + "make-dir" "^2.1.0" + "slash" "^2.0.0" + optionalDependencies: + "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" + "chokidar" "^3.4.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.18.6": + "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": + "integrity" "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz" + "version" "7.19.3" + +"@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@7.18.10": + "integrity" "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.1" + "semver" "^6.3.0" + +"@babel/eslint-parser@7.18.9": + "integrity" "sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==" + "resolved" "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "eslint-scope" "^5.1.1" + "eslint-visitor-keys" "^2.1.0" + "semver" "^6.3.0" + +"@babel/eslint-plugin@7.18.10": + "integrity" "sha512-iV1OZj/7eg4wZIcsVEkXS3MUWdhmpLsu2h+9Zr2ppywKWdCRs6VfjxbRzmHHYeurTizrrnaJ9ZkbO8KOv4lauQ==" + "resolved" "https://registry.npmjs.org/@babel/eslint-plugin/-/eslint-plugin-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "eslint-rule-composer" "^0.3.0" + +"@babel/generator@^7.18.10", "@babel/generator@^7.19.3": + "integrity" "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz" + "version" "7.19.3" + dependencies: + "@babel/types" "^7.19.3" + "@jridgewell/gen-mapping" "^0.3.2" + "jsesc" "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" + "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": + "integrity" "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" + "version" "7.19.3" + dependencies: + "@babel/compat-data" "^7.19.3" + "@babel/helper-validator-option" "^7.18.6" + "browserslist" "^4.21.3" + "semver" "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": + "integrity" "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": + "integrity" "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "regexpu-core" "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": + "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "debug" "^4.1.1" + "lodash.debounce" "^4.0.8" + "resolve" "^1.14.2" + "semver" "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + "version" "7.18.9" + +"@babel/helper-explode-assignable-expression@^7.18.6": + "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" + "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + +"@babel/helper-hoist-variables@^7.18.6": + "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-module-imports@^7.18.6": + "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.19.0": + "integrity" "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + +"@babel/helper-optimise-call-expression@^7.18.6": + "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + "integrity" "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz" + "version" "7.19.0" + +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": + "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" + "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + "integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" + "version" "7.19.1" + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" + +"@babel/helper-simple-access@^7.18.6": + "integrity" "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + "integrity" "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-split-export-declaration@^7.18.6": + "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + "integrity" "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz" + "version" "7.18.10" + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + "version" "7.19.1" + +"@babel/helper-validator-option@^7.18.6": + "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + "version" "7.18.6" + +"@babel/helper-wrap-function@^7.18.9": + "integrity" "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==" + "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + +"@babel/helpers@^7.18.9": + "integrity" "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + +"@babel/highlight@^7.18.6": + "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" + +"@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3": + "integrity" "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz" + "version" "7.19.3" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + +"@babel/plugin-proposal-async-generator-functions@^7.18.10": + "integrity" "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz" + "version" "7.19.1" + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.18.6": + "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@7.18.10": + "integrity" "sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.18.6" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + "integrity" "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.8" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.9": + "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + "integrity" "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + "version" "7.8.4" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.18.6": + "integrity" "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@7.18.6": + "integrity" "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3", "@babel/plugin-syntax-export-namespace-from@7.8.3": + "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.18.6": + "integrity" "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-json-strings@^7.8.3": + "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.18.6": + "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.18.9": + "integrity" "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-classes@^7.18.9": + "integrity" "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + "globals" "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-destructuring@^7.18.9": + "integrity" "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz" + "version" "7.18.13" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + "version" "7.18.8" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.18.9": + "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.9": + "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.18.6": + "integrity" "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "babel-plugin-dynamic-import-node" "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@7.18.6": + "integrity" "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "babel-plugin-dynamic-import-node" "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.9": + "integrity" "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-validator-identifier" "^7.18.6" + "babel-plugin-dynamic-import-node" "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.6": + "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + "integrity" "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" + "version" "7.19.1" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-new-target@^7.18.6": + "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.18.8": + "integrity" "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz" + "version" "7.18.8" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-property-literals@^7.18.6": + "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-display-name@^7.18.6": + "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + "integrity" "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.18.6": + "integrity" "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.19.0" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + "integrity" "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "regenerator-transform" "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.18.6": + "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-runtime@7.18.10": + "integrity" "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "babel-plugin-polyfill-corejs2" "^0.3.2" + "babel-plugin-polyfill-corejs3" "^0.5.3" + "babel-plugin-polyfill-regenerator" "^0.4.0" + "semver" "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.18.9": + "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@7.18.10": + "integrity" "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.10" + "babel-plugin-polyfill-corejs2" "^0.3.2" + "babel-plugin-polyfill-corejs3" "^0.5.3" + "babel-plugin-polyfill-regenerator" "^0.4.0" + "core-js-compat" "^3.22.1" + "semver" "^6.3.0" + +"@babel/preset-modules@^0.1.5": + "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" + "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + "version" "0.1.5" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + "esutils" "^2.0.2" + +"@babel/preset-react@7.18.6": + "integrity" "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==" + "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/register@7.18.9": + "integrity" "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==" + "resolved" "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "clone-deep" "^4.0.1" + "find-cache-dir" "^2.0.0" + "make-dir" "^2.1.0" + "pirates" "^4.0.5" + "source-map-support" "^0.5.16" + +"@babel/runtime-corejs3@^7.10.2": + "integrity" "sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==" + "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz" + "version" "7.19.1" + dependencies: + "core-js-pure" "^3.25.1" + "regenerator-runtime" "^0.13.4" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + "integrity" "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "regenerator-runtime" "^0.13.4" + +"@babel/runtime@7.18.9": + "integrity" "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "regenerator-runtime" "^0.13.4" + +"@babel/template@^7.18.10": + "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.18.10", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1": + "integrity" "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz" + "version" "7.19.3" + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.3" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.19.3" + "@babel/types" "^7.19.3" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.4.4": + "integrity" "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz" + "version" "7.19.3" + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.19.1" + "to-fast-properties" "^2.0.0" + +"@colors/colors@1.5.0": + "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + "version" "1.5.0" + +"@csstools/selector-specificity@^2.0.2": + "integrity" "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==" + "resolved" "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz" + "version" "2.0.2" + +"@eslint/eslintrc@^1.3.0": + "integrity" "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^9.4.0" + "globals" "^13.15.0" + "ignore" "^5.2.0" + "import-fresh" "^3.2.1" + "js-yaml" "^4.1.0" + "minimatch" "^3.1.2" + "strip-json-comments" "^3.1.1" + +"@humanwhocodes/config-array@^0.9.2": + "integrity" "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" + "version" "0.9.5" + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + "debug" "^4.1.1" + "minimatch" "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + "version" "1.2.1" + +"@hutson/parse-repository-url@^3.0.0": + "integrity" "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==" + "resolved" "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" + "version" "3.0.2" + +"@hypnosphi/create-react-context@^0.3.1": + "integrity" "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==" + "resolved" "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz" + "version" "0.3.1" + dependencies: + "gud" "^1.0.0" + "warning" "^4.0.3" + +"@istanbuljs/load-nyc-config@^1.0.0": + "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" + "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "camelcase" "^5.3.1" + "find-up" "^4.1.0" + "get-package-type" "^0.1.0" + "js-yaml" "^3.13.1" + "resolve-from" "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + "version" "0.1.3" + +"@jest/types@^26.6.2": + "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + "version" "26.6.2" + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + "chalk" "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + "version" "0.1.1" + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.2": + "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + "version" "3.1.0" + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + "version" "1.1.2" + +"@jridgewell/source-map@^0.3.2": + "integrity" "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==" + "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10": + "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + "version" "1.4.14" + +"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": + "integrity" "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz" + "version" "0.3.15" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@leichtgewicht/ip-codec@^2.0.1": + "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + "version" "2.0.4" + +"@loadable/component@5.15.x": + "integrity" "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==" + "resolved" "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz" + "version" "5.15.2" + dependencies: + "@babel/runtime" "^7.7.7" + "hoist-non-react-statics" "^3.3.1" + "react-is" "^16.12.0" + +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": + "integrity" "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==" + "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" + "version" "2.1.8-no-fsevents.3" + +"@nodelib/fs.scandir@2.1.5": + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "run-parallel" "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" + +"@nodelib/fs.walk@^1.2.3": + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + "fastq" "^1.6.0" + +"@popperjs/core@2.11.6": + "integrity" "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" + "version" "2.11.6" + +"@s-ui/bundler@9": + "integrity" "sha512-IaGFH7xhxTwd+AGDSxlXpGn/wAXm2w5XdJHNyZAjMiA2eirzxWLT3qSZD1679Rf56fjx4xyZsjH0eH5iMqaPlQ==" + "resolved" "https://registry.npmjs.org/@s-ui/bundler/-/bundler-9.36.0.tgz" + "version" "9.36.0" + dependencies: + "@babel/core" "7.18.10" + "@s-ui/helpers" "1" + "@s-ui/sass-loader" "1" + "address" "1.2.0" + "autoprefixer" "10.4.8" + "babel-loader" "8.2.5" + "babel-preset-sui" "3" + "buffer" "6.0.3" + "commander" "8.3.0" + "css-loader" "6.7.1" + "css-minimizer-webpack-plugin" "4.0.0" + "esbuild" "0.15.5" + "escape-string-regexp" "4.0.0" + "fast-glob" "3.2.11" + "find-free-ports" "3.0.0" + "html-webpack-plugin" "5.5.0" + "https-browserify" "1.0.0" + "mini-css-extract-plugin" "2.6.1" + "postcss" "8.4.16" + "postcss-loader" "7.0.1" + "process" "0.11.10" + "sass" "1.54.5" + "stream-http" "3.2.0" + "strip-ansi" "6.0.1" + "style-loader" "3.3.1" + "url" "0.11.0" + "webpack" "5.74.0" + "webpack-dev-server" "4.10.0" + "webpack-manifest-plugin" "5.0.0" + "webpack-node-externals" "3.0.0" + +"@s-ui/component-dependencies@1", "@s-ui/component-dependencies@latest": + "integrity" "sha512-WWqnhZm1cP19w5rswotAaLlsT1HY28oX6FJyDKeQAQiOgymklfeb3BjYBO9QGqmGzOi4gYe4kdGOZbcW6kG6ig==" + "resolved" "https://registry.npmjs.org/@s-ui/component-dependencies/-/component-dependencies-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "@s-ui/theme" "8" + "@schibstedspain/sui-theme" "8" + "@schibstedspain/theme-basic" "7" + "classnames" "2.2.5" + +"@s-ui/documentation-library@1": + "integrity" "sha512-yD2+qIi3hXYI9Tb+5+zjCyygoW0JkF3ioAvLx+1zcFo/xvxJRRTjTNID5s7PqQn9PtEFCbB6SqEHKI+XTOvWDg==" + "resolved" "https://registry.npmjs.org/@s-ui/documentation-library/-/documentation-library-1.23.0.tgz" + "version" "1.23.0" + dependencies: + "@s-ui/component-dependencies" "1" + "color" "3" + "isomorphic-fetch" "3" + "lodash.debounce" "4" + "react" "17" + "react-dom" "17" + "react-extra-prop-types" "0" + "react-icons" "4" + "react-is" "17" + "react-use" "17" + +"@s-ui/helpers@1": + "integrity" "sha512-jmukcKk5IeCvhmAeaeyJWwXwbAXFIlFXM1PonzQssHgl+LweVnsPM7t4lk0wp9MiawJ70mhgtm68klXtee6RMw==" + "resolved" "https://registry.npmjs.org/@s-ui/helpers/-/helpers-1.38.0.tgz" + "version" "1.38.0" + dependencies: + "execa" "5.1.1" + "fs-extra" "10.1.0" + "p-queue" "6.6.2" + +"@s-ui/hoc@1": + "integrity" "sha512-sDdtw4kCKPrNmq3HiE0Buwk8uBuH1mvbjlik3pTpWO5/V7Kvp85Q+ZDQ+U9Byy3UQ7KqRqV/EYlsZWpsCaUN4A==" + "resolved" "https://registry.npmjs.org/@s-ui/hoc/-/hoc-1.36.0.tgz" + "version" "1.36.0" + dependencies: + "intersection-observer" "0.10.0" + +"@s-ui/js@2": + "integrity" "sha512-ieRvG7KjNxh0IHzvOCQCeehXDAU6TjFwVHRUMNotHH+h4pi+2Uol9HbO3AIRHg7AAx12L9AjNBvW3ol7AlEp8A==" + "resolved" "https://registry.npmjs.org/@s-ui/js/-/js-2.26.0.tgz" + "version" "2.26.0" + dependencies: + "bowser" "2.11.0" + "cookie" "0.3.1" + "htmr" "1.0.0" + "js-cookie" "2.1.4" + "just-camel-case" "4.0.2" + "just-capitalize" "1.0.0" + "just-kebab-case" "1.1.0" + "lodash.debounce" "4.0.8" + "lodash.throttle" "4.1.1" + "nanoid" "3.3.1" + "qs" "6.7.0" + "remove-accents" "0.4.2" + +"@s-ui/lint@4": + "integrity" "sha512-jt4sQee6LcTLvXtJbzjCOTTMXNabnPr5PaCLaIiUJBOEkJ+vq5TfUjHeyjRbd/kYNbfF1EzwtttdmUiEQwcqMA==" + "resolved" "https://registry.npmjs.org/@s-ui/lint/-/lint-4.28.0.tgz" + "version" "4.28.0" + dependencies: + "@babel/core" "7.18.10" + "@babel/eslint-parser" "7.18.9" + "@babel/eslint-plugin" "7.18.10" + "@s-ui/helpers" "1" + "@typescript-eslint/eslint-plugin" "5.33.0" + "commander" "8.3.0" + "eslint" "8.20.0" + "eslint-config-prettier" "8.5.0" + "eslint-config-standard" "17.0.0" + "eslint-config-standard-with-typescript" "22.0.0" + "eslint-plugin-chai-friendly" "0.7.2" + "eslint-plugin-cypress" "2.12.1" + "eslint-plugin-import" "2.26.0" + "eslint-plugin-n" "15.2.5" + "eslint-plugin-no-only-tests" "3.0.0" + "eslint-plugin-prettier" "4.2.1" + "eslint-plugin-promise" "6.0.0" + "eslint-plugin-react" "7.30.1" + "eslint-plugin-react-hooks" "4.6.0" + "eslint-plugin-simple-import-sort" "7.0.0" + "postcss-scss" "4.0.4" + "prettier" "2.7.1" + "stylelint" "14.11.0" + "stylelint-config-prettier" "9.0.3" + "stylelint-config-recommended-scss" "7.0.0" + "stylelint-prettier" "2.0.0" + +"@s-ui/mono@2": + "integrity" "sha512-8bfXri7qYpi6rP5bbN/lTfm0Ojj70d6lTWeSWq4dx8R32FV4Rh8shC5vf4xf9kYp+BbzGG0XS7HaIAm7AA8tpg==" + "resolved" "https://registry.npmjs.org/@s-ui/mono/-/mono-2.34.0.tgz" + "version" "2.34.0" + dependencies: + "@s-ui/helpers" "1" + "commander" "8.3.0" + "conventional-changelog" "3.1.25" + "enquirer" "2.3.6" + "git-url-parse" "12.0.0" + "glob" "8.0.3" + "word-wrap" "1.2.3" + +"@s-ui/precommit@3": + "integrity" "sha512-HgUqApnb2AeMyzWXCDeTER2qehlAieL4BnddovtOKcQVCOgduCFc0xpeFNaKBh1m19i4seT5gZpsnPSZX0HsTg==" + "resolved" "https://registry.npmjs.org/@s-ui/precommit/-/precommit-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "dlv" "1.1.3" + "dset" "3.1.2" + +"@s-ui/react-atom-action-button@file:/home/dell/Desktop/sui-components/components/atom/actionButton": + "resolved" "file:components/atom/actionButton" + "version" "1.9.0" + dependencies: + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-atom-back-to-top-demo@file:/home/dell/Desktop/sui-components/components/atom/backToTop/demo": + "resolved" "file:components/atom/backToTop/demo" + "version" "1.0.0" + +"@s-ui/react-atom-back-to-top@file:/home/dell/Desktop/sui-components/components/atom/backToTop": + "resolved" "file:components/atom/backToTop" + "version" "2.2.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-hooks" "1" + +"@s-ui/react-atom-badge-demo@file:/home/dell/Desktop/sui-components/components/atom/badge/demo": + "resolved" "file:components/atom/badge/demo" + "version" "1.1.0" + +"@s-ui/react-atom-badge@file:/home/dell/Desktop/sui-components/components/atom/badge": + "resolved" "file:components/atom/badge" + "version" "1.27.0" + dependencies: + "@s-ui/component-dependencies" "latest" + +"@s-ui/react-atom-button-demo@file:/home/dell/Desktop/sui-components/components/atom/button/demo": + "resolved" "file:components/atom/button/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-atom-button@1", "@s-ui/react-atom-button@file:/home/dell/Desktop/sui-components/components/atom/button": + "resolved" "file:components/atom/button" + "version" "1.89.0" + dependencies: + "@s-ui/component-dependencies" "latest" + +"@s-ui/react-atom-card-demo@file:/home/dell/Desktop/sui-components/components/atom/card/demo": + "resolved" "file:components/atom/card/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-layout-media-query" "1" + +"@s-ui/react-atom-card@file:/home/dell/Desktop/sui-components/components/atom/card": + "resolved" "file:components/atom/card" + "version" "1.23.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-checkbox-demo@file:/home/dell/Desktop/sui-components/components/atom/checkbox/demo": + "resolved" "file:components/atom/checkbox/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "react-json-view" "1.21.3" + "react-use" "17.4.0" + +"@s-ui/react-atom-checkbox@2": + "integrity" "sha512-z7AW2Ujmu+8Ti+zjvQf1pvntn/yHXrUzx5z3URFc4bU/ilz1d7J37Y116G4hbI5MUqk0nEOPm2nVKVky4t2QKg==" + "resolved" "https://registry.npmjs.org/@s-ui/react-atom-checkbox/-/react-atom-checkbox-2.20.0.tgz" + "version" "2.20.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-checkbox@3", "@s-ui/react-atom-checkbox@file:/home/dell/Desktop/sui-components/components/atom/checkbox": + "resolved" "file:components/atom/checkbox" + "version" "3.1.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-hooks" "1" + +"@s-ui/react-atom-help-text-demo@file:/home/dell/Desktop/sui-components/components/atom/helpText/demo": + "resolved" "file:components/atom/helpText/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-checkbox" "2" + "@s-ui/react-atom-input" "5" + "@s-ui/react-atom-label" "1" + "@s-ui/react-atom-textarea" "2" + +"@s-ui/react-atom-help-text@1", "@s-ui/react-atom-help-text@file:/home/dell/Desktop/sui-components/components/atom/helpText": + "resolved" "file:components/atom/helpText" + "version" "1.8.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-icon-demo@file:/home/dell/Desktop/sui-components/components/atom/icon/demo": + "resolved" "file:components/atom/icon/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-button" "1" + +"@s-ui/react-atom-icon@1.14.0": + "integrity" "sha512-IlHAbjJb0zKfC6RdGOPxSYjOfpFPxdH8bOw8e9rwnBivK6Ugreepmo5pyTgKdxRbq+GFKKhJ2G+Ghyx87AG5IA==" + "resolved" "https://registry.npmjs.org/@s-ui/react-atom-icon/-/react-atom-icon-1.14.0.tgz" + "version" "1.14.0" + dependencies: + "@s-ui/react-hooks" "1" + +"@s-ui/react-atom-icon@1", "@s-ui/react-atom-icon@file:/home/dell/Desktop/sui-components/components/atom/icon": + "resolved" "file:components/atom/icon" + "version" "1.18.0" + dependencies: + "@s-ui/react-hooks" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + +"@s-ui/react-atom-image-demo@file:/home/dell/Desktop/sui-components/components/atom/image/demo": + "resolved" "file:components/atom/image/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "@s-ui/react-atom-spinner" "1" + "react-use" "15" + +"@s-ui/react-atom-image@2", "@s-ui/react-atom-image@file:/home/dell/Desktop/sui-components/components/atom/image": + "resolved" "file:components/atom/image" + "version" "2.16.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-primitive-injector" "1" + +"@s-ui/react-atom-input-demo@file:/home/dell/Desktop/sui-components/components/atom/input/demo": + "resolved" "file:components/atom/input/demo" + "version" "1.0.0" + +"@s-ui/react-atom-input@3", "@s-ui/react-atom-input@5", "@s-ui/react-atom-input@file:/home/dell/Desktop/sui-components/components/atom/input": + "resolved" "file:components/atom/input" + "version" "5.22.0" + dependencies: + "@s-ui/react-hooks" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + "imask" "3.4.0" + +"@s-ui/react-atom-label-demo@file:/home/dell/Desktop/sui-components/components/atom/label/demo": + "resolved" "file:components/atom/label/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-checkbox" "2" + "@s-ui/react-atom-icon" "1" + "@s-ui/react-atom-input" "5" + +"@s-ui/react-atom-label@1", "@s-ui/react-atom-label@file:/home/dell/Desktop/sui-components/components/atom/label": + "resolved" "file:components/atom/label" + "version" "1.22.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-panel-demo@file:/home/dell/Desktop/sui-components/components/atom/panel/demo": + "resolved" "file:components/atom/panel/demo" + "version" "1.1.0" + +"@s-ui/react-atom-panel@file:/home/dell/Desktop/sui-components/components/atom/panel": + "resolved" "file:components/atom/panel" + "version" "1.16.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + +"@s-ui/react-atom-pin-input@1", "@s-ui/react-atom-pin-input@file:/home/dell/Desktop/sui-components/components/atom/pinInput": + "resolved" "file:components/atom/pinInput" + "version" "1.10.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-hooks" "1" + +"@s-ui/react-atom-popover-demo@file:/home/dell/Desktop/sui-components/components/atom/popover/demo": + "resolved" "file:components/atom/popover/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "react-use" "17" + +"@s-ui/react-atom-popover@file:/home/dell/Desktop/sui-components/components/atom/popover": + "resolved" "file:components/atom/popover" + "version" "3.11.0" + dependencies: + "@loadable/component" "5.15.x" + "@s-ui/hoc" "1" + "@s-ui/react-hooks" "1" + "reactstrap" "8.9.0" + +"@s-ui/react-atom-progress-bar-demo@file:/home/dell/Desktop/sui-components/components/atom/progressBar/demo": + "resolved" "file:components/atom/progressBar/demo" + "version" "1.0.0" + +"@s-ui/react-atom-progress-bar@file:/home/dell/Desktop/sui-components/components/atom/progressBar": + "resolved" "file:components/atom/progressBar" + "version" "2.8.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-radio-button-demo@file:/home/dell/Desktop/sui-components/components/atom/radioButton/demo": + "resolved" "file:components/atom/radioButton/demo" + "version" "1.0.0" + +"@s-ui/react-atom-radio-button@1", "@s-ui/react-atom-radio-button@file:/home/dell/Desktop/sui-components/components/atom/radioButton": + "resolved" "file:components/atom/radioButton" + "version" "1.9.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-skeleton-demo@file:/home/dell/Desktop/sui-components/components/atom/skeleton/demo": + "resolved" "file:components/atom/skeleton/demo" + "version" "1.0.0" + +"@s-ui/react-atom-skeleton@1", "@s-ui/react-atom-skeleton@file:/home/dell/Desktop/sui-components/components/atom/skeleton": + "resolved" "file:components/atom/skeleton" + "version" "1.5.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-slider-demo@file:/home/dell/Desktop/sui-components/components/atom/slider/demo": + "resolved" "file:components/atom/slider/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-checkbox" "2" + "@s-ui/react-atom-icon" "1" + "@s-ui/react-atom-input" "5" + +"@s-ui/react-atom-slider@1", "@s-ui/react-atom-slider@file:/home/dell/Desktop/sui-components/components/atom/slider": + "resolved" "file:components/atom/slider" + "version" "1.30.0" + dependencies: + "rc-slider" "9" + +"@s-ui/react-atom-spinner-demo@file:/home/dell/Desktop/sui-components/components/atom/spinner/demo": + "resolved" "file:components/atom/spinner/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-checkbox" "2" + "@s-ui/react-atom-icon" "1" + "@s-ui/react-atom-input" "5" + +"@s-ui/react-atom-spinner@1": + "integrity" "sha512-rBFO1RdiIQO0jodACwBEP+rBSZBzXvNy8gLLeH1ha1Sj4GQC9OlOovT/f8paDT6oPAtDqSlzNTFW/hNQMJRN7Q==" + "resolved" "https://registry.npmjs.org/@s-ui/react-atom-spinner/-/react-atom-spinner-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-spinner@file:/home/dell/Desktop/sui-components/components/atom/spinner": + "resolved" "file:components/atom/spinner" + "version" "2.2.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-primitive-injector" "1" + +"@s-ui/react-atom-switch-demo@file:/home/dell/Desktop/sui-components/components/atom/switch/demo": + "resolved" "file:components/atom/switch/demo" + "version" "1.3.0" + +"@s-ui/react-atom-switch@file:/home/dell/Desktop/sui-components/components/atom/switch": + "resolved" "file:components/atom/switch" + "version" "1.27.0" + dependencies: + "@s-ui/react-atom-label" "1" + +"@s-ui/react-atom-table-demo@file:/home/dell/Desktop/sui-components/components/atom/table/demo": + "resolved" "file:components/atom/table/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-button" "1" + +"@s-ui/react-atom-table@file:/home/dell/Desktop/sui-components/components/atom/table": + "resolved" "file:components/atom/table" + "version" "1.13.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-tag-demo@file:/home/dell/Desktop/sui-components/components/atom/tag/demo": + "resolved" "file:components/atom/tag/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-atom-tag@2", "@s-ui/react-atom-tag@file:/home/dell/Desktop/sui-components/components/atom/tag": + "resolved" "file:components/atom/tag" + "version" "2.44.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-textarea-demo@file:/home/dell/Desktop/sui-components/components/atom/textarea/demo": + "resolved" "file:components/atom/textarea/demo" + "version" "1.1.0" + +"@s-ui/react-atom-textarea@2", "@s-ui/react-atom-textarea@file:/home/dell/Desktop/sui-components/components/atom/textarea": + "resolved" "file:components/atom/textarea" + "version" "2.19.0" + dependencies: + "@s-ui/react-atom-help-text" "1" + "@s-ui/react-atom-input" "5" + +"@s-ui/react-atom-toast-demo@file:/home/dell/Desktop/sui-components/components/atom/toast/demo": + "resolved" "file:components/atom/toast/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "react-json-view" "1.21.3" + +"@s-ui/react-atom-toast@file:/home/dell/Desktop/sui-components/components/atom/toast": + "resolved" "file:components/atom/toast" + "version" "1.9.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-atom-tooltip-demo@file:/home/dell/Desktop/sui-components/components/atom/tooltip/demo": + "resolved" "file:components/atom/tooltip/demo" + "version" "1.1.0" + +"@s-ui/react-atom-tooltip@file:/home/dell/Desktop/sui-components/components/atom/tooltip": + "resolved" "file:components/atom/tooltip" + "version" "2.4.0" + dependencies: + "@loadable/component" "5.15.x" + "@s-ui/hoc" "1" + "@s-ui/react-hooks" "1" + "react-use" "17.3" + "reactstrap" "8.9.0" + "ua-parser-js" "0.7.28" + +"@s-ui/react-atom-upload-demo@file:/home/dell/Desktop/sui-components/components/atom/upload/demo": + "resolved" "file:components/atom/upload/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-spinner" "1" + "@s-ui/react-layout-media-query" "1" + +"@s-ui/react-atom-upload@file:/home/dell/Desktop/sui-components/components/atom/upload": + "resolved" "file:components/atom/upload" + "version" "3.9.0" + dependencies: + "@loadable/component" "5.15.x" + "@s-ui/react-atom-button" "1" + "react-dropzone" "11.5.1" + +"@s-ui/react-atom-validation-code-demo@file:/home/dell/Desktop/sui-components/components/atom/pinInput/demo": + "resolved" "file:components/atom/pinInput/demo" + "version" "1.2.0" + +"@s-ui/react-atom-validation-text-demo@file:/home/dell/Desktop/sui-components/components/atom/validationText/demo": + "resolved" "file:components/atom/validationText/demo" + "version" "1.1.0" + +"@s-ui/react-atom-validation-text@1", "@s-ui/react-atom-validation-text@file:/home/dell/Desktop/sui-components/components/atom/validationText": + "resolved" "file:components/atom/validationText" + "version" "1.8.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-behavior-sticky-demo@file:/home/dell/Desktop/sui-components/components/behavior/sticky/demo": + "resolved" "file:components/behavior/sticky/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-hooks" "1" + "lorem-ipsum" "2.0.4" + "react-use" "17.4.0" + +"@s-ui/react-behavior-sticky@file:/home/dell/Desktop/sui-components/components/behavior/sticky": + "resolved" "file:components/behavior/sticky" + "version" "1.8.0" + dependencies: + "react-stickup" "1.12" + +"@s-ui/react-context@1": + "integrity" "sha512-YvaWCUEMs5J/z+4LF4VPK/rX5F++pO/HHQbPxRP3yCVq11JV6k+9AnWzsjLG/H8GD/bJT7p9drEVWewPh18S8w==" + "resolved" "https://registry.npmjs.org/@s-ui/react-context/-/react-context-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "hoist-non-react-statics" "3.3.2" + +"@s-ui/react-hook-use-portal-demo@file:/home/dell/Desktop/sui-components/components/hook/usePortal/demo": + "resolved" "file:components/hook/usePortal/demo" + "version" "1.0.0" + dependencies: + "@popperjs/core" "2.11.6" + "@s-ui/react-hooks" "1" + "react-fast-compare" "3.2.0" + +"@s-ui/react-hook-use-portal@file:/home/dell/Desktop/sui-components/components/hook/usePortal": + "resolved" "file:components/hook/usePortal" + "version" "1.1.0" + dependencies: + "@s-ui/react-hooks" "1" + "classnames" "2.2.5" + "use-ssr" "1.0.24" + +"@s-ui/react-hooks@1": + "integrity" "sha512-49nRstrCI7AK4mgsYVKeCh+cqg0iTBLXXffQCNcvk8e16ula+HoE7/Ow3PzKlD08HD0Q4GbxUf7X+2xBg6VlBg==" + "resolved" "https://registry.npmjs.org/@s-ui/react-hooks/-/react-hooks-1.34.0.tgz" + "version" "1.34.0" + dependencies: + "@s-ui/component-dependencies" "1" + "intersection-observer" "0.10.0" + +"@s-ui/react-icons@1": + "integrity" "sha512-ZsooG1Xa3MwnEiOruM57aP9YJAztJiuAzJ8SkRgKsLRf3k9unntOYBa8LjVg2XMN4tNyma4a00mNcwZKO5SQ6w==" + "resolved" "https://registry.npmjs.org/@s-ui/react-icons/-/react-icons-1.9.1.tgz" + "version" "1.9.1" + +"@s-ui/react-layout-grid-demo@file:/home/dell/Desktop/sui-components/components/layout/grid/demo": + "resolved" "file:components/layout/grid/demo" + "version" "1.0.0" + dependencies: + "react-use" "17" + +"@s-ui/react-layout-grid@file:/home/dell/Desktop/sui-components/components/layout/grid": + "resolved" "file:components/layout/grid" + "version" "2.12.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-primitive-injector" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + +"@s-ui/react-layout-media-query@1": + "integrity" "sha512-VhOLCjOPfQKTcSz5AfpRB9jKY8QfOSipSu60ZOK2HuLUDFDiDjBPXFMdzKdFK6e2j3ewr0sDjiXCxiAjv2Akig==" + "resolved" "https://registry.npmjs.org/@s-ui/react-layout-media-query/-/react-layout-media-query-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "@s-ui/component-dependencies" "1" + "resize-observer-polyfill" "1.5.0" + "shallowequal" "1.1.0" + +"@s-ui/react-molecule-accordion-demo@file:/home/dell/Desktop/sui-components/components/molecule/accordion/demo": + "resolved" "file:components/molecule/accordion/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "@s-ui/react-atom-tag" "2" + "lorem-ipsum" "2.0.4" + "react-json-view" "1.21.3" + +"@s-ui/react-molecule-accordion@file:/home/dell/Desktop/sui-components/components/molecule/accordion": + "resolved" "file:components/molecule/accordion" + "version" "2.6.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-hooks" "1" + "@s-ui/react-primitive-injector" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + "react-use" "17.3.2" + +"@s-ui/react-molecule-autosuggest-demo@file:/home/dell/Desktop/sui-components/components/molecule/autosuggest/demo": + "resolved" "file:components/molecule/autosuggest/demo" + "version" "1.2.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-icon" "1" + "@s-ui/react-molecule-autosuggest-field" "2" + "@s-ui/react-molecule-dropdown-option" "2" + "@s-ui/react-molecule-input-tags" "2" + "@s-ui/react-molecule-select" "1" + "axios" "0.21.4" + +"@s-ui/react-molecule-autosuggest-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/autosuggestField/demo": + "resolved" "file:components/molecule/autosuggestField/demo" + "version" "1.1.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-molecule-autosuggest" "1" + "@s-ui/react-molecule-dropdown-option" "2" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-autosuggest-field@2", "@s-ui/react-molecule-autosuggest-field@file:/home/dell/Desktop/sui-components/components/molecule/autosuggestField": + "resolved" "file:components/molecule/autosuggestField" + "version" "2.10.0" + dependencies: + "@s-ui/react-molecule-autosuggest" "2" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-autosuggest@1": + "integrity" "sha512-8ZKxr02KI1YOio6UlMkJPc9ZTbj0rBm47bPxMMuKS+ayBbYiMIFf3JZ9bHi5O8/KQOjOTE0wK2WFzNrkhrhz1A==" + "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-autosuggest/-/react-molecule-autosuggest-1.16.0.tgz" + "version" "1.16.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/hoc" "1" + "@s-ui/js" "2" + "@s-ui/react-atom-input" "3" + "@s-ui/react-molecule-dropdown-list" "1" + "@s-ui/react-molecule-input-tags" "2" + +"@s-ui/react-molecule-autosuggest@2", "@s-ui/react-molecule-autosuggest@file:/home/dell/Desktop/sui-components/components/molecule/autosuggest": + "resolved" "file:components/molecule/autosuggest" + "version" "2.66.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-atom-input" "5" + "@s-ui/react-hooks" "1" + "@s-ui/react-molecule-dropdown-list" "2" + "@s-ui/react-molecule-input-tags" "2" + "@s-ui/react-primitive-injector" "1" + "lodash.isequal" "4.5" + +"@s-ui/react-molecule-avatar-demo@file:/home/dell/Desktop/sui-components/components/molecule/avatar/demo": + "resolved" "file:components/molecule/avatar/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-molecule-avatar@file:/home/dell/Desktop/sui-components/components/molecule/avatar": + "resolved" "file:components/molecule/avatar" + "version" "1.15.0" + dependencies: + "@s-ui/react-atom-image" "2" + "@s-ui/react-atom-skeleton" "1" + "@s-ui/react-primitive-injector" "1" + +"@s-ui/react-molecule-badge-counter-demo@file:/home/dell/Desktop/sui-components/components/molecule/badgeCounter/demo": + "resolved" "file:components/molecule/badgeCounter/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-molecule-badge-counter@file:/home/dell/Desktop/sui-components/components/molecule/badgeCounter": + "resolved" "file:components/molecule/badgeCounter" + "version" "1.17.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-molecule-breadcrumb-demo@file:/home/dell/Desktop/sui-components/components/molecule/breadcrumb/demo": + "resolved" "file:components/molecule/breadcrumb/demo" + "version" "1.1.0" + +"@s-ui/react-molecule-breadcrumb@file:/home/dell/Desktop/sui-components/components/molecule/breadcrumb": + "resolved" "file:components/molecule/breadcrumb" + "version" "1.26.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-hooks" "1" + "@s-ui/react-icons" "1" + +"@s-ui/react-molecule-button-group-demo@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroup/demo": + "resolved" "file:components/molecule/buttonGroup/demo" + "version" "1.2.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-icon" "1" + "@s-ui/react-atom-input" "5" + "react-use" "17.4.0" + +"@s-ui/react-molecule-button-group-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroupField/demo": + "resolved" "file:components/molecule/buttonGroupField/demo" + "version" "1.2.0" + dependencies: + "@s-ui/react-atom-button" "1" + +"@s-ui/react-molecule-button-group-field@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroupField": + "resolved" "file:components/molecule/buttonGroupField" + "version" "1.8.0" + dependencies: + "@s-ui/react-molecule-button-group" "2" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-button-group@2", "@s-ui/react-molecule-button-group@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroup": + "resolved" "file:components/molecule/buttonGroup" + "version" "2.9.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-atom-button" "1" + "@s-ui/react-primitive-injector" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + +"@s-ui/react-molecule-checkbox-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/checkboxField/demo": + "resolved" "file:components/molecule/checkboxField/demo" + "version" "1.3.0" + dependencies: + "@s-ui/hoc" "1" + +"@s-ui/react-molecule-checkbox-field@4": + "integrity" "sha512-/tqKgJMh17iEGK/2CiYSlOFYxnfLXKAwZRlNaCslrJ46CDypAGm/CiJx+WLYObJvRoQvsX0S3jpBABvviJhgQA==" + "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-checkbox-field/-/react-molecule-checkbox-field-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "@s-ui/react-atom-checkbox" "3" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-checkbox-field@file:/home/dell/Desktop/sui-components/components/molecule/checkboxField": + "resolved" "file:components/molecule/checkboxField" + "version" "5.0.0" + dependencies: + "@s-ui/react-atom-checkbox" "3" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-collapsible-demo@file:/home/dell/Desktop/sui-components/components/molecule/collapsible/demo": + "resolved" "file:components/molecule/collapsible/demo" + "version" "1.1.0" + dependencies: + "@s-ui/hoc" "1" + +"@s-ui/react-molecule-collapsible@file:/home/dell/Desktop/sui-components/components/molecule/collapsible": + "resolved" "file:components/molecule/collapsible" + "version" "1.17.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-molecule-data-counter-demo@file:/home/dell/Desktop/sui-components/components/molecule/dataCounter/demo": + "resolved" "file:components/molecule/dataCounter/demo" + "version" "1.1.0" + +"@s-ui/react-molecule-data-counter@file:/home/dell/Desktop/sui-components/components/molecule/dataCounter": + "resolved" "file:components/molecule/dataCounter" + "version" "1.16.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-input" "5" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-drawer-demo@file:/home/dell/Desktop/sui-components/components/molecule/drawer/demo": + "resolved" "file:components/molecule/drawer/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-drawer@file:/home/dell/Desktop/sui-components/components/molecule/drawer": + "resolved" "file:components/molecule/drawer" + "version" "4.6.0" + dependencies: + "@s-ui/react-hooks" "1" + +"@s-ui/react-molecule-dropdown-list-demo@file:/home/dell/Desktop/sui-components/components/molecule/dropdownList/demo": + "resolved" "file:components/molecule/dropdownList/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-molecule-dropdown-option" "2" + +"@s-ui/react-molecule-dropdown-list@1": + "integrity" "sha512-ESVv9/byvezndKbV2/GkjUdgN3zUGaz1uMzSTPhWxvovE2zyz4DWrIzoUATz7FLONOOsXx5ddbN8XhSlnJkK4g==" + "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-dropdown-list/-/react-molecule-dropdown-list-1.33.0.tgz" + "version" "1.33.0" + dependencies: + "@s-ui/react-atom-input" "5" + "@s-ui/react-hooks" "1" + "@s-ui/react-molecule-dropdown-option" "1" + "@s-ui/react-primitive-injector" "1" + "lodash.isequal" "4.5" + +"@s-ui/react-molecule-dropdown-list@2", "@s-ui/react-molecule-dropdown-list@file:/home/dell/Desktop/sui-components/components/molecule/dropdownList": + "resolved" "file:components/molecule/dropdownList" + "version" "2.1.0" + dependencies: + "@s-ui/react-atom-input" "5" + "@s-ui/react-hooks" "1" + "@s-ui/react-molecule-dropdown-option" "2" + "@s-ui/react-primitive-injector" "1" + "lodash.isequal" "4.5" + +"@s-ui/react-molecule-dropdown-option-demo@file:/home/dell/Desktop/sui-components/components/molecule/dropdownOption/demo": + "resolved" "file:components/molecule/dropdownOption/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-input" "5" + "@s-ui/react-hooks" "1" + "lorem-ipsum" "2.0.4" + +"@s-ui/react-molecule-dropdown-option@1": + "integrity" "sha512-GRGm9cTSle8lpeBt463sjd0pZdc2XaRKOeunBYfPmpGmn8HB2XIGWFsYxHg1jtIPhuciAEIOMsQtwSR1R8d8cw==" + "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-dropdown-option/-/react-molecule-dropdown-option-1.45.0.tgz" + "version" "1.45.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-atom-checkbox" "2" + "@s-ui/react-hooks" "1" + +"@s-ui/react-molecule-dropdown-option@2", "@s-ui/react-molecule-dropdown-option@file:/home/dell/Desktop/sui-components/components/molecule/dropdownOption": + "resolved" "file:components/molecule/dropdownOption" + "version" "2.1.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-atom-checkbox" "2" + "@s-ui/react-hooks" "1" + +"@s-ui/react-molecule-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/field/demo": + "resolved" "file:components/molecule/field/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-field@1", "@s-ui/react-molecule-field@file:/home/dell/Desktop/sui-components/components/molecule/field": + "resolved" "file:components/molecule/field" + "version" "1.36.0" + dependencies: + "@s-ui/react-atom-help-text" "1" + "@s-ui/react-atom-label" "1" + "@s-ui/react-atom-validation-text" "1" + "@s-ui/react-primitive-injector" "1" + +"@s-ui/react-molecule-image-editor-demo@file:/home/dell/Desktop/sui-components/components/molecule/imageEditor/demo": + "resolved" "file:components/molecule/imageEditor/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-image-editor@file:/home/dell/Desktop/sui-components/components/molecule/imageEditor": + "resolved" "file:components/molecule/imageEditor" + "version" "1.10.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-atom-slider" "1" + "@s-ui/react-primitive-injector" "1" + "classnames" "2.2.5" + "react-easy-crop" "3.4.0" + +"@s-ui/react-molecule-input-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/inputField/demo": + "resolved" "file:components/molecule/inputField/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-input-field@file:/home/dell/Desktop/sui-components/components/molecule/inputField": + "resolved" "file:components/molecule/inputField" + "version" "4.7.0" + dependencies: + "@s-ui/react-atom-input" "5" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-input-tags-demo@file:/home/dell/Desktop/sui-components/components/molecule/inputTags/demo": + "resolved" "file:components/molecule/inputTags/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-molecule-input-tags@2", "@s-ui/react-molecule-input-tags@file:/home/dell/Desktop/sui-components/components/molecule/inputTags": + "resolved" "file:components/molecule/inputTags" + "version" "2.25.0" + dependencies: + "@s-ui/react-atom-input" "5" + "@s-ui/react-atom-tag" "2" + "@s-ui/react-hooks" "1" + +"@s-ui/react-molecule-modal-demo@file:/home/dell/Desktop/sui-components/components/molecule/modal/demo": + "resolved" "file:components/molecule/modal/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "lorem-ipsum" "2.0.4" + +"@s-ui/react-molecule-modal@1", "@s-ui/react-molecule-modal@file:/home/dell/Desktop/sui-components/components/molecule/modal": + "resolved" "file:components/molecule/modal" + "version" "1.45.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-hooks" "1" + +"@s-ui/react-molecule-notification-demo@file:/home/dell/Desktop/sui-components/components/molecule/notification/demo": + "resolved" "file:components/molecule/notification/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-notification@1", "@s-ui/react-molecule-notification@file:/home/dell/Desktop/sui-components/components/molecule/notification": + "resolved" "file:components/molecule/notification" + "version" "1.34.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-icons" "1" + +"@s-ui/react-molecule-pagination-demo@file:/home/dell/Desktop/sui-components/components/molecule/pagination/demo": + "resolved" "file:components/molecule/pagination/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-input" "5" + "@s-ui/react-layout-media-query" "1" + "@s-ui/react-molecule-button-group" "2" + +"@s-ui/react-molecule-pagination@file:/home/dell/Desktop/sui-components/components/molecule/pagination": + "resolved" "file:components/molecule/pagination" + "version" "2.20.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-molecule-button-group" "2" + +"@s-ui/react-molecule-photo-uploader-demo@file:/home/dell/Desktop/sui-components/components/molecule/photoUploader/demo": + "resolved" "file:components/molecule/photoUploader/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-molecule-dropdown-option" "2" + "@s-ui/react-molecule-select" "1" + +"@s-ui/react-molecule-photo-uploader@file:/home/dell/Desktop/sui-components/components/molecule/photoUploader": + "resolved" "file:components/molecule/photoUploader" + "version" "2.21.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-icon" "1" + "@s-ui/react-hooks" "1" + "@s-ui/react-molecule-notification" "1" + "react-dropzone" "11.5" + "react-sortablejs" "6.0" + "sortablejs" "1.14.0" + +"@s-ui/react-molecule-progress-steps-demo@file:/home/dell/Desktop/sui-components/components/molecule/progressSteps/demo": + "resolved" "file:components/molecule/progressSteps/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-molecule-progress-steps@file:/home/dell/Desktop/sui-components/components/molecule/progressSteps": + "resolved" "file:components/molecule/progressSteps" + "version" "2.9.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-molecule-stepper" "2" + +"@s-ui/react-molecule-quick-action-demo@file:/home/dell/Desktop/sui-components/components/molecule/quickAction/demo": + "resolved" "file:components/molecule/quickAction/demo" + "version" "1.1.0" + +"@s-ui/react-molecule-quick-action@file:/home/dell/Desktop/sui-components/components/molecule/quickAction": + "resolved" "file:components/molecule/quickAction" + "version" "1.9.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-molecule-radio-button-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonField/demo": + "resolved" "file:components/molecule/radioButtonField/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-radio-button-field@1", "@s-ui/react-molecule-radio-button-field@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonField": + "resolved" "file:components/molecule/radioButtonField" + "version" "1.15.0" + dependencies: + "@s-ui/react-atom-radio-button" "1" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-radio-button-group-demo@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonGroup/demo": + "resolved" "file:components/molecule/radioButtonGroup/demo" + "version" "1.1.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-atom-label" "1" + "@s-ui/react-atom-radio-button" "1" + "@s-ui/react-molecule-radio-button-field" "1" + +"@s-ui/react-molecule-radio-button-group@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonGroup": + "resolved" "file:components/molecule/radioButtonGroup" + "version" "1.9.0" + dependencies: + "@s-ui/component-dependencies" "1" + +"@s-ui/react-molecule-rating-demo@file:/home/dell/Desktop/sui-components/components/molecule/rating/demo": + "resolved" "file:components/molecule/rating/demo" + "version" "1.1.0" + +"@s-ui/react-molecule-rating@file:/home/dell/Desktop/sui-components/components/molecule/rating": + "resolved" "file:components/molecule/rating" + "version" "1.21.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-atom-icon" "1" + +"@s-ui/react-molecule-select-demo@file:/home/dell/Desktop/sui-components/components/molecule/select/demo": + "resolved" "file:components/molecule/select/demo" + "version" "1.0.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-molecule-dropdown-option" "2" + +"@s-ui/react-molecule-select-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/selectField/demo": + "resolved" "file:components/molecule/selectField/demo" + "version" "1.0.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-molecule-dropdown-option" "2" + "@s-ui/react-molecule-field" "1" + "@s-ui/react-molecule-select" "1" + +"@s-ui/react-molecule-select-field@file:/home/dell/Desktop/sui-components/components/molecule/selectField": + "resolved" "file:components/molecule/selectField" + "version" "1.10.0" + dependencies: + "@s-ui/react-molecule-field" "1" + "@s-ui/react-molecule-select" "1" + +"@s-ui/react-molecule-select-popover-demo@file:/home/dell/Desktop/sui-components/components/molecule/selectPopover/demo": + "resolved" "file:components/molecule/selectPopover/demo" + "version" "1.2.0" + dependencies: + "@s-ui/react-icons" "1" + "@s-ui/react-molecule-dropdown-option" "2" + "@s-ui/react-molecule-modal" "1" + "@s-ui/react-molecule-select" "1" + +"@s-ui/react-molecule-select-popover@file:/home/dell/Desktop/sui-components/components/molecule/selectPopover": + "resolved" "file:components/molecule/selectPopover" + "version" "1.33.0" + dependencies: + "@s-ui/react-atom-button" "1" + +"@s-ui/react-molecule-select@1", "@s-ui/react-molecule-select@file:/home/dell/Desktop/sui-components/components/molecule/select": + "resolved" "file:components/molecule/select" + "version" "1.56.0" + dependencies: + "@s-ui/js" "2" + "@s-ui/react-atom-input" "5" + "@s-ui/react-hooks" "1" + "@s-ui/react-molecule-dropdown-list" "2" + "@s-ui/react-molecule-input-tags" "2" + "@s-ui/react-primitive-injector" "1" + +"@s-ui/react-molecule-stepper-demo@file:/home/dell/Desktop/sui-components/components/molecule/stepper/demo": + "resolved" "file:components/molecule/stepper/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-icon" "1" + "@s-ui/react-hooks" "1" + "@s-ui/react-primitive-injector" "1.1.0" + "@s-ui/react-primitive-polymorphic-element" "1" + "lorem-ipsum" "2.0.4" + +"@s-ui/react-molecule-stepper@2", "@s-ui/react-molecule-stepper@file:/home/dell/Desktop/sui-components/components/molecule/stepper": + "resolved" "file:components/molecule/stepper" + "version" "2.3.0" + dependencies: + "@s-ui/react-hooks" "1" + "@s-ui/react-primitive-injector" "1" + "@s-ui/react-primitive-polymorphic-element" "1" + +"@s-ui/react-molecule-tabs-demo@file:/home/dell/Desktop/sui-components/components/molecule/tabs/demo": + "resolved" "file:components/molecule/tabs/demo" + "version" "1.1.0" + dependencies: + "@s-ui/react-atom-icon" "1.14.0" + "@s-ui/react-layout-media-query" "1" + "lorem-ipsum" "2.0.4" + +"@s-ui/react-molecule-tabs@file:/home/dell/Desktop/sui-components/components/molecule/tabs": + "resolved" "file:components/molecule/tabs" + "version" "2.36.0" + dependencies: + "@s-ui/component-dependencies" "1" + "@s-ui/react-hooks" "1" + +"@s-ui/react-molecule-textarea-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/textareaField/demo": + "resolved" "file:components/molecule/textareaField/demo" + "version" "1.2.0" + dependencies: + "@s-ui/react-atom-button" "1" + +"@s-ui/react-molecule-textarea-field@file:/home/dell/Desktop/sui-components/components/molecule/textareaField": + "resolved" "file:components/molecule/textareaField" + "version" "3.10.0" + dependencies: + "@s-ui/react-atom-textarea" "2" + "@s-ui/react-molecule-field" "1" + +"@s-ui/react-molecule-thumbnail-demo@file:/home/dell/Desktop/sui-components/components/molecule/thumbnail/demo": + "resolved" "file:components/molecule/thumbnail/demo" + "version" "1.0.0" + dependencies: + "@s-ui/react-atom-spinner" "1" + "@s-ui/react-layout-media-query" "1" + +"@s-ui/react-molecule-thumbnail@file:/home/dell/Desktop/sui-components/components/molecule/thumbnail": + "resolved" "file:components/molecule/thumbnail" + "version" "2.13.0" + dependencies: + "@s-ui/react-atom-image" "2" + +"@s-ui/react-molecule-validation-code-demo@file:/home/dell/Desktop/sui-components/components/molecule/validationCode/demo": + "resolved" "file:components/molecule/validationCode/demo" + "version" "1.0.0" + +"@s-ui/react-molecule-validation-code@file:/home/dell/Desktop/sui-components/components/molecule/validationCode": + "resolved" "file:components/molecule/validationCode" + "version" "1.7.0" + dependencies: + "@s-ui/react-atom-button" "1" + "@s-ui/react-atom-pin-input" "1" + "@s-ui/react-atom-validation-text" "1" + +"@s-ui/react-organism-nested-checkboxes-demo@file:/home/dell/Desktop/sui-components/components/organism/nestedCheckboxes/demo": + "resolved" "file:components/organism/nestedCheckboxes/demo" + "version" "1.0.0" + dependencies: + "@s-ui/hoc" "1" + "@s-ui/react-atom-icon" "1" + "react-json-view" "1.21.3" + +"@s-ui/react-organism-nested-checkboxes@file:/home/dell/Desktop/sui-components/components/organism/nestedCheckboxes": + "resolved" "file:components/organism/nestedCheckboxes" + "version" "3.1.0" + dependencies: + "@s-ui/react-molecule-checkbox-field" "4" + +"@s-ui/react-primitive-injector-demo@file:/home/dell/Desktop/sui-components/components/primitive/injector/demo": + "resolved" "file:components/primitive/injector/demo" + "version" "1.0.0" + dependencies: + "react-json-view" "1.21.3" + +"@s-ui/react-primitive-injector@1.1.0": + "integrity" "sha512-NvSRY4FwE7c8FVL9bbM2jCjSeFmBuNjnWMm6c61ZSmdHoQThBrhq3i/tHIemfzrKXovBkPbWmUWp/eeuV1k79g==" + "resolved" "https://registry.npmjs.org/@s-ui/react-primitive-injector/-/react-primitive-injector-1.1.0.tgz" + "version" "1.1.0" + +"@s-ui/react-primitive-injector@1", "@s-ui/react-primitive-injector@file:/home/dell/Desktop/sui-components/components/primitive/injector": + "resolved" "file:components/primitive/injector" + "version" "1.2.0" + +"@s-ui/react-primitive-polymorphic-element-demo@file:/home/dell/Desktop/sui-components/components/primitive/polymorphicElement/demo": + "resolved" "file:components/primitive/polymorphicElement/demo" + "version" "1.0.0" + +"@s-ui/react-primitive-polymorphic-element@1", "@s-ui/react-primitive-polymorphic-element@file:/home/dell/Desktop/sui-components/components/primitive/polymorphicElement": + "resolved" "file:components/primitive/polymorphicElement" + "version" "1.2.0" + +"@s-ui/react-router@1": + "integrity" "sha512-XlJ3OeLoWgsGKnXsB5GLc/EWW7T4S+jyfJ0lkBMjQbIVB+72nnpx+L9zlXTJBwWS6ahKOQMQZTUzIhm1Hsbrfg==" + "resolved" "https://registry.npmjs.org/@s-ui/react-router/-/react-router-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "classnames" "2.2.5" + "history" "3.3.0" + "hoist-non-react-statics" "3.3.2" + +"@s-ui/sass-loader@1": + "integrity" "sha512-cbtJSavyj2HKQKZeQnj24aySmz000UjsVZiIWqoHWvP0wyOJXZ4zOWhVb/CKclSVEIGOIGYMrci6Ej441j7gfg==" + "resolved" "https://registry.npmjs.org/@s-ui/sass-loader/-/sass-loader-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "cli-source-preview" "1.1.0" + "co" "4.6.0" + "fs-extra" "10.1.0" + "loader-utils" "3.2.0" + +"@s-ui/studio@11": + "integrity" "sha512-8dB3hObICkpKIs2OAYiPTWn2QvVuyRCUx9dt2g6B4Ezx8ZkiU7Flh8++migJZCZHyD+SG/Oa65iPfeO4eX4mzw==" + "resolved" "https://registry.npmjs.org/@s-ui/studio/-/studio-11.23.0.tgz" + "version" "11.23.0" + dependencies: + "@babel/cli" "7" + "@s-ui/bundler" "9" + "@s-ui/helpers" "1" + "@s-ui/react-context" "1" + "@s-ui/react-router" "1" + "@s-ui/test" "8" + "@testing-library/react" "10.4.9" + "@testing-library/react-hooks" "4.0.1" + "@testing-library/user-event" "13.5.0" + "chai" "4.3.6" + "chai-dom" "1.11.0" + "classnames" "2.2.5" + "commander" "8.3.0" + "deepmerge" "4.2.2" + "fast-glob" "3.2.11" + "fs-extra" "10.1.0" + "git-url-parse" "12.0.0" + "hoist-non-react-statics" "3.3.2" + "just-debounce-it" "1.5.0" + "just-kebab-case" "1.1.0" + "just-pascal-case" "1.1.0" + "micromatch" "4.0.5" + "node-fetch" "2.6.7" + "normalize.css" "8.0.1" + "react" "17" + "react-docgen" "5.3.1" + "react-dom" "17" + "react-test-renderer" "17" + +"@s-ui/test@8": + "integrity" "sha512-pCSrcGgrBYIpLMYcHSKWmtBEw5hVyIfdlks4d340CL6Iueaf9fFWSBTajXClh7xfqniAMtHlHeS9ReXbNfNE/w==" + "resolved" "https://registry.npmjs.org/@s-ui/test/-/test-8.23.0.tgz" + "version" "8.23.0" + dependencies: + "@babel/core" "7.18.10" + "@babel/plugin-transform-modules-commonjs" "7.18.6" + "@babel/register" "7.18.9" + "@s-ui/helpers" "1" + "babel-loader" "8.2.5" + "babel-plugin-dynamic-import-node" "2.3.3" + "babel-plugin-istanbul" "6.0.0" + "babel-preset-sui" "3" + "commander" "8.3.0" + "karma" "6.4.0" + "karma-chrome-launcher" "3.1.1" + "karma-coverage" "2.2.0" + "karma-firefox-launcher" "2.1.2" + "karma-mocha" "2.0.1" + "karma-spec-reporter" "0.0.34" + "karma-webpack" "5.0.0" + "mocha" "10.0.0" + "process" "0.11.10" + "stream-browserify" "3.0.0" + "tty-browserify" "0.0.1" + "util" "0.12.4" + "webpack" "5.74.0" + +"@s-ui/theme@8": + "integrity" "sha512-QXMUv9Ran5/n8iVJ+wkhZJLMiBGZUhIvZ10EFJ2n8LqBQV3oJap9guuhs/+CG4B7OM8/lc9/UdTWDb98n95wWA==" + "resolved" "https://registry.npmjs.org/@s-ui/theme/-/theme-8.124.0.tgz" + "version" "8.124.0" + +"@schibstedspain/sui-theme@8": + "integrity" "sha512-0WzFXGOITJug30rBq1M7Ndmdaeizu6biTN/BdrHhfivYlfBd8xDJ8p7P2JcrH8cCXsmo1aL/ql1HtC8Y5l/i1w==" + "resolved" "https://registry.npmjs.org/@schibstedspain/sui-theme/-/sui-theme-8.69.0.tgz" + "version" "8.69.0" + +"@schibstedspain/theme-basic@7": + "integrity" "sha512-oyKPJnn9HZMVDuNKSrj1gtKUKntnctGiiRGt00QXlHNfGngKcGQmC42KiuCG6XmhFs9oTY38+BL8jCtkGrs+Lw==" + "resolved" "https://registry.npmjs.org/@schibstedspain/theme-basic/-/theme-basic-7.28.0.tgz" + "version" "7.28.0" + +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": + "integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + "version" "1.8.3" + dependencies: + "type-detect" "4.0.8" + +"@sinonjs/fake-timers@^7.1.0", "@sinonjs/fake-timers@>=5": + "integrity" "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" + "version" "7.1.2" + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/samsam@^6.0.2": + "integrity" "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==" + "resolved" "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz" + "version" "6.1.1" + dependencies: + "@sinonjs/commons" "^1.6.0" + "lodash.get" "^4.4.2" + "type-detect" "^4.0.8" + +"@sinonjs/text-encoding@^0.7.1": + "integrity" "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz" + "version" "0.7.2" + +"@socket.io/component-emitter@~3.1.0": + "integrity" "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "resolved" "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz" + "version" "3.1.0" + +"@testing-library/dom@^7.22.3": + "integrity" "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==" + "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz" + "version" "7.31.2" + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + "aria-query" "^4.2.2" + "chalk" "^4.1.0" + "dom-accessibility-api" "^0.5.6" + "lz-string" "^1.4.4" + "pretty-format" "^26.6.2" + +"@testing-library/react-hooks@4.0.1": + "integrity" "sha512-DufI8Q2GOM7W2yFEEfz85VNVNaHZL0tPZyBT6ytV7HK+1A4frL1ty+W5NBE0u0K3EFV/Pg5O28HGNEtp9D5EyA==" + "resolved" "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "@babel/runtime" "^7.12.5" + "@types/react" ">=16.9.0" + "@types/react-test-renderer" ">=16.9.0" + +"@testing-library/react@10.4.9": + "integrity" "sha512-pHZKkqUy0tmiD81afs8xfiuseXfU/N7rAX3iKjeZYje86t9VaB0LrxYVa+OOsvkrveX5jCK3IjajVn2MbePvqA==" + "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-10.4.9.tgz" + "version" "10.4.9" + dependencies: + "@babel/runtime" "^7.10.3" + "@testing-library/dom" "^7.22.3" + +"@testing-library/user-event@13.5.0": + "integrity" "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==" + "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" + "version" "13.5.0" + dependencies: + "@babel/runtime" "^7.12.5" + +"@trysound/sax@0.2.0": + "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + "version" "0.2.0" + +"@types/aria-query@^4.2.0": + "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" + "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" + "version" "4.2.2" + +"@types/body-parser@*": + "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" + "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + "version" "1.19.2" + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + "integrity" "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==" + "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" + "version" "3.5.10" + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + "integrity" "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==" + "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + "version" "3.4.35" + dependencies: + "@types/node" "*" + +"@types/cookie@^0.4.1": + "integrity" "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" + "version" "0.4.1" + +"@types/cors@^2.8.12": + "integrity" "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "resolved" "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz" + "version" "2.8.12" + +"@types/eslint-scope@^3.7.3": + "integrity" "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" + "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + "version" "3.7.4" + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + "integrity" "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz" + "version" "8.4.6" + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.51": + "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" + "version" "0.0.51" + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + "integrity" "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==" + "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" + "version" "4.17.31" + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + "integrity" "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==" + "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" + "version" "4.17.14" + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/html-minifier-terser@^6.0.0": + "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + +"@types/http-proxy@^1.17.8": + "integrity" "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==" + "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" + "version" "1.17.9" + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + "version" "2.0.4" + +"@types/istanbul-lib-report@*": + "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/js-cookie@^2.2.6": + "integrity" "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" + "resolved" "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz" + "version" "2.2.7" + +"@types/js-cookie@2.2.6": + "integrity" "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==" + "resolved" "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz" + "version" "2.2.6" + +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + "version" "7.0.11" + +"@types/json5@^0.0.29": + "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + "version" "0.0.29" + +"@types/mime@*": + "integrity" "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + "resolved" "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + "version" "3.0.1" + +"@types/minimist@^1.2.0": + "integrity" "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" + "version" "1.2.2" + +"@types/node@*", "@types/node@>=10.0.0": + "integrity" "sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-18.8.2.tgz" + "version" "18.8.2" + +"@types/normalize-package-data@^2.4.0": + "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + "version" "2.4.1" + +"@types/parse-json@^4.0.0": + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" + +"@types/prop-types@*": + "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + "version" "15.7.5" + +"@types/qs@*": + "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + "version" "6.9.7" + +"@types/range-parser@*": + "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + "version" "1.2.4" + +"@types/react-test-renderer@>=16.9.0": + "integrity" "sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==" + "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz" + "version" "18.0.0" + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@>=16.9.0": + "integrity" "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz" + "version" "18.0.21" + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + "csstype" "^3.0.2" + +"@types/retry@0.12.0": + "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" + +"@types/scheduler@*": + "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + "version" "0.16.2" + +"@types/serve-index@^1.9.1": + "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" + "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + "integrity" "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==" + "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" + "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + "version" "0.3.33" + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.1": + "integrity" "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" + "version" "8.5.3" + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + "version" "21.0.0" + +"@types/yargs@^15.0.0": + "integrity" "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" + "version" "15.0.14" + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@5.33.0": + "integrity" "sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.0.tgz" + "version" "5.33.0" + dependencies: + "@typescript-eslint/scope-manager" "5.33.0" + "@typescript-eslint/type-utils" "5.33.0" + "@typescript-eslint/utils" "5.33.0" + "debug" "^4.3.4" + "functional-red-black-tree" "^1.0.1" + "ignore" "^5.2.0" + "regexpp" "^3.2.0" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/parser@^5.0.0": + "integrity" "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz" + "version" "5.39.0" + dependencies: + "@typescript-eslint/scope-manager" "5.39.0" + "@typescript-eslint/types" "5.39.0" + "@typescript-eslint/typescript-estree" "5.39.0" + "debug" "^4.3.4" + +"@typescript-eslint/scope-manager@5.33.0": + "integrity" "sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.0.tgz" + "version" "5.33.0" + dependencies: + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/visitor-keys" "5.33.0" + +"@typescript-eslint/scope-manager@5.39.0": + "integrity" "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz" + "version" "5.39.0" + dependencies: + "@typescript-eslint/types" "5.39.0" + "@typescript-eslint/visitor-keys" "5.39.0" + +"@typescript-eslint/type-utils@5.33.0": + "integrity" "sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.0.tgz" + "version" "5.33.0" + dependencies: + "@typescript-eslint/utils" "5.33.0" + "debug" "^4.3.4" + "tsutils" "^3.21.0" + +"@typescript-eslint/types@5.33.0": + "integrity" "sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.0.tgz" + "version" "5.33.0" + +"@typescript-eslint/types@5.39.0": + "integrity" "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz" + "version" "5.39.0" + +"@typescript-eslint/typescript-estree@5.33.0": + "integrity" "sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.0.tgz" + "version" "5.33.0" + dependencies: + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/visitor-keys" "5.33.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/typescript-estree@5.39.0": + "integrity" "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz" + "version" "5.39.0" + dependencies: + "@typescript-eslint/types" "5.39.0" + "@typescript-eslint/visitor-keys" "5.39.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" + +"@typescript-eslint/utils@5.33.0": + "integrity" "sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.0.tgz" + "version" "5.33.0" + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.33.0" + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/typescript-estree" "5.33.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^3.0.0" + +"@typescript-eslint/visitor-keys@5.33.0": + "integrity" "sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.0.tgz" + "version" "5.33.0" + dependencies: + "@typescript-eslint/types" "5.33.0" + "eslint-visitor-keys" "^3.3.0" + +"@typescript-eslint/visitor-keys@5.39.0": + "integrity" "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz" + "version" "5.39.0" + dependencies: + "@typescript-eslint/types" "5.39.0" + "eslint-visitor-keys" "^3.3.0" + +"@ungap/promise-all-settled@1.1.2": + "integrity" "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" + "resolved" "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" + "version" "1.1.2" + +"@webassemblyjs/ast@1.11.1": + "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-api-error@1.11.1": + "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-buffer@1.11.1": + "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-numbers@1.11.1": + "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-wasm-section@1.11.1": + "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/wasm-edit@1.11.1": + "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xobotyi/scrollbar-width@^1.9.5", "@xobotyi/scrollbar-width@1.9.5": + "integrity" "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" + "resolved" "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz" + "version" "1.9.5" + +"@xtuc/ieee754@^1.2.0": + "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + "version" "1.2.0" + +"@xtuc/long@4.2.2": + "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + "version" "4.2.2" + +"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": + "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + "version" "1.3.8" + dependencies: + "mime-types" "~2.1.34" + "negotiator" "0.6.3" + +"acorn-import-assertions@^1.7.6": + "integrity" "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" + "version" "1.8.0" + +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn@^8.5.0", "acorn@^8.7.1", "acorn@^8.8.0": + "integrity" "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" + "version" "8.8.0" + +"add-stream@^1.0.0": + "integrity" "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" + "resolved" "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" + "version" "1.0.0" + +"address@1.2.0": + "integrity" "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==" + "resolved" "https://registry.npmjs.org/address/-/address-1.2.0.tgz" + "version" "1.2.0" + +"ajv-formats@^2.1.1": + "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" + +"ajv-keywords@^5.0.0": + "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "fast-deep-equal" "^3.1.3" + +"ajv@^6.10.0", "ajv@^6.12.4", "ajv@^6.12.5": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ajv@^8.0.0": + "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + "version" "8.11.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@^8.0.1": + "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + "version" "8.11.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@^8.8.0": + "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + "version" "8.11.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ansi-colors@^4.1.1": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" + +"ansi-colors@4.1.1": + "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + "version" "4.1.1" + +"ansi-html-community@^0.0.8": + "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + "version" "0.0.8" + +"ansi-regex@^2.0.0": + "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "version" "2.1.1" + +"ansi-regex@^5.0.0", "ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-styles@^2.2.1": + "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "version" "2.2.1" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"anymatch@~3.1.2": + "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"aria-query@^4.2.2": + "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +"array-flatten@^2.1.2": + "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + "version" "2.1.2" + +"array-flatten@1.1.1": + "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"array-ify@^1.0.0": + "integrity" "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" + "resolved" "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" + "version" "1.0.0" + +"array-includes@^3.1.4", "array-includes@^3.1.5": + "integrity" "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==" + "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.19.5" + "get-intrinsic" "^1.1.1" + "is-string" "^1.0.7" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"array.prototype.flat@^1.2.5": + "integrity" "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==" + "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.2" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.flatmap@^1.3.0": + "integrity" "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==" + "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.2" + "es-shim-unscopables" "^1.0.0" + +"arrify@^1.0.1": + "integrity" "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + "version" "1.0.1" + +"asap@~2.0.3": + "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + "version" "2.0.6" + +"assertion-error@^1.1.0": + "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + "version" "1.1.0" + +"ast-types@^0.14.2": + "integrity" "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==" + "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" + "version" "0.14.2" + dependencies: + "tslib" "^2.0.1" + +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" + +"atom-action-button@file:/home/dell/Desktop/sui-components/components/atom/actionButton/demo": + "resolved" "file:components/atom/actionButton/demo" + "version" "1.1.0" + +"attr-accept@^2.2.1": + "integrity" "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" + "resolved" "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz" + "version" "2.2.2" + +"autoprefixer@10.4.8": + "integrity" "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==" + "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz" + "version" "10.4.8" + dependencies: + "browserslist" "^4.21.3" + "caniuse-lite" "^1.0.30001373" + "fraction.js" "^4.2.0" + "normalize-range" "^0.1.2" + "picocolors" "^1.0.0" + "postcss-value-parser" "^4.2.0" + +"available-typed-arrays@^1.0.5": + "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + "version" "1.0.5" + +"axios@0.21.4": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + +"babel-loader@8.2.5": + "integrity" "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==" + "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz" + "version" "8.2.5" + dependencies: + "find-cache-dir" "^3.3.1" + "loader-utils" "^2.0.0" + "make-dir" "^3.1.0" + "schema-utils" "^2.6.5" + +"babel-plugin-dynamic-import-node@^2.3.3", "babel-plugin-dynamic-import-node@2.3.3": + "integrity" "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "object.assign" "^4.1.0" + +"babel-plugin-istanbul@6.0.0": + "integrity" "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + "istanbul-lib-instrument" "^4.0.0" + "test-exclude" "^6.0.0" + +"babel-plugin-macros@^2.8.0": + "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" + "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "@babel/runtime" "^7.7.2" + "cosmiconfig" "^6.0.0" + "resolve" "^1.12.0" + +"babel-plugin-polyfill-corejs2@^0.3.2": + "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + "semver" "^6.1.1" + +"babel-plugin-polyfill-corejs3@^0.5.3": + "integrity" "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz" + "version" "0.5.3" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + "core-js-compat" "^3.21.0" + +"babel-plugin-polyfill-regenerator@^0.4.0": + "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +"babel-plugin-preval@5.0.0": + "integrity" "sha512-8DqJq6/LPUjSZ0Qq6bVIFpsj2flCEE0Cbnbut9TvGU6jP9g3dOWEXtQ/sdvsA9d6souza8eNGh04WRXpuH9ThA==" + "resolved" "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@babel/runtime" "^7.9.2" + "babel-plugin-macros" "^2.8.0" + "require-from-string" "^2.0.2" + +"babel-plugin-transform-react-remove-prop-types@0.4.24": + "integrity" "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" + "version" "0.4.24" + +"babel-preset-sui@3": + "integrity" "sha512-EGvWzOgJSL6JUUFisN8w0EveOpYZQyxwQZb3R62N+cHMLFQmU6GQD9UGr2Lc8mgcIv9kqTSp7qxK6FZsq0e4+A==" + "resolved" "https://registry.npmjs.org/babel-preset-sui/-/babel-preset-sui-3.49.0.tgz" + "version" "3.49.0" + dependencies: + "@babel/core" "7.18.10" + "@babel/plugin-proposal-decorators" "7.18.10" + "@babel/plugin-syntax-export-default-from" "7.18.6" + "@babel/plugin-syntax-export-namespace-from" "7.8.3" + "@babel/plugin-transform-runtime" "7.18.10" + "@babel/preset-env" "7.18.10" + "@babel/preset-react" "7.18.6" + "@babel/runtime" "7.18.9" + "babel-plugin-preval" "5.0.0" + "babel-plugin-transform-react-remove-prop-types" "0.4.24" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"balanced-match@^2.0.0": + "integrity" "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz" + "version" "2.0.0" + +"base16@^1.0.0": + "integrity" "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + "resolved" "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" + "version" "1.0.0" + +"base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"base64id@~2.0.0", "base64id@2.0.0": + "integrity" "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + "resolved" "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" + "version" "2.0.0" + +"batch@0.6.1": + "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + "version" "0.6.1" + +"big.js@^5.2.2": + "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + "version" "5.2.2" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"body-parser@^1.19.0", "body-parser@1.20.0": + "integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" + "version" "1.20.0" + dependencies: + "bytes" "3.1.2" + "content-type" "~1.0.4" + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "on-finished" "2.4.1" + "qs" "6.10.3" + "raw-body" "2.5.1" + "type-is" "~1.6.18" + "unpipe" "1.0.0" + +"bonjour-service@^1.0.11": + "integrity" "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==" + "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" + "version" "1.0.14" + dependencies: + "array-flatten" "^2.1.2" + "dns-equal" "^1.0.0" + "fast-deep-equal" "^3.1.3" + "multicast-dns" "^7.2.5" + +"boolbase@^1.0.0": + "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"bowser@2.11.0": + "integrity" "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "resolved" "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" + "version" "2.11.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"browser-stdout@1.3.1": + "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + "version" "1.3.1" + +"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.16.6", "browserslist@^4.20.3", "browserslist@^4.21.3", "browserslist@^4.21.4": + "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + "version" "4.21.4" + dependencies: + "caniuse-lite" "^1.0.30001400" + "electron-to-chromium" "^1.4.251" + "node-releases" "^2.0.6" + "update-browserslist-db" "^1.0.9" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer@6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"builtin-status-codes@^3.0.0": + "integrity" "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + "version" "3.0.0" + +"builtins@^5.0.1": + "integrity" "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==" + "resolved" "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "semver" "^7.0.0" + +"bytes@3.0.0": + "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + "version" "3.0.0" + +"bytes@3.1.2": + "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + "version" "3.1.2" + +"call-bind@^1.0.0", "call-bind@^1.0.2": + "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camel-case@^4.1.2": + "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" + "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "pascal-case" "^3.1.2" + "tslib" "^2.0.3" + +"camelcase-keys@^6.2.2": + "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==" + "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" + "version" "6.2.2" + dependencies: + "camelcase" "^5.3.1" + "map-obj" "^4.0.0" + "quick-lru" "^4.0.1" + +"camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"camelcase@^6.0.0": + "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + "version" "6.3.0" + +"caniuse-api@^3.0.0": + "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" + "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "browserslist" "^4.0.0" + "caniuse-lite" "^1.0.0" + "lodash.memoize" "^4.1.2" + "lodash.uniq" "^4.5.0" + +"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001373", "caniuse-lite@^1.0.30001400": + "integrity" "sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz" + "version" "1.0.30001416" + +"chai-dom@1.11.0": + "integrity" "sha512-ZzGlEfk1UhHH5+N0t9bDqstOxPEXmn3EyXvtsok5rfXVDOFDJbHVy12rED6ZwkJAUDs2w7/Da4Hlq2LB63kltg==" + "resolved" "https://registry.npmjs.org/chai-dom/-/chai-dom-1.11.0.tgz" + "version" "1.11.0" + +"chai@4.3.6": + "integrity" "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==" + "resolved" "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz" + "version" "4.3.6" + dependencies: + "assertion-error" "^1.1.0" + "check-error" "^1.0.2" + "deep-eql" "^3.0.1" + "get-func-name" "^2.0.0" + "loupe" "^2.3.1" + "pathval" "^1.1.1" + "type-detect" "^4.0.5" + +"chalk@^1.1.3": + "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "ansi-styles" "^2.2.1" + "escape-string-regexp" "^1.0.2" + "has-ansi" "^2.0.0" + "strip-ansi" "^3.0.0" + "supports-color" "^2.0.0" + +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^4.0.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.1.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"check-error@^1.0.2": + "integrity" "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" + "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" + "version" "1.0.2" + +"chokidar@^3.4.0", "chokidar@^3.5.1", "chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0", "chokidar@3.5.3": + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "anymatch" "~3.1.2" + "braces" "~3.0.2" + "glob-parent" "~5.1.2" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.6.0" + optionalDependencies: + "fsevents" "~2.3.2" + +"chrome-trace-event@^1.0.2": + "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + "version" "1.0.3" + +"classnames@^2.2.1", "classnames@^2.2.3", "classnames@^2.2.5", "classnames@2.2.5", "classnames@2.x": + "integrity" "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz" + "version" "2.2.5" + +"classnames@^2.2.6": + "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + "version" "2.3.2" + +"classnames@^2.3.1": + "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + "version" "2.3.2" + +"classnames@2.3.1": + "integrity" "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" + "version" "2.3.1" + +"clean-css@^5.2.2": + "integrity" "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==" + "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "source-map" "~0.6.0" + +"cli-source-preview@1.1.0": + "integrity" "sha512-n5DpanHecShys8+nhrOrQoPJjvtISsKAaW9abQjbf53X73RMkPwq7JLny5zEAJDdW/PwYr3FehtsIJZhocUULw==" + "resolved" "https://registry.npmjs.org/cli-source-preview/-/cli-source-preview-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "chalk" "^1.1.3" + +"cliui@^7.0.2": + "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + "version" "7.0.4" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^7.0.0" + +"clone-deep@^4.0.1": + "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-plain-object" "^2.0.4" + "kind-of" "^6.0.2" + "shallow-clone" "^3.0.0" + +"co@4.6.0": + "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + "version" "4.6.0" + +"color-convert@^1.9.0", "color-convert@^1.9.3": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@^1.0.0", "color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-string@^1.6.0": + "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" + "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "color-name" "^1.0.0" + "simple-swizzle" "^0.2.2" + +"color@3": + "integrity" "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==" + "resolved" "https://registry.npmjs.org/color/-/color-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.3" + "color-string" "^1.6.0" + +"colord@^2.9.1", "colord@^2.9.3": + "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + "version" "2.9.3" + +"colorette@^2.0.10": + "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + "version" "2.0.19" + +"colors@~0.6.0-1": + "integrity" "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" + "resolved" "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "version" "0.6.2" + +"colors@1.4.0": + "integrity" "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "resolved" "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + "version" "1.4.0" + +"commander@^2.17.1": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^2.19.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^4.0.1": + "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + "version" "4.1.1" + +"commander@^7.2.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"commander@^8.3.0", "commander@8.3.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + +"commander@~2.1.0": + "integrity" "sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + "version" "2.1.0" + +"commondir@^1.0.1": + "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + "version" "1.0.1" + +"compare-func@^2.0.0": + "integrity" "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==" + "resolved" "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "array-ify" "^1.0.0" + "dot-prop" "^5.1.0" + +"compressible@~2.0.16": + "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" + "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + "version" "2.0.18" + dependencies: + "mime-db" ">= 1.43.0 < 2" + +"compression@^1.7.4": + "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" + "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + "version" "1.7.4" + dependencies: + "accepts" "~1.3.5" + "bytes" "3.0.0" + "compressible" "~2.0.16" + "debug" "2.6.9" + "on-headers" "~1.0.2" + "safe-buffer" "5.1.2" + "vary" "~1.1.2" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"connect-history-api-fallback@^2.0.0": + "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" + "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + "version" "2.0.0" + +"connect@^3.7.0": + "integrity" "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==" + "resolved" "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + "version" "3.7.0" + dependencies: + "debug" "2.6.9" + "finalhandler" "1.1.2" + "parseurl" "~1.3.3" + "utils-merge" "1.0.1" + +"content-disposition@0.5.4": + "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + dependencies: + "safe-buffer" "5.2.1" + +"content-type@~1.0.4": + "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + "version" "1.0.4" + +"conventional-changelog-angular@^5.0.12": + "integrity" "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==" + "resolved" "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" + "version" "5.0.13" + dependencies: + "compare-func" "^2.0.0" + "q" "^1.5.1" + +"conventional-changelog-atom@^2.0.8": + "integrity" "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==" + "resolved" "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz" + "version" "2.0.8" + dependencies: + "q" "^1.5.1" + +"conventional-changelog-codemirror@^2.0.8": + "integrity" "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==" + "resolved" "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz" + "version" "2.0.8" + dependencies: + "q" "^1.5.1" + +"conventional-changelog-conventionalcommits@^4.5.0": + "integrity" "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==" + "resolved" "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz" + "version" "4.6.3" + dependencies: + "compare-func" "^2.0.0" + "lodash" "^4.17.15" + "q" "^1.5.1" + +"conventional-changelog-core@^4.2.1": + "integrity" "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==" + "resolved" "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" + "version" "4.2.4" + dependencies: + "add-stream" "^1.0.0" + "conventional-changelog-writer" "^5.0.0" + "conventional-commits-parser" "^3.2.0" + "dateformat" "^3.0.0" + "get-pkg-repo" "^4.0.0" + "git-raw-commits" "^2.0.8" + "git-remote-origin-url" "^2.0.0" + "git-semver-tags" "^4.1.1" + "lodash" "^4.17.15" + "normalize-package-data" "^3.0.0" + "q" "^1.5.1" + "read-pkg" "^3.0.0" + "read-pkg-up" "^3.0.0" + "through2" "^4.0.0" + +"conventional-changelog-ember@^2.0.9": + "integrity" "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==" + "resolved" "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz" + "version" "2.0.9" + dependencies: + "q" "^1.5.1" + +"conventional-changelog-eslint@^3.0.9": + "integrity" "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==" + "resolved" "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz" + "version" "3.0.9" + dependencies: + "q" "^1.5.1" + +"conventional-changelog-express@^2.0.6": + "integrity" "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==" + "resolved" "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "q" "^1.5.1" + +"conventional-changelog-jquery@^3.0.11": + "integrity" "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==" + "resolved" "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz" + "version" "3.0.11" + dependencies: + "q" "^1.5.1" + +"conventional-changelog-jshint@^2.0.9": + "integrity" "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==" + "resolved" "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz" + "version" "2.0.9" + dependencies: + "compare-func" "^2.0.0" + "q" "^1.5.1" + +"conventional-changelog-preset-loader@^2.3.4": + "integrity" "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==" + "resolved" "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" + "version" "2.3.4" + +"conventional-changelog-writer@^5.0.0": + "integrity" "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==" + "resolved" "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "conventional-commits-filter" "^2.0.7" + "dateformat" "^3.0.0" + "handlebars" "^4.7.7" + "json-stringify-safe" "^5.0.1" + "lodash" "^4.17.15" + "meow" "^8.0.0" + "semver" "^6.0.0" + "split" "^1.0.0" + "through2" "^4.0.0" + +"conventional-changelog@3.1.25": + "integrity" "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==" + "resolved" "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz" + "version" "3.1.25" + dependencies: + "conventional-changelog-angular" "^5.0.12" + "conventional-changelog-atom" "^2.0.8" + "conventional-changelog-codemirror" "^2.0.8" + "conventional-changelog-conventionalcommits" "^4.5.0" + "conventional-changelog-core" "^4.2.1" + "conventional-changelog-ember" "^2.0.9" + "conventional-changelog-eslint" "^3.0.9" + "conventional-changelog-express" "^2.0.6" + "conventional-changelog-jquery" "^3.0.11" + "conventional-changelog-jshint" "^2.0.9" + "conventional-changelog-preset-loader" "^2.3.4" + +"conventional-commit-types@^2.0.0": + "integrity" "sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ==" + "resolved" "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz" + "version" "2.3.0" + +"conventional-commits-filter@^2.0.7": + "integrity" "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==" + "resolved" "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "lodash.ismatch" "^4.4.0" + "modify-values" "^1.0.0" + +"conventional-commits-parser@^3.2.0": + "integrity" "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==" + "resolved" "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" + "version" "3.2.4" + dependencies: + "is-text-path" "^1.0.1" + "JSONStream" "^1.0.4" + "lodash" "^4.17.15" + "meow" "^8.0.0" + "split2" "^3.0.0" + "through2" "^4.0.0" + +"convert-source-map@^1.1.0", "convert-source-map@^1.7.0": + "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "safe-buffer" "~5.1.1" + +"cookie-signature@1.0.6": + "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@~0.4.1": + "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + "version" "0.4.2" + +"cookie@0.3.1": + "integrity" "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "version" "0.3.1" + +"cookie@0.5.0": + "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + "version" "0.5.0" + +"copy-to-clipboard@^3.2.0", "copy-to-clipboard@^3.3.1": + "integrity" "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==" + "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "toggle-selection" "^1.0.6" + +"core-js-compat@^3.21.0", "core-js-compat@^3.22.1": + "integrity" "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz" + "version" "3.25.5" + dependencies: + "browserslist" "^4.21.4" + +"core-js-pure@^3.25.1": + "integrity" "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==" + "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz" + "version" "3.25.5" + +"core-util-is@~1.0.0": + "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + "version" "1.0.3" + +"cors@~2.8.5": + "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" + "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + "version" "2.8.5" + dependencies: + "object-assign" "^4" + "vary" "^1" + +"cosmiconfig@^6.0.0": + "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.1.0" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.7.2" + +"cosmiconfig@^7.0.0": + "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"cosmiconfig@^7.0.1": + "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"cross-fetch@^3.1.5": + "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "node-fetch" "2.6.7" + +"cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"css-declaration-sorter@^6.3.0": + "integrity" "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==" + "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz" + "version" "6.3.1" + +"css-functions-list@^3.1.0": + "integrity" "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==" + "resolved" "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz" + "version" "3.1.0" + +"css-in-js-utils@^2.0.0": + "integrity" "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==" + "resolved" "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "hyphenate-style-name" "^1.0.2" + "isobject" "^3.0.1" + +"css-loader@6.7.1": + "integrity" "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz" + "version" "6.7.1" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.7" + "postcss-modules-extract-imports" "^3.0.0" + "postcss-modules-local-by-default" "^4.0.0" + "postcss-modules-scope" "^3.0.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.3.5" + +"css-minimizer-webpack-plugin@4.0.0": + "integrity" "sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA==" + "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "cssnano" "^5.1.8" + "jest-worker" "^27.5.1" + "postcss" "^8.4.13" + "schema-utils" "^4.0.0" + "serialize-javascript" "^6.0.0" + "source-map" "^0.6.1" + +"css-select@^4.1.3": + "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"css-tree@^1.1.2", "css-tree@^1.1.3": + "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "mdn-data" "2.0.14" + "source-map" "^0.6.1" + +"css-what@^6.0.1": + "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + "version" "6.1.0" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"cssnano-preset-default@^5.2.12": + "integrity" "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==" + "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz" + "version" "5.2.12" + dependencies: + "css-declaration-sorter" "^6.3.0" + "cssnano-utils" "^3.1.0" + "postcss-calc" "^8.2.3" + "postcss-colormin" "^5.3.0" + "postcss-convert-values" "^5.1.2" + "postcss-discard-comments" "^5.1.2" + "postcss-discard-duplicates" "^5.1.0" + "postcss-discard-empty" "^5.1.1" + "postcss-discard-overridden" "^5.1.0" + "postcss-merge-longhand" "^5.1.6" + "postcss-merge-rules" "^5.1.2" + "postcss-minify-font-values" "^5.1.0" + "postcss-minify-gradients" "^5.1.1" + "postcss-minify-params" "^5.1.3" + "postcss-minify-selectors" "^5.2.1" + "postcss-normalize-charset" "^5.1.0" + "postcss-normalize-display-values" "^5.1.0" + "postcss-normalize-positions" "^5.1.1" + "postcss-normalize-repeat-style" "^5.1.1" + "postcss-normalize-string" "^5.1.0" + "postcss-normalize-timing-functions" "^5.1.0" + "postcss-normalize-unicode" "^5.1.0" + "postcss-normalize-url" "^5.1.0" + "postcss-normalize-whitespace" "^5.1.1" + "postcss-ordered-values" "^5.1.3" + "postcss-reduce-initial" "^5.1.0" + "postcss-reduce-transforms" "^5.1.0" + "postcss-svgo" "^5.1.0" + "postcss-unique-selectors" "^5.1.1" + +"cssnano-utils@^3.1.0": + "integrity" "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" + "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" + "version" "3.1.0" + +"cssnano@^5.1.8": + "integrity" "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==" + "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz" + "version" "5.1.13" + dependencies: + "cssnano-preset-default" "^5.2.12" + "lilconfig" "^2.0.3" + "yaml" "^1.10.2" + +"csso@^4.2.0": + "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" + "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "css-tree" "^1.1.2" + +"csstype@^3.0.2", "csstype@^3.0.6": + "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + "version" "3.1.1" + +"custom-event@~1.0.0": + "integrity" "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==" + "resolved" "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz" + "version" "1.0.1" + +"dargs@^7.0.0": + "integrity" "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==" + "resolved" "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" + "version" "7.0.0" + +"date-format@^4.0.14": + "integrity" "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==" + "resolved" "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz" + "version" "4.0.14" + +"dateformat@^3.0.0": + "integrity" "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" + "version" "3.0.3" + +"debug@^2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4", "debug@~4.3.1", "debug@~4.3.2", "debug@4.3.4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"decamelize-keys@^1.1.0": + "integrity" "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==" + "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "decamelize" "^1.1.0" + "map-obj" "^1.0.0" + +"decamelize@^1.1.0", "decamelize@^1.2.0": + "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "version" "1.2.0" + +"decamelize@^4.0.0": + "integrity" "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" + "version" "4.0.0" + +"deep-eql@^3.0.1": + "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==" + "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "type-detect" "^4.0.0" + +"deep-equal@^1.1.1": + "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "is-arguments" "^1.0.4" + "is-date-object" "^1.0.1" + "is-regex" "^1.0.4" + "object-is" "^1.0.1" + "object-keys" "^1.1.1" + "regexp.prototype.flags" "^1.2.0" + +"deep-is@^0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"deepmerge@4.2.2": + "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + "version" "4.2.2" + +"default-gateway@^6.0.3": + "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" + "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "execa" "^5.0.0" + +"define-lazy-prop@^2.0.0": + "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + "version" "2.0.0" + +"define-properties@^1.1.3", "define-properties@^1.1.4": + "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.1" + +"depd@~1.1.2": + "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + "version" "1.1.2" + +"depd@2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"destroy@1.2.0": + "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + "version" "1.2.0" + +"detect-node@^2.0.4": + "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + "version" "2.1.0" + +"di@^0.0.1": + "integrity" "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==" + "resolved" "https://registry.npmjs.org/di/-/di-0.0.1.tgz" + "version" "0.0.1" + +"diff@^5.0.0", "diff@5.0.0": + "integrity" "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + "resolved" "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" + "version" "5.0.0" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"dlv@1.1.3": + "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + "version" "1.1.3" + +"dns-equal@^1.0.0": + "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + "version" "1.0.0" + +"dns-packet@^5.2.2": + "integrity" "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==" + "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" + "version" "5.4.0" + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +"doctrine@^2.1.0": + "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "esutils" "^2.0.2" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + +"dom-accessibility-api@^0.5.6": + "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" + "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" + "version" "0.5.14" + +"dom-align@^1.7.0": + "integrity" "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" + "resolved" "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz" + "version" "1.12.3" + +"dom-converter@^0.2.0": + "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" + "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "utila" "~0.4" + +"dom-helpers@^3.4.0": + "integrity" "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==" + "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz" + "version" "3.4.0" + dependencies: + "@babel/runtime" "^7.1.2" + +"dom-serialize@^2.2.1": + "integrity" "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==" + "resolved" "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "custom-event" "~1.0.0" + "ent" "~2.2.0" + "extend" "^3.0.0" + "void-elements" "^2.0.0" + +"dom-serializer@^1.0.1": + "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" + +"domelementtype@^2.0.1", "domelementtype@^2.2.0": + "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + "version" "2.3.0" + +"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": + "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "domelementtype" "^2.2.0" + +"domutils@^2.5.2", "domutils@^2.8.0": + "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"dot-case@^3.0.4": + "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" + "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"dot-prop@^5.1.0": + "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "is-obj" "^2.0.0" + +"dset@3.1.2": + "integrity" "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==" + "resolved" "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz" + "version" "3.1.2" + +"ee-first@1.1.1": + "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"electron-to-chromium@^1.4.251": + "integrity" "sha512-KS6gPPGNrzpVv9HzFVq+Etd0AjZEPr5pvaTBn2yD6KV4+cKW4I0CJoJNgmTG6gUQPAMZ4wIPtcOuoou3qFAZCA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.272.tgz" + "version" "1.4.272" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"encodeurl@~1.0.2": + "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"engine.io-parser@~5.0.3": + "integrity" "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz" + "version" "5.0.4" + +"engine.io@~6.2.0": + "integrity" "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==" + "resolved" "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + "accepts" "~1.3.4" + "base64id" "2.0.0" + "cookie" "~0.4.1" + "cors" "~2.8.5" + "debug" "~4.3.1" + "engine.io-parser" "~5.0.3" + "ws" "~8.2.3" + +"enhanced-resolve@^5.10.0": + "integrity" "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" + "version" "5.10.0" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"enquirer@2.3.6": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "ansi-colors" "^4.1.1" + +"ent@~2.2.0": + "integrity" "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" + "resolved" "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" + "version" "2.2.0" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"error-stack-parser@^2.0.6": + "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" + "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + "version" "2.1.4" + dependencies: + "stackframe" "^1.3.4" + +"es-abstract@^1.19.0", "es-abstract@^1.19.1", "es-abstract@^1.19.2", "es-abstract@^1.19.5", "es-abstract@^1.20.0": + "integrity" "sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.3.tgz" + "version" "1.20.3" + dependencies: + "call-bind" "^1.0.2" + "es-to-primitive" "^1.2.1" + "function-bind" "^1.1.1" + "function.prototype.name" "^1.1.5" + "get-intrinsic" "^1.1.3" + "get-symbol-description" "^1.0.0" + "has" "^1.0.3" + "has-property-descriptors" "^1.0.0" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.3" + "is-callable" "^1.2.6" + "is-negative-zero" "^2.0.2" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.2" + "is-string" "^1.0.7" + "is-weakref" "^1.0.2" + "object-inspect" "^1.12.2" + "object-keys" "^1.1.1" + "object.assign" "^4.1.4" + "regexp.prototype.flags" "^1.4.3" + "safe-regex-test" "^1.0.0" + "string.prototype.trimend" "^1.0.5" + "string.prototype.trimstart" "^1.0.5" + "unbox-primitive" "^1.0.2" + +"es-module-lexer@^0.9.0": + "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" + "version" "0.9.3" + +"es-shim-unscopables@^1.0.0": + "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" + "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has" "^1.0.3" + +"es-to-primitive@^1.2.1": + "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"esbuild-linux-64@0.15.5": + "integrity" "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==" + "resolved" "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz" + "version" "0.15.5" + +"esbuild@0.15.5": + "integrity" "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==" + "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz" + "version" "0.15.5" + optionalDependencies: + "@esbuild/linux-loong64" "0.15.5" + "esbuild-android-64" "0.15.5" + "esbuild-android-arm64" "0.15.5" + "esbuild-darwin-64" "0.15.5" + "esbuild-darwin-arm64" "0.15.5" + "esbuild-freebsd-64" "0.15.5" + "esbuild-freebsd-arm64" "0.15.5" + "esbuild-linux-32" "0.15.5" + "esbuild-linux-64" "0.15.5" + "esbuild-linux-arm" "0.15.5" + "esbuild-linux-arm64" "0.15.5" + "esbuild-linux-mips64le" "0.15.5" + "esbuild-linux-ppc64le" "0.15.5" + "esbuild-linux-riscv64" "0.15.5" + "esbuild-linux-s390x" "0.15.5" + "esbuild-netbsd-64" "0.15.5" + "esbuild-openbsd-64" "0.15.5" + "esbuild-sunos-64" "0.15.5" + "esbuild-windows-32" "0.15.5" + "esbuild-windows-64" "0.15.5" + "esbuild-windows-arm64" "0.15.5" + +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-html@~1.0.3": + "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.2": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^4.0.0", "escape-string-regexp@4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"eslint-config-prettier@8.5.0": + "integrity" "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" + "version" "8.5.0" + +"eslint-config-standard-with-typescript@22.0.0": + "integrity" "sha512-VA36U7UlFpwULvkdnh6MQj5GAV2Q+tT68ALLAwJP0ZuNXU2m0wX07uxX4qyLRdHgSzH4QJ73CveKBuSOYvh7vQ==" + "resolved" "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-22.0.0.tgz" + "version" "22.0.0" + dependencies: + "@typescript-eslint/parser" "^5.0.0" + "eslint-config-standard" "17.0.0" + +"eslint-config-standard@17.0.0": + "integrity" "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==" + "resolved" "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz" + "version" "17.0.0" + +"eslint-import-resolver-node@^0.3.6": + "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + "version" "0.3.6" + dependencies: + "debug" "^3.2.7" + "resolve" "^1.20.0" + +"eslint-module-utils@^2.7.3": + "integrity" "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==" + "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" + "version" "2.7.4" + dependencies: + "debug" "^3.2.7" + +"eslint-plugin-chai-friendly@0.7.2": + "integrity" "sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz" + "version" "0.7.2" + +"eslint-plugin-cypress@2.12.1": + "integrity" "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==" + "resolved" "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz" + "version" "2.12.1" + dependencies: + "globals" "^11.12.0" + +"eslint-plugin-es@^4.1.0": + "integrity" "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "eslint-utils" "^2.0.0" + "regexpp" "^3.0.0" + +"eslint-plugin-import@2.26.0": + "integrity" "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==" + "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + "version" "2.26.0" + dependencies: + "array-includes" "^3.1.4" + "array.prototype.flat" "^1.2.5" + "debug" "^2.6.9" + "doctrine" "^2.1.0" + "eslint-import-resolver-node" "^0.3.6" + "eslint-module-utils" "^2.7.3" + "has" "^1.0.3" + "is-core-module" "^2.8.1" + "is-glob" "^4.0.3" + "minimatch" "^3.1.2" + "object.values" "^1.1.5" + "resolve" "^1.22.0" + "tsconfig-paths" "^3.14.1" + +"eslint-plugin-n@15.2.5": + "integrity" "sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz" + "version" "15.2.5" + dependencies: + "builtins" "^5.0.1" + "eslint-plugin-es" "^4.1.0" + "eslint-utils" "^3.0.0" + "ignore" "^5.1.1" + "is-core-module" "^2.10.0" + "minimatch" "^3.1.2" + "resolve" "^1.22.1" + "semver" "^7.3.7" + +"eslint-plugin-no-only-tests@3.0.0": + "integrity" "sha512-I0PeXMs1vu21ap45hey4HQCJRqpcoIvGcNTPJe+UhUm8TwjQ6//mCrDqF8q0WS6LgmRDwQ4ovQej0AQsAHb5yg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.0.0.tgz" + "version" "3.0.0" + +"eslint-plugin-prettier@4.2.1": + "integrity" "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "prettier-linter-helpers" "^1.0.0" + +"eslint-plugin-promise@6.0.0": + "integrity" "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==" + "resolved" "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz" + "version" "6.0.0" + +"eslint-plugin-react-hooks@4.6.0": + "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + "version" "4.6.0" + +"eslint-plugin-react@7.30.1": + "integrity" "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz" + "version" "7.30.1" + dependencies: + "array-includes" "^3.1.5" + "array.prototype.flatmap" "^1.3.0" + "doctrine" "^2.1.0" + "estraverse" "^5.3.0" + "jsx-ast-utils" "^2.4.1 || ^3.0.0" + "minimatch" "^3.1.2" + "object.entries" "^1.1.5" + "object.fromentries" "^2.0.5" + "object.hasown" "^1.1.1" + "object.values" "^1.1.5" + "prop-types" "^15.8.1" + "resolve" "^2.0.0-next.3" + "semver" "^6.3.0" + "string.prototype.matchall" "^4.0.7" + +"eslint-plugin-simple-import-sort@7.0.0": + "integrity" "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==" + "resolved" "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz" + "version" "7.0.0" + +"eslint-rule-composer@^0.3.0": + "integrity" "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==" + "resolved" "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" + "version" "0.3.0" + +"eslint-scope@^5.1.1", "eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-scope@^7.1.1": + "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-utils@^2.0.0": + "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "eslint-visitor-keys" "^1.1.0" + +"eslint-utils@^3.0.0": + "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "eslint-visitor-keys" "^2.0.0" + +"eslint-visitor-keys@^1.1.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" + +"eslint-visitor-keys@^2.0.0", "eslint-visitor-keys@^2.1.0": + "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + "version" "2.1.0" + +"eslint-visitor-keys@^3.3.0": + "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + "version" "3.3.0" + +"eslint@8.20.0": + "integrity" "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz" + "version" "8.20.0" + dependencies: + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.9.2" + "ajv" "^6.10.0" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.3.2" + "doctrine" "^3.0.0" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^7.1.1" + "eslint-utils" "^3.0.0" + "eslint-visitor-keys" "^3.3.0" + "espree" "^9.3.2" + "esquery" "^1.4.0" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "functional-red-black-tree" "^1.0.1" + "glob-parent" "^6.0.1" + "globals" "^13.15.0" + "ignore" "^5.2.0" + "import-fresh" "^3.0.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "js-yaml" "^4.1.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.1.2" + "natural-compare" "^1.4.0" + "optionator" "^0.9.1" + "regexpp" "^3.2.0" + "strip-ansi" "^6.0.1" + "strip-json-comments" "^3.1.0" + "text-table" "^0.2.0" + "v8-compile-cache" "^2.0.3" + +"espree@^9.3.2", "espree@^9.4.0": + "integrity" "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" + "version" "9.4.0" + dependencies: + "acorn" "^8.8.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.3.0" + +"esprima@^4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esquery@^1.4.0": + "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"etag@~1.8.1": + "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"eventemitter3@^4.0.0", "eventemitter3@^4.0.4": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"events@^3.2.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"execa@^5.0.0", "execa@5.1.1": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "cross-spawn" "^7.0.3" + "get-stream" "^6.0.0" + "human-signals" "^2.1.0" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.1" + "onetime" "^5.1.2" + "signal-exit" "^3.0.3" + "strip-final-newline" "^2.0.0" + +"express@^4.17.3": + "integrity" "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==" + "resolved" "https://registry.npmjs.org/express/-/express-4.18.1.tgz" + "version" "4.18.1" + dependencies: + "accepts" "~1.3.8" + "array-flatten" "1.1.1" + "body-parser" "1.20.0" + "content-disposition" "0.5.4" + "content-type" "~1.0.4" + "cookie" "0.5.0" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "2.0.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "1.2.0" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.7" + "qs" "6.10.3" + "range-parser" "~1.2.1" + "safe-buffer" "5.2.1" + "send" "0.18.0" + "serve-static" "1.15.0" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "type-is" "~1.6.18" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"extend@^3.0.0": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-diff@^1.1.2": + "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + "version" "1.2.0" + +"fast-glob@^3.1.1", "fast-glob@^3.2.11", "fast-glob@^3.2.9", "fast-glob@3.2.11": + "integrity" "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" + "version" "3.2.11" + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fast-shallow-equal@^1.0.0": + "integrity" "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" + "resolved" "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz" + "version" "1.0.0" + +"fastest-levenshtein@^1.0.16": + "integrity" "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + "version" "1.0.16" + +"fastest-stable-stringify@^2.0.2": + "integrity" "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==" + "resolved" "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz" + "version" "2.0.2" + +"fastq@^1.6.0": + "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "reusify" "^1.0.4" + +"faye-websocket@^0.11.3": + "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" + "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + "version" "0.11.4" + dependencies: + "websocket-driver" ">=0.5.1" + +"fbemitter@^3.0.0": + "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" + "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "fbjs" "^3.0.0" + +"fbjs-css-vars@^1.0.0": + "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + "version" "1.0.2" + +"fbjs@^3.0.0", "fbjs@^3.0.1": + "integrity" "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==" + "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "cross-fetch" "^3.1.5" + "fbjs-css-vars" "^1.0.0" + "loose-envify" "^1.0.0" + "object-assign" "^4.1.0" + "promise" "^7.1.1" + "setimmediate" "^1.0.5" + "ua-parser-js" "^0.7.30" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"file-selector@^0.2.2": + "integrity" "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==" + "resolved" "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz" + "version" "0.2.4" + dependencies: + "tslib" "^2.0.3" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"finalhandler@1.1.2": + "integrity" "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "~2.3.0" + "parseurl" "~1.3.3" + "statuses" "~1.5.0" + "unpipe" "~1.0.0" + +"finalhandler@1.2.0": + "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "statuses" "2.0.1" + "unpipe" "~1.0.0" + +"find-cache-dir@^2.0.0": + "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^2.0.0" + "pkg-dir" "^3.0.0" + +"find-cache-dir@^3.3.1": + "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-free-ports@3.0.0": + "integrity" "sha512-C9XrjG5O1EWPHSjY/hzJaUAoyUQ+KhmiYn0zHohOpScSeWr5TqJu613iIvzI4DnIKpdcBZZ5B4ifiUA10Y2HuA==" + "resolved" "https://registry.npmjs.org/find-free-ports/-/find-free-ports-3.0.0.tgz" + "version" "3.0.0" + +"find-parent-dir@^0.3.0": + "integrity" "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==" + "resolved" "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz" + "version" "0.3.1" + +"find-up@^2.0.0": + "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "locate-path" "^2.0.0" + +"find-up@^3.0.0": + "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "locate-path" "^3.0.0" + +"find-up@^4.0.0", "find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"findup@0.1.5": + "integrity" "sha512-Udxo3C9A6alt2GZ2MNsgnIvX7De0V3VGxeP/x98NSVgSlizcDHdmJza61LI7zJy4OEtSiJyE72s0/+tBl5/ZxA==" + "resolved" "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz" + "version" "0.1.5" + dependencies: + "colors" "~0.6.0-1" + "commander" "~2.1.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "flatted" "^3.1.0" + "rimraf" "^3.0.2" + +"flat@^5.0.2": + "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + "version" "5.0.2" + +"flatted@^3.1.0", "flatted@^3.2.7": + "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + "version" "3.2.7" + +"flux@^4.0.1": + "integrity" "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==" + "resolved" "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "fbemitter" "^3.0.0" + "fbjs" "^3.0.1" + +"follow-redirects@^1.0.0", "follow-redirects@^1.14.0": + "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + "version" "1.15.2" + +"for-each@^0.3.3": + "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" + "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "is-callable" "^1.1.3" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"fraction.js@^4.2.0": + "integrity" "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + "version" "4.2.0" + +"fresh@0.5.2": + "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"fs-extra@^8.1.0": + "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@10.0.1": + "integrity" "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz" + "version" "10.0.1" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@10.1.0": + "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-monkey@^1.0.3": + "integrity" "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" + "version" "1.0.3" + +"fs-readdir-recursive@^1.1.0": + "integrity" "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" + "resolved" "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + "version" "1.1.0" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"function.prototype.name@^1.1.5": + "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" + "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.0" + "functions-have-names" "^1.2.2" + +"functional-red-black-tree@^1.0.1": + "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + "version" "1.0.1" + +"functions-have-names@^1.2.2": + "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + "version" "1.2.3" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-caller-file@^2.0.5": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-func-name@^2.0.0": + "integrity" "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" + "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" + "version" "2.0.0" + +"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": + "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.3" + +"get-package-type@^0.1.0": + "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + "version" "0.1.0" + +"get-pkg-repo@^4.0.0": + "integrity" "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==" + "resolved" "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + "hosted-git-info" "^4.0.0" + "through2" "^2.0.0" + "yargs" "^16.2.0" + +"get-stream@^6.0.0": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-symbol-description@^1.0.0": + "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" + "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"git-raw-commits@^2.0.8": + "integrity" "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==" + "resolved" "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" + "version" "2.0.11" + dependencies: + "dargs" "^7.0.0" + "lodash" "^4.17.15" + "meow" "^8.0.0" + "split2" "^3.0.0" + "through2" "^4.0.0" + +"git-remote-origin-url@^2.0.0": + "integrity" "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==" + "resolved" "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "gitconfiglocal" "^1.0.0" + "pify" "^2.3.0" + +"git-semver-tags@^4.1.1": + "integrity" "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==" + "resolved" "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "meow" "^8.0.0" + "semver" "^6.0.0" + +"git-up@^6.0.0": + "integrity" "sha512-6RUFSNd1c/D0xtGnyWN2sxza2bZtZ/EmI9448n6rCZruFwV/ezeEn2fJP7XnUQGwf0RAtd/mmUCbtH6JPYA2SA==" + "resolved" "https://registry.npmjs.org/git-up/-/git-up-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "is-ssh" "^1.4.0" + "parse-url" "^7.0.2" + +"git-url-parse@12.0.0": + "integrity" "sha512-I6LMWsxV87vysX1WfsoglXsXg6GjQRKq7+Dgiseo+h0skmp5Hp2rzmcEIRQot9CPA+uzU7x1x7jZdqvTFGnB+Q==" + "resolved" "https://registry.npmjs.org/git-url-parse/-/git-url-parse-12.0.0.tgz" + "version" "12.0.0" + dependencies: + "git-up" "^6.0.0" + +"gitconfiglocal@^1.0.0": + "integrity" "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==" + "resolved" "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "ini" "^1.3.2" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.1": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-to-regexp@^0.4.1": + "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + "version" "0.4.1" + +"glob@^7.1.3": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@^7.1.4": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@^7.1.7": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@^7.2.0": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@7.2.0": + "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.0.4" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@8.0.3": + "integrity" "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==" + "resolved" "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" + "version" "8.0.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^5.0.1" + "once" "^1.3.0" + +"global-modules@^2.0.0": + "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" + "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "global-prefix" "^3.0.0" + +"global-prefix@^3.0.0": + "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" + "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ini" "^1.3.5" + "kind-of" "^6.0.2" + "which" "^1.3.1" + +"globals@^11.1.0", "globals@^11.12.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.15.0": + "integrity" "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" + "version" "13.17.0" + dependencies: + "type-fest" "^0.20.2" + +"globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.9" + "ignore" "^5.2.0" + "merge2" "^1.4.1" + "slash" "^3.0.0" + +"globby@11.0.3": + "integrity" "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz" + "version" "11.0.3" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.1.1" + "ignore" "^5.1.4" + "merge2" "^1.3.0" + "slash" "^3.0.0" + +"globjoin@^0.1.4": + "integrity" "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + "resolved" "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz" + "version" "0.1.4" + +"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": + "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + "version" "4.2.10" + +"gud@^1.0.0": + "integrity" "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + "resolved" "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz" + "version" "1.0.0" + +"handle-thing@^2.0.0": + "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + "version" "2.0.1" + +"handlebars@^4.7.7": + "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" + "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" + "version" "4.7.7" + dependencies: + "minimist" "^1.2.5" + "neo-async" "^2.6.0" + "source-map" "^0.6.1" + "wordwrap" "^1.0.0" + optionalDependencies: + "uglify-js" "^3.1.4" + +"hard-rejection@^2.1.0": + "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" + "version" "2.1.0" + +"has-ansi@^2.0.0": + "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==" + "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ansi-regex" "^2.0.0" + +"has-bigints@^1.0.1", "has-bigints@^1.0.2": + "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + "version" "1.0.2" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-property-descriptors@^1.0.0": + "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" + "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-intrinsic" "^1.1.1" + +"has-symbols@^1.0.2", "has-symbols@^1.0.3": + "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + "version" "1.0.3" + +"has-tostringtag@^1.0.0": + "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.2" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"he@^1.2.0", "he@1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"history@3.3.0": + "integrity" "sha512-ABLnJwKEZGXGqWsXaKYD8NNle49ZbKs1WEBlxrFsQ8dIudZpO5NJaH8WJOqh5lXVhAq7bHksfirrobBmrT7qBw==" + "resolved" "https://registry.npmjs.org/history/-/history-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "invariant" "^2.2.1" + "loose-envify" "^1.2.0" + "query-string" "^4.2.2" + "warning" "^3.0.0" + +"hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@3.3.2": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + +"hosted-git-info@^2.1.4": + "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + "version" "2.8.9" + +"hosted-git-info@^4.0.0", "hosted-git-info@^4.0.1": + "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "lru-cache" "^6.0.0" + +"hpack.js@^2.1.6": + "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" + "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + "version" "2.1.6" + dependencies: + "inherits" "^2.0.1" + "obuf" "^1.0.0" + "readable-stream" "^2.0.1" + "wbuf" "^1.1.0" + +"html-entities@^2.1.0", "html-entities@^2.3.2": + "integrity" "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" + "version" "2.3.3" + +"html-escaper@^2.0.0": + "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + "version" "2.0.2" + +"html-minifier-terser@^6.0.2": + "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" + "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "camel-case" "^4.1.2" + "clean-css" "^5.2.2" + "commander" "^8.3.0" + "he" "^1.2.0" + "param-case" "^3.0.4" + "relateurl" "^0.2.7" + "terser" "^5.10.0" + +"html-tags@^3.2.0": + "integrity" "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==" + "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz" + "version" "3.2.0" + +"html-webpack-plugin@5.5.0": + "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" + "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "@types/html-minifier-terser" "^6.0.0" + "html-minifier-terser" "^6.0.2" + "lodash" "^4.17.21" + "pretty-error" "^4.0.0" + "tapable" "^2.0.0" + +"htmlparser2@^6.0.0", "htmlparser2@^6.1.0": + "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.0.0" + "domutils" "^2.5.2" + "entities" "^2.0.0" + +"htmr@1.0.0": + "integrity" "sha512-lEEVDMOwOhyqIdLx5caDxKP5yqt5CODI/e2cWrSOmh/3OGzycayLBBlFLozV1BStH94KaUnrTOzk8sEW4Xpe1g==" + "resolved" "https://registry.npmjs.org/htmr/-/htmr-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "html-entities" "^2.1.0" + "htmlparser2" "^6.0.0" + +"http-deceiver@^1.2.7": + "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + "version" "1.2.7" + +"http-errors@~1.6.2": + "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + "version" "1.6.3" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.3" + "setprototypeof" "1.1.0" + "statuses" ">= 1.4.0 < 2" + +"http-errors@2.0.0": + "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "depd" "2.0.0" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "toidentifier" "1.0.1" + +"http-parser-js@>=0.5.1": + "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + "version" "0.5.8" + +"http-proxy-middleware@^2.0.3": + "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" + "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "@types/http-proxy" "^1.17.8" + "http-proxy" "^1.18.1" + "is-glob" "^4.0.1" + "is-plain-obj" "^3.0.0" + "micromatch" "^4.0.2" + +"http-proxy@^1.18.1": + "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + "version" "1.18.1" + dependencies: + "eventemitter3" "^4.0.0" + "follow-redirects" "^1.0.0" + "requires-port" "^1.0.0" + +"https-browserify@1.0.0": + "integrity" "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + "version" "1.0.0" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"hyphenate-style-name@^1.0.2": + "integrity" "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + "resolved" "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" + "version" "1.0.4" + +"iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"ieee754@^1.2.1": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" + +"ignore@^5.1.1", "ignore@^5.1.4", "ignore@^5.2.0": + "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + "version" "5.2.0" + +"imask@3.4.0": + "integrity" "sha512-sPiKtnn7WVc9x8W64rsiaBGzNDGI+cNYL/ZOpQoFryh46tj5zkAMG8pGjVodS4cDqn+iL8D4neRCTPtd5leJrg==" + "resolved" "https://registry.npmjs.org/imask/-/imask-3.4.0.tgz" + "version" "3.4.0" + +"immutable@^4.0.0": + "integrity" "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" + "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" + "version" "4.1.0" + +"import-fresh@^3.0.0", "import-fresh@^3.1.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"import-lazy@^4.0.0": + "integrity" "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" + "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" + "version" "4.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2", "inherits@2.0.4": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"inherits@2.0.3": + "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "version" "2.0.3" + +"ini@^1.3.2", "ini@^1.3.5": + "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + "version" "1.3.8" + +"inline-style-prefixer@^6.0.0": + "integrity" "sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ==" + "resolved" "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "css-in-js-utils" "^2.0.0" + +"internal-slot@^1.0.3": + "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "get-intrinsic" "^1.1.0" + "has" "^1.0.3" + "side-channel" "^1.0.4" + +"intersection-observer@0.10.0": + "integrity" "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==" + "resolved" "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz" + "version" "0.10.0" + +"invariant@^2.2.1": + "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" + "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + "version" "2.2.4" + dependencies: + "loose-envify" "^1.0.0" + +"ipaddr.js@^2.0.1": + "integrity" "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + "version" "2.0.1" + +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" + +"is-arguments@^1.0.4": + "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" + "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-arrayish@^0.2.1": + "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-arrayish@^0.3.1": + "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + "version" "0.3.2" + +"is-bigint@^1.0.1": + "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-bigints" "^1.0.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-boolean-object@^1.1.0": + "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" + "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.6": + "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + "version" "1.2.7" + +"is-core-module@^2.10.0", "is-core-module@^2.5.0", "is-core-module@^2.8.1", "is-core-module@^2.9.0": + "integrity" "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "has" "^1.0.3" + +"is-date-object@^1.0.1": + "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-docker@^2.0.0", "is-docker@^2.1.1": + "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + "version" "2.2.1" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-generator-function@^1.0.7": + "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" + "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-negative-zero@^2.0.2": + "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + "version" "2.0.2" + +"is-number-object@^1.0.4": + "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" + "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-obj@^2.0.0": + "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + "version" "2.0.0" + +"is-plain-obj@^1.1.0": + "integrity" "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + "version" "1.1.0" + +"is-plain-obj@^2.1.0": + "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + "version" "2.1.0" + +"is-plain-obj@^3.0.0": + "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + "version" "3.0.0" + +"is-plain-object@^2.0.4": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-regex@^1.0.4", "is-regex@^1.1.4": + "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-shared-array-buffer@^1.0.2": + "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" + "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-ssh@^1.4.0": + "integrity" "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==" + "resolved" "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "protocols" "^2.0.1" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-string@^1.0.5", "is-string@^1.0.7": + "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-symbol@^1.0.2", "is-symbol@^1.0.3": + "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-symbols" "^1.0.2" + +"is-text-path@^1.0.1": + "integrity" "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==" + "resolved" "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "text-extensions" "^1.0.0" + +"is-typed-array@^1.1.3", "is-typed-array@^1.1.9": + "integrity" "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==" + "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz" + "version" "1.1.9" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-abstract" "^1.20.0" + "for-each" "^0.3.3" + "has-tostringtag" "^1.0.0" + +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" + +"is-weakref@^1.0.2": + "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" + "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-wsl@^2.2.0": + "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "is-docker" "^2.0.0" + +"isarray@~1.0.0": + "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isarray@0.0.1": + "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "version" "0.0.1" + +"isbinaryfile@^4.0.8": + "integrity" "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" + "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" + "version" "4.0.10" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isobject@^3.0.1": + "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + "version" "3.0.1" + +"isomorphic-fetch@3": + "integrity" "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==" + "resolved" "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "node-fetch" "^2.6.1" + "whatwg-fetch" "^3.4.1" + +"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": + "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + "version" "3.2.0" + +"istanbul-lib-instrument@^4.0.0": + "integrity" "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + "istanbul-lib-coverage" "^3.0.0" + "semver" "^6.3.0" + +"istanbul-lib-instrument@^5.1.0": + "integrity" "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + "istanbul-lib-coverage" "^3.2.0" + "semver" "^6.3.0" + +"istanbul-lib-report@^3.0.0": + "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "istanbul-lib-coverage" "^3.0.0" + "make-dir" "^3.0.0" + "supports-color" "^7.1.0" + +"istanbul-lib-source-maps@^4.0.1": + "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "debug" "^4.1.1" + "istanbul-lib-coverage" "^3.0.0" + "source-map" "^0.6.1" + +"istanbul-reports@^3.0.5": + "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" + "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "html-escaper" "^2.0.0" + "istanbul-lib-report" "^3.0.0" + +"jest-worker@^27.4.5", "jest-worker@^27.5.1": + "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@types/node" "*" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"js-cookie@^2.2.1": + "integrity" "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + "resolved" "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz" + "version" "2.2.1" + +"js-cookie@2.1.4": + "integrity" "sha512-ACJgj9MPgn/ac4b55OZFbPY/u57HTSkOD65ScYN1sh/js0pQP7WQh7/kFt6/NxBOHKlwVsxZWliVo7CkxF0Cjg==" + "resolved" "https://registry.npmjs.org/js-cookie/-/js-cookie-2.1.4.tgz" + "version" "2.1.4" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"js-yaml@4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + +"json-parse-better-errors@^1.0.1": + "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + "version" "1.0.2" + +"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json-stringify-safe@^5.0.1": + "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"json5@^1.0.1": + "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" + "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "minimist" "^1.2.0" + +"json5@^2.1.2", "json5@^2.2.1": + "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + "version" "2.2.1" + +"jsonfile@^4.0.0": + "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + "version" "4.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsonfile@^6.0.1": + "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "universalify" "^2.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsonparse@^1.2.0": + "integrity" "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + "version" "1.3.1" + +"JSONStream@^1.0.4": + "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" + "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "jsonparse" "^1.2.0" + "through" ">=2.2.7 <3" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" + "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "array-includes" "^3.1.5" + "object.assign" "^4.1.3" + +"just-camel-case@4.0.2": + "integrity" "sha512-df6QI/EIq+6uHe/wtaa9Qq7/pp4wr4pJC/r1+7XhVL6m5j03G6h9u9/rIZr8rDASX7CxwDPQnZjffCo2e6PRLw==" + "resolved" "https://registry.npmjs.org/just-camel-case/-/just-camel-case-4.0.2.tgz" + "version" "4.0.2" + +"just-capitalize@1.0.0": + "integrity" "sha512-b3byxrtsLyeOJCb/BJXxvnwnPyj7tTTfBLb3KmFekAEYleZ2yp/maEDWU/NCkgZ43rm4r8jOqttb5AOkKZEkYA==" + "resolved" "https://registry.npmjs.org/just-capitalize/-/just-capitalize-1.0.0.tgz" + "version" "1.0.0" + +"just-debounce-it@1.5.0": + "integrity" "sha512-itSWJS5d2DTSCizVJ2Z0Djx/dGmUGfZe7WNfUfVP23+htGcIcPHbEjL4eB8ljojTs/+oYwLexImRRCP0A2WXjA==" + "resolved" "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.5.0.tgz" + "version" "1.5.0" + +"just-extend@^4.0.2": + "integrity" "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==" + "resolved" "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz" + "version" "4.2.1" + +"just-kebab-case@1.1.0": + "integrity" "sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA==" + "resolved" "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-1.1.0.tgz" + "version" "1.1.0" + +"just-pascal-case@1.1.0": + "integrity" "sha512-9WrLmpZ2wbt/k9ZAwp8MMc9/RqPRzUZZ+szWmAGFkas4+/z//+xYN8iUOBR2gmpiH8X5rJ+/yMvNFalMSKwmyg==" + "resolved" "https://registry.npmjs.org/just-pascal-case/-/just-pascal-case-1.1.0.tgz" + "version" "1.1.0" + +"karma-chrome-launcher@3.1.1": + "integrity" "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==" + "resolved" "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "which" "^1.2.1" + +"karma-coverage@2.2.0": + "integrity" "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==" + "resolved" "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "istanbul-lib-coverage" "^3.2.0" + "istanbul-lib-instrument" "^5.1.0" + "istanbul-lib-report" "^3.0.0" + "istanbul-lib-source-maps" "^4.0.1" + "istanbul-reports" "^3.0.5" + "minimatch" "^3.0.4" + +"karma-firefox-launcher@2.1.2": + "integrity" "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==" + "resolved" "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "is-wsl" "^2.2.0" + "which" "^2.0.1" + +"karma-mocha@2.0.1": + "integrity" "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==" + "resolved" "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "minimist" "^1.2.3" + +"karma-spec-reporter@0.0.34": + "integrity" "sha512-l5H/Nh9q4g2Ysx2CDU2m+NIPyLQpCVbk9c4V02BTZHw3NM6RO1dq3eRpKXCSSdPt4RGfhHk8jDt3XYkGp+5PWg==" + "resolved" "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.34.tgz" + "version" "0.0.34" + dependencies: + "colors" "1.4.0" + +"karma-webpack@5.0.0": + "integrity" "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==" + "resolved" "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "glob" "^7.1.3" + "minimatch" "^3.0.4" + "webpack-merge" "^4.1.5" + +"karma@6.4.0": + "integrity" "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==" + "resolved" "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz" + "version" "6.4.0" + dependencies: + "@colors/colors" "1.5.0" + "body-parser" "^1.19.0" + "braces" "^3.0.2" + "chokidar" "^3.5.1" + "connect" "^3.7.0" + "di" "^0.0.1" + "dom-serialize" "^2.2.1" + "glob" "^7.1.7" + "graceful-fs" "^4.2.6" + "http-proxy" "^1.18.1" + "isbinaryfile" "^4.0.8" + "lodash" "^4.17.21" + "log4js" "^6.4.1" + "mime" "^2.5.2" + "minimatch" "^3.0.4" + "mkdirp" "^0.5.5" + "qjobs" "^1.2.0" + "range-parser" "^1.2.1" + "rimraf" "^3.0.2" + "socket.io" "^4.4.1" + "source-map" "^0.6.1" + "tmp" "^0.2.1" + "ua-parser-js" "^0.7.30" + "yargs" "^16.1.1" + +"kind-of@^6.0.2", "kind-of@^6.0.3": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"klona@^2.0.5": + "integrity" "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" + "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" + "version" "2.0.5" + +"known-css-properties@^0.25.0": + "integrity" "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==" + "resolved" "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz" + "version" "0.25.0" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"lilconfig@^2.0.3": + "integrity" "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" + "version" "2.0.6" + +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"load-json-file@^4.0.0": + "integrity" "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==" + "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "graceful-fs" "^4.1.2" + "parse-json" "^4.0.0" + "pify" "^3.0.0" + "strip-bom" "^3.0.0" + +"loader-runner@^4.2.0": + "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + "version" "4.3.0" + +"loader-utils@^2.0.0": + "integrity" "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"loader-utils@3.2.0": + "integrity" "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz" + "version" "3.2.0" + +"locate-path@^2.0.0": + "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "p-locate" "^2.0.0" + "path-exists" "^3.0.0" + +"locate-path@^3.0.0": + "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-locate" "^3.0.0" + "path-exists" "^3.0.0" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash.curry@^4.0.1": + "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" + "version" "4.1.1" + +"lodash.debounce@^4.0.8", "lodash.debounce@4", "lodash.debounce@4.0.8": + "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.flow@^3.3.0": + "integrity" "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + "resolved" "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" + "version" "3.5.0" + +"lodash.get@^4.4.2": + "integrity" "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + "resolved" "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + "version" "4.4.2" + +"lodash.isequal@4.5": + "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + "version" "4.5.0" + +"lodash.ismatch@^4.4.0": + "integrity" "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" + "resolved" "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" + "version" "4.4.0" + +"lodash.memoize@^4.1.2": + "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + "version" "4.1.2" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.throttle@4.1.1": + "integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + "version" "4.1.1" + +"lodash.truncate@^4.4.2": + "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + "version" "4.4.2" + +"lodash.uniq@^4.5.0": + "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + "version" "4.5.0" + +"lodash@^4.17.15", "lodash@^4.17.20", "lodash@^4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@4.1.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" + +"log4js@^6.4.1": + "integrity" "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==" + "resolved" "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz" + "version" "6.7.0" + dependencies: + "date-format" "^4.0.14" + "debug" "^4.3.4" + "flatted" "^3.2.7" + "rfdc" "^1.3.0" + "streamroller" "^3.1.3" + +"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.2.0", "loose-envify@^1.4.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lorem-ipsum@2.0.4": + "integrity" "sha512-TD+ERYfxjYiUfOyaKU6OH4euumNVeKoo3BxIhokb7bGmoCULsME48onF9NVxYK3CU1z9L5ALnkDkW8lIkHvMNQ==" + "resolved" "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "commander" "^2.17.1" + +"loupe@^2.3.1": + "integrity" "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==" + "resolved" "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" + "version" "2.3.4" + dependencies: + "get-func-name" "^2.0.0" + +"lower-case@^2.0.2": + "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "tslib" "^2.0.3" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lz-string@^1.4.4": + "integrity" "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" + "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" + "version" "1.4.4" + +"make-dir@^2.0.0", "make-dir@^2.1.0": + "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "pify" "^4.0.1" + "semver" "^5.6.0" + +"make-dir@^3.0.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"make-dir@^3.0.2", "make-dir@^3.1.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"map-obj@^1.0.0": + "integrity" "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + "version" "1.0.1" + +"map-obj@^4.0.0": + "integrity" "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" + "version" "4.3.0" + +"mathml-tag-names@^2.1.3": + "integrity" "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==" + "resolved" "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz" + "version" "2.1.3" + +"mdn-data@2.0.14": + "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + "version" "2.0.14" + +"media-typer@0.3.0": + "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"memfs@^3.4.3": + "integrity" "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==" + "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz" + "version" "3.4.7" + dependencies: + "fs-monkey" "^1.0.3" + +"memoize-one@^5.1.1": + "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + "version" "5.2.1" + +"meow@^8.0.0": + "integrity" "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==" + "resolved" "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" + "version" "8.1.2" + dependencies: + "@types/minimist" "^1.2.0" + "camelcase-keys" "^6.2.2" + "decamelize-keys" "^1.1.0" + "hard-rejection" "^2.1.0" + "minimist-options" "4.1.0" + "normalize-package-data" "^3.0.0" + "read-pkg-up" "^7.0.1" + "redent" "^3.0.0" + "trim-newlines" "^3.0.0" + "type-fest" "^0.18.0" + "yargs-parser" "^20.2.3" + +"meow@^9.0.0": + "integrity" "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==" + "resolved" "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" + "version" "9.0.0" + dependencies: + "@types/minimist" "^1.2.0" + "camelcase-keys" "^6.2.2" + "decamelize" "^1.2.0" + "decamelize-keys" "^1.1.0" + "hard-rejection" "^2.1.0" + "minimist-options" "4.1.0" + "normalize-package-data" "^3.0.0" + "read-pkg-up" "^7.0.1" + "redent" "^3.0.0" + "trim-newlines" "^3.0.0" + "type-fest" "^0.18.0" + "yargs-parser" "^20.2.3" + +"merge-descriptors@1.0.1": + "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"methods@~1.1.2": + "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5", "micromatch@4.0.5": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime@^2.5.2": + "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + "version" "2.6.0" + +"mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"min-indent@^1.0.0": + "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + "version" "1.0.1" + +"mini-css-extract-plugin@2.6.1": + "integrity" "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==" + "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz" + "version" "2.6.1" + dependencies: + "schema-utils" "^4.0.0" + +"minimalistic-assert@^1.0.0": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.0.2", "minimatch@^3.0.4", "minimatch@^3.1.1", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^5.0.1": + "integrity" "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "brace-expansion" "^2.0.1" + +"minimatch@5.0.1": + "integrity" "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "brace-expansion" "^2.0.1" + +"minimist-options@4.1.0": + "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==" + "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "arrify" "^1.0.1" + "is-plain-obj" "^1.1.0" + "kind-of" "^6.0.3" + +"minimist@^1.2.0", "minimist@^1.2.3", "minimist@^1.2.5", "minimist@^1.2.6": + "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + "version" "1.2.6" + +"mkdirp@^0.5.5": + "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + "version" "0.5.6" + dependencies: + "minimist" "^1.2.6" + +"mocha@10.0.0": + "integrity" "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==" + "resolved" "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz" + "version" "10.0.0" + dependencies: + "@ungap/promise-all-settled" "1.1.2" + "ansi-colors" "4.1.1" + "browser-stdout" "1.3.1" + "chokidar" "3.5.3" + "debug" "4.3.4" + "diff" "5.0.0" + "escape-string-regexp" "4.0.0" + "find-up" "5.0.0" + "glob" "7.2.0" + "he" "1.2.0" + "js-yaml" "4.1.0" + "log-symbols" "4.1.0" + "minimatch" "5.0.1" + "ms" "2.1.3" + "nanoid" "3.3.3" + "serialize-javascript" "6.0.0" + "strip-json-comments" "3.1.1" + "supports-color" "8.1.1" + "workerpool" "6.2.1" + "yargs" "16.2.0" + "yargs-parser" "20.2.4" + "yargs-unparser" "2.0.0" + +"modify-values@^1.0.0": + "integrity" "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" + "resolved" "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" + "version" "1.0.1" + +"ms@^2.1.1", "ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.0.0": + "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"multicast-dns@^7.2.5": + "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" + "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + "version" "7.2.5" + dependencies: + "dns-packet" "^5.2.2" + "thunky" "^1.0.2" + +"nano-css@^5.2.1", "nano-css@^5.3.1": + "integrity" "sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==" + "resolved" "https://registry.npmjs.org/nano-css/-/nano-css-5.3.5.tgz" + "version" "5.3.5" + dependencies: + "css-tree" "^1.1.2" + "csstype" "^3.0.6" + "fastest-stable-stringify" "^2.0.2" + "inline-style-prefixer" "^6.0.0" + "rtl-css-js" "^1.14.0" + "sourcemap-codec" "^1.4.8" + "stacktrace-js" "^2.0.2" + "stylis" "^4.0.6" + +"nanoid@^3.3.4": + "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + "version" "3.3.4" + +"nanoid@3.3.1": + "integrity" "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" + "version" "3.3.1" + +"nanoid@3.3.3": + "integrity" "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" + "version" "3.3.3" + +"natural-compare@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"negotiator@0.6.3": + "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + "version" "0.6.3" + +"neo-async@^2.6.0", "neo-async@^2.6.1", "neo-async@^2.6.2": + "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + "version" "2.6.2" + +"nise@^5.1.0": + "integrity" "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==" + "resolved" "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "@sinonjs/commons" "^1.8.3" + "@sinonjs/fake-timers" ">=5" + "@sinonjs/text-encoding" "^0.7.1" + "just-extend" "^4.0.2" + "path-to-regexp" "^1.7.0" + +"no-case@^3.0.4": + "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "lower-case" "^2.0.2" + "tslib" "^2.0.3" + +"node-dir@^0.1.10": + "integrity" "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==" + "resolved" "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + "version" "0.1.17" + dependencies: + "minimatch" "^3.0.2" + +"node-fetch@^2.6.1", "node-fetch@2.6.7": + "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + "version" "2.6.7" + dependencies: + "whatwg-url" "^5.0.0" + +"node-forge@^1": + "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + "version" "1.3.1" + +"node-releases@^2.0.6": + "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + "version" "2.0.6" + +"normalize-package-data@^2.3.2": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^2.5.0": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^3.0.0": + "integrity" "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "hosted-git-info" "^4.0.1" + "is-core-module" "^2.5.0" + "semver" "^7.3.4" + "validate-npm-package-license" "^3.0.1" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-range@^0.1.2": + "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + "version" "0.1.2" + +"normalize-url@^6.0.1", "normalize-url@^6.1.0": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"normalize-wheel@^1.0.1": + "integrity" "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + "resolved" "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz" + "version" "1.0.1" + +"normalize.css@8.0.1": + "integrity" "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + "resolved" "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz" + "version" "8.0.1" + +"npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"nth-check@^2.0.1": + "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "boolbase" "^1.0.0" + +"object-assign@^4", "object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-inspect@^1.12.2", "object-inspect@^1.9.0": + "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + "version" "1.12.2" + +"object-is@^1.0.1": + "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" + "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + +"object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object.assign@^4.1.0", "object.assign@^4.1.3", "object.assign@^4.1.4": + "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + "version" "4.1.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "has-symbols" "^1.0.3" + "object-keys" "^1.1.1" + +"object.entries@^1.1.5": + "integrity" "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" + "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"object.fromentries@^2.0.5": + "integrity" "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==" + "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"object.hasown@^1.1.1": + "integrity" "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==" + "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "define-properties" "^1.1.4" + "es-abstract" "^1.19.5" + +"object.values@^1.1.5": + "integrity" "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==" + "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + +"obuf@^1.0.0", "obuf@^1.1.2": + "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + "version" "1.1.2" + +"on-finished@~2.3.0": + "integrity" "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "ee-first" "1.1.1" + +"on-finished@2.4.1": + "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "ee-first" "1.1.1" + +"on-headers@~1.0.2": + "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + "version" "1.0.2" + +"once@^1.3.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"open@^8.0.9": + "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" + "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + "version" "8.4.0" + dependencies: + "define-lazy-prop" "^2.0.0" + "is-docker" "^2.1.1" + "is-wsl" "^2.2.0" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "deep-is" "^0.1.3" + "fast-levenshtein" "^2.0.6" + "levn" "^0.4.1" + "prelude-ls" "^1.2.1" + "type-check" "^0.4.0" + "word-wrap" "^1.2.3" + +"p-finally@^1.0.0": + "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" + "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + "version" "1.0.0" + +"p-limit@^1.1.0": + "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "p-try" "^1.0.0" + +"p-limit@^2.0.0", "p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^2.0.0": + "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "p-limit" "^1.1.0" + +"p-locate@^3.0.0": + "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-limit" "^2.0.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-queue@6.6.2": + "integrity" "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==" + "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" + "version" "6.6.2" + dependencies: + "eventemitter3" "^4.0.4" + "p-timeout" "^3.2.0" + +"p-retry@^4.5.0": + "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + "version" "4.6.2" + dependencies: + "@types/retry" "0.12.0" + "retry" "^0.13.1" + +"p-timeout@^3.2.0": + "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" + "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "p-finally" "^1.0.0" + +"p-try@^1.0.0": + "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + "version" "1.0.0" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"param-case@^3.0.4": + "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" + "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-json@^4.0.0": + "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "error-ex" "^1.3.1" + "json-parse-better-errors" "^1.0.1" + +"parse-json@^5.0.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@babel/code-frame" "^7.0.0" + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parse-path@^5.0.0": + "integrity" "sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A==" + "resolved" "https://registry.npmjs.org/parse-path/-/parse-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "protocols" "^2.0.0" + +"parse-url@^7.0.2": + "integrity" "sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg==" + "resolved" "https://registry.npmjs.org/parse-url/-/parse-url-7.0.2.tgz" + "version" "7.0.2" + dependencies: + "is-ssh" "^1.4.0" + "normalize-url" "^6.1.0" + "parse-path" "^5.0.0" + "protocols" "^2.0.1" + +"parseurl@~1.3.2", "parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"pascal-case@^3.1.2": + "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" + "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"path-exists@^3.0.0": + "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + "version" "3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-to-regexp@^1.7.0": + "integrity" "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "isarray" "0.0.1" + +"path-to-regexp@0.1.7": + "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"path-type@^3.0.0": + "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "pify" "^3.0.0" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"pathval@^1.1.1": + "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" + "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + "version" "1.1.1" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"pify@^2.3.0": + "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + "version" "2.3.0" + +"pify@^3.0.0": + "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + "version" "3.0.0" + +"pify@^4.0.1": + "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + "version" "4.0.1" + +"pirates@^4.0.5": + "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" + "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + "version" "4.0.5" + +"pkg-dir@^3.0.0": + "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "find-up" "^3.0.0" + +"pkg-dir@^4.1.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "find-up" "^4.0.0" + +"popper.js@^1.14.4": + "integrity" "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + "resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz" + "version" "1.16.1" + +"postcss-calc@^8.2.3": + "integrity" "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==" + "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" + "version" "8.2.4" + dependencies: + "postcss-selector-parser" "^6.0.9" + "postcss-value-parser" "^4.2.0" + +"postcss-colormin@^5.3.0": + "integrity" "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==" + "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "browserslist" "^4.16.6" + "caniuse-api" "^3.0.0" + "colord" "^2.9.1" + "postcss-value-parser" "^4.2.0" + +"postcss-convert-values@^5.1.2": + "integrity" "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==" + "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "browserslist" "^4.20.3" + "postcss-value-parser" "^4.2.0" + +"postcss-discard-comments@^5.1.2": + "integrity" "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" + "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" + "version" "5.1.2" + +"postcss-discard-duplicates@^5.1.0": + "integrity" "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" + "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" + "version" "5.1.0" + +"postcss-discard-empty@^5.1.1": + "integrity" "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" + "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" + "version" "5.1.1" + +"postcss-discard-overridden@^5.1.0": + "integrity" "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" + "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" + "version" "5.1.0" + +"postcss-loader@7.0.1": + "integrity" "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==" + "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "cosmiconfig" "^7.0.0" + "klona" "^2.0.5" + "semver" "^7.3.7" + +"postcss-media-query-parser@^0.2.3": + "integrity" "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + "resolved" "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz" + "version" "0.2.3" + +"postcss-merge-longhand@^5.1.6": + "integrity" "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==" + "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz" + "version" "5.1.6" + dependencies: + "postcss-value-parser" "^4.2.0" + "stylehacks" "^5.1.0" + +"postcss-merge-rules@^5.1.2": + "integrity" "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==" + "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "browserslist" "^4.16.6" + "caniuse-api" "^3.0.0" + "cssnano-utils" "^3.1.0" + "postcss-selector-parser" "^6.0.5" + +"postcss-minify-font-values@^5.1.0": + "integrity" "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==" + "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-minify-gradients@^5.1.1": + "integrity" "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==" + "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "colord" "^2.9.1" + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-params@^5.1.3": + "integrity" "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==" + "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz" + "version" "5.1.3" + dependencies: + "browserslist" "^4.16.6" + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-selectors@^5.2.1": + "integrity" "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==" + "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-modules-extract-imports@^3.0.0": + "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + "version" "3.0.0" + +"postcss-modules-local-by-default@^4.0.0": + "integrity" "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" + +"postcss-modules-scope@^3.0.0": + "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.4" + +"postcss-modules-values@^4.0.0": + "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + +"postcss-normalize-charset@^5.1.0": + "integrity" "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" + "version" "5.1.0" + +"postcss-normalize-display-values@^5.1.0": + "integrity" "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==" + "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-positions@^5.1.1": + "integrity" "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-repeat-style@^5.1.1": + "integrity" "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==" + "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-string@^5.1.0": + "integrity" "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==" + "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-timing-functions@^5.1.0": + "integrity" "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-unicode@^5.1.0": + "integrity" "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==" + "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "browserslist" "^4.16.6" + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-url@^5.1.0": + "integrity" "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==" + "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "normalize-url" "^6.0.1" + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-whitespace@^5.1.1": + "integrity" "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==" + "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-ordered-values@^5.1.3": + "integrity" "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==" + "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" + "version" "5.1.3" + dependencies: + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-reduce-initial@^5.1.0": + "integrity" "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==" + "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "browserslist" "^4.16.6" + "caniuse-api" "^3.0.0" + +"postcss-reduce-transforms@^5.1.0": + "integrity" "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==" + "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-resolve-nested-selector@^0.1.1": + "integrity" "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" + "resolved" "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz" + "version" "0.1.1" + +"postcss-safe-parser@^6.0.0": + "integrity" "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==" + "resolved" "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz" + "version" "6.0.0" + +"postcss-scss@^4.0.2", "postcss-scss@4.0.4": + "integrity" "sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==" + "resolved" "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.4.tgz" + "version" "4.0.4" + +"postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5", "postcss-selector-parser@^6.0.6", "postcss-selector-parser@^6.0.9": + "integrity" "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + "version" "6.0.10" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-svgo@^5.1.0": + "integrity" "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==" + "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + "svgo" "^2.7.0" + +"postcss-unique-selectors@^5.1.1": + "integrity" "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==" + "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" + +"postcss@^8.4.13", "postcss@^8.4.16", "postcss@^8.4.7", "postcss@8.4.16": + "integrity" "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz" + "version" "8.4.16" + dependencies: + "nanoid" "^3.3.4" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"prettier-linter-helpers@^1.0.0": + "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fast-diff" "^1.1.2" + +"prettier@2.7.1": + "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + "version" "2.7.1" + +"pretty-error@^4.0.0": + "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" + "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "lodash" "^4.17.20" + "renderkid" "^3.0.0" + +"pretty-format@^26.6.2": + "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + "version" "26.6.2" + dependencies: + "@jest/types" "^26.6.2" + "ansi-regex" "^5.0.0" + "ansi-styles" "^4.0.0" + "react-is" "^17.0.1" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"process@0.11.10": + "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + "version" "0.11.10" + +"promise@^7.1.1": + "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" + "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + "version" "7.3.1" + dependencies: + "asap" "~2.0.3" + +"prop-types@^15.5.8", "prop-types@^15.6.1", "prop-types@^15.6.2", "prop-types@^15.7.2", "prop-types@^15.8.1": + "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + "version" "15.8.1" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.13.1" + +"protocols@^2.0.0", "protocols@^2.0.1": + "integrity" "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" + "resolved" "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz" + "version" "2.0.1" + +"proxy-addr@~2.0.7": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"punycode@^2.1.0": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" + +"punycode@1.3.2": + "integrity" "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + "version" "1.3.2" + +"pure-color@^1.2.0": + "integrity" "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + "resolved" "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" + "version" "1.3.0" + +"q@^1.5.1": + "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + "version" "1.5.1" + +"qjobs@^1.2.0": + "integrity" "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==" + "resolved" "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz" + "version" "1.2.0" + +"qs@6.10.3": + "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" + "version" "6.10.3" + dependencies: + "side-channel" "^1.0.4" + +"qs@6.7.0": + "integrity" "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + "version" "6.7.0" + +"query-string@^4.2.2": + "integrity" "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "object-assign" "^4.1.0" + "strict-uri-encode" "^1.0.0" + +"querystring@0.2.0": + "integrity" "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + "version" "0.2.0" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-lru@^4.0.1": + "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" + "version" "4.0.1" + +"randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"range-parser@^1.2.1", "range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"raw-body@2.5.1": + "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"rc-align@^4.0.0": + "integrity" "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==" + "resolved" "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz" + "version" "4.0.12" + dependencies: + "@babel/runtime" "^7.10.1" + "classnames" "2.x" + "dom-align" "^1.7.0" + "lodash" "^4.17.21" + "rc-util" "^5.3.0" + "resize-observer-polyfill" "^1.5.1" + +"rc-motion@^2.0.0": + "integrity" "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==" + "resolved" "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz" + "version" "2.6.2" + dependencies: + "@babel/runtime" "^7.11.1" + "classnames" "^2.2.1" + "rc-util" "^5.21.0" + +"rc-slider@9": + "integrity" "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==" + "resolved" "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz" + "version" "9.7.5" + dependencies: + "@babel/runtime" "^7.10.1" + "classnames" "^2.2.5" + "rc-tooltip" "^5.0.1" + "rc-util" "^5.16.1" + "shallowequal" "^1.1.0" + +"rc-tooltip@^5.0.1": + "integrity" "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==" + "resolved" "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz" + "version" "5.2.2" + dependencies: + "@babel/runtime" "^7.11.2" + "classnames" "^2.3.1" + "rc-trigger" "^5.0.0" + +"rc-trigger@^5.0.0": + "integrity" "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==" + "resolved" "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "@babel/runtime" "^7.18.3" + "classnames" "^2.2.6" + "rc-align" "^4.0.0" + "rc-motion" "^2.0.0" + "rc-util" "^5.19.2" + +"rc-util@^5.16.1", "rc-util@^5.19.2", "rc-util@^5.21.0", "rc-util@^5.3.0": + "integrity" "sha512-2a4RQnycV9eV7lVZPEJ7QwJRPlZNc06J7CwcwZo4vIHr3PfUqtYgl1EkUV9ETAc6VRRi8XZOMFhYG63whlIC9Q==" + "resolved" "https://registry.npmjs.org/rc-util/-/rc-util-5.24.4.tgz" + "version" "5.24.4" + dependencies: + "@babel/runtime" "^7.18.3" + "react-is" "^16.12.0" + "shallowequal" "^1.1.0" + +"react-base16-styling@^0.6.0": + "integrity" "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==" + "resolved" "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "base16" "^1.0.0" + "lodash.curry" "^4.0.1" + "lodash.flow" "^3.3.0" + "pure-color" "^1.2.0" + +"react-docgen@5.3.1": + "integrity" "sha512-YG7YujVTwlLslr2Ny8nQiUfbBuEwKsLHJdQTSdEga1eY/nRFh/7LjCWUn6ogYhu2WDKg4z+6W/BJtUi+DPUIlA==" + "resolved" "https://registry.npmjs.org/react-docgen/-/react-docgen-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "@babel/core" "^7.7.5" + "@babel/runtime" "^7.7.6" + "ast-types" "^0.14.2" + "commander" "^2.19.0" + "doctrine" "^3.0.0" + "neo-async" "^2.6.1" + "node-dir" "^0.1.10" + "strip-indent" "^3.0.0" + +"react-dom@17": + "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "scheduler" "^0.20.2" + +"react-dropzone@11.5", "react-dropzone@11.5.1": + "integrity" "sha512-eNhttdq4ZDe3eKbXAe54Opt+sbtqmNK5NWTHf/l5d+1TdZqShJ8gMjBrya00qx5zkI//TYxRhu1d9pemTgaWwg==" + "resolved" "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.5.1.tgz" + "version" "11.5.1" + dependencies: + "attr-accept" "^2.2.1" + "file-selector" "^0.2.2" + "prop-types" "^15.7.2" + +"react-easy-crop@3.4.0": + "integrity" "sha512-UMjm3O78Mry3a9d8h4GYqdtnrFX9GupYGTXyHs1VfsgywqbUCT10fEiw6Uz5f3ZIKJ+AgG+t/+njopZsKd4DYA==" + "resolved" "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-3.4.0.tgz" + "version" "3.4.0" + dependencies: + "normalize-wheel" "^1.0.1" + "tslib" "2.0.1" + +"react-extra-prop-types@0": + "integrity" "sha512-y5ZRf8C39LSbGULM5bRgvepHJwQyzbuGNMSIxuS7eXshgr4f1/385oN4PqHPecm6o1CrzIBrH7qVVmftkkuWCA==" + "resolved" "https://registry.npmjs.org/react-extra-prop-types/-/react-extra-prop-types-0.3.1.tgz" + "version" "0.3.1" + +"react-fast-compare@3.2.0": + "integrity" "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + "version" "3.2.0" + +"react-icons@4": + "integrity" "sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==" + "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.4.0.tgz" + "version" "4.4.0" + +"react-is@^16.12.0", "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^16.13.1", "react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^17.0.1": + "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + "version" "17.0.2" + +"react-is@^17.0.2": + "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + "version" "17.0.2" + +"react-is@17": + "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + "version" "17.0.2" + +"react-json-view@1.21.3": + "integrity" "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==" + "resolved" "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" + "version" "1.21.3" + dependencies: + "flux" "^4.0.1" + "react-base16-styling" "^0.6.0" + "react-lifecycles-compat" "^3.0.4" + "react-textarea-autosize" "^8.3.2" + +"react-lifecycles-compat@^3.0.4": + "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + "version" "3.0.4" + +"react-popper@^1.3.6": + "integrity" "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==" + "resolved" "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz" + "version" "1.3.11" + dependencies: + "@babel/runtime" "^7.1.2" + "@hypnosphi/create-react-context" "^0.3.1" + "deep-equal" "^1.1.1" + "popper.js" "^1.14.4" + "prop-types" "^15.6.1" + "typed-styles" "^0.0.7" + "warning" "^4.0.2" + +"react-shallow-renderer@^16.13.1": + "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" + "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + "version" "16.15.0" + dependencies: + "object-assign" "^4.1.1" + "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" + +"react-sortablejs@6.0": + "integrity" "sha512-Aoxl/kuqOA1A2y42Z4E/uZ+eAP2rP11TYM+CZYfs3VoYlh7rzwIdVqrKPibYg1CdzFkJiFb4pYGmMvGKYKv3bA==" + "resolved" "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "classnames" "2.3.1" + "tiny-invariant" "1.2.0" + +"react-stickup@1.12": + "integrity" "sha512-YVLPzj/QlxuRLi4IMzCqU0OY9bol8TwPVCoXKpe4uQzOTazqa9s7TiELlBIjEUk+8sxc+cnZQd+7M09l8RrhHw==" + "resolved" "https://registry.npmjs.org/react-stickup/-/react-stickup-1.12.1.tgz" + "version" "1.12.1" + dependencies: + "react-viewport-utils" "^1.12.1" + +"react-test-renderer@17": + "integrity" "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==" + "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "object-assign" "^4.1.1" + "react-is" "^17.0.2" + "react-shallow-renderer" "^16.13.1" + "scheduler" "^0.20.2" + +"react-textarea-autosize@^8.3.2": + "integrity" "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==" + "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" + "version" "8.3.4" + dependencies: + "@babel/runtime" "^7.10.2" + "use-composed-ref" "^1.3.0" + "use-latest" "^1.2.1" + +"react-transition-group@^2.3.1": + "integrity" "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==" + "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "dom-helpers" "^3.4.0" + "loose-envify" "^1.4.0" + "prop-types" "^15.6.2" + "react-lifecycles-compat" "^3.0.4" + +"react-universal-interface@^0.6.2": + "integrity" "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==" + "resolved" "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz" + "version" "0.6.2" + +"react-use@15": + "integrity" "sha512-GeGcrmGuUvZrY5wER3Lnph9DSYhZt5nEjped4eKDq8BRGr2CnLf9bDQWG9RFc7oCPphnscUUdOovzq0E5F2c6Q==" + "resolved" "https://registry.npmjs.org/react-use/-/react-use-15.3.8.tgz" + "version" "15.3.8" + dependencies: + "@types/js-cookie" "2.2.6" + "@xobotyi/scrollbar-width" "1.9.5" + "copy-to-clipboard" "^3.2.0" + "fast-deep-equal" "^3.1.3" + "fast-shallow-equal" "^1.0.0" + "js-cookie" "^2.2.1" + "nano-css" "^5.2.1" + "react-universal-interface" "^0.6.2" + "resize-observer-polyfill" "^1.5.1" + "screenfull" "^5.0.0" + "set-harmonic-interval" "^1.0.1" + "throttle-debounce" "^2.1.0" + "ts-easing" "^0.2.0" + "tslib" "^2.0.0" + +"react-use@17.3.2": + "integrity" "sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw==" + "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz" + "version" "17.3.2" + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + "copy-to-clipboard" "^3.3.1" + "fast-deep-equal" "^3.1.3" + "fast-shallow-equal" "^1.0.0" + "js-cookie" "^2.2.1" + "nano-css" "^5.3.1" + "react-universal-interface" "^0.6.2" + "resize-observer-polyfill" "^1.5.1" + "screenfull" "^5.1.0" + "set-harmonic-interval" "^1.0.1" + "throttle-debounce" "^3.0.1" + "ts-easing" "^0.2.0" + "tslib" "^2.1.0" + +"react-use@17.3": + "integrity" "sha512-2FYRZoNKImSONW8WudJgDj8My0XGqVglkEqTFfY/bQJ0AFgHnaESVCVudK7p86mtMsqjiMYh+noDXJjw05S7uw==" + "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.3.3.tgz" + "version" "17.3.3" + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + "copy-to-clipboard" "^3.3.1" + "fast-deep-equal" "^3.1.3" + "fast-shallow-equal" "^1.0.0" + "js-cookie" "^2.2.1" + "nano-css" "^5.3.1" + "react-universal-interface" "^0.6.2" + "resize-observer-polyfill" "^1.5.1" + "screenfull" "^5.1.0" + "set-harmonic-interval" "^1.0.1" + "throttle-debounce" "^3.0.1" + "ts-easing" "^0.2.0" + "tslib" "^2.1.0" + +"react-use@17.4.0": + "integrity" "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==" + "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz" + "version" "17.4.0" + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + "copy-to-clipboard" "^3.3.1" + "fast-deep-equal" "^3.1.3" + "fast-shallow-equal" "^1.0.0" + "js-cookie" "^2.2.1" + "nano-css" "^5.3.1" + "react-universal-interface" "^0.6.2" + "resize-observer-polyfill" "^1.5.1" + "screenfull" "^5.1.0" + "set-harmonic-interval" "^1.0.1" + "throttle-debounce" "^3.0.1" + "ts-easing" "^0.2.0" + "tslib" "^2.1.0" + +"react-use@17": + "integrity" "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==" + "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz" + "version" "17.4.0" + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + "copy-to-clipboard" "^3.3.1" + "fast-deep-equal" "^3.1.3" + "fast-shallow-equal" "^1.0.0" + "js-cookie" "^2.2.1" + "nano-css" "^5.3.1" + "react-universal-interface" "^0.6.2" + "resize-observer-polyfill" "^1.5.1" + "screenfull" "^5.1.0" + "set-harmonic-interval" "^1.0.1" + "throttle-debounce" "^3.0.1" + "ts-easing" "^0.2.0" + "tslib" "^2.1.0" + +"react-viewport-utils@^1.12.1": + "integrity" "sha512-sjj8rNIKSlzwhVf3mJJJl3Z+34ILFrMxCdP2jmzkAGtwXjdvKm2my9lZMV54oh837bUGx3k6XZlF/988Up3GZg==" + "resolved" "https://registry.npmjs.org/react-viewport-utils/-/react-viewport-utils-1.12.1.tgz" + "version" "1.12.1" + dependencies: + "memoize-one" "^5.1.1" + +"react@17": + "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" + "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"reactstrap@8.9.0": + "integrity" "sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ==" + "resolved" "https://registry.npmjs.org/reactstrap/-/reactstrap-8.9.0.tgz" + "version" "8.9.0" + dependencies: + "@babel/runtime" "^7.12.5" + "classnames" "^2.2.3" + "prop-types" "^15.5.8" + "react-popper" "^1.3.6" + "react-transition-group" "^2.3.1" + +"read-pkg-up@^3.0.0": + "integrity" "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==" + "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "find-up" "^2.0.0" + "read-pkg" "^3.0.0" + +"read-pkg-up@^7.0.1": + "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" + "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "find-up" "^4.1.0" + "read-pkg" "^5.2.0" + "type-fest" "^0.8.1" + +"read-pkg@^3.0.0": + "integrity" "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==" + "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "load-json-file" "^4.0.0" + "normalize-package-data" "^2.3.2" + "path-type" "^3.0.0" + +"read-pkg@^5.2.0": + "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" + "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@types/normalize-package-data" "^2.4.0" + "normalize-package-data" "^2.5.0" + "parse-json" "^5.0.0" + "type-fest" "^0.6.0" + +"readable-stream@^2.0.1": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.3" + "isarray" "~1.0.0" + "process-nextick-args" "~2.0.0" + "safe-buffer" "~5.1.1" + "string_decoder" "~1.1.1" + "util-deprecate" "~1.0.1" + +"readable-stream@^3.0.0", "readable-stream@^3.0.6", "readable-stream@^3.5.0", "readable-stream@^3.6.0", "readable-stream@3": + "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@~2.3.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.3" + "isarray" "~1.0.0" + "process-nextick-args" "~2.0.0" + "safe-buffer" "~5.1.1" + "string_decoder" "~1.1.1" + "util-deprecate" "~1.0.1" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"redent@^3.0.0": + "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" + "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "indent-string" "^4.0.0" + "strip-indent" "^3.0.0" + +"regenerate-unicode-properties@^10.1.0": + "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" + "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "regenerate" "^1.4.2" + +"regenerate@^1.4.2": + "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + "version" "1.4.2" + +"regenerator-runtime@^0.13.4": + "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + "version" "0.13.9" + +"regenerator-transform@^0.15.0": + "integrity" "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" + "version" "0.15.0" + dependencies: + "@babel/runtime" "^7.8.4" + +"regexp.prototype.flags@^1.2.0", "regexp.prototype.flags@^1.4.1", "regexp.prototype.flags@^1.4.3": + "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" + "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "functions-have-names" "^1.2.2" + +"regexpp@^3.0.0", "regexpp@^3.2.0": + "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + "version" "3.2.0" + +"regexpu-core@^5.1.0": + "integrity" "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "regenerate" "^1.4.2" + "regenerate-unicode-properties" "^10.1.0" + "regjsgen" "^0.7.1" + "regjsparser" "^0.9.1" + "unicode-match-property-ecmascript" "^2.0.0" + "unicode-match-property-value-ecmascript" "^2.0.0" + +"regjsgen@^0.7.1": + "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + "version" "0.7.1" + +"regjsparser@^0.9.1": + "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "jsesc" "~0.5.0" + +"relateurl@^0.2.7": + "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + "version" "0.2.7" + +"remove-accents@0.4.2": + "integrity" "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + "resolved" "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz" + "version" "0.4.2" + +"renderkid@^3.0.0": + "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" + "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "css-select" "^4.1.3" + "dom-converter" "^0.2.0" + "htmlparser2" "^6.1.0" + "lodash" "^4.17.21" + "strip-ansi" "^6.0.1" + +"require-directory@^2.1.1": + "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"requires-port@^1.0.0": + "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"resize-observer-polyfill@^1.5.1": + "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + "version" "1.5.1" + +"resize-observer-polyfill@1.5.0": + "integrity" "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" + "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz" + "version" "1.5.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve@^1.10.0", "resolve@^1.12.0", "resolve@^1.14.2", "resolve@^1.20.0", "resolve@^1.22.0", "resolve@^1.22.1": + "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + "version" "1.22.1" + dependencies: + "is-core-module" "^2.9.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^2.0.0-next.3": + "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" + "version" "2.0.0-next.4" + dependencies: + "is-core-module" "^2.9.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"retry@^0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rfdc@^1.3.0": + "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + "version" "1.3.0" + +"rimraf@^3.0.0", "rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rtl-css-js@^1.14.0": + "integrity" "sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==" + "resolved" "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.0.tgz" + "version" "1.16.0" + dependencies: + "@babel/runtime" "^7.1.2" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"safe-buffer@^5.1.0", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@~5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-buffer@5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-regex-test@^1.0.0": + "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" + "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.3" + "is-regex" "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"sass@1.54.5": + "integrity" "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==" + "resolved" "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz" + "version" "1.54.5" + dependencies: + "chokidar" ">=3.0.0 <4.0.0" + "immutable" "^4.0.0" + "source-map-js" ">=0.6.2 <2.0.0" + +"scheduler@^0.20.2": + "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + "version" "0.20.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"schema-utils@^2.6.5": + "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "@types/json-schema" "^7.0.5" + "ajv" "^6.12.4" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.1.0": + "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.1.1": + "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^4.0.0": + "integrity" "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "@types/json-schema" "^7.0.9" + "ajv" "^8.8.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.0.0" + +"screenfull@^5.0.0", "screenfull@^5.1.0": + "integrity" "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==" + "resolved" "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz" + "version" "5.2.0" + +"select-hose@^2.0.0": + "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + "version" "2.0.0" + +"selfsigned@^2.0.1": + "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" + "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-forge" "^1" + +"semver-regex@1.0.0": + "integrity" "sha512-1vZcoRC+LPtHFkLUPyrabsATDSHerxW+hJBN8h04HZOZBuewbXaNROtUVdEPrTdZsWNq6sfsXDhd48GB2xTG4g==" + "resolved" "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz" + "version" "1.0.0" + +"semver@^5.6.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^7.0.0": + "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + "version" "7.3.8" + dependencies: + "lru-cache" "^6.0.0" + +"semver@^7.3.4": + "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + "version" "7.3.8" + dependencies: + "lru-cache" "^6.0.0" + +"semver@^7.3.5": + "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + "version" "7.3.8" + dependencies: + "lru-cache" "^6.0.0" + +"semver@^7.3.7": + "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + "version" "7.3.8" + dependencies: + "lru-cache" "^6.0.0" + +"semver@2 || 3 || 4 || 5": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"send@0.18.0": + "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + "version" "0.18.0" + dependencies: + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "mime" "1.6.0" + "ms" "2.1.3" + "on-finished" "2.4.1" + "range-parser" "~1.2.1" + "statuses" "2.0.1" + +"serialize-javascript@^6.0.0", "serialize-javascript@6.0.0": + "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "randombytes" "^2.1.0" + +"serve-index@^1.9.1": + "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" + "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "accepts" "~1.3.4" + "batch" "0.6.1" + "debug" "2.6.9" + "escape-html" "~1.0.3" + "http-errors" "~1.6.2" + "mime-types" "~2.1.17" + "parseurl" "~1.3.2" + +"serve-static@1.15.0": + "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.18.0" + +"set-harmonic-interval@^1.0.1": + "integrity" "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==" + "resolved" "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz" + "version" "1.0.1" + +"setimmediate@^1.0.5": + "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + "version" "1.0.5" + +"setprototypeof@1.1.0": + "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + "version" "1.1.0" + +"setprototypeof@1.2.0": + "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + "version" "1.2.0" + +"shallow-clone@^3.0.0": + "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^6.0.2" + +"shallowequal@^1.1.0", "shallowequal@1.1.0": + "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + "version" "1.1.0" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + +"signal-exit@^3.0.3", "signal-exit@^3.0.7": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"simple-swizzle@^0.2.2": + "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" + "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + "version" "0.2.2" + dependencies: + "is-arrayish" "^0.3.1" + +"sinon@11.1.1": + "integrity" "sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg==" + "resolved" "https://registry.npmjs.org/sinon/-/sinon-11.1.1.tgz" + "version" "11.1.1" + dependencies: + "@sinonjs/commons" "^1.8.3" + "@sinonjs/fake-timers" "^7.1.0" + "@sinonjs/samsam" "^6.0.2" + "diff" "^5.0.0" + "nise" "^5.1.0" + "supports-color" "^7.2.0" + +"slash@^2.0.0": + "integrity" "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + "resolved" "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + "version" "2.0.0" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"slice-ansi@^4.0.0": + "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"socket.io-adapter@~2.4.0": + "integrity" "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + "resolved" "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz" + "version" "2.4.0" + +"socket.io-parser@~4.2.0": + "integrity" "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==" + "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "@socket.io/component-emitter" "~3.1.0" + "debug" "~4.3.1" + +"socket.io@^4.4.1": + "integrity" "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==" + "resolved" "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz" + "version" "4.5.2" + dependencies: + "accepts" "~1.3.4" + "base64id" "~2.0.0" + "debug" "~4.3.2" + "engine.io" "~6.2.0" + "socket.io-adapter" "~2.4.0" + "socket.io-parser" "~4.2.0" + +"sockjs@^0.3.24": + "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" + "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + "version" "0.3.24" + dependencies: + "faye-websocket" "^0.11.3" + "uuid" "^8.3.2" + "websocket-driver" "^0.7.4" + +"sortablejs@1.14.0": + "integrity" "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + "resolved" "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz" + "version" "1.14.0" + +"source-list-map@^2.0.1": + "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + "version" "2.0.1" + +"source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": + "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + "version" "1.0.2" + +"source-map-support@^0.5.16", "source-map-support@~0.5.20": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@0.5.6": + "integrity" "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + "version" "0.5.6" + +"sourcemap-codec@^1.4.8": + "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + "version" "1.4.8" + +"spdx-correct@^3.0.0": + "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" + "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "spdx-expression-parse" "^3.0.0" + "spdx-license-ids" "^3.0.0" + +"spdx-exceptions@^2.1.0": + "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + "version" "2.3.0" + +"spdx-expression-parse@^3.0.0": + "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" + "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "integrity" "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" + "version" "3.0.12" + +"spdy-transport@^3.0.0": + "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" + "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "debug" "^4.1.0" + "detect-node" "^2.0.4" + "hpack.js" "^2.1.6" + "obuf" "^1.1.2" + "readable-stream" "^3.0.6" + "wbuf" "^1.7.3" + +"spdy@^4.0.2": + "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" + "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "debug" "^4.1.0" + "handle-thing" "^2.0.0" + "http-deceiver" "^1.2.7" + "select-hose" "^2.0.0" + "spdy-transport" "^3.0.0" + +"split@^1.0.0": + "integrity" "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==" + "resolved" "https://registry.npmjs.org/split/-/split-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "through" "2" + +"split2@^3.0.0": + "integrity" "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==" + "resolved" "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "readable-stream" "^3.0.0" + +"sprintf-js@~1.0.2": + "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"stable@^0.1.8": + "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + "version" "0.1.8" + +"stack-generator@^2.0.5": + "integrity" "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==" + "resolved" "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz" + "version" "2.0.10" + dependencies: + "stackframe" "^1.3.4" + +"stackframe@^1.3.4": + "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + "version" "1.3.4" + +"stacktrace-gps@^3.0.4": + "integrity" "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==" + "resolved" "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "source-map" "0.5.6" + "stackframe" "^1.3.4" + +"stacktrace-js@^2.0.2": + "integrity" "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==" + "resolved" "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "error-stack-parser" "^2.0.6" + "stack-generator" "^2.0.5" + "stacktrace-gps" "^3.0.4" + +"statuses@>= 1.4.0 < 2", "statuses@~1.5.0": + "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" + +"statuses@2.0.1": + "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + "version" "2.0.1" + +"stream-browserify@3.0.0": + "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" + "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "inherits" "~2.0.4" + "readable-stream" "^3.5.0" + +"stream-http@3.2.0": + "integrity" "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==" + "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "builtin-status-codes" "^3.0.0" + "inherits" "^2.0.4" + "readable-stream" "^3.6.0" + "xtend" "^4.0.2" + +"streamroller@^3.1.3": + "integrity" "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==" + "resolved" "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "date-format" "^4.0.14" + "debug" "^4.3.4" + "fs-extra" "^8.1.0" + +"strict-uri-encode@^1.0.0": + "integrity" "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" + "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + "version" "1.1.0" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string.prototype.matchall@^4.0.7": + "integrity" "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==" + "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" + "version" "4.0.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + "es-abstract" "^1.19.1" + "get-intrinsic" "^1.1.1" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.3" + "regexp.prototype.flags" "^1.4.1" + "side-channel" "^1.0.4" + +"string.prototype.trimend@^1.0.5": + "integrity" "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==" + "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.19.5" + +"string.prototype.trimstart@^1.0.5": + "integrity" "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.19.5" + +"strip-ansi@^3.0.0": + "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ansi-regex" "^2.0.0" + +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1", "strip-ansi@6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-bom@^3.0.0": + "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + "version" "3.0.0" + +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" + +"strip-indent@^3.0.0": + "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" + "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "min-indent" "^1.0.0" + +"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1", "strip-json-comments@3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"style-loader@3.3.1": + "integrity" "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" + "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" + "version" "3.3.1" + +"style-search@^0.1.0": + "integrity" "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + "resolved" "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz" + "version" "0.1.0" + +"stylehacks@^5.1.0": + "integrity" "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==" + "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "browserslist" "^4.16.6" + "postcss-selector-parser" "^6.0.4" + +"stylelint-config-prettier@9.0.3": + "integrity" "sha512-5n9gUDp/n5tTMCq1GLqSpA30w2sqWITSSEiAWQlpxkKGAUbjcemQ0nbkRvRUa0B1LgD3+hCvdL7B1eTxy1QHJg==" + "resolved" "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.3.tgz" + "version" "9.0.3" + +"stylelint-config-recommended-scss@7.0.0": + "integrity" "sha512-rGz1J4rMAyJkvoJW4hZasuQBB7y9KIrShb20l9DVEKKZSEi1HAy0vuNlR8HyCKy/jveb/BdaQFcoiYnmx4HoiA==" + "resolved" "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "postcss-scss" "^4.0.2" + "stylelint-config-recommended" "^8.0.0" + "stylelint-scss" "^4.0.0" + +"stylelint-config-recommended@^8.0.0": + "integrity" "sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ==" + "resolved" "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz" + "version" "8.0.0" + +"stylelint-prettier@2.0.0": + "integrity" "sha512-jvT3G+9lopkeB0ARmDPszyfaOnvnIF+30QCjZxyt7E6fynI1T9mOKgYDNb9bXX17M7PXMZaX3j/26wqakjp1tw==" + "resolved" "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "prettier-linter-helpers" "^1.0.0" + +"stylelint-scss@^4.0.0": + "integrity" "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==" + "resolved" "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "lodash" "^4.17.21" + "postcss-media-query-parser" "^0.2.3" + "postcss-resolve-nested-selector" "^0.1.1" + "postcss-selector-parser" "^6.0.6" + "postcss-value-parser" "^4.1.0" + +"stylelint@14.11.0": + "integrity" "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==" + "resolved" "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz" + "version" "14.11.0" + dependencies: + "@csstools/selector-specificity" "^2.0.2" + "balanced-match" "^2.0.0" + "colord" "^2.9.3" + "cosmiconfig" "^7.0.1" + "css-functions-list" "^3.1.0" + "debug" "^4.3.4" + "fast-glob" "^3.2.11" + "fastest-levenshtein" "^1.0.16" + "file-entry-cache" "^6.0.1" + "global-modules" "^2.0.0" + "globby" "^11.1.0" + "globjoin" "^0.1.4" + "html-tags" "^3.2.0" + "ignore" "^5.2.0" + "import-lazy" "^4.0.0" + "imurmurhash" "^0.1.4" + "is-plain-object" "^5.0.0" + "known-css-properties" "^0.25.0" + "mathml-tag-names" "^2.1.3" + "meow" "^9.0.0" + "micromatch" "^4.0.5" + "normalize-path" "^3.0.0" + "picocolors" "^1.0.0" + "postcss" "^8.4.16" + "postcss-media-query-parser" "^0.2.3" + "postcss-resolve-nested-selector" "^0.1.1" + "postcss-safe-parser" "^6.0.0" + "postcss-selector-parser" "^6.0.10" + "postcss-value-parser" "^4.2.0" + "resolve-from" "^5.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + "style-search" "^0.1.0" + "supports-hyperlinks" "^2.2.0" + "svg-tags" "^1.0.0" + "table" "^6.8.0" + "v8-compile-cache" "^2.3.0" + "write-file-atomic" "^4.0.2" + +"stylis@^4.0.6": + "integrity" "sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.1.2.tgz" + "version" "4.1.2" + +"supports-color@^2.0.0": + "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "version" "2.0.0" + +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.0.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^7.2.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.0.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@8.1.1": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-hyperlinks@^2.2.0": + "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" + "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "has-flag" "^4.0.0" + "supports-color" "^7.0.0" + +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" + +"svg-tags@^1.0.0": + "integrity" "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + "resolved" "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz" + "version" "1.0.0" + +"svgo@^2.7.0": + "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" + "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "@trysound/sax" "0.2.0" + "commander" "^7.2.0" + "css-select" "^4.1.3" + "css-tree" "^1.1.3" + "csso" "^4.2.0" + "picocolors" "^1.0.0" + "stable" "^0.1.8" + +"table@^6.8.0": + "integrity" "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==" + "resolved" "https://registry.npmjs.org/table/-/table-6.8.0.tgz" + "version" "6.8.0" + dependencies: + "ajv" "^8.0.1" + "lodash.truncate" "^4.4.2" + "slice-ansi" "^4.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + +"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"terser-webpack-plugin@^5.1.3": + "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" + "version" "5.3.6" + dependencies: + "@jridgewell/trace-mapping" "^0.3.14" + "jest-worker" "^27.4.5" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.0" + "terser" "^5.14.1" + +"terser@^5.10.0", "terser@^5.14.1": + "integrity" "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz" + "version" "5.15.0" + dependencies: + "@jridgewell/source-map" "^0.3.2" + "acorn" "^8.5.0" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" + +"test-exclude@^6.0.0": + "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" + "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@istanbuljs/schema" "^0.1.2" + "glob" "^7.1.4" + "minimatch" "^3.0.4" + +"text-extensions@^1.0.0": + "integrity" "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" + "resolved" "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" + "version" "1.9.0" + +"text-table@^0.2.0": + "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" + +"throttle-debounce@^2.1.0": + "integrity" "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==" + "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz" + "version" "2.3.0" + +"throttle-debounce@^3.0.1": + "integrity" "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==" + "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz" + "version" "3.0.1" + +"through@>=2.2.7 <3", "through@2": + "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" + +"through2@^2.0.0": + "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" + "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "readable-stream" "~2.3.6" + "xtend" "~4.0.1" + +"through2@^4.0.0": + "integrity" "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==" + "resolved" "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "readable-stream" "3" + +"thunky@^1.0.2": + "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + "version" "1.1.0" + +"tiny-invariant@1.2.0": + "integrity" "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" + "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz" + "version" "1.2.0" + +"tmp@^0.2.1": + "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + "version" "0.2.1" + dependencies: + "rimraf" "^3.0.0" + +"to-fast-properties@^2.0.0": + "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"toggle-selection@^1.0.6": + "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + "version" "1.0.6" + +"toidentifier@1.0.1": + "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + "version" "1.0.1" + +"tr46@~0.0.3": + "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" + +"trim-newlines@^3.0.0": + "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" + "version" "3.0.1" + +"ts-easing@^0.2.0": + "integrity" "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" + "resolved" "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz" + "version" "0.2.0" + +"tsconfig-paths@^3.14.1": + "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "@types/json5" "^0.0.29" + "json5" "^1.0.1" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^2.0.0", "tslib@^2.0.1", "tslib@^2.0.3", "tslib@^2.1.0": + "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + "version" "2.4.0" + +"tslib@2.0.1": + "integrity" "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz" + "version" "2.0.1" + +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" + dependencies: + "tslib" "^1.8.1" + +"tty-browserify@0.0.1": + "integrity" "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" + "version" "0.0.1" + +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-detect@^4.0.0", "type-detect@^4.0.5", "type-detect@^4.0.8", "type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.18.0": + "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" + "version" "0.18.1" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^0.6.0": + "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + "version" "0.6.0" + +"type-fest@^0.8.1": + "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + "version" "0.8.1" + +"type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"typed-styles@^0.0.7": + "integrity" "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + "resolved" "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz" + "version" "0.0.7" + +"ua-parser-js@^0.7.30": + "integrity" "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" + "version" "0.7.31" + +"ua-parser-js@0.7.28": + "integrity" "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz" + "version" "0.7.28" + +"uglify-js@^3.1.4": + "integrity" "sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==" + "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.2.tgz" + "version" "3.17.2" + +"unbox-primitive@^1.0.2": + "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" + "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + "has-bigints" "^1.0.2" + "has-symbols" "^1.0.3" + "which-boxed-primitive" "^1.0.2" + +"unicode-canonical-property-names-ecmascript@^2.0.0": + "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-match-property-ecmascript@^2.0.0": + "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" + "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.0.0": + "integrity" "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-property-aliases-ecmascript@^2.0.0": + "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"universalify@^0.1.0": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"universalify@^2.0.0": + "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + "version" "2.0.0" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"update-browserslist-db@^1.0.9": + "integrity" "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz" + "version" "1.0.9" + dependencies: + "escalade" "^3.1.1" + "picocolors" "^1.0.0" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"url@0.11.0": + "integrity" "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==" + "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + "version" "0.11.0" + dependencies: + "punycode" "1.3.2" + "querystring" "0.2.0" + +"use-composed-ref@^1.3.0": + "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" + "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + "version" "1.3.0" + +"use-isomorphic-layout-effect@^1.1.1": + "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" + "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + "version" "1.1.2" + +"use-latest@^1.2.1": + "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" + "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "use-isomorphic-layout-effect" "^1.1.1" + +"use-ssr@1.0.24": + "integrity" "sha512-0MFps7ezL57/3o0yl4CvrHLlp9z20n1rQZV/lSRz7if+TUoM6POU1XdOvEjIgjgKeIhTEye1U0khrIYWCTWw4g==" + "resolved" "https://registry.npmjs.org/use-ssr/-/use-ssr-1.0.24.tgz" + "version" "1.0.24" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"util@0.12.4": + "integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==" + "resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz" + "version" "0.12.4" + dependencies: + "inherits" "^2.0.3" + "is-arguments" "^1.0.4" + "is-generator-function" "^1.0.7" + "is-typed-array" "^1.1.3" + "safe-buffer" "^5.1.2" + "which-typed-array" "^1.1.2" + +"utila@~0.4": + "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + "version" "0.4.0" + +"utils-merge@1.0.1": + "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"v8-compile-cache@^2.0.3", "v8-compile-cache@^2.3.0": + "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + "version" "2.3.0" + +"validate-commit-msg@2.12.2": + "integrity" "sha512-W2tiNCNFSIhQ/Ocf7m/O2MNNSM8HWXDt0k2/3KQxGn+bvU5iJd3ux7FZfB2sXkSZSotBUmcwmOhCuynJD7hd2Q==" + "resolved" "https://registry.npmjs.org/validate-commit-msg/-/validate-commit-msg-2.12.2.tgz" + "version" "2.12.2" + dependencies: + "conventional-commit-types" "^2.0.0" + "find-parent-dir" "^0.3.0" + "findup" "0.1.5" + "semver-regex" "1.0.0" + +"validate-npm-package-license@^3.0.1": + "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" + "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + +"vary@^1", "vary@~1.1.2": + "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" + +"void-elements@^2.0.0": + "integrity" "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==" + "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" + "version" "2.0.1" + +"warning@^3.0.0": + "integrity" "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==" + "resolved" "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "loose-envify" "^1.0.0" + +"warning@^4.0.2": + "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" + "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "loose-envify" "^1.0.0" + +"warning@^4.0.3": + "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" + "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "loose-envify" "^1.0.0" + +"watchpack@^2.4.0": + "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" + "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" + +"wbuf@^1.1.0", "wbuf@^1.7.3": + "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" + "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + "version" "1.7.3" + dependencies: + "minimalistic-assert" "^1.0.0" + +"webidl-conversions@^3.0.0": + "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" + +"webpack-dev-middleware@^5.3.1": + "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + "version" "5.3.3" + dependencies: + "colorette" "^2.0.10" + "memfs" "^3.4.3" + "mime-types" "^2.1.31" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-server@4.10.0": + "integrity" "sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==" + "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz" + "version" "4.10.0" + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.1" + "ansi-html-community" "^0.0.8" + "bonjour-service" "^1.0.11" + "chokidar" "^3.5.3" + "colorette" "^2.0.10" + "compression" "^1.7.4" + "connect-history-api-fallback" "^2.0.0" + "default-gateway" "^6.0.3" + "express" "^4.17.3" + "graceful-fs" "^4.2.6" + "html-entities" "^2.3.2" + "http-proxy-middleware" "^2.0.3" + "ipaddr.js" "^2.0.1" + "open" "^8.0.9" + "p-retry" "^4.5.0" + "rimraf" "^3.0.2" + "schema-utils" "^4.0.0" + "selfsigned" "^2.0.1" + "serve-index" "^1.9.1" + "sockjs" "^0.3.24" + "spdy" "^4.0.2" + "webpack-dev-middleware" "^5.3.1" + "ws" "^8.4.2" + +"webpack-manifest-plugin@5.0.0": + "integrity" "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==" + "resolved" "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tapable" "^2.0.0" + "webpack-sources" "^2.2.0" + +"webpack-merge@^4.1.5": + "integrity" "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "lodash" "^4.17.15" + +"webpack-node-externals@3.0.0": + "integrity" "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==" + "resolved" "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" + "version" "3.0.0" + +"webpack-sources@^2.2.0": + "integrity" "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "source-list-map" "^2.0.1" + "source-map" "^0.6.1" + +"webpack-sources@^3.2.3": + "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + "version" "3.2.3" + +"webpack@5.74.0": + "integrity" "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz" + "version" "5.74.0" + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "acorn" "^8.7.1" + "acorn-import-assertions" "^1.7.6" + "browserslist" "^4.14.5" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^5.10.0" + "es-module-lexer" "^0.9.0" + "eslint-scope" "5.1.1" + "events" "^3.2.0" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.2.9" + "json-parse-even-better-errors" "^2.3.1" + "loader-runner" "^4.2.0" + "mime-types" "^2.1.27" + "neo-async" "^2.6.2" + "schema-utils" "^3.1.0" + "tapable" "^2.1.1" + "terser-webpack-plugin" "^5.1.3" + "watchpack" "^2.4.0" + "webpack-sources" "^3.2.3" + +"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": + "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" + "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + "version" "0.7.4" + dependencies: + "http-parser-js" ">=0.5.1" + "safe-buffer" ">=5.1.0" + "websocket-extensions" ">=0.1.1" + +"websocket-extensions@>=0.1.1": + "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + "version" "0.1.4" + +"whatwg-fetch@^3.4.1": + "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + "version" "3.6.2" + +"whatwg-url@^5.0.0": + "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" + +"which-boxed-primitive@^1.0.2": + "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" + "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "is-bigint" "^1.0.1" + "is-boolean-object" "^1.1.0" + "is-number-object" "^1.0.4" + "is-string" "^1.0.5" + "is-symbol" "^1.0.3" + +"which-typed-array@^1.1.2": + "integrity" "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==" + "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz" + "version" "1.1.8" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-abstract" "^1.20.0" + "for-each" "^0.3.3" + "has-tostringtag" "^1.0.0" + "is-typed-array" "^1.1.9" + +"which@^1.2.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^1.3.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"word-wrap@^1.2.3", "word-wrap@1.2.3": + "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + "version" "1.2.3" + +"wordwrap@^1.0.0": + "integrity" "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + "version" "1.0.0" + +"workerpool@6.2.1": + "integrity" "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + "resolved" "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" + "version" "6.2.1" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^4.0.2": + "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.7" + +"ws@^8.4.2": + "integrity" "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz" + "version" "8.9.0" + +"ws@~8.2.3": + "integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" + "version" "8.2.3" + +"xtend@^4.0.2", "xtend@~4.0.1": + "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + "version" "4.0.2" + +"y18n@^5.0.5": + "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + "version" "5.0.8" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yargs-parser@^20.2.2", "yargs-parser@^20.2.3": + "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + "version" "20.2.9" + +"yargs-parser@20.2.4": + "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" + "version" "20.2.4" + +"yargs-unparser@2.0.0": + "integrity" "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==" + "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "camelcase" "^6.0.0" + "decamelize" "^4.0.0" + "flat" "^5.0.2" + "is-plain-obj" "^2.1.0" + +"yargs@^16.1.1", "yargs@^16.2.0", "yargs@16.2.0": + "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + "version" "16.2.0" + dependencies: + "cliui" "^7.0.2" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.0" + "y18n" "^5.0.5" + "yargs-parser" "^20.2.2" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" From dca3bbdb98cefa9f86bfda2aa3a96ef13e2a20ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Mon, 10 Oct 2022 10:36:16 +0200 Subject: [PATCH 119/243] Delete yarn.lock --- yarn.lock | 10159 ---------------------------------------------------- 1 file changed, 10159 deletions(-) delete mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 76c1a0f446..0000000000 --- a/yarn.lock +++ /dev/null @@ -1,10159 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/cli@7": - "integrity" "sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg==" - "resolved" "https://registry.npmjs.org/@babel/cli/-/cli-7.19.3.tgz" - "version" "7.19.3" - dependencies: - "@jridgewell/trace-mapping" "^0.3.8" - "commander" "^4.0.1" - "convert-source-map" "^1.1.0" - "fs-readdir-recursive" "^1.1.0" - "glob" "^7.2.0" - "make-dir" "^2.1.0" - "slash" "^2.0.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - "chokidar" "^3.4.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.18.6": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": - "integrity" "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz" - "version" "7.19.3" - -"@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@7.18.10": - "integrity" "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.1" - "semver" "^6.3.0" - -"@babel/eslint-parser@7.18.9": - "integrity" "sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==" - "resolved" "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "eslint-scope" "^5.1.1" - "eslint-visitor-keys" "^2.1.0" - "semver" "^6.3.0" - -"@babel/eslint-plugin@7.18.10": - "integrity" "sha512-iV1OZj/7eg4wZIcsVEkXS3MUWdhmpLsu2h+9Zr2ppywKWdCRs6VfjxbRzmHHYeurTizrrnaJ9ZkbO8KOv4lauQ==" - "resolved" "https://registry.npmjs.org/@babel/eslint-plugin/-/eslint-plugin-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "eslint-rule-composer" "^0.3.0" - -"@babel/generator@^7.18.10", "@babel/generator@^7.19.3": - "integrity" "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz" - "version" "7.19.3" - dependencies: - "@babel/types" "^7.19.3" - "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": - "integrity" "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" - "version" "7.19.3" - dependencies: - "@babel/compat-data" "^7.19.3" - "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.21.3" - "semver" "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - "integrity" "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - "integrity" "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": - "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" - -"@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.18.6": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.19.0": - "integrity" "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz" - "version" "7.19.0" - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - "integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.18.6": - "integrity" "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - "integrity" "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.18.10": - "integrity" "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz" - "version" "7.18.10" - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - "version" "7.19.1" - -"@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.18.9": - "integrity" "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3": - "integrity" "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz" - "version" "7.19.3" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - "integrity" "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@7.18.10": - "integrity" "sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.18.6" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - "integrity" "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.18.6": - "integrity" "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@7.18.6": - "integrity" "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3", "@babel/plugin-syntax-export-namespace-from@7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.18.6": - "integrity" "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.18.6": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.18.9": - "integrity" "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-classes@^7.18.9": - "integrity" "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.18.9": - "integrity" "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz" - "version" "7.18.13" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.18.9": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.18.6": - "integrity" "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "babel-plugin-dynamic-import-node" "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@7.18.6": - "integrity" "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "babel-plugin-dynamic-import-node" "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.18.9": - "integrity" "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.18.6" - "babel-plugin-dynamic-import-node" "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.18.6": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - "integrity" "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-new-target@^7.18.6": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.18.8": - "integrity" "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz" - "version" "7.18.8" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.18.6": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-display-name@^7.18.6": - "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - "integrity" "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx@^7.18.6": - "integrity" "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" - -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - "integrity" "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "regenerator-transform" "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-runtime@7.18.10": - "integrity" "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "babel-plugin-polyfill-corejs2" "^0.3.2" - "babel-plugin-polyfill-corejs3" "^0.5.3" - "babel-plugin-polyfill-regenerator" "^0.4.0" - "semver" "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.18.9": - "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@7.18.10": - "integrity" "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - "babel-plugin-polyfill-corejs2" "^0.3.2" - "babel-plugin-polyfill-corejs3" "^0.5.3" - "babel-plugin-polyfill-regenerator" "^0.4.0" - "core-js-compat" "^3.22.1" - "semver" "^6.3.0" - -"@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - "esutils" "^2.0.2" - -"@babel/preset-react@7.18.6": - "integrity" "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/register@7.18.9": - "integrity" "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==" - "resolved" "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "clone-deep" "^4.0.1" - "find-cache-dir" "^2.0.0" - "make-dir" "^2.1.0" - "pirates" "^4.0.5" - "source-map-support" "^0.5.16" - -"@babel/runtime-corejs3@^7.10.2": - "integrity" "sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "core-js-pure" "^3.25.1" - "regenerator-runtime" "^0.13.4" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - "integrity" "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "regenerator-runtime" "^0.13.4" - -"@babel/runtime@7.18.9": - "integrity" "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "regenerator-runtime" "^0.13.4" - -"@babel/template@^7.18.10": - "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.18.10", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1": - "integrity" "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz" - "version" "7.19.3" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.3" - "@babel/types" "^7.19.3" - "debug" "^4.1.0" - "globals" "^11.1.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.4.4": - "integrity" "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz" - "version" "7.19.3" - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" - -"@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" - -"@csstools/selector-specificity@^2.0.2": - "integrity" "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==" - "resolved" "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz" - "version" "2.0.2" - -"@eslint/eslintrc@^1.3.0": - "integrity" "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "ajv" "^6.12.4" - "debug" "^4.3.2" - "espree" "^9.4.0" - "globals" "^13.15.0" - "ignore" "^5.2.0" - "import-fresh" "^3.2.1" - "js-yaml" "^4.1.0" - "minimatch" "^3.1.2" - "strip-json-comments" "^3.1.1" - -"@humanwhocodes/config-array@^0.9.2": - "integrity" "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" - "version" "0.9.5" - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - "debug" "^4.1.1" - "minimatch" "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.1": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" - -"@hutson/parse-repository-url@^3.0.0": - "integrity" "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==" - "resolved" "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" - "version" "3.0.2" - -"@hypnosphi/create-react-context@^0.3.1": - "integrity" "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==" - "resolved" "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "gud" "^1.0.0" - "warning" "^4.0.3" - -"@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "camelcase" "^5.3.1" - "find-up" "^4.1.0" - "get-package-type" "^0.1.0" - "js-yaml" "^3.13.1" - "resolve-from" "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" - -"@jest/types@^26.6.2": - "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - "chalk" "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" - -"@jridgewell/source-map@^0.3.2": - "integrity" "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==" - "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz" - "version" "0.3.15" - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@leichtgewicht/ip-codec@^2.0.1": - "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - "version" "2.0.4" - -"@loadable/component@5.15.x": - "integrity" "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==" - "resolved" "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz" - "version" "5.15.2" - dependencies: - "@babel/runtime" "^7.7.7" - "hoist-non-react-statics" "^3.3.1" - "react-is" "^16.12.0" - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - "integrity" "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==" - "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" - "version" "2.1.8-no-fsevents.3" - -"@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" - dependencies: - "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" - -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" - -"@nodelib/fs.walk@^1.2.3": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" - dependencies: - "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" - -"@popperjs/core@2.11.6": - "integrity" "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" - "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" - "version" "2.11.6" - -"@s-ui/bundler@9": - "integrity" "sha512-IaGFH7xhxTwd+AGDSxlXpGn/wAXm2w5XdJHNyZAjMiA2eirzxWLT3qSZD1679Rf56fjx4xyZsjH0eH5iMqaPlQ==" - "resolved" "https://registry.npmjs.org/@s-ui/bundler/-/bundler-9.36.0.tgz" - "version" "9.36.0" - dependencies: - "@babel/core" "7.18.10" - "@s-ui/helpers" "1" - "@s-ui/sass-loader" "1" - "address" "1.2.0" - "autoprefixer" "10.4.8" - "babel-loader" "8.2.5" - "babel-preset-sui" "3" - "buffer" "6.0.3" - "commander" "8.3.0" - "css-loader" "6.7.1" - "css-minimizer-webpack-plugin" "4.0.0" - "esbuild" "0.15.5" - "escape-string-regexp" "4.0.0" - "fast-glob" "3.2.11" - "find-free-ports" "3.0.0" - "html-webpack-plugin" "5.5.0" - "https-browserify" "1.0.0" - "mini-css-extract-plugin" "2.6.1" - "postcss" "8.4.16" - "postcss-loader" "7.0.1" - "process" "0.11.10" - "sass" "1.54.5" - "stream-http" "3.2.0" - "strip-ansi" "6.0.1" - "style-loader" "3.3.1" - "url" "0.11.0" - "webpack" "5.74.0" - "webpack-dev-server" "4.10.0" - "webpack-manifest-plugin" "5.0.0" - "webpack-node-externals" "3.0.0" - -"@s-ui/component-dependencies@1", "@s-ui/component-dependencies@latest": - "integrity" "sha512-WWqnhZm1cP19w5rswotAaLlsT1HY28oX6FJyDKeQAQiOgymklfeb3BjYBO9QGqmGzOi4gYe4kdGOZbcW6kG6ig==" - "resolved" "https://registry.npmjs.org/@s-ui/component-dependencies/-/component-dependencies-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "@s-ui/theme" "8" - "@schibstedspain/sui-theme" "8" - "@schibstedspain/theme-basic" "7" - "classnames" "2.2.5" - -"@s-ui/documentation-library@1": - "integrity" "sha512-yD2+qIi3hXYI9Tb+5+zjCyygoW0JkF3ioAvLx+1zcFo/xvxJRRTjTNID5s7PqQn9PtEFCbB6SqEHKI+XTOvWDg==" - "resolved" "https://registry.npmjs.org/@s-ui/documentation-library/-/documentation-library-1.23.0.tgz" - "version" "1.23.0" - dependencies: - "@s-ui/component-dependencies" "1" - "color" "3" - "isomorphic-fetch" "3" - "lodash.debounce" "4" - "react" "17" - "react-dom" "17" - "react-extra-prop-types" "0" - "react-icons" "4" - "react-is" "17" - "react-use" "17" - -"@s-ui/helpers@1": - "integrity" "sha512-jmukcKk5IeCvhmAeaeyJWwXwbAXFIlFXM1PonzQssHgl+LweVnsPM7t4lk0wp9MiawJ70mhgtm68klXtee6RMw==" - "resolved" "https://registry.npmjs.org/@s-ui/helpers/-/helpers-1.38.0.tgz" - "version" "1.38.0" - dependencies: - "execa" "5.1.1" - "fs-extra" "10.1.0" - "p-queue" "6.6.2" - -"@s-ui/hoc@1": - "integrity" "sha512-sDdtw4kCKPrNmq3HiE0Buwk8uBuH1mvbjlik3pTpWO5/V7Kvp85Q+ZDQ+U9Byy3UQ7KqRqV/EYlsZWpsCaUN4A==" - "resolved" "https://registry.npmjs.org/@s-ui/hoc/-/hoc-1.36.0.tgz" - "version" "1.36.0" - dependencies: - "intersection-observer" "0.10.0" - -"@s-ui/js@2": - "integrity" "sha512-ieRvG7KjNxh0IHzvOCQCeehXDAU6TjFwVHRUMNotHH+h4pi+2Uol9HbO3AIRHg7AAx12L9AjNBvW3ol7AlEp8A==" - "resolved" "https://registry.npmjs.org/@s-ui/js/-/js-2.26.0.tgz" - "version" "2.26.0" - dependencies: - "bowser" "2.11.0" - "cookie" "0.3.1" - "htmr" "1.0.0" - "js-cookie" "2.1.4" - "just-camel-case" "4.0.2" - "just-capitalize" "1.0.0" - "just-kebab-case" "1.1.0" - "lodash.debounce" "4.0.8" - "lodash.throttle" "4.1.1" - "nanoid" "3.3.1" - "qs" "6.7.0" - "remove-accents" "0.4.2" - -"@s-ui/lint@4": - "integrity" "sha512-jt4sQee6LcTLvXtJbzjCOTTMXNabnPr5PaCLaIiUJBOEkJ+vq5TfUjHeyjRbd/kYNbfF1EzwtttdmUiEQwcqMA==" - "resolved" "https://registry.npmjs.org/@s-ui/lint/-/lint-4.28.0.tgz" - "version" "4.28.0" - dependencies: - "@babel/core" "7.18.10" - "@babel/eslint-parser" "7.18.9" - "@babel/eslint-plugin" "7.18.10" - "@s-ui/helpers" "1" - "@typescript-eslint/eslint-plugin" "5.33.0" - "commander" "8.3.0" - "eslint" "8.20.0" - "eslint-config-prettier" "8.5.0" - "eslint-config-standard" "17.0.0" - "eslint-config-standard-with-typescript" "22.0.0" - "eslint-plugin-chai-friendly" "0.7.2" - "eslint-plugin-cypress" "2.12.1" - "eslint-plugin-import" "2.26.0" - "eslint-plugin-n" "15.2.5" - "eslint-plugin-no-only-tests" "3.0.0" - "eslint-plugin-prettier" "4.2.1" - "eslint-plugin-promise" "6.0.0" - "eslint-plugin-react" "7.30.1" - "eslint-plugin-react-hooks" "4.6.0" - "eslint-plugin-simple-import-sort" "7.0.0" - "postcss-scss" "4.0.4" - "prettier" "2.7.1" - "stylelint" "14.11.0" - "stylelint-config-prettier" "9.0.3" - "stylelint-config-recommended-scss" "7.0.0" - "stylelint-prettier" "2.0.0" - -"@s-ui/mono@2": - "integrity" "sha512-8bfXri7qYpi6rP5bbN/lTfm0Ojj70d6lTWeSWq4dx8R32FV4Rh8shC5vf4xf9kYp+BbzGG0XS7HaIAm7AA8tpg==" - "resolved" "https://registry.npmjs.org/@s-ui/mono/-/mono-2.34.0.tgz" - "version" "2.34.0" - dependencies: - "@s-ui/helpers" "1" - "commander" "8.3.0" - "conventional-changelog" "3.1.25" - "enquirer" "2.3.6" - "git-url-parse" "12.0.0" - "glob" "8.0.3" - "word-wrap" "1.2.3" - -"@s-ui/precommit@3": - "integrity" "sha512-HgUqApnb2AeMyzWXCDeTER2qehlAieL4BnddovtOKcQVCOgduCFc0xpeFNaKBh1m19i4seT5gZpsnPSZX0HsTg==" - "resolved" "https://registry.npmjs.org/@s-ui/precommit/-/precommit-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "dlv" "1.1.3" - "dset" "3.1.2" - -"@s-ui/react-atom-action-button@file:/home/dell/Desktop/sui-components/components/atom/actionButton": - "resolved" "file:components/atom/actionButton" - "version" "1.9.0" - dependencies: - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-atom-back-to-top-demo@file:/home/dell/Desktop/sui-components/components/atom/backToTop/demo": - "resolved" "file:components/atom/backToTop/demo" - "version" "1.0.0" - -"@s-ui/react-atom-back-to-top@file:/home/dell/Desktop/sui-components/components/atom/backToTop": - "resolved" "file:components/atom/backToTop" - "version" "2.2.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-hooks" "1" - -"@s-ui/react-atom-badge-demo@file:/home/dell/Desktop/sui-components/components/atom/badge/demo": - "resolved" "file:components/atom/badge/demo" - "version" "1.1.0" - -"@s-ui/react-atom-badge@file:/home/dell/Desktop/sui-components/components/atom/badge": - "resolved" "file:components/atom/badge" - "version" "1.27.0" - dependencies: - "@s-ui/component-dependencies" "latest" - -"@s-ui/react-atom-button-demo@file:/home/dell/Desktop/sui-components/components/atom/button/demo": - "resolved" "file:components/atom/button/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-atom-button@1", "@s-ui/react-atom-button@file:/home/dell/Desktop/sui-components/components/atom/button": - "resolved" "file:components/atom/button" - "version" "1.89.0" - dependencies: - "@s-ui/component-dependencies" "latest" - -"@s-ui/react-atom-card-demo@file:/home/dell/Desktop/sui-components/components/atom/card/demo": - "resolved" "file:components/atom/card/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-layout-media-query" "1" - -"@s-ui/react-atom-card@file:/home/dell/Desktop/sui-components/components/atom/card": - "resolved" "file:components/atom/card" - "version" "1.23.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-checkbox-demo@file:/home/dell/Desktop/sui-components/components/atom/checkbox/demo": - "resolved" "file:components/atom/checkbox/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "react-json-view" "1.21.3" - "react-use" "17.4.0" - -"@s-ui/react-atom-checkbox@2": - "integrity" "sha512-z7AW2Ujmu+8Ti+zjvQf1pvntn/yHXrUzx5z3URFc4bU/ilz1d7J37Y116G4hbI5MUqk0nEOPm2nVKVky4t2QKg==" - "resolved" "https://registry.npmjs.org/@s-ui/react-atom-checkbox/-/react-atom-checkbox-2.20.0.tgz" - "version" "2.20.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-checkbox@3", "@s-ui/react-atom-checkbox@file:/home/dell/Desktop/sui-components/components/atom/checkbox": - "resolved" "file:components/atom/checkbox" - "version" "3.1.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-hooks" "1" - -"@s-ui/react-atom-help-text-demo@file:/home/dell/Desktop/sui-components/components/atom/helpText/demo": - "resolved" "file:components/atom/helpText/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-checkbox" "2" - "@s-ui/react-atom-input" "5" - "@s-ui/react-atom-label" "1" - "@s-ui/react-atom-textarea" "2" - -"@s-ui/react-atom-help-text@1", "@s-ui/react-atom-help-text@file:/home/dell/Desktop/sui-components/components/atom/helpText": - "resolved" "file:components/atom/helpText" - "version" "1.8.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-icon-demo@file:/home/dell/Desktop/sui-components/components/atom/icon/demo": - "resolved" "file:components/atom/icon/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-button" "1" - -"@s-ui/react-atom-icon@1.14.0": - "integrity" "sha512-IlHAbjJb0zKfC6RdGOPxSYjOfpFPxdH8bOw8e9rwnBivK6Ugreepmo5pyTgKdxRbq+GFKKhJ2G+Ghyx87AG5IA==" - "resolved" "https://registry.npmjs.org/@s-ui/react-atom-icon/-/react-atom-icon-1.14.0.tgz" - "version" "1.14.0" - dependencies: - "@s-ui/react-hooks" "1" - -"@s-ui/react-atom-icon@1", "@s-ui/react-atom-icon@file:/home/dell/Desktop/sui-components/components/atom/icon": - "resolved" "file:components/atom/icon" - "version" "1.18.0" - dependencies: - "@s-ui/react-hooks" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - -"@s-ui/react-atom-image-demo@file:/home/dell/Desktop/sui-components/components/atom/image/demo": - "resolved" "file:components/atom/image/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "@s-ui/react-atom-spinner" "1" - "react-use" "15" - -"@s-ui/react-atom-image@2", "@s-ui/react-atom-image@file:/home/dell/Desktop/sui-components/components/atom/image": - "resolved" "file:components/atom/image" - "version" "2.16.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-primitive-injector" "1" - -"@s-ui/react-atom-input-demo@file:/home/dell/Desktop/sui-components/components/atom/input/demo": - "resolved" "file:components/atom/input/demo" - "version" "1.0.0" - -"@s-ui/react-atom-input@3", "@s-ui/react-atom-input@5", "@s-ui/react-atom-input@file:/home/dell/Desktop/sui-components/components/atom/input": - "resolved" "file:components/atom/input" - "version" "5.22.0" - dependencies: - "@s-ui/react-hooks" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - "imask" "3.4.0" - -"@s-ui/react-atom-label-demo@file:/home/dell/Desktop/sui-components/components/atom/label/demo": - "resolved" "file:components/atom/label/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-checkbox" "2" - "@s-ui/react-atom-icon" "1" - "@s-ui/react-atom-input" "5" - -"@s-ui/react-atom-label@1", "@s-ui/react-atom-label@file:/home/dell/Desktop/sui-components/components/atom/label": - "resolved" "file:components/atom/label" - "version" "1.22.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-panel-demo@file:/home/dell/Desktop/sui-components/components/atom/panel/demo": - "resolved" "file:components/atom/panel/demo" - "version" "1.1.0" - -"@s-ui/react-atom-panel@file:/home/dell/Desktop/sui-components/components/atom/panel": - "resolved" "file:components/atom/panel" - "version" "1.16.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - -"@s-ui/react-atom-pin-input@1", "@s-ui/react-atom-pin-input@file:/home/dell/Desktop/sui-components/components/atom/pinInput": - "resolved" "file:components/atom/pinInput" - "version" "1.10.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-hooks" "1" - -"@s-ui/react-atom-popover-demo@file:/home/dell/Desktop/sui-components/components/atom/popover/demo": - "resolved" "file:components/atom/popover/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "react-use" "17" - -"@s-ui/react-atom-popover@file:/home/dell/Desktop/sui-components/components/atom/popover": - "resolved" "file:components/atom/popover" - "version" "3.11.0" - dependencies: - "@loadable/component" "5.15.x" - "@s-ui/hoc" "1" - "@s-ui/react-hooks" "1" - "reactstrap" "8.9.0" - -"@s-ui/react-atom-progress-bar-demo@file:/home/dell/Desktop/sui-components/components/atom/progressBar/demo": - "resolved" "file:components/atom/progressBar/demo" - "version" "1.0.0" - -"@s-ui/react-atom-progress-bar@file:/home/dell/Desktop/sui-components/components/atom/progressBar": - "resolved" "file:components/atom/progressBar" - "version" "2.8.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-radio-button-demo@file:/home/dell/Desktop/sui-components/components/atom/radioButton/demo": - "resolved" "file:components/atom/radioButton/demo" - "version" "1.0.0" - -"@s-ui/react-atom-radio-button@1", "@s-ui/react-atom-radio-button@file:/home/dell/Desktop/sui-components/components/atom/radioButton": - "resolved" "file:components/atom/radioButton" - "version" "1.9.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-skeleton-demo@file:/home/dell/Desktop/sui-components/components/atom/skeleton/demo": - "resolved" "file:components/atom/skeleton/demo" - "version" "1.0.0" - -"@s-ui/react-atom-skeleton@1", "@s-ui/react-atom-skeleton@file:/home/dell/Desktop/sui-components/components/atom/skeleton": - "resolved" "file:components/atom/skeleton" - "version" "1.5.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-slider-demo@file:/home/dell/Desktop/sui-components/components/atom/slider/demo": - "resolved" "file:components/atom/slider/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-checkbox" "2" - "@s-ui/react-atom-icon" "1" - "@s-ui/react-atom-input" "5" - -"@s-ui/react-atom-slider@1", "@s-ui/react-atom-slider@file:/home/dell/Desktop/sui-components/components/atom/slider": - "resolved" "file:components/atom/slider" - "version" "1.30.0" - dependencies: - "rc-slider" "9" - -"@s-ui/react-atom-spinner-demo@file:/home/dell/Desktop/sui-components/components/atom/spinner/demo": - "resolved" "file:components/atom/spinner/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-checkbox" "2" - "@s-ui/react-atom-icon" "1" - "@s-ui/react-atom-input" "5" - -"@s-ui/react-atom-spinner@1": - "integrity" "sha512-rBFO1RdiIQO0jodACwBEP+rBSZBzXvNy8gLLeH1ha1Sj4GQC9OlOovT/f8paDT6oPAtDqSlzNTFW/hNQMJRN7Q==" - "resolved" "https://registry.npmjs.org/@s-ui/react-atom-spinner/-/react-atom-spinner-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-spinner@file:/home/dell/Desktop/sui-components/components/atom/spinner": - "resolved" "file:components/atom/spinner" - "version" "2.2.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-primitive-injector" "1" - -"@s-ui/react-atom-switch-demo@file:/home/dell/Desktop/sui-components/components/atom/switch/demo": - "resolved" "file:components/atom/switch/demo" - "version" "1.3.0" - -"@s-ui/react-atom-switch@file:/home/dell/Desktop/sui-components/components/atom/switch": - "resolved" "file:components/atom/switch" - "version" "1.27.0" - dependencies: - "@s-ui/react-atom-label" "1" - -"@s-ui/react-atom-table-demo@file:/home/dell/Desktop/sui-components/components/atom/table/demo": - "resolved" "file:components/atom/table/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-button" "1" - -"@s-ui/react-atom-table@file:/home/dell/Desktop/sui-components/components/atom/table": - "resolved" "file:components/atom/table" - "version" "1.13.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-tag-demo@file:/home/dell/Desktop/sui-components/components/atom/tag/demo": - "resolved" "file:components/atom/tag/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-atom-tag@2", "@s-ui/react-atom-tag@file:/home/dell/Desktop/sui-components/components/atom/tag": - "resolved" "file:components/atom/tag" - "version" "2.44.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-textarea-demo@file:/home/dell/Desktop/sui-components/components/atom/textarea/demo": - "resolved" "file:components/atom/textarea/demo" - "version" "1.1.0" - -"@s-ui/react-atom-textarea@2", "@s-ui/react-atom-textarea@file:/home/dell/Desktop/sui-components/components/atom/textarea": - "resolved" "file:components/atom/textarea" - "version" "2.19.0" - dependencies: - "@s-ui/react-atom-help-text" "1" - "@s-ui/react-atom-input" "5" - -"@s-ui/react-atom-toast-demo@file:/home/dell/Desktop/sui-components/components/atom/toast/demo": - "resolved" "file:components/atom/toast/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "react-json-view" "1.21.3" - -"@s-ui/react-atom-toast@file:/home/dell/Desktop/sui-components/components/atom/toast": - "resolved" "file:components/atom/toast" - "version" "1.9.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-atom-tooltip-demo@file:/home/dell/Desktop/sui-components/components/atom/tooltip/demo": - "resolved" "file:components/atom/tooltip/demo" - "version" "1.1.0" - -"@s-ui/react-atom-tooltip@file:/home/dell/Desktop/sui-components/components/atom/tooltip": - "resolved" "file:components/atom/tooltip" - "version" "2.4.0" - dependencies: - "@loadable/component" "5.15.x" - "@s-ui/hoc" "1" - "@s-ui/react-hooks" "1" - "react-use" "17.3" - "reactstrap" "8.9.0" - "ua-parser-js" "0.7.28" - -"@s-ui/react-atom-upload-demo@file:/home/dell/Desktop/sui-components/components/atom/upload/demo": - "resolved" "file:components/atom/upload/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-spinner" "1" - "@s-ui/react-layout-media-query" "1" - -"@s-ui/react-atom-upload@file:/home/dell/Desktop/sui-components/components/atom/upload": - "resolved" "file:components/atom/upload" - "version" "3.9.0" - dependencies: - "@loadable/component" "5.15.x" - "@s-ui/react-atom-button" "1" - "react-dropzone" "11.5.1" - -"@s-ui/react-atom-validation-code-demo@file:/home/dell/Desktop/sui-components/components/atom/pinInput/demo": - "resolved" "file:components/atom/pinInput/demo" - "version" "1.2.0" - -"@s-ui/react-atom-validation-text-demo@file:/home/dell/Desktop/sui-components/components/atom/validationText/demo": - "resolved" "file:components/atom/validationText/demo" - "version" "1.1.0" - -"@s-ui/react-atom-validation-text@1", "@s-ui/react-atom-validation-text@file:/home/dell/Desktop/sui-components/components/atom/validationText": - "resolved" "file:components/atom/validationText" - "version" "1.8.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-behavior-sticky-demo@file:/home/dell/Desktop/sui-components/components/behavior/sticky/demo": - "resolved" "file:components/behavior/sticky/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-hooks" "1" - "lorem-ipsum" "2.0.4" - "react-use" "17.4.0" - -"@s-ui/react-behavior-sticky@file:/home/dell/Desktop/sui-components/components/behavior/sticky": - "resolved" "file:components/behavior/sticky" - "version" "1.8.0" - dependencies: - "react-stickup" "1.12" - -"@s-ui/react-context@1": - "integrity" "sha512-YvaWCUEMs5J/z+4LF4VPK/rX5F++pO/HHQbPxRP3yCVq11JV6k+9AnWzsjLG/H8GD/bJT7p9drEVWewPh18S8w==" - "resolved" "https://registry.npmjs.org/@s-ui/react-context/-/react-context-1.8.0.tgz" - "version" "1.8.0" - dependencies: - "hoist-non-react-statics" "3.3.2" - -"@s-ui/react-hook-use-portal-demo@file:/home/dell/Desktop/sui-components/components/hook/usePortal/demo": - "resolved" "file:components/hook/usePortal/demo" - "version" "1.0.0" - dependencies: - "@popperjs/core" "2.11.6" - "@s-ui/react-hooks" "1" - "react-fast-compare" "3.2.0" - -"@s-ui/react-hook-use-portal@file:/home/dell/Desktop/sui-components/components/hook/usePortal": - "resolved" "file:components/hook/usePortal" - "version" "1.1.0" - dependencies: - "@s-ui/react-hooks" "1" - "classnames" "2.2.5" - "use-ssr" "1.0.24" - -"@s-ui/react-hooks@1": - "integrity" "sha512-49nRstrCI7AK4mgsYVKeCh+cqg0iTBLXXffQCNcvk8e16ula+HoE7/Ow3PzKlD08HD0Q4GbxUf7X+2xBg6VlBg==" - "resolved" "https://registry.npmjs.org/@s-ui/react-hooks/-/react-hooks-1.34.0.tgz" - "version" "1.34.0" - dependencies: - "@s-ui/component-dependencies" "1" - "intersection-observer" "0.10.0" - -"@s-ui/react-icons@1": - "integrity" "sha512-ZsooG1Xa3MwnEiOruM57aP9YJAztJiuAzJ8SkRgKsLRf3k9unntOYBa8LjVg2XMN4tNyma4a00mNcwZKO5SQ6w==" - "resolved" "https://registry.npmjs.org/@s-ui/react-icons/-/react-icons-1.9.1.tgz" - "version" "1.9.1" - -"@s-ui/react-layout-grid-demo@file:/home/dell/Desktop/sui-components/components/layout/grid/demo": - "resolved" "file:components/layout/grid/demo" - "version" "1.0.0" - dependencies: - "react-use" "17" - -"@s-ui/react-layout-grid@file:/home/dell/Desktop/sui-components/components/layout/grid": - "resolved" "file:components/layout/grid" - "version" "2.12.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-primitive-injector" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - -"@s-ui/react-layout-media-query@1": - "integrity" "sha512-VhOLCjOPfQKTcSz5AfpRB9jKY8QfOSipSu60ZOK2HuLUDFDiDjBPXFMdzKdFK6e2j3ewr0sDjiXCxiAjv2Akig==" - "resolved" "https://registry.npmjs.org/@s-ui/react-layout-media-query/-/react-layout-media-query-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "@s-ui/component-dependencies" "1" - "resize-observer-polyfill" "1.5.0" - "shallowequal" "1.1.0" - -"@s-ui/react-molecule-accordion-demo@file:/home/dell/Desktop/sui-components/components/molecule/accordion/demo": - "resolved" "file:components/molecule/accordion/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "@s-ui/react-atom-tag" "2" - "lorem-ipsum" "2.0.4" - "react-json-view" "1.21.3" - -"@s-ui/react-molecule-accordion@file:/home/dell/Desktop/sui-components/components/molecule/accordion": - "resolved" "file:components/molecule/accordion" - "version" "2.6.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-hooks" "1" - "@s-ui/react-primitive-injector" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - "react-use" "17.3.2" - -"@s-ui/react-molecule-autosuggest-demo@file:/home/dell/Desktop/sui-components/components/molecule/autosuggest/demo": - "resolved" "file:components/molecule/autosuggest/demo" - "version" "1.2.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-icon" "1" - "@s-ui/react-molecule-autosuggest-field" "2" - "@s-ui/react-molecule-dropdown-option" "2" - "@s-ui/react-molecule-input-tags" "2" - "@s-ui/react-molecule-select" "1" - "axios" "0.21.4" - -"@s-ui/react-molecule-autosuggest-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/autosuggestField/demo": - "resolved" "file:components/molecule/autosuggestField/demo" - "version" "1.1.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-molecule-autosuggest" "1" - "@s-ui/react-molecule-dropdown-option" "2" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-autosuggest-field@2", "@s-ui/react-molecule-autosuggest-field@file:/home/dell/Desktop/sui-components/components/molecule/autosuggestField": - "resolved" "file:components/molecule/autosuggestField" - "version" "2.10.0" - dependencies: - "@s-ui/react-molecule-autosuggest" "2" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-autosuggest@1": - "integrity" "sha512-8ZKxr02KI1YOio6UlMkJPc9ZTbj0rBm47bPxMMuKS+ayBbYiMIFf3JZ9bHi5O8/KQOjOTE0wK2WFzNrkhrhz1A==" - "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-autosuggest/-/react-molecule-autosuggest-1.16.0.tgz" - "version" "1.16.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/hoc" "1" - "@s-ui/js" "2" - "@s-ui/react-atom-input" "3" - "@s-ui/react-molecule-dropdown-list" "1" - "@s-ui/react-molecule-input-tags" "2" - -"@s-ui/react-molecule-autosuggest@2", "@s-ui/react-molecule-autosuggest@file:/home/dell/Desktop/sui-components/components/molecule/autosuggest": - "resolved" "file:components/molecule/autosuggest" - "version" "2.66.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-atom-input" "5" - "@s-ui/react-hooks" "1" - "@s-ui/react-molecule-dropdown-list" "2" - "@s-ui/react-molecule-input-tags" "2" - "@s-ui/react-primitive-injector" "1" - "lodash.isequal" "4.5" - -"@s-ui/react-molecule-avatar-demo@file:/home/dell/Desktop/sui-components/components/molecule/avatar/demo": - "resolved" "file:components/molecule/avatar/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-molecule-avatar@file:/home/dell/Desktop/sui-components/components/molecule/avatar": - "resolved" "file:components/molecule/avatar" - "version" "1.15.0" - dependencies: - "@s-ui/react-atom-image" "2" - "@s-ui/react-atom-skeleton" "1" - "@s-ui/react-primitive-injector" "1" - -"@s-ui/react-molecule-badge-counter-demo@file:/home/dell/Desktop/sui-components/components/molecule/badgeCounter/demo": - "resolved" "file:components/molecule/badgeCounter/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-molecule-badge-counter@file:/home/dell/Desktop/sui-components/components/molecule/badgeCounter": - "resolved" "file:components/molecule/badgeCounter" - "version" "1.17.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-molecule-breadcrumb-demo@file:/home/dell/Desktop/sui-components/components/molecule/breadcrumb/demo": - "resolved" "file:components/molecule/breadcrumb/demo" - "version" "1.1.0" - -"@s-ui/react-molecule-breadcrumb@file:/home/dell/Desktop/sui-components/components/molecule/breadcrumb": - "resolved" "file:components/molecule/breadcrumb" - "version" "1.26.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-hooks" "1" - "@s-ui/react-icons" "1" - -"@s-ui/react-molecule-button-group-demo@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroup/demo": - "resolved" "file:components/molecule/buttonGroup/demo" - "version" "1.2.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-icon" "1" - "@s-ui/react-atom-input" "5" - "react-use" "17.4.0" - -"@s-ui/react-molecule-button-group-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroupField/demo": - "resolved" "file:components/molecule/buttonGroupField/demo" - "version" "1.2.0" - dependencies: - "@s-ui/react-atom-button" "1" - -"@s-ui/react-molecule-button-group-field@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroupField": - "resolved" "file:components/molecule/buttonGroupField" - "version" "1.8.0" - dependencies: - "@s-ui/react-molecule-button-group" "2" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-button-group@2", "@s-ui/react-molecule-button-group@file:/home/dell/Desktop/sui-components/components/molecule/buttonGroup": - "resolved" "file:components/molecule/buttonGroup" - "version" "2.9.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-atom-button" "1" - "@s-ui/react-primitive-injector" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - -"@s-ui/react-molecule-checkbox-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/checkboxField/demo": - "resolved" "file:components/molecule/checkboxField/demo" - "version" "1.3.0" - dependencies: - "@s-ui/hoc" "1" - -"@s-ui/react-molecule-checkbox-field@4": - "integrity" "sha512-/tqKgJMh17iEGK/2CiYSlOFYxnfLXKAwZRlNaCslrJ46CDypAGm/CiJx+WLYObJvRoQvsX0S3jpBABvviJhgQA==" - "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-checkbox-field/-/react-molecule-checkbox-field-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@s-ui/react-atom-checkbox" "3" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-checkbox-field@file:/home/dell/Desktop/sui-components/components/molecule/checkboxField": - "resolved" "file:components/molecule/checkboxField" - "version" "5.0.0" - dependencies: - "@s-ui/react-atom-checkbox" "3" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-collapsible-demo@file:/home/dell/Desktop/sui-components/components/molecule/collapsible/demo": - "resolved" "file:components/molecule/collapsible/demo" - "version" "1.1.0" - dependencies: - "@s-ui/hoc" "1" - -"@s-ui/react-molecule-collapsible@file:/home/dell/Desktop/sui-components/components/molecule/collapsible": - "resolved" "file:components/molecule/collapsible" - "version" "1.17.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-molecule-data-counter-demo@file:/home/dell/Desktop/sui-components/components/molecule/dataCounter/demo": - "resolved" "file:components/molecule/dataCounter/demo" - "version" "1.1.0" - -"@s-ui/react-molecule-data-counter@file:/home/dell/Desktop/sui-components/components/molecule/dataCounter": - "resolved" "file:components/molecule/dataCounter" - "version" "1.16.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-input" "5" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-drawer-demo@file:/home/dell/Desktop/sui-components/components/molecule/drawer/demo": - "resolved" "file:components/molecule/drawer/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-drawer@file:/home/dell/Desktop/sui-components/components/molecule/drawer": - "resolved" "file:components/molecule/drawer" - "version" "4.6.0" - dependencies: - "@s-ui/react-hooks" "1" - -"@s-ui/react-molecule-dropdown-list-demo@file:/home/dell/Desktop/sui-components/components/molecule/dropdownList/demo": - "resolved" "file:components/molecule/dropdownList/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-molecule-dropdown-option" "2" - -"@s-ui/react-molecule-dropdown-list@1": - "integrity" "sha512-ESVv9/byvezndKbV2/GkjUdgN3zUGaz1uMzSTPhWxvovE2zyz4DWrIzoUATz7FLONOOsXx5ddbN8XhSlnJkK4g==" - "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-dropdown-list/-/react-molecule-dropdown-list-1.33.0.tgz" - "version" "1.33.0" - dependencies: - "@s-ui/react-atom-input" "5" - "@s-ui/react-hooks" "1" - "@s-ui/react-molecule-dropdown-option" "1" - "@s-ui/react-primitive-injector" "1" - "lodash.isequal" "4.5" - -"@s-ui/react-molecule-dropdown-list@2", "@s-ui/react-molecule-dropdown-list@file:/home/dell/Desktop/sui-components/components/molecule/dropdownList": - "resolved" "file:components/molecule/dropdownList" - "version" "2.1.0" - dependencies: - "@s-ui/react-atom-input" "5" - "@s-ui/react-hooks" "1" - "@s-ui/react-molecule-dropdown-option" "2" - "@s-ui/react-primitive-injector" "1" - "lodash.isequal" "4.5" - -"@s-ui/react-molecule-dropdown-option-demo@file:/home/dell/Desktop/sui-components/components/molecule/dropdownOption/demo": - "resolved" "file:components/molecule/dropdownOption/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-input" "5" - "@s-ui/react-hooks" "1" - "lorem-ipsum" "2.0.4" - -"@s-ui/react-molecule-dropdown-option@1": - "integrity" "sha512-GRGm9cTSle8lpeBt463sjd0pZdc2XaRKOeunBYfPmpGmn8HB2XIGWFsYxHg1jtIPhuciAEIOMsQtwSR1R8d8cw==" - "resolved" "https://registry.npmjs.org/@s-ui/react-molecule-dropdown-option/-/react-molecule-dropdown-option-1.45.0.tgz" - "version" "1.45.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-atom-checkbox" "2" - "@s-ui/react-hooks" "1" - -"@s-ui/react-molecule-dropdown-option@2", "@s-ui/react-molecule-dropdown-option@file:/home/dell/Desktop/sui-components/components/molecule/dropdownOption": - "resolved" "file:components/molecule/dropdownOption" - "version" "2.1.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-atom-checkbox" "2" - "@s-ui/react-hooks" "1" - -"@s-ui/react-molecule-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/field/demo": - "resolved" "file:components/molecule/field/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-field@1", "@s-ui/react-molecule-field@file:/home/dell/Desktop/sui-components/components/molecule/field": - "resolved" "file:components/molecule/field" - "version" "1.36.0" - dependencies: - "@s-ui/react-atom-help-text" "1" - "@s-ui/react-atom-label" "1" - "@s-ui/react-atom-validation-text" "1" - "@s-ui/react-primitive-injector" "1" - -"@s-ui/react-molecule-image-editor-demo@file:/home/dell/Desktop/sui-components/components/molecule/imageEditor/demo": - "resolved" "file:components/molecule/imageEditor/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-image-editor@file:/home/dell/Desktop/sui-components/components/molecule/imageEditor": - "resolved" "file:components/molecule/imageEditor" - "version" "1.10.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-atom-slider" "1" - "@s-ui/react-primitive-injector" "1" - "classnames" "2.2.5" - "react-easy-crop" "3.4.0" - -"@s-ui/react-molecule-input-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/inputField/demo": - "resolved" "file:components/molecule/inputField/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-input-field@file:/home/dell/Desktop/sui-components/components/molecule/inputField": - "resolved" "file:components/molecule/inputField" - "version" "4.7.0" - dependencies: - "@s-ui/react-atom-input" "5" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-input-tags-demo@file:/home/dell/Desktop/sui-components/components/molecule/inputTags/demo": - "resolved" "file:components/molecule/inputTags/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-molecule-input-tags@2", "@s-ui/react-molecule-input-tags@file:/home/dell/Desktop/sui-components/components/molecule/inputTags": - "resolved" "file:components/molecule/inputTags" - "version" "2.25.0" - dependencies: - "@s-ui/react-atom-input" "5" - "@s-ui/react-atom-tag" "2" - "@s-ui/react-hooks" "1" - -"@s-ui/react-molecule-modal-demo@file:/home/dell/Desktop/sui-components/components/molecule/modal/demo": - "resolved" "file:components/molecule/modal/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "lorem-ipsum" "2.0.4" - -"@s-ui/react-molecule-modal@1", "@s-ui/react-molecule-modal@file:/home/dell/Desktop/sui-components/components/molecule/modal": - "resolved" "file:components/molecule/modal" - "version" "1.45.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-hooks" "1" - -"@s-ui/react-molecule-notification-demo@file:/home/dell/Desktop/sui-components/components/molecule/notification/demo": - "resolved" "file:components/molecule/notification/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-notification@1", "@s-ui/react-molecule-notification@file:/home/dell/Desktop/sui-components/components/molecule/notification": - "resolved" "file:components/molecule/notification" - "version" "1.34.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-icons" "1" - -"@s-ui/react-molecule-pagination-demo@file:/home/dell/Desktop/sui-components/components/molecule/pagination/demo": - "resolved" "file:components/molecule/pagination/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-input" "5" - "@s-ui/react-layout-media-query" "1" - "@s-ui/react-molecule-button-group" "2" - -"@s-ui/react-molecule-pagination@file:/home/dell/Desktop/sui-components/components/molecule/pagination": - "resolved" "file:components/molecule/pagination" - "version" "2.20.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-molecule-button-group" "2" - -"@s-ui/react-molecule-photo-uploader-demo@file:/home/dell/Desktop/sui-components/components/molecule/photoUploader/demo": - "resolved" "file:components/molecule/photoUploader/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-molecule-dropdown-option" "2" - "@s-ui/react-molecule-select" "1" - -"@s-ui/react-molecule-photo-uploader@file:/home/dell/Desktop/sui-components/components/molecule/photoUploader": - "resolved" "file:components/molecule/photoUploader" - "version" "2.21.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-icon" "1" - "@s-ui/react-hooks" "1" - "@s-ui/react-molecule-notification" "1" - "react-dropzone" "11.5" - "react-sortablejs" "6.0" - "sortablejs" "1.14.0" - -"@s-ui/react-molecule-progress-steps-demo@file:/home/dell/Desktop/sui-components/components/molecule/progressSteps/demo": - "resolved" "file:components/molecule/progressSteps/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-molecule-progress-steps@file:/home/dell/Desktop/sui-components/components/molecule/progressSteps": - "resolved" "file:components/molecule/progressSteps" - "version" "2.9.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-molecule-stepper" "2" - -"@s-ui/react-molecule-quick-action-demo@file:/home/dell/Desktop/sui-components/components/molecule/quickAction/demo": - "resolved" "file:components/molecule/quickAction/demo" - "version" "1.1.0" - -"@s-ui/react-molecule-quick-action@file:/home/dell/Desktop/sui-components/components/molecule/quickAction": - "resolved" "file:components/molecule/quickAction" - "version" "1.9.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-molecule-radio-button-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonField/demo": - "resolved" "file:components/molecule/radioButtonField/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-radio-button-field@1", "@s-ui/react-molecule-radio-button-field@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonField": - "resolved" "file:components/molecule/radioButtonField" - "version" "1.15.0" - dependencies: - "@s-ui/react-atom-radio-button" "1" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-radio-button-group-demo@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonGroup/demo": - "resolved" "file:components/molecule/radioButtonGroup/demo" - "version" "1.1.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-atom-label" "1" - "@s-ui/react-atom-radio-button" "1" - "@s-ui/react-molecule-radio-button-field" "1" - -"@s-ui/react-molecule-radio-button-group@file:/home/dell/Desktop/sui-components/components/molecule/radioButtonGroup": - "resolved" "file:components/molecule/radioButtonGroup" - "version" "1.9.0" - dependencies: - "@s-ui/component-dependencies" "1" - -"@s-ui/react-molecule-rating-demo@file:/home/dell/Desktop/sui-components/components/molecule/rating/demo": - "resolved" "file:components/molecule/rating/demo" - "version" "1.1.0" - -"@s-ui/react-molecule-rating@file:/home/dell/Desktop/sui-components/components/molecule/rating": - "resolved" "file:components/molecule/rating" - "version" "1.21.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-atom-icon" "1" - -"@s-ui/react-molecule-select-demo@file:/home/dell/Desktop/sui-components/components/molecule/select/demo": - "resolved" "file:components/molecule/select/demo" - "version" "1.0.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-molecule-dropdown-option" "2" - -"@s-ui/react-molecule-select-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/selectField/demo": - "resolved" "file:components/molecule/selectField/demo" - "version" "1.0.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-molecule-dropdown-option" "2" - "@s-ui/react-molecule-field" "1" - "@s-ui/react-molecule-select" "1" - -"@s-ui/react-molecule-select-field@file:/home/dell/Desktop/sui-components/components/molecule/selectField": - "resolved" "file:components/molecule/selectField" - "version" "1.10.0" - dependencies: - "@s-ui/react-molecule-field" "1" - "@s-ui/react-molecule-select" "1" - -"@s-ui/react-molecule-select-popover-demo@file:/home/dell/Desktop/sui-components/components/molecule/selectPopover/demo": - "resolved" "file:components/molecule/selectPopover/demo" - "version" "1.2.0" - dependencies: - "@s-ui/react-icons" "1" - "@s-ui/react-molecule-dropdown-option" "2" - "@s-ui/react-molecule-modal" "1" - "@s-ui/react-molecule-select" "1" - -"@s-ui/react-molecule-select-popover@file:/home/dell/Desktop/sui-components/components/molecule/selectPopover": - "resolved" "file:components/molecule/selectPopover" - "version" "1.33.0" - dependencies: - "@s-ui/react-atom-button" "1" - -"@s-ui/react-molecule-select@1", "@s-ui/react-molecule-select@file:/home/dell/Desktop/sui-components/components/molecule/select": - "resolved" "file:components/molecule/select" - "version" "1.56.0" - dependencies: - "@s-ui/js" "2" - "@s-ui/react-atom-input" "5" - "@s-ui/react-hooks" "1" - "@s-ui/react-molecule-dropdown-list" "2" - "@s-ui/react-molecule-input-tags" "2" - "@s-ui/react-primitive-injector" "1" - -"@s-ui/react-molecule-stepper-demo@file:/home/dell/Desktop/sui-components/components/molecule/stepper/demo": - "resolved" "file:components/molecule/stepper/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-icon" "1" - "@s-ui/react-hooks" "1" - "@s-ui/react-primitive-injector" "1.1.0" - "@s-ui/react-primitive-polymorphic-element" "1" - "lorem-ipsum" "2.0.4" - -"@s-ui/react-molecule-stepper@2", "@s-ui/react-molecule-stepper@file:/home/dell/Desktop/sui-components/components/molecule/stepper": - "resolved" "file:components/molecule/stepper" - "version" "2.3.0" - dependencies: - "@s-ui/react-hooks" "1" - "@s-ui/react-primitive-injector" "1" - "@s-ui/react-primitive-polymorphic-element" "1" - -"@s-ui/react-molecule-tabs-demo@file:/home/dell/Desktop/sui-components/components/molecule/tabs/demo": - "resolved" "file:components/molecule/tabs/demo" - "version" "1.1.0" - dependencies: - "@s-ui/react-atom-icon" "1.14.0" - "@s-ui/react-layout-media-query" "1" - "lorem-ipsum" "2.0.4" - -"@s-ui/react-molecule-tabs@file:/home/dell/Desktop/sui-components/components/molecule/tabs": - "resolved" "file:components/molecule/tabs" - "version" "2.36.0" - dependencies: - "@s-ui/component-dependencies" "1" - "@s-ui/react-hooks" "1" - -"@s-ui/react-molecule-textarea-field-demo@file:/home/dell/Desktop/sui-components/components/molecule/textareaField/demo": - "resolved" "file:components/molecule/textareaField/demo" - "version" "1.2.0" - dependencies: - "@s-ui/react-atom-button" "1" - -"@s-ui/react-molecule-textarea-field@file:/home/dell/Desktop/sui-components/components/molecule/textareaField": - "resolved" "file:components/molecule/textareaField" - "version" "3.10.0" - dependencies: - "@s-ui/react-atom-textarea" "2" - "@s-ui/react-molecule-field" "1" - -"@s-ui/react-molecule-thumbnail-demo@file:/home/dell/Desktop/sui-components/components/molecule/thumbnail/demo": - "resolved" "file:components/molecule/thumbnail/demo" - "version" "1.0.0" - dependencies: - "@s-ui/react-atom-spinner" "1" - "@s-ui/react-layout-media-query" "1" - -"@s-ui/react-molecule-thumbnail@file:/home/dell/Desktop/sui-components/components/molecule/thumbnail": - "resolved" "file:components/molecule/thumbnail" - "version" "2.13.0" - dependencies: - "@s-ui/react-atom-image" "2" - -"@s-ui/react-molecule-validation-code-demo@file:/home/dell/Desktop/sui-components/components/molecule/validationCode/demo": - "resolved" "file:components/molecule/validationCode/demo" - "version" "1.0.0" - -"@s-ui/react-molecule-validation-code@file:/home/dell/Desktop/sui-components/components/molecule/validationCode": - "resolved" "file:components/molecule/validationCode" - "version" "1.7.0" - dependencies: - "@s-ui/react-atom-button" "1" - "@s-ui/react-atom-pin-input" "1" - "@s-ui/react-atom-validation-text" "1" - -"@s-ui/react-organism-nested-checkboxes-demo@file:/home/dell/Desktop/sui-components/components/organism/nestedCheckboxes/demo": - "resolved" "file:components/organism/nestedCheckboxes/demo" - "version" "1.0.0" - dependencies: - "@s-ui/hoc" "1" - "@s-ui/react-atom-icon" "1" - "react-json-view" "1.21.3" - -"@s-ui/react-organism-nested-checkboxes@file:/home/dell/Desktop/sui-components/components/organism/nestedCheckboxes": - "resolved" "file:components/organism/nestedCheckboxes" - "version" "3.1.0" - dependencies: - "@s-ui/react-molecule-checkbox-field" "4" - -"@s-ui/react-primitive-injector-demo@file:/home/dell/Desktop/sui-components/components/primitive/injector/demo": - "resolved" "file:components/primitive/injector/demo" - "version" "1.0.0" - dependencies: - "react-json-view" "1.21.3" - -"@s-ui/react-primitive-injector@1.1.0": - "integrity" "sha512-NvSRY4FwE7c8FVL9bbM2jCjSeFmBuNjnWMm6c61ZSmdHoQThBrhq3i/tHIemfzrKXovBkPbWmUWp/eeuV1k79g==" - "resolved" "https://registry.npmjs.org/@s-ui/react-primitive-injector/-/react-primitive-injector-1.1.0.tgz" - "version" "1.1.0" - -"@s-ui/react-primitive-injector@1", "@s-ui/react-primitive-injector@file:/home/dell/Desktop/sui-components/components/primitive/injector": - "resolved" "file:components/primitive/injector" - "version" "1.2.0" - -"@s-ui/react-primitive-polymorphic-element-demo@file:/home/dell/Desktop/sui-components/components/primitive/polymorphicElement/demo": - "resolved" "file:components/primitive/polymorphicElement/demo" - "version" "1.0.0" - -"@s-ui/react-primitive-polymorphic-element@1", "@s-ui/react-primitive-polymorphic-element@file:/home/dell/Desktop/sui-components/components/primitive/polymorphicElement": - "resolved" "file:components/primitive/polymorphicElement" - "version" "1.2.0" - -"@s-ui/react-router@1": - "integrity" "sha512-XlJ3OeLoWgsGKnXsB5GLc/EWW7T4S+jyfJ0lkBMjQbIVB+72nnpx+L9zlXTJBwWS6ahKOQMQZTUzIhm1Hsbrfg==" - "resolved" "https://registry.npmjs.org/@s-ui/react-router/-/react-router-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "classnames" "2.2.5" - "history" "3.3.0" - "hoist-non-react-statics" "3.3.2" - -"@s-ui/sass-loader@1": - "integrity" "sha512-cbtJSavyj2HKQKZeQnj24aySmz000UjsVZiIWqoHWvP0wyOJXZ4zOWhVb/CKclSVEIGOIGYMrci6Ej441j7gfg==" - "resolved" "https://registry.npmjs.org/@s-ui/sass-loader/-/sass-loader-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "cli-source-preview" "1.1.0" - "co" "4.6.0" - "fs-extra" "10.1.0" - "loader-utils" "3.2.0" - -"@s-ui/studio@11": - "integrity" "sha512-8dB3hObICkpKIs2OAYiPTWn2QvVuyRCUx9dt2g6B4Ezx8ZkiU7Flh8++migJZCZHyD+SG/Oa65iPfeO4eX4mzw==" - "resolved" "https://registry.npmjs.org/@s-ui/studio/-/studio-11.23.0.tgz" - "version" "11.23.0" - dependencies: - "@babel/cli" "7" - "@s-ui/bundler" "9" - "@s-ui/helpers" "1" - "@s-ui/react-context" "1" - "@s-ui/react-router" "1" - "@s-ui/test" "8" - "@testing-library/react" "10.4.9" - "@testing-library/react-hooks" "4.0.1" - "@testing-library/user-event" "13.5.0" - "chai" "4.3.6" - "chai-dom" "1.11.0" - "classnames" "2.2.5" - "commander" "8.3.0" - "deepmerge" "4.2.2" - "fast-glob" "3.2.11" - "fs-extra" "10.1.0" - "git-url-parse" "12.0.0" - "hoist-non-react-statics" "3.3.2" - "just-debounce-it" "1.5.0" - "just-kebab-case" "1.1.0" - "just-pascal-case" "1.1.0" - "micromatch" "4.0.5" - "node-fetch" "2.6.7" - "normalize.css" "8.0.1" - "react" "17" - "react-docgen" "5.3.1" - "react-dom" "17" - "react-test-renderer" "17" - -"@s-ui/test@8": - "integrity" "sha512-pCSrcGgrBYIpLMYcHSKWmtBEw5hVyIfdlks4d340CL6Iueaf9fFWSBTajXClh7xfqniAMtHlHeS9ReXbNfNE/w==" - "resolved" "https://registry.npmjs.org/@s-ui/test/-/test-8.23.0.tgz" - "version" "8.23.0" - dependencies: - "@babel/core" "7.18.10" - "@babel/plugin-transform-modules-commonjs" "7.18.6" - "@babel/register" "7.18.9" - "@s-ui/helpers" "1" - "babel-loader" "8.2.5" - "babel-plugin-dynamic-import-node" "2.3.3" - "babel-plugin-istanbul" "6.0.0" - "babel-preset-sui" "3" - "commander" "8.3.0" - "karma" "6.4.0" - "karma-chrome-launcher" "3.1.1" - "karma-coverage" "2.2.0" - "karma-firefox-launcher" "2.1.2" - "karma-mocha" "2.0.1" - "karma-spec-reporter" "0.0.34" - "karma-webpack" "5.0.0" - "mocha" "10.0.0" - "process" "0.11.10" - "stream-browserify" "3.0.0" - "tty-browserify" "0.0.1" - "util" "0.12.4" - "webpack" "5.74.0" - -"@s-ui/theme@8": - "integrity" "sha512-QXMUv9Ran5/n8iVJ+wkhZJLMiBGZUhIvZ10EFJ2n8LqBQV3oJap9guuhs/+CG4B7OM8/lc9/UdTWDb98n95wWA==" - "resolved" "https://registry.npmjs.org/@s-ui/theme/-/theme-8.124.0.tgz" - "version" "8.124.0" - -"@schibstedspain/sui-theme@8": - "integrity" "sha512-0WzFXGOITJug30rBq1M7Ndmdaeizu6biTN/BdrHhfivYlfBd8xDJ8p7P2JcrH8cCXsmo1aL/ql1HtC8Y5l/i1w==" - "resolved" "https://registry.npmjs.org/@schibstedspain/sui-theme/-/sui-theme-8.69.0.tgz" - "version" "8.69.0" - -"@schibstedspain/theme-basic@7": - "integrity" "sha512-oyKPJnn9HZMVDuNKSrj1gtKUKntnctGiiRGt00QXlHNfGngKcGQmC42KiuCG6XmhFs9oTY38+BL8jCtkGrs+Lw==" - "resolved" "https://registry.npmjs.org/@schibstedspain/theme-basic/-/theme-basic-7.28.0.tgz" - "version" "7.28.0" - -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": - "integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" - "version" "1.8.3" - dependencies: - "type-detect" "4.0.8" - -"@sinonjs/fake-timers@^7.1.0", "@sinonjs/fake-timers@>=5": - "integrity" "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" - "version" "7.1.2" - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sinonjs/samsam@^6.0.2": - "integrity" "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==" - "resolved" "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "@sinonjs/commons" "^1.6.0" - "lodash.get" "^4.4.2" - "type-detect" "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - "integrity" "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" - "resolved" "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz" - "version" "0.7.2" - -"@socket.io/component-emitter@~3.1.0": - "integrity" "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - "resolved" "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz" - "version" "3.1.0" - -"@testing-library/dom@^7.22.3": - "integrity" "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz" - "version" "7.31.2" - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - "aria-query" "^4.2.2" - "chalk" "^4.1.0" - "dom-accessibility-api" "^0.5.6" - "lz-string" "^1.4.4" - "pretty-format" "^26.6.2" - -"@testing-library/react-hooks@4.0.1": - "integrity" "sha512-DufI8Q2GOM7W2yFEEfz85VNVNaHZL0tPZyBT6ytV7HK+1A4frL1ty+W5NBE0u0K3EFV/Pg5O28HGNEtp9D5EyA==" - "resolved" "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "@babel/runtime" "^7.12.5" - "@types/react" ">=16.9.0" - "@types/react-test-renderer" ">=16.9.0" - -"@testing-library/react@10.4.9": - "integrity" "sha512-pHZKkqUy0tmiD81afs8xfiuseXfU/N7rAX3iKjeZYje86t9VaB0LrxYVa+OOsvkrveX5jCK3IjajVn2MbePvqA==" - "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-10.4.9.tgz" - "version" "10.4.9" - dependencies: - "@babel/runtime" "^7.10.3" - "@testing-library/dom" "^7.22.3" - -"@testing-library/user-event@13.5.0": - "integrity" "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==" - "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" - "version" "13.5.0" - dependencies: - "@babel/runtime" "^7.12.5" - -"@trysound/sax@0.2.0": - "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - "version" "0.2.0" - -"@types/aria-query@^4.2.0": - "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" - "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" - -"@types/body-parser@*": - "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - "version" "1.19.2" - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - "integrity" "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==" - "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" - "version" "3.5.10" - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - "integrity" "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==" - "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - "version" "3.4.35" - dependencies: - "@types/node" "*" - -"@types/cookie@^0.4.1": - "integrity" "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" - "version" "0.4.1" - -"@types/cors@^2.8.12": - "integrity" "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - "resolved" "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz" - "version" "2.8.12" - -"@types/eslint-scope@^3.7.3": - "integrity" "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" - "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - "version" "3.7.4" - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - "integrity" "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz" - "version" "8.4.6" - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.51": - "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" - "version" "0.0.51" - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - "integrity" "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" - "version" "4.17.31" - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*", "@types/express@^4.17.13": - "integrity" "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" - "version" "4.17.14" - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/html-minifier-terser@^6.0.0": - "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" - -"@types/http-proxy@^1.17.8": - "integrity" "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==" - "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" - "version" "1.17.9" - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" - -"@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/js-cookie@^2.2.6": - "integrity" "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" - "resolved" "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz" - "version" "2.2.7" - -"@types/js-cookie@2.2.6": - "integrity" "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==" - "resolved" "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz" - "version" "2.2.6" - -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - "version" "7.0.11" - -"@types/json5@^0.0.29": - "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - "version" "0.0.29" - -"@types/mime@*": - "integrity" "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - "version" "3.0.1" - -"@types/minimist@^1.2.0": - "integrity" "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" - "version" "1.2.2" - -"@types/node@*", "@types/node@>=10.0.0": - "integrity" "sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.8.2.tgz" - "version" "18.8.2" - -"@types/normalize-package-data@^2.4.0": - "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - "version" "2.4.1" - -"@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - -"@types/prop-types@*": - "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - "version" "15.7.5" - -"@types/qs@*": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "6.9.7" - -"@types/range-parser@*": - "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - "version" "1.2.4" - -"@types/react-test-renderer@>=16.9.0": - "integrity" "sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==" - "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz" - "version" "18.0.0" - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@>=16.9.0": - "integrity" "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz" - "version" "18.0.21" - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - "csstype" "^3.0.2" - -"@types/retry@0.12.0": - "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" - -"@types/serve-index@^1.9.1": - "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" - "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": - "integrity" "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.33": - "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" - "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" - "version" "0.3.33" - dependencies: - "@types/node" "*" - -"@types/ws@^8.5.1": - "integrity" "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==" - "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" - "version" "8.5.3" - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" - -"@types/yargs@^15.0.0": - "integrity" "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" - "version" "15.0.14" - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@5.33.0": - "integrity" "sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.0.tgz" - "version" "5.33.0" - dependencies: - "@typescript-eslint/scope-manager" "5.33.0" - "@typescript-eslint/type-utils" "5.33.0" - "@typescript-eslint/utils" "5.33.0" - "debug" "^4.3.4" - "functional-red-black-tree" "^1.0.1" - "ignore" "^5.2.0" - "regexpp" "^3.2.0" - "semver" "^7.3.7" - "tsutils" "^3.21.0" - -"@typescript-eslint/parser@^5.0.0": - "integrity" "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz" - "version" "5.39.0" - dependencies: - "@typescript-eslint/scope-manager" "5.39.0" - "@typescript-eslint/types" "5.39.0" - "@typescript-eslint/typescript-estree" "5.39.0" - "debug" "^4.3.4" - -"@typescript-eslint/scope-manager@5.33.0": - "integrity" "sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.0.tgz" - "version" "5.33.0" - dependencies: - "@typescript-eslint/types" "5.33.0" - "@typescript-eslint/visitor-keys" "5.33.0" - -"@typescript-eslint/scope-manager@5.39.0": - "integrity" "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz" - "version" "5.39.0" - dependencies: - "@typescript-eslint/types" "5.39.0" - "@typescript-eslint/visitor-keys" "5.39.0" - -"@typescript-eslint/type-utils@5.33.0": - "integrity" "sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.0.tgz" - "version" "5.33.0" - dependencies: - "@typescript-eslint/utils" "5.33.0" - "debug" "^4.3.4" - "tsutils" "^3.21.0" - -"@typescript-eslint/types@5.33.0": - "integrity" "sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.0.tgz" - "version" "5.33.0" - -"@typescript-eslint/types@5.39.0": - "integrity" "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz" - "version" "5.39.0" - -"@typescript-eslint/typescript-estree@5.33.0": - "integrity" "sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.0.tgz" - "version" "5.33.0" - dependencies: - "@typescript-eslint/types" "5.33.0" - "@typescript-eslint/visitor-keys" "5.33.0" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.3.7" - "tsutils" "^3.21.0" - -"@typescript-eslint/typescript-estree@5.39.0": - "integrity" "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz" - "version" "5.39.0" - dependencies: - "@typescript-eslint/types" "5.39.0" - "@typescript-eslint/visitor-keys" "5.39.0" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.3.7" - "tsutils" "^3.21.0" - -"@typescript-eslint/utils@5.33.0": - "integrity" "sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.0.tgz" - "version" "5.33.0" - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.33.0" - "@typescript-eslint/types" "5.33.0" - "@typescript-eslint/typescript-estree" "5.33.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^3.0.0" - -"@typescript-eslint/visitor-keys@5.33.0": - "integrity" "sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.0.tgz" - "version" "5.33.0" - dependencies: - "@typescript-eslint/types" "5.33.0" - "eslint-visitor-keys" "^3.3.0" - -"@typescript-eslint/visitor-keys@5.39.0": - "integrity" "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz" - "version" "5.39.0" - dependencies: - "@typescript-eslint/types" "5.39.0" - "eslint-visitor-keys" "^3.3.0" - -"@ungap/promise-all-settled@1.1.2": - "integrity" "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" - "resolved" "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" - "version" "1.1.2" - -"@webassemblyjs/ast@1.11.1": - "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-api-error@1.11.1": - "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-buffer@1.11.1": - "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-numbers@1.11.1": - "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-wasm-section@1.11.1": - "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/wasm-edit@1.11.1": - "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xobotyi/scrollbar-width@^1.9.5", "@xobotyi/scrollbar-width@1.9.5": - "integrity" "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" - "resolved" "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz" - "version" "1.9.5" - -"@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" - -"@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" - -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" - dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" - -"acorn-import-assertions@^1.7.6": - "integrity" "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" - "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" - "version" "1.8.0" - -"acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" - -"acorn@^8.5.0", "acorn@^8.7.1", "acorn@^8.8.0": - "integrity" "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" - "version" "8.8.0" - -"add-stream@^1.0.0": - "integrity" "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" - "resolved" "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" - "version" "1.0.0" - -"address@1.2.0": - "integrity" "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==" - "resolved" "https://registry.npmjs.org/address/-/address-1.2.0.tgz" - "version" "1.2.0" - -"ajv-formats@^2.1.1": - "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" - "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ajv" "^8.0.0" - -"ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv-keywords@^5.0.0": - "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "fast-deep-equal" "^3.1.3" - -"ajv@^6.10.0", "ajv@^6.12.4", "ajv@^6.12.5": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"ajv@^8.0.0": - "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - "version" "8.11.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ajv@^8.0.1": - "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - "version" "8.11.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ajv@^8.8.0": - "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - "version" "8.11.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ansi-colors@^4.1.1": - "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" - "version" "4.1.3" - -"ansi-colors@4.1.1": - "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - "version" "4.1.1" - -"ansi-html-community@^0.0.8": - "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - "version" "0.0.8" - -"ansi-regex@^2.0.0": - "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^5.0.0", "ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^2.2.1": - "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - "version" "2.2.1" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"anymatch@~3.1.2": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"aria-query@^4.2.2": - "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -"array-flatten@^2.1.2": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" - -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-ify@^1.0.0": - "integrity" "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - "resolved" "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" - "version" "1.0.0" - -"array-includes@^3.1.4", "array-includes@^3.1.5": - "integrity" "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==" - "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.19.5" - "get-intrinsic" "^1.1.1" - "is-string" "^1.0.7" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"array.prototype.flat@^1.2.5": - "integrity" "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==" - "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.2" - "es-shim-unscopables" "^1.0.0" - -"array.prototype.flatmap@^1.3.0": - "integrity" "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==" - "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.2" - "es-shim-unscopables" "^1.0.0" - -"arrify@^1.0.1": - "integrity" "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - "version" "1.0.1" - -"asap@~2.0.3": - "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" - -"assertion-error@^1.1.0": - "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - "version" "1.1.0" - -"ast-types@^0.14.2": - "integrity" "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" - "version" "0.14.2" - dependencies: - "tslib" "^2.0.1" - -"astral-regex@^2.0.0": - "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - "version" "2.0.0" - -"atom-action-button@file:/home/dell/Desktop/sui-components/components/atom/actionButton/demo": - "resolved" "file:components/atom/actionButton/demo" - "version" "1.1.0" - -"attr-accept@^2.2.1": - "integrity" "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" - "resolved" "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz" - "version" "2.2.2" - -"autoprefixer@10.4.8": - "integrity" "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz" - "version" "10.4.8" - dependencies: - "browserslist" "^4.21.3" - "caniuse-lite" "^1.0.30001373" - "fraction.js" "^4.2.0" - "normalize-range" "^0.1.2" - "picocolors" "^1.0.0" - "postcss-value-parser" "^4.2.0" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"axios@0.21.4": - "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - "version" "0.21.4" - dependencies: - "follow-redirects" "^1.14.0" - -"babel-loader@8.2.5": - "integrity" "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==" - "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz" - "version" "8.2.5" - dependencies: - "find-cache-dir" "^3.3.1" - "loader-utils" "^2.0.0" - "make-dir" "^3.1.0" - "schema-utils" "^2.6.5" - -"babel-plugin-dynamic-import-node@^2.3.3", "babel-plugin-dynamic-import-node@2.3.3": - "integrity" "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "object.assign" "^4.1.0" - -"babel-plugin-istanbul@6.0.0": - "integrity" "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^4.0.0" - "test-exclude" "^6.0.0" - -"babel-plugin-macros@^2.8.0": - "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "@babel/runtime" "^7.7.2" - "cosmiconfig" "^6.0.0" - "resolve" "^1.12.0" - -"babel-plugin-polyfill-corejs2@^0.3.2": - "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - "semver" "^6.1.1" - -"babel-plugin-polyfill-corejs3@^0.5.3": - "integrity" "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - "core-js-compat" "^3.21.0" - -"babel-plugin-polyfill-regenerator@^0.4.0": - "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -"babel-plugin-preval@5.0.0": - "integrity" "sha512-8DqJq6/LPUjSZ0Qq6bVIFpsj2flCEE0Cbnbut9TvGU6jP9g3dOWEXtQ/sdvsA9d6souza8eNGh04WRXpuH9ThA==" - "resolved" "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "@babel/runtime" "^7.9.2" - "babel-plugin-macros" "^2.8.0" - "require-from-string" "^2.0.2" - -"babel-plugin-transform-react-remove-prop-types@0.4.24": - "integrity" "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - "version" "0.4.24" - -"babel-preset-sui@3": - "integrity" "sha512-EGvWzOgJSL6JUUFisN8w0EveOpYZQyxwQZb3R62N+cHMLFQmU6GQD9UGr2Lc8mgcIv9kqTSp7qxK6FZsq0e4+A==" - "resolved" "https://registry.npmjs.org/babel-preset-sui/-/babel-preset-sui-3.49.0.tgz" - "version" "3.49.0" - dependencies: - "@babel/core" "7.18.10" - "@babel/plugin-proposal-decorators" "7.18.10" - "@babel/plugin-syntax-export-default-from" "7.18.6" - "@babel/plugin-syntax-export-namespace-from" "7.8.3" - "@babel/plugin-transform-runtime" "7.18.10" - "@babel/preset-env" "7.18.10" - "@babel/preset-react" "7.18.6" - "@babel/runtime" "7.18.9" - "babel-plugin-preval" "5.0.0" - "babel-plugin-transform-react-remove-prop-types" "0.4.24" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"balanced-match@^2.0.0": - "integrity" "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz" - "version" "2.0.0" - -"base16@^1.0.0": - "integrity" "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" - "resolved" "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" - "version" "1.0.0" - -"base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"base64id@~2.0.0", "base64id@2.0.0": - "integrity" "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - "resolved" "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" - "version" "2.0.0" - -"batch@0.6.1": - "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"body-parser@^1.19.0", "body-parser@1.20.0": - "integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" - "version" "1.20.0" - dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.10.3" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" - -"bonjour-service@^1.0.11": - "integrity" "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==" - "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" - "version" "1.0.14" - dependencies: - "array-flatten" "^2.1.2" - "dns-equal" "^1.0.0" - "fast-deep-equal" "^3.1.3" - "multicast-dns" "^7.2.5" - -"boolbase@^1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"bowser@2.11.0": - "integrity" "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" - "resolved" "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" - "version" "2.11.0" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "balanced-match" "^1.0.0" - -"braces@^3.0.2", "braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"browser-stdout@1.3.1": - "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - "version" "1.3.1" - -"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.16.6", "browserslist@^4.20.3", "browserslist@^4.21.3", "browserslist@^4.21.4": - "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - "version" "4.21.4" - dependencies: - "caniuse-lite" "^1.0.30001400" - "electron-to-chromium" "^1.4.251" - "node-releases" "^2.0.6" - "update-browserslist-db" "^1.0.9" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer@6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" - -"builtin-status-codes@^3.0.0": - "integrity" "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" - -"builtins@^5.0.1": - "integrity" "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==" - "resolved" "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "semver" "^7.0.0" - -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camel-case@^4.1.2": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" - -"camelcase-keys@^6.2.2": - "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==" - "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" - "version" "6.2.2" - dependencies: - "camelcase" "^5.3.1" - "map-obj" "^4.0.0" - "quick-lru" "^4.0.1" - -"camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.0.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" - -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001373", "caniuse-lite@^1.0.30001400": - "integrity" "sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz" - "version" "1.0.30001416" - -"chai-dom@1.11.0": - "integrity" "sha512-ZzGlEfk1UhHH5+N0t9bDqstOxPEXmn3EyXvtsok5rfXVDOFDJbHVy12rED6ZwkJAUDs2w7/Da4Hlq2LB63kltg==" - "resolved" "https://registry.npmjs.org/chai-dom/-/chai-dom-1.11.0.tgz" - "version" "1.11.0" - -"chai@4.3.6": - "integrity" "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==" - "resolved" "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz" - "version" "4.3.6" - dependencies: - "assertion-error" "^1.1.0" - "check-error" "^1.0.2" - "deep-eql" "^3.0.1" - "get-func-name" "^2.0.0" - "loupe" "^2.3.1" - "pathval" "^1.1.1" - "type-detect" "^4.0.5" - -"chalk@^1.1.3": - "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "ansi-styles" "^2.2.1" - "escape-string-regexp" "^1.0.2" - "has-ansi" "^2.0.0" - "strip-ansi" "^3.0.0" - "supports-color" "^2.0.0" - -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^4.0.0": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^4.1.0": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"check-error@^1.0.2": - "integrity" "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" - "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" - "version" "1.0.2" - -"chokidar@^3.4.0", "chokidar@^3.5.1", "chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0", "chokidar@3.5.3": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" - optionalDependencies: - "fsevents" "~2.3.2" - -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" - -"classnames@^2.2.1", "classnames@^2.2.3", "classnames@^2.2.5", "classnames@2.2.5", "classnames@2.x": - "integrity" "sha512-DTt3GhOUDKhh4ONwIJW4lmhyotQmV2LjNlGK/J2hkwUcqcbKkCLAdJPtxQnxnlc7SR3f1CEXCyMmc7WLUsWbNA==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz" - "version" "2.2.5" - -"classnames@^2.2.6": - "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - "version" "2.3.2" - -"classnames@^2.3.1": - "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - "version" "2.3.2" - -"classnames@2.3.1": - "integrity" "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" - "version" "2.3.1" - -"clean-css@^5.2.2": - "integrity" "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz" - "version" "5.3.1" - dependencies: - "source-map" "~0.6.0" - -"cli-source-preview@1.1.0": - "integrity" "sha512-n5DpanHecShys8+nhrOrQoPJjvtISsKAaW9abQjbf53X73RMkPwq7JLny5zEAJDdW/PwYr3FehtsIJZhocUULw==" - "resolved" "https://registry.npmjs.org/cli-source-preview/-/cli-source-preview-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "chalk" "^1.1.3" - -"cliui@^7.0.2": - "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - "version" "7.0.4" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^7.0.0" - -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" - -"co@4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" - -"color-convert@^1.9.0", "color-convert@^1.9.3": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@^1.0.0", "color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-string@^1.6.0": - "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" - "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "color-name" "^1.0.0" - "simple-swizzle" "^0.2.2" - -"color@3": - "integrity" "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==" - "resolved" "https://registry.npmjs.org/color/-/color-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.3" - "color-string" "^1.6.0" - -"colord@^2.9.1", "colord@^2.9.3": - "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - "version" "2.9.3" - -"colorette@^2.0.10": - "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - "version" "2.0.19" - -"colors@~0.6.0-1": - "integrity" "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" - "resolved" "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" - "version" "0.6.2" - -"colors@1.4.0": - "integrity" "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - "resolved" "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" - "version" "1.4.0" - -"commander@^2.17.1": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^2.19.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^4.0.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" - -"commander@^7.2.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" - -"commander@^8.3.0", "commander@8.3.0": - "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - "version" "8.3.0" - -"commander@~2.1.0": - "integrity" "sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" - "version" "2.1.0" - -"commondir@^1.0.1": - "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" - -"compare-func@^2.0.0": - "integrity" "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==" - "resolved" "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "array-ify" "^1.0.0" - "dot-prop" "^5.1.0" - -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" - dependencies: - "mime-db" ">= 1.43.0 < 2" - -"compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "accepts" "~1.3.5" - "bytes" "3.0.0" - "compressible" "~2.0.16" - "debug" "2.6.9" - "on-headers" "~1.0.2" - "safe-buffer" "5.1.2" - "vary" "~1.1.2" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"connect-history-api-fallback@^2.0.0": - "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" - "version" "2.0.0" - -"connect@^3.7.0": - "integrity" "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==" - "resolved" "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" - "version" "3.7.0" - dependencies: - "debug" "2.6.9" - "finalhandler" "1.1.2" - "parseurl" "~1.3.3" - "utils-merge" "1.0.1" - -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" - dependencies: - "safe-buffer" "5.2.1" - -"content-type@~1.0.4": - "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - "version" "1.0.4" - -"conventional-changelog-angular@^5.0.12": - "integrity" "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==" - "resolved" "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" - "version" "5.0.13" - dependencies: - "compare-func" "^2.0.0" - "q" "^1.5.1" - -"conventional-changelog-atom@^2.0.8": - "integrity" "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==" - "resolved" "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz" - "version" "2.0.8" - dependencies: - "q" "^1.5.1" - -"conventional-changelog-codemirror@^2.0.8": - "integrity" "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==" - "resolved" "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz" - "version" "2.0.8" - dependencies: - "q" "^1.5.1" - -"conventional-changelog-conventionalcommits@^4.5.0": - "integrity" "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==" - "resolved" "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz" - "version" "4.6.3" - dependencies: - "compare-func" "^2.0.0" - "lodash" "^4.17.15" - "q" "^1.5.1" - -"conventional-changelog-core@^4.2.1": - "integrity" "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==" - "resolved" "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" - "version" "4.2.4" - dependencies: - "add-stream" "^1.0.0" - "conventional-changelog-writer" "^5.0.0" - "conventional-commits-parser" "^3.2.0" - "dateformat" "^3.0.0" - "get-pkg-repo" "^4.0.0" - "git-raw-commits" "^2.0.8" - "git-remote-origin-url" "^2.0.0" - "git-semver-tags" "^4.1.1" - "lodash" "^4.17.15" - "normalize-package-data" "^3.0.0" - "q" "^1.5.1" - "read-pkg" "^3.0.0" - "read-pkg-up" "^3.0.0" - "through2" "^4.0.0" - -"conventional-changelog-ember@^2.0.9": - "integrity" "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==" - "resolved" "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz" - "version" "2.0.9" - dependencies: - "q" "^1.5.1" - -"conventional-changelog-eslint@^3.0.9": - "integrity" "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==" - "resolved" "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz" - "version" "3.0.9" - dependencies: - "q" "^1.5.1" - -"conventional-changelog-express@^2.0.6": - "integrity" "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==" - "resolved" "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz" - "version" "2.0.6" - dependencies: - "q" "^1.5.1" - -"conventional-changelog-jquery@^3.0.11": - "integrity" "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==" - "resolved" "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz" - "version" "3.0.11" - dependencies: - "q" "^1.5.1" - -"conventional-changelog-jshint@^2.0.9": - "integrity" "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==" - "resolved" "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz" - "version" "2.0.9" - dependencies: - "compare-func" "^2.0.0" - "q" "^1.5.1" - -"conventional-changelog-preset-loader@^2.3.4": - "integrity" "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==" - "resolved" "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" - "version" "2.3.4" - -"conventional-changelog-writer@^5.0.0": - "integrity" "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==" - "resolved" "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "conventional-commits-filter" "^2.0.7" - "dateformat" "^3.0.0" - "handlebars" "^4.7.7" - "json-stringify-safe" "^5.0.1" - "lodash" "^4.17.15" - "meow" "^8.0.0" - "semver" "^6.0.0" - "split" "^1.0.0" - "through2" "^4.0.0" - -"conventional-changelog@3.1.25": - "integrity" "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==" - "resolved" "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz" - "version" "3.1.25" - dependencies: - "conventional-changelog-angular" "^5.0.12" - "conventional-changelog-atom" "^2.0.8" - "conventional-changelog-codemirror" "^2.0.8" - "conventional-changelog-conventionalcommits" "^4.5.0" - "conventional-changelog-core" "^4.2.1" - "conventional-changelog-ember" "^2.0.9" - "conventional-changelog-eslint" "^3.0.9" - "conventional-changelog-express" "^2.0.6" - "conventional-changelog-jquery" "^3.0.11" - "conventional-changelog-jshint" "^2.0.9" - "conventional-changelog-preset-loader" "^2.3.4" - -"conventional-commit-types@^2.0.0": - "integrity" "sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ==" - "resolved" "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz" - "version" "2.3.0" - -"conventional-commits-filter@^2.0.7": - "integrity" "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==" - "resolved" "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "lodash.ismatch" "^4.4.0" - "modify-values" "^1.0.0" - -"conventional-commits-parser@^3.2.0": - "integrity" "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==" - "resolved" "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" - "version" "3.2.4" - dependencies: - "is-text-path" "^1.0.1" - "JSONStream" "^1.0.4" - "lodash" "^4.17.15" - "meow" "^8.0.0" - "split2" "^3.0.0" - "through2" "^4.0.0" - -"convert-source-map@^1.1.0", "convert-source-map@^1.7.0": - "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" - "version" "1.8.0" - dependencies: - "safe-buffer" "~5.1.1" - -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@~0.4.1": - "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - "version" "0.4.2" - -"cookie@0.3.1": - "integrity" "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - "version" "0.3.1" - -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" - -"copy-to-clipboard@^3.2.0", "copy-to-clipboard@^3.3.1": - "integrity" "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==" - "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "toggle-selection" "^1.0.6" - -"core-js-compat@^3.21.0", "core-js-compat@^3.22.1": - "integrity" "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz" - "version" "3.25.5" - dependencies: - "browserslist" "^4.21.4" - -"core-js-pure@^3.25.1": - "integrity" "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==" - "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz" - "version" "3.25.5" - -"core-util-is@~1.0.0": - "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - "version" "1.0.3" - -"cors@~2.8.5": - "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" - "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" - "version" "2.8.5" - dependencies: - "object-assign" "^4" - "vary" "^1" - -"cosmiconfig@^6.0.0": - "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@types/parse-json" "^4.0.0" - "import-fresh" "^3.1.0" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.7.2" - -"cosmiconfig@^7.0.0": - "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "@types/parse-json" "^4.0.0" - "import-fresh" "^3.2.1" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.10.0" - -"cosmiconfig@^7.0.1": - "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "@types/parse-json" "^4.0.0" - "import-fresh" "^3.2.1" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.10.0" - -"cross-fetch@^3.1.5": - "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "node-fetch" "2.6.7" - -"cross-spawn@^7.0.2", "cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"css-declaration-sorter@^6.3.0": - "integrity" "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz" - "version" "6.3.1" - -"css-functions-list@^3.1.0": - "integrity" "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==" - "resolved" "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz" - "version" "3.1.0" - -"css-in-js-utils@^2.0.0": - "integrity" "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==" - "resolved" "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "hyphenate-style-name" "^1.0.2" - "isobject" "^3.0.1" - -"css-loader@6.7.1": - "integrity" "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz" - "version" "6.7.1" - dependencies: - "icss-utils" "^5.1.0" - "postcss" "^8.4.7" - "postcss-modules-extract-imports" "^3.0.0" - "postcss-modules-local-by-default" "^4.0.0" - "postcss-modules-scope" "^3.0.0" - "postcss-modules-values" "^4.0.0" - "postcss-value-parser" "^4.2.0" - "semver" "^7.3.5" - -"css-minimizer-webpack-plugin@4.0.0": - "integrity" "sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA==" - "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "cssnano" "^5.1.8" - "jest-worker" "^27.5.1" - "postcss" "^8.4.13" - "schema-utils" "^4.0.0" - "serialize-javascript" "^6.0.0" - "source-map" "^0.6.1" - -"css-select@^4.1.3": - "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.0.1" - "domhandler" "^4.3.1" - "domutils" "^2.8.0" - "nth-check" "^2.0.1" - -"css-tree@^1.1.2", "css-tree@^1.1.3": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" - -"css-what@^6.0.1": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" - -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" - -"cssnano-preset-default@^5.2.12": - "integrity" "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz" - "version" "5.2.12" - dependencies: - "css-declaration-sorter" "^6.3.0" - "cssnano-utils" "^3.1.0" - "postcss-calc" "^8.2.3" - "postcss-colormin" "^5.3.0" - "postcss-convert-values" "^5.1.2" - "postcss-discard-comments" "^5.1.2" - "postcss-discard-duplicates" "^5.1.0" - "postcss-discard-empty" "^5.1.1" - "postcss-discard-overridden" "^5.1.0" - "postcss-merge-longhand" "^5.1.6" - "postcss-merge-rules" "^5.1.2" - "postcss-minify-font-values" "^5.1.0" - "postcss-minify-gradients" "^5.1.1" - "postcss-minify-params" "^5.1.3" - "postcss-minify-selectors" "^5.2.1" - "postcss-normalize-charset" "^5.1.0" - "postcss-normalize-display-values" "^5.1.0" - "postcss-normalize-positions" "^5.1.1" - "postcss-normalize-repeat-style" "^5.1.1" - "postcss-normalize-string" "^5.1.0" - "postcss-normalize-timing-functions" "^5.1.0" - "postcss-normalize-unicode" "^5.1.0" - "postcss-normalize-url" "^5.1.0" - "postcss-normalize-whitespace" "^5.1.1" - "postcss-ordered-values" "^5.1.3" - "postcss-reduce-initial" "^5.1.0" - "postcss-reduce-transforms" "^5.1.0" - "postcss-svgo" "^5.1.0" - "postcss-unique-selectors" "^5.1.1" - -"cssnano-utils@^3.1.0": - "integrity" "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" - "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" - "version" "3.1.0" - -"cssnano@^5.1.8": - "integrity" "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz" - "version" "5.1.13" - dependencies: - "cssnano-preset-default" "^5.2.12" - "lilconfig" "^2.0.3" - "yaml" "^1.10.2" - -"csso@^4.2.0": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "css-tree" "^1.1.2" - -"csstype@^3.0.2", "csstype@^3.0.6": - "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" - "version" "3.1.1" - -"custom-event@~1.0.0": - "integrity" "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==" - "resolved" "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz" - "version" "1.0.1" - -"dargs@^7.0.0": - "integrity" "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==" - "resolved" "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" - "version" "7.0.0" - -"date-format@^4.0.14": - "integrity" "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==" - "resolved" "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz" - "version" "4.0.14" - -"dateformat@^3.0.0": - "integrity" "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" - "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" - "version" "3.0.3" - -"debug@^2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4", "debug@~4.3.1", "debug@~4.3.2", "debug@4.3.4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"decamelize-keys@^1.1.0": - "integrity" "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==" - "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "decamelize" "^1.1.0" - "map-obj" "^1.0.0" - -"decamelize@^1.1.0", "decamelize@^1.2.0": - "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" - -"decamelize@^4.0.0": - "integrity" "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - "version" "4.0.0" - -"deep-eql@^3.0.1": - "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==" - "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "type-detect" "^4.0.0" - -"deep-equal@^1.1.1": - "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "is-arguments" "^1.0.4" - "is-date-object" "^1.0.1" - "is-regex" "^1.0.4" - "object-is" "^1.0.1" - "object-keys" "^1.1.1" - "regexp.prototype.flags" "^1.2.0" - -"deep-is@^0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@4.2.2": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"default-gateway@^6.0.3": - "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "execa" "^5.0.0" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-properties@^1.1.3", "define-properties@^1.1.4": - "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detect-node@^2.0.4": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"di@^0.0.1": - "integrity" "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==" - "resolved" "https://registry.npmjs.org/di/-/di-0.0.1.tgz" - "version" "0.0.1" - -"diff@^5.0.0", "diff@5.0.0": - "integrity" "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" - "resolved" "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" - "version" "5.0.0" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"dlv@1.1.3": - "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - "version" "1.1.3" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^5.2.2": - "integrity" "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" - "version" "5.4.0" - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -"doctrine@^2.1.0": - "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "esutils" "^2.0.2" - -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "esutils" "^2.0.2" - -"dom-accessibility-api@^0.5.6": - "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" - "version" "0.5.14" - -"dom-align@^1.7.0": - "integrity" "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" - "resolved" "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz" - "version" "1.12.3" - -"dom-converter@^0.2.0": - "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" - "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "utila" "~0.4" - -"dom-helpers@^3.4.0": - "integrity" "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==" - "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz" - "version" "3.4.0" - dependencies: - "@babel/runtime" "^7.1.2" - -"dom-serialize@^2.2.1": - "integrity" "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==" - "resolved" "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "custom-event" "~1.0.0" - "ent" "~2.2.0" - "extend" "^3.0.0" - "void-elements" "^2.0.0" - -"dom-serializer@^1.0.1": - "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" - -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" - -"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": - "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "domelementtype" "^2.2.0" - -"domutils@^2.5.2", "domutils@^2.8.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" - -"dot-case@^3.0.4": - "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"dot-prop@^5.1.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "is-obj" "^2.0.0" - -"dset@3.1.2": - "integrity" "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==" - "resolved" "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz" - "version" "3.1.2" - -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"electron-to-chromium@^1.4.251": - "integrity" "sha512-KS6gPPGNrzpVv9HzFVq+Etd0AjZEPr5pvaTBn2yD6KV4+cKW4I0CJoJNgmTG6gUQPAMZ4wIPtcOuoou3qFAZCA==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.272.tgz" - "version" "1.4.272" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"engine.io-parser@~5.0.3": - "integrity" "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" - "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz" - "version" "5.0.4" - -"engine.io@~6.2.0": - "integrity" "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==" - "resolved" "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "@types/cookie" "^0.4.1" - "@types/cors" "^2.8.12" - "@types/node" ">=10.0.0" - "accepts" "~1.3.4" - "base64id" "2.0.0" - "cookie" "~0.4.1" - "cors" "~2.8.5" - "debug" "~4.3.1" - "engine.io-parser" "~5.0.3" - "ws" "~8.2.3" - -"enhanced-resolve@^5.10.0": - "integrity" "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" - "version" "5.10.0" - dependencies: - "graceful-fs" "^4.2.4" - "tapable" "^2.2.0" - -"enquirer@2.3.6": - "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" - "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - "version" "2.3.6" - dependencies: - "ansi-colors" "^4.1.1" - -"ent@~2.2.0": - "integrity" "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" - "resolved" "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" - "version" "2.2.0" - -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"error-stack-parser@^2.0.6": - "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "stackframe" "^1.3.4" - -"es-abstract@^1.19.0", "es-abstract@^1.19.1", "es-abstract@^1.19.2", "es-abstract@^1.19.5", "es-abstract@^1.20.0": - "integrity" "sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.3.tgz" - "version" "1.20.3" - dependencies: - "call-bind" "^1.0.2" - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "function.prototype.name" "^1.1.5" - "get-intrinsic" "^1.1.3" - "get-symbol-description" "^1.0.0" - "has" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "is-callable" "^1.2.6" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-weakref" "^1.0.2" - "object-inspect" "^1.12.2" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "safe-regex-test" "^1.0.0" - "string.prototype.trimend" "^1.0.5" - "string.prototype.trimstart" "^1.0.5" - "unbox-primitive" "^1.0.2" - -"es-module-lexer@^0.9.0": - "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" - "version" "0.9.3" - -"es-shim-unscopables@^1.0.0": - "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" - "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has" "^1.0.3" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"esbuild-linux-64@0.15.5": - "integrity" "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==" - "resolved" "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz" - "version" "0.15.5" - -"esbuild@0.15.5": - "integrity" "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==" - "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz" - "version" "0.15.5" - optionalDependencies: - "@esbuild/linux-loong64" "0.15.5" - "esbuild-android-64" "0.15.5" - "esbuild-android-arm64" "0.15.5" - "esbuild-darwin-64" "0.15.5" - "esbuild-darwin-arm64" "0.15.5" - "esbuild-freebsd-64" "0.15.5" - "esbuild-freebsd-arm64" "0.15.5" - "esbuild-linux-32" "0.15.5" - "esbuild-linux-64" "0.15.5" - "esbuild-linux-arm" "0.15.5" - "esbuild-linux-arm64" "0.15.5" - "esbuild-linux-mips64le" "0.15.5" - "esbuild-linux-ppc64le" "0.15.5" - "esbuild-linux-riscv64" "0.15.5" - "esbuild-linux-s390x" "0.15.5" - "esbuild-netbsd-64" "0.15.5" - "esbuild-openbsd-64" "0.15.5" - "esbuild-sunos-64" "0.15.5" - "esbuild-windows-32" "0.15.5" - "esbuild-windows-64" "0.15.5" - "esbuild-windows-arm64" "0.15.5" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.2": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^4.0.0", "escape-string-regexp@4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" - -"eslint-config-prettier@8.5.0": - "integrity" "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==" - "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" - "version" "8.5.0" - -"eslint-config-standard-with-typescript@22.0.0": - "integrity" "sha512-VA36U7UlFpwULvkdnh6MQj5GAV2Q+tT68ALLAwJP0ZuNXU2m0wX07uxX4qyLRdHgSzH4QJ73CveKBuSOYvh7vQ==" - "resolved" "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-22.0.0.tgz" - "version" "22.0.0" - dependencies: - "@typescript-eslint/parser" "^5.0.0" - "eslint-config-standard" "17.0.0" - -"eslint-config-standard@17.0.0": - "integrity" "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==" - "resolved" "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz" - "version" "17.0.0" - -"eslint-import-resolver-node@^0.3.6": - "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - "version" "0.3.6" - dependencies: - "debug" "^3.2.7" - "resolve" "^1.20.0" - -"eslint-module-utils@^2.7.3": - "integrity" "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==" - "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" - "version" "2.7.4" - dependencies: - "debug" "^3.2.7" - -"eslint-plugin-chai-friendly@0.7.2": - "integrity" "sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz" - "version" "0.7.2" - -"eslint-plugin-cypress@2.12.1": - "integrity" "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz" - "version" "2.12.1" - dependencies: - "globals" "^11.12.0" - -"eslint-plugin-es@^4.1.0": - "integrity" "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "eslint-utils" "^2.0.0" - "regexpp" "^3.0.0" - -"eslint-plugin-import@2.26.0": - "integrity" "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" - "version" "2.26.0" - dependencies: - "array-includes" "^3.1.4" - "array.prototype.flat" "^1.2.5" - "debug" "^2.6.9" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.6" - "eslint-module-utils" "^2.7.3" - "has" "^1.0.3" - "is-core-module" "^2.8.1" - "is-glob" "^4.0.3" - "minimatch" "^3.1.2" - "object.values" "^1.1.5" - "resolve" "^1.22.0" - "tsconfig-paths" "^3.14.1" - -"eslint-plugin-n@15.2.5": - "integrity" "sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz" - "version" "15.2.5" - dependencies: - "builtins" "^5.0.1" - "eslint-plugin-es" "^4.1.0" - "eslint-utils" "^3.0.0" - "ignore" "^5.1.1" - "is-core-module" "^2.10.0" - "minimatch" "^3.1.2" - "resolve" "^1.22.1" - "semver" "^7.3.7" - -"eslint-plugin-no-only-tests@3.0.0": - "integrity" "sha512-I0PeXMs1vu21ap45hey4HQCJRqpcoIvGcNTPJe+UhUm8TwjQ6//mCrDqF8q0WS6LgmRDwQ4ovQej0AQsAHb5yg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.0.0.tgz" - "version" "3.0.0" - -"eslint-plugin-prettier@4.2.1": - "integrity" "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "prettier-linter-helpers" "^1.0.0" - -"eslint-plugin-promise@6.0.0": - "integrity" "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz" - "version" "6.0.0" - -"eslint-plugin-react-hooks@4.6.0": - "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" - "version" "4.6.0" - -"eslint-plugin-react@7.30.1": - "integrity" "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz" - "version" "7.30.1" - dependencies: - "array-includes" "^3.1.5" - "array.prototype.flatmap" "^1.3.0" - "doctrine" "^2.1.0" - "estraverse" "^5.3.0" - "jsx-ast-utils" "^2.4.1 || ^3.0.0" - "minimatch" "^3.1.2" - "object.entries" "^1.1.5" - "object.fromentries" "^2.0.5" - "object.hasown" "^1.1.1" - "object.values" "^1.1.5" - "prop-types" "^15.8.1" - "resolve" "^2.0.0-next.3" - "semver" "^6.3.0" - "string.prototype.matchall" "^4.0.7" - -"eslint-plugin-simple-import-sort@7.0.0": - "integrity" "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz" - "version" "7.0.0" - -"eslint-rule-composer@^0.3.0": - "integrity" "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==" - "resolved" "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" - "version" "0.3.0" - -"eslint-scope@^5.1.1", "eslint-scope@5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" - -"eslint-scope@^7.1.1": - "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - "version" "7.1.1" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^5.2.0" - -"eslint-utils@^2.0.0": - "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "eslint-visitor-keys" "^1.1.0" - -"eslint-utils@^3.0.0": - "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "eslint-visitor-keys" "^2.0.0" - -"eslint-visitor-keys@^1.1.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" - -"eslint-visitor-keys@^2.0.0", "eslint-visitor-keys@^2.1.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" - -"eslint-visitor-keys@^3.3.0": - "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - "version" "3.3.0" - -"eslint@8.20.0": - "integrity" "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz" - "version" "8.20.0" - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" - "ajv" "^6.10.0" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.3.2" - "doctrine" "^3.0.0" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^7.1.1" - "eslint-utils" "^3.0.0" - "eslint-visitor-keys" "^3.3.0" - "espree" "^9.3.2" - "esquery" "^1.4.0" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "functional-red-black-tree" "^1.0.1" - "glob-parent" "^6.0.1" - "globals" "^13.15.0" - "ignore" "^5.2.0" - "import-fresh" "^3.0.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "js-yaml" "^4.1.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.1.2" - "natural-compare" "^1.4.0" - "optionator" "^0.9.1" - "regexpp" "^3.2.0" - "strip-ansi" "^6.0.1" - "strip-json-comments" "^3.1.0" - "text-table" "^0.2.0" - "v8-compile-cache" "^2.0.3" - -"espree@^9.3.2", "espree@^9.4.0": - "integrity" "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" - "version" "9.4.0" - dependencies: - "acorn" "^8.8.0" - "acorn-jsx" "^5.3.2" - "eslint-visitor-keys" "^3.3.0" - -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esquery@^1.4.0": - "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "estraverse" "^5.1.0" - -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"eventemitter3@^4.0.0", "eventemitter3@^4.0.4": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"events@^3.2.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"execa@^5.0.0", "execa@5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" - -"express@^4.17.3": - "integrity" "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.1.tgz" - "version" "4.18.1" - dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.0" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.10.3" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"extend@^3.0.0": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" - -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-diff@^1.1.2": - "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" - "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - "version" "1.2.0" - -"fast-glob@^3.1.1", "fast-glob@^3.2.11", "fast-glob@^3.2.9", "fast-glob@3.2.11": - "integrity" "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" - "version" "3.2.11" - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - "glob-parent" "^5.1.2" - "merge2" "^1.3.0" - "micromatch" "^4.0.4" - -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-levenshtein@^2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" - -"fast-shallow-equal@^1.0.0": - "integrity" "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" - "resolved" "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz" - "version" "1.0.0" - -"fastest-levenshtein@^1.0.16": - "integrity" "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" - "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" - "version" "1.0.16" - -"fastest-stable-stringify@^2.0.2": - "integrity" "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==" - "resolved" "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz" - "version" "2.0.2" - -"fastq@^1.6.0": - "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "reusify" "^1.0.4" - -"faye-websocket@^0.11.3": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" - dependencies: - "websocket-driver" ">=0.5.1" - -"fbemitter@^3.0.0": - "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" - "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "fbjs" "^3.0.0" - -"fbjs-css-vars@^1.0.0": - "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - "version" "1.0.2" - -"fbjs@^3.0.0", "fbjs@^3.0.1": - "integrity" "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==" - "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "cross-fetch" "^3.1.5" - "fbjs-css-vars" "^1.0.0" - "loose-envify" "^1.0.0" - "object-assign" "^4.1.0" - "promise" "^7.1.1" - "setimmediate" "^1.0.5" - "ua-parser-js" "^0.7.30" - -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "flat-cache" "^3.0.4" - -"file-selector@^0.2.2": - "integrity" "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==" - "resolved" "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz" - "version" "0.2.4" - dependencies: - "tslib" "^2.0.3" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"finalhandler@1.1.2": - "integrity" "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "~2.3.0" - "parseurl" "~1.3.3" - "statuses" "~1.5.0" - "unpipe" "~1.0.0" - -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" - -"find-cache-dir@^2.0.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" - -"find-cache-dir@^3.3.1": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" - -"find-free-ports@3.0.0": - "integrity" "sha512-C9XrjG5O1EWPHSjY/hzJaUAoyUQ+KhmiYn0zHohOpScSeWr5TqJu613iIvzI4DnIKpdcBZZ5B4ifiUA10Y2HuA==" - "resolved" "https://registry.npmjs.org/find-free-ports/-/find-free-ports-3.0.0.tgz" - "version" "3.0.0" - -"find-parent-dir@^0.3.0": - "integrity" "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==" - "resolved" "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz" - "version" "0.3.1" - -"find-up@^2.0.0": - "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "locate-path" "^2.0.0" - -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "locate-path" "^3.0.0" - -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"findup@0.1.5": - "integrity" "sha512-Udxo3C9A6alt2GZ2MNsgnIvX7De0V3VGxeP/x98NSVgSlizcDHdmJza61LI7zJy4OEtSiJyE72s0/+tBl5/ZxA==" - "resolved" "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "colors" "~0.6.0-1" - "commander" "~2.1.0" - -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" - -"flat@^5.0.2": - "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - "version" "5.0.2" - -"flatted@^3.1.0", "flatted@^3.2.7": - "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - "version" "3.2.7" - -"flux@^4.0.1": - "integrity" "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==" - "resolved" "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "fbemitter" "^3.0.0" - "fbjs" "^3.0.1" - -"follow-redirects@^1.0.0", "follow-redirects@^1.14.0": - "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - "version" "1.15.2" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fraction.js@^4.2.0": - "integrity" "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" - "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" - "version" "4.2.0" - -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@10.0.1": - "integrity" "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz" - "version" "10.0.1" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-monkey@^1.0.3": - "integrity" "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - "version" "1.0.3" - -"fs-readdir-recursive@^1.1.0": - "integrity" "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - "resolved" "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - "version" "1.1.0" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"function.prototype.name@^1.1.5": - "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - "functions-have-names" "^1.2.2" - -"functional-red-black-tree@^1.0.1": - "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" - -"functions-have-names@^1.2.2": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-func-name@^2.0.0": - "integrity" "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" - "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" - "version" "2.0.0" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": - "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.3" - -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" - -"get-pkg-repo@^4.0.0": - "integrity" "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==" - "resolved" "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - "hosted-git-info" "^4.0.0" - "through2" "^2.0.0" - "yargs" "^16.2.0" - -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"git-raw-commits@^2.0.8": - "integrity" "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==" - "resolved" "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" - "version" "2.0.11" - dependencies: - "dargs" "^7.0.0" - "lodash" "^4.17.15" - "meow" "^8.0.0" - "split2" "^3.0.0" - "through2" "^4.0.0" - -"git-remote-origin-url@^2.0.0": - "integrity" "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==" - "resolved" "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "gitconfiglocal" "^1.0.0" - "pify" "^2.3.0" - -"git-semver-tags@^4.1.1": - "integrity" "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==" - "resolved" "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "meow" "^8.0.0" - "semver" "^6.0.0" - -"git-up@^6.0.0": - "integrity" "sha512-6RUFSNd1c/D0xtGnyWN2sxza2bZtZ/EmI9448n6rCZruFwV/ezeEn2fJP7XnUQGwf0RAtd/mmUCbtH6JPYA2SA==" - "resolved" "https://registry.npmjs.org/git-up/-/git-up-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "is-ssh" "^1.4.0" - "parse-url" "^7.0.2" - -"git-url-parse@12.0.0": - "integrity" "sha512-I6LMWsxV87vysX1WfsoglXsXg6GjQRKq7+Dgiseo+h0skmp5Hp2rzmcEIRQot9CPA+uzU7x1x7jZdqvTFGnB+Q==" - "resolved" "https://registry.npmjs.org/git-url-parse/-/git-url-parse-12.0.0.tgz" - "version" "12.0.0" - dependencies: - "git-up" "^6.0.0" - -"gitconfiglocal@^1.0.0": - "integrity" "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==" - "resolved" "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "ini" "^1.3.2" - -"glob-parent@^5.1.2", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-parent@^6.0.1": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "is-glob" "^4.0.3" - -"glob-to-regexp@^0.4.1": - "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - "version" "0.4.1" - -"glob@^7.1.3": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.4": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.7": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.2.0": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@7.2.0": - "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@8.0.3": - "integrity" "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==" - "resolved" "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" - "version" "8.0.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^5.0.1" - "once" "^1.3.0" - -"global-modules@^2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "global-prefix" "^3.0.0" - -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" - -"globals@^11.1.0", "globals@^11.12.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globals@^13.15.0": - "integrity" "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" - "version" "13.17.0" - dependencies: - "type-fest" "^0.20.2" - -"globby@^11.1.0": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.2.9" - "ignore" "^5.2.0" - "merge2" "^1.4.1" - "slash" "^3.0.0" - -"globby@11.0.3": - "integrity" "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz" - "version" "11.0.3" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.1.1" - "ignore" "^5.1.4" - "merge2" "^1.3.0" - "slash" "^3.0.0" - -"globjoin@^0.1.4": - "integrity" "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" - "resolved" "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz" - "version" "0.1.4" - -"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"gud@^1.0.0": - "integrity" "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - "resolved" "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz" - "version" "1.0.0" - -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" - -"handlebars@^4.7.7": - "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" - "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - "version" "4.7.7" - dependencies: - "minimist" "^1.2.5" - "neo-async" "^2.6.0" - "source-map" "^0.6.1" - "wordwrap" "^1.0.0" - optionalDependencies: - "uglify-js" "^3.1.4" - -"hard-rejection@^2.1.0": - "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" - "version" "2.1.0" - -"has-ansi@^2.0.0": - "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==" - "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ansi-regex" "^2.0.0" - -"has-bigints@^1.0.1", "has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-intrinsic" "^1.1.1" - -"has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"he@^1.2.0", "he@1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"history@3.3.0": - "integrity" "sha512-ABLnJwKEZGXGqWsXaKYD8NNle49ZbKs1WEBlxrFsQ8dIudZpO5NJaH8WJOqh5lXVhAq7bHksfirrobBmrT7qBw==" - "resolved" "https://registry.npmjs.org/history/-/history-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "invariant" "^2.2.1" - "loose-envify" "^1.2.0" - "query-string" "^4.2.2" - "warning" "^3.0.0" - -"hoist-non-react-statics@^3.3.1", "hoist-non-react-statics@3.3.2": - "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" - "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "react-is" "^16.7.0" - -"hosted-git-info@^2.1.4": - "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - "version" "2.8.9" - -"hosted-git-info@^4.0.0", "hosted-git-info@^4.0.1": - "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "lru-cache" "^6.0.0" - -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" - dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" - -"html-entities@^2.1.0", "html-entities@^2.3.2": - "integrity" "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" - "version" "2.3.3" - -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" - -"html-minifier-terser@^6.0.2": - "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "camel-case" "^4.1.2" - "clean-css" "^5.2.2" - "commander" "^8.3.0" - "he" "^1.2.0" - "param-case" "^3.0.4" - "relateurl" "^0.2.7" - "terser" "^5.10.0" - -"html-tags@^3.2.0": - "integrity" "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==" - "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz" - "version" "3.2.0" - -"html-webpack-plugin@5.5.0": - "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" - -"htmlparser2@^6.0.0", "htmlparser2@^6.1.0": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" - -"htmr@1.0.0": - "integrity" "sha512-lEEVDMOwOhyqIdLx5caDxKP5yqt5CODI/e2cWrSOmh/3OGzycayLBBlFLozV1BStH94KaUnrTOzk8sEW4Xpe1g==" - "resolved" "https://registry.npmjs.org/htmr/-/htmr-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "html-entities" "^2.1.0" - "htmlparser2" "^6.0.0" - -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-middleware@^2.0.3": - "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - "version" "2.0.6" - dependencies: - "@types/http-proxy" "^1.17.8" - "http-proxy" "^1.18.1" - "is-glob" "^4.0.1" - "is-plain-obj" "^3.0.0" - "micromatch" "^4.0.2" - -"http-proxy@^1.18.1": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" - dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" - -"https-browserify@1.0.0": - "integrity" "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"hyphenate-style-name@^1.0.2": - "integrity" "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - "resolved" "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" - "version" "1.0.4" - -"iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"icss-utils@^5.0.0", "icss-utils@^5.1.0": - "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - "version" "5.1.0" - -"ieee754@^1.2.1": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"ignore@^5.1.1", "ignore@^5.1.4", "ignore@^5.2.0": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" - -"imask@3.4.0": - "integrity" "sha512-sPiKtnn7WVc9x8W64rsiaBGzNDGI+cNYL/ZOpQoFryh46tj5zkAMG8pGjVodS4cDqn+iL8D4neRCTPtd5leJrg==" - "resolved" "https://registry.npmjs.org/imask/-/imask-3.4.0.tgz" - "version" "3.4.0" - -"immutable@^4.0.0": - "integrity" "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" - "version" "4.1.0" - -"import-fresh@^3.0.0", "import-fresh@^3.1.0", "import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-lazy@^4.0.0": - "integrity" "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" - "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" - "version" "4.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.3": - "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"ini@^1.3.2", "ini@^1.3.5": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - -"inline-style-prefixer@^6.0.0": - "integrity" "sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ==" - "resolved" "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "css-in-js-utils" "^2.0.0" - -"internal-slot@^1.0.3": - "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "get-intrinsic" "^1.1.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" - -"intersection-observer@0.10.0": - "integrity" "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==" - "resolved" "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz" - "version" "0.10.0" - -"invariant@^2.2.1": - "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" - "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - "version" "2.2.4" - dependencies: - "loose-envify" "^1.0.0" - -"ipaddr.js@^2.0.1": - "integrity" "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" - "version" "2.0.1" - -"ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-arrayish@^0.3.1": - "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" - "version" "0.3.2" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.6": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-core-module@^2.10.0", "is-core-module@^2.5.0", "is-core-module@^2.8.1", "is-core-module@^2.9.0": - "integrity" "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" - "version" "2.10.0" - dependencies: - "has" "^1.0.3" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-generator-function@^1.0.7": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" - -"is-plain-obj@^1.1.0": - "integrity" "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - "version" "1.1.0" - -"is-plain-obj@^2.1.0": - "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - "version" "2.1.0" - -"is-plain-obj@^3.0.0": - "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - "version" "3.0.0" - -"is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-plain-object@^5.0.0": - "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - "version" "5.0.0" - -"is-regex@^1.0.4", "is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-ssh@^1.4.0": - "integrity" "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==" - "resolved" "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "protocols" "^2.0.1" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-text-path@^1.0.1": - "integrity" "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==" - "resolved" "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "text-extensions" "^1.0.0" - -"is-typed-array@^1.1.3", "is-typed-array@^1.1.9": - "integrity" "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz" - "version" "1.1.9" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-abstract" "^1.20.0" - "for-each" "^0.3.3" - "has-tostringtag" "^1.0.0" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"isarray@~1.0.0": - "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isarray@0.0.1": - "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - "version" "0.0.1" - -"isbinaryfile@^4.0.8": - "integrity" "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" - "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" - "version" "4.0.10" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"isomorphic-fetch@3": - "integrity" "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==" - "resolved" "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "node-fetch" "^2.6.1" - "whatwg-fetch" "^3.4.1" - -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^4.0.0": - "integrity" "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.0.0" - "semver" "^6.3.0" - -"istanbul-lib-instrument@^5.1.0": - "integrity" "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^6.3.0" - -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^3.0.0" - "supports-color" "^7.1.0" - -"istanbul-lib-source-maps@^4.0.1": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" - -"istanbul-reports@^3.0.5": - "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" - -"jest-worker@^27.4.5", "jest-worker@^27.5.1": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"js-cookie@^2.2.1": - "integrity" "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" - "resolved" "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz" - "version" "2.2.1" - -"js-cookie@2.1.4": - "integrity" "sha512-ACJgj9MPgn/ac4b55OZFbPY/u57HTSkOD65ScYN1sh/js0pQP7WQh7/kFt6/NxBOHKlwVsxZWliVo7CkxF0Cjg==" - "resolved" "https://registry.npmjs.org/js-cookie/-/js-cookie-2.1.4.tgz" - "version" "2.1.4" - -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"js-yaml@4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-parse-better-errors@^1.0.1": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" - -"json-stringify-safe@^5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "minimist" "^1.2.0" - -"json5@^2.1.2", "json5@^2.2.1": - "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - "version" "2.2.1" - -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "universalify" "^2.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"jsonparse@^1.2.0": - "integrity" "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" - "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - "version" "1.3.1" - -"JSONStream@^1.0.4": - "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" - "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "jsonparse" "^1.2.0" - "through" ">=2.2.7 <3" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" - "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - "version" "3.3.3" - dependencies: - "array-includes" "^3.1.5" - "object.assign" "^4.1.3" - -"just-camel-case@4.0.2": - "integrity" "sha512-df6QI/EIq+6uHe/wtaa9Qq7/pp4wr4pJC/r1+7XhVL6m5j03G6h9u9/rIZr8rDASX7CxwDPQnZjffCo2e6PRLw==" - "resolved" "https://registry.npmjs.org/just-camel-case/-/just-camel-case-4.0.2.tgz" - "version" "4.0.2" - -"just-capitalize@1.0.0": - "integrity" "sha512-b3byxrtsLyeOJCb/BJXxvnwnPyj7tTTfBLb3KmFekAEYleZ2yp/maEDWU/NCkgZ43rm4r8jOqttb5AOkKZEkYA==" - "resolved" "https://registry.npmjs.org/just-capitalize/-/just-capitalize-1.0.0.tgz" - "version" "1.0.0" - -"just-debounce-it@1.5.0": - "integrity" "sha512-itSWJS5d2DTSCizVJ2Z0Djx/dGmUGfZe7WNfUfVP23+htGcIcPHbEjL4eB8ljojTs/+oYwLexImRRCP0A2WXjA==" - "resolved" "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.5.0.tgz" - "version" "1.5.0" - -"just-extend@^4.0.2": - "integrity" "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==" - "resolved" "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz" - "version" "4.2.1" - -"just-kebab-case@1.1.0": - "integrity" "sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA==" - "resolved" "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-1.1.0.tgz" - "version" "1.1.0" - -"just-pascal-case@1.1.0": - "integrity" "sha512-9WrLmpZ2wbt/k9ZAwp8MMc9/RqPRzUZZ+szWmAGFkas4+/z//+xYN8iUOBR2gmpiH8X5rJ+/yMvNFalMSKwmyg==" - "resolved" "https://registry.npmjs.org/just-pascal-case/-/just-pascal-case-1.1.0.tgz" - "version" "1.1.0" - -"karma-chrome-launcher@3.1.1": - "integrity" "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==" - "resolved" "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "which" "^1.2.1" - -"karma-coverage@2.2.0": - "integrity" "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==" - "resolved" "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "istanbul-lib-coverage" "^3.2.0" - "istanbul-lib-instrument" "^5.1.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.1" - "istanbul-reports" "^3.0.5" - "minimatch" "^3.0.4" - -"karma-firefox-launcher@2.1.2": - "integrity" "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==" - "resolved" "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "is-wsl" "^2.2.0" - "which" "^2.0.1" - -"karma-mocha@2.0.1": - "integrity" "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==" - "resolved" "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "minimist" "^1.2.3" - -"karma-spec-reporter@0.0.34": - "integrity" "sha512-l5H/Nh9q4g2Ysx2CDU2m+NIPyLQpCVbk9c4V02BTZHw3NM6RO1dq3eRpKXCSSdPt4RGfhHk8jDt3XYkGp+5PWg==" - "resolved" "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.34.tgz" - "version" "0.0.34" - dependencies: - "colors" "1.4.0" - -"karma-webpack@5.0.0": - "integrity" "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==" - "resolved" "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "glob" "^7.1.3" - "minimatch" "^3.0.4" - "webpack-merge" "^4.1.5" - -"karma@6.4.0": - "integrity" "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==" - "resolved" "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz" - "version" "6.4.0" - dependencies: - "@colors/colors" "1.5.0" - "body-parser" "^1.19.0" - "braces" "^3.0.2" - "chokidar" "^3.5.1" - "connect" "^3.7.0" - "di" "^0.0.1" - "dom-serialize" "^2.2.1" - "glob" "^7.1.7" - "graceful-fs" "^4.2.6" - "http-proxy" "^1.18.1" - "isbinaryfile" "^4.0.8" - "lodash" "^4.17.21" - "log4js" "^6.4.1" - "mime" "^2.5.2" - "minimatch" "^3.0.4" - "mkdirp" "^0.5.5" - "qjobs" "^1.2.0" - "range-parser" "^1.2.1" - "rimraf" "^3.0.2" - "socket.io" "^4.4.1" - "source-map" "^0.6.1" - "tmp" "^0.2.1" - "ua-parser-js" "^0.7.30" - "yargs" "^16.1.1" - -"kind-of@^6.0.2", "kind-of@^6.0.3": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"klona@^2.0.5": - "integrity" "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" - "version" "2.0.5" - -"known-css-properties@^0.25.0": - "integrity" "sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==" - "resolved" "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.25.0.tgz" - "version" "0.25.0" - -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" - -"lilconfig@^2.0.3": - "integrity" "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" - "version" "2.0.6" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" - -"load-json-file@^4.0.0": - "integrity" "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^4.0.0" - "pify" "^3.0.0" - "strip-bom" "^3.0.0" - -"loader-runner@^4.2.0": - "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - "version" "4.3.0" - -"loader-utils@^2.0.0": - "integrity" "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"loader-utils@3.2.0": - "integrity" "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz" - "version" "3.2.0" - -"locate-path@^2.0.0": - "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "p-locate" "^2.0.0" - "path-exists" "^3.0.0" - -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash.curry@^4.0.1": - "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" - "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" - "version" "4.1.1" - -"lodash.debounce@^4.0.8", "lodash.debounce@4", "lodash.debounce@4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.flow@^3.3.0": - "integrity" "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" - "resolved" "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" - "version" "3.5.0" - -"lodash.get@^4.4.2": - "integrity" "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - "resolved" "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" - "version" "4.4.2" - -"lodash.isequal@4.5": - "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - "version" "4.5.0" - -"lodash.ismatch@^4.4.0": - "integrity" "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" - "resolved" "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" - "version" "4.4.0" - -"lodash.memoize@^4.1.2": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.throttle@4.1.1": - "integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" - "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" - "version" "4.1.1" - -"lodash.truncate@^4.4.2": - "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - "version" "4.4.2" - -"lodash.uniq@^4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash@^4.17.15", "lodash@^4.17.20", "lodash@^4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-symbols@4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"log4js@^6.4.1": - "integrity" "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==" - "resolved" "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz" - "version" "6.7.0" - dependencies: - "date-format" "^4.0.14" - "debug" "^4.3.4" - "flatted" "^3.2.7" - "rfdc" "^1.3.0" - "streamroller" "^3.1.3" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.2.0", "loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"lorem-ipsum@2.0.4": - "integrity" "sha512-TD+ERYfxjYiUfOyaKU6OH4euumNVeKoo3BxIhokb7bGmoCULsME48onF9NVxYK3CU1z9L5ALnkDkW8lIkHvMNQ==" - "resolved" "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "commander" "^2.17.1" - -"loupe@^2.3.1": - "integrity" "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==" - "resolved" "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" - "version" "2.3.4" - dependencies: - "get-func-name" "^2.0.0" - -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^2.0.3" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"lz-string@^1.4.4": - "integrity" "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" - "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" - "version" "1.4.4" - -"make-dir@^2.0.0", "make-dir@^2.1.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pify" "^4.0.1" - "semver" "^5.6.0" - -"make-dir@^3.0.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"make-dir@^3.0.2", "make-dir@^3.1.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"map-obj@^1.0.0": - "integrity" "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - "version" "1.0.1" - -"map-obj@^4.0.0": - "integrity" "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" - "version" "4.3.0" - -"mathml-tag-names@^2.1.3": - "integrity" "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==" - "resolved" "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz" - "version" "2.1.3" - -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" - -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"memfs@^3.4.3": - "integrity" "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==" - "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz" - "version" "3.4.7" - dependencies: - "fs-monkey" "^1.0.3" - -"memoize-one@^5.1.1": - "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - "version" "5.2.1" - -"meow@^8.0.0": - "integrity" "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==" - "resolved" "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" - "version" "8.1.2" - dependencies: - "@types/minimist" "^1.2.0" - "camelcase-keys" "^6.2.2" - "decamelize-keys" "^1.1.0" - "hard-rejection" "^2.1.0" - "minimist-options" "4.1.0" - "normalize-package-data" "^3.0.0" - "read-pkg-up" "^7.0.1" - "redent" "^3.0.0" - "trim-newlines" "^3.0.0" - "type-fest" "^0.18.0" - "yargs-parser" "^20.2.3" - -"meow@^9.0.0": - "integrity" "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==" - "resolved" "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" - "version" "9.0.0" - dependencies: - "@types/minimist" "^1.2.0" - "camelcase-keys" "^6.2.2" - "decamelize" "^1.2.0" - "decamelize-keys" "^1.1.0" - "hard-rejection" "^2.1.0" - "minimist-options" "4.1.0" - "normalize-package-data" "^3.0.0" - "read-pkg-up" "^7.0.1" - "redent" "^3.0.0" - "trim-newlines" "^3.0.0" - "type-fest" "^0.18.0" - "yargs-parser" "^20.2.3" - -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5", "micromatch@4.0.5": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mime@^2.5.2": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"min-indent@^1.0.0": - "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - "version" "1.0.1" - -"mini-css-extract-plugin@2.6.1": - "integrity" "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz" - "version" "2.6.1" - dependencies: - "schema-utils" "^4.0.0" - -"minimalistic-assert@^1.0.0": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.2", "minimatch@^3.0.4", "minimatch@^3.1.1", "minimatch@^3.1.2": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@^5.0.1": - "integrity" "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "brace-expansion" "^2.0.1" - -"minimatch@5.0.1": - "integrity" "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "brace-expansion" "^2.0.1" - -"minimist-options@4.1.0": - "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==" - "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "arrify" "^1.0.1" - "is-plain-obj" "^1.1.0" - "kind-of" "^6.0.3" - -"minimist@^1.2.0", "minimist@^1.2.3", "minimist@^1.2.5", "minimist@^1.2.6": - "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - "version" "1.2.6" - -"mkdirp@^0.5.5": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"mocha@10.0.0": - "integrity" "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==" - "resolved" "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz" - "version" "10.0.0" - dependencies: - "@ungap/promise-all-settled" "1.1.2" - "ansi-colors" "4.1.1" - "browser-stdout" "1.3.1" - "chokidar" "3.5.3" - "debug" "4.3.4" - "diff" "5.0.0" - "escape-string-regexp" "4.0.0" - "find-up" "5.0.0" - "glob" "7.2.0" - "he" "1.2.0" - "js-yaml" "4.1.0" - "log-symbols" "4.1.0" - "minimatch" "5.0.1" - "ms" "2.1.3" - "nanoid" "3.3.3" - "serialize-javascript" "6.0.0" - "strip-json-comments" "3.1.1" - "supports-color" "8.1.1" - "workerpool" "6.2.1" - "yargs" "16.2.0" - "yargs-parser" "20.2.4" - "yargs-unparser" "2.0.0" - -"modify-values@^1.0.0": - "integrity" "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" - "resolved" "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" - "version" "1.0.1" - -"ms@^2.1.1", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"multicast-dns@^7.2.5": - "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - "version" "7.2.5" - dependencies: - "dns-packet" "^5.2.2" - "thunky" "^1.0.2" - -"nano-css@^5.2.1", "nano-css@^5.3.1": - "integrity" "sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==" - "resolved" "https://registry.npmjs.org/nano-css/-/nano-css-5.3.5.tgz" - "version" "5.3.5" - dependencies: - "css-tree" "^1.1.2" - "csstype" "^3.0.6" - "fastest-stable-stringify" "^2.0.2" - "inline-style-prefixer" "^6.0.0" - "rtl-css-js" "^1.14.0" - "sourcemap-codec" "^1.4.8" - "stacktrace-js" "^2.0.2" - "stylis" "^4.0.6" - -"nanoid@^3.3.4": - "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - "version" "3.3.4" - -"nanoid@3.3.1": - "integrity" "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" - "version" "3.3.1" - -"nanoid@3.3.3": - "integrity" "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" - "version" "3.3.3" - -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"neo-async@^2.6.0", "neo-async@^2.6.1", "neo-async@^2.6.2": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"nise@^5.1.0": - "integrity" "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==" - "resolved" "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" ">=5" - "@sinonjs/text-encoding" "^0.7.1" - "just-extend" "^4.0.2" - "path-to-regexp" "^1.7.0" - -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" - -"node-dir@^0.1.10": - "integrity" "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==" - "resolved" "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" - "version" "0.1.17" - dependencies: - "minimatch" "^3.0.2" - -"node-fetch@^2.6.1", "node-fetch@2.6.7": - "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - "version" "2.6.7" - dependencies: - "whatwg-url" "^5.0.0" - -"node-forge@^1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" - -"node-releases@^2.0.6": - "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - "version" "2.0.6" - -"normalize-package-data@^2.3.2": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-package-data@^2.5.0": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-package-data@^3.0.0": - "integrity" "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "hosted-git-info" "^4.0.1" - "is-core-module" "^2.5.0" - "semver" "^7.3.4" - "validate-npm-package-license" "^3.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-range@^0.1.2": - "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" - "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - "version" "0.1.2" - -"normalize-url@^6.0.1", "normalize-url@^6.1.0": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"normalize-wheel@^1.0.1": - "integrity" "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" - "resolved" "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz" - "version" "1.0.1" - -"normalize.css@8.0.1": - "integrity" "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" - "resolved" "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz" - "version" "8.0.1" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "boolbase" "^1.0.0" - -"object-assign@^4", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-inspect@^1.12.2", "object-inspect@^1.9.0": - "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - "version" "1.12.2" - -"object-is@^1.0.1": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object.assign@^4.1.0", "object.assign@^4.1.3", "object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" - -"object.entries@^1.1.5": - "integrity" "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"object.fromentries@^2.0.5": - "integrity" "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==" - "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"object.hasown@^1.1.1": - "integrity" "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==" - "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "define-properties" "^1.1.4" - "es-abstract" "^1.19.5" - -"object.values@^1.1.5": - "integrity" "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"on-finished@~2.3.0": - "integrity" "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "ee-first" "1.1.1" - -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "ee-first" "1.1.1" - -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"open@^8.0.9": - "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - "version" "8.4.0" - dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" - -"optionator@^0.9.1": - "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "deep-is" "^0.1.3" - "fast-levenshtein" "^2.0.6" - "levn" "^0.4.1" - "prelude-ls" "^1.2.1" - "type-check" "^0.4.0" - "word-wrap" "^1.2.3" - -"p-finally@^1.0.0": - "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^1.1.0": - "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "p-try" "^1.0.0" - -"p-limit@^2.0.0", "p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^2.0.0": - "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "p-limit" "^1.1.0" - -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-limit" "^2.0.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" - -"p-queue@6.6.2": - "integrity" "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==" - "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" - "version" "6.6.2" - dependencies: - "eventemitter3" "^4.0.4" - "p-timeout" "^3.2.0" - -"p-retry@^4.5.0": - "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - "version" "4.6.2" - dependencies: - "@types/retry" "0.12.0" - "retry" "^0.13.1" - -"p-timeout@^3.2.0": - "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "p-finally" "^1.0.0" - -"p-try@^1.0.0": - "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - "version" "1.0.0" - -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"param-case@^3.0.4": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" - -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "callsites" "^3.0.0" - -"parse-json@^4.0.0": - "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" - -"parse-json@^5.0.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" - -"parse-path@^5.0.0": - "integrity" "sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A==" - "resolved" "https://registry.npmjs.org/parse-path/-/parse-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "protocols" "^2.0.0" - -"parse-url@^7.0.2": - "integrity" "sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg==" - "resolved" "https://registry.npmjs.org/parse-url/-/parse-url-7.0.2.tgz" - "version" "7.0.2" - dependencies: - "is-ssh" "^1.4.0" - "normalize-url" "^6.1.0" - "parse-path" "^5.0.0" - "protocols" "^2.0.1" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"path-exists@^3.0.0": - "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-to-regexp@^1.7.0": - "integrity" "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - "version" "1.8.0" - dependencies: - "isarray" "0.0.1" - -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^3.0.0": - "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "pify" "^3.0.0" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pathval@^1.1.1": - "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" - "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - "version" "1.1.1" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pify@^2.3.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^3.0.0": - "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pirates@^4.0.5": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" - -"pkg-dir@^3.0.0": - "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "find-up" "^3.0.0" - -"pkg-dir@^4.1.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"popper.js@^1.14.4": - "integrity" "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - "resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz" - "version" "1.16.1" - -"postcss-calc@^8.2.3": - "integrity" "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" - "version" "8.2.4" - dependencies: - "postcss-selector-parser" "^6.0.9" - "postcss-value-parser" "^4.2.0" - -"postcss-colormin@^5.3.0": - "integrity" "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "browserslist" "^4.16.6" - "caniuse-api" "^3.0.0" - "colord" "^2.9.1" - "postcss-value-parser" "^4.2.0" - -"postcss-convert-values@^5.1.2": - "integrity" "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "browserslist" "^4.20.3" - "postcss-value-parser" "^4.2.0" - -"postcss-discard-comments@^5.1.2": - "integrity" "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" - "version" "5.1.2" - -"postcss-discard-duplicates@^5.1.0": - "integrity" "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" - "version" "5.1.0" - -"postcss-discard-empty@^5.1.1": - "integrity" "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" - "version" "5.1.1" - -"postcss-discard-overridden@^5.1.0": - "integrity" "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" - "version" "5.1.0" - -"postcss-loader@7.0.1": - "integrity" "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.5" - "semver" "^7.3.7" - -"postcss-media-query-parser@^0.2.3": - "integrity" "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" - "resolved" "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz" - "version" "0.2.3" - -"postcss-merge-longhand@^5.1.6": - "integrity" "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "postcss-value-parser" "^4.2.0" - "stylehacks" "^5.1.0" - -"postcss-merge-rules@^5.1.2": - "integrity" "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "browserslist" "^4.16.6" - "caniuse-api" "^3.0.0" - "cssnano-utils" "^3.1.0" - "postcss-selector-parser" "^6.0.5" - -"postcss-minify-font-values@^5.1.0": - "integrity" "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-minify-gradients@^5.1.1": - "integrity" "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "colord" "^2.9.1" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-minify-params@^5.1.3": - "integrity" "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz" - "version" "5.1.3" - dependencies: - "browserslist" "^4.16.6" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-minify-selectors@^5.2.1": - "integrity" "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "postcss-selector-parser" "^6.0.5" - -"postcss-modules-extract-imports@^3.0.0": - "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - "version" "3.0.0" - -"postcss-modules-local-by-default@^4.0.0": - "integrity" "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "icss-utils" "^5.0.0" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" - -"postcss-modules-scope@^3.0.0": - "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "postcss-selector-parser" "^6.0.4" - -"postcss-modules-values@^4.0.0": - "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "icss-utils" "^5.0.0" - -"postcss-normalize-charset@^5.1.0": - "integrity" "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" - "version" "5.1.0" - -"postcss-normalize-display-values@^5.1.0": - "integrity" "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-positions@^5.1.1": - "integrity" "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-repeat-style@^5.1.1": - "integrity" "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-string@^5.1.0": - "integrity" "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-timing-functions@^5.1.0": - "integrity" "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-unicode@^5.1.0": - "integrity" "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "browserslist" "^4.16.6" - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-url@^5.1.0": - "integrity" "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "normalize-url" "^6.0.1" - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-whitespace@^5.1.1": - "integrity" "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-ordered-values@^5.1.3": - "integrity" "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" - "version" "5.1.3" - dependencies: - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-reduce-initial@^5.1.0": - "integrity" "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "browserslist" "^4.16.6" - "caniuse-api" "^3.0.0" - -"postcss-reduce-transforms@^5.1.0": - "integrity" "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-resolve-nested-selector@^0.1.1": - "integrity" "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" - "resolved" "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz" - "version" "0.1.1" - -"postcss-safe-parser@^6.0.0": - "integrity" "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==" - "resolved" "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz" - "version" "6.0.0" - -"postcss-scss@^4.0.2", "postcss-scss@4.0.4": - "integrity" "sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==" - "resolved" "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.4.tgz" - "version" "4.0.4" - -"postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5", "postcss-selector-parser@^6.0.6", "postcss-selector-parser@^6.0.9": - "integrity" "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" - "version" "6.0.10" - dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" - -"postcss-svgo@^5.1.0": - "integrity" "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - "svgo" "^2.7.0" - -"postcss-unique-selectors@^5.1.1": - "integrity" "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-selector-parser" "^6.0.5" - -"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss@^8.4.13", "postcss@^8.4.16", "postcss@^8.4.7", "postcss@8.4.16": - "integrity" "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz" - "version" "8.4.16" - dependencies: - "nanoid" "^3.3.4" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" - -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" - -"prettier-linter-helpers@^1.0.0": - "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" - "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "fast-diff" "^1.1.2" - -"prettier@2.7.1": - "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" - -"pretty-error@^4.0.0": - "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "lodash" "^4.17.20" - "renderkid" "^3.0.0" - -"pretty-format@^26.6.2": - "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "@jest/types" "^26.6.2" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^17.0.1" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"process@0.11.10": - "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" - -"promise@^7.1.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "asap" "~2.0.3" - -"prop-types@^15.5.8", "prop-types@^15.6.1", "prop-types@^15.6.2", "prop-types@^15.7.2", "prop-types@^15.8.1": - "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - "version" "15.8.1" - dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.13.1" - -"protocols@^2.0.0", "protocols@^2.0.1": - "integrity" "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" - "resolved" "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz" - "version" "2.0.1" - -"proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"punycode@^2.1.0": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"punycode@1.3.2": - "integrity" "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"pure-color@^1.2.0": - "integrity" "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" - "resolved" "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" - "version" "1.3.0" - -"q@^1.5.1": - "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - "version" "1.5.1" - -"qjobs@^1.2.0": - "integrity" "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==" - "resolved" "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz" - "version" "1.2.0" - -"qs@6.10.3": - "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" - "version" "6.10.3" - dependencies: - "side-channel" "^1.0.4" - -"qs@6.7.0": - "integrity" "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" - "version" "6.7.0" - -"query-string@^4.2.2": - "integrity" "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "object-assign" "^4.1.0" - "strict-uri-encode" "^1.0.0" - -"querystring@0.2.0": - "integrity" "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" - -"queue-microtask@^1.2.2": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"quick-lru@^4.0.1": - "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" - "version" "4.0.1" - -"randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"range-parser@^1.2.1", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"rc-align@^4.0.0": - "integrity" "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==" - "resolved" "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz" - "version" "4.0.12" - dependencies: - "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "dom-align" "^1.7.0" - "lodash" "^4.17.21" - "rc-util" "^5.3.0" - "resize-observer-polyfill" "^1.5.1" - -"rc-motion@^2.0.0": - "integrity" "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==" - "resolved" "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz" - "version" "2.6.2" - dependencies: - "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-util" "^5.21.0" - -"rc-slider@9": - "integrity" "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==" - "resolved" "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz" - "version" "9.7.5" - dependencies: - "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-tooltip" "^5.0.1" - "rc-util" "^5.16.1" - "shallowequal" "^1.1.0" - -"rc-tooltip@^5.0.1": - "integrity" "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==" - "resolved" "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz" - "version" "5.2.2" - dependencies: - "@babel/runtime" "^7.11.2" - "classnames" "^2.3.1" - "rc-trigger" "^5.0.0" - -"rc-trigger@^5.0.0": - "integrity" "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==" - "resolved" "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz" - "version" "5.3.1" - dependencies: - "@babel/runtime" "^7.18.3" - "classnames" "^2.2.6" - "rc-align" "^4.0.0" - "rc-motion" "^2.0.0" - "rc-util" "^5.19.2" - -"rc-util@^5.16.1", "rc-util@^5.19.2", "rc-util@^5.21.0", "rc-util@^5.3.0": - "integrity" "sha512-2a4RQnycV9eV7lVZPEJ7QwJRPlZNc06J7CwcwZo4vIHr3PfUqtYgl1EkUV9ETAc6VRRi8XZOMFhYG63whlIC9Q==" - "resolved" "https://registry.npmjs.org/rc-util/-/rc-util-5.24.4.tgz" - "version" "5.24.4" - dependencies: - "@babel/runtime" "^7.18.3" - "react-is" "^16.12.0" - "shallowequal" "^1.1.0" - -"react-base16-styling@^0.6.0": - "integrity" "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==" - "resolved" "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "base16" "^1.0.0" - "lodash.curry" "^4.0.1" - "lodash.flow" "^3.3.0" - "pure-color" "^1.2.0" - -"react-docgen@5.3.1": - "integrity" "sha512-YG7YujVTwlLslr2Ny8nQiUfbBuEwKsLHJdQTSdEga1eY/nRFh/7LjCWUn6ogYhu2WDKg4z+6W/BJtUi+DPUIlA==" - "resolved" "https://registry.npmjs.org/react-docgen/-/react-docgen-5.3.1.tgz" - "version" "5.3.1" - dependencies: - "@babel/core" "^7.7.5" - "@babel/runtime" "^7.7.6" - "ast-types" "^0.14.2" - "commander" "^2.19.0" - "doctrine" "^3.0.0" - "neo-async" "^2.6.1" - "node-dir" "^0.1.10" - "strip-indent" "^3.0.0" - -"react-dom@17": - "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "scheduler" "^0.20.2" - -"react-dropzone@11.5", "react-dropzone@11.5.1": - "integrity" "sha512-eNhttdq4ZDe3eKbXAe54Opt+sbtqmNK5NWTHf/l5d+1TdZqShJ8gMjBrya00qx5zkI//TYxRhu1d9pemTgaWwg==" - "resolved" "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.5.1.tgz" - "version" "11.5.1" - dependencies: - "attr-accept" "^2.2.1" - "file-selector" "^0.2.2" - "prop-types" "^15.7.2" - -"react-easy-crop@3.4.0": - "integrity" "sha512-UMjm3O78Mry3a9d8h4GYqdtnrFX9GupYGTXyHs1VfsgywqbUCT10fEiw6Uz5f3ZIKJ+AgG+t/+njopZsKd4DYA==" - "resolved" "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-3.4.0.tgz" - "version" "3.4.0" - dependencies: - "normalize-wheel" "^1.0.1" - "tslib" "2.0.1" - -"react-extra-prop-types@0": - "integrity" "sha512-y5ZRf8C39LSbGULM5bRgvepHJwQyzbuGNMSIxuS7eXshgr4f1/385oN4PqHPecm6o1CrzIBrH7qVVmftkkuWCA==" - "resolved" "https://registry.npmjs.org/react-extra-prop-types/-/react-extra-prop-types-0.3.1.tgz" - "version" "0.3.1" - -"react-fast-compare@3.2.0": - "integrity" "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" - "version" "3.2.0" - -"react-icons@4": - "integrity" "sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==" - "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.4.0.tgz" - "version" "4.4.0" - -"react-is@^16.12.0", "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^16.13.1", "react-is@^16.7.0": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-is@^17.0.2": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-is@17": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-json-view@1.21.3": - "integrity" "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==" - "resolved" "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" - "version" "1.21.3" - dependencies: - "flux" "^4.0.1" - "react-base16-styling" "^0.6.0" - "react-lifecycles-compat" "^3.0.4" - "react-textarea-autosize" "^8.3.2" - -"react-lifecycles-compat@^3.0.4": - "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - "version" "3.0.4" - -"react-popper@^1.3.6": - "integrity" "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==" - "resolved" "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz" - "version" "1.3.11" - dependencies: - "@babel/runtime" "^7.1.2" - "@hypnosphi/create-react-context" "^0.3.1" - "deep-equal" "^1.1.1" - "popper.js" "^1.14.4" - "prop-types" "^15.6.1" - "typed-styles" "^0.0.7" - "warning" "^4.0.2" - -"react-shallow-renderer@^16.13.1": - "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" - "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - "version" "16.15.0" - dependencies: - "object-assign" "^4.1.1" - "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" - -"react-sortablejs@6.0": - "integrity" "sha512-Aoxl/kuqOA1A2y42Z4E/uZ+eAP2rP11TYM+CZYfs3VoYlh7rzwIdVqrKPibYg1CdzFkJiFb4pYGmMvGKYKv3bA==" - "resolved" "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "classnames" "2.3.1" - "tiny-invariant" "1.2.0" - -"react-stickup@1.12": - "integrity" "sha512-YVLPzj/QlxuRLi4IMzCqU0OY9bol8TwPVCoXKpe4uQzOTazqa9s7TiELlBIjEUk+8sxc+cnZQd+7M09l8RrhHw==" - "resolved" "https://registry.npmjs.org/react-stickup/-/react-stickup-1.12.1.tgz" - "version" "1.12.1" - dependencies: - "react-viewport-utils" "^1.12.1" - -"react-test-renderer@17": - "integrity" "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==" - "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "object-assign" "^4.1.1" - "react-is" "^17.0.2" - "react-shallow-renderer" "^16.13.1" - "scheduler" "^0.20.2" - -"react-textarea-autosize@^8.3.2": - "integrity" "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==" - "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" - "version" "8.3.4" - dependencies: - "@babel/runtime" "^7.10.2" - "use-composed-ref" "^1.3.0" - "use-latest" "^1.2.1" - -"react-transition-group@^2.3.1": - "integrity" "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==" - "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz" - "version" "2.9.0" - dependencies: - "dom-helpers" "^3.4.0" - "loose-envify" "^1.4.0" - "prop-types" "^15.6.2" - "react-lifecycles-compat" "^3.0.4" - -"react-universal-interface@^0.6.2": - "integrity" "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==" - "resolved" "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz" - "version" "0.6.2" - -"react-use@15": - "integrity" "sha512-GeGcrmGuUvZrY5wER3Lnph9DSYhZt5nEjped4eKDq8BRGr2CnLf9bDQWG9RFc7oCPphnscUUdOovzq0E5F2c6Q==" - "resolved" "https://registry.npmjs.org/react-use/-/react-use-15.3.8.tgz" - "version" "15.3.8" - dependencies: - "@types/js-cookie" "2.2.6" - "@xobotyi/scrollbar-width" "1.9.5" - "copy-to-clipboard" "^3.2.0" - "fast-deep-equal" "^3.1.3" - "fast-shallow-equal" "^1.0.0" - "js-cookie" "^2.2.1" - "nano-css" "^5.2.1" - "react-universal-interface" "^0.6.2" - "resize-observer-polyfill" "^1.5.1" - "screenfull" "^5.0.0" - "set-harmonic-interval" "^1.0.1" - "throttle-debounce" "^2.1.0" - "ts-easing" "^0.2.0" - "tslib" "^2.0.0" - -"react-use@17.3.2": - "integrity" "sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw==" - "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz" - "version" "17.3.2" - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - "copy-to-clipboard" "^3.3.1" - "fast-deep-equal" "^3.1.3" - "fast-shallow-equal" "^1.0.0" - "js-cookie" "^2.2.1" - "nano-css" "^5.3.1" - "react-universal-interface" "^0.6.2" - "resize-observer-polyfill" "^1.5.1" - "screenfull" "^5.1.0" - "set-harmonic-interval" "^1.0.1" - "throttle-debounce" "^3.0.1" - "ts-easing" "^0.2.0" - "tslib" "^2.1.0" - -"react-use@17.3": - "integrity" "sha512-2FYRZoNKImSONW8WudJgDj8My0XGqVglkEqTFfY/bQJ0AFgHnaESVCVudK7p86mtMsqjiMYh+noDXJjw05S7uw==" - "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.3.3.tgz" - "version" "17.3.3" - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - "copy-to-clipboard" "^3.3.1" - "fast-deep-equal" "^3.1.3" - "fast-shallow-equal" "^1.0.0" - "js-cookie" "^2.2.1" - "nano-css" "^5.3.1" - "react-universal-interface" "^0.6.2" - "resize-observer-polyfill" "^1.5.1" - "screenfull" "^5.1.0" - "set-harmonic-interval" "^1.0.1" - "throttle-debounce" "^3.0.1" - "ts-easing" "^0.2.0" - "tslib" "^2.1.0" - -"react-use@17.4.0": - "integrity" "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==" - "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz" - "version" "17.4.0" - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - "copy-to-clipboard" "^3.3.1" - "fast-deep-equal" "^3.1.3" - "fast-shallow-equal" "^1.0.0" - "js-cookie" "^2.2.1" - "nano-css" "^5.3.1" - "react-universal-interface" "^0.6.2" - "resize-observer-polyfill" "^1.5.1" - "screenfull" "^5.1.0" - "set-harmonic-interval" "^1.0.1" - "throttle-debounce" "^3.0.1" - "ts-easing" "^0.2.0" - "tslib" "^2.1.0" - -"react-use@17": - "integrity" "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==" - "resolved" "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz" - "version" "17.4.0" - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - "copy-to-clipboard" "^3.3.1" - "fast-deep-equal" "^3.1.3" - "fast-shallow-equal" "^1.0.0" - "js-cookie" "^2.2.1" - "nano-css" "^5.3.1" - "react-universal-interface" "^0.6.2" - "resize-observer-polyfill" "^1.5.1" - "screenfull" "^5.1.0" - "set-harmonic-interval" "^1.0.1" - "throttle-debounce" "^3.0.1" - "ts-easing" "^0.2.0" - "tslib" "^2.1.0" - -"react-viewport-utils@^1.12.1": - "integrity" "sha512-sjj8rNIKSlzwhVf3mJJJl3Z+34ILFrMxCdP2jmzkAGtwXjdvKm2my9lZMV54oh837bUGx3k6XZlF/988Up3GZg==" - "resolved" "https://registry.npmjs.org/react-viewport-utils/-/react-viewport-utils-1.12.1.tgz" - "version" "1.12.1" - dependencies: - "memoize-one" "^5.1.1" - -"react@17": - "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"reactstrap@8.9.0": - "integrity" "sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ==" - "resolved" "https://registry.npmjs.org/reactstrap/-/reactstrap-8.9.0.tgz" - "version" "8.9.0" - dependencies: - "@babel/runtime" "^7.12.5" - "classnames" "^2.2.3" - "prop-types" "^15.5.8" - "react-popper" "^1.3.6" - "react-transition-group" "^2.3.1" - -"read-pkg-up@^3.0.0": - "integrity" "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "find-up" "^2.0.0" - "read-pkg" "^3.0.0" - -"read-pkg-up@^7.0.1": - "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "find-up" "^4.1.0" - "read-pkg" "^5.2.0" - "type-fest" "^0.8.1" - -"read-pkg@^3.0.0": - "integrity" "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "load-json-file" "^4.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^3.0.0" - -"read-pkg@^5.2.0": - "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@types/normalize-package-data" "^2.4.0" - "normalize-package-data" "^2.5.0" - "parse-json" "^5.0.0" - "type-fest" "^0.6.0" - -"readable-stream@^2.0.1": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^3.0.0", "readable-stream@^3.0.6", "readable-stream@^3.5.0", "readable-stream@^3.6.0", "readable-stream@3": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@~2.3.6": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"redent@^3.0.0": - "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" - "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "indent-string" "^4.0.0" - "strip-indent" "^3.0.0" - -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.13.4": - "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" - "version" "0.13.9" - -"regenerator-transform@^0.15.0": - "integrity" "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" - "version" "0.15.0" - dependencies: - "@babel/runtime" "^7.8.4" - -"regexp.prototype.flags@^1.2.0", "regexp.prototype.flags@^1.4.1", "regexp.prototype.flags@^1.4.3": - "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "functions-have-names" "^1.2.2" - -"regexpp@^3.0.0", "regexpp@^3.2.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" - -"regexpu-core@^5.1.0": - "integrity" "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsgen" "^0.7.1" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.0.0" - -"regjsgen@^0.7.1": - "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - "version" "0.7.1" - -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "jsesc" "~0.5.0" - -"relateurl@^0.2.7": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" - -"remove-accents@0.4.2": - "integrity" "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - "resolved" "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz" - "version" "0.4.2" - -"renderkid@^3.0.0": - "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^6.0.1" - -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" - -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resize-observer-polyfill@^1.5.1": - "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - "version" "1.5.1" - -"resize-observer-polyfill@1.5.0": - "integrity" "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg==" - "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz" - "version" "1.5.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve@^1.10.0", "resolve@^1.12.0", "resolve@^1.14.2", "resolve@^1.20.0", "resolve@^1.22.0", "resolve@^1.22.1": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@^2.0.0-next.3": - "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - "version" "2.0.0-next.4" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"retry@^0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" - -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rfdc@^1.3.0": - "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" - "version" "1.3.0" - -"rimraf@^3.0.0", "rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"rtl-css-js@^1.14.0": - "integrity" "sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==" - "resolved" "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.0.tgz" - "version" "1.16.0" - dependencies: - "@babel/runtime" "^7.1.2" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"safe-buffer@^5.1.0", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@~5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"sass@1.54.5": - "integrity" "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz" - "version" "1.54.5" - dependencies: - "chokidar" ">=3.0.0 <4.0.0" - "immutable" "^4.0.0" - "source-map-js" ">=0.6.2 <2.0.0" - -"scheduler@^0.20.2": - "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - "version" "0.20.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"schema-utils@^2.6.5": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^3.1.0": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"schema-utils@^3.1.1": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"schema-utils@^4.0.0": - "integrity" "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@types/json-schema" "^7.0.9" - "ajv" "^8.8.0" - "ajv-formats" "^2.1.1" - "ajv-keywords" "^5.0.0" - -"screenfull@^5.0.0", "screenfull@^5.1.0": - "integrity" "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==" - "resolved" "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz" - "version" "5.2.0" - -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^2.0.1": - "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-forge" "^1" - -"semver-regex@1.0.0": - "integrity" "sha512-1vZcoRC+LPtHFkLUPyrabsATDSHerxW+hJBN8h04HZOZBuewbXaNROtUVdEPrTdZsWNq6sfsXDhd48GB2xTG4g==" - "resolved" "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz" - "version" "1.0.0" - -"semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.0.0": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@^7.3.4": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@^7.3.5": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@^7.3.7": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@2 || 3 || 4 || 5": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" - dependencies: - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "mime" "1.6.0" - "ms" "2.1.3" - "on-finished" "2.4.1" - "range-parser" "~1.2.1" - "statuses" "2.0.1" - -"serialize-javascript@^6.0.0", "serialize-javascript@6.0.0": - "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "randombytes" "^2.1.0" - -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "accepts" "~1.3.4" - "batch" "0.6.1" - "debug" "2.6.9" - "escape-html" "~1.0.3" - "http-errors" "~1.6.2" - "mime-types" "~2.1.17" - "parseurl" "~1.3.2" - -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" - -"set-harmonic-interval@^1.0.1": - "integrity" "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==" - "resolved" "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz" - "version" "1.0.1" - -"setimmediate@^1.0.5": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^6.0.2" - -"shallowequal@^1.1.0", "shallowequal@1.1.0": - "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - "version" "1.1.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.3", "signal-exit@^3.0.7": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"simple-swizzle@^0.2.2": - "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" - "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "is-arrayish" "^0.3.1" - -"sinon@11.1.1": - "integrity" "sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg==" - "resolved" "https://registry.npmjs.org/sinon/-/sinon-11.1.1.tgz" - "version" "11.1.1" - dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^7.1.0" - "@sinonjs/samsam" "^6.0.2" - "diff" "^5.0.0" - "nise" "^5.1.0" - "supports-color" "^7.2.0" - -"slash@^2.0.0": - "integrity" "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - "resolved" "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" - "version" "2.0.0" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slice-ansi@^4.0.0": - "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" - -"socket.io-adapter@~2.4.0": - "integrity" "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" - "resolved" "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz" - "version" "2.4.0" - -"socket.io-parser@~4.2.0": - "integrity" "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==" - "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "@socket.io/component-emitter" "~3.1.0" - "debug" "~4.3.1" - -"socket.io@^4.4.1": - "integrity" "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==" - "resolved" "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz" - "version" "4.5.2" - dependencies: - "accepts" "~1.3.4" - "base64id" "~2.0.0" - "debug" "~4.3.2" - "engine.io" "~6.2.0" - "socket.io-adapter" "~2.4.0" - "socket.io-parser" "~4.2.0" - -"sockjs@^0.3.24": - "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - "version" "0.3.24" - dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^8.3.2" - "websocket-driver" "^0.7.4" - -"sortablejs@1.14.0": - "integrity" "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" - "resolved" "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz" - "version" "1.14.0" - -"source-list-map@^2.0.1": - "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - "version" "2.0.1" - -"source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-support@^0.5.16", "source-map-support@~0.5.20": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@0.5.6": - "integrity" "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" - "version" "0.5.6" - -"sourcemap-codec@^1.4.8": - "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - "version" "1.4.8" - -"spdx-correct@^3.0.0": - "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" - "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "spdx-expression-parse" "^3.0.0" - "spdx-license-ids" "^3.0.0" - -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" - -"spdx-expression-parse@^3.0.0": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" - -"spdx-license-ids@^3.0.0": - "integrity" "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" - "version" "3.0.12" - -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "debug" "^4.1.0" - "detect-node" "^2.0.4" - "hpack.js" "^2.1.6" - "obuf" "^1.1.2" - "readable-stream" "^3.0.6" - "wbuf" "^1.7.3" - -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "debug" "^4.1.0" - "handle-thing" "^2.0.0" - "http-deceiver" "^1.2.7" - "select-hose" "^2.0.0" - "spdy-transport" "^3.0.0" - -"split@^1.0.0": - "integrity" "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==" - "resolved" "https://registry.npmjs.org/split/-/split-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "through" "2" - -"split2@^3.0.0": - "integrity" "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==" - "resolved" "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "readable-stream" "^3.0.0" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" - -"stack-generator@^2.0.5": - "integrity" "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==" - "resolved" "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz" - "version" "2.0.10" - dependencies: - "stackframe" "^1.3.4" - -"stackframe@^1.3.4": - "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - "version" "1.3.4" - -"stacktrace-gps@^3.0.4": - "integrity" "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==" - "resolved" "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "source-map" "0.5.6" - "stackframe" "^1.3.4" - -"stacktrace-js@^2.0.2": - "integrity" "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==" - "resolved" "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "error-stack-parser" "^2.0.6" - "stack-generator" "^2.0.5" - "stacktrace-gps" "^3.0.4" - -"statuses@>= 1.4.0 < 2", "statuses@~1.5.0": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" - -"stream-browserify@3.0.0": - "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "inherits" "~2.0.4" - "readable-stream" "^3.5.0" - -"stream-http@3.2.0": - "integrity" "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "xtend" "^4.0.2" - -"streamroller@^3.1.3": - "integrity" "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==" - "resolved" "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "date-format" "^4.0.14" - "debug" "^4.3.4" - "fs-extra" "^8.1.0" - -"strict-uri-encode@^1.0.0": - "integrity" "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - "version" "1.1.0" - -"string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string.prototype.matchall@^4.0.7": - "integrity" "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==" - "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" - "version" "4.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - "get-intrinsic" "^1.1.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "regexp.prototype.flags" "^1.4.1" - "side-channel" "^1.0.4" - -"string.prototype.trimend@^1.0.5": - "integrity" "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.19.5" - -"string.prototype.trimstart@^1.0.5": - "integrity" "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.19.5" - -"strip-ansi@^3.0.0": - "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ansi-regex" "^2.0.0" - -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1", "strip-ansi@6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-bom@^3.0.0": - "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - "version" "3.0.0" - -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" - -"strip-indent@^3.0.0": - "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "min-indent" "^1.0.0" - -"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1", "strip-json-comments@3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" - -"style-loader@3.3.1": - "integrity" "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" - "version" "3.3.1" - -"style-search@^0.1.0": - "integrity" "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" - "resolved" "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz" - "version" "0.1.0" - -"stylehacks@^5.1.0": - "integrity" "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "browserslist" "^4.16.6" - "postcss-selector-parser" "^6.0.4" - -"stylelint-config-prettier@9.0.3": - "integrity" "sha512-5n9gUDp/n5tTMCq1GLqSpA30w2sqWITSSEiAWQlpxkKGAUbjcemQ0nbkRvRUa0B1LgD3+hCvdL7B1eTxy1QHJg==" - "resolved" "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.3.tgz" - "version" "9.0.3" - -"stylelint-config-recommended-scss@7.0.0": - "integrity" "sha512-rGz1J4rMAyJkvoJW4hZasuQBB7y9KIrShb20l9DVEKKZSEi1HAy0vuNlR8HyCKy/jveb/BdaQFcoiYnmx4HoiA==" - "resolved" "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "postcss-scss" "^4.0.2" - "stylelint-config-recommended" "^8.0.0" - "stylelint-scss" "^4.0.0" - -"stylelint-config-recommended@^8.0.0": - "integrity" "sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ==" - "resolved" "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz" - "version" "8.0.0" - -"stylelint-prettier@2.0.0": - "integrity" "sha512-jvT3G+9lopkeB0ARmDPszyfaOnvnIF+30QCjZxyt7E6fynI1T9mOKgYDNb9bXX17M7PXMZaX3j/26wqakjp1tw==" - "resolved" "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "prettier-linter-helpers" "^1.0.0" - -"stylelint-scss@^4.0.0": - "integrity" "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==" - "resolved" "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "lodash" "^4.17.21" - "postcss-media-query-parser" "^0.2.3" - "postcss-resolve-nested-selector" "^0.1.1" - "postcss-selector-parser" "^6.0.6" - "postcss-value-parser" "^4.1.0" - -"stylelint@14.11.0": - "integrity" "sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA==" - "resolved" "https://registry.npmjs.org/stylelint/-/stylelint-14.11.0.tgz" - "version" "14.11.0" - dependencies: - "@csstools/selector-specificity" "^2.0.2" - "balanced-match" "^2.0.0" - "colord" "^2.9.3" - "cosmiconfig" "^7.0.1" - "css-functions-list" "^3.1.0" - "debug" "^4.3.4" - "fast-glob" "^3.2.11" - "fastest-levenshtein" "^1.0.16" - "file-entry-cache" "^6.0.1" - "global-modules" "^2.0.0" - "globby" "^11.1.0" - "globjoin" "^0.1.4" - "html-tags" "^3.2.0" - "ignore" "^5.2.0" - "import-lazy" "^4.0.0" - "imurmurhash" "^0.1.4" - "is-plain-object" "^5.0.0" - "known-css-properties" "^0.25.0" - "mathml-tag-names" "^2.1.3" - "meow" "^9.0.0" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "picocolors" "^1.0.0" - "postcss" "^8.4.16" - "postcss-media-query-parser" "^0.2.3" - "postcss-resolve-nested-selector" "^0.1.1" - "postcss-safe-parser" "^6.0.0" - "postcss-selector-parser" "^6.0.10" - "postcss-value-parser" "^4.2.0" - "resolve-from" "^5.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - "style-search" "^0.1.0" - "supports-hyperlinks" "^2.2.0" - "svg-tags" "^1.0.0" - "table" "^6.8.0" - "v8-compile-cache" "^2.3.0" - "write-file-atomic" "^4.0.2" - -"stylis@^4.0.6": - "integrity" "sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA==" - "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.1.2.tgz" - "version" "4.1.2" - -"supports-color@^2.0.0": - "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - "version" "2.0.0" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.0.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^7.2.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@8.1.1": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-hyperlinks@^2.2.0": - "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" - "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "has-flag" "^4.0.0" - "supports-color" "^7.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svg-tags@^1.0.0": - "integrity" "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" - "resolved" "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz" - "version" "1.0.0" - -"svgo@^2.7.0": - "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "@trysound/sax" "0.2.0" - "commander" "^7.2.0" - "css-select" "^4.1.3" - "css-tree" "^1.1.3" - "csso" "^4.2.0" - "picocolors" "^1.0.0" - "stable" "^0.1.8" - -"table@^6.8.0": - "integrity" "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==" - "resolved" "https://registry.npmjs.org/table/-/table-6.8.0.tgz" - "version" "6.8.0" - dependencies: - "ajv" "^8.0.1" - "lodash.truncate" "^4.4.2" - "slice-ansi" "^4.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - -"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"terser-webpack-plugin@^5.1.3": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" - dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" - -"terser@^5.10.0", "terser@^5.14.1": - "integrity" "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz" - "version" "5.15.0" - dependencies: - "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" - -"text-extensions@^1.0.0": - "integrity" "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" - "resolved" "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" - "version" "1.9.0" - -"text-table@^0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" - -"throttle-debounce@^2.1.0": - "integrity" "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==" - "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz" - "version" "2.3.0" - -"throttle-debounce@^3.0.1": - "integrity" "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==" - "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz" - "version" "3.0.1" - -"through@>=2.2.7 <3", "through@2": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through2@^2.0.0": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"through2@^4.0.0": - "integrity" "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==" - "resolved" "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "readable-stream" "3" - -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" - -"tiny-invariant@1.2.0": - "integrity" "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" - "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz" - "version" "1.2.0" - -"tmp@^0.2.1": - "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "rimraf" "^3.0.0" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"toggle-selection@^1.0.6": - "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - "version" "1.0.6" - -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" - -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" - -"trim-newlines@^3.0.0": - "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" - "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" - "version" "3.0.1" - -"ts-easing@^0.2.0": - "integrity" "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" - "resolved" "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz" - "version" "0.2.0" - -"tsconfig-paths@^3.14.1": - "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "@types/json5" "^0.0.29" - "json5" "^1.0.1" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" - -"tslib@^1.8.1": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^2.0.0", "tslib@^2.0.1", "tslib@^2.0.3", "tslib@^2.1.0": - "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - "version" "2.4.0" - -"tslib@2.0.1": - "integrity" "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz" - "version" "2.0.1" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" - dependencies: - "tslib" "^1.8.1" - -"tty-browserify@0.0.1": - "integrity" "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" - "version" "0.0.1" - -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "prelude-ls" "^1.2.1" - -"type-detect@^4.0.0", "type-detect@^4.0.5", "type-detect@^4.0.8", "type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.18.0": - "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" - "version" "0.18.1" - -"type-fest@^0.20.2": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" - -"type-fest@^0.6.0": - "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - "version" "0.6.0" - -"type-fest@^0.8.1": - "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - "version" "0.8.1" - -"type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"typed-styles@^0.0.7": - "integrity" "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - "resolved" "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz" - "version" "0.0.7" - -"ua-parser-js@^0.7.30": - "integrity" "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" - "version" "0.7.31" - -"ua-parser-js@0.7.28": - "integrity" "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz" - "version" "0.7.28" - -"uglify-js@^3.1.4": - "integrity" "sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==" - "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.2.tgz" - "version" "3.17.2" - -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" - -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.0.0": - "integrity" "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"update-browserslist-db@^1.0.9": - "integrity" "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz" - "version" "1.0.9" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"url@0.11.0": - "integrity" "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" - dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" - -"use-composed-ref@^1.3.0": - "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" - "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - "version" "1.3.0" - -"use-isomorphic-layout-effect@^1.1.1": - "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" - "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - "version" "1.1.2" - -"use-latest@^1.2.1": - "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" - "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "use-isomorphic-layout-effect" "^1.1.1" - -"use-ssr@1.0.24": - "integrity" "sha512-0MFps7ezL57/3o0yl4CvrHLlp9z20n1rQZV/lSRz7if+TUoM6POU1XdOvEjIgjgKeIhTEye1U0khrIYWCTWw4g==" - "resolved" "https://registry.npmjs.org/use-ssr/-/use-ssr-1.0.24.tgz" - "version" "1.0.24" - -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"util@0.12.4": - "integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==" - "resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz" - "version" "0.12.4" - dependencies: - "inherits" "^2.0.3" - "is-arguments" "^1.0.4" - "is-generator-function" "^1.0.7" - "is-typed-array" "^1.1.3" - "safe-buffer" "^5.1.2" - "which-typed-array" "^1.1.2" - -"utila@~0.4": - "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" - -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"v8-compile-cache@^2.0.3", "v8-compile-cache@^2.3.0": - "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - "version" "2.3.0" - -"validate-commit-msg@2.12.2": - "integrity" "sha512-W2tiNCNFSIhQ/Ocf7m/O2MNNSM8HWXDt0k2/3KQxGn+bvU5iJd3ux7FZfB2sXkSZSotBUmcwmOhCuynJD7hd2Q==" - "resolved" "https://registry.npmjs.org/validate-commit-msg/-/validate-commit-msg-2.12.2.tgz" - "version" "2.12.2" - dependencies: - "conventional-commit-types" "^2.0.0" - "find-parent-dir" "^0.3.0" - "findup" "0.1.5" - "semver-regex" "1.0.0" - -"validate-npm-package-license@^3.0.1": - "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" - "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "spdx-correct" "^3.0.0" - "spdx-expression-parse" "^3.0.0" - -"vary@^1", "vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" - -"void-elements@^2.0.0": - "integrity" "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==" - "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" - "version" "2.0.1" - -"warning@^3.0.0": - "integrity" "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==" - "resolved" "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "loose-envify" "^1.0.0" - -"warning@^4.0.2": - "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" - "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "loose-envify" "^1.0.0" - -"warning@^4.0.3": - "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" - "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "loose-envify" "^1.0.0" - -"watchpack@^2.4.0": - "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - "version" "2.4.0" - dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" - -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "minimalistic-assert" "^1.0.0" - -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" - -"webpack-dev-middleware@^5.3.1": - "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - "version" "5.3.3" - dependencies: - "colorette" "^2.0.10" - "memfs" "^3.4.3" - "mime-types" "^2.1.31" - "range-parser" "^1.2.1" - "schema-utils" "^4.0.0" - -"webpack-dev-server@4.10.0": - "integrity" "sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz" - "version" "4.10.0" - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" - "ansi-html-community" "^0.0.8" - "bonjour-service" "^1.0.11" - "chokidar" "^3.5.3" - "colorette" "^2.0.10" - "compression" "^1.7.4" - "connect-history-api-fallback" "^2.0.0" - "default-gateway" "^6.0.3" - "express" "^4.17.3" - "graceful-fs" "^4.2.6" - "html-entities" "^2.3.2" - "http-proxy-middleware" "^2.0.3" - "ipaddr.js" "^2.0.1" - "open" "^8.0.9" - "p-retry" "^4.5.0" - "rimraf" "^3.0.2" - "schema-utils" "^4.0.0" - "selfsigned" "^2.0.1" - "serve-index" "^1.9.1" - "sockjs" "^0.3.24" - "spdy" "^4.0.2" - "webpack-dev-middleware" "^5.3.1" - "ws" "^8.4.2" - -"webpack-manifest-plugin@5.0.0": - "integrity" "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==" - "resolved" "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "tapable" "^2.0.0" - "webpack-sources" "^2.2.0" - -"webpack-merge@^4.1.5": - "integrity" "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==" - "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "lodash" "^4.17.15" - -"webpack-node-externals@3.0.0": - "integrity" "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==" - "resolved" "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" - "version" "3.0.0" - -"webpack-sources@^2.2.0": - "integrity" "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "source-list-map" "^2.0.1" - "source-map" "^0.6.1" - -"webpack-sources@^3.2.3": - "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - "version" "3.2.3" - -"webpack@5.74.0": - "integrity" "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz" - "version" "5.74.0" - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "acorn" "^8.7.1" - "acorn-import-assertions" "^1.7.6" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.10.0" - "es-module-lexer" "^0.9.0" - "eslint-scope" "5.1.1" - "events" "^3.2.0" - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.2.9" - "json-parse-even-better-errors" "^2.3.1" - "loader-runner" "^4.2.0" - "mime-types" "^2.1.27" - "neo-async" "^2.6.2" - "schema-utils" "^3.1.0" - "tapable" "^2.1.1" - "terser-webpack-plugin" "^5.1.3" - "watchpack" "^2.4.0" - "webpack-sources" "^3.2.3" - -"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" - dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" - -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" - -"whatwg-fetch@^3.4.1": - "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" - "version" "3.6.2" - -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-typed-array@^1.1.2": - "integrity" "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz" - "version" "1.1.8" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-abstract" "^1.20.0" - "for-each" "^0.3.3" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.9" - -"which@^1.2.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"word-wrap@^1.2.3", "word-wrap@1.2.3": - "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - "version" "1.2.3" - -"wordwrap@^1.0.0": - "integrity" "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - "version" "1.0.0" - -"workerpool@6.2.1": - "integrity" "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" - "resolved" "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" - "version" "6.2.1" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^4.0.2": - "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.7" - -"ws@^8.4.2": - "integrity" "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz" - "version" "8.9.0" - -"ws@~8.2.3": - "integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" - "version" "8.2.3" - -"xtend@^4.0.2", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": - "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - "version" "1.10.2" - -"yargs-parser@^20.2.2", "yargs-parser@^20.2.3": - "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - "version" "20.2.9" - -"yargs-parser@20.2.4": - "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" - "version" "20.2.4" - -"yargs-unparser@2.0.0": - "integrity" "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==" - "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "camelcase" "^6.0.0" - "decamelize" "^4.0.0" - "flat" "^5.0.2" - "is-plain-obj" "^2.1.0" - -"yargs@^16.1.1", "yargs@^16.2.0", "yargs@16.2.0": - "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - "version" "16.2.0" - dependencies: - "cliui" "^7.0.2" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.0" - "y18n" "^5.0.5" - "yargs-parser" "^20.2.2" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" From 5e124b89792dd864d7ea1a5c66650c3fa08bb857 Mon Sep 17 00:00:00 2001 From: Najeeb Date: Mon, 10 Oct 2022 15:33:36 +0530 Subject: [PATCH 120/243] fix(component/molecule/accordion): icon transition --- components/molecule/accordion/src/styles/index.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/accordion/src/styles/index.scss b/components/molecule/accordion/src/styles/index.scss index af50d8ccff..1282c0f8ec 100644 --- a/components/molecule/accordion/src/styles/index.scss +++ b/components/molecule/accordion/src/styles/index.scss @@ -136,7 +136,7 @@ $base-class-item-panel: '#{$base-class-item}Panel'; min-height: $sz-empty-icon; position: relative; overflow: hidden; - transform: rotate(180deg); + transform: rotate(-180deg); &::before, &::after { position: absolute; From 10ff698453177b950592d33e981cf964c69b05e4 Mon Sep 17 00:00:00 2001 From: Carlos Parodi Date: Thu, 6 Oct 2022 09:36:01 +0200 Subject: [PATCH 121/243] feat(components/molecule/dropdownOption): Fixed grammar error ISSUES CLOSED: #2371 --- components/molecule/dropdownOption/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/dropdownOption/src/index.js b/components/molecule/dropdownOption/src/index.js index 4f893bcf65..52682b4962 100644 --- a/components/molecule/dropdownOption/src/index.js +++ b/components/molecule/dropdownOption/src/index.js @@ -164,7 +164,7 @@ MoleculeDropdownOption.propTypes = { children: PropTypes.node, /** Contains checkbox */ checkbox: PropTypes.bool, - /** Addtional props to set up the checkbox */ + /** Additional props to set up the checkbox */ checkboxProps: PropTypes.object, /** Is disabled */ disabled: PropTypes.bool, From f3af2fa2cd575465b1f4a0e9f6eada06b040085d Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 10 Oct 2022 10:51:27 +0000 Subject: [PATCH 122/243] release(components/molecule/dropdownOption): v2.2.0 [skip ci] --- components/molecule/dropdownOption/CHANGELOG.md | 9 +++++++++ components/molecule/dropdownOption/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/dropdownOption/CHANGELOG.md b/components/molecule/dropdownOption/CHANGELOG.md index 52317137af..82c2aba37b 100644 --- a/components/molecule/dropdownOption/CHANGELOG.md +++ b/components/molecule/dropdownOption/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 2.2.0 (2022-10-10) + + +### Features + +* **components/molecule/dropdownOption:** Fixed grammar error ([10ff698](https://github.com/SUI-Components/sui-components/commit/10ff698453177b950592d33e981cf964c69b05e4)), closes [#2371](https://github.com/SUI-Components/sui-components/issues/2371) + + + # 2.1.0 (2022-10-04) diff --git a/components/molecule/dropdownOption/package.json b/components/molecule/dropdownOption/package.json index 05b5d7b301..3947e7cc52 100644 --- a/components/molecule/dropdownOption/package.json +++ b/components/molecule/dropdownOption/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-dropdown-option", - "version": "2.1.0", + "version": "2.2.0", "description": "", "main": "lib/index.js", "scripts": { From b90231dc07db9ef4dcc7943fafe2c634b38a1070 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Mon, 10 Oct 2022 14:57:24 +0200 Subject: [PATCH 123/243] feat(components/molecule/tabs): add id prop to make tabs uniques --- .../molecule/tabs/src/components/MoleculeTab.js | 6 +++++- .../molecule/tabs/src/components/MoleculeTabs.js | 12 +++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTab.js b/components/molecule/tabs/src/components/MoleculeTab.js index 85e9c0e3d7..bd256c93dc 100644 --- a/components/molecule/tabs/src/components/MoleculeTab.js +++ b/components/molecule/tabs/src/components/MoleculeTab.js @@ -21,6 +21,7 @@ const MoleculeTab = forwardRef( count, disabled, icon, + id = 'molecule-tab-content', isIntersecting, label, numTab, @@ -56,7 +57,7 @@ const MoleculeTab = forwardRef( ref={useMergeRefs(innerRef, forwardedRef)} role="tab" aria-selected={active} - aria-controls={`molecule-tab-content-${numTab}`} + aria-controls={`${id}-${numTab}`} > {icon && {icon}} {!isNaN(count) && {count}} @@ -76,6 +77,9 @@ MoleculeTab.propTypes = { /** icon (React component) */ icon: PropTypes.node, + /** id used to make tabs unique per page */ + id: PropTypes.string, + /** count to display */ count: PropTypes.string, diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 59b9e7ce21..924b430ef9 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -16,6 +16,7 @@ import { const MoleculeTabs = ({ autoScrollIntoView = true, children, + id = 'molecule-tab-content', onChange, type, variant @@ -37,6 +38,7 @@ const MoleculeTabs = ({ autoScrollIntoView, isIntersecting, numTab, + id, onChange }) }) @@ -44,12 +46,9 @@ const MoleculeTabs = ({ const activeTabContent = childrenArray.reduce((activeContent, child) => { if (child) { const {children: childrenChild, active, numTab} = child.props + return active ? ( -
    +
    {childrenChild}
    ) : ( @@ -85,6 +84,9 @@ MoleculeTabs.propTypes = { /** children */ children: PropTypes.any, + /** id used to make tabs unique */ + id: PropTypes.string, + /** onChange */ onChange: PropTypes.func, From 208e0bed5aa055ae796fc934d79c334b17acc1b4 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Mon, 10 Oct 2022 15:46:37 +0200 Subject: [PATCH 124/243] feat(components/molecule/tabs): add pull request feedback --- components/molecule/tabs/src/components/MoleculeTabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 924b430ef9..1d7f566016 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -70,7 +70,7 @@ const MoleculeTabs = ({ > {extendedChildren}
- {activeTabContent || null} + {activeTabContent}
) } From f32e9718a114586ba6e9139406c0db8f330100fd Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Mon, 10 Oct 2022 15:57:16 +0200 Subject: [PATCH 125/243] feat(components/molecule/tabs): pull request feedback --- .../molecule/tabs/src/components/MoleculeTabs.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 1d7f566016..c82d5d1da2 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -47,13 +47,13 @@ const MoleculeTabs = ({ if (child) { const {children: childrenChild, active, numTab} = child.props - return active ? ( -
- {childrenChild} -
- ) : ( - activeContent - ) + if (active) { + return ( +
+ {childrenChild} +
+ ) + } } return activeContent }, null) From ad3f8fb08be2260ffba01fce160c4d3df3814754 Mon Sep 17 00:00:00 2001 From: "alfredo.narvaez" Date: Tue, 11 Oct 2022 13:09:23 +0200 Subject: [PATCH 126/243] fix(components/molecule/select): accept onblur prop ISSUES CLOSED: #2282 --- components/molecule/select/src/index.js | 11 +++++++++- components/molecule/select/test/index.test.js | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/components/molecule/select/src/index.js b/components/molecule/select/src/index.js index ee9c8b0744..76473d49d9 100644 --- a/components/molecule/select/src/index.js +++ b/components/molecule/select/src/index.js @@ -28,6 +28,7 @@ import { const MoleculeSelect = forwardRef((props, forwardedRef) => { const { + onBlur, isOpen, onToggle, children, @@ -39,6 +40,7 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { refMoleculeSelect: refMoleculeSelectFromProps, 'aria-label': ariaLabel } = props + const refMoleculeSelect = useRef(refMoleculeSelectFromProps) const refsMoleculeSelectOptions = useRef([]) const ref = useMergeRefs(forwardedRef, refMoleculeSelect) @@ -125,7 +127,10 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { } } - const handleFocusOut = () => setFocus(false) + const handleFocusOut = e => { + onBlur(e) + setFocus(false) + } const handleFocusIn = () => !disabled && setFocus(true) @@ -185,6 +190,9 @@ MoleculeSelect.propTypes = { /** if list of options is displayed or not */ isOpen: PropTypes.bool, + /** callback onBlur to be triggered when focused outside of the input */ + onBlur: PropTypes.func, + /** callback when arrow up/down is clicked → to show/hide list of options */ onToggle: PropTypes.func, @@ -232,6 +240,7 @@ MoleculeSelect.propTypes = { } MoleculeSelect.defaultProps = { + onBlur: () => {}, disabled: false, keysSelection: SELECTION_KEYS, onChange: () => {}, diff --git a/components/molecule/select/test/index.test.js b/components/molecule/select/test/index.test.js index e1ec6bb9fc..d39dd6633c 100644 --- a/components/molecule/select/test/index.test.js +++ b/components/molecule/select/test/index.test.js @@ -9,6 +9,9 @@ import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' +import sinon from 'sinon' + +import userEvents from '@testing-library/user-event' import json from '../package.json' import * as pkg from '../src/index.js' @@ -85,6 +88,24 @@ describe(json.name, () => { // Then expect(findClassName(container.innerHTML)).to.be.null }) + + it('should call onBlur callback', () => { + const spy = sinon.spy() + + const props = { + onBlur: spy + } + + // When + const {getByRole} = setup(props) + const textBox = getByRole('textbox') + + userEvents.click(textBox) + userEvents.tab() + + // Then + sinon.assert.calledOnce(spy) + }) }) describe('moleculeSelectDropdownListSizes', () => { From f891a325750d59aa4967a8a22a48a239c36e235d Mon Sep 17 00:00:00 2001 From: xavi-murcia Date: Tue, 11 Oct 2022 13:22:35 +0200 Subject: [PATCH 127/243] feat(components/atom/checkbox): allow onChange to be executed in no native checkboxes A click on the label with the attribute for === to the checkbox id was not working due to the removal of the onChange handler from the input element. --- components/atom/checkbox/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/checkbox/src/index.js b/components/atom/checkbox/src/index.js index bc1d2911f9..8751ab1011 100644 --- a/components/atom/checkbox/src/index.js +++ b/components/atom/checkbox/src/index.js @@ -155,7 +155,7 @@ const AtomCheckbox = forwardRef( aria-hidden={!isNative} aria-checked={pressedValue({checked, indeterminate})} indeterminate={indeterminate ? 'true' : undefined} - {...(isNative && {onChange: handleChange(inputRef)})} + onChange={handleChange(inputRef)} {...props} /> Date: Tue, 11 Oct 2022 13:24:28 +0200 Subject: [PATCH 128/243] feat(components/molecule/field): Wrap node label in a real label to make the checkbox react to the c When the element is wrapped in a label with the fro attribute set equals to the checkbox id, the checkbox reacts to that event. --- components/molecule/field/src/Label.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index 6b65128cb6..80ae577a44 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -7,12 +7,24 @@ import Injector from '@s-ui/react-primitive-injector' import {CLASS_NODE_LABEL_CONTAINER} from './config.js' -const MoleculeLabel = ({label, nodeLabel, ...props}) => { +const MoleculeLabel = ({label, name, nodeLabel, ...props}) => { const innerLabel = () => { if ((label && isElement(label)) || (!label && nodeLabel)) { - return {!label ? nodeLabel : label} + const isLabelHTMLElement = + label?.type === 'label' || nodeLabel?.type === 'label' + + return isLabelHTMLElement ? ( + + {!label ? nodeLabel : label} + + ) : ( + {!label ? nodeLabel : label}} + /> + ) } else if (label) { - return + return } return null } @@ -21,6 +33,7 @@ const MoleculeLabel = ({label, nodeLabel, ...props}) => { MoleculeLabel.propTypes = { label: PropTypes.string, + name: PropTypes.string, nodeLabel: PropTypes.element } From 35f015c5880000c38695a0888b9d7119afea67d3 Mon Sep 17 00:00:00 2001 From: xavi-murcia Date: Tue, 11 Oct 2022 13:27:32 +0200 Subject: [PATCH 129/243] feat(components/molecule/checkboxField/demo): add article to show the checkbox with custom icon bein ISSUES CLOSED: #2289 --- .../demo/ArticleWithCustomCheckedIcon.js | 34 +++++++++++++++++++ .../molecule/checkboxField/demo/index.js | 4 +++ 2 files changed, 38 insertions(+) create mode 100644 components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js diff --git a/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js b/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js new file mode 100644 index 0000000000..175daefb42 --- /dev/null +++ b/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js @@ -0,0 +1,34 @@ +import {useState} from 'react' + +import MoleculeCheckboxField from 'components/molecule/checkboxField/src' +import PropTypes from 'prop-types' + +import {Article, H2, Paragraph} from '@s-ui/documentation-library' + +export const ArticleWithCustomCheckedIcon = ({className}) => { + const [isChecked, setIsChecked] = useState(false) + + return ( +
+

With custom checked icon

+ Label click checks the icon as if it was native + I'm a nodeLabel
} + checkedIcon={() =>

🍕

} + // eslint-disable-next-line no-console + onChange={(e, {name, value, checked}) => { + console.log({[name]: value}) + setIsChecked(checked) + }} + /> + + ) +} + +ArticleWithCustomCheckedIcon.propTypes = { + className: PropTypes.string +} + +export default ArticleWithCustomCheckedIcon diff --git a/components/molecule/checkboxField/demo/index.js b/components/molecule/checkboxField/demo/index.js index 579a7d3b2f..64f78e6593 100644 --- a/components/molecule/checkboxField/demo/index.js +++ b/components/molecule/checkboxField/demo/index.js @@ -4,6 +4,7 @@ import {H1, Paragraph} from '@s-ui/documentation-library' import ArticleDisabled from './ArticleDisabled.js' import ArticleSize from './ArticleSize.js' import ArticleStatus from './ArticleStatus.js' +import ArticleWithCustomCheckedIcon from './ArticleWithCustomCheckedIcon.js' import ArticleWithHelpText from './ArticleWithHelpText.js' import ArticleWithLabelFullWidth from './ArticleWithLabelFullWidth.js' @@ -29,6 +30,9 @@ const Demo = () => {
+
+ +
) From 513ae8acc0728d6aa9e1a5780871985de2b52b3d Mon Sep 17 00:00:00 2001 From: Sabrina Castelli Date: Tue, 11 Oct 2022 15:40:04 +0200 Subject: [PATCH 130/243] feat(components/atom/pinInput): create new token to be able to overwrite the placeholder color --- components/atom/pinInput/src/PinInputField.scss | 4 ++++ components/atom/pinInput/src/config.scss | 1 + 2 files changed, 5 insertions(+) diff --git a/components/atom/pinInput/src/PinInputField.scss b/components/atom/pinInput/src/PinInputField.scss index 9ab9a55566..0617600774 100644 --- a/components/atom/pinInput/src/PinInputField.scss +++ b/components/atom/pinInput/src/PinInputField.scss @@ -10,6 +10,10 @@ padding: 0; text-align: center; + &::placeholder { + color: $c-pin-input-placeholder; + } + &:focus { border: $bdw-s solid $c-primary-dark; cursor: text; diff --git a/components/atom/pinInput/src/config.scss b/components/atom/pinInput/src/config.scss index 6ddd06549d..13b3d82285 100644 --- a/components/atom/pinInput/src/config.scss +++ b/components/atom/pinInput/src/config.scss @@ -4,6 +4,7 @@ $bdw-pin-input-field: $bdw-s !default; $fw-pin-input-field: $fw-regular !default; $lh-pin-input-field: $lh-m !default; $m-pin-input-children: $m-m !default; +$c-pin-input-placeholder: inherit !default; $s-pin-input-field: ( // 64px From c2f410e589644bcbb1a26c5c107a73f336442d82 Mon Sep 17 00:00:00 2001 From: Sabrina Castelli Date: Tue, 11 Oct 2022 16:13:20 +0200 Subject: [PATCH 131/243] feat(components/atom/pinInput): replace inherit by auto --- components/atom/pinInput/src/config.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/pinInput/src/config.scss b/components/atom/pinInput/src/config.scss index 13b3d82285..ac371a24cd 100644 --- a/components/atom/pinInput/src/config.scss +++ b/components/atom/pinInput/src/config.scss @@ -4,7 +4,7 @@ $bdw-pin-input-field: $bdw-s !default; $fw-pin-input-field: $fw-regular !default; $lh-pin-input-field: $lh-m !default; $m-pin-input-children: $m-m !default; -$c-pin-input-placeholder: inherit !default; +$c-pin-input-placeholder: auto !default; $s-pin-input-field: ( // 64px From 2160fa1fb1b490159279e5c01841f53b9952fc0d Mon Sep 17 00:00:00 2001 From: "alfredo.narvaez" Date: Tue, 11 Oct 2022 16:18:19 +0200 Subject: [PATCH 132/243] refactor(components/molecule/select): use explicit naming for event --- components/molecule/select/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/molecule/select/src/index.js b/components/molecule/select/src/index.js index 76473d49d9..ed1c9bb399 100644 --- a/components/molecule/select/src/index.js +++ b/components/molecule/select/src/index.js @@ -127,8 +127,8 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { } } - const handleFocusOut = e => { - onBlur(e) + const handleFocusOut = event => { + onBlur(event) setFocus(false) } From 1128703f117c0909fe08a26bf869af0f2f548206 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 11 Oct 2022 14:23:56 +0000 Subject: [PATCH 133/243] release(components/atom/pinInput): v1.11.0 [skip ci] --- components/atom/pinInput/CHANGELOG.md | 10 ++++++++++ components/atom/pinInput/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/atom/pinInput/CHANGELOG.md b/components/atom/pinInput/CHANGELOG.md index 28495d9be8..1c14c4970d 100644 --- a/components/atom/pinInput/CHANGELOG.md +++ b/components/atom/pinInput/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.11.0 (2022-10-11) + + +### Features + +* **components/atom/pinInput:** create new token to be able to overwrite the placeholder color ([513ae8a](https://github.com/SUI-Components/sui-components/commit/513ae8acc0728d6aa9e1a5780871985de2b52b3d)) +* **components/atom/pinInput:** replace inherit by auto ([c2f410e](https://github.com/SUI-Components/sui-components/commit/c2f410e589644bcbb1a26c5c107a73f336442d82)) + + + # 1.10.0 (2022-09-05) diff --git a/components/atom/pinInput/package.json b/components/atom/pinInput/package.json index 2a30c11ba6..107a9be070 100644 --- a/components/atom/pinInput/package.json +++ b/components/atom/pinInput/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-pin-input", - "version": "1.10.0", + "version": "1.11.0", "description": "", "main": "lib/index.js", "scripts": { From 561d0181a618d29a1a0bffb0aa69c804b3959279 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 11 Oct 2022 14:32:35 +0000 Subject: [PATCH 134/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 65ae548d10..0f648928d6 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.46%25-orange) -![branches](https://shields.io/badge/branches-57.21%25-AA0000) -![functions](https://shields.io/badge/functions-58.53%25-AA0000) -![lines](https://shields.io/badge/lines-73.27%25-orange) +![statements](https://shields.io/badge/statements-71.98%25-orange) +![branches](https://shields.io/badge/branches-57.71%25-AA0000) +![functions](https://shields.io/badge/functions-59.31%25-AA0000) +![lines](https://shields.io/badge/lines-73.75%25-orange) ## ✨ Features From 691673da61da329fec2b4f7e62ee20b594730a71 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 11 Oct 2022 14:33:37 +0000 Subject: [PATCH 135/243] release(components/molecule/select): v1.57.0 [skip ci] --- components/molecule/select/CHANGELOG.md | 9 +++++++++ components/molecule/select/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/select/CHANGELOG.md b/components/molecule/select/CHANGELOG.md index c3fcf5c6fb..b8246404aa 100644 --- a/components/molecule/select/CHANGELOG.md +++ b/components/molecule/select/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.57.0 (2022-10-11) + + +### Bug Fixes + +* **components/molecule/select:** accept onblur prop ([ad3f8fb](https://github.com/SUI-Components/sui-components/commit/ad3f8fb08be2260ffba01fce160c4d3df3814754)), closes [#2282](https://github.com/SUI-Components/sui-components/issues/2282) + + + # 1.56.0 (2022-10-04) diff --git a/components/molecule/select/package.json b/components/molecule/select/package.json index 4a3e655c35..9a2b056e30 100644 --- a/components/molecule/select/package.json +++ b/components/molecule/select/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select", - "version": "1.56.0", + "version": "1.57.0", "description": "", "main": "lib/index.js", "scripts": { From 710a1fdc8ae283e7118c6ba6e7bf33862111b84f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 13 Oct 2022 08:38:17 +0000 Subject: [PATCH 136/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0f648928d6..1801d11af0 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.98%25-orange) -![branches](https://shields.io/badge/branches-57.71%25-AA0000) -![functions](https://shields.io/badge/functions-59.31%25-AA0000) -![lines](https://shields.io/badge/lines-73.75%25-orange) +![statements](https://shields.io/badge/statements-72.1%25-orange) +![branches](https://shields.io/badge/branches-57.78%25-AA0000) +![functions](https://shields.io/badge/functions-59.56%25-AA0000) +![lines](https://shields.io/badge/lines-73.88%25-orange) ## ✨ Features From 2a8a33135a141a8b5c0df186d1fb99c2e21f490f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 13 Oct 2022 08:39:21 +0000 Subject: [PATCH 137/243] release(components/molecule/tabs): v2.37.0 [skip ci] --- components/molecule/tabs/CHANGELOG.md | 13 +++++++++++++ components/molecule/tabs/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/components/molecule/tabs/CHANGELOG.md b/components/molecule/tabs/CHANGELOG.md index 5b998059e8..8d9f1081b2 100644 --- a/components/molecule/tabs/CHANGELOG.md +++ b/components/molecule/tabs/CHANGELOG.md @@ -1,12 +1,25 @@ # CHANGELOG +# 2.37.0 (2022-10-13) + + +### Features + +* **components/molecule/tabs:** add id prop to make tabs uniques ([b90231d](https://github.com/SUI-Components/sui-components/commit/b90231dc07db9ef4dcc7943fafe2c634b38a1070)) +* **components/molecule/tabs:** add pull request feedback ([208e0be](https://github.com/SUI-Components/sui-components/commit/208e0bed5aa055ae796fc934d79c334b17acc1b4)) +* **components/molecule/tabs:** pull request feedback ([f32e971](https://github.com/SUI-Components/sui-components/commit/f32e9718a114586ba6e9139406c0db8f330100fd)) + + + # 2.36.0 (2022-09-22) ### Features +* **components/molecule/tabs:** add orientation aria attribute ([71296a3](https://github.com/SUI-Components/sui-components/commit/71296a319365c6109c7e9aaa2077933ceb80d09e)) * **components/molecule/tabs:** Change tabs to be able to modify current active tabs by updating pro ([3f6a23e](https://github.com/SUI-Components/sui-components/commit/3f6a23e3538970054c289b4607c806baa72c6922)) * **components/molecule/tabs:** control/uncontroll active tabs ([7945c33](https://github.com/SUI-Components/sui-components/commit/7945c339e5a145a2d593b2f68d4344aea2100f7b)) +* **components/molecule/tabs:** make tabs accesibles ([b4ebaf3](https://github.com/SUI-Components/sui-components/commit/b4ebaf3f60efa0bb51422059bf631f9e1e076666)) * **components/molecule/tabs:** remove unnecesary prop injected ([4b67d13](https://github.com/SUI-Components/sui-components/commit/4b67d1304388ec589112eb3bd4d24767c8733367)) diff --git a/components/molecule/tabs/package.json b/components/molecule/tabs/package.json index 4dcb481958..1eb73a36c8 100644 --- a/components/molecule/tabs/package.json +++ b/components/molecule/tabs/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-tabs", - "version": "2.36.0", + "version": "2.37.0", "description": "", "main": "lib/index.js", "scripts": { From 6a8beb8860f8bb39df0716f3c5cd7736557ae78a Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Thu, 13 Oct 2022 14:47:11 +0200 Subject: [PATCH 138/243] feat(components/molecule/selectPopover): show overlay from selected type --- .../molecule/selectPopover/demo/index.js | 39 +++++++++++++++++++ .../molecule/selectPopover/src/config.js | 6 +++ .../molecule/selectPopover/src/index.js | 22 +++++++++-- .../selectPopover/src/styles/index.scss | 32 ++++++++++++++- .../selectPopover/src/styles/settings.scss | 19 +++++++++ .../molecule/selectPopover/test/index.test.js | 37 ++++++++++++++++++ 6 files changed, 151 insertions(+), 4 deletions(-) diff --git a/components/molecule/selectPopover/demo/index.js b/components/molecule/selectPopover/demo/index.js index 87e8239185..763fc9cb88 100644 --- a/components/molecule/selectPopover/demo/index.js +++ b/components/molecule/selectPopover/demo/index.js @@ -2,6 +2,7 @@ import {useState} from 'react' import MoleculeSelectPopover, { + selectPopoverOverlayTypes, selectPopoverPlacements, selectPopoverSizes } from 'components/molecule/selectPopover/src/index.js' @@ -34,6 +35,7 @@ const Demo = () => { const [addCustomButton, setAddCustomButton] = useState(false) const [customContentWrapper, setCustomContentWrapper] = useState(false) const [renderSelect, setRenderSelect] = useState(false) + const [overlayType, setOverlayType] = useState(selectPopoverOverlayTypes.NONE) const handleChangeItem = event => { const {target} = event @@ -191,6 +193,18 @@ const Demo = () => { Disabled +
+ {Object.values(selectPopoverOverlayTypes).map(type => ( + + ))} +

Component

{ onCustomAction={() => setUnconfirmedItems(items)} onClose={handleClose} onOpen={handleOpen} + overlayType={overlayType} placement={placement} selectText={selectText} size={size} @@ -239,6 +254,30 @@ const Demo = () => { +

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo + recusandae labore numquam aliquam? Neque unde excepturi nam labore + velit a accusantium alias sunt quos voluptatem vel similique, pariatur + fugiat voluptate. +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime, + incidunt animi a dignissimos aliquid voluptas quo quisquam adipisci + distinctio accusamus, officiis amet mollitia error, dolore vero + similique nihil? Corrupti, quaerat. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam + possimus cumque ut sunt? Quo aperiam id magni placeat iusto, quidem + corporis enim, iste ad sapiente distinctio dicta, voluptatem minima + fuga! +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem + sint ratione architecto iste sapiente repudiandae inventore fugit + expedita deleniti! Debitis maiores corrupti ducimus id cum veniam + distinctio eos fuga repellat. +

) diff --git a/components/molecule/selectPopover/src/config.js b/components/molecule/selectPopover/src/config.js index 6d489208f7..caec4827f5 100644 --- a/components/molecule/selectPopover/src/config.js +++ b/components/molecule/selectPopover/src/config.js @@ -13,6 +13,12 @@ export const PLACEMENTS = { RIGHT: 'right' } +export const OVERLAY_TYPES = { + DARK: 'dark', + LIGHT: 'light', + NONE: 'none' +} + const placements = { [PLACEMENTS.AUTO_START]: PLACEMENTS.LEFT, [PLACEMENTS.AUTO_END]: PLACEMENTS.RIGHT, diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 3ee317482f..21b83417f8 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -5,7 +5,13 @@ import PropTypes from 'prop-types' import Button, {atomButtonDesigns} from '@s-ui/react-atom-button' -import {BASE_CLASS, getPlacement, PLACEMENTS, SIZES} from './config.js' +import { + BASE_CLASS, + getPlacement, + OVERLAY_TYPES, + PLACEMENTS, + SIZES +} from './config.js' function usePrevious(value) { const ref = useRef() @@ -36,6 +42,7 @@ function MoleculeSelectPopover({ onClose = () => {}, onCustomAction = () => {}, onOpen = () => {}, + overlayType = OVERLAY_TYPES.NONE, placement, renderContentWrapper: renderContentWrapperProp, renderSelect: renderSelectProp, @@ -52,6 +59,8 @@ function MoleculeSelectPopover({ const selectRef = useRef() const contentWrapperRef = useRef() + const hasOverlay = overlayType !== OVERLAY_TYPES.NONE + const getPopoverClassName = () => { const {left, right} = contentWrapperRef.current?.getBoundingClientRect() || {} @@ -255,7 +264,9 @@ function MoleculeSelectPopover({ BASE_CLASS, fullWidth && `${BASE_CLASS}--fullWidth`, isDisabled && 'is-disabled', - renderContentWrapperProp && `${BASE_CLASS}--hasCustomWrapper` + renderContentWrapperProp && `${BASE_CLASS}--hasCustomWrapper`, + hasOverlay && `${BASE_CLASS}-overlay--${overlayType}`, + isOpen && 'is-open' ) return ( @@ -295,6 +306,7 @@ MoleculeSelectPopover.propTypes = { onClose: PropTypes.func, onCustomAction: PropTypes.func, onOpen: PropTypes.func, + overlayType: PropTypes.oneOf(Object.keys(OVERLAY_TYPES)), placement: PropTypes.oneOf([ PLACEMENTS.AUTO_END, PLACEMENTS.AUTO_START, @@ -309,4 +321,8 @@ MoleculeSelectPopover.propTypes = { } export default MoleculeSelectPopover -export {SIZES as selectPopoverSizes, PLACEMENTS as selectPopoverPlacements} +export { + OVERLAY_TYPES as selectPopoverOverlayTypes, + PLACEMENTS as selectPopoverPlacements, + SIZES as selectPopoverSizes +} diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index e6a0999adf..fb1efa8669 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -67,7 +67,7 @@ $base-class: '.sui-MoleculeSelectPopover '; border: $bd-select-popover-content; border-radius: $bdrs-select-popover-content; box-shadow: $bxsh-select-popover; - margin-top: $m-m; + margin-top: $m-select-popover-popover; position: absolute; min-width: $w-select-popover; z-index: $z-select-popover-select-popover; @@ -101,4 +101,34 @@ $base-class: '.sui-MoleculeSelectPopover '; transform: rotate(-90deg) !important; } } + + &-overlay { + @each $name, $type in $molecule-select-popover-overlay-types { + &--#{'' + $name} { + $bgc: map-get($type, bgc); + + &::after { + background-color: $bgc; + content: ''; + height: 100%; + left: 0; + margin-top: $m-select-popover-popover; + opacity: 0; + pointer-events: none; + position: fixed; + transition: opacity 0.25s ease-in; + width: 100%; + z-index: $z-select-popover-select-popover - 1; + } + + &.is-open { + $op: map-get($type, op); + + &::after { + opacity: $op; + } + } + } + } + } } diff --git a/components/molecule/selectPopover/src/styles/settings.scss b/components/molecule/selectPopover/src/styles/settings.scss index 818f207b3e..4ff3b85ba1 100644 --- a/components/molecule/selectPopover/src/styles/settings.scss +++ b/components/molecule/selectPopover/src/styles/settings.scss @@ -21,3 +21,22 @@ $cur-select-popover-select: pointer !default; $op-select-popover: 0.4 !default; $z-select-popover-select-popover: $z-tooltips !default; + +$op-select-popover-overlay: 0.6 !default; +$op-select-popover-dark-overlay: $op-select-popover-overlay !default; +$op-select-popover-light-overlay: $op-select-popover-overlay !default; +$bgc-select-popover-dark-overlay: $c-black !default; +$bgc-select-popover-light-overlay: $c-white !default; + +$m-select-popover-popover: $m-m !default; + +$molecule-select-popover-overlay-types: ( + dark: ( + bgc: $bgc-select-popover-dark-overlay, + op: $op-select-popover-dark-overlay + ), + light: ( + bgc: $bgc-select-popover-light-overlay, + op: $op-select-popover-light-overlay + ) +) !default; diff --git a/components/molecule/selectPopover/test/index.test.js b/components/molecule/selectPopover/test/index.test.js index a9998682dc..461422f714 100644 --- a/components/molecule/selectPopover/test/index.test.js +++ b/components/molecule/selectPopover/test/index.test.js @@ -23,6 +23,7 @@ describe(json.name, () => { // Given const library = pkg const libraryExportedMembers = [ + 'selectPopoverOverlayTypes', 'selectPopoverSizes', 'selectPopoverPlacements', 'default' @@ -30,6 +31,7 @@ describe(json.name, () => { // When const { + selectPopoverOverlayTypes, selectPopoverSizes, selectPopoverPlacements, default: MoleculeSelectPopover, @@ -172,4 +174,39 @@ describe(json.name, () => { }) }) }) + + describe('selectPopoverOverlayTypes', () => { + it('value must be an object enum', () => { + // Given + const library = pkg + + // When + const {selectPopoverOverlayTypes: actual} = library + + // Then + expect(actual).to.be.an('object') + }) + + it('value must be a defined string-key pair filled', () => { + // Given + const library = pkg + const expected = { + DARK: 'dark', + LIGHT: 'light', + NONE: 'none' + } + + // When + const {selectPopoverOverlayTypes: actual} = library + const {DARK, LIGHT, NONE, ...others} = actual + + // Then + expect(Object.keys(others).length).to.equal(0) + expect(Object.keys(actual)).to.have.members(Object.keys(expected)) + Object.entries(expected).forEach(([expectedKey, expectedValue]) => { + expect(Object.keys(actual).includes(expectedKey)).to.be.true + expect(actual[expectedKey]).to.equal(expectedValue) + }) + }) + }) }) From 7ea996ca1a3b09addd9e416ed273868339ea46b3 Mon Sep 17 00:00:00 2001 From: "alfredo.narvaez" Date: Thu, 13 Oct 2022 16:32:49 +0200 Subject: [PATCH 139/243] test(components/molecule/select): fix flaky onblur test --- components/molecule/select/test/index.test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/molecule/select/test/index.test.js b/components/molecule/select/test/index.test.js index d39dd6633c..c6a8a9b53e 100644 --- a/components/molecule/select/test/index.test.js +++ b/components/molecule/select/test/index.test.js @@ -11,7 +11,7 @@ import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' import sinon from 'sinon' -import userEvents from '@testing-library/user-event' +import {fireEvent} from '@testing-library/react' import json from '../package.json' import * as pkg from '../src/index.js' @@ -100,11 +100,11 @@ describe(json.name, () => { const {getByRole} = setup(props) const textBox = getByRole('textbox') - userEvents.click(textBox) - userEvents.tab() + fireEvent.focusIn(textBox) + fireEvent.focusOut(textBox) // Then - sinon.assert.calledOnce(spy) + sinon.assert.called(spy) }) }) From 8b3d1467082797599ef562a425b9a66521015ad0 Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Thu, 13 Oct 2022 18:03:49 +0200 Subject: [PATCH 140/243] feat(components/molecule/selectPopover): improve overlay position --- .../molecule/selectPopover/src/index.js | 21 ++++++++++++------- .../selectPopover/src/styles/index.scss | 6 +++--- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 21b83417f8..5dde4c41c0 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -264,16 +264,23 @@ function MoleculeSelectPopover({ BASE_CLASS, fullWidth && `${BASE_CLASS}--fullWidth`, isDisabled && 'is-disabled', - renderContentWrapperProp && `${BASE_CLASS}--hasCustomWrapper`, - hasOverlay && `${BASE_CLASS}-overlay--${overlayType}`, - isOpen && 'is-open' + renderContentWrapperProp && `${BASE_CLASS}--hasCustomWrapper` + ) + + const overlayClassNames = cx( + `${BASE_CLASS}-overlay`, + `${BASE_CLASS}-overlay--${overlayType}`, + {'is-open': isOpen} ) return ( -
- {renderSelect()} - {renderContentWrapper()} -
+ <> +
+ {renderSelect()} + {renderContentWrapper()} +
+ {hasOverlay &&
} + ) } diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index fb1efa8669..9c5af68baa 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -107,7 +107,7 @@ $base-class: '.sui-MoleculeSelectPopover '; &--#{'' + $name} { $bgc: map-get($type, bgc); - &::after { + &::before { background-color: $bgc; content: ''; height: 100%; @@ -115,7 +115,7 @@ $base-class: '.sui-MoleculeSelectPopover '; margin-top: $m-select-popover-popover; opacity: 0; pointer-events: none; - position: fixed; + position: absolute; transition: opacity 0.25s ease-in; width: 100%; z-index: $z-select-popover-select-popover - 1; @@ -124,7 +124,7 @@ $base-class: '.sui-MoleculeSelectPopover '; &.is-open { $op: map-get($type, op); - &::after { + &::before { opacity: $op; } } From 8b990b97d349dc221040b514851989a382e8012c Mon Sep 17 00:00:00 2001 From: "alfredo.narvaez" Date: Fri, 14 Oct 2022 10:12:58 +0200 Subject: [PATCH 141/243] test(components/molecule/select): call focus imperatively --- components/molecule/select/test/index.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/molecule/select/test/index.test.js b/components/molecule/select/test/index.test.js index c6a8a9b53e..f1a2701a75 100644 --- a/components/molecule/select/test/index.test.js +++ b/components/molecule/select/test/index.test.js @@ -100,11 +100,11 @@ describe(json.name, () => { const {getByRole} = setup(props) const textBox = getByRole('textbox') - fireEvent.focusIn(textBox) - fireEvent.focusOut(textBox) + textBox.focus() + fireEvent.blur(textBox) // Then - sinon.assert.called(spy) + sinon.assert.calledOnce(spy) }) }) From d7a504f3d456deb0d0141432aaf3093b94fff70f Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Fri, 14 Oct 2022 12:01:04 +0200 Subject: [PATCH 142/243] feat(components/molecule/selectPopover): add overlay as react portal --- .../molecule/selectPopover/demo/index.js | 86 +++++++++++-------- .../molecule/selectPopover/demo/index.scss | 6 ++ .../molecule/selectPopover/demo/package.json | 1 + .../molecule/selectPopover/package.json | 3 +- .../molecule/selectPopover/src/index.js | 24 +++++- .../selectPopover/src/styles/index.scss | 31 +++---- .../selectPopover/src/styles/settings.scss | 2 - 7 files changed, 90 insertions(+), 63 deletions(-) diff --git a/components/molecule/selectPopover/demo/index.js b/components/molecule/selectPopover/demo/index.js index 763fc9cb88..f9e274ce7f 100644 --- a/components/molecule/selectPopover/demo/index.js +++ b/components/molecule/selectPopover/demo/index.js @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import {useState} from 'react' +import {useRef, useState} from 'react' import MoleculeSelectPopover, { selectPopoverOverlayTypes, @@ -37,6 +37,8 @@ const Demo = () => { const [renderSelect, setRenderSelect] = useState(false) const [overlayType, setOverlayType] = useState(selectPopoverOverlayTypes.NONE) + const overlayContentRef = useRef() + const handleChangeItem = event => { const {target} = event @@ -123,6 +125,25 @@ const Demo = () => { ))}
+ + { + setOverlayType(value) + }} + placeholder="Select a overlay type..." + iconArrowDown={} + > + {Object.keys(selectPopoverOverlayTypes).map(key => ( + + {key} + + ))} + +
-
- {Object.values(selectPopoverOverlayTypes).map(type => ( - - ))} -

Component

{ onCustomAction={() => setUnconfirmedItems(items)} onClose={handleClose} onOpen={handleOpen} + overlayContentRef={overlayContentRef} overlayType={overlayType} placement={placement} selectText={selectText} @@ -254,30 +264,32 @@ const Demo = () => {
-

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo - recusandae labore numquam aliquam? Neque unde excepturi nam labore - velit a accusantium alias sunt quos voluptatem vel similique, pariatur - fugiat voluptate. -

-

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime, - incidunt animi a dignissimos aliquid voluptas quo quisquam adipisci - distinctio accusamus, officiis amet mollitia error, dolore vero - similique nihil? Corrupti, quaerat. -

-

- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam - possimus cumque ut sunt? Quo aperiam id magni placeat iusto, quidem - corporis enim, iste ad sapiente distinctio dicta, voluptatem minima - fuga! -

-

- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem - sint ratione architecto iste sapiente repudiandae inventore fugit - expedita deleniti! Debitis maiores corrupti ducimus id cum veniam - distinctio eos fuga repellat. -

+
+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo + recusandae labore numquam aliquam? Neque unde excepturi nam labore + velit a accusantium alias sunt quos voluptatem vel similique, + pariatur fugiat voluptate. +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime, + incidunt animi a dignissimos aliquid voluptas quo quisquam adipisci + distinctio accusamus, officiis amet mollitia error, dolore vero + similique nihil? Corrupti, quaerat. +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Totam + possimus cumque ut sunt? Quo aperiam id magni placeat iusto, quidem + corporis enim, iste ad sapiente distinctio dicta, voluptatem minima + fuga! +

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem + sint ratione architecto iste sapiente repudiandae inventore fugit + expedita deleniti! Debitis maiores corrupti ducimus id cum veniam + distinctio eos fuga repellat. +

+
) diff --git a/components/molecule/selectPopover/demo/index.scss b/components/molecule/selectPopover/demo/index.scss index ba21ea55f6..ef14732cef 100644 --- a/components/molecule/selectPopover/demo/index.scss +++ b/components/molecule/selectPopover/demo/index.scss @@ -22,4 +22,10 @@ } } } + + &-overlay { + &-content { + position: relative; + } + } } diff --git a/components/molecule/selectPopover/demo/package.json b/components/molecule/selectPopover/demo/package.json index c12143910c..59d1dd130c 100644 --- a/components/molecule/selectPopover/demo/package.json +++ b/components/molecule/selectPopover/demo/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "dependencies": { + "@s-ui/react-hook-use-portal": "1", "@s-ui/react-icons": "1", "@s-ui/react-molecule-dropdown-option": "2", "@s-ui/react-molecule-modal": "1", diff --git a/components/molecule/selectPopover/package.json b/components/molecule/selectPopover/package.json index cb196d2e44..27eb57bebe 100644 --- a/components/molecule/selectPopover/package.json +++ b/components/molecule/selectPopover/package.json @@ -9,7 +9,8 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "@s-ui/react-atom-button": "1" + "@s-ui/react-atom-button": "1", + "@s-ui/react-hook-use-portal": "1" }, "peerDependencies": { "@s-ui/component-dependencies": "1" diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 5dde4c41c0..ef2646608e 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -1,9 +1,17 @@ -import {cloneElement, useCallback, useEffect, useRef, useState} from 'react' +import { + cloneElement, + Fragment, + useCallback, + useEffect, + useRef, + useState +} from 'react' import cx from 'classnames' import PropTypes from 'prop-types' import Button, {atomButtonDesigns} from '@s-ui/react-atom-button' +import usePortal from '@s-ui/react-hook-use-portal' import { BASE_CLASS, @@ -42,6 +50,7 @@ function MoleculeSelectPopover({ onClose = () => {}, onCustomAction = () => {}, onOpen = () => {}, + overlayContentRef, overlayType = OVERLAY_TYPES.NONE, placement, renderContentWrapper: renderContentWrapperProp, @@ -58,8 +67,10 @@ function MoleculeSelectPopover({ const previousIsOpen = usePrevious(isOpen) const selectRef = useRef() const contentWrapperRef = useRef() + const {Portal} = usePortal({target: overlayContentRef.current}) - const hasOverlay = overlayType !== OVERLAY_TYPES.NONE + const hasOverlay = + Boolean(overlayContentRef.current) && overlayType !== OVERLAY_TYPES.NONE const getPopoverClassName = () => { const {left, right} = @@ -279,7 +290,11 @@ function MoleculeSelectPopover({ {renderSelect()} {renderContentWrapper()} - {hasOverlay &&
} + {hasOverlay && ( + +
+ + )} ) } @@ -313,7 +328,8 @@ MoleculeSelectPopover.propTypes = { onClose: PropTypes.func, onCustomAction: PropTypes.func, onOpen: PropTypes.func, - overlayType: PropTypes.oneOf(Object.keys(OVERLAY_TYPES)), + overlayContentRef: PropTypes.node, + overlayType: PropTypes.oneOf(Object.values(OVERLAY_TYPES)), placement: PropTypes.oneOf([ PLACEMENTS.AUTO_END, PLACEMENTS.AUTO_START, diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index 9c5af68baa..7e5bea5b34 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -67,7 +67,7 @@ $base-class: '.sui-MoleculeSelectPopover '; border: $bd-select-popover-content; border-radius: $bdrs-select-popover-content; box-shadow: $bxsh-select-popover; - margin-top: $m-select-popover-popover; + margin-top: $m-m; position: absolute; min-width: $w-select-popover; z-index: $z-select-popover-select-popover; @@ -106,27 +106,20 @@ $base-class: '.sui-MoleculeSelectPopover '; @each $name, $type in $molecule-select-popover-overlay-types { &--#{'' + $name} { $bgc: map-get($type, bgc); - - &::before { - background-color: $bgc; - content: ''; - height: 100%; - left: 0; - margin-top: $m-select-popover-popover; - opacity: 0; - pointer-events: none; - position: absolute; - transition: opacity 0.25s ease-in; - width: 100%; - z-index: $z-select-popover-select-popover - 1; - } + background-color: $bgc; + content: ''; + height: 100%; + left: 0; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + transition: opacity 0.25s ease-in; + width: 100%; &.is-open { $op: map-get($type, op); - - &::before { - opacity: $op; - } + opacity: $op; } } } diff --git a/components/molecule/selectPopover/src/styles/settings.scss b/components/molecule/selectPopover/src/styles/settings.scss index 4ff3b85ba1..a72cc878c9 100644 --- a/components/molecule/selectPopover/src/styles/settings.scss +++ b/components/molecule/selectPopover/src/styles/settings.scss @@ -28,8 +28,6 @@ $op-select-popover-light-overlay: $op-select-popover-overlay !default; $bgc-select-popover-dark-overlay: $c-black !default; $bgc-select-popover-light-overlay: $c-white !default; -$m-select-popover-popover: $m-m !default; - $molecule-select-popover-overlay-types: ( dark: ( bgc: $bgc-select-popover-dark-overlay, From 4c56ed77515511715cccb6318b46e4fef110437a Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Fri, 14 Oct 2022 12:07:20 +0200 Subject: [PATCH 143/243] feat(components/molecule/selectPopover): overlayContentRef default value --- components/molecule/selectPopover/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index ef2646608e..86ca93c01c 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -50,7 +50,7 @@ function MoleculeSelectPopover({ onClose = () => {}, onCustomAction = () => {}, onOpen = () => {}, - overlayContentRef, + overlayContentRef = {}, overlayType = OVERLAY_TYPES.NONE, placement, renderContentWrapper: renderContentWrapperProp, @@ -328,7 +328,7 @@ MoleculeSelectPopover.propTypes = { onClose: PropTypes.func, onCustomAction: PropTypes.func, onOpen: PropTypes.func, - overlayContentRef: PropTypes.node, + overlayContentRef: PropTypes.object, overlayType: PropTypes.oneOf(Object.values(OVERLAY_TYPES)), placement: PropTypes.oneOf([ PLACEMENTS.AUTO_END, From 980aee27885945e254d989bd6cf7195879a981d1 Mon Sep 17 00:00:00 2001 From: Luis Garrido Date: Fri, 14 Oct 2022 13:55:02 +0200 Subject: [PATCH 144/243] feat(components/molecule/avatar): make optional hex background of fallback name --- .../molecule/avatar/src/AvatarFallbackName/index.js | 4 +++- components/molecule/avatar/src/index.js | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/components/molecule/avatar/src/AvatarFallbackName/index.js b/components/molecule/avatar/src/AvatarFallbackName/index.js index 9394745b5f..1e82bb9ff1 100644 --- a/components/molecule/avatar/src/AvatarFallbackName/index.js +++ b/components/molecule/avatar/src/AvatarFallbackName/index.js @@ -8,6 +8,7 @@ const MoleculeAvatarFallbackName = ({ name: nameProp, size, className: classNameProp, + isHexBackground = true, ...others }) => { const className = cx( @@ -27,7 +28,7 @@ const MoleculeAvatarFallbackName = ({
{name} @@ -38,6 +39,7 @@ const MoleculeAvatarFallbackName = ({ MoleculeAvatarFallbackName.displayName = 'MoleculeAvatarFallbackName' MoleculeAvatarFallbackName.propTypes = { className: PropTypes.string, + isHexBackground: PropTypes.bool, name: PropTypes.string, src: PropTypes.string, size: PropTypes.string diff --git a/components/molecule/avatar/src/index.js b/components/molecule/avatar/src/index.js index d583abd129..1d896fc15c 100644 --- a/components/molecule/avatar/src/index.js +++ b/components/molecule/avatar/src/index.js @@ -50,7 +50,12 @@ const MoleculeAvatar = forwardRef( } const fallback = ( - + ) return ( @@ -76,7 +81,8 @@ const MoleculeAvatar = forwardRef( size, skeleton, src, - imageProps + imageProps, + others ]) return ( From bc6e613fc29b51ed9f09118ab3b25eda2913aef0 Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Fri, 14 Oct 2022 14:48:20 +0200 Subject: [PATCH 145/243] feat(components/molecule/selectPopover): show portal node only if select popover is open --- .../molecule/selectPopover/src/index.js | 2 +- .../selectPopover/src/styles/index.scss | 10 ++-------- .../selectPopover/src/styles/settings.scss | 20 ++++++++++++------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 86ca93c01c..8fc146e5ab 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -291,7 +291,7 @@ function MoleculeSelectPopover({ {renderContentWrapper()}
{hasOverlay && ( - +
)} diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index 7e5bea5b34..9585a2b2d7 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -104,23 +104,17 @@ $base-class: '.sui-MoleculeSelectPopover '; &-overlay { @each $name, $type in $molecule-select-popover-overlay-types { - &--#{'' + $name} { + &--#{$name} { $bgc: map-get($type, bgc); + animation: op-overlay-animation 1s both; background-color: $bgc; content: ''; height: 100%; left: 0; - opacity: 0; pointer-events: none; position: absolute; top: 0; - transition: opacity 0.25s ease-in; width: 100%; - - &.is-open { - $op: map-get($type, op); - opacity: $op; - } } } } diff --git a/components/molecule/selectPopover/src/styles/settings.scss b/components/molecule/selectPopover/src/styles/settings.scss index a72cc878c9..f22f1d67ef 100644 --- a/components/molecule/selectPopover/src/styles/settings.scss +++ b/components/molecule/selectPopover/src/styles/settings.scss @@ -22,19 +22,25 @@ $op-select-popover: 0.4 !default; $z-select-popover-select-popover: $z-tooltips !default; -$op-select-popover-overlay: 0.6 !default; -$op-select-popover-dark-overlay: $op-select-popover-overlay !default; -$op-select-popover-light-overlay: $op-select-popover-overlay !default; +$op-select-popover-initial-overlay: 0 !default; +$op-select-popover-finish-overlay: 0.6 !default; $bgc-select-popover-dark-overlay: $c-black !default; $bgc-select-popover-light-overlay: $c-white !default; $molecule-select-popover-overlay-types: ( dark: ( - bgc: $bgc-select-popover-dark-overlay, - op: $op-select-popover-dark-overlay + bgc: $bgc-select-popover-dark-overlay ), light: ( - bgc: $bgc-select-popover-light-overlay, - op: $op-select-popover-light-overlay + bgc: $bgc-select-popover-light-overlay ) ) !default; + +@keyframes op-overlay-animation { + 0% { + opacity: $op-select-popover-initial-overlay; + } + 100% { + opacity: $op-select-popover-finish-overlay; + } +} From d52489facc557cb481234347340a5998fea1f3f0 Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Fri, 14 Oct 2022 14:49:37 +0200 Subject: [PATCH 146/243] feat(components/molecule/selectPopover): remove unnecessary class --- components/molecule/selectPopover/src/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 8fc146e5ab..980d416377 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -280,8 +280,7 @@ function MoleculeSelectPopover({ const overlayClassNames = cx( `${BASE_CLASS}-overlay`, - `${BASE_CLASS}-overlay--${overlayType}`, - {'is-open': isOpen} + `${BASE_CLASS}-overlay--${overlayType}` ) return ( From e699c8f46f67e237d8371e7011f58125cace5ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Fri, 14 Oct 2022 21:13:18 +0200 Subject: [PATCH 147/243] fix(components/atom/checkbox): return handler name properly --- components/atom/checkbox/src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/atom/checkbox/src/index.js b/components/atom/checkbox/src/index.js index bc1d2911f9..a18bb6e80b 100644 --- a/components/atom/checkbox/src/index.js +++ b/components/atom/checkbox/src/index.js @@ -33,7 +33,7 @@ const AtomCheckbox = forwardRef( indeterminate: indeterminateProp, indeterminateIcon: IndeterminateIcon, icon: IconProp, - name, + name: nameProp, onChange: onChangeFromProps, status, size = CHECKBOX_SIZES.MEDIUM, @@ -47,6 +47,7 @@ const AtomCheckbox = forwardRef( checkedProp, defaultCheckedProp ) + const name = name || id const [indeterminate, setIndeterminate, isIndeterminateControlled] = useControlledState(indeterminateProp, defaultIndeterminateProp) From 6be201ee278cf6f9f50cb95af875ba1dfb31a09d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Fri, 14 Oct 2022 21:45:18 +0200 Subject: [PATCH 148/243] docs(components/atom/checkbox): lint --- components/atom/checkbox/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/checkbox/src/index.js b/components/atom/checkbox/src/index.js index a18bb6e80b..6cc8e1a150 100644 --- a/components/atom/checkbox/src/index.js +++ b/components/atom/checkbox/src/index.js @@ -47,7 +47,7 @@ const AtomCheckbox = forwardRef( checkedProp, defaultCheckedProp ) - const name = name || id + const name = nameProp || id const [indeterminate, setIndeterminate, isIndeterminateControlled] = useControlledState(indeterminateProp, defaultIndeterminateProp) From fbe0e8fbd65accd95bf52bbaadebdb4664bdf3b0 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 14 Oct 2022 19:57:38 +0000 Subject: [PATCH 149/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1801d11af0..cdb3d07f5b 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.1%25-orange) -![branches](https://shields.io/badge/branches-57.78%25-AA0000) +![statements](https://shields.io/badge/statements-72.11%25-orange) +![branches](https://shields.io/badge/branches-57.82%25-AA0000) ![functions](https://shields.io/badge/functions-59.56%25-AA0000) -![lines](https://shields.io/badge/lines-73.88%25-orange) +![lines](https://shields.io/badge/lines-73.89%25-orange) ## ✨ Features From 5bbd23c40ea42c7f1e45beb4cbcd815a4a1efc60 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 14 Oct 2022 19:58:44 +0000 Subject: [PATCH 150/243] release(components/atom/checkbox): v3.2.0 [skip ci] --- components/atom/checkbox/CHANGELOG.md | 9 +++++++++ components/atom/checkbox/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/checkbox/CHANGELOG.md b/components/atom/checkbox/CHANGELOG.md index a554a9186c..b4e827a4ff 100644 --- a/components/atom/checkbox/CHANGELOG.md +++ b/components/atom/checkbox/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 3.2.0 (2022-10-14) + + +### Bug Fixes + +* **components/atom/checkbox:** return handler name properly ([e699c8f](https://github.com/SUI-Components/sui-components/commit/e699c8f46f67e237d8371e7011f58125cace5ca2)) + + + # 3.1.0 (2022-07-18) diff --git a/components/atom/checkbox/package.json b/components/atom/checkbox/package.json index deca2d4c86..4ac0833895 100644 --- a/components/atom/checkbox/package.json +++ b/components/atom/checkbox/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-checkbox", - "version": "3.1.0", + "version": "3.2.0", "description": "", "main": "lib/index.js", "scripts": { From 6ee1e012b7cee15c27b0a8a59bf42e88a5375c36 Mon Sep 17 00:00:00 2001 From: Sabrina Castelli Date: Tue, 11 Oct 2022 15:40:04 +0200 Subject: [PATCH 151/243] feat(components/atom/pinInput): create new token to be able to overwrite the placeholder color --- components/atom/pinInput/src/PinInputField.scss | 4 ++++ components/atom/pinInput/src/config.scss | 1 + 2 files changed, 5 insertions(+) diff --git a/components/atom/pinInput/src/PinInputField.scss b/components/atom/pinInput/src/PinInputField.scss index 9ab9a55566..0617600774 100644 --- a/components/atom/pinInput/src/PinInputField.scss +++ b/components/atom/pinInput/src/PinInputField.scss @@ -10,6 +10,10 @@ padding: 0; text-align: center; + &::placeholder { + color: $c-pin-input-placeholder; + } + &:focus { border: $bdw-s solid $c-primary-dark; cursor: text; diff --git a/components/atom/pinInput/src/config.scss b/components/atom/pinInput/src/config.scss index 6ddd06549d..13b3d82285 100644 --- a/components/atom/pinInput/src/config.scss +++ b/components/atom/pinInput/src/config.scss @@ -4,6 +4,7 @@ $bdw-pin-input-field: $bdw-s !default; $fw-pin-input-field: $fw-regular !default; $lh-pin-input-field: $lh-m !default; $m-pin-input-children: $m-m !default; +$c-pin-input-placeholder: inherit !default; $s-pin-input-field: ( // 64px From 7dd778851a1e50eb71da1c9a48cb915cd9fa500e Mon Sep 17 00:00:00 2001 From: Sabrina Castelli Date: Tue, 11 Oct 2022 16:13:20 +0200 Subject: [PATCH 152/243] feat(components/atom/pinInput): replace inherit by auto --- components/atom/pinInput/src/config.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/pinInput/src/config.scss b/components/atom/pinInput/src/config.scss index 13b3d82285..ac371a24cd 100644 --- a/components/atom/pinInput/src/config.scss +++ b/components/atom/pinInput/src/config.scss @@ -4,7 +4,7 @@ $bdw-pin-input-field: $bdw-s !default; $fw-pin-input-field: $fw-regular !default; $lh-pin-input-field: $lh-m !default; $m-pin-input-children: $m-m !default; -$c-pin-input-placeholder: inherit !default; +$c-pin-input-placeholder: auto !default; $s-pin-input-field: ( // 64px From 92c334339a9b2f177db1a643a5d42f3617672c5e Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 11 Oct 2022 14:23:56 +0000 Subject: [PATCH 153/243] release(components/atom/pinInput): v1.11.0 [skip ci] --- components/atom/pinInput/CHANGELOG.md | 10 ++++++++++ components/atom/pinInput/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/atom/pinInput/CHANGELOG.md b/components/atom/pinInput/CHANGELOG.md index 28495d9be8..1c14c4970d 100644 --- a/components/atom/pinInput/CHANGELOG.md +++ b/components/atom/pinInput/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.11.0 (2022-10-11) + + +### Features + +* **components/atom/pinInput:** create new token to be able to overwrite the placeholder color ([513ae8a](https://github.com/SUI-Components/sui-components/commit/513ae8acc0728d6aa9e1a5780871985de2b52b3d)) +* **components/atom/pinInput:** replace inherit by auto ([c2f410e](https://github.com/SUI-Components/sui-components/commit/c2f410e589644bcbb1a26c5c107a73f336442d82)) + + + # 1.10.0 (2022-09-05) diff --git a/components/atom/pinInput/package.json b/components/atom/pinInput/package.json index 2a30c11ba6..107a9be070 100644 --- a/components/atom/pinInput/package.json +++ b/components/atom/pinInput/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-pin-input", - "version": "1.10.0", + "version": "1.11.0", "description": "", "main": "lib/index.js", "scripts": { From 5e1c008d9682cd5fd8e616186d60ea9472aac148 Mon Sep 17 00:00:00 2001 From: "alfredo.narvaez" Date: Tue, 11 Oct 2022 13:09:23 +0200 Subject: [PATCH 154/243] fix(components/molecule/select): accept onblur prop ISSUES CLOSED: #2282 --- components/molecule/select/src/index.js | 11 +++++++++- components/molecule/select/test/index.test.js | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/components/molecule/select/src/index.js b/components/molecule/select/src/index.js index ee9c8b0744..76473d49d9 100644 --- a/components/molecule/select/src/index.js +++ b/components/molecule/select/src/index.js @@ -28,6 +28,7 @@ import { const MoleculeSelect = forwardRef((props, forwardedRef) => { const { + onBlur, isOpen, onToggle, children, @@ -39,6 +40,7 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { refMoleculeSelect: refMoleculeSelectFromProps, 'aria-label': ariaLabel } = props + const refMoleculeSelect = useRef(refMoleculeSelectFromProps) const refsMoleculeSelectOptions = useRef([]) const ref = useMergeRefs(forwardedRef, refMoleculeSelect) @@ -125,7 +127,10 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { } } - const handleFocusOut = () => setFocus(false) + const handleFocusOut = e => { + onBlur(e) + setFocus(false) + } const handleFocusIn = () => !disabled && setFocus(true) @@ -185,6 +190,9 @@ MoleculeSelect.propTypes = { /** if list of options is displayed or not */ isOpen: PropTypes.bool, + /** callback onBlur to be triggered when focused outside of the input */ + onBlur: PropTypes.func, + /** callback when arrow up/down is clicked → to show/hide list of options */ onToggle: PropTypes.func, @@ -232,6 +240,7 @@ MoleculeSelect.propTypes = { } MoleculeSelect.defaultProps = { + onBlur: () => {}, disabled: false, keysSelection: SELECTION_KEYS, onChange: () => {}, diff --git a/components/molecule/select/test/index.test.js b/components/molecule/select/test/index.test.js index e1ec6bb9fc..d39dd6633c 100644 --- a/components/molecule/select/test/index.test.js +++ b/components/molecule/select/test/index.test.js @@ -9,6 +9,9 @@ import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' +import sinon from 'sinon' + +import userEvents from '@testing-library/user-event' import json from '../package.json' import * as pkg from '../src/index.js' @@ -85,6 +88,24 @@ describe(json.name, () => { // Then expect(findClassName(container.innerHTML)).to.be.null }) + + it('should call onBlur callback', () => { + const spy = sinon.spy() + + const props = { + onBlur: spy + } + + // When + const {getByRole} = setup(props) + const textBox = getByRole('textbox') + + userEvents.click(textBox) + userEvents.tab() + + // Then + sinon.assert.calledOnce(spy) + }) }) describe('moleculeSelectDropdownListSizes', () => { From 5b9a1735bf12072aeef89a22b9c6d8b33896d34c Mon Sep 17 00:00:00 2001 From: "alfredo.narvaez" Date: Tue, 11 Oct 2022 16:18:19 +0200 Subject: [PATCH 155/243] refactor(components/molecule/select): use explicit naming for event --- components/molecule/select/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/molecule/select/src/index.js b/components/molecule/select/src/index.js index 76473d49d9..ed1c9bb399 100644 --- a/components/molecule/select/src/index.js +++ b/components/molecule/select/src/index.js @@ -127,8 +127,8 @@ const MoleculeSelect = forwardRef((props, forwardedRef) => { } } - const handleFocusOut = e => { - onBlur(e) + const handleFocusOut = event => { + onBlur(event) setFocus(false) } From fc58b3baed7f0f43e87ce2392cfb62ce27d26f8a Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 11 Oct 2022 14:32:35 +0000 Subject: [PATCH 156/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 65ae548d10..0f648928d6 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.46%25-orange) -![branches](https://shields.io/badge/branches-57.21%25-AA0000) -![functions](https://shields.io/badge/functions-58.53%25-AA0000) -![lines](https://shields.io/badge/lines-73.27%25-orange) +![statements](https://shields.io/badge/statements-71.98%25-orange) +![branches](https://shields.io/badge/branches-57.71%25-AA0000) +![functions](https://shields.io/badge/functions-59.31%25-AA0000) +![lines](https://shields.io/badge/lines-73.75%25-orange) ## ✨ Features From 4a8b06ff518e967d9810e23af76384ca59251b8d Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 11 Oct 2022 14:33:37 +0000 Subject: [PATCH 157/243] release(components/molecule/select): v1.57.0 [skip ci] --- components/molecule/select/CHANGELOG.md | 9 +++++++++ components/molecule/select/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/select/CHANGELOG.md b/components/molecule/select/CHANGELOG.md index c3fcf5c6fb..b8246404aa 100644 --- a/components/molecule/select/CHANGELOG.md +++ b/components/molecule/select/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.57.0 (2022-10-11) + + +### Bug Fixes + +* **components/molecule/select:** accept onblur prop ([ad3f8fb](https://github.com/SUI-Components/sui-components/commit/ad3f8fb08be2260ffba01fce160c4d3df3814754)), closes [#2282](https://github.com/SUI-Components/sui-components/issues/2282) + + + # 1.56.0 (2022-10-04) diff --git a/components/molecule/select/package.json b/components/molecule/select/package.json index 4a3e655c35..9a2b056e30 100644 --- a/components/molecule/select/package.json +++ b/components/molecule/select/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select", - "version": "1.56.0", + "version": "1.57.0", "description": "", "main": "lib/index.js", "scripts": { From 0156ea1b5ff99495fe815effe4c5296de97c5289 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Tue, 16 Aug 2022 11:05:18 +0200 Subject: [PATCH 158/243] feat(components/molecule/tabs): make tabs accesibles --- .../tabs/src/components/MoleculeTab.js | 3 ++ .../tabs/src/components/MoleculeTabs.js | 23 +++++++---- components/molecule/tabs/test/index.test.js | 38 +++++++++++++++++++ 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTab.js b/components/molecule/tabs/src/components/MoleculeTab.js index 52636797f5..85e9c0e3d7 100644 --- a/components/molecule/tabs/src/components/MoleculeTab.js +++ b/components/molecule/tabs/src/components/MoleculeTab.js @@ -54,6 +54,9 @@ const MoleculeTab = forwardRef( className={className} onClick={handleChange} ref={useMergeRefs(innerRef, forwardedRef)} + role="tab" + aria-selected={active} + aria-controls={`molecule-tab-content-${numTab}`} > {icon && {icon}} {!isNaN(count) && {count}} diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 754f1ef41e..eee9515cb1 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -42,20 +42,29 @@ const MoleculeTabs = ({ const activeTabContent = childrenArray.reduce((activeContent, child) => { if (child) { - const {children: childrenChild, active} = child.props - return active ? childrenChild : activeContent + const {children: childrenChild, active, label, numTab} = child.props + return active ? ( +
+ {childrenChild} +
+ ) : ( +
{activeContent}
+ ) } - return activeContent + return
{activeContent}
}, null) return (
-
    +
      {extendedChildren}
    - {activeTabContent ? ( -
    {activeTabContent}
    - ) : null} + {activeTabContent || null}
) } diff --git a/components/molecule/tabs/test/index.test.js b/components/molecule/tabs/test/index.test.js index 36633d62dd..0128f895b0 100644 --- a/components/molecule/tabs/test/index.test.js +++ b/components/molecule/tabs/test/index.test.js @@ -10,6 +10,8 @@ import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' +import {fireEvent} from '@testing-library/react' + import json from '../package.json' import * as pkg from '../src/index.js' @@ -148,6 +150,42 @@ describe(json.name, () => { count[2].toString() ) }) + + it('should switch content when tab 2 is clicked', () => { + // Given + const library = pkg + const {MoleculeTab} = library + const expectedContent1 = 'Content 1' + const expectedContent2 = 'Content 2' + const props = { + children: [ + + {expectedContent1} + , + + {expectedContent2} + + ] + } + + // When + const {getByRole} = setup(props) + const tab1 = getByRole('tab', {name: 'Tab 1'}) + expect(tab1).to.have.attribute('aria-selected', 'true') + + const content1 = getByRole('tabpanel') + expect(content1.innerHTML).to.equal(expectedContent1) + + // Click on second tab + const tab2 = getByRole('tab', {name: 'Tab 2'}) + expect(tab2).to.have.attribute('aria-selected', 'false') + fireEvent.click(tab2) + const content2 = getByRole('tabpanel') + + // Then + expect(tab2).to.have.attribute('aria-selected', 'true') + expect(content2.innerHTML).to.equal(expectedContent2) + }) }) describe('moleculeTabsTypes', () => { From 4200ca3b277741c7043266e9825c73f43f6b4aca Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Tue, 16 Aug 2022 11:21:14 +0200 Subject: [PATCH 159/243] refactor(components/molecule/tabs): not update activeContent element --- components/molecule/tabs/src/components/MoleculeTabs.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index eee9515cb1..c55f241ed6 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -42,10 +42,9 @@ const MoleculeTabs = ({ const activeTabContent = childrenArray.reduce((activeContent, child) => { if (child) { - const {children: childrenChild, active, label, numTab} = child.props + const {children: childrenChild, active, numTab} = child.props return active ? (
) : ( -
{activeContent}
+ activeContent ) } - return
{activeContent}
+ return activeContent }, null) return ( From 77a3429526dc09bc1ee0fec76b076864876df6f3 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Tue, 16 Aug 2022 12:09:06 +0200 Subject: [PATCH 160/243] feat(components/molecule/tabs): add orientation aria attribute --- .../molecule/tabs/src/components/MoleculeTabs.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index c55f241ed6..59b9e7ce21 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -25,6 +25,7 @@ const MoleculeTabs = ({ [`${BASE_CLASS}--${type}`]: type }) const childrenArray = Children.toArray(children) + const isVerticalOrientation = type === TYPES.VERTICAL const [isIntersecting, outerRef] = useOnScreen() @@ -60,7 +61,14 @@ const MoleculeTabs = ({ return (
-
    +
      {extendedChildren}
    {activeTabContent || null} From d520c54a872b498176ea61b1d56fe6c89a093ed5 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Mon, 10 Oct 2022 14:57:24 +0200 Subject: [PATCH 161/243] feat(components/molecule/tabs): add id prop to make tabs uniques --- .../molecule/tabs/src/components/MoleculeTab.js | 6 +++++- .../molecule/tabs/src/components/MoleculeTabs.js | 12 +++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTab.js b/components/molecule/tabs/src/components/MoleculeTab.js index 85e9c0e3d7..bd256c93dc 100644 --- a/components/molecule/tabs/src/components/MoleculeTab.js +++ b/components/molecule/tabs/src/components/MoleculeTab.js @@ -21,6 +21,7 @@ const MoleculeTab = forwardRef( count, disabled, icon, + id = 'molecule-tab-content', isIntersecting, label, numTab, @@ -56,7 +57,7 @@ const MoleculeTab = forwardRef( ref={useMergeRefs(innerRef, forwardedRef)} role="tab" aria-selected={active} - aria-controls={`molecule-tab-content-${numTab}`} + aria-controls={`${id}-${numTab}`} > {icon && {icon}} {!isNaN(count) && {count}} @@ -76,6 +77,9 @@ MoleculeTab.propTypes = { /** icon (React component) */ icon: PropTypes.node, + /** id used to make tabs unique per page */ + id: PropTypes.string, + /** count to display */ count: PropTypes.string, diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 59b9e7ce21..924b430ef9 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -16,6 +16,7 @@ import { const MoleculeTabs = ({ autoScrollIntoView = true, children, + id = 'molecule-tab-content', onChange, type, variant @@ -37,6 +38,7 @@ const MoleculeTabs = ({ autoScrollIntoView, isIntersecting, numTab, + id, onChange }) }) @@ -44,12 +46,9 @@ const MoleculeTabs = ({ const activeTabContent = childrenArray.reduce((activeContent, child) => { if (child) { const {children: childrenChild, active, numTab} = child.props + return active ? ( -
    +
    {childrenChild}
    ) : ( @@ -85,6 +84,9 @@ MoleculeTabs.propTypes = { /** children */ children: PropTypes.any, + /** id used to make tabs unique */ + id: PropTypes.string, + /** onChange */ onChange: PropTypes.func, From add620a42f7ebeab50c26ea0c4749df32ee4b02c Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Mon, 10 Oct 2022 15:46:37 +0200 Subject: [PATCH 162/243] feat(components/molecule/tabs): add pull request feedback --- components/molecule/tabs/src/components/MoleculeTabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 924b430ef9..1d7f566016 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -70,7 +70,7 @@ const MoleculeTabs = ({ > {extendedChildren}
- {activeTabContent || null} + {activeTabContent}
) } From 3dd5dfeed1514fa897030b9ca7abbf22e7a816a6 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Mon, 10 Oct 2022 15:57:16 +0200 Subject: [PATCH 163/243] feat(components/molecule/tabs): pull request feedback --- .../molecule/tabs/src/components/MoleculeTabs.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/components/molecule/tabs/src/components/MoleculeTabs.js b/components/molecule/tabs/src/components/MoleculeTabs.js index 1d7f566016..c82d5d1da2 100644 --- a/components/molecule/tabs/src/components/MoleculeTabs.js +++ b/components/molecule/tabs/src/components/MoleculeTabs.js @@ -47,13 +47,13 @@ const MoleculeTabs = ({ if (child) { const {children: childrenChild, active, numTab} = child.props - return active ? ( -
- {childrenChild} -
- ) : ( - activeContent - ) + if (active) { + return ( +
+ {childrenChild} +
+ ) + } } return activeContent }, null) From 447a9fa179c8b6f2c6b09058398dc39e605d3e6c Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 13 Oct 2022 08:38:17 +0000 Subject: [PATCH 164/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0f648928d6..1801d11af0 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.98%25-orange) -![branches](https://shields.io/badge/branches-57.71%25-AA0000) -![functions](https://shields.io/badge/functions-59.31%25-AA0000) -![lines](https://shields.io/badge/lines-73.75%25-orange) +![statements](https://shields.io/badge/statements-72.1%25-orange) +![branches](https://shields.io/badge/branches-57.78%25-AA0000) +![functions](https://shields.io/badge/functions-59.56%25-AA0000) +![lines](https://shields.io/badge/lines-73.88%25-orange) ## ✨ Features From dd02affc75f03f80bd85985ed51764500aa40954 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 13 Oct 2022 08:39:21 +0000 Subject: [PATCH 165/243] release(components/molecule/tabs): v2.37.0 [skip ci] --- components/molecule/tabs/CHANGELOG.md | 13 +++++++++++++ components/molecule/tabs/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/components/molecule/tabs/CHANGELOG.md b/components/molecule/tabs/CHANGELOG.md index 5b998059e8..8d9f1081b2 100644 --- a/components/molecule/tabs/CHANGELOG.md +++ b/components/molecule/tabs/CHANGELOG.md @@ -1,12 +1,25 @@ # CHANGELOG +# 2.37.0 (2022-10-13) + + +### Features + +* **components/molecule/tabs:** add id prop to make tabs uniques ([b90231d](https://github.com/SUI-Components/sui-components/commit/b90231dc07db9ef4dcc7943fafe2c634b38a1070)) +* **components/molecule/tabs:** add pull request feedback ([208e0be](https://github.com/SUI-Components/sui-components/commit/208e0bed5aa055ae796fc934d79c334b17acc1b4)) +* **components/molecule/tabs:** pull request feedback ([f32e971](https://github.com/SUI-Components/sui-components/commit/f32e9718a114586ba6e9139406c0db8f330100fd)) + + + # 2.36.0 (2022-09-22) ### Features +* **components/molecule/tabs:** add orientation aria attribute ([71296a3](https://github.com/SUI-Components/sui-components/commit/71296a319365c6109c7e9aaa2077933ceb80d09e)) * **components/molecule/tabs:** Change tabs to be able to modify current active tabs by updating pro ([3f6a23e](https://github.com/SUI-Components/sui-components/commit/3f6a23e3538970054c289b4607c806baa72c6922)) * **components/molecule/tabs:** control/uncontroll active tabs ([7945c33](https://github.com/SUI-Components/sui-components/commit/7945c339e5a145a2d593b2f68d4344aea2100f7b)) +* **components/molecule/tabs:** make tabs accesibles ([b4ebaf3](https://github.com/SUI-Components/sui-components/commit/b4ebaf3f60efa0bb51422059bf631f9e1e076666)) * **components/molecule/tabs:** remove unnecesary prop injected ([4b67d13](https://github.com/SUI-Components/sui-components/commit/4b67d1304388ec589112eb3bd4d24767c8733367)) diff --git a/components/molecule/tabs/package.json b/components/molecule/tabs/package.json index 4dcb481958..1eb73a36c8 100644 --- a/components/molecule/tabs/package.json +++ b/components/molecule/tabs/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-tabs", - "version": "2.36.0", + "version": "2.37.0", "description": "", "main": "lib/index.js", "scripts": { From bffe8498d600babcb1d719ab25a6bf0faead6fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Fri, 14 Oct 2022 21:13:18 +0200 Subject: [PATCH 166/243] fix(components/atom/checkbox): return handler name properly --- components/atom/checkbox/src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/atom/checkbox/src/index.js b/components/atom/checkbox/src/index.js index 8751ab1011..3278faa15d 100644 --- a/components/atom/checkbox/src/index.js +++ b/components/atom/checkbox/src/index.js @@ -33,7 +33,7 @@ const AtomCheckbox = forwardRef( indeterminate: indeterminateProp, indeterminateIcon: IndeterminateIcon, icon: IconProp, - name, + name: nameProp, onChange: onChangeFromProps, status, size = CHECKBOX_SIZES.MEDIUM, @@ -47,6 +47,7 @@ const AtomCheckbox = forwardRef( checkedProp, defaultCheckedProp ) + const name = name || id const [indeterminate, setIndeterminate, isIndeterminateControlled] = useControlledState(indeterminateProp, defaultIndeterminateProp) From da5d52b1fe5bd280d99cc8b8d5b186e4815b48c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Fri, 14 Oct 2022 21:45:18 +0200 Subject: [PATCH 167/243] docs(components/atom/checkbox): lint --- components/atom/checkbox/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/atom/checkbox/src/index.js b/components/atom/checkbox/src/index.js index 3278faa15d..6f69c8a34a 100644 --- a/components/atom/checkbox/src/index.js +++ b/components/atom/checkbox/src/index.js @@ -47,7 +47,7 @@ const AtomCheckbox = forwardRef( checkedProp, defaultCheckedProp ) - const name = name || id + const name = nameProp || id const [indeterminate, setIndeterminate, isIndeterminateControlled] = useControlledState(indeterminateProp, defaultIndeterminateProp) From dc62d64fe0b42c9df9401b374141333b8e27a920 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 14 Oct 2022 19:57:38 +0000 Subject: [PATCH 168/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1801d11af0..cdb3d07f5b 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.1%25-orange) -![branches](https://shields.io/badge/branches-57.78%25-AA0000) +![statements](https://shields.io/badge/statements-72.11%25-orange) +![branches](https://shields.io/badge/branches-57.82%25-AA0000) ![functions](https://shields.io/badge/functions-59.56%25-AA0000) -![lines](https://shields.io/badge/lines-73.88%25-orange) +![lines](https://shields.io/badge/lines-73.89%25-orange) ## ✨ Features From 718aff09011f16d76ee95527b64c24ec98604496 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 14 Oct 2022 19:58:44 +0000 Subject: [PATCH 169/243] release(components/atom/checkbox): v3.2.0 [skip ci] --- components/atom/checkbox/CHANGELOG.md | 9 +++++++++ components/atom/checkbox/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/checkbox/CHANGELOG.md b/components/atom/checkbox/CHANGELOG.md index a554a9186c..b4e827a4ff 100644 --- a/components/atom/checkbox/CHANGELOG.md +++ b/components/atom/checkbox/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 3.2.0 (2022-10-14) + + +### Bug Fixes + +* **components/atom/checkbox:** return handler name properly ([e699c8f](https://github.com/SUI-Components/sui-components/commit/e699c8f46f67e237d8371e7011f58125cace5ca2)) + + + # 3.1.0 (2022-07-18) diff --git a/components/atom/checkbox/package.json b/components/atom/checkbox/package.json index deca2d4c86..4ac0833895 100644 --- a/components/atom/checkbox/package.json +++ b/components/atom/checkbox/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-checkbox", - "version": "3.1.0", + "version": "3.2.0", "description": "", "main": "lib/index.js", "scripts": { From 6bb29c3a8d3f362002e3751f060e98f0f320a6a0 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Fri, 14 Oct 2022 23:04:18 +0200 Subject: [PATCH 170/243] refactor(components/molecule/field): label cases updated --- .../demo/ArticleWithCustomCheckedIcon.js | 17 ++++------ components/molecule/field/src/Label.js | 34 ++++++------------- 2 files changed, 17 insertions(+), 34 deletions(-) diff --git a/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js b/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js index 175daefb42..5bda0d0021 100644 --- a/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js +++ b/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js @@ -1,26 +1,23 @@ -import {useState} from 'react' - import MoleculeCheckboxField from 'components/molecule/checkboxField/src' import PropTypes from 'prop-types' import {Article, H2, Paragraph} from '@s-ui/documentation-library' export const ArticleWithCustomCheckedIcon = ({className}) => { - const [isChecked, setIsChecked] = useState(false) - return (

With custom checked icon

Label click checks the icon as if it was native I'm a nodeLabel
} - checkedIcon={() =>

🍕

} + id="custom-checked-icon-id" + name="custom-checked-icon-name" + value="value" + label={
I'm a label as a react node clickable
} + checkedIcon={() =>

} + uncheckedIcon={() =>

} // eslint-disable-next-line no-console onChange={(e, {name, value, checked}) => { - console.log({[name]: value}) - setIsChecked(checked) + console.log({name, checked, value}) }} /> diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index 80ae577a44..8e2d25bf4a 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -1,5 +1,3 @@ -import {isElement} from 'react-is' - import PropTypes from 'prop-types' import AtomLabel from '@s-ui/react-atom-label' @@ -7,28 +5,16 @@ import Injector from '@s-ui/react-primitive-injector' import {CLASS_NODE_LABEL_CONTAINER} from './config.js' -const MoleculeLabel = ({label, name, nodeLabel, ...props}) => { - const innerLabel = () => { - if ((label && isElement(label)) || (!label && nodeLabel)) { - const isLabelHTMLElement = - label?.type === 'label' || nodeLabel?.type === 'label' - - return isLabelHTMLElement ? ( - - {!label ? nodeLabel : label} - - ) : ( - {!label ? nodeLabel : label}} - /> - ) - } else if (label) { - return - } - return null - } - return
{innerLabel()}
+const MoleculeLabel = ({label, name, nodeLabel, ...rest}) => { + const [Component, props] = + typeof label === 'string' + ? [AtomLabel, {text: label, name, ...rest}] + : [Injector, {htmlFor: name, ...rest}] + return ( +
+ +
+ ) } MoleculeLabel.propTypes = { From 5127c0e38e93201a0c9f24f5cd72959d55761099 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Sat, 15 Oct 2022 10:51:56 +0200 Subject: [PATCH 171/243] refactor(components/molecule/field): label simplified --- components/molecule/field/src/Label.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/components/molecule/field/src/Label.js b/components/molecule/field/src/Label.js index 8e2d25bf4a..ee5adcf393 100644 --- a/components/molecule/field/src/Label.js +++ b/components/molecule/field/src/Label.js @@ -9,7 +9,10 @@ const MoleculeLabel = ({label, name, nodeLabel, ...rest}) => { const [Component, props] = typeof label === 'string' ? [AtomLabel, {text: label, name, ...rest}] - : [Injector, {htmlFor: name, ...rest}] + : [ + Injector, + {htmlFor: name, children: !label ? nodeLabel : label, ...rest} + ] return (
From 58b581ed6f270c25fa3389975d96f813abb49760 Mon Sep 17 00:00:00 2001 From: corners2wall Date: Fri, 14 Oct 2022 13:04:41 +0300 Subject: [PATCH 172/243] docs(Root): Delete ux spec from components ISSUES CLOSED: #2376 --- components/atom/actionButton/UXDEF.md | 2 - components/atom/backToTop/UXDEF.md | 126 --------- components/atom/badge/UXDEF.md | 107 ------- components/atom/button/UXDEF.md | 262 ------------------ components/atom/card/UXDEF.md | 154 ---------- components/atom/checkbox/UXDEF.md | 146 ---------- components/atom/helpText/UXDEF.md | 84 ------ components/atom/icon/UXDEF.md | 126 --------- components/atom/image/UXDEF.md | 101 ------- components/atom/input/UXDEF.md | 147 ---------- components/atom/label/UXDEF.md | 57 ---- components/atom/panel/UXDEF.md | 133 --------- components/atom/progressBar/UXDEF.md | 128 --------- components/atom/radioButton/UXDEF.md | 146 ---------- components/atom/slider/UXDEF.md | 106 ------- components/atom/spinner/UXDEF.md | 91 ------ components/atom/switch/UXDEF.md | 135 --------- components/atom/tag/UXDEF.md | 106 ------- components/atom/tooltip/UXDEF.md | 143 ---------- components/atom/upload/UXDEF.md | 67 ----- components/behavior/sticky/UXDEF.md | 113 -------- components/molecule/accordion/UXDEF.md | 83 ------ components/molecule/autosuggest/UXDEF.md | 135 --------- components/molecule/autosuggestField/UXDEF.md | 135 --------- components/molecule/badgeCounter/UXDEF.md | 95 ------- components/molecule/breadcrumb/UXDEF.md | 107 ------- components/molecule/buttonGroup/UXDEF.md | 127 --------- components/molecule/checkboxField/UXDEF.md | 146 ---------- components/molecule/collapsible/UXDEF.md | 130 --------- components/molecule/dataCounter/UXDEF.md | 94 ------- components/molecule/dropdownList/UXDEF.md | 112 -------- components/molecule/dropdownOption/UXDEF.md | 112 -------- components/molecule/inputField/UXDEF.md | 147 ---------- components/molecule/modal/UXDEF.md | 210 -------------- components/molecule/notification/UXDEF.md | 184 ------------ components/molecule/pagination/UXDEF.md | 104 ------- components/molecule/progressSteps/UXDEF.md | 87 ------ components/molecule/quickAction/UXDEF.md | 46 --- components/molecule/radioButtonField/UXDEF.md | 146 ---------- components/molecule/radioButtonGroup/UXDEF.md | 146 ---------- components/molecule/rating/UXDEF.md | 91 ------ components/molecule/select/UXDEF.md | 120 -------- components/molecule/selectField/UXDEF.md | 120 -------- components/molecule/tabs/UXDEF.md | 113 -------- components/molecule/textareaField/UXDEF.md | 99 ------- components/molecule/thumbnail/UXDEF.md | 212 -------------- 46 files changed, 5581 deletions(-) delete mode 100644 components/atom/actionButton/UXDEF.md delete mode 100644 components/atom/backToTop/UXDEF.md delete mode 100644 components/atom/badge/UXDEF.md delete mode 100644 components/atom/button/UXDEF.md delete mode 100644 components/atom/card/UXDEF.md delete mode 100644 components/atom/checkbox/UXDEF.md delete mode 100644 components/atom/helpText/UXDEF.md delete mode 100644 components/atom/icon/UXDEF.md delete mode 100644 components/atom/image/UXDEF.md delete mode 100644 components/atom/input/UXDEF.md delete mode 100644 components/atom/label/UXDEF.md delete mode 100644 components/atom/panel/UXDEF.md delete mode 100644 components/atom/progressBar/UXDEF.md delete mode 100644 components/atom/radioButton/UXDEF.md delete mode 100644 components/atom/slider/UXDEF.md delete mode 100644 components/atom/spinner/UXDEF.md delete mode 100644 components/atom/switch/UXDEF.md delete mode 100644 components/atom/tag/UXDEF.md delete mode 100644 components/atom/tooltip/UXDEF.md delete mode 100644 components/atom/upload/UXDEF.md delete mode 100644 components/behavior/sticky/UXDEF.md delete mode 100644 components/molecule/accordion/UXDEF.md delete mode 100644 components/molecule/autosuggest/UXDEF.md delete mode 100644 components/molecule/autosuggestField/UXDEF.md delete mode 100644 components/molecule/badgeCounter/UXDEF.md delete mode 100644 components/molecule/breadcrumb/UXDEF.md delete mode 100644 components/molecule/buttonGroup/UXDEF.md delete mode 100644 components/molecule/checkboxField/UXDEF.md delete mode 100644 components/molecule/collapsible/UXDEF.md delete mode 100644 components/molecule/dataCounter/UXDEF.md delete mode 100644 components/molecule/dropdownList/UXDEF.md delete mode 100644 components/molecule/dropdownOption/UXDEF.md delete mode 100644 components/molecule/inputField/UXDEF.md delete mode 100644 components/molecule/modal/UXDEF.md delete mode 100644 components/molecule/notification/UXDEF.md delete mode 100644 components/molecule/pagination/UXDEF.md delete mode 100644 components/molecule/progressSteps/UXDEF.md delete mode 100644 components/molecule/quickAction/UXDEF.md delete mode 100644 components/molecule/radioButtonField/UXDEF.md delete mode 100644 components/molecule/radioButtonGroup/UXDEF.md delete mode 100644 components/molecule/rating/UXDEF.md delete mode 100644 components/molecule/select/UXDEF.md delete mode 100644 components/molecule/selectField/UXDEF.md delete mode 100644 components/molecule/tabs/UXDEF.md delete mode 100644 components/molecule/textareaField/UXDEF.md delete mode 100644 components/molecule/thumbnail/UXDEF.md diff --git a/components/atom/actionButton/UXDEF.md b/components/atom/actionButton/UXDEF.md deleted file mode 100644 index 38c23613cf..0000000000 --- a/components/atom/actionButton/UXDEF.md +++ /dev/null @@ -1,2 +0,0 @@ -# SUI - Action Buttons - diff --git a/components/atom/backToTop/UXDEF.md b/components/atom/backToTop/UXDEF.md deleted file mode 100644 index 9a1238b658..0000000000 --- a/components/atom/backToTop/UXDEF.md +++ /dev/null @@ -1,126 +0,0 @@ -# SUI - Back to Top -A simple way to return back to the top of a long content page. - -| Status | WIP | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @Irene L, @Chris J | - -## Structure - -Back to Top consists in a floating element located on the bottom right corner of the page and with a [z-index](https://paper.dropbox.com/doc/z-index-WIP--AMqq1DAVVk5QOOeNOojmYuRrAg-4QvLsXUoWXeWNDiQSzCBc) position. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2B6461E0A5AACA052E49BE35E96B0E3C48FC369AADACF7054C77A66FA69B339E_1536830620353_1-+Back+to+Top+-+Structure.png) - -## Behavior - -Back to Top shows up when the user scrolls down beyond 50% of the visible part of the page and disappears when the user reaches that same limit. -When the user clicks or taps on the Back to Top, the page scrolls to the top of the page and the Back to Top disappears. - - -## Types - -Back to Top has two **contrast variations** and three **content options** that can be combined as needed. - -**Contrast variations** in order to keep an optimal recognition: - -- For light background pages, use a a dark background Back to Top. -- For dark background pages, use a light background Back to Top. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2B6461E0A5AACA052E49BE35E96B0E3C48FC369AADACF7054C77A66FA69B339E_1536830638907_2.1-+Back+to+Top+-+Types+-+Contrast.png) - -**Content options** in order to adapt to different needs and device contexts: - -- Icon (up arrow) + text label. -- Only icon (up arrow). -- Only text label. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2B6461E0A5AACA052E49BE35E96B0E3C48FC369AADACF7054C77A66FA69B339E_1536830649012_2.2-+Back+to+Top+-+Types+-+Content.png) - -## Contents - -- The icon should always be an arrow pointing up. -- The text label should be short and brief, preferably one word (Top, Up, Subir, Ir arriba, etc.) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2B6461E0A5AACA052E49BE35E96B0E3C48FC369AADACF7054C77A66FA69B339E_1536847244254_3-+Back+to+Top+-+Content.png) - -## Visual - -Visuals should be custom on each vertical. This specs are for a SUi white label design: - -FONT -font-size: #fs-m (font-size:16px & line-height:20px) - -ICON -size: #m - -COLORS DARK CONTRAST -background $bgc-gray-d2 -font $c-white - -COLORS LIGHT CONTRAST -background $c-white -font $c-primary - -OPACITY -rest: 80 -hover/active: 100 - -BORDER RADIUS -2px - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2B6461E0A5AACA052E49BE35E96B0E3C48FC369AADACF7054C77A66FA69B339E_1536831684577_4-+Back+to+Top+-+Visual+v2.png) - -## Responsive - -For the mobile breakpoint, it is recommended to use the only icon option. - -## Motion - -By default, Back to top appears with a delay (**Show - 250ms ease in)** and is hidden with a delay **Hide - 250ms ease out** and a **Fade of 250ms** -You can customize the delay and the fade from 0ms to the time you need. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2B6461E0A5AACA052E49BE35E96B0E3C48FC369AADACF7054C77A66FA69B339E_1536846307691_5-+Back+to+Top+-+Motion.gif) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible: Information should not be supported only by one sense -8. Content should be written in common language -9. Interactive elements should be differentiated from content -10. Clickable area should be sufficient -14. Content should be able to increase in size -15. Content should have enough contrast to its background -16. Text should always be displayed as text - - -## Links - -- Zeplin: https://zpl.io/VqwNy3N - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet - diff --git a/components/atom/badge/UXDEF.md b/components/atom/badge/UXDEF.md deleted file mode 100644 index 900e203958..0000000000 --- a/components/atom/badge/UXDEF.md +++ /dev/null @@ -1,107 +0,0 @@ -# Badges - -We use badges to give contextual emphasis to an element on the UI, highlighting information or clarifying a status. - -It is important to bear in mind that if they are used in large numbers, they increase the visual noise. - -| Status | Complete| -| :---- | :---- | -| Current version | 1.1 | -| Category | Atom | -| Owners | UX @Julia C, @Daniel P, FE @Julian G| - -## Structure - -- Container: unlike tags, they have a rectangular format. They may be invisible. -- Icon: the icon may be included if it is a small size without a container or if it is a large size. -- Text content: this is obligatory. - - - -## Behaviour - -- Badges only have 1 status. There is no variation and the user cannot interact with them; they are merely informative. -- They must be as brief as possible and never have multiple lines. Text is limited to 100 characters, with an average of 20 characters. -- If the maximum width is exceeded (240px desktop and mobile), omit part of the text at the end. Compensate the cut off text with the title. -- For mobile devices we do not have the title and there is no alternative for the user to see the complete type. However, the percentage of cut off tags is very low. - - - - -## Types - -There are 2 sizes of badges: Small and Large. -Besides, we classify badges in 2 types: With background and without background. - -| | Without background | With background | -| ----- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | -| Small | line height = 14px
container height = 16px
side padding = 8px | font size = 12px
line height = 14px
icons = yes, mandatory | -| Large | font size = 16px
line height = 20px
icons = yes, optional
container height = 24px
site padding = 8px | font size = 16px
line height = 20px
icons = yes, mandatory | - -### With background - - - - - -### Without background - - - -## Content - -- The text can be accompanied by an icon in some cases: small without background, large with and without background (see table at Types). -- If accepted, the icon can be placed either right side or left side, but not both sides at the same time. - - -## Visual - -The colours that may be used are colours associated with a status: “positive – green”, “neutral – yellow” and “negative – red”. There is also another neutral grey default colour. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Content should be able to increase in size -- Content should have enough contrast to its background - -## Links - -- Zeplin: https://zpl.io/bJEAJrr - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/brmY405 -- Milanuncios -- Motor: https://zpl.io/V1lwQyB - -## Changelog - -### Version 1.1 - -*Deleted from de previous version:* - -- Types: Without background + Small: font-size = 14px / line height = 16px. - -*Added in this version:* - -- Types: table of different types with details about text sizes and measurements. - - We added the case “Without background + Large”. - - Text sizes changed. Without background + Small: font-size = 12px / line height = 14px - - We included details about the use of icons. - -- Content: icons are allowed both left and right side, never at the same time. - -### Version 1.0 - -Document created \ No newline at end of file diff --git a/components/atom/button/UXDEF.md b/components/atom/button/UXDEF.md deleted file mode 100644 index 5fc83ea69f..0000000000 --- a/components/atom/button/UXDEF.md +++ /dev/null @@ -1,262 +0,0 @@ -# SUI - Buttons - -The buttons usually act as the main call to action for the users, focusing their attention on what they need to do at each moment. - -| Status | Complete | -| :-------------- | :-------------------------------------------------------- | -| Current version | 2.0 | -| Category | Atom | -| Owners | @turolopezsanabria, UX @Julia C, UI @Chris J, FE @David A | - -## Structure - -- **Container:** it’s mandatory, although in some cases it may not be visible (transparent background) -- **Copy/Text:** it’s common but not always mandatory. -- **Icon:** optional. - -## Types - -- **Solid:** Solid colour no shadow nor border in SUI by default -- **Outline:** White background, \$bdw-s border and border color in SUI by default -- **Flat:** Transparent background, no border in SUI by default - -## Style - -- **Primary:** Primary colour in SUI by default -- **Secondary:** Secondary colour in SUI by default -- **Tertiary:** Tertiary colour in SUI by default -- **Accent:** Accent colour in SUI by default -- **Neutral:** Grey colour in SUI by default -- **Semantics** Use the semantic colours - - Success (also known as "Green", or "Positive") - - Error (also known as "Red", or "Negative") - - Warning (also known as "Alert") -- **Social-media** Use social media colours by default (new values to add in Tokens) - - Facebook (also known as "FB") - - Whatsapp - - Youtube - - Twitter - - Instagram - -## Contrast variations - -All buttons will be available in negative version as well (to be displayed over dark backgrounds) - -## Sizes - -- Small: 32px tall (also known as "s", or "sm") -- Medium: 40px tall (also known as "m", or "md") -- Large: 40px tall (also known as "l", or "lg") - -## Button widths - -The widths of the buttons depend on the text they contain, as well as the defined paddings. - -Occasionally, you may use a “full-width" or “wider” button whose width will be 100% of the container in which it is placed, as seen on the examples below - -## Content - -### Shapes - -The buttons will be available in 3 shapes: - -- Square -- Rounded (br 4px by default in SUI) -- Circle (br 50%) - -Each brand should be able to customise the border-radius per each of the 3 types. - -### Icons - -Icons on buttons highlight the meaning of the action and speed up recognition. - -You can add an icon to the button to highlight the action, but use them sparingly so as not to overload the page. - -The icons may be placed either without any text (icon buttons), to the left, or to the right of the text/copy. - -### Text - -Each vertical should be able to customise the text-styles of their buttons. - -## Visuals - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -4. Interactive elements and images should be correctly labelled -5. Interactive elements should be differentiated from content -6. Clickable area should be sufficient -7. Content should have enough contrast to its background - -## Links - -- Zeplin: - -## Customisable variables - -For all the buttons, any vertical should be able to change the following variables: - -- Border-radius for the rounded version (square always to 0, rounded always to 50%) -- Box-shadow -- Font-size -- Font-color for all the states (default, active, hover, disabled, etc) -- Background colour for all the states (default, active, hover, disabled, etc) -- Border colour for all the states (default, active, hover, disabled, etc) -- Border-size for all the states (default, active, hover, disabled, etc) -- Lateral paddings: $p-m for small buttons, and $p-l for medium and large buttons by default in SUI - -## Specific notes per vertical - -### Default values in SUI: - -- Border-radius for the rounded version: 4px (it should also be the value of \$bdrs-m in Tokens) -- Box shadow: none for all the styles -- Lateral paddings: $p-m for small buttons, and $p-l for medium and large buttons -- Font-sizes: - - - Small button: \$fz-s (16px) - - Medium button: \$fz-m (16px) - - Large button: \$fz-m (16px) - -- **Positive buttons** - - - Border size: \$bdw-s - - Background colours: ("Pure Color" is the colour without changes of lighness or darkness) - - Solid: - - Default: Pure Color - - Active and Hover: Color-L1 - - Disabled: Color-L5 - - Outline: - - Default: White - - Active and Hover: Color-L5 - - Disabled: White - - Flat: - - Default: Transparent - - Active and Hover: Color-L5 - - Disabled: Transparent - - Border colours: - - - Solid: - - Default: Transparent - - Active and Hover: Transparent - - Disabled: Transparent - - Outline: - - Default: Pure Color - - Active and Hover: Pure Color - - Disabled: Color-L5 - - Flat: - - Default: Transparent - - Active and Hover: Transparent - - Disabled: Transparent - - - Font-colours: - - - Solid: - - Default: White - - Active and Hover: White - - Disabled: White - - Outline: - - Default: Pure Color - - Active and Hover: Color-D1 - - Disabled: Color-D5 - - Flat: - - Default: Pure Color - - Active and Hover: Color-D1 - - Disabled: Color-D5 - - - Colours for SociaMedia: - - Facebook: #3b5998 - - Whatsapp: #25D366 - - Youtube: #FF0000 - - Twitter: #1DA1F2 - - Instagram: #833AB4 - -- **Negative buttons** - - - Background colours: ("Pure Color" is the colour without changes of lighness or darkness) - - Solid: - - Default: White - - Active and Hover: White - - Disabled: White - - Outline: - - Default: Transparent - - Active and Hover: Transparent - - Disabled: Transparent - - Flat: - - Default: Transparent - - Active and Hover: Transparent - - Disabled: Transparent - - Border colours: - - - Solid: - - Default: Transparent - - Active and Hover: Transparent - - Disabled: Transparent - - Outline: **Change border size to 2px for hover** - - Default: White - - Active and Hover: White - - Disabled: White - - Flat: - - Default: Transparent - - Active and Hover: Transparent - - Disabled: Transparent - - - Font-colours: - - - Solid: - - Default: Pure Color - - Active and Hover: Color-L1 - - Disabled: Color-D1 - - Outline: - - Default: White - - Active and Hover: White - - Disabled: White - - Flat: - - Default: Pure Color - - Active and Hover: Color-D1 - - Disabled: Color-D5 - - - Colours for SociaMedia: - - Facebook: #3b5998 - - Whatsapp: #25D366 - - Youtube: #FF0000 - - Twitter: #1DA1F2 - - Instagram: #833AB4 - -### Values for each of the themes: - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 2.0 - -Iterated by @turolopezsanabria - -- Complete re-definition of buttons -- Split between Shape, Type and Style. From now on, it will be possible to have outline buttons for any Style (primary, secondary, etc) -- Including more Styles: Social, Neutral and Tertiary - -### Version 1.3 - -- Text: customizable text button definition, per vertical and per button size. - -### Version 1.2 - -- Types: Added button icon right, button only with icon, button only with one letter. -- Visual: Small Button change horizontal paddings to 8px. -- Visual: Added visual of the disabled buttons state. diff --git a/components/atom/card/UXDEF.md b/components/atom/card/UXDEF.md deleted file mode 100644 index d3f590d0d7..0000000000 --- a/components/atom/card/UXDEF.md +++ /dev/null @@ -1,154 +0,0 @@ -# SUI - Cards -*A card is a flexible and extensible container, organized in a structure that is repeated more than once, that gives information about a product/client/article and serves as an entry point for more detailed* *information.* - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @Cristina P, @Joan M | - -To be considered a Card Component, it must meet 3 conditions: - -1. It has 1 or 2 areas max (see “structure”). -2. To have a structure that is repeated more than once. -3. It has to explain and redirect to an specific page: product/client/article. - -## Structure - -The card is structured in two main areas: - -1. **Media content:** as an illustration, photograph or images slider. (optional) -2. **Info content** related to the product/client/article. (mandatory) - -If there is no media, info content area must have two elements. -For instance: Title + short description, or short description + call to action button, etc. - -**To see all elements possibilities within the card please check out contents section below.** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2FC2FEDA4D8EE83C8E4AC235EE1D1602E4B2353E2B16015CAF86AA1E5799D07A_1517573560242_Captura+de+pantalla+2018-02-02+a+las+13.12.14.png) - -## Examples of what is a card and what is not a card - -These are considered a card: - -1. It has 1 or 2 areas max ✔ -2. It is repeated more than once. ✔ -3. It links to a specific product/client/article page. ✔ - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2FC2FEDA4D8EE83C8E4AC235EE1D1602E4B2353E2B16015CAF86AA1E5799D07A_1506667674231_Captura+de+pantalla+2017-09-28+a+las+16.26.04.png) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8995AEE7A2BC8A31A45AEB5B724EBBD1070DE7530248876FED4A66CB10DECC88_1508497030642_Captura+de+pantalla+2017-10-20+a+las+12.56.52.png) - -These are **not** considered a card: - -1. It contains 2 or more blocks of information ✔ -2. It is repeated more than once. ✔ -****3. **It DOES NOT links to a specific product/client/article** **page**. (In this case it redirects you to some general pages) ✗ - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2FC2FEDA4D8EE83C8E4AC235EE1D1602E4B2353E2B16015CAF86AA1E5799D07A_1506684177658_Captura+de+pantalla+2017-09-29+a+las+13.22.15.png) - -## Behavior - -**A card will always expand to the 100% of its container or layout**. Hence the “horizontal” or the “vertical” view (see “responsive”): - -![examples of cards for motor](https://d2mxuefqeaa7sj.cloudfront.net/s_54347A4FF5BCB4E706A3A95FE75E34EE59D4D0F58880644FC4F0E042CE21DE0E_1520588586185_Captura+de+pantalla+2018-03-09+a+les+10.42.50.png) - -### Primary and secondary actions - -It is possible to have a primary action and also some secondary actions. -The cards itself can work as a linkable area to the primary action. Primary and secondary actions will be established including other elements/components such as: buttons, links, clickable areas… This decision has to be defined by the product team when integrating the card. - -### Focus - -Standard focus provided by browser will be used in the card also. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2FC2FEDA4D8EE83C8E4AC235EE1D1602E4B2353E2B16015CAF86AA1E5799D07A_1516179405503_Captura+de+pantalla+2018-01-17+a+las+9.55.43.png) - -Keyboard **“TAB”** should change focus to next focusable element. - -The order of priorities of the focus, in the internal elements of the card, will be decided by the vertical when the card is built. - -### Extra visibility - -If a card needs to be more visible, a different background color will be added. **This highlight color will be defined by each vertical.** - -![example of visibility in motor vertical using color yellow](https://d2mxuefqeaa7sj.cloudfront.net/s_54347A4FF5BCB4E706A3A95FE75E34EE59D4D0F58880644FC4F0E042CE21DE0E_1514385308798_Captura+de+pantalla+2017-12-27+a+les+15.34.47.png) - -### Skeleton - -As a card is a container of components, **the skeleton will be defined by its content** for the first version. For example, if the card has a media content, the image placeholder or media gallery will have the loading behavior described in their definition. - -## Types - -There is only one type of card that is so flexible in content that can be used to build any possible card needed. - -The order of elements inside the card will keep the same in horizontal and vertical views of the card as we assume the importance of the element for the user is the same no matter the view. - -## Visual - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_54347A4FF5BCB4E706A3A95FE75E34EE59D4D0F58880644FC4F0E042CE21DE0E_1520588996700_Captura+de+pantalla+2018-03-09+a+les+10.49.12.png) - -## Responsive - -**Each vertical will decide in which** [**breakpoint**](https://paper.dropbox.com/doc/SUI-Breakpoints--AOOfpSeDD3k2KUKs0LVz_75qAg-seYN3kSKY1ZNEOV527lnn) **the view will change from horizontal to vertical.** - - -### Horizontal view - -In the horizontal view, “media content” (if needed) will be NEXT TO the “Info Content”. Media Content size will be defined by each vertical. -- **Media content width** will be defined by each vertical and it can be in px (fixed width) or in percentage (fluid width). -- **Media content height** will be defined by the image aspect ratio. -- **Info content width** will be adapt to the remaining space. -- **Info content height** will be the same as media content height. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_54347A4FF5BCB4E706A3A95FE75E34EE59D4D0F58880644FC4F0E042CE21DE0E_1520587863181_Captura+de+pantalla+2018-03-09+a+les+10.30.36.png) - -### Vertical view - -In the vertical view, “media content” (if needed) will be BELOW the “Info Content”. -- **Media content width** will grow to be 100% width of its container. -- **Media content height** will be resized to fit image aspect ratio without cropping. -- **Info content width** will be the same as media content width -- **Info content height** will be defined by its inner content and inner components. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_54347A4FF5BCB4E706A3A95FE75E34EE59D4D0F58880644FC4F0E042CE21DE0E_1520589003956_Captura+de+pantalla+2018-03-09+a+les+10.49.22.png) - -We recommend using the vertical view of the card for mobile devices and the horizontal view for wider screens, but it is not mandatory. - -A card must maintain coherence of information in different resolutions but it is possible to make some adjustments to the elements in their mobile version: adding an ellipsis (…) to shorten a text element or masking an image. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -3. Focus should be visible -4. Heading structure should be consistent (important for voice over support tools) -15. Content should have enough contrast to its background - -Extra: The use of microformats is highly recommended. E.g http://microformats.org/wiki/hcard - -## Links - -Include useful links here (Zeplin, Tokens, Other components, etc). - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/atom/checkbox/UXDEF.md b/components/atom/checkbox/UXDEF.md deleted file mode 100644 index ae7c63afa0..0000000000 --- a/components/atom/checkbox/UXDEF.md +++ /dev/null @@ -1,146 +0,0 @@ -# SUI - Checkbox & Radio button -*Checkboxes are used when there are lists of options and the user may select any number of choices, including zero, one, or several. In other words, each checkbox is independent of all other checkboxes* ~~*in*~~*on* *the list, so checking one box doesn't uncheck the others.* -*A stand-alone checkbox is used for a single option that the user can turn on or off.* -*Each vertical can determine whether or not a stand-alone checkbox will be selected by default* - - -*Radio buttons are used when there is a list of options that mutually exclude each other. In other words, only one option can be selected, automatically deselecting the other preselected options.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Chris J, FE | - -**Recommendations:** - -- Take in consideration the next recommendation when the user must select between different options inside a range: -- Use **Radio button** when there are 2 to 5 options -- Use [Data Counter](https://paper.dropbox.com/doc/SUI-Data-counter--AQoAk39iIIJh2YPkZHAMA0OoAg-TqR9qBw4WRr5l5gNMvvEE) when there are 5 to 99 options (numbers) -- Use [Slider](https://paper.dropbox.com/doc/SUI-Slider--AQrmpIMeYmY2P1q1nQr~vOifAg-gPOtnVwgn8SUMDTjFTZ2q) when there is a big range of options. From 10 to 999 (like 10-20-30-50…) -- If possible, use Radio buttons instead of Select field (drop-down menus). Radio buttons have a lower cognitive load because they make all of the options permanently visible so that users can easily compare them. -- Use checkboxes and radio buttons only to change settings, not as action buttons that make something happen. - -## Structure - -- Checkbox & Radio button are a combination of 2 elements: Icon + Other element (on which makes the action)*. -*Examples of other elements: Label, card, image, table’s row… -- Check the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). -- At least 2 options must be selected for the radio button. If there is only one, then a Checkbox must be used. -- It is extremely important to present all the selection options that go together as group and to clearly separate them from the other groups on the same page. - -By default, a group of checkboxes or radio buttons are displayed vertically stacked as a list. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244295686_1-+Checks++Radios+-+Structure.png) - -However, a group of checkboxes or radio buttons may also be displayed in a horizontal line. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508756136492_3.2-+Checks++Radios+-+Inline.png) - -Remember to check the [Label d](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[z](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[efinition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -## Behavior - -### State - -- The Checkbox & Radio buttons have 5 statuses, because the “selected” status is also included, plus this new one when it is “focused”. -- For the first iteration, the focus will be the native Browser focus. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_93C20F5C4F821D493D97CF4844B0A35AACB52F92F3DF8EF54B5B096DF7826CA3_1521029713670_2-+Checks++Radios+-+Behavior.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508747391991_6-+Checks++Radios+-+Accessibility-Focus.png) - -## Content - -Preselected options aren’t recommended, especially in Radio Buttons. -Pre-selection can be used as an exception only in some cases where the information to select isn’t too important or when the system has complementary information to pre-select one option (for example, geolocalization). - -If a checkbox or radio button with an important decision is preselected and the user misses it, the user may move forward with the form with crucial information answered incorrectly. - -## Types - -### Ad hoc variations - -**INFOJOBS** -Sometimes, checkboxes and radio buttons are used that look different. Boxes that need to be selected are missing and they look more like buttons, but the underlying logic corresponds to these elements. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508922211401_7-+Checks++Radios+-+Custom-Border.png) - -**F****OTOCASA** ******&** ******COCHES** -Sometimes, checkboxes and radio buttons are used that look different. The checkbox or radio-button is hidden, and there is an illustration/image instead above its label. - -**Coches.net** -In coches, the status is represented by its opacity. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629373_coches_custom_check.png) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629378_coches_custom_check2.png) - -**Fotocasa** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1509358615443_Screen+Shot+2017-10-30+at+11.16.34.png) - -## Visual - -Checkbox & Radio buttons have their height defined by the label’s line-height and they are aligned from the center to the icon. -The margin between each individual Check/Radio~~,~~ displayed vertically, is 16px. - -Use standard visual representations. A Checkbox should be a small square that has a checkmark or an X when selected. A Radio button should be a small circle that has a solid circle inside it when selected. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244390294_4-+Checks++Radios+-+Visual.png) - -## Responsive - -Checkbox & Radio buttons can be aligned from horizontal to vertical grids, but the Label position must always be kept on the right side of the icon. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244399026_5.1-+Checks++Radios+-+Responsive.png) - -If a list label ~~was~~is very extensive, it will be a double line in responsive. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244411307_5.2-+Checks++Radios+-+Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient - -The active/clickable area has been defined as 24 px (only when it is for text+icon) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244425583_6-+Checks++Radios+-+Accessibility-Active+area.png) - -12. Controls should be correctly labeled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Benchmark: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Form Elements: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Zeplin: https://zpl.io/bo0eq9Z - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7JGJ -- Milanuncios -- Motor: https://zpl.io/brElMlr - -## Changelog - -### Version 1.0 - -- Component creation diff --git a/components/atom/helpText/UXDEF.md b/components/atom/helpText/UXDEF.md deleted file mode 100644 index 0848458881..0000000000 --- a/components/atom/helpText/UXDEF.md +++ /dev/null @@ -1,84 +0,0 @@ -# SUI - HelpText -*Help Text is a feedback that the system gives users to make them clearly understand which information is required or to notify them (after validation) of any errors in the entered data or of whether they were successful.* -*We will use the same type of feedback for the 2 types of system validations: “inline” or "after submission".* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Daniel P ,FE @Julian G | - -## Structure - -This component is based on an informative text that is combined with other atoms such as Input, Text Area, Checkbox and Radio buttons. -It has different typologies according to whether it is Helptext (informative) or Validation. See the typologies below. - -## Types - -**Information HelpText** -This is used for reporting general information, limits or causes. -It can be a fixed text just to remember some information to the user or it can be a “dynamic” text according to the data entered in the field. - -For example a dynamic characters counter - -The color of the Information Feedback must be similar to the regular text on the page. Black or gray scale. It can’t be any other color to don’t be confused with the validation HelpText. - -**Validation HelpText** -This is used for indicating whether the entered data is correct. It is provided by using the "Help Text" with a color depending on the validation: - -- **Error** = red color -- **Success** = green color - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_5CD1E4AFF52E7BBEDCD6B64C9AECFAA81EE0DBEF2B22CAB1AD4E67F81F0B68A2_1521105966678_validation.png) - -## Behavior - -If the Informative and Validation feedback are combined, the informative one will be kept, and validation will be added as a new row next to the input field (between the input field and the informative help text). - -When the Error or Succes feedback is used, the same color is given to the Label ant the - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2C2D91B22DA0B9C75B2C1B2A02CEE24250D0DA9CA7C42765FC0C6A8FF6E1AB73_1509625437161_inputs-validation2.png) - -## Content - -The Help Texts & Validation, especially Errors & Successes, must be completely clear to make the user understand what’s wrong or right. - -The text must be clear, concise and **short**. - -## Visual - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2C2D91B22DA0B9C75B2C1B2A02CEE24250D0DA9CA7C42765FC0C6A8FF6E1AB73_1509363515793_+helptext-visual.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -16. Text should always be displayed as text - -## Links - -Include useful links here (Zeplin, Tokens, Other components, etc). - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor: https://zpl.io/bzn16A3 - -## Changelog - -### Version 1.0 - -- Creation of the atom 21/11/2017 -- Small revisions, improvements and simplifications (David Giménez) 10/09/2018 - diff --git a/components/atom/icon/UXDEF.md b/components/atom/icon/UXDEF.md deleted file mode 100644 index e4f256727c..0000000000 --- a/components/atom/icon/UXDEF.md +++ /dev/null @@ -1,126 +0,0 @@ -# SUI - Icons -Icons System are designed to be simple, modern, friendly, and sometimes quirky. Each icon is reduced to its minimal form, expressing essential characteristics. - -SUI Icons is based on material by google, any vertical can custom with their external library, following the rules below. - -| Status | Ready for Dev | -| :---- | :---- | -| Current version | 2.0| -| Category | Atom | -| Owners | UX @xavier t, UI @xavier t ,FE @xavier t,UX @Nilo M | - -## Structure - -### Code - -The base icon is square, 24px, no security areas (margin or paddings) - -### Sketch - -- Artboard (view-box): 24x24px with transparent background -- Icon: Black, always as a shape/path (never a stroke) - -## Sizes - -The icon will increase in size from the 24x24px base grid, being based on path (never as stroke), hence the width of the lines will also scale proportionally. - -Available sizes: - -- **S**: 16x16px -- **M** **(Base)**: 24x24px -- **L**: 32x32px -- **XL**: 40x40px - -*Note: We recommend using an illustration for icons bigger than 40px.* - -## Exporting icons for SUI - -All the components in SUI will require you to provide an icon for your brand. - -By default, and for the SUI Studio preview, the components will use “Google Material” icons. This means that you have to provide the correct icon of your brand for each of the components. - -Please make sure you follow this rules: - -- All sizes scale from the original 24*24px base icon. This means that you can’t have more than one icon “weight” version for the same component in different sizes. -- You can’t use more than 1 color at the same time per icon. Icons are mono-color (any colour defined for icons) -- The SVG must be as *clean* as possible (no class name, no fill, etc). -- Export your icons from Sketch as SVG -- Extremely recommended: Open that SVG with [IconJar](https://geticonjar.com/) and export it again. We did many tests, and iconjar exports the cleanest version compared to Sketch and the Default iconography from Streamline. If you have a preferred way to clean your icons, you can still use it. -- Open the final SVG with your favourite code editor (Sublime for instance) and remove the “fill” in any. - -## Design best practices - -### Layout - -We recommend to keep a security space of 1-2px around the design area, but is not mandatory. -The 24x24px grid will help us to align and balance visual weights during the icon design process. - -Icon layout Safety Space - -### Clarity (Pixel perfection) - -If you want to create a new icon you should follow a certain rules to make it clear and optimum to render, draw vector nodes into absolute pixel coordinates (not decimal) as far as possible, - - - - - -As an exception you have to set or align the icon within the artboard in this kind of cases please use 0.25px movements. - - - -### Anatomy - Stroke & Fill - -All icons are finally based on path vector form, it should be as optimized as possible with a unique final shape/path with no extra groups or shapes. -Take into account to use as minimum vector as possible to reduce complexity in the final exports. - -**Attention to weight stroke styles** - -**Light**: It must contain a path made from a 1px stroke width. - -**Regular**: It must contain a path made from a 1,5px stroke width. - -**Bold**: It must contain a path made from a 2px stroke width. - - - -**Note** - -As you may notice design can be slightly different, between weights collections. If you design your icons in a 24x24 grid with 1px stroke weight, in 16px scale the stroke width changes to 0.75 and the icons will have a very light visualisation. - -### Stroke terminals - -Streamline icon set uses a rounded stroke style and the ends of the lines, but is not a mandatory rule is you override with another icon set. - - - -### Color - -By default the icon color is black but you can choose from a defined color set based on your [color definition](https://paper.dropbox.com/doc/SUI-Colors--AbdC~qNyCCes14Fyapq9sg7FAQ-TcHoMYNiXsDTzwdwHFbYT). - -**Note:** On the code side, the colour will be applied once per icon. Just one colour is possible. -If you don’t specify the colour, it will be overwritten from its parent container. By this approach most of the cases will be automatically match with the container text color, very convenient for buttons, notifications, etc. - -## Links - -Include useful links here (Zeplin, Tokens, Other components, etc). - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa: [Stramline Icon Set](https://www.streamlineicons.com/). This specific icon library doesn’t have a security space by default. Some icons need adjustment within the 24px artboard. -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet \ No newline at end of file diff --git a/components/atom/image/UXDEF.md b/components/atom/image/UXDEF.md deleted file mode 100644 index 51ed0ef7ee..0000000000 --- a/components/atom/image/UXDEF.md +++ /dev/null @@ -1,101 +0,0 @@ -# SUI - Image - -SUI Image is a container that loads an image inside, but not as a background (in that case is considered a panel with a background image. - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @Cristina P, @Joan M, FE @Julian G | - -## Differences between a SUI Image and a panel with a background image - -Images and panels with images can be a bit similar in terms of design, but they are very different in terms of use. - -To be considered an image: - -1. Image should not be used as a background ✔ -2. Image should have semantic meaning as an img -3. Image should have an alt description and be correctly labeled and focusable (see “Accesibility”)✔ - -If you are using an image as a background for a container with only decorative intentions, please consider using a [*panel with a background image*](https://paper.dropbox.com/doc/SUI-Panel-6xfWMxmr46z47azCEtw37) instead. - -## Structure - -SUI Image is composed by a container (that loads the image) with a background color, a loading layer, and the final image fully loaded . The image will adapt to its container width and height. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523357550678_Structure.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523357735660_Background.png) - -![The loading layer might be a skeleton or a progressive loading depending on the behavior we choose (see Behavior)](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523357615592_Loading+Layer.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523357573273_Content+Layer.png) - -## Behavior - -There are 3 possibilities for the image loading process: - -### A. Progressive loading with background color - -The container has a background-color and, while the image is loading, we show a lower quality version of the same image. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523357781959_Progressive+loading+with+background+color.png) - - -### B. Alternative image while loading / skeleton - -While the image is loading, we show a predefined image/skeleton. That means every image with this behavior will have the same loading image. -Skeleton while loading example: https://dribbble.com/shots/3876346-Skeleton-Loading - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523357807602_skeleton.png) - -### C. Background color and spinner while loading - -SUI Image has a background color and a spinner while the image is loading. This background color has to be in the subtle grey spectrum, but the exact color will be decided by every vertical. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1523362300298_skeleton+2.png) - -### In case of error - -When the image cannot be loaded because of an error we show an icon and a label aligned vertically and horizontally to its container. That icon and copy will be decided by each vertical. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95F23EDD56C476A42622C417D421F10A7B0D29397D7E80CA0AB0048319A85D3B_1524120342420_Case+of+error.png) - -## Responsive - -The SUI Image as a container adapts to the different breakpoints. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Content should have enough contrast to its background - -## Links - -Include useful links here (Zeplin, Tokens, Other components, etc). - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor: https://zpl.io/adkPXep - -## Changelog - -### Version 1.0 - -- https://drive.google.com/open?id=1OU9uwEvOoxcp54qYVL86weRB_YWFXEaT diff --git a/components/atom/input/UXDEF.md b/components/atom/input/UXDEF.md deleted file mode 100644 index b7db2490f3..0000000000 --- a/components/atom/input/UXDEF.md +++ /dev/null @@ -1,147 +0,0 @@ -# SUI - Input field -*Input is the text field that users fill in with different types of information thru alphanumeric text.* -*These include dates, passwords or even short answers.* - -*It should also be noted that Input it is a molecule because always is combined with other atoms like Label, Placeholder or HelpText.* - -| Status | Work in progress | -| :---- | :---- | -| Current version | 2.0 | -| Category | Molecule | -| Owners | UX @David G, @Daniel P ,FE @Julian G| - -## Structure - -- This component almost always it works with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT) & [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) atoms and usually it is combined with other atoms like [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc) or [Buttons](https://paper.dropbox.com/doc/SUI-Buttons-AvdtvjMAqbsFkTYSz3egT). -- Inputs have a flexible length that is adjustable to the grid of the page, except in a few cases where the length is fixed (see the Content cases below). -- The default size for inputs is Medium. Small size will be used only in a few cases -- Example: Filters in a left side column usually use the Small size. -- As an optional feature, the structure can contain a fixed icon or addons (left or right side) that visually indicates its contents or help the user understand and complete the input (see the Content cases below). - -![Those are the 2 sizes of the Input field, combined with Label and Placeholder atoms](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1511430472179_structure.png) - -## Behavior - -### States - -- Inputs have the 3 basic states: default, focused and disabled. -- Should be noted that Placeholder atom disappear when the Input is on focus status. This behavior helps the user understand that the field is ready to write on it. -- For the first iteration, the focus will be the native Browser focus. -![Input states combined with Label and Placeholder atoms](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537263844471_2-inputs-behavior.png) - -### Combined with buttons - -- When an Input is used in combination with buttons, they are always placed to the right of the input, and in responsive adaptation the order can never be changed. -- Remember: the button size will always adapt itself to the input size. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1510148996994_+Inputs-structure.png) - -## Content - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--ALcBKGls8YGd6z2D3u_cnE8MAg-IqZya9lRXdMvFm0PkT1Vu) atom that indicates what users are being asked. - -### Fixed inputs - -There are specific cases where the length of the input is not flexible and has a fixed length, as the following cases. The length it is calculated adding a fix margin to the left & right side of the content. - -Different types of content: - -- **Date field** -We will use the native browser date field -- **Postal Code** -- **Bank account** (1 input box with spaces/scripts between the blocks of numbers) -The code of this input, must be ready to accept the variations in the Country parameters or credit cards types variations. -- **Password** is an exception, that adds a new element: -- “Show” or “Hide” toggle inside the input text -To avoid confusion with secondary and tertiary buttons, this text may not be in capital letters - -Remember, Input (specially the password) can be combined with [HelpText & Validation](https://paper.dropbox.com/doc/SUI-HelpText-Validation-RZpyYPWRNVPzdC9fVrCtc). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537263897353_4-inputs-cases.png) - -The date field and the bank account will be in 1 unique filed. The reasons after studying corner cases and conducting an external benchmark were: - -- To continue with the current format (date) and keep it simple. -- Having the bank account in separate boxes doesn’t work on small screens. -- Having the bank account in separate boxes doesn’t make it intuitive for users who want to copy and paste. - - -### Icons and addons inside the input - -Optionally, an Input can include icons and addons. Text (non editable) that helps the user understand and makes it easier to fill the content. - -Even the visual design (colors, borders, icons…) are flexible to adapt to each vertical needs, there are some common rules to follow: - -1. **Icons** - 1. Aren’t placed inside “fixed gray box” - 2. Must be on the left side of the input - 1. **Exeption**: The [Select](https://paper.dropbox.com/doc/SUI-Select--ALdcLEuyP4LKqQkgmvdzGl0NAg-OrlQjuARbK4ZoPdMcSf7p) and [Autosuggest](https://paper.dropbox.com/doc/SUI-Autosuggest-field-new-WIP-zmn8DNgi7TQRmlqWG4kFD) components uses actionable icons at the right side. - 3. Cannot be text. Only visual icons -2. **Addons** - 1. Must be placed inside a “fixed gray box” - 2. It is NON-editable informative text - 3. Can be placed at the left or right side, depending on the needs. - 4. If it is combined with an icon, the addon must be placed to the right side, because the icon must be placed at the left side. - 5. Addons may not ever be used on the right side when it is combined with an interactive icon (like the arrow from [Select field](https://paper.dropbox.com/doc/SUI-Select-field-WIP--AM9~SFusS3v3n0VvUP_hv1kmAg-OrlQjuARbK4ZoPdMcSf7p), for example); because interactive icons are always on the right side. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537264334678_3-Addons.png) - -## Visual - -Here it is showed only the Input measures. -To see the margins between Input field and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -1. By default, the input box is rounded to 0. But every webpage (vertical) can adapt it to its UI needs. - -![Input mesures combined with Label, Placeholder and Icon atoms](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537264754902_6-+Inputs-visual.png) - -## Responsive - -The composition of different inputs can be displayed in a grid position when it is viewed on a desktop, but it must be displayed in a vertical position when it moves to a small screen. - -- The screen size will determine when the vertical position display should be changed. - -Regardless of the position of the inputs composition, the label must always follow its own definition position. Check the the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1508919220395_+Inputs-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -2. Focus should be visible -6. Information should not be supported only by one sense -10. Clickable area should be sufficient -12. Controls should be correctly labelled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/aBw5MMk - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2ZP5EGJ -- Milanuncios -- Motor: https://zpl.io/bzn16A3 - -## Changelog - -### Version 2.0 - -- Iteration. Now is going more simple to work more freely with other components. (decompose) - -### Version 1.0 - -- Creation of the atom \ No newline at end of file diff --git a/components/atom/label/UXDEF.md b/components/atom/label/UXDEF.md deleted file mode 100644 index fb0afccccf..0000000000 --- a/components/atom/label/UXDEF.md +++ /dev/null @@ -1,57 +0,0 @@ -# SUI - Label - -The Label is the name of the associated field, that explains what is the about. It should be clear, concise and short. - -It is positioned at the top or left side of the field, as needed or required for the responsive rules. - -| Status | Done | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Daniel P | - -## Responsive & Visual - -When a left side label is displayed on a small mobile screen, it must be relocated in top position. -Small mobile screens are determined by each vertical breakpoint. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2C2D91B22DA0B9C75B2C1B2A02CEE24250D0DA9CA7C42765FC0C6A8FF6E1AB73_1509358567673_label-structure.png) - -## Optional input - -By default, (best practices) the form will only ask the user for the required fields (the mandatories). Therefore, only the optional fields will be marked. -The way to do this will be with the text "(optional)" next to the Label. We recommend using a different shade of the label color to separate it from the main label. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2C2D91B22DA0B9C75B2C1B2A02CEE24250D0DA9CA7C42765FC0C6A8FF6E1AB73_1509358579504_label-types.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -16. Text should always be displayed as text - -## Links - -Include useful links here (Zeplin, Tokens, Other components, etc). - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor: https://zpl.io/bzn16A3 - -## Changelog - -### Version 1.0 - -- Component definition \ No newline at end of file diff --git a/components/atom/panel/UXDEF.md b/components/atom/panel/UXDEF.md deleted file mode 100644 index 8fd1af9185..0000000000 --- a/components/atom/panel/UXDEF.md +++ /dev/null @@ -1,133 +0,0 @@ -# SUI - Panel -*A panel is a container* *with an image or a color* *on its background.* - -| Status | WIP | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @María P, @Chris J ,FE @Pablo G | - -## Structure - -The panel is composed by 3 layers, from bottom to top: - -### 1. Background color - -It’s mandatory. When using an image panel, to ensure contrast between contents placed inside the container and the background in case the image cannot be loaded. When using a color panel, this is the only layer that will be used. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_3278AA889EB6EF3761C658DB4D18B642A4C9A005CDF1166112DC6843BA667950_1520595038801_1.1-ColorPanel+-+Structure-color.png) - - -In case of using an image panel, we recommend to use only the background colors: dark (gray_d2) and default (gray_l4) to ensure contrast between the background and the contents in case the image is not loaded. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_3278AA889EB6EF3761C658DB4D18B642A4C9A005CDF1166112DC6843BA667950_1520595047345_1.4-ColorPanel+-+Structure-BackgroundColor.png) - -### 2. Background image - -It’s optional. - -### 3. Color overlay - -It’s optional and it’s recommended in case of using an image panel. The opacity can be set to 15%, 25%, 50%, 75% or 100%. The color belongs to the theme, and it will use corporate color, accent color, white or black. In case of placing text inside the container, contrast should be ensured (see chapter Accessibility). - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1513241452529_1.2-ColorPanel+-+Structure-Alpha.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1506518829769_1-Structure.png) - -As a container it can also include other components such as a card (optional). If the color of the text of the card is light, then the background color should be gray dark, and if the color of the text is dark, then the background color should be gray light. - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1506519014574_7-Background+colors.png) - -### Image panel types - -In case of using a background image there are three formats that can be used. Format cropped and format resized can be combined: - -#### A. Cropped - -On smaller resolutions the image gets cropped. - -#### B. Resized - -On smaller resolutions the image gets resized to the size of the container. - -#### C. Switched - -On smaller resolutions another version of the image, adapted to the size, is used. - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1506518836889_2-Types.png) - -## Image panel behavior -### Alignment - -Images can be aligned both in larger resolution and smaller resolution horizontally and vertically. - -Horizontally: - -- aligned to the left -- centered -- aligned to the right - -Vertically: - -- top -- center -- bottom - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1506518845177_3-Behavior.png) - -### Error - -When the image cannot be loaded the color of the background will be seen. - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1513242168575_5-Error.png) - -## Responsive - -The image panel as a container adapts to the different breakpoints. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -3. Focus should be visible - -In case of using an interactive element over a panel, once the focus enters in the element, we should make sure that the focus is visible. - -15. Content should have enough contrast to its background - -In case of using text over the panel, the contrast should be ensured as shown in the following image. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_ACAC7218EF95D85F5ED6F16B5FB1A99ACDED0A7C1B7F76CDFA1D1CEB7512D7A0_1513242829885_6-Accessibility.png) - - -## Links - -- Benchmark Image Panel: https://confluence.schibsted.io/display/ST/Benchmark+Image+Panel -- Benchmark Color Panel: https://confluence.schibsted.io/display/ST/Benchmark+Color+Panel -- Zeplin: https://zpl.io/aM4AmdR - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/andXYWQ -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Component definition diff --git a/components/atom/progressBar/UXDEF.md b/components/atom/progressBar/UXDEF.md deleted file mode 100644 index edae70d7e7..0000000000 --- a/components/atom/progressBar/UXDEF.md +++ /dev/null @@ -1,128 +0,0 @@ -# SUI - Progress bar -A Progress bar is a visual representation of a specified wait time or the current status of a process. - -| Status | WIP | -| :---- | :---- | -| Current version | 1.1| -| Category | Atom | -| Owners | UX @cristina.perez, FE @david.martin | - -## Structure -1. Indicator text (optional) -2. Indicator bar (mandatory) -3. Track bar (mandatory) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_75ACD73C2BE04D16173A5B12A2F9F8D963B684E04335FED176B6DD10087B5024_1532589887378_Captura+de+pantalla+2018-07-26+a+las+9.24.26.png) - -## Behavior - -### When the progress bar is used as a loader (see type loading) - -The indicator bar will animate along the length of the track bar until it reaches the same width (100%). -The indicator text will progressively change to reveal the current state - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_75ACD73C2BE04D16173A5B12A2F9F8D963B684E04335FED176B6DD10087B5024_1532604143744_animation100_gif.gif) - -### When the progress bar is static (see type static progress status) - -The indicator bar will stay still at the point of the track bar to be represented. **This can be achieved using an animation or not** (directly loaded as the final range) - -*For example: if we need to represent that a progress is on the 75 of 100, the indicator bar will grow until it reaches the 75% of the track bar width*. - -![Animation in this case is optional](https://d2mxuefqeaa7sj.cloudfront.net/s_75ACD73C2BE04D16173A5B12A2F9F8D963B684E04335FED176B6DD10087B5024_1532601817599_animation75_gif.gif) - -## Types - -### Type loading - -Use it to represent a specified wait time of an automatic process. -**The indicator bar will continue to grow until it reaches 100%** -Animation is mandatory in this type. - -*For example: the loading of an image or a page*. - -### Type static progress status - -Use it to represent the current status of a process that is not automatic. -**The indicator will stop when it reaches a certain percentage.** -Animation is optional in this type. - -*For example: to represent the number of products a user/professional has already spent from the total contracted*. - -### Type circular - -**Size M** It has the label at the center-center of the circle. It can be used to highlight a progress. -**Size S** It has the label on the right side of the circle and it is used like a Badge. -The circular progress bar can be Dynamic or Static. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7574AA0EFD3BD2C5BB44AACCD0DB8CCBD8C60A1C8DB5962E06516CBCB6978CB5_1552385023533_1-progress+bar-+circular.png) - -**States** -Loading: Start from “0 circle” and add the [motion bellow](https://paper.dropbox.com/doc/SUI-Progress-bar--AZI5~1kdLiIt3AyZk9JgSOt_Ag-hY8y6hoM93YTA69ZMG95t#:h2=Circular-Motion-(optional)) to show the % (motion optional) -100%: Indicative success state (for “completed process” you can use instead the Success state) -Success: Completed process state (for “indicative state” you can use instead the 100%) For next iteration. [See bellow](https://paper.dropbox.com/doc/SUI-Progress-bar--AZMN1X7fXxpBuesy1t~wXWkCAg-hY8y6hoM93YTA69ZMG95t#:h2=State-Success) -Error: Fail Badge. Opctional. You can hide the circular process bar also if you don’t want to show the error state. e.g: for indicative circular process bar - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7574AA0EFD3BD2C5BB44AACCD0DB8CCBD8C60A1C8DB5962E06516CBCB6978CB5_1552488635698_4-progress+bar-+circular+-+status.png) - -**Circular Motion (optional)** -By default, Circular Progress Bar appears with a **Fade of 250ms** and **the circle fill animation & label counter lasts 1250ms to 100%** -You can customize the fade and the duration from 0ms to the time you need. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7574AA0EFD3BD2C5BB44AACCD0DB8CCBD8C60A1C8DB5962E06516CBCB6978CB5_1552314146791_1-progress+bar-+circular-motion.gif) - -## Contents - -A progress bar is made using a track bar, an indicator bar and an optional numeric indicator text. **The indicator text can be placed above or below the track bar an can be presented in two ways** **+** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_75ACD73C2BE04D16173A5B12A2F9F8D963B684E04335FED176B6DD10087B5024_1535362432734_Captura+de+pantalla+2018-08-27+a+las+11.33.33.png) - -## Visual -![](https://d2mxuefqeaa7sj.cloudfront.net/s_75ACD73C2BE04D16173A5B12A2F9F8D963B684E04335FED176B6DD10087B5024_1532603607016_Captura+de+pantalla+2018-07-26+a+las+13.13.07.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7574AA0EFD3BD2C5BB44AACCD0DB8CCBD8C60A1C8DB5962E06516CBCB6978CB5_1552385036781_2-progress+bar-+circular-visual.png) - -## Responsive - -The bar will adjust to the 100% of the container column in all devices. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -15. Content should have enough contrast to its background -16. Text should always be displayed as text - -## Links - -- Zeplin lineal: https://zpl.io/aX4X4zP -- Zeplin circular: https://zpl.io/V0qQXlw - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7Jpd -- Milanuncios -- Motor: https://zpl.io/aNo9Dx9 - -## Changelog - -### Next-up - -- **State Success**: Completed process state (for “indicative state” you can use instead the 100%) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7574AA0EFD3BD2C5BB44AACCD0DB8CCBD8C60A1C8DB5962E06516CBCB6978CB5_1552488648977_4.2-progress+bar-+circular+-+status.png) - -### Version 1.2 -- Type Circular added - -### Version 1.1 -- Component definition diff --git a/components/atom/radioButton/UXDEF.md b/components/atom/radioButton/UXDEF.md deleted file mode 100644 index ae7c63afa0..0000000000 --- a/components/atom/radioButton/UXDEF.md +++ /dev/null @@ -1,146 +0,0 @@ -# SUI - Checkbox & Radio button -*Checkboxes are used when there are lists of options and the user may select any number of choices, including zero, one, or several. In other words, each checkbox is independent of all other checkboxes* ~~*in*~~*on* *the list, so checking one box doesn't uncheck the others.* -*A stand-alone checkbox is used for a single option that the user can turn on or off.* -*Each vertical can determine whether or not a stand-alone checkbox will be selected by default* - - -*Radio buttons are used when there is a list of options that mutually exclude each other. In other words, only one option can be selected, automatically deselecting the other preselected options.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Chris J, FE | - -**Recommendations:** - -- Take in consideration the next recommendation when the user must select between different options inside a range: -- Use **Radio button** when there are 2 to 5 options -- Use [Data Counter](https://paper.dropbox.com/doc/SUI-Data-counter--AQoAk39iIIJh2YPkZHAMA0OoAg-TqR9qBw4WRr5l5gNMvvEE) when there are 5 to 99 options (numbers) -- Use [Slider](https://paper.dropbox.com/doc/SUI-Slider--AQrmpIMeYmY2P1q1nQr~vOifAg-gPOtnVwgn8SUMDTjFTZ2q) when there is a big range of options. From 10 to 999 (like 10-20-30-50…) -- If possible, use Radio buttons instead of Select field (drop-down menus). Radio buttons have a lower cognitive load because they make all of the options permanently visible so that users can easily compare them. -- Use checkboxes and radio buttons only to change settings, not as action buttons that make something happen. - -## Structure - -- Checkbox & Radio button are a combination of 2 elements: Icon + Other element (on which makes the action)*. -*Examples of other elements: Label, card, image, table’s row… -- Check the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). -- At least 2 options must be selected for the radio button. If there is only one, then a Checkbox must be used. -- It is extremely important to present all the selection options that go together as group and to clearly separate them from the other groups on the same page. - -By default, a group of checkboxes or radio buttons are displayed vertically stacked as a list. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244295686_1-+Checks++Radios+-+Structure.png) - -However, a group of checkboxes or radio buttons may also be displayed in a horizontal line. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508756136492_3.2-+Checks++Radios+-+Inline.png) - -Remember to check the [Label d](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[z](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[efinition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -## Behavior - -### State - -- The Checkbox & Radio buttons have 5 statuses, because the “selected” status is also included, plus this new one when it is “focused”. -- For the first iteration, the focus will be the native Browser focus. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_93C20F5C4F821D493D97CF4844B0A35AACB52F92F3DF8EF54B5B096DF7826CA3_1521029713670_2-+Checks++Radios+-+Behavior.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508747391991_6-+Checks++Radios+-+Accessibility-Focus.png) - -## Content - -Preselected options aren’t recommended, especially in Radio Buttons. -Pre-selection can be used as an exception only in some cases where the information to select isn’t too important or when the system has complementary information to pre-select one option (for example, geolocalization). - -If a checkbox or radio button with an important decision is preselected and the user misses it, the user may move forward with the form with crucial information answered incorrectly. - -## Types - -### Ad hoc variations - -**INFOJOBS** -Sometimes, checkboxes and radio buttons are used that look different. Boxes that need to be selected are missing and they look more like buttons, but the underlying logic corresponds to these elements. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508922211401_7-+Checks++Radios+-+Custom-Border.png) - -**F****OTOCASA** ******&** ******COCHES** -Sometimes, checkboxes and radio buttons are used that look different. The checkbox or radio-button is hidden, and there is an illustration/image instead above its label. - -**Coches.net** -In coches, the status is represented by its opacity. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629373_coches_custom_check.png) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629378_coches_custom_check2.png) - -**Fotocasa** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1509358615443_Screen+Shot+2017-10-30+at+11.16.34.png) - -## Visual - -Checkbox & Radio buttons have their height defined by the label’s line-height and they are aligned from the center to the icon. -The margin between each individual Check/Radio~~,~~ displayed vertically, is 16px. - -Use standard visual representations. A Checkbox should be a small square that has a checkmark or an X when selected. A Radio button should be a small circle that has a solid circle inside it when selected. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244390294_4-+Checks++Radios+-+Visual.png) - -## Responsive - -Checkbox & Radio buttons can be aligned from horizontal to vertical grids, but the Label position must always be kept on the right side of the icon. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244399026_5.1-+Checks++Radios+-+Responsive.png) - -If a list label ~~was~~is very extensive, it will be a double line in responsive. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244411307_5.2-+Checks++Radios+-+Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient - -The active/clickable area has been defined as 24 px (only when it is for text+icon) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244425583_6-+Checks++Radios+-+Accessibility-Active+area.png) - -12. Controls should be correctly labeled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Benchmark: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Form Elements: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Zeplin: https://zpl.io/bo0eq9Z - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7JGJ -- Milanuncios -- Motor: https://zpl.io/brElMlr - -## Changelog - -### Version 1.0 - -- Component creation diff --git a/components/atom/slider/UXDEF.md b/components/atom/slider/UXDEF.md deleted file mode 100644 index eb5bff6e89..0000000000 --- a/components/atom/slider/UXDEF.md +++ /dev/null @@ -1,106 +0,0 @@ -# SUI - Slider -Sliders are often the UI control of choice for letting users select a value or range from a fixed set of options. - -Since* sliders are difficult to manipulate, especially on touch interfaces, we recommend using another type of control when a more precise interaction is needed. - -| Status | Done | -| :---- | :---- | -| Current version | 1.1| -| Category | Atom | -| Owners | UX @Daniel P | - -**Recomendations:** - -- Use a slider only when the precise value won’t matter to the user, but rather only the approximate range. -- When an exact value it is needed, consider a different UI element that allows users to tap or even type to specify their choice rather than relying on press-and-drag gestures. -- Take in consideration the next recommendation when the user must select between different options inside a range: - - Use [Radio button](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AQqbY2r0t_MgG5RI3M9qGWLFAg-tmVSbtoe8nZTaZk9mkdsE) when there are 2 to 5 options - - Use [Data Counter](https://paper.dropbox.com/doc/SUI-Data-counter--AQoAk39iIIJh2YPkZHAMA0OoAg-TqR9qBw4WRr5l5gNMvvEE) when there are 5 to 99 options (numbers) - - Use **Slider** when there is a big range of options. From 10 to 999 (like 10-20-30-50…) - - -## Structure - -The component Slider consists of a label, a series of values (text and formatted numbers), one or two controllers and a bar that reflects the value or values selected by the user. - -![Slider component working with Label component](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513162700624_1-Structure.png) - -## Behavior - -When you move the control, it automatically adjusts to the closest value in the range. -While sliding, the numerical value is detailed. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513162710610_2-Behavior.png) - -## Types - -### Segmented slider - -Single controller, segmented sliders allow users to select a specific value between a range. We recommend this type for long numeric values. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513162725131_3-TypeSegmented.png) - -### Rank slider - -Two controllers, to choose between two ranges of values. One of the controllers is used to define the minimum value, and the other defines the maximum value. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513162734689_4-TypeRank.png) - -## Content - -Sliders are made using a bar, one or two controllers and a variety of labels, one that describes the function of the slider to the user and a numeric scale. When using it, the slider controllers also show the selected value above or beside the controller. - -## Visual -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513162743009_6-Visual.png) - -## Responsive - -When in mobile devices, the slider adjust to the 100% of the container column. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513162756119_5-Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -6. Information should not be supported only by one sense -12. Controls should be correctly labelled -13. Errors should be prevented - -## Keyboard And Focus - -When the user tabulate focus to the slider controller. Arrow keys should operate as follows: - -| KEY | ACTION | -| --------------------- | ------------------------------------------------------------------------------------------------ | -| Right and Up arrows | Increase the selected value | -| Left and Down arrows | Decrease the selected value | -| Page Up and Page Down | Optionally increase and decrease the value by a set amount (e.g. by 25 on a range from 0 to 100) | - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A415CC54364440916A2F6D72AE018E85A252A57882BF1BF782DEAE063AD7C274_1513605167340_4-Focus.png) - -## Links - -- Zeplin: https://zpl.io/bPrOrQl - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7Jpd -- Milanuncios -- Motor: https://zpl.io/aNo9Dx9 - -## Changelog - -### Version 1.0 - -- Nothing here yet \ No newline at end of file diff --git a/components/atom/spinner/UXDEF.md b/components/atom/spinner/UXDEF.md deleted file mode 100644 index ee00987f54..0000000000 --- a/components/atom/spinner/UXDEF.md +++ /dev/null @@ -1,91 +0,0 @@ -# SUI - Spinner -*An animated loop used for giving users feedback while the content of a page or section is being loaded.* - -| Status | Done | -| :---- | :---- | -| Current version | 1.1| -| Category | Atom | -| Owners | UX @David G, @Daniel P, FE @Pablo G | - -## Structure - -A single image (GIF, SVG…) with looped animation over a recommended 60% semi-transparent background that covers the page or section being loaded. The color of the semi-transparent background, or even if there needs to be a background, can be defined for each vertical. - -The image is horizontally and vertically centered inside its container. - -![This spinner is just an example, any animation that meets the described criteria can be used.](https://d2mxuefqeaa7sj.cloudfront.net/s_95D2466C6A5B8477C106E425C9B49B7EFC2C65C6E4041483DD757B6186A1150E_1511855636042_spinner.gif) - -## Behavior - -When desired, after a user action (i.e., clicking a button), the component appears until the content is fully loaded or loading fails. - -When the spinner is active, the user won’t be able to do anything on the loading page or section. - -After the user’s action, the spinner has a 0.5-second delay before showing. - -## Types - -### A. Full page - -The background fits the whole page container. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95D2466C6A5B8477C106E425C9B49B7EFC2C65C6E4041483DD757B6186A1150E_1511444356075_2-FullPage.png) - -### B. Section - -The background fits a specific section of the site - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95D2466C6A5B8477C106E425C9B49B7EFC2C65C6E4041483DD757B6186A1150E_1511444363453_3-Section.png) - -## Contents - -The spinner image does not contain text to simplify the element. - -## Visual - -The image that is used is adapted to each vertical brand. -The standard size of the image is 32x32px. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_95D2466C6A5B8477C106E425C9B49B7EFC2C65C6E4041483DD757B6186A1150E_1511444997765_4-Visual.png) - -## Responsive - -No specific changes beyond adapting to screen surface. - - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -7. Interactive elements and images should be correctly labelled -15. Content should have enough contrast to its background - -While the spinner is onscreen, the alt warns users with visibility issues to wait until the content is loaded. -The spinner doesn’t have a focus. - -## Links - -- Zeplin: https://zpl.io/b6J0z8K - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/an1Oxzr -- Milanuncios -- Motor: https://zpl.io/aNo9Dx9 - -## Changelog - -### Version 1.1 - -- Document creation -- Updated english translation diff --git a/components/atom/switch/UXDEF.md b/components/atom/switch/UXDEF.md deleted file mode 100644 index 0bed5bf4dd..0000000000 --- a/components/atom/switch/UXDEF.md +++ /dev/null @@ -1,135 +0,0 @@ -# SUI - Switch -*The switch is the radio button when there’re only 2 exclusive options. “On/off” is a common and clear example for explaining this component.* - -*Generally, you can use either a radio button or a switch; those are our recommendations:* - -- *For more than 2 options, only a radio button can be used.* -- *When the user must select between 2 options, a switch should be used instead.* - -| Status | Done | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Daniel P | - - -## Structure - -A switch is composed of a main and a central dynamic icon, plus the labels that explain it. -The most important aspect of this component is that the user can clearly understand the 2 excluding options and identify which one has been selected without any doubt. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1512391236103_1-Structure.png) - -### Labels - -There are 2 different labels to use that can be combined between them. - -1. A title (label) + side-to-side labels that explain each option that will be selected. -2. A long label that explains an option that is available to be activated. - -Here is how the clickable area works in Behavior. - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1512385634780_2-Switchlabels.png) - -If side-to-side labels aren’t used, the Short or Long labels can only be used with a Toggle-type switch. See the Types below. - -## Types - -There are 2 types of visual representation of the same function. - -### Toggle switch - -This is the common on/off case. - -- On or active: this means that the function is working -- Off or inactive: this means that the function has stopped. -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1511875119791_4-Type1.png) - -### Select switch - -This other type means that users don’t choose to make 1 option active or inactive; they rather choose between 2 different active options. - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1511875127412_5-Type2.png) - -## Behavior - -Check the [HelpText & Validation definition](https://paper.dropbox.com/doc/SUI-HelpText-Validation-RZpyYPWRNVPzdC9fVrCtc). - -The common and recommended behavior for switches is for the changes to start working instantly. No “save changes” or “confirmations” alerts are needed (but providing users with success feedback is always a good practice). - -### Clickable Area - -The behavior of the clickable area for switch will depend on the labels (as seen above under Structure). -1 Label: 1 clickable area that acts as a toggle. -2 Labels: 2 clickable areas. Each one selects its own, but the area where they overlap (the icon) acts as a toggle. - -### State - -- The switch inputs have 4 basic statuses: Active, inactive, focus and disable. -- For the first iteration, the focus will be the native browser focus. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1512391349933_Behavior.png) - -Remember: the “Select switch” doesn’t have an “inactive status”. Both options to select will be in active state. - -## Content - -Check the [Label definition.](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT) - -Remember, the label must be descriptive but brief. - -## Visual - -The following measurements can be viewed here: - -- Switch size and spaces -- Spaces between Labels and the Switch - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1525433800392_6-Visual.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient -12. Controls should be correctly labelled -16. Text should always be displayed as text - -The focus area has been defined as 24 px (only when it is for text+icon) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_0B00381A49C4EA49DAA19DF8F78564F8D62D43C9654F1BA5961B5AEAAEEEA827_1513841135458_7-Focus.png) - -## Links - -- Benchmark: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# - -- Zeplin: https://zpl.io/VkKqnkK - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/VkYOq3K -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/atom/tag/UXDEF.md b/components/atom/tag/UXDEF.md deleted file mode 100644 index ceb2b1bc00..0000000000 --- a/components/atom/tag/UXDEF.md +++ /dev/null @@ -1,106 +0,0 @@ -# SUI - Tags -*We use tags to visually emphasise features of the UI and make recognition and interaction easier. Their label shape shows users how to interact with them when they search, classify or use a field with multiple selection options.* - -*It is important to bear in mind that if they are used in large numbers, they increase the visual noise.* - -| Status | WIP | -| :---- | :---- | -| Current version | 1.2| -| Category | Atom | -| Owners | UX @Fátima Y, @Daniel P, FE @Julian G | - -## Structure - -- Tags consist of text plus a container. -- Tags can include an action icon (generally a close icon). This icon will always be located to the right of content. -- The last tag must not use a new line when there is enough space. -- Tags structure can have 3 main sizes: Small, Medium and Large. Small size has height of 24px, Medium a height of 32px and Large with 40px. - -![](https://paper-attachments.dropbox.com/s_A65CA743FD595FCDBF3700E32CFD31368FDF7064ABCB8F79050596FF300FF03F_1554902469155_4-tags-typologies.png) - -## Behaviour - -- They must be as brief as possible and never have multiple lines. Text is limited to 100 characters, with an average of 20 characters. -- If the maximum width is exceeded (240px desktop and mobile), omit part of the text at the end. Compensate the cut off text with the title. -- For mobile devices we do not have the title and there is no alternative for the user to see the complete type. However, the percentage of cut off tags is very low. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_82CF4A27A42BCF56B20D3E366B94429611DCF03940DE788272CFBA4915B02E18_1507198067008_2-tags-behavior.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_82CF4A27A42BCF56B20D3E366B94429611DCF03940DE788272CFBA4915B02E18_1507198075100_3-tags-behavior.png) - -## Types - -### Standard Tag - -Neutral colour, non-actionable. Only the close icon is clickable, and it has hover status. - -**Recommendations:** - -- The clickable area of the close icon should be more than **40px**, specially for mobile. (See accesibility content for more information) -- Using Large size tag in mobile is recommended for a better usability. -![](https://paper-attachments.dropbox.com/s_A65CA743FD595FCDBF3700E32CFD31368FDF7064ABCB8F79050596FF300FF03F_1554902452608_4-tags-typologies.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_82CF4A27A42BCF56B20D3E366B94429611DCF03940DE788272CFBA4915B02E18_1502269231530_3.2-tag-behavior-animation.gif) - -### Actionable tag - -With colour; when you click on it, it takes you to a search result. It must not have a close icon. -It has 2 visual statuses: normal and hover/active. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_E1ED28032A9CE66866870BE375B44F69B63620DB655A608979431F109E476943_1511435876745_tags-navigation-types.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_82CF4A27A42BCF56B20D3E366B94429611DCF03940DE788272CFBA4915B02E18_1507198093683_6-tags-navigation.png) - -## Content - -- Apart from the close icon, the text can be accompanied by an icon. -- The icon can be place either right side or left side, but not both sides at the same time. -- The standard tag with close icon does not accept another icon at the right side. - -## Visual - -![](https://paper-attachments.dropbox.com/s_A65CA743FD595FCDBF3700E32CFD31368FDF7064ABCB8F79050596FF300FF03F_1554902436315_1-tags-structure.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Content should be able to increase in size -- Content should have enough contrast to its background -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Interactive elements should be differentiated from content -- Clickable area should be sufficient - -## Links - -- Zeplin: https://zpl.io/bew0EQm - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/VD7GdNW -- Milanuncios -- Motor: https://zpl.io/2vWN0Bv - -## Changelog - -### Version 1.2 - -- Including the **Large** size. -- 40 px clickable area of close icon. - -### Version 1.1 - -- Types: Navigation tags with icon both right and left side. diff --git a/components/atom/tooltip/UXDEF.md b/components/atom/tooltip/UXDEF.md deleted file mode 100644 index 769cd8f659..0000000000 --- a/components/atom/tooltip/UXDEF.md +++ /dev/null @@ -1,143 +0,0 @@ -# SUI - Tooltip -A popup is used to explain a function or add more information of an element. Tooltip is displayed when users hover over, focus on or click an element. - -Tooltip can be used instead of the html title attribute. It does support also complex text, buttons, images or actions, but we recommend always to simplify as much as possible. - -| Status | Done | -| :---- | :---- | -| Current version | 1.1| -| Category | Atom | -| Owners | UX @Chris J, FE @Julian G | - -## Structure - -Tooltip consists of a basic container plus an inside content; optional arrow pointing to the element that we want to focus on. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_9FEA695FE4C37276D15841F1E9F673D6BF140BD14842459C287AFBB3351D57F6_1547663070653_1.1-Tooltip-+Structure.png) - -## Behavior - -Tooltip has 12 possible positions. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1529316527965_2.1-Tooltip-+Behavior.png) - -The position is flexible and will change depending on how close the element is to the edge of the screen. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1529316541073_2.2-Tooltip-Behavior.png) - -The arrow always point to the center of the element. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1529316604316_2.3-Tooltip-Behavior.png) - -There are 3 visualization options: Visible, Click and Hover, -In addition the tooltip can become active if we stay hover over it or not, by default it will depend on the mouse event, but it can be custom. - -- **Click**: by default it will remain shown over it. -- **Hover**: by default it will disappear when leave the element. -- **Visible:** by default is visible, optionally can show a close button/icon. -# Types - -The Tooltip can be used without arrow. (Be consistent with your brand guideline). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1529316633784_3.2-Tooltip-+Types+-+Variants.png) - -The size of the container can be defined for each vertical depend on the page position it will appears or the amount of content it will get. - -There are also two color versions, Normal/Negative (more details in Visual section) - -## Contents - -It can contain any text, icons, links, buttons, images and “X” icon, however try to brief or use a modal windows for more complex compositions. - -## Visual - -FONT -font-size: default theme definition, #fs-m could be custom. - -COLORS -Tooltip can be on version positive o negative: - -PADDINGS -Tooltip can get padding between the content (text, image, buttons…) and the container limits. -There are 2 options: -S:8px -M:16px - -ARROW -None: no arrow. -Yes: (peak)Height: 4px /(base)Witdh: 8px - -**Normal**(positive): -border: background $gray-l2, 1px -background: $c-white -font: black (default theme definition) - -**Negative**: -border: none -background: $gray-d4 -font: $c-white - -LIMITATION -We can put any max-width and max-height to fit with the content or image we want to show. -Optionally can truncate text if exceed - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1536219795304_5.1-Tooltip+-+Visual.png) - -## Responsive - -The tooltip is displayed through: - -- tapping an element and hidden tapping the rest of the screen or when the tooltip is outside the screen or on the X/close button. - -Tooltips used to identity an action in mobile (like an icon button) it will be displayed through long press 1 second. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1529316672469_6.1-Tooltip+-+Responsive.png) - -## Motion - -By default: Tooltip appears without delay (**Show - 0ms**) and is hidden with a short delay (**Hide - 250ms**). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAA14B8EE8902AAD93068512758CA7056293B6288F390E399C677CE92D5C6125_1529664849373_7.1-Tooltip-+Animation.gif) - -You can customize the Show & Hide delay from 0ms to the time you need. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -6. Information should not be supported only by one sense -14. Content should be able to increase in size -15. Content should have enough contrast to its background -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/2GQQojm - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.1 - -- Adding a positive version (normal) light background / dark font. -- Removed the max-width and max-height limitations. -- Adding the visualization behavior “on Click” and “Visible” (to show it before any mouse events.) -- Adding any type of elements, text, image, links, icons, images, X buttons, etc… -- Adding 2 options for padding - diff --git a/components/atom/upload/UXDEF.md b/components/atom/upload/UXDEF.md deleted file mode 100644 index 86fcceb732..0000000000 --- a/components/atom/upload/UXDEF.md +++ /dev/null @@ -1,67 +0,0 @@ -# SUI - Upload -Upload is the component to do the process of uploading content* from the device to the platform/service DataBase (cloud servers) - -Content: (Picture, video, etc.) - -| Status | WIP | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @Joan M | - -## Structure - -They have: - -- Icon or Spiner (mandatory) -- Label or text (mandatory) -- Stroke (mandatory) -- Color (mandatory) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_04543BC306E2B4F99FD068CDD83367BBD23B28CC427D4E8FEB4701CC55F7F73A_1529664113557_Structure.png) - -## Type - -The Upload is defined as an elastic component that is responsive to the needs. It raises two states, active state and state of charge. This makes a component required to create feedback to the user of what is happening in the upload process. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_04543BC306E2B4F99FD068CDD83367BBD23B28CC427D4E8FEB4701CC55F7F73A_1533798745724_States-Upload.png) - -## Behavior - -Once the user has dragged the file, it will show the spinner component that will inform the user that it is in the process of uploading and when the process finishes we will let you know that it has been a success - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_04543BC306E2B4F99FD068CDD83367BBD23B28CC427D4E8FEB4701CC55F7F73A_1533800735695_behavior-steps.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -6. Information should not be supported only by one sense -13. Errors should be prevented - -## Links - -- Zeplin: https://zpl.io/25q5058 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor: https://zpl.io/a7EJQKM - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/behavior/sticky/UXDEF.md b/components/behavior/sticky/UXDEF.md deleted file mode 100644 index 21a8753462..0000000000 --- a/components/behavior/sticky/UXDEF.md +++ /dev/null @@ -1,113 +0,0 @@ -# SUI - Sticky -Sticky is a component that describes a non scrolling behavior that can be assigned to atoms, molecules or organisms. - -| Status | WIP | -| :---- | :---- | -| Current version | 1.0| -| Category | Behavior | -| Owners | UX @daniel g, @María A, @Chris J, FE @Pablo G | - -Sticky does not have a visual structure. It is a behavior that can be applied to a component or group of components making them not affected by the scroll. - -## Types -### A) Position -- Top -- Bottom -The element could have space around it, in this case it will appear like floating on the screen. - -![Image on the left: sticky element on top and another on the bottom. Image on the right: sticky element on the bottom with space around it.](https://d2mxuefqeaa7sj.cloudfront.net/s_6F3D481BC5DD773DB4C5B4380B80B6FA6A01D8D3A28455075D6877239380F8AA_1538565366358_Sticky+Type+1.gif) - -### B) Lifecycle - -Starting point: - -- The element is sticky from the beginning. -- It becomes sticky when it reaches the top -or another element that is already stuck on the top. - -Ending point: - -- The element doesn’t cease being sticky. -- The sticky element has an ending point: when it reaches another element, e.g. the footer. - -In case the element is stuck to the bottom of the page it is recommended to keep the element sticky all the time. - -![In this image there are two elements that behave as sticky since the beginning. A third one gets stuck at a certain point.](https://d2mxuefqeaa7sj.cloudfront.net/s_6F3D481BC5DD773DB4C5B4380B80B6FA6A01D8D3A28455075D6877239380F8AA_1538565384311_Sticky+Type+2.gif) - -### C) Parent element - -The element can be: - -- Stuck to the screen or -- Stuck to the content container. - -![Navigation on top is stuck on top of the content container while the buttons are stuck at the bottom of the page.](https://d2mxuefqeaa7sj.cloudfront.net/s_6F3D481BC5DD773DB4C5B4380B80B6FA6A01D8D3A28455075D6877239380F8AA_1538565408954_Sticky+Type+3.gif) - -## Behavior - -When this sticky behavior is applied to a component, we should inform how it behaves in the following circumstances. - -### Different resolutions - -Is the behavior applied equally at all resolutions or is there any difference? -It is possible to make a component sticky for mobile and leave it scrollable for desktop. -See information about breakpoints in [Basic Styles](https://paper.dropbox.com/doc/Basic-Styles--AMLCp5gOYAz3ydT6sg3YeSWqAg-0ko2wfsTt1JOQHV6G8cwo). - -### Various sticky components - -Do we have several components being sticked to top or bottom at the same time? -We should then indicate the order for each of them. Take into account that sticky elements behave as stacked, this means than when one disappears, the following will take its place. - -## Motion - -By default, sticky elements with transitions, appears with a position transition (**Show - 1s ease in)** and is hidden with a position transition (**Hide - 1s ease out).** -You can customize the transition and the fade from 0ms to the time you need. - -## Contents - -Being a behavior applied to components it can be contained by icons, images, text, etc. - -## Responsive - -Nothing applies here - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable: make sure that if there is any interactive element in the sticky area it can still receive focus. -10. Clickable area should be sufficient: make sure tappable area size is still adequate when using sticky behavior. -13. Errors should be prevented: avoid overlapping tappable areas while an interactive element on a sticky component appears over another interactive element on the back providing enough whitespace around them. This can be done placing the interactive elements in a container. -14. Content should be able to increase in size: check that the sticky element does not break when resized on the browser. -15. Content should have enough contrast to its background: make sure the sticky element is easily interpreted as another layer when it appears over the page, otherwise users could have problems to perceive the contents and the interaction. - -Apart from the accessibility principles we would recommend the following best practices: - -- Avoid jumpy sticky elements using transitions and well constructed behaviors. -- Make sure the element is always available and findable for the user. -- Avoid several scrolls working at the same time, because it makes more difficult the interaction. - -## Links - -- Zeplin: https://zpl.io/aw1BzPM - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/accordion/UXDEF.md b/components/molecule/accordion/UXDEF.md deleted file mode 100644 index 864e9b35db..0000000000 --- a/components/molecule/accordion/UXDEF.md +++ /dev/null @@ -1,83 +0,0 @@ -# SUI - Accordion -The accordion is the component that contains collapsible components that allows the user to expand or collapse the content. We use this component to reduce the content of a page or section. - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @Joan M, FE @Adrià V | - -## Structure - -The Accordion component is made up of several collapsible behaviour components - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_91DBCC348A22E670E700A5D0FB3B399567A3F30B6E91D1B7D726464196437C3E_1533889772714_Structure.jpg) - -## Behavior - -When the user clicks on title section or action icon in the component, shows a content or hidden a content. - -- SHOW -When its content is hidden, the action icon points down and the user to click and view more information. - -- HIDE -When its content is fully shown, the arrow icon points up and the user to click and hide some information. -![](https://d2mxuefqeaa7sj.cloudfront.net/s_91DBCC348A22E670E700A5D0FB3B399567A3F30B6E91D1B7D726464196437C3E_1533889827211_Behavior-Accordion.jpg) - -When the user clicks on one the collapsible component when it’s in its “Hide” state, the information previously shown will hide again. - -Its default position is the “Hide” state. - -### Height - -A maximum height for the hidden area can be specified if needed. In that case, hidden area will have its own scroll when shown. - -## Types - -The accordion is a container of content and this makes the type as flexible as we want to give the component - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_91DBCC348A22E670E700A5D0FB3B399567A3F30B6E91D1B7D726464196437C3E_1534751656779_1content-accordion.jpg) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_91DBCC348A22E670E700A5D0FB3B399567A3F30B6E91D1B7D726464196437C3E_1535545523838_Visual-accordion.jpg) - -## Contents - -The content is detailed by the [Collapsible](https://paper.dropbox.com/doc/SUI-Accordion--ANNtg33I3d7GV2nTMJAOMDKCAg-Un8fw5L4pMEZCB4N3J81j) component and would have to contemplate different casuistics like. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_91DBCC348A22E670E700A5D0FB3B399567A3F30B6E91D1B7D726464196437C3E_1533895911860_Contents-Accordion.jpg) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -6. Information should not be supported only by one sense -10. Clickable area should be sufficient: The active/clickable area has been defined as 24 px (only when it is for text+icon)s - -## Links - -Include useful links here (Zeplin, Tokens, Other components, etc). - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet - diff --git a/components/molecule/autosuggest/UXDEF.md b/components/molecule/autosuggest/UXDEF.md deleted file mode 100644 index 017de8438b..0000000000 --- a/components/molecule/autosuggest/UXDEF.md +++ /dev/null @@ -1,135 +0,0 @@ -# SUI - Autosuggest field -*Autosuggest it is a form field that let users select from a suggestion list of values. It is a dynamic list that shows the most similar values based on what users write on the field.* - -*It should also be noted that Autosuggest it is a molecule because it must be combined with Dropdown list molecule (to show the list of values) and usually is combined with other atoms like Label, Placeholder or HelpText.* - -| Status | WIP | -| :---- | :---- | -| Current version | 2.0| -| Category | Molecule | -| Owners | UX @David G, @Daniel P, FE @Julian G | - -## Structure - -- This component always works in combination of [Dropdown list](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) and [Icons](https://paper.dropbox.com/doc/SUI-Icons-WIP--AMb5tk9_hn_MtVAcoE03FXOSAg-vn9iJCzYbYm7pvgHC25eD) molecules and usually with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) and [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc). -- Autosuggest have a flexible length that is adjustable to the grid of the page. -- The default size for Select is Medium. Small size will be used only in a few cases -- Example: Filters in a left side column usually use the Small size. - -![Those are the 2 sizes of the Autosuggest field, combined with Label, Placeholder and Dropdown atoms.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537447574754_1-Autosuggest-structure.png) - -## Behavior - -### States -- Autosuggest have the same 3 basic states: default, focused and disabled. -- For the first iteration, the focus will be the native browser focus. -- Remember, the values to select will be shown on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) list component. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537447588403_2-Autosuggest-behavior1.png) - -### *Dropdown list* opening/closing - -The opening it is recommendable when the user enters minimum of 2 or 3 characters. -This option may be more optimal for performance if the suggested listing is very extensive. -The *Dropdown list* will be closed when the user select a list value or if leave the focus of this component. - -The closing it can be different if the component allow the user write a new value (not from the suggestions) or if it is obliged to select a value from the Dropdown list. - -### Coincidence - -When the user start to write on the field, Autosuggest must show the values that match. From 1 character to the complete word. -More letters written, more close to the perfect match. Less characters will just show simple coincidences. - -For example when only 1 character will be written, Autosuggest provably will show lot of poor matches that simply contain that character in wherever of the value. -When 3 or 4 characters will be written, then autosuggest provably will show few matches that are so closed to the complete value the user is looking for. - -![Autosuggest field combined with Label, Icon and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537268710081_3-Autosuggest-Coincidence.png) - -### Select an option - -The user can accelerate the introduction by focusing on a suggestion of those shown even if the writing has not yet been completed. For this, the user must select the suggestion of the list; selecting it with the mouse or using the keyboard (direction arrows and "enter"). - -Once the user has selected a value from the list (Dropdown), it remains fixed in the "Select field" and the "Dropdown list" will be closed. - -![Autosuggest field combined with Label, Icon and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537270932106_4-Autosuggest-select.png) - -**Remember:** it is necessary that the focus be visible at all times and for every element that has focus state. -**Remember:** To change between different elements focus, must be available thru tabulation on the keyword. - -### Automatic focus - -In case there is a complete match with a term in the list, it will automatically focus on it. - -### Multi select - -This type is less used and less recommended. -When some values are selected, they appear in the Select field as [Tags](https://paper.dropbox.com/doc/SUI-Tags-bOSL4L5TFYZqPaK0wnCHb) that can be self-deleted. At the same time, they remain as visual options on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--ANBJwzoE5h5fXlq~fBc6ZVgeAg-VSQSdXvEyqawESsk4IkMC) list, but in “disabled state”. - -![Select states combined with Label, Icons and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537273139257_5-Autosuggest-multiselect.png) - -## Contents - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Text-placeholder-IqZya9lRXdMvFm0PkT1Vu) text that indicates what is being asked of users. - -**Recommendations:** - -- Avoid use Autosuggest field when there are only 2 or 3 options that could be displayed in a [Checkbox component](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button-tmVSbtoe8nZTaZk9mkdsE). (which require only a single click or tap). -- Avoid use Autosuggest field when the possible values to choose (from Dropdown list) are from a closed list and easy to find if they are basic concepts or ordered alphabetically. In that case [Select field](https://paper.dropbox.com/doc/SUI-Select-field-WIP--AM9~SFusS3v3n0VvUP_hv1kmAg-OrlQjuARbK4ZoPdMcSf7p) will be better option. - -## Visual - -Here it is showed only the Autosuggest field measures.To see the 2 sizes of the field, please check [Input field](https://paper.dropbox.com/doc/SUI-Input-field-WIP--ANBFezB5g93jmp~uku3ikwesAg-03mHJFkOCjviSZevsaTwm). Those are the same. -To see the margins between this molecule and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -The following measurements are visible here: - -- The inner margin of the text file -- The inner size and margins for the right-side icons: text delete blade -![Select states combined with Label, Icons and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537447610587_7-Autosuggest-visual.png) - -## Responsive - -The composition of different inputs can be displayed in a grid position when it is viewed on a desktop, but it must be displayed in a vertical position when it moves to small screens. - -Breakpoints will determine when to change how to display it. Each vertical has its own breakpoints - -To keep the coherence with the other fields used in forms like [Select field](https://paper.dropbox.com/doc/SUI-Select-field-WIP--AM9~SFusS3v3n0VvUP_hv1kmAg-OrlQjuARbK4ZoPdMcSf7p), we recommend not use the native browser selector on mobile devices. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537273846600_6-Autosuggest-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -3. Focus should be visible -8. Content should be written in common language -10. Clickable area should be sufficient -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/bzXyp7V - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/autosuggestField/UXDEF.md b/components/molecule/autosuggestField/UXDEF.md deleted file mode 100644 index 017de8438b..0000000000 --- a/components/molecule/autosuggestField/UXDEF.md +++ /dev/null @@ -1,135 +0,0 @@ -# SUI - Autosuggest field -*Autosuggest it is a form field that let users select from a suggestion list of values. It is a dynamic list that shows the most similar values based on what users write on the field.* - -*It should also be noted that Autosuggest it is a molecule because it must be combined with Dropdown list molecule (to show the list of values) and usually is combined with other atoms like Label, Placeholder or HelpText.* - -| Status | WIP | -| :---- | :---- | -| Current version | 2.0| -| Category | Molecule | -| Owners | UX @David G, @Daniel P, FE @Julian G | - -## Structure - -- This component always works in combination of [Dropdown list](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) and [Icons](https://paper.dropbox.com/doc/SUI-Icons-WIP--AMb5tk9_hn_MtVAcoE03FXOSAg-vn9iJCzYbYm7pvgHC25eD) molecules and usually with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) and [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc). -- Autosuggest have a flexible length that is adjustable to the grid of the page. -- The default size for Select is Medium. Small size will be used only in a few cases -- Example: Filters in a left side column usually use the Small size. - -![Those are the 2 sizes of the Autosuggest field, combined with Label, Placeholder and Dropdown atoms.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537447574754_1-Autosuggest-structure.png) - -## Behavior - -### States -- Autosuggest have the same 3 basic states: default, focused and disabled. -- For the first iteration, the focus will be the native browser focus. -- Remember, the values to select will be shown on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) list component. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537447588403_2-Autosuggest-behavior1.png) - -### *Dropdown list* opening/closing - -The opening it is recommendable when the user enters minimum of 2 or 3 characters. -This option may be more optimal for performance if the suggested listing is very extensive. -The *Dropdown list* will be closed when the user select a list value or if leave the focus of this component. - -The closing it can be different if the component allow the user write a new value (not from the suggestions) or if it is obliged to select a value from the Dropdown list. - -### Coincidence - -When the user start to write on the field, Autosuggest must show the values that match. From 1 character to the complete word. -More letters written, more close to the perfect match. Less characters will just show simple coincidences. - -For example when only 1 character will be written, Autosuggest provably will show lot of poor matches that simply contain that character in wherever of the value. -When 3 or 4 characters will be written, then autosuggest provably will show few matches that are so closed to the complete value the user is looking for. - -![Autosuggest field combined with Label, Icon and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537268710081_3-Autosuggest-Coincidence.png) - -### Select an option - -The user can accelerate the introduction by focusing on a suggestion of those shown even if the writing has not yet been completed. For this, the user must select the suggestion of the list; selecting it with the mouse or using the keyboard (direction arrows and "enter"). - -Once the user has selected a value from the list (Dropdown), it remains fixed in the "Select field" and the "Dropdown list" will be closed. - -![Autosuggest field combined with Label, Icon and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537270932106_4-Autosuggest-select.png) - -**Remember:** it is necessary that the focus be visible at all times and for every element that has focus state. -**Remember:** To change between different elements focus, must be available thru tabulation on the keyword. - -### Automatic focus - -In case there is a complete match with a term in the list, it will automatically focus on it. - -### Multi select - -This type is less used and less recommended. -When some values are selected, they appear in the Select field as [Tags](https://paper.dropbox.com/doc/SUI-Tags-bOSL4L5TFYZqPaK0wnCHb) that can be self-deleted. At the same time, they remain as visual options on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--ANBJwzoE5h5fXlq~fBc6ZVgeAg-VSQSdXvEyqawESsk4IkMC) list, but in “disabled state”. - -![Select states combined with Label, Icons and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537273139257_5-Autosuggest-multiselect.png) - -## Contents - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Text-placeholder-IqZya9lRXdMvFm0PkT1Vu) text that indicates what is being asked of users. - -**Recommendations:** - -- Avoid use Autosuggest field when there are only 2 or 3 options that could be displayed in a [Checkbox component](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button-tmVSbtoe8nZTaZk9mkdsE). (which require only a single click or tap). -- Avoid use Autosuggest field when the possible values to choose (from Dropdown list) are from a closed list and easy to find if they are basic concepts or ordered alphabetically. In that case [Select field](https://paper.dropbox.com/doc/SUI-Select-field-WIP--AM9~SFusS3v3n0VvUP_hv1kmAg-OrlQjuARbK4ZoPdMcSf7p) will be better option. - -## Visual - -Here it is showed only the Autosuggest field measures.To see the 2 sizes of the field, please check [Input field](https://paper.dropbox.com/doc/SUI-Input-field-WIP--ANBFezB5g93jmp~uku3ikwesAg-03mHJFkOCjviSZevsaTwm). Those are the same. -To see the margins between this molecule and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -The following measurements are visible here: - -- The inner margin of the text file -- The inner size and margins for the right-side icons: text delete blade -![Select states combined with Label, Icons and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537447610587_7-Autosuggest-visual.png) - -## Responsive - -The composition of different inputs can be displayed in a grid position when it is viewed on a desktop, but it must be displayed in a vertical position when it moves to small screens. - -Breakpoints will determine when to change how to display it. Each vertical has its own breakpoints - -To keep the coherence with the other fields used in forms like [Select field](https://paper.dropbox.com/doc/SUI-Select-field-WIP--AM9~SFusS3v3n0VvUP_hv1kmAg-OrlQjuARbK4ZoPdMcSf7p), we recommend not use the native browser selector on mobile devices. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_778845BDD53CEC600969D6616BD868C05D595362D9E370504722819D06D98DCF_1537273846600_6-Autosuggest-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -3. Focus should be visible -8. Content should be written in common language -10. Clickable area should be sufficient -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/bzXyp7V - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/badgeCounter/UXDEF.md b/components/molecule/badgeCounter/UXDEF.md deleted file mode 100644 index 5aa9db3c4e..0000000000 --- a/components/molecule/badgeCounter/UXDEF.md +++ /dev/null @@ -1,95 +0,0 @@ -# SUI - Badge Counter - -*We use badges* *counters* *to* *warn the user of a new content or a status change that needs to be checked.* - - -| Status | Badge counter | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, UI @cristina P, FE @Pablo G | - -## Structure - -- Container: Bright color circle that contains the text -- Content: In contrast color, may be a number or a symbol (exclamation mark, dot…) - -![Visuals 1](https://d2mxuefqeaa7sj.cloudfront.net/s_C78B25A4AC7E859E004A06AA7652AF9E7A1382E5FC00EF614AA594EC3ED01FA4_1539093067100_TYPE+SMALL.png) - -![Visuals 2](https://d2mxuefqeaa7sj.cloudfront.net/s_C78B25A4AC7E859E004A06AA7652AF9E7A1382E5FC00EF614AA594EC3ED01FA4_1539093078752_TYPE+MEDIUM.png) - -## Behavior - -- The Badge Counter appears as long as there are new items to check. It disappears when meeting two different conditions: -- All the new items in the destiny page have been read. -- The destiny page have been visited. -- We recommend choosing the first option when implementing.* -- Badges Counter only have 1 status. There is no variation and the user cannot interact with them; they are merely informative. -- Text is limited to 2 characters. If 3 or more characters are needed, then “+99” should be displayed, and the badge counter radius grows to fit all the characters. -- Badge Counter can also appear with a symbol (like “!” or “·”), to catch the attention of the user on a new content on a specific page. -- Badge Counter can also be empty, with no text or symbol. - -## Types - -Badge counter is an independent component but generally it will join text or icons. - -## A. Text Badge Counter - -- Badge Counter accompanies a section menu title, a tab title or a button. -- It’s aligned to the right of the text, horizontally and vertically centered. (see Visuals 1&2) -- Circle grows to the right. - - -## B. Icon Badge Counter - -- Badge Counter accompanies an icon (burger menu, tab…). -- It’s aligned to the top right of the icon (see Visuals 1&2) -- Circle grows to the right. - -| Small | Font size = xxSmall
Diametre = 6px | -| ------ | -------------------------------------- | -| Medium | Font size = xxSmall
Diametre = 8px | - -## Contents - -Badge Counter only admits numbers or symbols, if you need to ad some text, check the [Badge component](https://paper.dropbox.com/doc/SUI-Badges-vG0S7yu1RwJgwYkgT2uKl). - - -## Visual - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_C78B25A4AC7E859E004A06AA7652AF9E7A1382E5FC00EF614AA594EC3ED01FA4_1539091230789_badge+counter.png) - -The main color must catch the user’s attention, so red is recommended, as its the most common color used for this component anywhere. The inside text color must have enough contrast. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -14. Content should be able to increase in size -15. Content should have enough contrast to its background - -## Links - -- Zeplin: https://zpl.io/VD4vkWq - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/breadcrumb/UXDEF.md b/components/molecule/breadcrumb/UXDEF.md deleted file mode 100644 index dcdb2cdf69..0000000000 --- a/components/molecule/breadcrumb/UXDEF.md +++ /dev/null @@ -1,107 +0,0 @@ -# SUI - Breadcrumbs -*Breadcrumbs are a graphical control element used as a navigation aid in user interfaces. They allow users to keep track of their locations within the website, showing a hierarchy of the current page in relation to the website structure.* - -| Status | Done | -| :---- | :---- | -| Current version | 1.0| -| Category | Molecule | -| Owners | UX @Cristina P, @Nilo M , FE @Joan C | - -## Structure - -A breadcrumb is a trail of links placed horizontally one next to the other and divided by an icon or symbol “ >” which separates them as you will see in the content section. - -Home page > Section page > Subsection page - -Their width is 100% of their container and they may be contained by a box in which they are centred vertically. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_CDB64B3B4D578D7DA31E8737FEA2E11C6D20F0D56514905FDA3B8179A49BEFB5_1508764990657_Breadcrumb_definition.png) - -## Types - -### Location - -These breadcrumbs are static and show where the page is located in the website hierarchy. - -Home page > Section page > Subsection page - -### Attribute - -Attribute breadcrumbs give information that categorises the current page. In the case of search results, these attributes will be placed in a logical hierarchy in accordance with the search parameters selected by the user. - -Type of search > keyword > filter 1 > filter 2 > zone... - -## Behaviour - -The links within the component will respond to hovering by changing colour, in accordance with the style specifications for the links of each website: - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_2C599327DAD68BCC28F347777C380811E9FE3508D82A7445CC555E7ACC267EEA_1497258395009_Breadcrumb2.png) - -On the desktop version, the full breadcrumb will be shown, even if it takes up two lines. - -On the mobile version the first few links will be compacted into a single link of ellipsis marks (…) which will take the user to the URL of the link prior to the last one shown. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_CDB64B3B4D578D7DA31E8737FEA2E11C6D20F0D56514905FDA3B8179A49BEFB5_1508764335072_Breadcrumb_definition.png) - -## Contents - -Each breadcrumb should be short, descriptive and consist of nouns or adverbs, never verbs or actions. - -The links must not be smaller than 7px and must comply with the style specifications for the links of each website. - -Each breadcrumb must be separated with the following 7x12px icon: - -![Breadcrumb icon size definition](https://d2mxuefqeaa7sj.cloudfront.net/s_CDB64B3B4D578D7DA31E8737FEA2E11C6D20F0D56514905FDA3B8179A49BEFB5_1508765802590_icon_size.png) - -There must be a margin of 4px between the icon and the adjacent elements and 8px from the top and bottom: - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_CDB64B3B4D578D7DA31E8737FEA2E11C6D20F0D56514905FDA3B8179A49BEFB5_1508765399260_Slice.png) - -## Responsive - -If a breadcrumb exceeds the width of its container, in the mobile version, the first few links will be compacted into a single link of ellipsis marks (…) which will take the user to the URL of the link prior to the last one shown. - -![Breadcrumb responsive (mobile)](https://d2mxuefqeaa7sj.cloudfront.net/s_CDB64B3B4D578D7DA31E8737FEA2E11C6D20F0D56514905FDA3B8179A49BEFB5_1508765491983_Breadcrumb_definition.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Use horizontal breadcrumbs. -- Use aria-label="Breadcrumbs" -- Breadcrumb navigation is an important navigational aid and must be clearly visible to be of use. -- Place it at the top of the page, just below the main navigation bar or just above the headline of the current page. -- Include the title of the page in the breadcrumb. -- Do not include text such as “ You are here”. -- Do not link to the current page. -- It should be obvious which parts of the breadcrumb are clickable and which are unclickable. -- The same link style should be used as on the rest of the page. - -[https://www.baekdal.com/insights/breadcrumbguidelines](https://www.baekdal.com/insights/breadcrumbguidelines) - -## Links - -- Zeplin: https://zpl.io/VkYD3eK - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa Sketch: https://schibsted.box.com/v/components-sui-breadcrumb -- Fotocasa Zeplin: https://zpl.io/boYxqgM -- Habitaclia -- Inmofactory -- Infojobs zeplin: https://zpl.io/2EyqLzy -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/buttonGroup/UXDEF.md b/components/molecule/buttonGroup/UXDEF.md deleted file mode 100644 index 7f94a4d32e..0000000000 --- a/components/molecule/buttonGroup/UXDEF.md +++ /dev/null @@ -1,127 +0,0 @@ -# SUI - Button Group -*A group of buttons related in content. They can work as links or checkbox/radio buttons.* - -| Status | Done | -| :---- | :---- | -| Current version | 1.1| -| Category | Molecule | -| Owners | UX @David G, @Chris J, FE @Pablo G | - - -## Structure - -Button groups consist of an inline set of secondary or tertiary buttons. Use for action bars. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511865770859_1-buttongroup-structure.png) - -The width of the button group is normally dependent on the buttons that it contains. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511865783114_2-buttongroup-behavior.png) - -## Sizes - -Button group size depend on the three different sizes defined for the button component. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1513182670898_1.0-buttongroup-sizes.png) - -### Small (default) - -For button groups, it’s the standard size. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1513182201096_1.1-buttongroup-structure+S.png) - -### Medium - -Using this size depends on the importance or hierarchy of the action. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1513182212060_1.2-buttongroup-structure+M.png) - -### Large - -The use of a larger button may be considered exceptional. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1513182221015_1.3-buttongroup-structure+L.png) - -## Behaviour - -Button Groups can be configured to behave as either links (when they act as a link to another page) or radio-buttons/checkboxes (when used to toggle an option/multiple options). - - -## Types - -### Basic button group - -It takes its characteristics from the buttons included in the button group. -It can be aligned to the left, center or right of the container. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511865799362_3.1-buttongroup-types-basic.png) - -### Full width button group - -In case of full-width button group, each contained button stretches itself in proportion, fitting into the container. -The full width button group is build using the secondary button. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511865811768_3.2-buttongroup-types-fullwidth.png) - -## Contents - -Tab labels should be clear enough to allow the user to identify its content. -Text labels must use short titles. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511865854405_4-buttongroup-content.png) - -## Visual - -Secondary button group have border radius only on the sides of the button group. -Tertiary button group keeps the individual button border radius. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511866933858_6-buttongroup-visual.png) - -## Responsive - -A responsive button group may have the same width as on the desktop version, adapt its width to that of the container in which it is placed. - -When the button width exceeds the screen width, we keep the original tab group width, adding a horizontal scroll. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511866952452_5.1-buttongroup-responsive-basic.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A07BAB4BAE6EE382855AB81DF34C6A6D73978CED6E93B5F3762CECAE42565238_1511866968735_5.2-buttongroup-responsive-fullwidth.png) - - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Interactive elements should be differentiated from content -- Clickable area should be sufficient -- Content should have enough contrast to its background - -## Links - -- Zeplin: http://zpl.io/VYPygdm - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2EyqLzy -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/checkboxField/UXDEF.md b/components/molecule/checkboxField/UXDEF.md deleted file mode 100644 index ae7c63afa0..0000000000 --- a/components/molecule/checkboxField/UXDEF.md +++ /dev/null @@ -1,146 +0,0 @@ -# SUI - Checkbox & Radio button -*Checkboxes are used when there are lists of options and the user may select any number of choices, including zero, one, or several. In other words, each checkbox is independent of all other checkboxes* ~~*in*~~*on* *the list, so checking one box doesn't uncheck the others.* -*A stand-alone checkbox is used for a single option that the user can turn on or off.* -*Each vertical can determine whether or not a stand-alone checkbox will be selected by default* - - -*Radio buttons are used when there is a list of options that mutually exclude each other. In other words, only one option can be selected, automatically deselecting the other preselected options.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Chris J, FE | - -**Recommendations:** - -- Take in consideration the next recommendation when the user must select between different options inside a range: -- Use **Radio button** when there are 2 to 5 options -- Use [Data Counter](https://paper.dropbox.com/doc/SUI-Data-counter--AQoAk39iIIJh2YPkZHAMA0OoAg-TqR9qBw4WRr5l5gNMvvEE) when there are 5 to 99 options (numbers) -- Use [Slider](https://paper.dropbox.com/doc/SUI-Slider--AQrmpIMeYmY2P1q1nQr~vOifAg-gPOtnVwgn8SUMDTjFTZ2q) when there is a big range of options. From 10 to 999 (like 10-20-30-50…) -- If possible, use Radio buttons instead of Select field (drop-down menus). Radio buttons have a lower cognitive load because they make all of the options permanently visible so that users can easily compare them. -- Use checkboxes and radio buttons only to change settings, not as action buttons that make something happen. - -## Structure - -- Checkbox & Radio button are a combination of 2 elements: Icon + Other element (on which makes the action)*. -*Examples of other elements: Label, card, image, table’s row… -- Check the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). -- At least 2 options must be selected for the radio button. If there is only one, then a Checkbox must be used. -- It is extremely important to present all the selection options that go together as group and to clearly separate them from the other groups on the same page. - -By default, a group of checkboxes or radio buttons are displayed vertically stacked as a list. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244295686_1-+Checks++Radios+-+Structure.png) - -However, a group of checkboxes or radio buttons may also be displayed in a horizontal line. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508756136492_3.2-+Checks++Radios+-+Inline.png) - -Remember to check the [Label d](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[z](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[efinition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -## Behavior - -### State - -- The Checkbox & Radio buttons have 5 statuses, because the “selected” status is also included, plus this new one when it is “focused”. -- For the first iteration, the focus will be the native Browser focus. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_93C20F5C4F821D493D97CF4844B0A35AACB52F92F3DF8EF54B5B096DF7826CA3_1521029713670_2-+Checks++Radios+-+Behavior.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508747391991_6-+Checks++Radios+-+Accessibility-Focus.png) - -## Content - -Preselected options aren’t recommended, especially in Radio Buttons. -Pre-selection can be used as an exception only in some cases where the information to select isn’t too important or when the system has complementary information to pre-select one option (for example, geolocalization). - -If a checkbox or radio button with an important decision is preselected and the user misses it, the user may move forward with the form with crucial information answered incorrectly. - -## Types - -### Ad hoc variations - -**INFOJOBS** -Sometimes, checkboxes and radio buttons are used that look different. Boxes that need to be selected are missing and they look more like buttons, but the underlying logic corresponds to these elements. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508922211401_7-+Checks++Radios+-+Custom-Border.png) - -**F****OTOCASA** ******&** ******COCHES** -Sometimes, checkboxes and radio buttons are used that look different. The checkbox or radio-button is hidden, and there is an illustration/image instead above its label. - -**Coches.net** -In coches, the status is represented by its opacity. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629373_coches_custom_check.png) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629378_coches_custom_check2.png) - -**Fotocasa** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1509358615443_Screen+Shot+2017-10-30+at+11.16.34.png) - -## Visual - -Checkbox & Radio buttons have their height defined by the label’s line-height and they are aligned from the center to the icon. -The margin between each individual Check/Radio~~,~~ displayed vertically, is 16px. - -Use standard visual representations. A Checkbox should be a small square that has a checkmark or an X when selected. A Radio button should be a small circle that has a solid circle inside it when selected. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244390294_4-+Checks++Radios+-+Visual.png) - -## Responsive - -Checkbox & Radio buttons can be aligned from horizontal to vertical grids, but the Label position must always be kept on the right side of the icon. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244399026_5.1-+Checks++Radios+-+Responsive.png) - -If a list label ~~was~~is very extensive, it will be a double line in responsive. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244411307_5.2-+Checks++Radios+-+Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient - -The active/clickable area has been defined as 24 px (only when it is for text+icon) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244425583_6-+Checks++Radios+-+Accessibility-Active+area.png) - -12. Controls should be correctly labeled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Benchmark: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Form Elements: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Zeplin: https://zpl.io/bo0eq9Z - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7JGJ -- Milanuncios -- Motor: https://zpl.io/brElMlr - -## Changelog - -### Version 1.0 - -- Component creation diff --git a/components/molecule/collapsible/UXDEF.md b/components/molecule/collapsible/UXDEF.md deleted file mode 100644 index 18ac3ebadc..0000000000 --- a/components/molecule/collapsible/UXDEF.md +++ /dev/null @@ -1,130 +0,0 @@ -# SUI - Collapsible -*The collapsible component allows the user to expand or collapse content. We use this component to lightweight the content of a page or section.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.2 | -| Category | Molecule | -| Owners | UX @David G, @Chris J, @Nilo M, FE @Pablo G )| - -## Structure - -The collapsible component is conformed by a text link with an arrow icon. -The arrow icon is aligned on the right of the text. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087158369_1-Collapsible-+Structure.png) - -## Behavior - -When the user clicks on the component, it shows a content that was fully or partially hidden, and changes its state: - -- SHOW - When its content is partially hidden, the arrow icon points down and the copy invites the user to click and view more information. -- HIDE - When its content is fully shown, the arrow icon points up and the copy invites the user to click and hide some information. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087182240_2-Collapsible-+Behavior.png) - - -When the user clicks on the collapsible component when it’s in its “Hide” state, the information previously shown will hide again. - -Its default position is the “Show” state. - -Its hit area includes both text link and arrow icon. - -When changing from “hide” to “show” there can be a transition to both smooth the animation and help the user understand the interaction. - -Both components (text and link) are independent in its alignment. -Example: -Text paragraph align: left -Link “Show” align: center. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087407222_3.3-Collapsible-types-Variations.png) - -### Height - -A maximum height for the hidden area can be specified if needed. In that case, hidden area will have its own scroll when shown. - -## Types - -### Basic Collapsible - -When the content is partially hidden. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087195388_3.1-Collapsible-Types.png) - -### Gradient Collapsible - -When the content is partially hidden with a gradient to transparent hiding the last lines. When the content is displayed the gradient will be hidden. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087206769_3.2-Collapsible-Types.png) - -## Contents - -Collapsible labels should be clear enough to allow the user to identify the action with a short titles. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087383980_4-Collapsible-+Content.png) - -## Visual - -The gradient variation is displayed in position absolute above the top content. -Collapsible label is the Medium typography size with a Primary color. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513087433600_5-Collapsible-+Visual.png) - -## Responsive - -No specific changes beyond adapting to screen surface. - - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1518181703445_7-Collapsible-Focus.png) - -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient - -The active/clickable area is the full width of the Icon + Label and a height of 24px. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8A56717BC5557F04E1DB974F960ADFB1B872D696883F0969AF34A0A2F91618B8_1513088059587_6-Collapsible-+Active+Area.png) - -12. Controls should be correctly labelled -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/2jpXM34 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.ir88o/aXGLA9X -- Milanuncios -- Motor - -## Changelog - -### Version 1.2 - -- Paragraph & link independent alignment - -### Version 1.0 - -- Document creation diff --git a/components/molecule/dataCounter/UXDEF.md b/components/molecule/dataCounter/UXDEF.md deleted file mode 100644 index 65be5c05bb..0000000000 --- a/components/molecule/dataCounter/UXDEF.md +++ /dev/null @@ -1,94 +0,0 @@ -# SUI - Data counter -*Data counter is an input type number controller we can use to increase (+1) or decrease (-1) the value of such input.* - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @cristina.perez, FE @antonio.ruiz| - -**Recommendations:** -Take in consideration the next recommendation when the user must select between different options inside a range: - -- Use [Radio button](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AQqbY2r0t_MgG5RI3M9qGWLFAg-tmVSbtoe8nZTaZk9mkdsE) when there are 2 to 5 options -- Use **Data Counter** when there are 5 to 99 options ****(numbers) -- Use [Slider](https://paper.dropbox.com/doc/SUI-Slider--AQrmpIMeYmY2P1q1nQr~vOifAg-gPOtnVwgn8SUMDTjFTZ2q) when there is a big range of options. From 10 to 999 (like 10-20-30-50…) - - -## Structure - -Data counter is formed by one [label](https://paper.dropbox.com/doc/SUI-Label--ANFTJOijgRQq2Cz51OLPiSbKAg-px3mcUaTHVqlGngk2JNPT), one [input field](https://paper.dropbox.com/doc/SUI-Input-field-WIP--ANHZA9Ohz_~G_P4qyATiXvCfAg-03mHJFkOCjviSZevsaTwm) and two [buttons](https://paper.dropbox.com/doc/SUI-Buttons--ANHN_5l7qgiE53lSHxlmFuqeAg-AvdtvjMAqbsFkTYSz3egT). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7F9E84510E7946C1626EF494D2BF564E124C5FFBAA13F03601E5C1A95BDDE3CD_1539184289392_Captura+de+pantalla+2018-10-10+a+las+17.11.15.png) - -## Behavior - -Data counter has two buttons with different actions: - -- The one on the left side of the input field **decreases its value by 1** (-1). -- The one on the right side of the input **increases its value by 1** (+1) - -Input field value **can also be changed by the user using the keyboard** so Input field must receive focus as well as the buttons, but **only number values are allowed.** - -**Minimum and maximum values will be declared by each marketplace** but it has to be a **maximum two character value.** - -**Maximum value** should be communicate with an specific **Help text** that give feedback to the user. In the other hand, the **Increase button** must be disabled at same time. - - -### States - -Data counter has **3 basic states**: **default, focused and disabled**. The style of the states will be determined in each component used in this molecule. - - -### Error notification - -In case the user tries to **introduce an invalid value we will show him a** [**Help text**](https://paper.dropbox.com/doc/SUI-HelpText--ANo2OYbwMilwHLBRiOkgHIaEAg-RZpyYPWRNVPzdC9fVrCtc) **to communicate the error.** See [Help text documentation](https://paper.dropbox.com/doc/SUI-HelpText--ANo2OYbwMilwHLBRiOkgHIaEAg-RZpyYPWRNVPzdC9fVrCtc) for more info. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_4E055B006E2003E99EBFCAA4981C117DA2AF77BE27A0A6FFEEEF03B81D564C62_1540560770927_data-counter-behavior.png) - -## Contents -- Label has to respect all label requirements ([see definition](https://paper.dropbox.com/doc/SUI-Label--ANFTJOijgRQq2Cz51OLPiSbKAg-px3mcUaTHVqlGngk2JNPT)). -- Input field is a **fixed input type**. The length it is calculated adding a fix margin to the left & right side of the content. The minimum and maximum value of the input will be decided by each vertical. **Both medium or small input sizes can be used.** Check [input field definition](https://paper.dropbox.com/doc/SUI-Input-field-WIP--ANHZA9Ohz_~G_P4qyATiXvCfAg-03mHJFkOCjviSZevsaTwm) for details. -- Buttons have to respect all button requirements ([see definition](https://paper.dropbox.com/doc/SUI-Buttons--ANHN_5l7qgiE53lSHxlmFuqeAg-AvdtvjMAqbsFkTYSz3egT)) and **any size can be used but its height always has to match the input’s height.** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7F9E84510E7946C1626EF494D2BF564E124C5FFBAA13F03601E5C1A95BDDE3CD_1537286302299_Captura+de+pantalla+2018-09-18+a+las+17.58.02.png) - -## Visual -![](https://d2mxuefqeaa7sj.cloudfront.net/s_7F9E84510E7946C1626EF494D2BF564E124C5FFBAA13F03601E5C1A95BDDE3CD_1539184111397_Captura+de+pantalla+2018-10-10+a+las+17.08.18.png) - -## Responsive - -This component does not change no matter the device resolution. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -10. Clickable area should be sufficient -12. Controls should be correctly labelled - -## Links - -- Zeplin: https://zpl.io/bz1Lw77 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/dropdownList/UXDEF.md b/components/molecule/dropdownList/UXDEF.md deleted file mode 100644 index 567e570577..0000000000 --- a/components/molecule/dropdownList/UXDEF.md +++ /dev/null @@ -1,112 +0,0 @@ -# SUI - Dropdown list -The dropdown is the component that makes up a list of values that is deployed thanks to the* Select component or others like Autosuggest. Each line of value is composed of one or a few atoms, usually text, although it also allows the use of checkboxes and images. - -Dropdown allows the selection of a single unique option and also the multiselection using the* [Checkbox](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--ALhw~d67i531xdaHHfPTcmlLAg-tmVSbtoe8nZTaZk9mkdsE) atom. - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @Marc G, FE Kiko Ruiz Lloret| - -## Structure - -- Dropdown is a single selectable text or a combination of some elements ([Checkbox](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--ALhw~d67i531xdaHHfPTcmlLAg-tmVSbtoe8nZTaZk9mkdsE) + selectable text) -- Dropdown have a flexible width that is adjustable to the content. -See the Visual>Text specifications for more info about that constrain. - - -![Default simple values list of Dropdown List VS The multiselect values (combined with Checkbox atom)](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1534146766352_Dropdown+row++Structure.png) - -## Behavior - -### Showed elements by default - -During implementation, there are 3 possibilities for how many elements of the list will be shown. - -- **S** Small: < 4 items (Cutting out the last one visually) -- **M** Medium: < 6 items (Cutting out the last one visually) -- **L** Large: < 8 items (Cutting out the last one visually) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1534145895941_Dropdown+row+Structure+Height.png) - -![Check zeplin for specific technical aspects ( exemple: Background: Primary colour full lightness 90%)](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533820344746_Dropdown+row++Behaviour.png) - -![To indicate the hover we must put the pointer](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533887034946_options.gif) -![The selected item don’t need change the font-weight](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533887034921_dropdown_check.gif) - -### Recommendation: - -Gray out any unavailable options instead of removing them: any items that cannot be selected should remain in view. If disabled items are removed, the interface loses spatial consistency and becomes harder to learn. - -## Visual - -- Measurements specifications: - - The inner margin of each row is 16px - - The maximum height of each row 40px - - (Check the [Select](https://paper.dropbox.com/doc/SUI-Select--AJtBe_JcZUYGXg00QYmHnQ7oAg-OrlQjuARbK4ZoPdMcSf7p) and [Checkbox & Radio button](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AJtrEE8GozBn7va40aJgBWL9Ag-tmVSbtoe8nZTaZk9mkdsE) [definition](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AJtrEE8GozBn7va40aJgBWL9Ag-tmVSbtoe8nZTaZk9mkdsE) for more information) - -- Text specifications: - - Just one text line in each row is allowed - - Use <24 characters max - - If your item need more than <24 characters, use ellipsis - - -- Dropdown box specifications: - - Position: Dropdown box should be **top:0px** from the bottom of Select component - - Shadow: Large - - Stroke: Thinkness ( 1 ) Color (#BBBBBB) Gray-l2 Position (Inside) - - Border radius: Custom - - (Check the [Select](https://paper.dropbox.com/doc/SUI-Select--AJtBe_JcZUYGXg00QYmHnQ7oAg-OrlQjuARbK4ZoPdMcSf7p) for more information) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533888683177_Dropdown+row++Visual.png) - -![Use ellipsis when the Selectable text will be longer](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533900242345_Dropdown+row++Visual+Constrains.png) - -## Responsive - -The states (selectable text and checkbox behavior) in mobile are the exactly the same but the **Hover** state canot be displayed - -Check [Select](https://paper.dropbox.com/doc/SUI-Select--AJtBe_JcZUYGXg00QYmHnQ7oAg-OrlQjuARbK4ZoPdMcSf7p) for more information - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Interactive elements should be differentiated from content -- Clickable area should be sufficient -- Content should have enough contrast to its background -- Controls should be correctly labelled -- Content should be able to increase in size -- Text should always be displayed as text -- Content should declare the language - -## Links - -- Zeplin: https://zpl.io/2pBk0XE - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor: https://zpl.io/VQE8YyP - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/dropdownOption/UXDEF.md b/components/molecule/dropdownOption/UXDEF.md deleted file mode 100644 index 567e570577..0000000000 --- a/components/molecule/dropdownOption/UXDEF.md +++ /dev/null @@ -1,112 +0,0 @@ -# SUI - Dropdown list -The dropdown is the component that makes up a list of values that is deployed thanks to the* Select component or others like Autosuggest. Each line of value is composed of one or a few atoms, usually text, although it also allows the use of checkboxes and images. - -Dropdown allows the selection of a single unique option and also the multiselection using the* [Checkbox](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--ALhw~d67i531xdaHHfPTcmlLAg-tmVSbtoe8nZTaZk9mkdsE) atom. - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @Marc G, FE Kiko Ruiz Lloret| - -## Structure - -- Dropdown is a single selectable text or a combination of some elements ([Checkbox](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--ALhw~d67i531xdaHHfPTcmlLAg-tmVSbtoe8nZTaZk9mkdsE) + selectable text) -- Dropdown have a flexible width that is adjustable to the content. -See the Visual>Text specifications for more info about that constrain. - - -![Default simple values list of Dropdown List VS The multiselect values (combined with Checkbox atom)](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1534146766352_Dropdown+row++Structure.png) - -## Behavior - -### Showed elements by default - -During implementation, there are 3 possibilities for how many elements of the list will be shown. - -- **S** Small: < 4 items (Cutting out the last one visually) -- **M** Medium: < 6 items (Cutting out the last one visually) -- **L** Large: < 8 items (Cutting out the last one visually) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1534145895941_Dropdown+row+Structure+Height.png) - -![Check zeplin for specific technical aspects ( exemple: Background: Primary colour full lightness 90%)](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533820344746_Dropdown+row++Behaviour.png) - -![To indicate the hover we must put the pointer](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533887034946_options.gif) -![The selected item don’t need change the font-weight](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533887034921_dropdown_check.gif) - -### Recommendation: - -Gray out any unavailable options instead of removing them: any items that cannot be selected should remain in view. If disabled items are removed, the interface loses spatial consistency and becomes harder to learn. - -## Visual - -- Measurements specifications: - - The inner margin of each row is 16px - - The maximum height of each row 40px - - (Check the [Select](https://paper.dropbox.com/doc/SUI-Select--AJtBe_JcZUYGXg00QYmHnQ7oAg-OrlQjuARbK4ZoPdMcSf7p) and [Checkbox & Radio button](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AJtrEE8GozBn7va40aJgBWL9Ag-tmVSbtoe8nZTaZk9mkdsE) [definition](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AJtrEE8GozBn7va40aJgBWL9Ag-tmVSbtoe8nZTaZk9mkdsE) for more information) - -- Text specifications: - - Just one text line in each row is allowed - - Use <24 characters max - - If your item need more than <24 characters, use ellipsis - - -- Dropdown box specifications: - - Position: Dropdown box should be **top:0px** from the bottom of Select component - - Shadow: Large - - Stroke: Thinkness ( 1 ) Color (#BBBBBB) Gray-l2 Position (Inside) - - Border radius: Custom - - (Check the [Select](https://paper.dropbox.com/doc/SUI-Select--AJtBe_JcZUYGXg00QYmHnQ7oAg-OrlQjuARbK4ZoPdMcSf7p) for more information) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533888683177_Dropdown+row++Visual.png) - -![Use ellipsis when the Selectable text will be longer](https://d2mxuefqeaa7sj.cloudfront.net/s_EAB3330EEF8440D7947614D13105721CA6142D19672B5118282DAEAB8E25DDD8_1533900242345_Dropdown+row++Visual+Constrains.png) - -## Responsive - -The states (selectable text and checkbox behavior) in mobile are the exactly the same but the **Hover** state canot be displayed - -Check [Select](https://paper.dropbox.com/doc/SUI-Select--AJtBe_JcZUYGXg00QYmHnQ7oAg-OrlQjuARbK4ZoPdMcSf7p) for more information - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Interactive elements should be differentiated from content -- Clickable area should be sufficient -- Content should have enough contrast to its background -- Controls should be correctly labelled -- Content should be able to increase in size -- Text should always be displayed as text -- Content should declare the language - -## Links - -- Zeplin: https://zpl.io/2pBk0XE - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor: https://zpl.io/VQE8YyP - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/inputField/UXDEF.md b/components/molecule/inputField/UXDEF.md deleted file mode 100644 index b7db2490f3..0000000000 --- a/components/molecule/inputField/UXDEF.md +++ /dev/null @@ -1,147 +0,0 @@ -# SUI - Input field -*Input is the text field that users fill in with different types of information thru alphanumeric text.* -*These include dates, passwords or even short answers.* - -*It should also be noted that Input it is a molecule because always is combined with other atoms like Label, Placeholder or HelpText.* - -| Status | Work in progress | -| :---- | :---- | -| Current version | 2.0 | -| Category | Molecule | -| Owners | UX @David G, @Daniel P ,FE @Julian G| - -## Structure - -- This component almost always it works with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT) & [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) atoms and usually it is combined with other atoms like [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc) or [Buttons](https://paper.dropbox.com/doc/SUI-Buttons-AvdtvjMAqbsFkTYSz3egT). -- Inputs have a flexible length that is adjustable to the grid of the page, except in a few cases where the length is fixed (see the Content cases below). -- The default size for inputs is Medium. Small size will be used only in a few cases -- Example: Filters in a left side column usually use the Small size. -- As an optional feature, the structure can contain a fixed icon or addons (left or right side) that visually indicates its contents or help the user understand and complete the input (see the Content cases below). - -![Those are the 2 sizes of the Input field, combined with Label and Placeholder atoms](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1511430472179_structure.png) - -## Behavior - -### States - -- Inputs have the 3 basic states: default, focused and disabled. -- Should be noted that Placeholder atom disappear when the Input is on focus status. This behavior helps the user understand that the field is ready to write on it. -- For the first iteration, the focus will be the native Browser focus. -![Input states combined with Label and Placeholder atoms](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537263844471_2-inputs-behavior.png) - -### Combined with buttons - -- When an Input is used in combination with buttons, they are always placed to the right of the input, and in responsive adaptation the order can never be changed. -- Remember: the button size will always adapt itself to the input size. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1510148996994_+Inputs-structure.png) - -## Content - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--ALcBKGls8YGd6z2D3u_cnE8MAg-IqZya9lRXdMvFm0PkT1Vu) atom that indicates what users are being asked. - -### Fixed inputs - -There are specific cases where the length of the input is not flexible and has a fixed length, as the following cases. The length it is calculated adding a fix margin to the left & right side of the content. - -Different types of content: - -- **Date field** -We will use the native browser date field -- **Postal Code** -- **Bank account** (1 input box with spaces/scripts between the blocks of numbers) -The code of this input, must be ready to accept the variations in the Country parameters or credit cards types variations. -- **Password** is an exception, that adds a new element: -- “Show” or “Hide” toggle inside the input text -To avoid confusion with secondary and tertiary buttons, this text may not be in capital letters - -Remember, Input (specially the password) can be combined with [HelpText & Validation](https://paper.dropbox.com/doc/SUI-HelpText-Validation-RZpyYPWRNVPzdC9fVrCtc). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537263897353_4-inputs-cases.png) - -The date field and the bank account will be in 1 unique filed. The reasons after studying corner cases and conducting an external benchmark were: - -- To continue with the current format (date) and keep it simple. -- Having the bank account in separate boxes doesn’t work on small screens. -- Having the bank account in separate boxes doesn’t make it intuitive for users who want to copy and paste. - - -### Icons and addons inside the input - -Optionally, an Input can include icons and addons. Text (non editable) that helps the user understand and makes it easier to fill the content. - -Even the visual design (colors, borders, icons…) are flexible to adapt to each vertical needs, there are some common rules to follow: - -1. **Icons** - 1. Aren’t placed inside “fixed gray box” - 2. Must be on the left side of the input - 1. **Exeption**: The [Select](https://paper.dropbox.com/doc/SUI-Select--ALdcLEuyP4LKqQkgmvdzGl0NAg-OrlQjuARbK4ZoPdMcSf7p) and [Autosuggest](https://paper.dropbox.com/doc/SUI-Autosuggest-field-new-WIP-zmn8DNgi7TQRmlqWG4kFD) components uses actionable icons at the right side. - 3. Cannot be text. Only visual icons -2. **Addons** - 1. Must be placed inside a “fixed gray box” - 2. It is NON-editable informative text - 3. Can be placed at the left or right side, depending on the needs. - 4. If it is combined with an icon, the addon must be placed to the right side, because the icon must be placed at the left side. - 5. Addons may not ever be used on the right side when it is combined with an interactive icon (like the arrow from [Select field](https://paper.dropbox.com/doc/SUI-Select-field-WIP--AM9~SFusS3v3n0VvUP_hv1kmAg-OrlQjuARbK4ZoPdMcSf7p), for example); because interactive icons are always on the right side. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537264334678_3-Addons.png) - -## Visual - -Here it is showed only the Input measures. -To see the margins between Input field and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -1. By default, the input box is rounded to 0. But every webpage (vertical) can adapt it to its UI needs. - -![Input mesures combined with Label, Placeholder and Icon atoms](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1537264754902_6-+Inputs-visual.png) - -## Responsive - -The composition of different inputs can be displayed in a grid position when it is viewed on a desktop, but it must be displayed in a vertical position when it moves to a small screen. - -- The screen size will determine when the vertical position display should be changed. - -Regardless of the position of the inputs composition, the label must always follow its own definition position. Check the the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D0205697BB8671E12E85C67415B7EDCAAC9185382AE5C5DF3A549200AC3F0C7C_1508919220395_+Inputs-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -2. Focus should be visible -6. Information should not be supported only by one sense -10. Clickable area should be sufficient -12. Controls should be correctly labelled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/aBw5MMk - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2ZP5EGJ -- Milanuncios -- Motor: https://zpl.io/bzn16A3 - -## Changelog - -### Version 2.0 - -- Iteration. Now is going more simple to work more freely with other components. (decompose) - -### Version 1.0 - -- Creation of the atom \ No newline at end of file diff --git a/components/molecule/modal/UXDEF.md b/components/molecule/modal/UXDEF.md deleted file mode 100644 index f9a6dc51d3..0000000000 --- a/components/molecule/modal/UXDEF.md +++ /dev/null @@ -1,210 +0,0 @@ -# SUI - Modal Windows -*Modal windows* focus users' attention *to inform them about a specific interaction. They may* require users to make a decision *or warn them when an error may have very significant consequences.* - -*As they open over the content, they block any action being performed on the content in order to focus the user’s attention on the message or task, therefore they can be intrusive and must be used in moderation.* - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.1 | -| Category | Molecule | -| Owners | UX @Daniel M , @Chris J , FE @Pablo G| - -## Structure - -This container can be made up of more components depending on the case that is needed. It is composed of the following structure: - -Mandatory elements - -- Modal window (container) -- Overlay (does not apply to fullscreen) -- Content (This is the space where content goes. It can be: texts, images, other components or a combination of them) - -Optionals - -- Header + Title -- Scroll (only if the content exceeded the height of the browser). -- Close icon (It can become mandatory if the component does not have a closure through call to action) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542021058319_1-+Modal+-+Structure.png) - -## Behaviour - -Modal windows maintain the user’s attention and context and are always superimposed over the main content, until the user interacts with them. - -Modals has two behaviors: Open and Close. - -### Opening - -Modal windows open up in the center of the page (both vertically and horizontally) always after an action by the user: - -- Selecting an element. -- Tap on a link or button, etc, (never automatically). -- It rarely opens automatically, since it is not a recommended behavior, but there may be exceptions (example: onboarding). - -Entry effect overlay: FadeIn 250ms -Entry effect modal: FadeIn 250ms + slideUp 32px 250ms ease in - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542021722921_modal-motion-1.gif) - -Mobile behaviour - -- Apply same effect in fullscreen or responsive version of the modal - -### Closing - -The user should always have one of these options to close the window, and it is recommended that all of them are available: - -- Tap the close icon in the top right corner. -- Tap overlay area around the modal window. -- Tap an action of the modal. -- ESC button (this should never be used alone). - -Out effect overlay: FadeOut 250ms -Out effect modal: FadeOut 250ms + slideDown 32px 250ms ease out (see example on opening image) - -Mobile behaviour - -- Apply same effect in fullscreen or responsive version of the modal - -## Variants - -1- Colour header (is recommended use a background with primary colour) -2- White header (less highlighted header) -3- No header (all the space is used for content) - -![Case with mandatory elements + optionals (color header)](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542021203858_3-+Modal+-+Variant2.png) - -![Case with mandatory elements + optionals (white header)](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542021136490_2-+Modal+-+Variant1.png) - -![Case with only with mandatory elements (+ optional close icon)](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542021450179_4-+Modal+-+Variant3.png) - -## Content - -Modal screens work as containers of different types of content, and sometimes they are composed of several components. Their design and behaviour change according to the tasks that the user must execute and the cognitive effort that the user needs to perform for that task. - -Possible combinable components: - -- Button. -- Cards. -- Forms. -- Image gallery. -- Badges. -- Tags. - -Check some examples: - -![In this example we use a card component inside](https://d2mxuefqeaa7sj.cloudfront.net/s_C4EAB7A20656FB1AFBC530D8494D0737994DBAF932C8D255C33281641A291B3C_1511526974745_example-cards.png) - -**Modal with cards** -It is applied in cases that want to show content related to the action performed by a user. - -## -![In this example we use radio buttons options component inside](https://d2mxuefqeaa7sj.cloudfront.net/s_C4EAB7A20656FB1AFBC530D8494D0737994DBAF932C8D255C33281641A291B3C_1513768082428_options.png) - -**Modal for selection of options** -Applied in cases where we need the user to make a decision before several scenarios and options. - -![In this example we use a form inside a modal](https://d2mxuefqeaa7sj.cloudfront.net/s_C4EAB7A20656FB1AFBC530D8494D0737994DBAF932C8D255C33281641A291B3C_1511532114094_example-form.png) - -**Modal with forms** -One of the most common cases is to include form elements such as: input text, list, check, etc. - -![In this example we use a modal to display info about new features](https://d2mxuefqeaa7sj.cloudfront.net/s_C4EAB7A20656FB1AFBC530D8494D0737994DBAF932C8D255C33281641A291B3C_1511532363595_example-onboarding.png) - -**On** ******boarding modal** -This application of the modal is designed to show a sequential information commonly used to tour for a first use of the web or new features that have been incorporated. - -## Responsive - -In the modal mobile version you can use a full screen version to take advantage of the screen space. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542031791889_6-+Modal+-+Responsive2.png) - -## Visual - -### Visual Desktop - -The width of the component is conditioned by the content, the most common measures for desktop span a range of **400px** **width** up to **600px** **width.** The min-width of the modal is 288px (see visual responsive) -See the [attribute z-index](https://paper.dropbox.com/doc/z-index--AUE1Qg6jOw8nyUG3D6dfTHI1Ag-4QvLsXUoWXeWNDiQSzCBc) for the Modal. -**** -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542031494012_7-+Modal+-+Visual1.png) - -If we need to show content that requires more than **600px** **width** on screens with a resolution greater than **1280x1024** there is a modal **maximum width limit of 1200px****.** This modal scales with a margin of 24px when the browser is less to 1200px and change to 16px in the breakpoint XS 480px (see image bellow in visual - mobile) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542108209399_10-+Modal+-+Visual4.png) - -The height of the component will depend on the content or components that are within the modal. Apply scroll if the content exceeded the height of the browser. - -Modal window can have an **optional** **shadow 0 2px 4px #00000024** to highlight the separation. (it can be customized by vertical) -Overlay panel is black with opacity 0.6 (it can be customized by vertical) - -### Visual Mobile - -Modal change to full screen version to take advantage of the screen space. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542031851760_9-+Modal+-+Visual3.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -4. Heading structure should be consistent -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -9. Interactive elements should be differentiated from content -13. Errors should be prevented -14. Content should be able to increase in size -15. Content should have enough contrast to its background - -The user must have all the existing alternatives to close the component, using both the keyboard and the mouse. - -These accessibility recommendations are based on the modal component, we must remember that a modal can carry other components inside, so these components must comply with their specific accessibility recommendations. - -## Links - -- Zeplin: https://zpl.io/brrPqZO - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/blZzrEe -- Milanuncios -- Motor - -## Changelog - -### Version 1.2 - -- Queda pendiente aplicar Variable Responsive con Margins para una segunda iteración del componente. -- Responsive: It is left to the discretion of the designer whether to use an overlay (see behaviors section). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542031784120_5-+Modal+-+Responsive1.png) - -- Visual responsive: In the overlay modal the padding are reduced to 16px in the breakpoint XS 480px to take advantage of the screen size. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1542031840174_8-+Modal+-+Visual2.png) - -- También queda pendiente para una segunda iteración la Variable **Modal No Header + Imagen.** Añado un visual nuevo de la modal en desktop donde se ve más claro - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D4CF32D1CB6EBD9A9A8790674E4392BFB96C606A04762D291C2744A800530B7B_1548839906131_4.2-+Modal+-+Variant4.png) - -### Version 1.1 - -- Definition & Visuals iteration - -### Version 1.0 - -- First definition no closed \ No newline at end of file diff --git a/components/molecule/notification/UXDEF.md b/components/molecule/notification/UXDEF.md deleted file mode 100644 index 1f43db8435..0000000000 --- a/components/molecule/notification/UXDEF.md +++ /dev/null @@ -1,184 +0,0 @@ -# SUI - Notifications -*Notifications offer users information on the system. The content may confirm that an action has been performed correctly, warn the user of an error or simply give information on certain circumstances.* - -| Status | Complete | -| :---- | :---- | -| Current version | 2.1 | -| Category | Molecule | -| Owners | UX @Nuria I, FE @Daniel M| - -## Structure - -Notification is made up for a container, icon, text message and interactive items (close button, action buttons, links… ). - -## Types - -There are five types of notifications differentiated based on the messages meaning: - -- Success -- Alert/Warning -- Informative -- System -- Error - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_76D5D77B27591CD365518045E2DF76F037A8B6216C9919175CFE04E322413E6D_1522073082042_Captura+de+pantalla+2018-03-26+a+las+16.04.23.png) - -### Success - -Whenever the user has performed an action and requires positive feedback. - -### Alert/Warning - -These give the user notifications about things that are non-blocking but which they should know. - -### Error - -These warn users that it has not been possible to perform an action, i.e. that there is something blocking the action. -They should always offer a recommendation and/or action to resolve the block. - -## Info - -These give the user notifications about things that are non-blocking but which they should know, The message is regarding to the vertical and its background color is primary/corporate. - -### System - -Messages with secondary information that do not have a major impact on the user experience, default color is dark gray. - -## Behaviour - -Notifications can appear on three different positions depending on the definition case: - -- Top (page or container) -- Relative (between content) -- Bottom (page or container) - -**To****p:** -- Top page: Appear in the upper part of the screen, superimposed over the heading and the navigation bar. This keeps the focus on the content and avoids pushing it further down. Even if the user scrolls up or down, the toast must stay in the same place in the upper part of the screen. -- Top container: Appears at the top of any container, scroll up/down affects on its position as any other content. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_76D5D77B27591CD365518045E2DF76F037A8B6216C9919175CFE04E322413E6D_1522073187852_Captura+de+pantalla+2018-03-26+a+las+16.06.16.png) - -**Relative:** Could appears in any position, at the top, between or at the bottom of any container, **is not fixed** so it will always follow the [box model](https://www.w3schools.com/css/css_boxmodel.asp) and it will be affected by any margin, padding or height of any previous/next content, just for that reason **is used just to notify some message related to the next or previous content** or even the whole container. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_76D5D77B27591CD365518045E2DF76F037A8B6216C9919175CFE04E322413E6D_1522073196802_Captura+de+pantalla+2018-03-26+a+las+16.05.19.png) - -**Bottom:** - -- Bottom page: Appear in a fixed position in the bottom part of the screen, superimposed over the content. -- Bottom container: Appears at the bottom of any container (in this case the user maybe should scroll down to see the message.) - -The use of messages within modals is not contemplated. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_76D5D77B27591CD365518045E2DF76F037A8B6216C9919175CFE04E322413E6D_1522073220456_Captura+de+pantalla+2018-03-26+a+las+16.05.27.png) - -### Type of close: - -The **close button is optional** in all types of notifications and could be closed automatically o manual depending on use case. - -**Automatic:** - -- The notification disappears after a minimum of 3 seconds. -- The duration can be defined depending on the length of the content, which the UX will determine when implementing based on: - - Short = 3 seconds. - - Medium = 6 seconds. - - Long = 9 seconds. -- In case of “X” icon appears, it will always be visible to close the notification in case the user wants to close it before the automatic close. - -**Manual close:** - -- The “X” icon will always be visible to close the notification. -- If there is a call to action “X” button will also close the notification but this action won’t be saved, so the message will keep be shown for the next visit or reload. - -### Behaviour of the transition: - -Notification messages **could have or not** a transitional animation as an optional prop, by default is with animation. -The type of animation is based on the position. -Bear in mind that relative position messages with transition will pull the content down and will increase the high of its container when pops up: - -- Top: - - Entry: SlideDown: Transition 0.5s ease-out - - Exit: SlideUp: Transition 0.3s ease-in -- Relative - - Entry: FadeIn: Transition 0.5s ease-out - - Exit: FadeOut: Transition 0.3s ease-in -- Bottom: - - Entry: SlideUP: Transition 0.5s ease-out - - Exit: SlideDown: Transition 0.3s ease-in - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8772120B34E0CB7B174A0EEA386772318CAF9D1A92F3091FED38E365CE95C47C_1498577182904_toast-alerta-mobile.gif) - - -## Content -- Remember to always be concise and try not to exceed the text limit (110 characters). -- It may include icons, text, links and buttons (3 buttons as maximum) -- We always include an icon in the notifications to help the user recognize the type of information they contain. Only at the mobile version this icon will disappear. -- The phrases must always end with a full stop, unless they end in a question mark or exclamation mark. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_76D5D77B27591CD365518045E2DF76F037A8B6216C9919175CFE04E322413E6D_1522073307195_Captura+de+pantalla+2018-03-26+a+las+16.07.56.png) - -## Visual - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_8772120B34E0CB7B174A0EEA386772318CAF9D1A92F3091FED38E365CE95C47C_1507200463973_3.1-Notification-Metrics.png) - -- The component should have two versions (positive and negative). The color of the positive one should be the L4. -- Rounded corners might be applied by using a declarative `roundedCorners` property. - -## Responsive - -This behaves in the same way, adapting to the screen width, breaking the text content into several lines. -On the mobile version, it loses the icon to optimize space. -To enhance accessibility, we recommend that the first phrase in the notification gives an idea of the type of notification (e.g. Error > The message could not be sent due to a connection error…). -This format can also be used in other contexts, maintaining the same design, for example in the company CV chat on the desktop version. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_76D5D77B27591CD365518045E2DF76F037A8B6216C9919175CFE04E322413E6D_1522073368886_Captura+de+pantalla+2018-03-26+a+las+16.09.14.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Content should have enough contrast to its background -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Clickable area should be sufficient - -Also, pay attention to the following tips: - -- Use ARIA role="alert" to inform the assistance technologies regarding an important, non-interactive message. If the message is interactive, use alertdialog. -- Never leave a notification hidden in the code in order to call it when you need it, as users with assistive technologies will be able to see it. - -## Links - -- Zeplin: https://zpl.io/aR0vyz2 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/bAAjJnx -- Milanuncios -- Motor - -## Changelog - -### Version 2.0 - -- Colors: We decided to change color in a negative just to give more contrast between main content and notification messages. -- Behaviour : We did some changes based on the development just to make it much simpler to develop and make the react props as simple as possible. -- Types: We removed the 2 types of notifications Alerts and Toasts and we’ve simplified in a general and unified “notification” type. - We add a new “info” style notification in prymate/corporate color to incorporate brand notifications approaches. -- Icons: We did a research on the icons on notification messages and we change the icons to standardize to the most common used. -- Some other minor changes. - -### Version 1.0 - -- Colors: Add positive version. diff --git a/components/molecule/pagination/UXDEF.md b/components/molecule/pagination/UXDEF.md deleted file mode 100644 index d63831b775..0000000000 --- a/components/molecule/pagination/UXDEF.md +++ /dev/null @@ -1,104 +0,0 @@ -# SUI - Pagination -Splitting the contents, or a section of contents, into pages. - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @Diego M, FE @david.m| - -## Structure - -The Pagination component consists of a group of buttons arranged in a row. Is divided in 2 parts: - -- The **Navigation Buttons** allow the user to navigate consecutively, ascending or descending, through the pages where the content is. -- The **Page Buttons** indicate in which page the user is and allows to browse through the pages without an established order. By clicking on them, the user will go to the page corresponding to the number that the button has. -![](https://d2mxuefqeaa7sj.cloudfront.net/s_E0E3A61A83BDB72BB8AC39C38224D16D8CA20C3E185F85D34AF46B5A69051B00_1537522885243_1-Paginator-+Structure.png) - -## Behavior - -The **Navigation Buttons** acquire, as their name indicates, a button behavior, therefore they have this states: resting, hover, pressed and disabled. -The Disabled state could change the alpha value depending the component variant (see “Types” section). -The **Page Buttons** have the same behaviour with this states: resting, hover, pressed and highlighted. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_E0E3A61A83BDB72BB8AC39C38224D16D8CA20C3E185F85D34AF46B5A69051B00_1537529845275_2-Paginator-+Behavior.png) - -## Types - -There are 3 versions of Pagination: - -- **Extended version.** -- **Compressed version** -- **Minimalist version** - -Each type contains 3 variants that are characterized by the arrangement of the elements that component is formed with. - -### Extended version - -In this version, the Page Buttons have the structure of the button group showing a maximum of 10 links. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_1EDDC64A234DCE1825D7322E23721AB78CA3FC2C7066B3E01FA04DA8652988B1_1540480358614_Captura+de+pantalla+2018-10-25+a+les+17.12.02.png) - -![](/static/img/pixel.gif) - -### Compressed version -![](https://d2mxuefqeaa7sj.cloudfront.net/s_1EDDC64A234DCE1825D7322E23721AB78CA3FC2C7066B3E01FA04DA8652988B1_1540480615891_Captura+de+pantalla+2018-10-25+a+les+17.16.36.png) - -## Contents - -The Navigation Buttons should clearly describe the direction of the page. The use of long copys is not recommended. Apart from the text, this is emphasized by the use of iconography such as arrows or chevrons -The content of the Page Buttons has to be numeric - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_E0E3A61A83BDB72BB8AC39C38224D16D8CA20C3E185F85D34AF46B5A69051B00_1537945903309_4-Paginator-+Content.png) - -## Visual - -Must to be 8 px distance between Navigation Buttons and Page Buttons. And between one navigation button with the other in case of variants 2 o 3. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_E0E3A61A83BDB72BB8AC39C38224D16D8CA20C3E185F85D34AF46B5A69051B00_1537955905530_6-paginator-visual.png) - -## Responsive - -The compressed and minimal version works very well in Mobile devices. To use the extended version it will be necessary to adjust the number of Page Buttons to fit in the device width. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Interactive elements should be differentiated from content -- Clickable area should be sufficient -- Content should have enough contrast to its background -- Controls should be correctly labelled -- Content should be able to increase in size -- Text should always be displayed as text -- Content should declare the language - -## Links - -- Zeplin: https://zpl.io/2vN95z7 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/progressSteps/UXDEF.md b/components/molecule/progressSteps/UXDEF.md deleted file mode 100644 index 3a51629d1e..0000000000 --- a/components/molecule/progressSteps/UXDEF.md +++ /dev/null @@ -1,87 +0,0 @@ -# SUI -Progress steps -This component displays progress through a sequence of logical and numbered steps. Displays the steps in order from left to right, or from to bottom and shows the direction of the movement. - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @daniel.pardo, FE @Norbert G| - -## Structure - -1. **Progress bar:** Displays how far along the user is in completing the task, including the number of steps required to complete the task, the height of the bar by default is 4px, but it can scale in base 8 -2. **Current step:** Indicates the current step that the user is working on. -3. **Unvisited:** Shows steps that user has not visited or completed yet. The step and label are more subtle to indicate this. -4. **Visited:** Steps that have already been visited include clickable links, so that users can navigate back to them. -5. **Step description:** Describes as a headline each the progress steps. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_B02893AA86CE591E4A37E9E07BE08755CBE7653AAB5A94DC5744A835C7640AA9_1539678274988_1-progress+steps-+structure.png) - -## Behavior - -Progress step requires the user to complete previous steps before proceeding to marked and going to the next. - -In some cases we can go back to a previous step, but never interacting with the progress step itself, as is only indicative and non actionable. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_B02893AA86CE591E4A37E9E07BE08755CBE7653AAB5A94DC5744A835C7640AA9_1539602083792_2-progress+steps-behabiour.png) - -## Types - -- Horizontal -- Horizontal with icon -- Vertical -- Vertical with icon - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_B02893AA86CE591E4A37E9E07BE08755CBE7653AAB5A94DC5744A835C7640AA9_1539602127601_3-progress+steps-+types.png) - -## Contents - -The **Step description** must be as accurate and short as possible, allowing the user to understand where they are, where they come from and the path ahead in the simplest way. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_B02893AA86CE591E4A37E9E07BE08755CBE7653AAB5A94DC5744A835C7640AA9_1539686708579_6-progress+steps-+dodons.png) - -## Visual -![](https://d2mxuefqeaa7sj.cloudfront.net/s_B02893AA86CE591E4A37E9E07BE08755CBE7653AAB5A94DC5744A835C7640AA9_1539602144726_4-progress+steps-+visual.png) - -## Responsive - -On mobile, only are shown the progress bars and the label of the step active. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_B02893AA86CE591E4A37E9E07BE08755CBE7653AAB5A94DC5744A835C7640AA9_1539602161962_5-progress+steps-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -3. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -15. Content should have enough contrast to its background -16. Text should always be displayed as text - -## Links - -- Zepin: http://zpl.io/a7EmKmK - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/quickAction/UXDEF.md b/components/molecule/quickAction/UXDEF.md deleted file mode 100644 index e60e19b37f..0000000000 --- a/components/molecule/quickAction/UXDEF.md +++ /dev/null @@ -1,46 +0,0 @@ -# SUI -Quick Action - - -## Structure - - -## Behavior - - -## Types - - -## Contents - - -## Visual - - -## Responsive - - -## Accessibility - - -## Links - - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/radioButtonField/UXDEF.md b/components/molecule/radioButtonField/UXDEF.md deleted file mode 100644 index ae7c63afa0..0000000000 --- a/components/molecule/radioButtonField/UXDEF.md +++ /dev/null @@ -1,146 +0,0 @@ -# SUI - Checkbox & Radio button -*Checkboxes are used when there are lists of options and the user may select any number of choices, including zero, one, or several. In other words, each checkbox is independent of all other checkboxes* ~~*in*~~*on* *the list, so checking one box doesn't uncheck the others.* -*A stand-alone checkbox is used for a single option that the user can turn on or off.* -*Each vertical can determine whether or not a stand-alone checkbox will be selected by default* - - -*Radio buttons are used when there is a list of options that mutually exclude each other. In other words, only one option can be selected, automatically deselecting the other preselected options.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Chris J, FE | - -**Recommendations:** - -- Take in consideration the next recommendation when the user must select between different options inside a range: -- Use **Radio button** when there are 2 to 5 options -- Use [Data Counter](https://paper.dropbox.com/doc/SUI-Data-counter--AQoAk39iIIJh2YPkZHAMA0OoAg-TqR9qBw4WRr5l5gNMvvEE) when there are 5 to 99 options (numbers) -- Use [Slider](https://paper.dropbox.com/doc/SUI-Slider--AQrmpIMeYmY2P1q1nQr~vOifAg-gPOtnVwgn8SUMDTjFTZ2q) when there is a big range of options. From 10 to 999 (like 10-20-30-50…) -- If possible, use Radio buttons instead of Select field (drop-down menus). Radio buttons have a lower cognitive load because they make all of the options permanently visible so that users can easily compare them. -- Use checkboxes and radio buttons only to change settings, not as action buttons that make something happen. - -## Structure - -- Checkbox & Radio button are a combination of 2 elements: Icon + Other element (on which makes the action)*. -*Examples of other elements: Label, card, image, table’s row… -- Check the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). -- At least 2 options must be selected for the radio button. If there is only one, then a Checkbox must be used. -- It is extremely important to present all the selection options that go together as group and to clearly separate them from the other groups on the same page. - -By default, a group of checkboxes or radio buttons are displayed vertically stacked as a list. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244295686_1-+Checks++Radios+-+Structure.png) - -However, a group of checkboxes or radio buttons may also be displayed in a horizontal line. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508756136492_3.2-+Checks++Radios+-+Inline.png) - -Remember to check the [Label d](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[z](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[efinition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -## Behavior - -### State - -- The Checkbox & Radio buttons have 5 statuses, because the “selected” status is also included, plus this new one when it is “focused”. -- For the first iteration, the focus will be the native Browser focus. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_93C20F5C4F821D493D97CF4844B0A35AACB52F92F3DF8EF54B5B096DF7826CA3_1521029713670_2-+Checks++Radios+-+Behavior.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508747391991_6-+Checks++Radios+-+Accessibility-Focus.png) - -## Content - -Preselected options aren’t recommended, especially in Radio Buttons. -Pre-selection can be used as an exception only in some cases where the information to select isn’t too important or when the system has complementary information to pre-select one option (for example, geolocalization). - -If a checkbox or radio button with an important decision is preselected and the user misses it, the user may move forward with the form with crucial information answered incorrectly. - -## Types - -### Ad hoc variations - -**INFOJOBS** -Sometimes, checkboxes and radio buttons are used that look different. Boxes that need to be selected are missing and they look more like buttons, but the underlying logic corresponds to these elements. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508922211401_7-+Checks++Radios+-+Custom-Border.png) - -**F****OTOCASA** ******&** ******COCHES** -Sometimes, checkboxes and radio buttons are used that look different. The checkbox or radio-button is hidden, and there is an illustration/image instead above its label. - -**Coches.net** -In coches, the status is represented by its opacity. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629373_coches_custom_check.png) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629378_coches_custom_check2.png) - -**Fotocasa** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1509358615443_Screen+Shot+2017-10-30+at+11.16.34.png) - -## Visual - -Checkbox & Radio buttons have their height defined by the label’s line-height and they are aligned from the center to the icon. -The margin between each individual Check/Radio~~,~~ displayed vertically, is 16px. - -Use standard visual representations. A Checkbox should be a small square that has a checkmark or an X when selected. A Radio button should be a small circle that has a solid circle inside it when selected. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244390294_4-+Checks++Radios+-+Visual.png) - -## Responsive - -Checkbox & Radio buttons can be aligned from horizontal to vertical grids, but the Label position must always be kept on the right side of the icon. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244399026_5.1-+Checks++Radios+-+Responsive.png) - -If a list label ~~was~~is very extensive, it will be a double line in responsive. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244411307_5.2-+Checks++Radios+-+Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient - -The active/clickable area has been defined as 24 px (only when it is for text+icon) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244425583_6-+Checks++Radios+-+Accessibility-Active+area.png) - -12. Controls should be correctly labeled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Benchmark: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Form Elements: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Zeplin: https://zpl.io/bo0eq9Z - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7JGJ -- Milanuncios -- Motor: https://zpl.io/brElMlr - -## Changelog - -### Version 1.0 - -- Component creation diff --git a/components/molecule/radioButtonGroup/UXDEF.md b/components/molecule/radioButtonGroup/UXDEF.md deleted file mode 100644 index ae7c63afa0..0000000000 --- a/components/molecule/radioButtonGroup/UXDEF.md +++ /dev/null @@ -1,146 +0,0 @@ -# SUI - Checkbox & Radio button -*Checkboxes are used when there are lists of options and the user may select any number of choices, including zero, one, or several. In other words, each checkbox is independent of all other checkboxes* ~~*in*~~*on* *the list, so checking one box doesn't uncheck the others.* -*A stand-alone checkbox is used for a single option that the user can turn on or off.* -*Each vertical can determine whether or not a stand-alone checkbox will be selected by default* - - -*Radio buttons are used when there is a list of options that mutually exclude each other. In other words, only one option can be selected, automatically deselecting the other preselected options.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0| -| Category | Atom | -| Owners | UX @David G, @Chris J, FE | - -**Recommendations:** - -- Take in consideration the next recommendation when the user must select between different options inside a range: -- Use **Radio button** when there are 2 to 5 options -- Use [Data Counter](https://paper.dropbox.com/doc/SUI-Data-counter--AQoAk39iIIJh2YPkZHAMA0OoAg-TqR9qBw4WRr5l5gNMvvEE) when there are 5 to 99 options (numbers) -- Use [Slider](https://paper.dropbox.com/doc/SUI-Slider--AQrmpIMeYmY2P1q1nQr~vOifAg-gPOtnVwgn8SUMDTjFTZ2q) when there is a big range of options. From 10 to 999 (like 10-20-30-50…) -- If possible, use Radio buttons instead of Select field (drop-down menus). Radio buttons have a lower cognitive load because they make all of the options permanently visible so that users can easily compare them. -- Use checkboxes and radio buttons only to change settings, not as action buttons that make something happen. - -## Structure - -- Checkbox & Radio button are a combination of 2 elements: Icon + Other element (on which makes the action)*. -*Examples of other elements: Label, card, image, table’s row… -- Check the [Label definition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). -- At least 2 options must be selected for the radio button. If there is only one, then a Checkbox must be used. -- It is extremely important to present all the selection options that go together as group and to clearly separate them from the other groups on the same page. - -By default, a group of checkboxes or radio buttons are displayed vertically stacked as a list. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244295686_1-+Checks++Radios+-+Structure.png) - -However, a group of checkboxes or radio buttons may also be displayed in a horizontal line. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508756136492_3.2-+Checks++Radios+-+Inline.png) - -Remember to check the [Label d](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[z](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT)[efinition](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT). - -## Behavior - -### State - -- The Checkbox & Radio buttons have 5 statuses, because the “selected” status is also included, plus this new one when it is “focused”. -- For the first iteration, the focus will be the native Browser focus. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_93C20F5C4F821D493D97CF4844B0A35AACB52F92F3DF8EF54B5B096DF7826CA3_1521029713670_2-+Checks++Radios+-+Behavior.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508747391991_6-+Checks++Radios+-+Accessibility-Focus.png) - -## Content - -Preselected options aren’t recommended, especially in Radio Buttons. -Pre-selection can be used as an exception only in some cases where the information to select isn’t too important or when the system has complementary information to pre-select one option (for example, geolocalization). - -If a checkbox or radio button with an important decision is preselected and the user misses it, the user may move forward with the form with crucial information answered incorrectly. - -## Types - -### Ad hoc variations - -**INFOJOBS** -Sometimes, checkboxes and radio buttons are used that look different. Boxes that need to be selected are missing and they look more like buttons, but the underlying logic corresponds to these elements. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1508922211401_7-+Checks++Radios+-+Custom-Border.png) - -**F****OTOCASA** ******&** ******COCHES** -Sometimes, checkboxes and radio buttons are used that look different. The checkbox or radio-button is hidden, and there is an illustration/image instead above its label. - -**Coches.net** -In coches, the status is represented by its opacity. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629373_coches_custom_check.png) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_D3B5B5C5D57AE1F7044D61CC0DB2D581BF776FA3B95F167BA65CBA9A9C1FEB5E_1511524629378_coches_custom_check2.png) - -**Fotocasa** - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1509358615443_Screen+Shot+2017-10-30+at+11.16.34.png) - -## Visual - -Checkbox & Radio buttons have their height defined by the label’s line-height and they are aligned from the center to the icon. -The margin between each individual Check/Radio~~,~~ displayed vertically, is 16px. - -Use standard visual representations. A Checkbox should be a small square that has a checkmark or an X when selected. A Radio button should be a small circle that has a solid circle inside it when selected. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244390294_4-+Checks++Radios+-+Visual.png) - -## Responsive - -Checkbox & Radio buttons can be aligned from horizontal to vertical grids, but the Label position must always be kept on the right side of the icon. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244399026_5.1-+Checks++Radios+-+Responsive.png) - -If a list label ~~was~~is very extensive, it will be a double line in responsive. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244411307_5.2-+Checks++Radios+-+Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -6. Information should not be supported only by one sense -7. Interactive elements and images should be correctly labelled -8. Content should be written in common language -10. Clickable area should be sufficient - -The active/clickable area has been defined as 24 px (only when it is for text+icon) -![](https://d2mxuefqeaa7sj.cloudfront.net/s_AB52B2C6C0DB1D57A02698635F0FB019833A40B9117403475BB00A35DB916634_1513244425583_6-+Checks++Radios+-+Accessibility-Active+area.png) - -12. Controls should be correctly labeled -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Benchmark: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Form Elements: https://confluence.schibsted.io/display/ST/Benchmark+Form+Elements# -- Zeplin: https://zpl.io/bo0eq9Z - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2Gp7JGJ -- Milanuncios -- Motor: https://zpl.io/brElMlr - -## Changelog - -### Version 1.0 - -- Component creation diff --git a/components/molecule/rating/UXDEF.md b/components/molecule/rating/UXDEF.md deleted file mode 100644 index fcb41d26a2..0000000000 --- a/components/molecule/rating/UXDEF.md +++ /dev/null @@ -1,91 +0,0 @@ -# SUI - Rating -*A classification according how good or popular someone o something is.* - -| Status | Pending review | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @Diego M| - - -## Structure - -The rating component consists of two clearly differentiated parts. A block of stars that indicates the degree of satisfaction in a visual way and a label that reaffirms that statement with text giving more details. This label can have a link function. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_C66946978555A8CAAFFDC75B2CF5587C671784276AFEDBF7ED7E005950261033_1542203714893_1-Rarting-+Structure.png) - -## Behavior - -The label have the same behaviour as a button but the disabled state have the same visual as resting state. The mission of the label is to add the number of total ratings. But if the site needs to show to the user the ratings more accurate, the label has to have a button behaviour. Add the label must be optional depending on the needs of the site. The flexibility of this component allows to add a superior label or be accompanied by a help text. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_C66946978555A8CAAFFDC75B2CF5587C671784276AFEDBF7ED7E005950261033_1542203732292_2-Rarting-+Behavior.png) - -## Types - -As mentioned in the previous section, the existence of the label is based on the needs of the site, so exist two types of rating components: with or without label. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_C66946978555A8CAAFFDC75B2CF5587C671784276AFEDBF7ED7E005950261033_1542203860811_3-Rarting-+variant.png) - -## Contents - -Try not to add a extensive text in the label. It has to be clear and concrete. It your label is 2 lines long or more, please rethink the content. -Stars have to be in the same line. -If you don’t have a lot of horizontal space, think to build the component in 2 lines: the stars in the top and the label below. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_C66946978555A8CAAFFDC75B2CF5587C671784276AFEDBF7ED7E005950261033_1542203929964_4-Rarting-+Content.png) - -## Visual - -8px is the distance between the stars group and the label. The size could be adapted according to 24px, 32px and 40px, in spite of that the sizes between the parts must be the explained in the image. - -The colors must be customizable to cover the needs of each site as well the objects. It’s not mandatory to use stars. But these objects must have a fill property so it is not recommended to use outlined icons. There will be two types of filling: full and half. -- Full: When the component is used to vote. -- Half When the component is used to show a result with decimals in the average. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_C66946978555A8CAAFFDC75B2CF5587C671784276AFEDBF7ED7E005950261033_1544112614946_6-Rartingvisual.png) - -## Responsive - -Keep in mind that this component must adapt the focus area to a larger one in order to facilitate its access when it appears in a mobile device. About this, the rules to follow are the same of any other component. - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -- Every interactive element should be focusable -- Focus order should match visual order -- Focus should be visible -- Interactive elements and images should be correctly labelled -- Interactive elements should be differentiated from content -- Clickable area should be sufficient -- Content should have enough contrast to its background -- Controls should be correctly labelled -- Content should be able to increase in size -- Text should always be displayed as text -- Content should declare the language - -## Links - -- Zeplin: https://zpl.io/bldmOE0 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/select/UXDEF.md b/components/molecule/select/UXDEF.md deleted file mode 100644 index 39ee5afd68..0000000000 --- a/components/molecule/select/UXDEF.md +++ /dev/null @@ -1,120 +0,0 @@ -# SUI - Select field -Select it is a form field that let users select from a list of possible values. It can be for one selection or multi-selection. - -**It should also be noted that Select it is a molecule because it must be combined with Dropdown list molecule (to show the list of values) and usually is combined with other atoms like Label, Placeholder or HelpText.** - -| Status | Work in progress | -| :---- | :---- | -| Current version | 2.0 | -| Category | Molecule | -| Owners | UX @David G, @Daniel P, FE @Julian G| - -## Structure - -- This component always works in combination of [Dropdown list](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) and [Icons](https://paper.dropbox.com/doc/SUI-Icons-WIP--AMb5tk9_hn_MtVAcoE03FXOSAg-vn9iJCzYbYm7pvgHC25eD) molecules and usually with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) and [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc). -- Select have a flexible length that is adjustable to the grid of the page. -- The default size for Select is Medium. Small size will be used only in a few cases -- Example: Filters in a left side column usually use the Small size. - -Remember; if there are few values to choose (one or multiple), [Checkbox & Radiobutton](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AMY4nZaXW1WgxNkQvhDzPNo9Ag-tmVSbtoe8nZTaZk9mkdsE) will be a better component to use. - -![Those are the 2 sizes of the Select field, combined with Label, Placeholder and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_DF6298C88B53A6B5F6349AE8A93D2FD8E1ABB0F59103E254A993325BBD3DB217_1537261829195_1-Select-structure.png) - -## Behavior - -### States - -- Select have the same 3 basic states: default, focused and disabled. -- For the first iteration, the focus will be the native browser focus. -- Remember, the values to select will be shown on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) list component. - -**Recommendations:** - -- The clickable area of the chevron up/down icon should be more than **40px**, specially - for mobile. (See accesibility content for more information) -![Select states combined with Label, Placeholder, Icons and Dropdown components.](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554819850757_Select-behavior1.png) - -### Multi select - -This type is less used and less recommended. -When some values are selected, they appear in the Select field as [Tags](https://paper.dropbox.com/doc/SUI-Tags-bOSL4L5TFYZqPaK0wnCHb) that can be self-deleted. At the same time, they remain as visual options on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--ANBJwzoE5h5fXlq~fBc6ZVgeAg-VSQSdXvEyqawESsk4IkMC) list, but in “disabled state”. - -![Select states combined with Label, Icons and Dropdown components.](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554819645297_Select-types.png) - -## Content - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Text-placeholder-IqZya9lRXdMvFm0PkT1Vu) text that indicates what is being asked of users. - -**Recommendations:** - -- Avoid use Select field when there are only 2 or 3 options that could be displayed in a [Checkbox component](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button-tmVSbtoe8nZTaZk9mkdsE). (which require only a single click or tap). -- Resist the temptation to include many items whenever possible. If you have many items, consider alternative ways of presenting them or use facilities like [Autosuggest field](https://paper.dropbox.com/doc/SUI-Autosuggest-field-new-WIP--AMpYLvg3jxrwfy7lnSqo8rSsAg-zmn8DNgi7TQRmlqWG4kFD). -- [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--ANBJwzoE5h5fXlq~fBc6ZVgeAg-VSQSdXvEyqawESsk4IkMC) recommendation: Gray out any unavailable options instead of removing them: any items that cannot be selected should remain in view. If disabled items are removed, the interface loses spatial consistency and becomes harder to learn. -# Visual - -Here it is showed only the Select measures. To see the 2 sizes of the field, please check [Input field](https://paper.dropbox.com/doc/SUI-Input-field-WIP--ANBFezB5g93jmp~uku3ikwesAg-03mHJFkOCjviSZevsaTwm). Those are the same. -To see the margins between Select field and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -The following measurements are visible here: - -- The inner margin of the select field should be 8 px minimum. -- The inner size and margins for the right-side icons: arrow up/down. -- The chevron up/down icon has a 8 px padding left. - -![Select states combined with Label, Icons and Dropdown components.](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554820866739_Select-visual.png) - -## Responsive - -The composition of different inputs can be displayed in a grid position when it is viewed on a desktop, but it must be displayed in a vertical position when it moves to small screens. - -Breakpoints will determine when to change how to display it. Each vertical has its own breakpoints - -To keep the coherence with the other fields used in forms like [Autosuggest field](https://paper.dropbox.com/doc/SUI-Autosuggest-field-new-WIP--AMpYLvg3jxrwfy7lnSqo8rSsAg-zmn8DNgi7TQRmlqWG4kFD), we recommend not use the native browser selector on mobile devices. - -When Tags will be needed, using **Large Tag** is mandatory for mobile devices in order to have a better accessibility (See [Tags](https://paper.dropbox.com/doc/SUI-Tags--Ab3DNag_5dltDg1~9YF7J7UDAg-bOSL4L5TFYZqPaK0wnCHb) for more information) - -![](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554819714630_textarea-responsive.png) - -### Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -3. Focus should be visible -8. Content should be written in common language -10. Clickable area should be sufficient: A minimum 40 x 40 pixels area is recommended to ensure a comfortable interaction no matter the device. -Users in motion or those with motor disabilities will benefit from an easier way of reaching an interactive element. -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/V1MOPw5 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 2.0 - -- New Padding left for chevron icon. -- 40 px clickable area of chevron icon - -### Version 1.0 - -- 06/11/2017 Creation of the atom -- 04/09/2018 Iteration. Now is going more simple to work more freely with other components. (decompose) diff --git a/components/molecule/selectField/UXDEF.md b/components/molecule/selectField/UXDEF.md deleted file mode 100644 index 39ee5afd68..0000000000 --- a/components/molecule/selectField/UXDEF.md +++ /dev/null @@ -1,120 +0,0 @@ -# SUI - Select field -Select it is a form field that let users select from a list of possible values. It can be for one selection or multi-selection. - -**It should also be noted that Select it is a molecule because it must be combined with Dropdown list molecule (to show the list of values) and usually is combined with other atoms like Label, Placeholder or HelpText.** - -| Status | Work in progress | -| :---- | :---- | -| Current version | 2.0 | -| Category | Molecule | -| Owners | UX @David G, @Daniel P, FE @Julian G| - -## Structure - -- This component always works in combination of [Dropdown list](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) and [Icons](https://paper.dropbox.com/doc/SUI-Icons-WIP--AMb5tk9_hn_MtVAcoE03FXOSAg-vn9iJCzYbYm7pvgHC25eD) molecules and usually with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) and [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc). -- Select have a flexible length that is adjustable to the grid of the page. -- The default size for Select is Medium. Small size will be used only in a few cases -- Example: Filters in a left side column usually use the Small size. - -Remember; if there are few values to choose (one or multiple), [Checkbox & Radiobutton](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button--AMY4nZaXW1WgxNkQvhDzPNo9Ag-tmVSbtoe8nZTaZk9mkdsE) will be a better component to use. - -![Those are the 2 sizes of the Select field, combined with Label, Placeholder and Dropdown components.](https://d2mxuefqeaa7sj.cloudfront.net/s_DF6298C88B53A6B5F6349AE8A93D2FD8E1ABB0F59103E254A993325BBD3DB217_1537261829195_1-Select-structure.png) - -## Behavior - -### States - -- Select have the same 3 basic states: default, focused and disabled. -- For the first iteration, the focus will be the native browser focus. -- Remember, the values to select will be shown on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--AMZeIHGwjPUH_E1rMLoO7RbvAg-VSQSdXvEyqawESsk4IkMC) list component. - -**Recommendations:** - -- The clickable area of the chevron up/down icon should be more than **40px**, specially - for mobile. (See accesibility content for more information) -![Select states combined with Label, Placeholder, Icons and Dropdown components.](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554819850757_Select-behavior1.png) - -### Multi select - -This type is less used and less recommended. -When some values are selected, they appear in the Select field as [Tags](https://paper.dropbox.com/doc/SUI-Tags-bOSL4L5TFYZqPaK0wnCHb) that can be self-deleted. At the same time, they remain as visual options on the [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--ANBJwzoE5h5fXlq~fBc6ZVgeAg-VSQSdXvEyqawESsk4IkMC) list, but in “disabled state”. - -![Select states combined with Label, Icons and Dropdown components.](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554819645297_Select-types.png) - -## Content - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Text-placeholder-IqZya9lRXdMvFm0PkT1Vu) text that indicates what is being asked of users. - -**Recommendations:** - -- Avoid use Select field when there are only 2 or 3 options that could be displayed in a [Checkbox component](https://paper.dropbox.com/doc/SUI-Checkbox-Radio-button-tmVSbtoe8nZTaZk9mkdsE). (which require only a single click or tap). -- Resist the temptation to include many items whenever possible. If you have many items, consider alternative ways of presenting them or use facilities like [Autosuggest field](https://paper.dropbox.com/doc/SUI-Autosuggest-field-new-WIP--AMpYLvg3jxrwfy7lnSqo8rSsAg-zmn8DNgi7TQRmlqWG4kFD). -- [Dropdown](https://paper.dropbox.com/doc/SUI-Dropdown-list--ANBJwzoE5h5fXlq~fBc6ZVgeAg-VSQSdXvEyqawESsk4IkMC) recommendation: Gray out any unavailable options instead of removing them: any items that cannot be selected should remain in view. If disabled items are removed, the interface loses spatial consistency and becomes harder to learn. -# Visual - -Here it is showed only the Select measures. To see the 2 sizes of the field, please check [Input field](https://paper.dropbox.com/doc/SUI-Input-field-WIP--ANBFezB5g93jmp~uku3ikwesAg-03mHJFkOCjviSZevsaTwm). Those are the same. -To see the margins between Select field and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -The following measurements are visible here: - -- The inner margin of the select field should be 8 px minimum. -- The inner size and margins for the right-side icons: arrow up/down. -- The chevron up/down icon has a 8 px padding left. - -![Select states combined with Label, Icons and Dropdown components.](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554820866739_Select-visual.png) - -## Responsive - -The composition of different inputs can be displayed in a grid position when it is viewed on a desktop, but it must be displayed in a vertical position when it moves to small screens. - -Breakpoints will determine when to change how to display it. Each vertical has its own breakpoints - -To keep the coherence with the other fields used in forms like [Autosuggest field](https://paper.dropbox.com/doc/SUI-Autosuggest-field-new-WIP--AMpYLvg3jxrwfy7lnSqo8rSsAg-zmn8DNgi7TQRmlqWG4kFD), we recommend not use the native browser selector on mobile devices. - -When Tags will be needed, using **Large Tag** is mandatory for mobile devices in order to have a better accessibility (See [Tags](https://paper.dropbox.com/doc/SUI-Tags--Ab3DNag_5dltDg1~9YF7J7UDAg-bOSL4L5TFYZqPaK0wnCHb) for more information) - -![](https://paper-attachments.dropbox.com/s_87D765E0F56282B787F751ADD711841F06D0972A27E693320F65D35C1824146B_1554819714630_textarea-responsive.png) - -### Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -3. Focus should be visible -8. Content should be written in common language -10. Clickable area should be sufficient: A minimum 40 x 40 pixels area is recommended to ensure a comfortable interaction no matter the device. -Users in motion or those with motor disabilities will benefit from an easier way of reaching an interactive element. -13. Errors should be prevented -16. Text should always be displayed as text - -## Links - -- Zeplin: https://zpl.io/V1MOPw5 - -## Specific notes per vertical - -If relevant, include more details for each of the themes - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs -- Milanuncios -- Motor - -## Changelog - -### Version 2.0 - -- New Padding left for chevron icon. -- 40 px clickable area of chevron icon - -### Version 1.0 - -- 06/11/2017 Creation of the atom -- 04/09/2018 Iteration. Now is going more simple to work more freely with other components. (decompose) diff --git a/components/molecule/tabs/UXDEF.md b/components/molecule/tabs/UXDEF.md deleted file mode 100644 index 3891b3ecd3..0000000000 --- a/components/molecule/tabs/UXDEF.md +++ /dev/null @@ -1,113 +0,0 @@ -# SUI - Tabs -*Tabs are used to quickly navigate between views or contents within the same context.* - -| Status | Work in progress | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @David G, @Chris J, FE @Pablo G| - -## Structure - -The component Tab consists of a group of clickable areas that are arranged in a row (horizontal tabs) or column (vertical tabs). - -Tab labels can be text and text + icon, but never an icon without text. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512469689489_1-Tabs-+Structure.png) - -## Behaviour -- There are four statuses for the tabs: resting, hover, active/highlighted and disabled. -- All the horizontal tabs of the tab group share the same height. -- All the vertical tabs of the tab group share the same width and height. -- Truncate the text to avoid a second line. -- Highlight the tab corresponding to the visible content. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512469700463_2-Tabs-+Behavior.png) - -## Types - -### Variants - -For the different types of tabs, we contemplate two variants that only change visually the Active tab of the group: - -- **Highlighted:** Apply a underline to the Active tab. -- **Classic:** Apply a border to the Active tab. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512472837703_3.0-Tabs-+Types+-+Variants.png) - - -### 5 types of tab groups: - -- **Text:** it takes its width from the tabs included. It aligns to the left. -- **Text + Icon:** it also takes its width from the tabs included. It aligns to the left and the icon is entered to the tab width. -- **Text + Icon Full Width:** each contained tab stretches itself in proportion, fitting into the container. -- **Text + Icon Vertical:** it takes its height from the tabs included and have a fixed width. It aligns to the top of the container. -- **Text + number (counter):** The text inherits the maximum width of the tab and can never go to two lines. If necessary, ellipsis would be used to cut the text. Text and number align to the center of the container. - -![](https://paper-attachments.dropbox.com/s_55512ECECE08F3FA75184681867B7DD460E93456F81ABF30B0CBA386CF3409DC_1555588949594_3.2-Tabs-+Types.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512470394318_3.1-Tabs-+Types.png) - -## Contents - -Tab labels should be clear enough to allow the user to identify its content. -Text labels must use short titles. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512989192185_4-Tabs-+Content.png) - -## Visual - -In responsive the max-width of the tabs are 160px (approx. 15 characters). -In desktop we don't limit the width but we recommend the same width (160px. - approx. 15 characters). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512470946643_6-Tabs-+Visual.png) - -## Responsive - -A responsive Tab group may have the same width as on the desktop version, adapt its width to that of the container in which it is placed, or be placed as a sticky full-width tab group at the bottom or top of the screen. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512471001447_5.1-Tabs-responsive.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512471006807_5.2-Tabs-responsive.png) - -Another possibility is when the Tab width exceeds the screen width, it keep the original tab group width, adding a horizontal scroll. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1512471013828_5.3-Tabs-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -![](https://d2mxuefqeaa7sj.cloudfront.net/s_FA49C59704D22EF7244507B568CF179BC47B1B7FAC69FECD4724B479A2DDFFC6_1518181622684_7-Tabs-+focus.png) - -7. Interactive elements and images should be correctly labelled -9. Interactive elements should be differentiated from content -10. Clickable area should be sufficient -15. Content should have enough contrast to its background - -## Links - -- Zeplin: https://zpl.io/aggE7rN - -## Specific notes per vertical - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/an1OxGJ -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet diff --git a/components/molecule/textareaField/UXDEF.md b/components/molecule/textareaField/UXDEF.md deleted file mode 100644 index c8baea22ad..0000000000 --- a/components/molecule/textareaField/UXDEF.md +++ /dev/null @@ -1,99 +0,0 @@ -# SUI - Text Area field -T*ext Area is the text field that users fill in with free alphanumeric text. Usually it is used to write medium to long texts, such as answers, long explanations or letters.* - -*It should also be noted that Text Area it is a molecule because always is combined with other atoms like Label, Placeholder or HelpText.* - -| Status | Complete | -| :---- | :---- | -| Current version | 2.0 | -| Category | Molecule | -| Owners | UX @David G , @Daniel P , FE @Julian G| - -## Structure - -- This component almost always it works with [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT) & [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) atoms and usually it is combined with other atoms like [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation--ALVgLbb5nsUmflT9ZK8XqyiyAg-RZpyYPWRNVPzdC9fVrCtc) or [Buttons](https://paper.dropbox.com/doc/SUI-Buttons-AvdtvjMAqbsFkTYSz3egT). -- Text Area, by default, have a length that is auto-adjustable to the content written by the user (according to the page grid). -- As an optional feature it can have an “auto-expandable” function at the right bottom corner, to resize it manually. It is recommendable to use the browser’s native one. -- If the text written by the user is longer than the visible area (the box of the text area), then the scroll bar appears. - -![Text Area field combined with Label, Placeholder and HelpText atoms.](https://d2mxuefqeaa7sj.cloudfront.net/s_F724CB4956B145AB86D741302E646D775625E0E414E4A1489D81F46EA20C169A_1508925361497_textarea-structure.png) - -## Behavior - -### States -- TextArea have the 3 basic states: default, focused and disabled. - - Should be noted that [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AK5EFuDlc~Bh5FlpHa9XLyQkAg-IqZya9lRXdMvFm0PkT1Vu) atom disappear when the Input is on focus status. This behavior helps the user understand that the field is ready to write on it. -- For the first iteration, the focus will be the native browser focus. -![Text area states combined with Label and Placeholder atoms.](https://d2mxuefqeaa7sj.cloudfront.net/s_F724CB4956B145AB86D741302E646D775625E0E414E4A1489D81F46EA20C169A_1508924728145_textarea-behaviors.png) - -### Scroll & resize -- There are 2 possibilities of default size. We will measure it by the number of text lines. - Options to choose: - - Short: 5 text lines high - - Long: 7 text lines high -- Once the user writes more text lines than the lines shown by default, the scroll function will start to work, including the right side scroll bar. -- On the other hand, as seen under Structure, an optional (and recommended) “auto-expandable” function can be added to let the user modify the text area size manually. -- The “auto-expand” can modify the height and length, but it is recommended only to modify the height (for the grid adjustment and to make it easier for the user). - -![Here we can see the moment where the “auto-expand” and the scroll function are working.](https://d2mxuefqeaa7sj.cloudfront.net/s_F724CB4956B145AB86D741302E646D775625E0E414E4A1489D81F46EA20C169A_1508925423369_textarea-scroll.png) - -## Content - -We recommend to always use a [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--ALcBKGls8YGd6z2D3u_cnE8MAg-IqZya9lRXdMvFm0PkT1Vu) atom that indicates what users are being asked. -Remember, Text Area field can be combined with [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-Validation-RZpyYPWRNVPzdC9fVrCtc) - -## Visual - -Here it is showed only the Input measures. -To see the margins between Input field and other atoms like [Label](https://paper.dropbox.com/doc/SUI-Label--AMZqSJ24S1u4zxxMfUb4GEpHAg-px3mcUaTHVqlGngk2JNPT), [Placeholder](https://paper.dropbox.com/doc/SUI-Form-placeholder--AMZT19S4CalH3esz_tCA1zpeAg-IqZya9lRXdMvFm0PkT1Vu) or [HelpText](https://paper.dropbox.com/doc/SUI-HelpText-RZpyYPWRNVPzdC9fVrCtc), please check those components. - -Remember, the Scrollbar and Resize grabber will be the browser’s default one. - -![Text area with Label, Placeholder and HelpText atoms.](https://d2mxuefqeaa7sj.cloudfront.net/s_F724CB4956B145AB86D741302E646D775625E0E414E4A1489D81F46EA20C169A_1518766108295_textarea-visual.png) - -## Responsive - -- The composition of different inputs can be displayed in a grid position when viewed on a desktop, but it must be displayed in a vertical position when it moves to small screens. -- The screen size will determine when to change to vertical position display. - -Check the [Label](https://paper.dropbox.com/doc/SUI-Label-px3mcUaTHVqlGngk2JNPT) definition to see how it behaves in responsive. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_F724CB4956B145AB86D741302E646D775625E0E414E4A1489D81F46EA20C169A_1508926857863_textarea-responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -3. Focus should be visible -6. Information should not be supported only by one sense -8. Content should be written in common language -10. Clickable area should be sufficient -12. Controls should be correctly labelled -13. Errors should be prevented -15. Content should be able to increase in size -16. Text should always be displayed as text - -## Links - -- Zeplin: http://zpl.io/a8Em4MX - -## Specific notes per vertical - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/29l4Lke -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- 22/11/2017 Creation of the atom -- 23/08/2018 Iteration. Now is going more simple to work more freely with other components. (decompose) diff --git a/components/molecule/thumbnail/UXDEF.md b/components/molecule/thumbnail/UXDEF.md deleted file mode 100644 index b90fb5750a..0000000000 --- a/components/molecule/thumbnail/UXDEF.md +++ /dev/null @@ -1,212 +0,0 @@ -# SUI - Thumbnails -*Thumbnails are images that appear on cards, highlights or detail pages. They can be shown in different sizes and appearances. There are basically two variants: logos for company logos and avatars for person images.* - -| Status | Complete | -| :---- | :---- | -| Current version | 1.0 | -| Category | Molecule | -| Owners | UX @María P, @Daniel P, FE @Adrià V| - -## Structure - -A thumbnail is composed by: - -- An image (mandatory) -- A text that appears over a background below the image (optional). - -The text is optional but it only applies when the image has a link, because it serves to clarify its destination. The link is applied to the whole area: both to the image and the text with its background. The text is not shown when the Small and Xsmall sizes are set. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1505387040547_1-Structure.png) - -### Integrated in other components - -This component can be integrated into cards and other components. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1504248063168_2-Integrated.png) - -## Behavior - -### Click / Tap - -The image can contain a link. - -### Upload & Publishing - -The image on the marketplace can have a different proportion than the original. If the original is landscape or portrait and the published one has the same height and width the treatment will be the following: - -- Scale 100% on the shortest side: -- if it’s landscape, scale 100% vertically. -- if it’s portrait, scale 100% horizontally. -- Centered both in vertical and horizontal. -- The largest side will be cropped: -- if it’s landscape, left and right sides will be cropped. -- if it’s portrait, top and bottom will be cropped. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1503476698338_4-upload.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1526294046466_1-behaviour.png) - -### Empty - -When a thumbnail has not been filled it should show a placeholder with an icon indicating the information that should appear in its place. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1505389870240_7-empty.png) - -### Focus - -When the component is focused, the focus should be clearly visible. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1504248091960_5-Focus.png) - -### Loading - -There are two different options that could be applied while the images are being loaded. Progressive loading is recommended over Skeleton. - -**Progressive loading** -While the image is being loaded in order to ensure the legibility of the content inside of it we recommend to show a lower version of it, as it is done in Medium: -https://jmperezperez.com/medium-image-progressive-loading-placeholder/ - -**Skeleton** -If progressive loading is not possible, then a skeleton should be shown while the image is being loaded. The occupied space should be exactly the same to offer a preview of the content and avoid it to bump once it is loaded. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1504248116958_10-Skeleton.png) - -### Error - -When the images cannot be loaded we will show the alternative text of the image and an icon depicting a unavailable image. Depending on the size of the image we will display both or just one of them: - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1508848248133_11-Error.png) - -## Types - -Thumbnails can appear in different formats. - -### Shape - -It can be squared or circled. It is recommended to use squared shape for logos and circled shapes for avatars. - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1505389908895_8-shape.png) - -### Proportions - -It can have same height and width (1:1 aspect ratio) or it can be landscape (16:9 or 4:3 aspect ratio). - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1504248213171_9-proportions.png) - -### Attributes - -Thumbnails can have different visual treatments: - -- Padding: 3px. -- Border: 1px, color: gray_l3. -- Shadow: set to 0 by default. -## Sizes - -Thumbnails are available in 4 different sizes. This sizes will be adapted depending on the screen resolution (more on Responsive). - -- Xsmall -- Small -- Medium -- Large -## Text background - -If a text is included a background color should appear as well. Enough contrast should be provided to ensure accessibility (more on Accessibility). - -## Contents - -It is recommended that the optional text is no longer than 1 line of text. - -You can't use a thumbnail as a image panel. - - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A42B030072B307E69B102F02C10675853D70D308F4947D0E26EC258A1BBB8B5D_1520597661782_11.1-do-dont.png) - -![](https://d2mxuefqeaa7sj.cloudfront.net/s_A42B030072B307E69B102F02C10675853D70D308F4947D0E26EC258A1BBB8B5D_1520597676387_11.2-do-dont.png) - - - -## Responsive - -The four different sizes are adapted depending on the screen resolution. - -### 1:1 ratio -| | < 768 pixels | | ≥ 768 pixels | | -| ------ | ------------ | ------ | ------------ | ------ | -| | Width | Height | Width | Height | -| Xsmall | 32 | 32 | 40 | 40 | -| Small | 40 | 40 | 48 | 48 | -| Medium | 72 | 72 | 72 | 72 | -| Large | 96 | 96 | 144 | 144 | - -### 4:3 ratio -| | < 768 pixels | | ≥ 768 pixels | | -| ------ | ------------ | ------ | ------------ | ------ | -| | Width | Height | Width | Height | -| Xsmall | 32 | 24 | 40 | 30 | -| Small | 40 | 30 | 48 | 36 | -| Medium | 72 | 54 | 72 | 54 | -| Large | 96 | 72 | 144 | 108 | - -### 16:9 ratio -| | < 768 pixels | | ≥ 768 pixels | | -| ------ | ------------ | ------ | ------------ | ------ | -| | Width | Height | Width | Height | -| Xsmall | 32 | 18 | 40 | 23* | -| Small | 40 | 23* | 48 | 27 | -| Medium | 72 | 41* | 72 | 41* | -| Large | 96 | 54 | 144 | 81 | - - -In these cases height is rounded up. -![](https://d2mxuefqeaa7sj.cloudfront.net/s_688C4F4A8918EE8E02E1F171D09BE3FD300CB042124FE2E9A3000C6EFA62A2D1_1504248163786_6-Responsive.png) - -## Accessibility - -This component should support the recommendations that appear on the [Accessibility & Inclusion Guidelines](https://github.com/SUI-Components/UX-Definitions/blob/master/Accessibility%20and%20Inclusion%20Guidelines.md). - -For this component it is recommended to pay special attention to the following recommendations: - -7. Interactive elements and images should be correctly labelled - - The image should detail its content. - -14. Content should be able to increase in size - - When the text is increased the optional text should not break the design of the component. - -15. Content should have enough contrast to its background - - Ensure enough contrast between the text and the image using a background with a proper contrast ratio. - - Check WCAG 2.0 AA contrast ratios here: https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html - - Use this tool to check contrast ratios for given colors: http://dasplankton.de/ContrastA/ - -And, if the image contains a link it should follow these recommendations: -1. Every interactive element should be focusable -2. Focus order should match visual order -3. Focus should be visible -7. Interactive elements and images should be correctly labelled - -## Links - -- Componente Rubik: http://www.design.infojobs.net/rubik/html/content-media.html -- Demo del componente SUI: https://sui-components.surge.sh/workbench/thumbnail/basic/demo -- Benchmark en IJ: https://confluence.schibsted.io/pages/viewpage.action?pageId=55750576 -- Zeplin: https://zpl.io/adRJyzl - -## Specific notes per vertical - -- Vibbo -- CarFactory -- ePreselec -- Fotocasa -- Habitaclia -- Inmofactory -- Infojobs: https://zpl.io/2vy1xMv -- Milanuncios -- Motor - -## Changelog - -### Version 1.0 - -- Nothing here yet From 3346f16e314eb2e915545e30a804ea0435f569f7 Mon Sep 17 00:00:00 2001 From: Luis Garrido Date: Mon, 17 Oct 2022 10:34:24 +0200 Subject: [PATCH 173/243] feat(components/molecule/avatar): refactor to avoid conditional --- .../molecule/avatar/src/AvatarFallbackName/index.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/components/molecule/avatar/src/AvatarFallbackName/index.js b/components/molecule/avatar/src/AvatarFallbackName/index.js index 1e82bb9ff1..123c4fcedc 100644 --- a/components/molecule/avatar/src/AvatarFallbackName/index.js +++ b/components/molecule/avatar/src/AvatarFallbackName/index.js @@ -8,7 +8,7 @@ const MoleculeAvatarFallbackName = ({ name: nameProp, size, className: classNameProp, - isHexBackground = true, + fallbackColor: backgroundColorProp, ...others }) => { const className = cx( @@ -22,13 +22,14 @@ const MoleculeAvatarFallbackName = ({ ? `${firstName.charAt(0)}${lastName.charAt(0)}` : firstName.charAt(0) - const backgroundColor = useConvertStringToHex(nameProp) + const stringToHexBackgroundColor = useConvertStringToHex(nameProp) + const backgroundColor = backgroundColorProp || stringToHexBackgroundColor return (
{name} @@ -39,7 +40,7 @@ const MoleculeAvatarFallbackName = ({ MoleculeAvatarFallbackName.displayName = 'MoleculeAvatarFallbackName' MoleculeAvatarFallbackName.propTypes = { className: PropTypes.string, - isHexBackground: PropTypes.bool, + fallbackColor: PropTypes.string, name: PropTypes.string, src: PropTypes.string, size: PropTypes.string From 20583bac1413ed979813537bf48b22a59a919002 Mon Sep 17 00:00:00 2001 From: Luis Garrido Date: Mon, 17 Oct 2022 10:36:03 +0200 Subject: [PATCH 174/243] feat(components/molecule/avatar): refactor props --- components/molecule/avatar/src/AvatarFallbackName/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/avatar/src/AvatarFallbackName/index.js b/components/molecule/avatar/src/AvatarFallbackName/index.js index 123c4fcedc..3e565f0e82 100644 --- a/components/molecule/avatar/src/AvatarFallbackName/index.js +++ b/components/molecule/avatar/src/AvatarFallbackName/index.js @@ -29,7 +29,7 @@ const MoleculeAvatarFallbackName = ({
{name} From 6829b84b4d6aa766d049eb86b0fab67d2213aa2a Mon Sep 17 00:00:00 2001 From: Luis Garrido Date: Mon, 17 Oct 2022 10:40:32 +0200 Subject: [PATCH 175/243] feat(components/molecule/avatar): refactor prop --- components/molecule/avatar/src/AvatarFallbackName/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/avatar/src/AvatarFallbackName/index.js b/components/molecule/avatar/src/AvatarFallbackName/index.js index 3e565f0e82..9e2ccc5f6c 100644 --- a/components/molecule/avatar/src/AvatarFallbackName/index.js +++ b/components/molecule/avatar/src/AvatarFallbackName/index.js @@ -29,7 +29,7 @@ const MoleculeAvatarFallbackName = ({
{name} From 14d9f18383e53135d755d613215785551da8a435 Mon Sep 17 00:00:00 2001 From: Luis Garrido Date: Mon, 17 Oct 2022 15:04:11 +0200 Subject: [PATCH 176/243] feat(components/molecule/avatar): improve props and modify hook for getting background color --- .../molecule/avatar/src/AvatarFallbackName/index.js | 12 +++++++----- components/molecule/avatar/src/index.js | 8 +++++--- ...seConvertStringToHex.js => useBackgroundColor.js} | 9 +++++---- 3 files changed, 17 insertions(+), 12 deletions(-) rename components/molecule/avatar/src/{useConvertStringToHex.js => useBackgroundColor.js} (66%) diff --git a/components/molecule/avatar/src/AvatarFallbackName/index.js b/components/molecule/avatar/src/AvatarFallbackName/index.js index 9e2ccc5f6c..4b52d1d15d 100644 --- a/components/molecule/avatar/src/AvatarFallbackName/index.js +++ b/components/molecule/avatar/src/AvatarFallbackName/index.js @@ -1,14 +1,14 @@ import cx from 'classnames' import PropTypes from 'prop-types' -import useConvertStringToHex from '../useConvertStringToHex.js' +import useBackgroundColor from '../useBackgroundColor.js' import {BASE_CLASS_NAME} from './settings.js' const MoleculeAvatarFallbackName = ({ name: nameProp, size, className: classNameProp, - fallbackColor: backgroundColorProp, + backgroundColor: backgroundColorProp, ...others }) => { const className = cx( @@ -22,8 +22,10 @@ const MoleculeAvatarFallbackName = ({ ? `${firstName.charAt(0)}${lastName.charAt(0)}` : firstName.charAt(0) - const stringToHexBackgroundColor = useConvertStringToHex(nameProp) - const backgroundColor = backgroundColorProp || stringToHexBackgroundColor + const backgroundColor = useBackgroundColor({ + name: nameProp, + backgroundColor: backgroundColorProp + }) return (
) @@ -75,14 +76,14 @@ const MoleculeAvatar = forwardRef( ) }, [ children, + fallbackColor, fallbackIcon, isLoading, name, size, skeleton, src, - imageProps, - others + imageProps ]) return ( @@ -99,6 +100,7 @@ MoleculeAvatar.propTypes = { name: PropTypes.string, src: PropTypes.string, style: PropTypes.object, + fallbackColor: PropTypes.string, fallbackIcon: PropTypes.element, skeleton: PropTypes.element, isLoading: PropTypes.bool, diff --git a/components/molecule/avatar/src/useConvertStringToHex.js b/components/molecule/avatar/src/useBackgroundColor.js similarity index 66% rename from components/molecule/avatar/src/useConvertStringToHex.js rename to components/molecule/avatar/src/useBackgroundColor.js index 56ac455983..d9e8063862 100644 --- a/components/molecule/avatar/src/useConvertStringToHex.js +++ b/components/molecule/avatar/src/useBackgroundColor.js @@ -22,10 +22,11 @@ const convertStringToHex = str => { return color } -const useConvertStringToHex = str => { +const useBackgroundColor = ({name, backgroundColor}) => { return useMemo(() => { - return str ? convertStringToHex(str) : undefined - }, [str]) + if (backgroundColor) return backgroundColor + return name ? convertStringToHex(name) : undefined + }, [name, backgroundColor]) } -export default useConvertStringToHex +export default useBackgroundColor From 1fab1841c11727eae8e5b150f34c85e791695d11 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 17 Oct 2022 15:23:11 +0200 Subject: [PATCH 177/243] feat(components/atom/label): add htmlFor attribute --- components/atom/label/src/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/components/atom/label/src/index.js b/components/atom/label/src/index.js index afb6056300..61bba5ce04 100644 --- a/components/atom/label/src/index.js +++ b/components/atom/label/src/index.js @@ -8,11 +8,12 @@ const AtomLabel = ({ text, optionalText, type, + htmlFor, fontSize, onClick }) => (
)}
Date: Mon, 17 Oct 2022 15:25:21 +0200 Subject: [PATCH 179/243] docs(components/atom/popover/demo): lint --- .../popover/demo/{ => articles}/ArticleArrow.js | 6 ++---- .../popover/demo/{ => articles}/ArticleBehavior.js | 9 +++++---- .../demo/{ => articles}/ArticleCloseIcon.js | 6 ++---- .../popover/demo/{ => articles}/ArticleDefault.js | 4 ++-- .../popover/demo/{ => articles}/ArticlePosition.js | 3 ++- .../atom/popover/demo/{ => articles}/ArticleRef.js | 3 ++- .../popover/demo/{ => articles}/ArticleType.js | 11 ++++++----- components/atom/popover/demo/index.js | 14 +++++++------- 8 files changed, 28 insertions(+), 28 deletions(-) rename components/atom/popover/demo/{ => articles}/ArticleArrow.js (91%) rename components/atom/popover/demo/{ => articles}/ArticleBehavior.js (99%) rename components/atom/popover/demo/{ => articles}/ArticleCloseIcon.js (93%) rename components/atom/popover/demo/{ => articles}/ArticleDefault.js (98%) rename components/atom/popover/demo/{ => articles}/ArticlePosition.js (99%) rename components/atom/popover/demo/{ => articles}/ArticleRef.js (96%) rename components/atom/popover/demo/{ => articles}/ArticleType.js (93%) diff --git a/components/atom/popover/demo/ArticleArrow.js b/components/atom/popover/demo/articles/ArticleArrow.js similarity index 91% rename from components/atom/popover/demo/ArticleArrow.js rename to components/atom/popover/demo/articles/ArticleArrow.js index 3b962d2c13..7a4c05675c 100644 --- a/components/atom/popover/demo/ArticleArrow.js +++ b/components/atom/popover/demo/articles/ArticleArrow.js @@ -1,8 +1,5 @@ import {useState} from 'react' -import AtomPopover, { - atomPopoverTriggers -} from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' import { @@ -15,7 +12,8 @@ import { RadioButtonGroup } from '@s-ui/documentation-library' -import ReMountDebounced from './ReMountDebounced.js' +import AtomPopover, {atomPopoverTriggers} from '../../src/index.js' +import ReMountDebounced from '../ReMountDebounced.js' const ArticleArrow = ({className, content: Content}) => { const [isHidden, setIsHidden] = useState('false') diff --git a/components/atom/popover/demo/ArticleBehavior.js b/components/atom/popover/demo/articles/ArticleBehavior.js similarity index 99% rename from components/atom/popover/demo/ArticleBehavior.js rename to components/atom/popover/demo/articles/ArticleBehavior.js index ab16e02728..e02f5161d7 100644 --- a/components/atom/popover/demo/ArticleBehavior.js +++ b/components/atom/popover/demo/articles/ArticleBehavior.js @@ -1,9 +1,5 @@ import {useState} from 'react' -import AtomPopover, { - atomPopoverPositions, - atomPopoverTriggers -} from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' import { @@ -23,6 +19,11 @@ import { UnorderedList } from '@s-ui/documentation-library' +import AtomPopover, { + atomPopoverPositions, + atomPopoverTriggers +} from '../../src/index.js' + const StatusDisplayer = ({value, values = []}) => ( diff --git a/components/atom/popover/demo/ArticleCloseIcon.js b/components/atom/popover/demo/articles/ArticleCloseIcon.js similarity index 93% rename from components/atom/popover/demo/ArticleCloseIcon.js rename to components/atom/popover/demo/articles/ArticleCloseIcon.js index 9893e9fa3a..3b1ace17a0 100644 --- a/components/atom/popover/demo/ArticleCloseIcon.js +++ b/components/atom/popover/demo/articles/ArticleCloseIcon.js @@ -1,8 +1,5 @@ import {useState} from 'react' -import AtomPopover, { - atomPopoverTriggers -} from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' import { @@ -16,7 +13,8 @@ import { RadioButtonGroup } from '@s-ui/documentation-library' -import IconClose from './Icons/IconClose.js' +import AtomPopover, {atomPopoverTriggers} from '../../src/index.js' +import IconClose from '../Icons/IconClose.js' const ArticleCloseIcon = ({className, content: Content}) => { const [isVisible, setIsVisible] = useState('true') diff --git a/components/atom/popover/demo/ArticleDefault.js b/components/atom/popover/demo/articles/ArticleDefault.js similarity index 98% rename from components/atom/popover/demo/ArticleDefault.js rename to components/atom/popover/demo/articles/ArticleDefault.js index 99e0fb584a..eb431fd81b 100644 --- a/components/atom/popover/demo/ArticleDefault.js +++ b/components/atom/popover/demo/articles/ArticleDefault.js @@ -1,6 +1,5 @@ import {useState} from 'react' -import AtomPopover from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' import { @@ -17,7 +16,8 @@ import { Separator } from '@s-ui/documentation-library' -import ReMountDebounced from './ReMountDebounced.js' +import AtomPopover from '../../src/index.js' +import ReMountDebounced from '../ReMountDebounced.js' const PopIt = ({ isVisible, diff --git a/components/atom/popover/demo/ArticlePosition.js b/components/atom/popover/demo/articles/ArticlePosition.js similarity index 99% rename from components/atom/popover/demo/ArticlePosition.js rename to components/atom/popover/demo/articles/ArticlePosition.js index 2e222219f2..b1ad95f894 100644 --- a/components/atom/popover/demo/ArticlePosition.js +++ b/components/atom/popover/demo/articles/ArticlePosition.js @@ -1,6 +1,5 @@ import {useState} from 'react' -import AtomPopover from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' import { @@ -17,6 +16,8 @@ import { UnorderedList } from '@s-ui/documentation-library' +import AtomPopover from '../../src/index.js' + const ArticlePosition = ({className, content: Content}) => { const [position, setPosition] = useState(undefined) const handleClick = (event, value) => { diff --git a/components/atom/popover/demo/ArticleRef.js b/components/atom/popover/demo/articles/ArticleRef.js similarity index 96% rename from components/atom/popover/demo/ArticleRef.js rename to components/atom/popover/demo/articles/ArticleRef.js index 0df6b17cf8..29baf5b3d4 100644 --- a/components/atom/popover/demo/ArticleRef.js +++ b/components/atom/popover/demo/articles/ArticleRef.js @@ -1,6 +1,5 @@ import {useRef, useState} from 'react' -import AtomPopover from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' import { @@ -13,6 +12,8 @@ import { Paragraph } from '@s-ui/documentation-library' +import AtomPopover from '../../src/index.js' + const ArticleRef = ({className, content: Content}) => { const innerRef = useRef() const outerRef = useRef() diff --git a/components/atom/popover/demo/ArticleType.js b/components/atom/popover/demo/articles/ArticleType.js similarity index 93% rename from components/atom/popover/demo/ArticleType.js rename to components/atom/popover/demo/articles/ArticleType.js index 1883d94147..b5060a3c01 100644 --- a/components/atom/popover/demo/ArticleType.js +++ b/components/atom/popover/demo/articles/ArticleType.js @@ -1,16 +1,17 @@ -import AtomPopover from 'components/atom/popover/src/index.js' import PropTypes from 'prop-types' -import IconClose from './Icons/IconClose.js' import { Article, Button, - H2, - Paragraph, + Cell, Grid, - Cell + H2, + Paragraph } from '@s-ui/documentation-library' +import AtomPopover from '../../src/index.js' +import IconClose from '../Icons/IconClose.js' + const ArticleType = ({className, content: Content}) => { return (
diff --git a/components/atom/popover/demo/index.js b/components/atom/popover/demo/index.js index 3bc77d9112..ab56dee5c1 100644 --- a/components/atom/popover/demo/index.js +++ b/components/atom/popover/demo/index.js @@ -4,13 +4,13 @@ import {forwardRef} from 'react' import {Anchor, H1, Paragraph} from '@s-ui/documentation-library' -import ArticleArrow from './ArticleArrow.js' -import ArticleBehavior from './ArticleBehavior.js' -import ArticleCloseIcon from './ArticleCloseIcon.js' -import ArticleDefault from './ArticleDefault.js' -import ArticlePosition from './ArticlePosition.js' -import ArticleRef from './ArticleRef.js' -import ArticleType from './ArticleType.js' +import ArticleArrow from './articles/ArticleArrow.js' +import ArticleBehavior from './articles/ArticleBehavior.js' +import ArticleCloseIcon from './articles/ArticleCloseIcon.js' +import ArticleDefault from './articles/ArticleDefault.js' +import ArticlePosition from './articles/ArticlePosition.js' +import ArticleRef from './articles/ArticleRef.js' +import ArticleType from './articles/ArticleType.js' import './index.scss' From cdf7049ada56d6754bb36520335db5e5605b6564 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Mon, 17 Oct 2022 15:25:53 +0200 Subject: [PATCH 180/243] docs(components/molecule/checkboxField/demo): document native change handler --- .../checkboxField/demo/ArticleWithCustomCheckedIcon.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js b/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js index 5bda0d0021..7bc26f44e2 100644 --- a/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js +++ b/components/molecule/checkboxField/demo/ArticleWithCustomCheckedIcon.js @@ -15,9 +15,8 @@ export const ArticleWithCustomCheckedIcon = ({className}) => { label={
I'm a label as a react node clickable
} checkedIcon={() =>

} uncheckedIcon={() =>

} - // eslint-disable-next-line no-console onChange={(e, {name, value, checked}) => { - console.log({name, checked, value}) + console.log({name, checked, value}) // eslint-disable-line no-console }} />
From 6951d67a2744135ba6e2dcd2ba0529d19006791b Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 17 Oct 2022 13:36:36 +0000 Subject: [PATCH 181/243] chore(Root): Update coverage badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cdb3d07f5b..ff4353726b 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.11%25-orange) -![branches](https://shields.io/badge/branches-57.82%25-AA0000) +![statements](https://shields.io/badge/statements-72.1%25-orange) +![branches](https://shields.io/badge/branches-57.81%25-AA0000) ![functions](https://shields.io/badge/functions-59.56%25-AA0000) ![lines](https://shields.io/badge/lines-73.89%25-orange) From b9fa4e345fe5d6804ecb534510cacf2aecf1f10d Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 17 Oct 2022 13:38:02 +0000 Subject: [PATCH 182/243] release(components/molecule/avatar): v1.17.0 [skip ci] --- components/molecule/avatar/CHANGELOG.md | 13 +++++++++++++ components/molecule/avatar/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/components/molecule/avatar/CHANGELOG.md b/components/molecule/avatar/CHANGELOG.md index 731142dab3..ec64219c99 100644 --- a/components/molecule/avatar/CHANGELOG.md +++ b/components/molecule/avatar/CHANGELOG.md @@ -1,5 +1,18 @@ # CHANGELOG +# 1.17.0 (2022-10-17) + + +### Features + +* **components/molecule/avatar:** improve props and modify hook for getting background color ([14d9f18](https://github.com/SUI-Components/sui-components/commit/14d9f18383e53135d755d613215785551da8a435)) +* **components/molecule/avatar:** make optional hex background of fallback name ([980aee2](https://github.com/SUI-Components/sui-components/commit/980aee27885945e254d989bd6cf7195879a981d1)) +* **components/molecule/avatar:** refactor prop ([6829b84](https://github.com/SUI-Components/sui-components/commit/6829b84b4d6aa766d049eb86b0fab67d2213aa2a)) +* **components/molecule/avatar:** refactor props ([20583ba](https://github.com/SUI-Components/sui-components/commit/20583bac1413ed979813537bf48b22a59a919002)) +* **components/molecule/avatar:** refactor to avoid conditional ([3346f16](https://github.com/SUI-Components/sui-components/commit/3346f16e314eb2e915545e30a804ea0435f569f7)) + + + # 1.16.0 (2022-10-06) diff --git a/components/molecule/avatar/package.json b/components/molecule/avatar/package.json index 8348db7971..efc3ab126a 100644 --- a/components/molecule/avatar/package.json +++ b/components/molecule/avatar/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-avatar", - "version": "1.16.0", + "version": "1.17.0", "description": "", "main": "lib/index.js", "scripts": { From e2dc736763990ca71f74f2cd2122e4536641cf50 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 17 Oct 2022 13:47:37 +0000 Subject: [PATCH 183/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cdb3d07f5b..4072b2aee0 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.11%25-orange) -![branches](https://shields.io/badge/branches-57.82%25-AA0000) -![functions](https://shields.io/badge/functions-59.56%25-AA0000) +![statements](https://shields.io/badge/statements-72.1%25-orange) +![branches](https://shields.io/badge/branches-57.81%25-AA0000) +![functions](https://shields.io/badge/functions-59.65%25-AA0000) ![lines](https://shields.io/badge/lines-73.89%25-orange) ## ✨ Features From 3e25df13530d3dd223c6b5b54533678df29bb35a Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 17 Oct 2022 13:48:50 +0000 Subject: [PATCH 184/243] release(components/atom/label): v1.23.0 [skip ci] --- components/atom/label/CHANGELOG.md | 9 +++++++++ components/atom/label/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/label/CHANGELOG.md b/components/atom/label/CHANGELOG.md index 6b0068587a..065aecb952 100644 --- a/components/atom/label/CHANGELOG.md +++ b/components/atom/label/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.23.0 (2022-10-17) + + +### Features + +* **components/atom/label:** add htmlFor attribute ([1fab184](https://github.com/SUI-Components/sui-components/commit/1fab1841c11727eae8e5b150f34c85e791695d11)) + + + # 1.22.0 (2022-09-29) diff --git a/components/atom/label/package.json b/components/atom/label/package.json index 4307553392..d2ac778fe7 100644 --- a/components/atom/label/package.json +++ b/components/atom/label/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-label", - "version": "1.22.0", + "version": "1.23.0", "description": "", "main": "lib/index.js", "scripts": { From 34d8511ae19d717c83ed4543f0fc7e730d307d17 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 17 Oct 2022 13:48:57 +0000 Subject: [PATCH 185/243] release(components/molecule/field): v1.38.0 [skip ci] --- components/molecule/field/CHANGELOG.md | 9 +++++++++ components/molecule/field/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/field/CHANGELOG.md b/components/molecule/field/CHANGELOG.md index 940a3a788e..f0cb67242a 100644 --- a/components/molecule/field/CHANGELOG.md +++ b/components/molecule/field/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.38.0 (2022-10-17) + + +### Features + +* **components/molecule/field:** Wrap node label in a real label to make the checkbox react to the c ([c0abc42](https://github.com/SUI-Components/sui-components/commit/c0abc420c5cde1b08e77b63179ca288a2cf4be6d)) + + + # 1.37.0 (2022-10-06) diff --git a/components/molecule/field/package.json b/components/molecule/field/package.json index d8914ce888..202c8213c0 100644 --- a/components/molecule/field/package.json +++ b/components/molecule/field/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-field", - "version": "1.37.0", + "version": "1.38.0", "description": "", "main": "lib/index.js", "scripts": { From 3c6c74b601d798d8750ce845a2edfa4349b96c82 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 09:16:44 +0200 Subject: [PATCH 186/243] refactor(components/molecule/imageEditor): useEffect has a missing dependency --- components/molecule/imageEditor/src/index.js | 32 +++++++++----------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/components/molecule/imageEditor/src/index.js b/components/molecule/imageEditor/src/index.js index 2c24cd18ef..46a8dac3df 100644 --- a/components/molecule/imageEditor/src/index.js +++ b/components/molecule/imageEditor/src/index.js @@ -43,24 +43,22 @@ const MoleculeImageEditor = ({ ? zoomSetter : debounce(zoomSetter, debouncingTime) - const cropCompleteHandler = async (croppedArea, croppedAreaPixels) => { - const rotationDegrees = getRotationDegrees(rotation) - onCropping(true) - const [croppedImageUrl, croppedImageBlobObject] = await getCroppedImg( - image, - croppedAreaPixels, - rotationDegrees - ) - onChange(croppedImageUrl, croppedImageBlobObject) - onCropping(false) - } - - const onCropComplete = useCallback( - debouncingTime === undefined + const onCropComplete = useCallback(() => { + const cropCompleteHandler = async (croppedArea, croppedAreaPixels) => { + const rotationDegrees = getRotationDegrees(rotation) + onCropping(true) + const [croppedImageUrl, croppedImageBlobObject] = await getCroppedImg( + image, + croppedAreaPixels, + rotationDegrees + ) + onChange(croppedImageUrl, croppedImageBlobObject) + onCropping(false) + } + return debouncingTime === undefined ? cropCompleteHandler - : debounce(cropCompleteHandler, debouncingTime), - [rotation, onCropping, image, onChange] - ) + : debounce(cropCompleteHandler, debouncingTime) + }, [rotation, onCropping, image, onChange, debouncingTime]) return (
From a903d46848e6cc7515a9d20aeee5906299fac52c Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Tue, 18 Oct 2022 09:36:33 +0200 Subject: [PATCH 187/243] feat(components/molecule/selectPopover): update isOpen behavior --- components/molecule/selectPopover/src/index.js | 5 +++-- .../molecule/selectPopover/src/styles/index.scss | 8 +++++++- .../selectPopover/src/styles/settings.scss | 15 ++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 980d416377..86ca93c01c 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -280,7 +280,8 @@ function MoleculeSelectPopover({ const overlayClassNames = cx( `${BASE_CLASS}-overlay`, - `${BASE_CLASS}-overlay--${overlayType}` + `${BASE_CLASS}-overlay--${overlayType}`, + {'is-open': isOpen} ) return ( @@ -290,7 +291,7 @@ function MoleculeSelectPopover({ {renderContentWrapper()}
{hasOverlay && ( - +
)} diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index 9585a2b2d7..74d8fad013 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -106,15 +106,21 @@ $base-class: '.sui-MoleculeSelectPopover '; @each $name, $type in $molecule-select-popover-overlay-types { &--#{$name} { $bgc: map-get($type, bgc); - animation: op-overlay-animation 1s both; background-color: $bgc; content: ''; height: 100%; left: 0; + opacity: $op-select-popover-initial-overlay; pointer-events: none; position: absolute; top: 0; + transition: opacity 0.25s ease-in; width: 100%; + + &.is-open { + $op: map-get($type, op); + opacity: $op; + } } } } diff --git a/components/molecule/selectPopover/src/styles/settings.scss b/components/molecule/selectPopover/src/styles/settings.scss index f22f1d67ef..935e6ed5ed 100644 --- a/components/molecule/selectPopover/src/styles/settings.scss +++ b/components/molecule/selectPopover/src/styles/settings.scss @@ -29,18 +29,11 @@ $bgc-select-popover-light-overlay: $c-white !default; $molecule-select-popover-overlay-types: ( dark: ( - bgc: $bgc-select-popover-dark-overlay + bgc: $bgc-select-popover-dark-overlay, + op: $op-select-popover-finish-overlay ), light: ( - bgc: $bgc-select-popover-light-overlay + bgc: $bgc-select-popover-light-overlay, + op: $op-select-popover-finish-overlay ) ) !default; - -@keyframes op-overlay-animation { - 0% { - opacity: $op-select-popover-initial-overlay; - } - 100% { - opacity: $op-select-popover-finish-overlay; - } -} From bc65e738ff84d9ce8f94f32dbad00b1425a2f80e Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 09:46:50 +0200 Subject: [PATCH 188/243] refactor(components/molecule/imageEditor): useCallback mod --- components/molecule/imageEditor/src/index.js | 37 +++++++++++--------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/components/molecule/imageEditor/src/index.js b/components/molecule/imageEditor/src/index.js index 46a8dac3df..f0939bc9ad 100644 --- a/components/molecule/imageEditor/src/index.js +++ b/components/molecule/imageEditor/src/index.js @@ -43,22 +43,27 @@ const MoleculeImageEditor = ({ ? zoomSetter : debounce(zoomSetter, debouncingTime) - const onCropComplete = useCallback(() => { - const cropCompleteHandler = async (croppedArea, croppedAreaPixels) => { - const rotationDegrees = getRotationDegrees(rotation) - onCropping(true) - const [croppedImageUrl, croppedImageBlobObject] = await getCroppedImg( - image, - croppedAreaPixels, - rotationDegrees - ) - onChange(croppedImageUrl, croppedImageBlobObject) - onCropping(false) - } - return debouncingTime === undefined - ? cropCompleteHandler - : debounce(cropCompleteHandler, debouncingTime) - }, [rotation, onCropping, image, onChange, debouncingTime]) + const onCropComplete = useCallback( + async (croppedArea, croppedAreaPixels, ...args) => { + const cropCompleteHandler = async () => { + const rotationDegrees = getRotationDegrees(rotation) + onCropping(true) + const [croppedImageUrl, croppedImageBlobObject] = await getCroppedImg( + image, + croppedAreaPixels, + rotationDegrees + ) + onChange(croppedImageUrl, croppedImageBlobObject) + onCropping(false) + } + const callback = + debouncingTime === undefined + ? cropCompleteHandler + : debounce(cropCompleteHandler, debouncingTime) + await callback(croppedArea, croppedAreaPixels, ...args) + }, + [rotation, onCropping, image, onChange, debouncingTime] + ) return (
From 985c7ff7e7167bd08b9ca716c32b58a7a290d232 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 07:59:06 +0000 Subject: [PATCH 189/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4072b2aee0..b756285b4a 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.1%25-orange) -![branches](https://shields.io/badge/branches-57.81%25-AA0000) -![functions](https://shields.io/badge/functions-59.65%25-AA0000) -![lines](https://shields.io/badge/lines-73.89%25-orange) +![statements](https://shields.io/badge/statements-72.03%25-orange) +![branches](https://shields.io/badge/branches-57.77%25-AA0000) +![functions](https://shields.io/badge/functions-59.58%25-AA0000) +![lines](https://shields.io/badge/lines-73.82%25-orange) ## ✨ Features From ccc493b28ae981750ed69b6fea966e360e8f1db9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 08:00:08 +0000 Subject: [PATCH 190/243] release(components/molecule/imageEditor): v1.11.0 [skip ci] --- components/molecule/imageEditor/CHANGELOG.md | 4 ++++ components/molecule/imageEditor/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/imageEditor/CHANGELOG.md b/components/molecule/imageEditor/CHANGELOG.md index d5c2d27aef..162713d3fc 100644 --- a/components/molecule/imageEditor/CHANGELOG.md +++ b/components/molecule/imageEditor/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.11.0 (2022-10-18) + + + # 1.10.0 (2022-09-20) diff --git a/components/molecule/imageEditor/package.json b/components/molecule/imageEditor/package.json index 5430f3b573..4ef46f01ba 100644 --- a/components/molecule/imageEditor/package.json +++ b/components/molecule/imageEditor/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-image-editor", - "version": "1.10.0", + "version": "1.11.0", "description": "", "main": "lib/index.js", "scripts": { From 77c6b27d9d244ee363265de79fa59796f37e2a06 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 11:37:24 +0200 Subject: [PATCH 191/243] refactor(components/atom/popover): lint --- components/atom/popover/demo/Content.js | 14 +++++++ .../popover/demo/articles/ArticleArrow.js | 2 +- .../popover/demo/articles/ArticleCloseIcon.js | 2 +- components/atom/popover/demo/index.js | 18 +-------- components/atom/popover/demo/settings.js | 2 + .../atom/popover/src/PopoverExtendChildren.js | 40 ++++++------------- components/atom/popover/src/config.js | 7 ++++ 7 files changed, 40 insertions(+), 45 deletions(-) create mode 100644 components/atom/popover/demo/Content.js create mode 100644 components/atom/popover/demo/settings.js diff --git a/components/atom/popover/demo/Content.js b/components/atom/popover/demo/Content.js new file mode 100644 index 0000000000..e770664590 --- /dev/null +++ b/components/atom/popover/demo/Content.js @@ -0,0 +1,14 @@ +import {forwardRef} from 'react' + +const Content = forwardRef((props, forwardedRef) => { + return ( +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id mauris + ornare, imperdiet nunc a, interdum dolor. + +
+ ) +}) + +export default Content diff --git a/components/atom/popover/demo/articles/ArticleArrow.js b/components/atom/popover/demo/articles/ArticleArrow.js index 7a4c05675c..d05594c78c 100644 --- a/components/atom/popover/demo/articles/ArticleArrow.js +++ b/components/atom/popover/demo/articles/ArticleArrow.js @@ -37,7 +37,7 @@ const ArticleArrow = ({className, content: Content}) => { onClick={() => setIsHidden('false')} /> - + { onClick={() => setIsVisible('false')} /> - + } diff --git a/components/atom/popover/demo/index.js b/components/atom/popover/demo/index.js index ab56dee5c1..26c0c83047 100644 --- a/components/atom/popover/demo/index.js +++ b/components/atom/popover/demo/index.js @@ -1,7 +1,5 @@ /* eslint-disable react/prop-types, no-unused-vars, no-console */ -import {forwardRef} from 'react' - import {Anchor, H1, Paragraph} from '@s-ui/documentation-library' import ArticleArrow from './articles/ArticleArrow.js' @@ -11,23 +9,11 @@ import ArticleDefault from './articles/ArticleDefault.js' import ArticlePosition from './articles/ArticlePosition.js' import ArticleRef from './articles/ArticleRef.js' import ArticleType from './articles/ArticleType.js' +import Content from './Content.js' +import {CLASS_SECTION} from './settings.js' import './index.scss' -const BASE_CLASS_DEMO = `DemoAtomPopover` -const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` - -const Content = forwardRef((props, forwardedRef) => { - return ( -
- - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id mauris - ornare, imperdiet nunc a, interdum dolor. - -
- ) -}) - const Demo = () => { return (
diff --git a/components/atom/popover/demo/settings.js b/components/atom/popover/demo/settings.js new file mode 100644 index 0000000000..fb4a2d4a99 --- /dev/null +++ b/components/atom/popover/demo/settings.js @@ -0,0 +1,2 @@ +const BASE_CLASS_DEMO = `DemoAtomPopover` +export const CLASS_SECTION = `${BASE_CLASS_DEMO}-section` diff --git a/components/atom/popover/src/PopoverExtendChildren.js b/components/atom/popover/src/PopoverExtendChildren.js index b29afb7935..dca599bb91 100644 --- a/components/atom/popover/src/PopoverExtendChildren.js +++ b/components/atom/popover/src/PopoverExtendChildren.js @@ -1,37 +1,23 @@ -import {Children, cloneElement, forwardRef} from 'react' +import {cloneElement, forwardRef} from 'react' import PropTypes from 'prop-types' -const PopoverExtendChildren = forwardRef(({children}, targetRef) => { - const onClickHandler = handler => ev => { - typeof handler === 'function' && handler(ev) - } - const childrenOnly = - typeof children === 'string' - ? [{children}] - : Children.only(children) - const response = Children.map(childrenOnly, (child, key) => { - const {onClick} = child.props - const attrs = { - onClick: onClickHandler(onClick) - } - attrs.ref = node => { - ;[child.ref, targetRef].forEach(ref => { - if (typeof ref === 'function') { - ref(node) - } else if (ref !== null) { - ref.current = node - } - }) - } - attrs.key = key - return cloneElement(child, attrs) +import useMergeRefs from '@s-ui/react-hooks/lib/useMergeRefs' + +import {getChildrenAsReactNode} from './config.js' + +const PopoverExtendChildren = forwardRef((props, forwardedRef) => { + const childrenOnly = getChildrenAsReactNode(props.children) + const {ref} = childrenOnly + return cloneElement(childrenOnly, { + ref: useMergeRefs(forwardedRef, ref) }) - return response }) +PopoverExtendChildren.displayName = 'PopoverExtendChildren' + PopoverExtendChildren.propTypes = { - children: PropTypes.node.isRequired + children: PropTypes.element.isRequired } export default PopoverExtendChildren diff --git a/components/atom/popover/src/config.js b/components/atom/popover/src/config.js index ff75585874..0fd96bff05 100644 --- a/components/atom/popover/src/config.js +++ b/components/atom/popover/src/config.js @@ -1,3 +1,5 @@ +import {Children} from 'react' + import cx from 'classnames' import loadable from '@loadable/component' @@ -47,3 +49,8 @@ export const getClassName = ({defaultClass, type}) => { [`${defaultClass}--type-${type}`]: Boolean(type) }) } + +export const getChildrenAsReactNode = element => + typeof children === 'string' + ? [{element}] + : Children.only(element) From 023ca135760862b039507cbb6266352473257028 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 09:53:18 +0000 Subject: [PATCH 192/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b756285b4a..42a5ec3af2 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.03%25-orange) -![branches](https://shields.io/badge/branches-57.77%25-AA0000) -![functions](https://shields.io/badge/functions-59.58%25-AA0000) -![lines](https://shields.io/badge/lines-73.82%25-orange) +![statements](https://shields.io/badge/statements-72.01%25-orange) +![branches](https://shields.io/badge/branches-57.78%25-AA0000) +![functions](https://shields.io/badge/functions-59.51%25-AA0000) +![lines](https://shields.io/badge/lines-73.81%25-orange) ## ✨ Features From b8796cffff2a128447beaaed09efac6de41dd8eb Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 09:54:16 +0000 Subject: [PATCH 193/243] release(components/atom/popover): v3.14.0 [skip ci] --- components/atom/popover/CHANGELOG.md | 4 ++++ components/atom/popover/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/CHANGELOG.md b/components/atom/popover/CHANGELOG.md index e825a143e7..8f7ea7943f 100644 --- a/components/atom/popover/CHANGELOG.md +++ b/components/atom/popover/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 3.14.0 (2022-10-18) + + + # 3.13.0 (2022-10-07) diff --git a/components/atom/popover/package.json b/components/atom/popover/package.json index 38568d53ad..b3a85406db 100644 --- a/components/atom/popover/package.json +++ b/components/atom/popover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-popover", - "version": "3.13.0", + "version": "3.14.0", "description": "", "main": "lib/index.js", "scripts": { From 4354727a2456f8b349e191755bcd8b1c21a6b68a Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 12:03:09 +0200 Subject: [PATCH 194/243] fix(components/atom/popover): condition error --- components/atom/popover/src/config.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/atom/popover/src/config.js b/components/atom/popover/src/config.js index 0fd96bff05..5782e8cc73 100644 --- a/components/atom/popover/src/config.js +++ b/components/atom/popover/src/config.js @@ -51,6 +51,8 @@ export const getClassName = ({defaultClass, type}) => { } export const getChildrenAsReactNode = element => - typeof children === 'string' - ? [{element}] - : Children.only(element) + typeof element === 'string' ? ( + {element} + ) : ( + Children.only(element) + ) From 934d02a62d50496a0a50f976efc1668e6ed0c069 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 12:04:03 +0200 Subject: [PATCH 195/243] refactor(components/atom/tooltip): TooltipExtendedChildren file logic simplified --- .../atom/tooltip/src/TooltipExtendChildren.js | 51 +++++++------------ components/atom/tooltip/src/config.js | 9 ++++ 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/components/atom/tooltip/src/TooltipExtendChildren.js b/components/atom/tooltip/src/TooltipExtendChildren.js index f85eef38d4..89f0af865b 100644 --- a/components/atom/tooltip/src/TooltipExtendChildren.js +++ b/components/atom/tooltip/src/TooltipExtendChildren.js @@ -1,43 +1,26 @@ -import {Children, cloneElement, forwardRef} from 'react' +import {cloneElement, forwardRef} from 'react' import cx from 'classnames' import PropTypes from 'prop-types' -const TooltipExtendChildren = forwardRef( - ({className: classNameTarget, children}, targetRef) => { - const onClickHandler = - handler => - (...handlerAttrs) => { - typeof handler === 'function' && handler(...handlerAttrs) - } - const childrenOnly = - typeof children === 'string' - ? [{children}] - : Children.only(children) - const response = Children.map(childrenOnly, (child, key) => { - const {onClick, className} = child.props - const attrs = { - onClick: onClickHandler(onClick), - className: cx(classNameTarget, className) - } - attrs.ref = node => { - ;[child.ref, targetRef].forEach(ref => { - if (typeof ref === 'function') { - ref(node) - } else if (ref !== null) { - ref.current = node - } - }) - } - attrs.key = key - return cloneElement(child, attrs) - }) - return response - } -) +import useMergeRefs from '@s-ui/react-hooks/lib/useMergeRefs' + +import {getChildrenAsReactNode} from './config.js' + +const TooltipExtendChildren = forwardRef((props, forwardedRef) => { + const childrenOnly = getChildrenAsReactNode(props.children) + const { + props: {className}, + ref + } = childrenOnly + return cloneElement(childrenOnly, { + className: cx(className, props.className), + ref: useMergeRefs(ref, forwardedRef) + }) +}) TooltipExtendChildren.propTypes = { - children: PropTypes.node.isRequired, + children: PropTypes.element.isRequired, className: PropTypes.string } diff --git a/components/atom/tooltip/src/config.js b/components/atom/tooltip/src/config.js index 9a67620b6a..706466d5dc 100644 --- a/components/atom/tooltip/src/config.js +++ b/components/atom/tooltip/src/config.js @@ -1,3 +1,5 @@ +import {Children} from 'react' + /** * Base class for the component */ @@ -69,3 +71,10 @@ export const PLACEMENTS = { } export const DEFAULT_OFFSET = 'auto,4px' + +export const getChildrenAsReactNode = element => + typeof element === 'string' ? ( + {element} + ) : ( + Children.only(element) + ) From ec58ff5f7b36c1929d70bc327a6a32d395ce25dc Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 10:09:11 +0000 Subject: [PATCH 196/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 42a5ec3af2..f4f00280af 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.01%25-orange) -![branches](https://shields.io/badge/branches-57.78%25-AA0000) -![functions](https://shields.io/badge/functions-59.51%25-AA0000) -![lines](https://shields.io/badge/lines-73.81%25-orange) +![statements](https://shields.io/badge/statements-71.98%25-orange) +![branches](https://shields.io/badge/branches-57.8%25-AA0000) +![functions](https://shields.io/badge/functions-59.43%25-AA0000) +![lines](https://shields.io/badge/lines-73.79%25-orange) ## ✨ Features From fbf9b833c6ccbf2452e40e98832db5faf5ef122f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 10:10:17 +0000 Subject: [PATCH 197/243] release(components/atom/popover): v3.15.0 [skip ci] --- components/atom/popover/CHANGELOG.md | 9 +++++++++ components/atom/popover/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/CHANGELOG.md b/components/atom/popover/CHANGELOG.md index 8f7ea7943f..e4a6bbd01b 100644 --- a/components/atom/popover/CHANGELOG.md +++ b/components/atom/popover/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 3.15.0 (2022-10-18) + + +### Bug Fixes + +* **components/atom/popover:** condition error ([4354727](https://github.com/SUI-Components/sui-components/commit/4354727a2456f8b349e191755bcd8b1c21a6b68a)) + + + # 3.14.0 (2022-10-18) diff --git a/components/atom/popover/package.json b/components/atom/popover/package.json index b3a85406db..fa23982b8f 100644 --- a/components/atom/popover/package.json +++ b/components/atom/popover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-popover", - "version": "3.14.0", + "version": "3.15.0", "description": "", "main": "lib/index.js", "scripts": { From 372c0a925eb63c05c31c4dd231498d4ec3d31bed Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 10:10:25 +0000 Subject: [PATCH 198/243] release(components/atom/tooltip): v2.6.0 [skip ci] --- components/atom/tooltip/CHANGELOG.md | 4 ++++ components/atom/tooltip/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/tooltip/CHANGELOG.md b/components/atom/tooltip/CHANGELOG.md index e838575023..b1e3d52cd8 100644 --- a/components/atom/tooltip/CHANGELOG.md +++ b/components/atom/tooltip/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 2.6.0 (2022-10-18) + + + # 2.5.0 (2022-10-06) diff --git a/components/atom/tooltip/package.json b/components/atom/tooltip/package.json index ffbf00afda..012eca7040 100644 --- a/components/atom/tooltip/package.json +++ b/components/atom/tooltip/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-tooltip", - "version": "2.5.0", + "version": "2.6.0", "description": "", "main": "lib/index.js", "scripts": { From e9cd00fa4cdfe02ca57240b686dc5780439eece7 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 13:12:31 +0200 Subject: [PATCH 199/243] fix(components/hook/usePortal): portal targetting invalid element when isOpened on mounting --- .../demo/articles/ArticleCloseOnEvent.js | 2 + .../usePortal/demo/articles/ArticleCustom.js | 2 + .../usePortal/demo/articles/ArticleDefault.js | 2 + .../demo/articles/ArticleStateful.js | 2 + .../demo/articles/ArticleStateless.js | 3 + .../usePortal/demo/articles/ArticleTarget.js | 2 + components/hook/usePortal/src/index.js | 85 +++++++++++-------- 7 files changed, 61 insertions(+), 37 deletions(-) diff --git a/components/hook/usePortal/demo/articles/ArticleCloseOnEvent.js b/components/hook/usePortal/demo/articles/ArticleCloseOnEvent.js index afdc94f88e..14e5d3cbda 100644 --- a/components/hook/usePortal/demo/articles/ArticleCloseOnEvent.js +++ b/components/hook/usePortal/demo/articles/ArticleCloseOnEvent.js @@ -109,6 +109,8 @@ const ArticleCloseOnEvent = ({className}) => { ) } +ArticleCloseOnEvent.displayName = 'ArticleCloseOnEvent' + ArticleCloseOnEvent.propTypes = { className: PropTypes.string } diff --git a/components/hook/usePortal/demo/articles/ArticleCustom.js b/components/hook/usePortal/demo/articles/ArticleCustom.js index c1697c4608..fda5a010d2 100644 --- a/components/hook/usePortal/demo/articles/ArticleCustom.js +++ b/components/hook/usePortal/demo/articles/ArticleCustom.js @@ -21,6 +21,8 @@ const ArticleCustom = ({className}) => { ) } +ArticleCustom.displayName = 'ArticleCustom' + ArticleCustom.propTypes = { className: PropTypes.string } diff --git a/components/hook/usePortal/demo/articles/ArticleDefault.js b/components/hook/usePortal/demo/articles/ArticleDefault.js index a8f7e5f004..44c5d6fbd9 100644 --- a/components/hook/usePortal/demo/articles/ArticleDefault.js +++ b/components/hook/usePortal/demo/articles/ArticleDefault.js @@ -125,6 +125,8 @@ const ArticleDefault = ({className}) => { ) } +ArticleDefault.displayName = 'ArticleDefault' + ArticleDefault.propTypes = { className: PropTypes.string } diff --git a/components/hook/usePortal/demo/articles/ArticleStateful.js b/components/hook/usePortal/demo/articles/ArticleStateful.js index a6b45c15a3..6a625d6000 100644 --- a/components/hook/usePortal/demo/articles/ArticleStateful.js +++ b/components/hook/usePortal/demo/articles/ArticleStateful.js @@ -45,6 +45,8 @@ const ArticleStateful = ({className}) => { ) } +ArticleStateful.displayName = 'ArticleStateful' + ArticleStateful.propTypes = { className: PropTypes.string } diff --git a/components/hook/usePortal/demo/articles/ArticleStateless.js b/components/hook/usePortal/demo/articles/ArticleStateless.js index 77c632d57a..fc2f9bd679 100644 --- a/components/hook/usePortal/demo/articles/ArticleStateless.js +++ b/components/hook/usePortal/demo/articles/ArticleStateless.js @@ -36,6 +36,9 @@ const ArticleStateless = ({className}) => { ) } + +ArticleStateless.displayName = 'ArticleStateless' + ArticleStateless.propTypes = { className: PropTypes.string } diff --git a/components/hook/usePortal/demo/articles/ArticleTarget.js b/components/hook/usePortal/demo/articles/ArticleTarget.js index 940a5b7393..9d8bd660c4 100644 --- a/components/hook/usePortal/demo/articles/ArticleTarget.js +++ b/components/hook/usePortal/demo/articles/ArticleTarget.js @@ -32,6 +32,8 @@ const ArticleTarget = ({className}) => { ) } +ArticleTarget.displayName = 'ArticleTarget' + ArticleTarget.propTypes = { className: PropTypes.string } diff --git a/components/hook/usePortal/src/index.js b/components/hook/usePortal/src/index.js index c88893c9d4..4b55fa0728 100644 --- a/components/hook/usePortal/src/index.js +++ b/components/hook/usePortal/src/index.js @@ -15,6 +15,7 @@ import PropTypes from 'prop-types' import useSSR from 'use-ssr' import useMergeRefs from '@s-ui/react-hooks/lib/useMergeRefs' +import useMount from '@s-ui/react-hooks/lib/useMount' import {BASE_CLASS, DEFAULT_IS_OPEN} from './settings.js' @@ -30,11 +31,16 @@ const usePortal = ({ ...eventHandlers } = {}) => { const {isServer} = useSSR() + const [isReady, setIsReady] = useState() const [isOpened, setIsOpened] = useState(defaultIsOpen) const triggerElement = useRef() // this is the element you are clicking/hovering/whatever, to trigger opening the portal const portal = useRef() + useMount(() => { + setIsReady(true) + }) + const elToMountTo = useMemo(() => { if (isServer) return return (target && findDOMNode(target)) || document.body @@ -70,7 +76,7 @@ const usePortal = ({ if (onClose && value === false) onClose(customEvent) setIsOpened(value) }, - [isServer, setIsOpened, onClose] + [isServer, setIsOpened, onClose, onOpen] ) const openPortal = setIsOpen(true) @@ -100,7 +106,7 @@ const usePortal = ({ closePortal(event) } }, - [isServer, closePortal, hasCloseOnOutsideClick, portal] + [closePortal, hasCloseOnOutsideClick, portal, isOpened] ) const handleMouseDown = useCallback( @@ -111,7 +117,7 @@ const usePortal = ({ onClick(customEvent) handleOutsideMouseClick(event) }, - [handleOutsideMouseClick] + [handleOutsideMouseClick, isServer, onClick] ) // used to remove the event listeners on unmount @@ -156,45 +162,50 @@ const usePortal = ({ eventListenerName, eventListeners.current[handlerName] ) - delete eventListeners.current[handlerName] + delete eventListeners.current[handlerName] // eslint-disable-line react-hooks/exhaustive-deps } ) document.removeEventListener('keydown', handleKeydown) document.removeEventListener('mousedown', handleMouseDown) } - }, [isServer, handleOutsideMouseClick, handleKeydown, elToMountTo, portal]) - - const Portal = useCallback( - forwardRef( - ( - {as: As = 'div', children, isOpen: isOpenProp, className, ...props}, - forwardedRef - ) => { - const ref = useMergeRefs(forwardedRef, portal) - useEffect(() => { - if (isServer) return - if (isOpenProp !== undefined) { - setIsOpened(isOpenProp) - } - }, [isOpenProp]) - - return isOpened - ? createPortal( - ) && { - ref, - className: cx(BASE_CLASS, className), - ...props - })} - > - {children} - , - target - ) - : null - } - ), - [isOpened, portal, target] + }, [ + isServer, + handleOutsideMouseClick, + handleKeydown, + elToMountTo, + portal, + eventHandlers, + handleMouseDown + ]) + + const Portal = forwardRef( + ( + {as: As = 'div', children, isOpen: isOpenProp, className, ...props}, + forwardedRef + ) => { + const ref = useMergeRefs(forwardedRef, portal) + useEffect(() => { + if (isServer) return + if (isOpenProp !== undefined) { + setIsOpened(isOpenProp) + } + }, [isOpenProp]) + + return isReady && isOpened + ? createPortal( + ) && { + ref, + className: cx(BASE_CLASS, className), + ...props + })} + > + {children} + , + target + ) + : null + } ) Portal.propTypes = { as: PropTypes.elementType, From d53faf0d869e20ee7d54a9834426c311638e5ef3 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 18 Oct 2022 15:51:46 +0200 Subject: [PATCH 200/243] test(components/hook/usePortal): updated --- components/hook/usePortal/test/index.test.js | 59 +++++++------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/components/hook/usePortal/test/index.test.js b/components/hook/usePortal/test/index.test.js index b5ea19f213..6964854329 100644 --- a/components/hook/usePortal/test/index.test.js +++ b/components/hook/usePortal/test/index.test.js @@ -65,7 +65,7 @@ describe(json.name, () => { describe('hook', () => { it('should render without crashing', () => { // Given - const props = {as: 'h1'} + const props = {} // When const component = @@ -78,10 +78,10 @@ describe(json.name, () => { it('should first render null', () => { // Given - const props = {} + const props = {children: 'children'} // When - const {container, getByTestId} = setup(props) + const {container, getByTestId, getByText} = setup(props) const portalContainerElement = getByTestId('portal-test-container') const portalContainerOriginElement = getByTestId( 'portal-test-container-origin' @@ -89,6 +89,7 @@ describe(json.name, () => { const portalContainerTargetElement = getByTestId( 'portal-test-container-target' ) + const portalElement = getByText(props.children) // Then expect(container.innerHTML).to.be.a('string') @@ -101,7 +102,10 @@ describe(json.name, () => { expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) expect(portalContainerTargetElement.innerHTML).to.be.a('string') - expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalElement.innerHTML).to.be.a('string') + expect(portalElement.innerHTML).to.equal(props.children) }) it('should add portal to the right place', () => { @@ -109,7 +113,7 @@ describe(json.name, () => { const props = {children: 'portal-content'} // When - const {container, rerender, getByTestId} = setup(props) + const {container, getByTestId, getByText} = setup(props) const portalContainerElement = getByTestId('portal-test-container') const portalContainerOriginElement = getByTestId( 'portal-test-container-origin' @@ -117,6 +121,7 @@ describe(json.name, () => { const portalContainerTargetElement = getByTestId( 'portal-test-container-target' ) + const portalElement = getByText(props.children) // Then expect(container.innerHTML).to.be.a('string') @@ -128,19 +133,11 @@ describe(json.name, () => { expect(portalContainerOriginElement.innerHTML).to.be.a('string') expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - expect(portalContainerTargetElement.innerHTML).to.be.a('string') - expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) - - // When - rerender() - expect(portalContainerElement.innerHTML).to.be.a('string') - expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) - - expect(portalContainerOriginElement.innerHTML).to.be.a('string') - expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - expect(portalContainerTargetElement.innerHTML).to.be.a('string') expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalElement.innerHTML).to.be.a('string') + expect(portalElement.innerHTML).to.equal(props.children) }) it('given isOpen=false should NOT add portal', () => { @@ -148,7 +145,7 @@ describe(json.name, () => { const props = {children: 'portal-content', isOpen: false} // When - const {container, rerender, getByTestId} = setup(props) + const {container, getByTestId} = setup(props) const portalContainerElement = getByTestId('portal-test-container') const portalContainerOriginElement = getByTestId( 'portal-test-container-origin' @@ -169,17 +166,6 @@ describe(json.name, () => { expect(portalContainerTargetElement.innerHTML).to.be.a('string') expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) - - // When - rerender() - expect(portalContainerElement.innerHTML).to.be.a('string') - expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) - - expect(portalContainerOriginElement.innerHTML).to.be.a('string') - expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - - expect(portalContainerTargetElement.innerHTML).to.be.a('string') - expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) }) it('given isOpen=true should add portal', () => { @@ -187,7 +173,7 @@ describe(json.name, () => { const props = {children: 'portal-content', isOpen: true} // When - const {container, rerender, getByTestId} = setup(props) + const {container, getByTestId, getByText} = setup(props) const portalContainerElement = getByTestId('portal-test-container') const portalContainerOriginElement = getByTestId( 'portal-test-container-origin' @@ -195,6 +181,7 @@ describe(json.name, () => { const portalContainerTargetElement = getByTestId( 'portal-test-container-target' ) + const portalElement = getByText(props.children) // Then expect(container.innerHTML).to.be.a('string') @@ -206,19 +193,11 @@ describe(json.name, () => { expect(portalContainerOriginElement.innerHTML).to.be.a('string') expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - expect(portalContainerTargetElement.innerHTML).to.be.a('string') - expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) - - // When - rerender() - expect(portalContainerElement.innerHTML).to.be.a('string') - expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) - - expect(portalContainerOriginElement.innerHTML).to.be.a('string') - expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - expect(portalContainerTargetElement.innerHTML).to.be.a('string') expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalElement.innerHTML).to.be.a('string') + expect(portalElement.innerHTML).to.equal(props.children) }) describe('fire events', () => { From 219ce5f940c359fa5621a4c15659ec486214b590 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 14:08:47 +0000 Subject: [PATCH 201/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f4f00280af..2da859d082 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.98%25-orange) -![branches](https://shields.io/badge/branches-57.8%25-AA0000) -![functions](https://shields.io/badge/functions-59.43%25-AA0000) -![lines](https://shields.io/badge/lines-73.79%25-orange) +![statements](https://shields.io/badge/statements-71.95%25-orange) +![branches](https://shields.io/badge/branches-57.84%25-AA0000) +![functions](https://shields.io/badge/functions-59.36%25-AA0000) +![lines](https://shields.io/badge/lines-73.75%25-orange) ## ✨ Features From 27aa961472074d0739cf69a6b1b0c5babd03b2d9 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 18 Oct 2022 14:09:58 +0000 Subject: [PATCH 202/243] release(components/hook/usePortal): v1.2.0 [skip ci] --- components/hook/usePortal/CHANGELOG.md | 9 +++++++++ components/hook/usePortal/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/hook/usePortal/CHANGELOG.md b/components/hook/usePortal/CHANGELOG.md index f2357b83a3..7dd3992ae0 100644 --- a/components/hook/usePortal/CHANGELOG.md +++ b/components/hook/usePortal/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.2.0 (2022-10-18) + + +### Bug Fixes + +* **components/hook/usePortal:** portal targetting invalid element when isOpened on mounting ([e9cd00f](https://github.com/SUI-Components/sui-components/commit/e9cd00fa4cdfe02ca57240b686dc5780439eece7)) + + + # 1.1.0 (2022-10-03) diff --git a/components/hook/usePortal/package.json b/components/hook/usePortal/package.json index 3355d1a14d..6be2a87edc 100644 --- a/components/hook/usePortal/package.json +++ b/components/hook/usePortal/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-hook-use-portal", - "version": "1.1.0", + "version": "1.2.0", "description": "", "main": "lib/index.js", "scripts": { From 0c89745a6143ec5ea06e7e934b2a33d24fa6e3e7 Mon Sep 17 00:00:00 2001 From: slim Date: Tue, 18 Oct 2022 21:18:47 +0100 Subject: [PATCH 203/243] docs(README.md): remove unnecessary preview pictures * delete all screenshots/images associated with some components. --- components/atom/actionButton/README.md | 3 --- components/atom/badge/README.md | 2 -- components/atom/button/README.md | 2 -- components/atom/helpText/README.md | 2 -- components/atom/label/README.md | 2 -- components/atom/skeleton/README.md | 2 -- components/atom/spinner/README.md | 2 -- components/atom/table/README.md | 2 -- components/atom/validationText/README.md | 2 -- components/molecule/collapsible/README.md | 2 -- components/molecule/drawer/README.md | 1 - components/molecule/thumbnail/README.md | 2 -- components/molecule/validationCode/README.md | 2 -- components/primitive/injector/README.md | 2 -- 14 files changed, 28 deletions(-) diff --git a/components/atom/actionButton/README.md b/components/atom/actionButton/README.md index 2dc0641ba1..d651577c2a 100644 --- a/components/atom/actionButton/README.md +++ b/components/atom/actionButton/README.md @@ -2,9 +2,6 @@ SUI Atom ActionButton -![Atom Action Button Colors](./assets/action-button-colors.png) -![Atom Action Button Sizes and States](./assets/action-button-sizes-states.png) - ## Installation ```sh diff --git a/components/atom/badge/README.md b/components/atom/badge/README.md index 8f32267f18..b3a0954c4e 100644 --- a/components/atom/badge/README.md +++ b/components/atom/badge/README.md @@ -2,8 +2,6 @@ > Atom Element: SUI badge -![](./assets/screenshot.png) - ## Installation ```sh diff --git a/components/atom/button/README.md b/components/atom/button/README.md index d387626b31..5dbe5e28bd 100644 --- a/components/atom/button/README.md +++ b/components/atom/button/README.md @@ -2,8 +2,6 @@ > Atom Element: SUI button -![](./assets/screenshot.png) - ## Installation ```sh diff --git a/components/atom/helpText/README.md b/components/atom/helpText/README.md index 7eebe9c110..c2352c4a20 100644 --- a/components/atom/helpText/README.md +++ b/components/atom/helpText/README.md @@ -2,8 +2,6 @@ > Help Text is a feedback that the system gives users to make them clearly understand which information is required - - ## Installation ```sh diff --git a/components/atom/label/README.md b/components/atom/label/README.md index d0491a364e..c85440edfc 100644 --- a/components/atom/label/README.md +++ b/components/atom/label/README.md @@ -2,8 +2,6 @@ > The Label is the name of the associated field, that explains what is the about. It should be clear, concise and short. - - ## Installation ```sh diff --git a/components/atom/skeleton/README.md b/components/atom/skeleton/README.md index 1595593466..9fac3d092d 100644 --- a/components/atom/skeleton/README.md +++ b/components/atom/skeleton/README.md @@ -2,8 +2,6 @@ > Skeleton is used to display the loading state of a component while avoiding layout shift. - - ## Installation ```sh diff --git a/components/atom/spinner/README.md b/components/atom/spinner/README.md index 5ade8be18f..d0165abe7e 100644 --- a/components/atom/spinner/README.md +++ b/components/atom/spinner/README.md @@ -2,8 +2,6 @@ > An animated loop used for giving users feedback while the content of a page or section is being loaded. - - ## Installation ```sh diff --git a/components/atom/table/README.md b/components/atom/table/README.md index 9b9f47036d..c7a9eb35b4 100644 --- a/components/atom/table/README.md +++ b/components/atom/table/README.md @@ -2,8 +2,6 @@ > Atom Table to show tabular information. -![Atom Table](./assets/preview.png) - ## Installation ```sh diff --git a/components/atom/validationText/README.md b/components/atom/validationText/README.md index b9d63f6fe7..c6910168de 100644 --- a/components/atom/validationText/README.md +++ b/components/atom/validationText/README.md @@ -2,8 +2,6 @@ > Validation text is used for indicating whether the entered data is correct. It is provided by using the "Help Text" plus one color each. - - ## Installation ```sh diff --git a/components/molecule/collapsible/README.md b/components/molecule/collapsible/README.md index ec15130820..1c14bc88f9 100755 --- a/components/molecule/collapsible/README.md +++ b/components/molecule/collapsible/README.md @@ -2,8 +2,6 @@ > The collapsible component allows the user to expand or collapse content. We use this component to lightweight the content of a page or section. - - ## Installation ```sh diff --git a/components/molecule/drawer/README.md b/components/molecule/drawer/README.md index 708ce31a3a..f516a5f640 100644 --- a/components/molecule/drawer/README.md +++ b/components/molecule/drawer/README.md @@ -2,7 +2,6 @@ > Description -![Left Drawer](./assets/drawer-preview.png) Drawers can toggle open or closed. Closed by default, the drawer opens above all other content. The Drawer can be cancelled by clicking the overlay or pressing the Esc key. They are used to display contextual diff --git a/components/molecule/thumbnail/README.md b/components/molecule/thumbnail/README.md index 4e3140da10..158080ac10 100644 --- a/components/molecule/thumbnail/README.md +++ b/components/molecule/thumbnail/README.md @@ -2,8 +2,6 @@ > Thumbnails are images that appear on cards, highlights or detail pages. They can be shown in different sizes and appearances. There are basically two variants: logos for company logos and avatars for person images. - - ## Installation ```sh diff --git a/components/molecule/validationCode/README.md b/components/molecule/validationCode/README.md index d5aeb43527..606582035f 100644 --- a/components/molecule/validationCode/README.md +++ b/components/molecule/validationCode/README.md @@ -2,8 +2,6 @@ > MoleculeValidationCode implements the AtomMoleculeValidationCode and adds it more features such as, clear button, send button and resend button. It also provides a label to provide information to the user. - - ## Installation ```sh diff --git a/components/primitive/injector/README.md b/components/primitive/injector/README.md index 86af4cf273..e0d3d43863 100644 --- a/components/primitive/injector/README.md +++ b/components/primitive/injector/README.md @@ -2,8 +2,6 @@ > Description - - ## Installation ```sh From 44063c9dacf2979451d12883fef49ee117612f78 Mon Sep 17 00:00:00 2001 From: slim Date: Tue, 18 Oct 2022 22:01:56 +0100 Subject: [PATCH 204/243] docs(README.md): delete assets folders * remove all assets folders from components that have one --- .../assets/action-button-colors.png | Bin 89705 -> 0 bytes .../assets/action-button-sizes-states.png | Bin 241161 -> 0 bytes components/atom/button/assets/screenshot.png | Bin 27509 -> 0 bytes components/atom/helpText/.npmignore | 1 - components/atom/label/.npmignore | 1 - components/atom/skeleton/.npmignore | 1 - components/atom/spinner/.npmignore | 1 - components/atom/table/.npmignore | 1 - components/atom/table/assets/preview.png | Bin 38940 -> 0 bytes components/atom/validationText/.npmignore | 1 - components/molecule/collapsible/.npmignore | 1 - .../molecule/drawer/assets/drawer-preview.png | Bin 148774 -> 0 bytes components/molecule/thumbnail/.npmignore | 1 - components/molecule/validationCode/.npmignore | 1 - components/primitive/injector/.npmignore | 1 - 15 files changed, 10 deletions(-) delete mode 100644 components/atom/actionButton/assets/action-button-colors.png delete mode 100644 components/atom/actionButton/assets/action-button-sizes-states.png delete mode 100644 components/atom/button/assets/screenshot.png delete mode 100644 components/atom/table/assets/preview.png delete mode 100644 components/molecule/drawer/assets/drawer-preview.png diff --git a/components/atom/actionButton/assets/action-button-colors.png b/components/atom/actionButton/assets/action-button-colors.png deleted file mode 100644 index f5df257fab88776ed29df18abf4a9e708993db57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89705 zcmeFZbyQs0);Nd;55X-EG&lqg?hXM8cY?bV?hxGFo#5^+p%dH^+%34f%Urtqy+?oZ z&04eOzu%fytfFr1bM}#a_uYOfME;XF3L-ut1Ox<%q=X0v0s#CtUT zMy_Ax5E+8Y$|HpiXA+iJE|oC~3Dr14Qqm}f2>R_dG-eYtYKH*H?;ky4kW>#3{2Pmo zK1H{*3^Wz*dY?+Skwg(8AtdmB;0Xl~qppcT9FzLWWTHYa!R(e(ZVf7_Ay@mpeFcBw zfHea8olldV)1!H3iN4nKW*S=hI9F9qgej8Jgk5Q1t*;fJ$zj9TJG7A@HJc?yQE7I5+ zMR#dS)o8hFNOIlu+9p)A&Fir-V9nn!xEMlj0!k9Z`eW`50Tp;*5U%v5x=zMbExku4v2c47hZbAfXoZ*8yLHCi2=#| zEi~#Lk&7)-%mDuq`(6!^F%j908BcXD+jL{=BsvZigQz&s=2e<@tRL?~zqkx*d5G|7 zrJH;4NF}~Y%Z|j58{LcwSMK%0@uB(#OX33?UuEPILQEi`!L`S=n&w81eC+$y5E9My zm+7qu`Bj9(Dhm9!xu!ffr*yqE2kaEN$&@sd~9kh4G zl5lMlzP<8fH(jj|J*h}(=KJD=aOSzJ_(uGU(uK>hxKhX@VsE|&M>Zi4`P{849OJ>H z5sdVB-hO?U&ph`3Ddi&3BxXvskV;G)>y0x=_4C!ucUC+Tk2EH0I8NRZy@hu*!p7+# zX%ILI(6_5AzCUXzC%|lWrC^hXG#)tS>w-;u?oe9TeB@jhg|{79#Rqu@oZoUwwi_=L zdQ+L?l@Gu5T|G80PpHG+^&Qby!_Ii^vpT)y4kPT@g+SsCoHW3xBBSA{3M9HJ&+)Rc z^E_D>AnHebyvENek)qKm)#ldXx9Ab*FqP^s_p_rMC>WqnU-Q6*^MVzj%T)T{06#c9 zIgAA{$szi{aS=FsRW6Xc^*DvK2>p#ezp?S^c)5kDNe-3AZ@%r!Cc~2r;`}Q_dJ3id z0MZ1P)&=o5Z)n1%ui?I&Rj*!uAmdnpy%%@`4@)M9ECE5S$5U2|TVcYPj9lQynT;F& zC0`Fq4T=2=y&l{Q%B3%tE$&;m!f&p&2wKq2E4OBFi~=|=aBgp4NJt#~eR0XKgX!18 zn@B9lArM4!qd$_vN{ZLKq0SX4Amb;=?*kjs*WeWkd5OLz>5ZwCpamnj`Zy3*#>i0x zj>$t$AlC~Aq*WoUkrXwTw*U@DHgf<}&osF8mcnPgslZT-8w@(M(q87GNt@;d#(-R^pCRu1P)U zJD@AO(@towq1%w2q_Qz&5Jq5hp`tznMvErPP`!^wYe0LA{^^g!iBB%#Cc-e^>rX1HF7!V?)Eee#Dgb=dHweA?L5AI@Z+KhUA8fDT!85 zcj3bEgKfccB{x1#ruI;;FJ4)Xf@wLtN@<1k6PfwiIohS3>Ua6CMSE3(zOv{P$`{I* zbdHE-e9{iB$Y4-Ss^nH|6uOE&L|L@v4P3Hq$8G0n7j@&l7}@0=r`(y}3ED-v*xI%E z#h>#O?8{V!rxoaPf?+`WoBZpdkEx!`HV-M@B;35t<^MgPhxHXY7~R~s%IVIQ7^ zH;uQ<(j}WNBbFw^KC1^F%d@ZQ((CN{(naBSh0>@`xLs87HT{rqmGuq`@a?4X1}8WXnK7CKpaGP;DsGzCdSl|?jC+Co{+HRH6_fM#IySqE7do7a} zBeoB#WI;G6Hn@*-!~L==DyvSD8HYrhe1q*v4+%lFL45{(y|QwFTU4VrnX;L>ZEfxA zI&3Qmt-Pj z4UsPEHXEZ?%lpgN-w-8GXE1+ao8tAMmLYrK8WNHt&tad(|L*JG++S-$c0x&ndxz{b zda*IG!XBtcvPwchLZ5S+6Ov;gd=#V}U=*Mngp?|?hBwvtpkWhNhPO(FtPoYfFF85keCv$<_cqSRo zV5BfPPXe^7C|N97JP&H^4UE)gYv3JbDgStI`|-|Bu_uGjhMCX#J_dmc;~L|#5MwNE z+_}Jev-geb~)Cpk4E~XL+UDY7HR9;W|Mgg zu6Z75PzvFS6I%q|zTd&-`++l01qB5JMZ1FfCF8E-ex;FSfIpXvPXs7tVFzM8GNWX@ zPo8331mC9bpc>m6TV{p~4JFUA4!TV(s2|jRH#tfc&WK~#x+0y<-4M0$mU=AyTrs;a zYyWN-DN9wmOq-6egK633u?O}Vs{c!3z#-B!-Mt1W9jEH9hK99#~mH7P9`Z8uN#l^Vjqi$oj-?>ha7(7A-N1Pa>aiqxuI%M|h1p2>;Hfk~?k zg^ddf%PBhTGuLvLgZj{wP~JV6X?m?IuXfvq4HQ8FbM{m#y2Wd=IK%Pb;ng$?+5?)w zhBu9vmaa8yW_vrjGo4CSEVC*t2ZK&Kmkoq=+^MB)r6o?OhgzTr71~m6r~HGKI&MQ} z&j{(^P2M5ieD^M$jis&5f+sgm-Sv)why4dOI7`$r?!J#|ps@rcT6VF;WlHaqZX4&$c%c z<67H$r(=Ti#eMy@Mfo&F<#Jn$)7OK76hlG3OqdifZ@MTNyy_1Gw?uNU^);4F} zBWXTd@0pXBhm-TdbvZfr_ulV48J^az^H(j_r(4@y+uNBt(wChvzv&6Hut2)B6J}z7 zAoR4pYz0;Ca_eRh@4B16gL*%2hKGQKM2CO|t{{Ow z2uOSg*gvl!AfzA({(TLCr24xL6a++&83fGVeKdg2=T|iF2C)DBgpLh_fCIjv18@Iq zsDJf_#>|HP*EP(u>jNREC@d)nd@34%jf|}AO>G=xuzbD&00dhJb$bX1Y>MYMq$G&^ z7y<&y!AwcbK}}YM%fQBp;j^KQz7d0ql`YU40)oed3%Im0a`;T_Vr6M<&*j2P`ezR= z;QATNNJ{)?7Y7SoQZ-q5VqqJw5iuJBE5ip;K15<-Vji%eF&9Wg>~D178!xG;gM%#> zBcrpkGlMe=gALe(k%^O&lko#HBQrBS(1YII)!N~+3%#{H*#ubhxtRTDCTsh@w*_pF@wtVOiQxm||AyvZX8iwv_T2Ip z+MoOSYdW6i!MK#|jljY-R#ryV4t)QiIM1Im{iE?e>--B*-ps|wQcc7Rz_bVU#K-aR zw zvbC85AM@WR{{#Ft77yd|eR*-8{$heZp#T@~A@VT(o1^#;VQk9*HWPr56cJQ%f!uG0 zOMctyc%=F5mA~i+Cx$OE{2M(8>JN%~=-ovEA&8gal9#P+myRwiUWrzmx;K2%4UPwL ziNhA^*whN>6z`dWQ(z<@$RVMKL(=Wl^l)6AtC89sIh6cTXESG0mJWe`%Qqd}4n@~{ zJu(?wTS|`Hc56S>{RAMO-uOVk5JN!1KVQNNX1fRT82bJP^4z$BA&|2o`l1_fDFnda zBO=3JV*5ZK!XEt-^-U@SqNu5Zq5nU?@>DKx|C;j8VSRtX$WsY@B_sRyN}j8Txa(5B?wEZ29BY|J-j5LbklWn7G)V zd;b?QM8Fs4|3MX5hyYSnE@q*BfT=Lsp#QOZ0aGX{%$#2_X#XH-Q6yqlCa?R@ zwL!0pqhmcDCphnEy4Ga0t@NYgZv1SEV=1TGd6Aj5H9N1{`G<$w3l@y`G9TLAuSPUJ zSy+^EdR$j|d-p|?6u4jgago>1z}|V-(<5eox-Qv?JPDwfvbY?tlsWDNp4QdX!4&Mw zH&*UUma49_4~6aacKN}1M$*)JKRp^>AFmqERDI?fA39GLezBSC8JL!gk9KR8CivCv zSJr1!nl?9x0`i=mx93b8%O3V4g7vR{S9U(O@JGL<5uRo(>bRV<@T4GPiI_XyEv>vw zvS~eFXEFVmJw(nqy6n0|So`_=EBi~!4~Q3^yS~7R4M;`voczGpygvCY*m!RN0({oD z+er$lsyNBki!F|ui_Xg^ZPVqN9QNH#%f1u#onq%T<^R5bgz*rPC?fW!J6?zHB; z1ncqS%6vx5w16h`AvE0UkDR0L269iXe@7KkW7L?N8ZXydQ*{o+T#(YlD6gfMWHRkd zSISXiu(7duE!G4V@uOd?s&?Kc%yxLX7nPK6tnL(My|(PcWL8ZnDlfmldZTVi4su9j z&^Aw`*TgRIVitTsEn)_!9PLcjDrdMR9Bqe~=IgaE#X~WZk@S-zo29l{)0M}yFviro zqfUOuWhaSgxh%eetby*Wmc5EIxbw>n%-8CS>riHZsf!ts*omgAlxu9zl7Z-STvlQ2mp!lYWBa&j zjRvuwv_gM~^WQ4yrc@!kCgd{IaoeHjJOZsSG_Rw7b%1|KNhx0eQ>5-((J;_K7OPoo z3X937)SB#%fwYxvW1SWL_|b#tD+6%vJXU&Xw^LvBH!itZq%!C1)hI212kEIT0@mo3 zyq`Q5cjKuxg--C%)k(1#w2}*Cwp+@ucE1-Xe0A8pT8-dXI*vMf5Vyls)%C2$1P|j>bBAHez+)>1`i9p6a?}#FhbOrsmhHkcVN4*Z0@u^aE@=Y z;lW(JS^xfu8nhcVN)0+pNCoZd?=8e;1s%1y$*{C%Tce|R&N;pvD2Pej#F`Kd^o-l~ zx92;>gRM>nQiQbd^HS`CL2Kd+o%i5nE+&U<`LuMomybMVh5%K-9~sKi0<*8rYcDo0 z=WVX&A;8o%xe4*-l)s48S#Fv|5)o0#C~811UF*%U&Mr1vBN<+)B_%X0uBYqiJ4RM1 zOa@{!5snH{+I_zTF4SW7;;@=s)fH@A*i*P1OHw%P3p#fd8(6i1UI;>gvFF`Rapm-E zvKTPX2F61=-zayBsM%G{TL@+y(nwnqd>M0c81Au>Q0Nz5@Cqz;pKq`#HrHw_Kv;@x zQXz@kSi|YO4v3*mj(-pHQtIS?BA)3j@>6N`({{F95NxQMuL$VUAR0r5NpJFVHxQ17FlIsDPiwme5u5eh#H^FxC&m4d^t3^PdWpGke1E z3<_k^62~b96T2y2vQ+H*H&QuOOfcZz2(=;UTxLnBlXe{{P}B4S!qV zZ*tY1E)6#{E8H!-rL~*SOzh+CS0di`q=pG4u`_tT&+9obX8${a1E0RJRJ+%Ce`eKN z!y+^>%X7E5aH#!iDXrG4Q6}=Gs(HiVD~}k!O*~y9UV$Xnf#RgfIwmEKLHTL_g9RTg zsiRtO(znIlE@cpSqr9?GZn1%uFQ4K5RzS;mG&7^64G_T-V|8D}qee<(@|a!VYW(|# zCB4y4Ci&ii17hzc=50EyDw;R(pNO7b>M1}v3&9$-RwEx0cSesiK~5d&@v7okb8&cA z@XQ{n=S#HeZIK;*TAtPCQ`(HDRs?y2ZE6O>^r_0~NwRJ&@nOrB?Rp8RrE?P5|@(QMJ9I1HA^R2QKXvp6DD9Uh$;YLx%UgN9vyf2Nw+LQwv8$O61ER@015 zkCcX2o705cEncQkPopeujJIY&Po3y)j6d@7hRP#DskHKTx(7{Jg&#d-I|@t@m0Ss{_*xDk%*0<7Tac@YCrGEYx!a#aL=f6I!)=a+^Mj> znMM?|-VbOmgnYCg<=q+`o42^Fldfx-UMF?jD{sVahG?#FzdB?^3Up^YQ}c80=2TO! zF%0RXE9IRo#H6U_uSErPdu=CvT$)O+9M6e=rGvz5^FhNrv(4SsDBoRKHROuMqq5)} zdUf0yMG}MRms>`pD90S|I2iebUFEBf25*%k?}wFM=JVM(fzp|nVMEBQZo({@Ifps# zZ4t6Mlexv$_!8B9|Wb8lr9urzm#uW!oI%fC$KiddH<5_)=9U0S0m| zsU+u1^dbSk;KaKAxx@T&VY#G$jf^EZ@Y0AEfJGO`Df$-lDd{Emzrg~`4&!OcXH@OHtTV6yo7W@xo?F+1l<~V2E=%q3h5e1B8n%H>gmpp<N^oq~LMYl;8sP63`M;lDk#KUw6zp6LHePxQZ}`~U33|CeqzW&1B+{GTKMmD>Kyw&yf(XnjGPv)ZN_$-AcIEZ$DUBSrq`Gf&!c6 z4$d%s*V8;s@VbN^e!aFQJbJzOK`iE20THiTvY_89SSGQYeJmkBLw^@~M`8;MU z=NpDu+1YPL6_19JnG9<9;Pnl>W5Gm-S+Q3 z+Gg*})|z}8x$XGXy6x2|abCi2DE)ZBZb;+bKQ?OX9-29H>&ji_8cRo0=xSel* zb7*ln-&Q#LfgyK&m4D51{0&-te7C3dsKa8aTr-I+!V8z}V>-Wg2OhVRCCy@mcIyx@ z{A!k5Dr^6O!?kpVSqSxl8NNhi{s+;O;`8a`$0 z6xHIJ?rFzB?G69~KPa|)15uLF{``2U7}uMPB+q~!^aj0=gvK|g8;>j7p|lkraCAMY z-RJq2YE7bay;}(&ahUH6mpxHvE)F;F)!J`1)5H!G=0?3A&%A)posC>OE##z8`}qc= zH|JivRMRi@Lw(F{`_BEE!6Awytyqj3B*wOt&iT}`>vc;0ox+HFr?6*!+DF3N0;*8vTRPMVE(iAAfD_o_QU zsdScVIPl@TkY9FK4=YyJY}x&&y{*P{C39EF4@e*z~HDg*v{ijU1 z)>qc~_0R=5*6*e7-al;fTudky&nk0hi}&Jx7)T{fiqRs?FMKmwXQrqDrpCQNUSkt* zIqrfRKh6AT_eYs-=h9K-tL)V3apbI5g|PuhIJbVfi|!}gIKw7mThX?#ZP6GOMvr7VL)jL7^9icuQv=t%xw(1^&jJ;a=)Kql zCN0;E1XU0NxCYdpN)nce)vQ;XIbJAtC)Eo?4GuK3_dTy_S!&B~`N3VVILUUudzwWz zc@ifX`oLEYN8ZaeNB#&H_g4%iBv@W7$X7Ck8Lo#ZMjQ4-8}_63BT4n27(7yEeqL2{ zeAjh9s83f>eqh*sO2&G~ipkZHT-I$k%0CVX$i>WrvI1CV48BiS6S_st`*yr|R-<`+ zofgDr_}JhlH0-v+7%suoPjR}s*l43$L2hmD~%yC*fiAFzd zYurYZW$8J7>P-_Sw@H`j)wa>e7{g`&#F-xL^6w2?CDdy}zqVul5I8gexln-nTLIS; zG>|6C80ft0*~ojLJq4m%@})BYlf@P-aUZp@$fo>sq$UB2*YItCKx?r{I&S^%g1eRZ zHeO-)+_^H;3`p*D9Ch4*PHd(Uc05YX$(m`TFs}^DDJ$xkc-c(sfQ&|P+J_CmMae-h zEihaA5#r^wrvsAs>_lA7b4c78&CD8?Jh*7MF_7S8cL`ViwWho^&bSVc7v}uU##?_h zj7}A*8_&PuR;#~S53+%dNTSzF#DBBbQHHHzI9$Y9JrKVpwodxKnk7S!&JZP50`2;` zmp^lIR5OtURz;fiLyc7Mh<1Qzs7*t*2Q|j2bCLwYLHODZPV7lkeQ+PwMXBxs&2NT6 zJ2W46r<&W>wNsT^7=o#9W3Yrt2kTL;qZCg@mdp?TRAIkK`{buf5M9o$ z*6DgN_(&yv6U+8BR^)LS91~sigrnn<<4wmAnr*^x#jKu3Uc)f!Jl^@{I4b!$&h(g7 z&q_5rlEM8j(PE6X>9hYxQ7;`DHW1^k98ZdriL!~_a4B~3RMu=~D{_+mA zYy}c99!cN9*`>j6wpg{Ecy@Q+OSu9{HxI`0TaC)F-NVFL@s9{)DhE8JNh6c?GG&t5 zPs6zLU9Ag|Te?l z%!r;(wFz4~Nn-{Hgyq|Lka+0)kWD5gmgV)S#Qg*kMC-qDr={|WqgEx z6Hf@IJOIQgNJ)r|{%AQ`XYr{`FxM-`D?{bG{??i2tDQW%=z6x9Vv^-K_0G`D=v{Ml zlfGXyo6o3;({h72f9%w-D2oL+t)_NO(09u^L$DY0dOga@XsS&8^234R;L7815dS$A zYB{`-s5QrB?~D%Zm0Ua76iCm&YQjXF8WY#tuYOUmlY6FNz&IzpEI{~%dAU$%ux6(o z#;#(^8IX*H2le`AJBkDTiSUnrvf1gxaa%rM&avi-{7Uf#_G*OZ%G4c077*8S*_H{W zlmg7s)9Yc5By|`pZcj$aQ%3;{N|nuNmT!yCw>ZyQ zBpeqLdt3an!}`#iYc@&ClwdT_(;OT^_+xuUnbje)Qba+_SbI0d`4%Be* zX~0vC!4{DRb?#2oEM^ zAOI6l9fD0gT9%~R@feRD2vwN6g79I8-+b{gjz3S5t;;L9`yP`r(h_Z`qZ)5Sj1q&+*e;lmdI`_wo@iF zr;r(WD4jEW5!re$qB8Xb7U|wuE3}f%224_Ys5^UV+kOVa^_@3#Yw3o_pOz$vnH*LZ zAL)w+YIENS z9l)ZIudThdWt*oL6(Qv)K_H~UXplki&zF}#s4nH7bx$~^ZX_c>CD|JnM&*s4vby8R zYoiWcI&?d{wYS)r)@nU1z}imldl&&SNW7?b#a-Sei-qgVxr9sgImt_o&3vAhwOJ_h zH-}Ei4Q;Cl`HRj0!ITAvPSJHk~4-&&EER>~BF0Fq+F_`|O?-nr{5Mc}u zk`9^^EF9rRx0+e6kT*JewGqc0FP&q1S8@-^o?xdhE!FGsNC?etq218f)VOHQ48r6o zm2a}+aVz*NiVaQ82HKU9%rlkZ^xn#FzQ1fg=^@CUXsfZ39$VOWKNmCO%u)f_T;_A= zoPrrH{?2p4X3C9ttu6#Wz16EHQ@I{7VZ#eooC7Onh|!LS#KNQuPGsS@Ru|ffevaK8A;7xoD_vf5TM|V1#)ZSxr}HKW2-v^w(_8xZtQ$)#(PXXAi!| z$DRF{J?eRAU+gT(G8mc^GkOgeja#(Evja0Njuz&X(ZHIgWYXB_HOC|>qy?wws*J-X zFFlryBxov*g<@AK`q9)Ex#ofa`4b^LxZ#DjK{ozGOCL#G>ZiYb?meOWQ7NgzyPP@i zsM#`(bMCXw^4C;(p`74T>J5gydoHKuaXXx6r!0wtSh3}SWI|vub?m#7z#(}94+=Wg z9`P?4dBTu*d=x~A)YU}v+|eO^bx@wIL>bgtmcwz>t8S<0;&)o5`wr3N`Zj~Z5_VAN zC~C}Ee!SCX(c3q(!}|_=?w6LH*ZOb_mkSSd&|vMjvDMc@i{ISUp=(f%_e(fvgdvL% zapi>S?iw+vLRx8*(H&L6gm(6gahSK6RkRaEr&HlifTof&7T~j1Ubmz@>Hr_&N?hAQ9=tus1C-FumpdjJNWdv%QRrbZKFL{Ov2_@$8g|UXx zMt3DZ@5|KrrY%#nkoG}&PAWXhPUffx+z=BGY?>=h9UBSuT&n7|X`f*)RIRP27QYkr zQTZ(OYy{Wpzcy5;AvF>mUD@J)YHl~IQ*5S9ji?{g-fh9eP^ZgllTfPATE?{a+La|@ zRX;k@xpGf-MXN4T^MJ)w6ibkE_taY)`W+VmbD;g_mKWgT6fTj_vy$wUmsz5#lN$z1 zx?32yvxbmbXn=B$lJP1G7v5zE&~k`55@+QUy?M{ic9y4IO`MU9AmELmr9!RU2@ zqVX-0rQhqYI;Ki>qGZEiEe@HpHveCDdY9pn?qPkrw}`o?QNLgx+2Mr7^jnhrq%RP59Jn*3p> z#fG!5?;cEdGis(!Z}y88JO-$?SP4)1yW79EF*Ih^r5gTnH`D%@u%!GxUVN(g?y!~7 zD93(q$nmX`Zo~QP*Z_^G>cRLEY&Wx{7A?R-%$hg1ozyV_qb+U5r7W6wT8!ZW9CE+8 zO$>%vvNCe|SvdRuPA?cq3sjJT@HZ;UA*0tQSWRm~#X1O+kOGZAvq6l>)Tne-BkFe; zMZbm$cq4yYzp!p-q!=C7 zLo%j-=p}kQ31BlYdlWe!yi9LM0vRKTP}YloWQ>r3j8XimaK7}*l#j%7#t4*G{Ev*0 z(R0QK`5le+mzNnM5U~7MQd!=Y=v2bMnvAaHcb0dncUoQRcga3c5EX{5~z7zRV>XCoS zUKI(Oby-QC_1bQlowOa>=btlton^`{p7tqCk>0AH{vdq0V7KJ3K-DT?XS%irxn%Ei z;MJa45AwcM59*--1Mbu`a#^Wt+kw)IBSJc#S6})}?MOOTRX;1?+-D8^tJFjTIN7~^ zvQ3#mN&A9}y5;7>NwxxaD;ved*3RMs?um)lxMpsziA>y3()4%5WI5P8UpZ^T*YVgv z4G#}*{+&wLT@TZ>Cdn4iOqx|KTZGDl18vRQnd zGRqyFvQb35=r-I~J;K@ZAsCb+*q}NcnCC((fqV>8Ui+!G_WGr=8LyeLrO6dqG=&c_ zV7rrKU*p4T!OhbUVHw9OYXwYcJR_kMOU+WVg{r={i)}-17aJB>CvBqgOn8IBIUe2* zu{^xj{rpO%ea@j&zk>{Y26?Y`^VU;E()vo~uxmg70Bq8R@aMdIDi7c6sB za52Lus;uO=yF6e4vM&QYdoeF>ADt zGn^aoylyCYN=0RJW+j(l5&E>vo;@nvnJy!fR(cyCUDI>z4PuR6hxhl~RHKS@7n=ZV z69+*kes|~Ao10L=&Fy0Qj_vM4p-vsP&86nwLzE1Jy88w4-r+Ep43ECES5ss4qOkd%u^u%`f@*_11uu`2m zjtR$`9wQ<#k_18_$19i&a2_K&K}ra$LGOXMMAz@02!aQny=YPLR9WA794%X4pfMLq zRo)0Fi#e~_p#cIjsJ>hLGX@=ZbAdB{OjFb9W7Z+RqDQTuX3EwR*>ngGaDb;{`K`ML+U9H zU`n;UdfpC~;7XRRx=rTAmx|V!g-uv1?~6b)?Pesb=}W85`vT7EL&g?|&LADPsFdSs z{@pRpqPm_+&BhVbmcxMum7kaAJL9cj9I2WEDolzSHB(F&V)NSns(l)CFb@vDdNBZjISabdzvi&!`EDT*!hrxt)UVM<3f+qw57xOIQxR% z#&+0(~b z>5x0ytic!Lx965@<8iOgVx+cwx}$`5zP`TXX#73u@mo5dQx&q?cn1=jXHaT!)=lCL zFS=^{r9-Im1|ai{fe^eHb|^UhIU~wxznR?OdDF4Ce}+;jU!^Hw(jWH@>diJ7#xRA- z#7GELBsBK6sDm_LP#`e`tnyw&{eS=7O#&G4Zx1J)BPk(1`tR2_l`0Yua7qE(l2Hje z1S(@8>rWfzDYiQ$QC_<3d}Q4e*}e@6=>wC@t7GMP9W4(G2?m&}{5l`i;m^E~H2q(pd%Qbe=uDMCo3p{EDNLalf$IsN(gWo4Bo+mkdHrY)+ zMF3(r2HwOI=O^=)TMwuBHnv!$)h7%#7TLEznERfvDz3QP!QvOgioP$o zuz)rH9AxX5C^Aj|V(H8%K|t<|oX;%@gzpRjPn~HT=c3d5OE;-@D5f_^YS^U&d~55*Cn5e1cx2dl7D? z^(5Ao;E*%cEhH1|g0R2XI{lVMEz>>SpM(-y|H}`#Y_3O|BFJaebpp@R<{-V6fO<4N zK9t2ep~YkDvorp+XX2uWJudK4vff~@>$maKFGaB|>4vxG{E8eHAK%0gn1oAY7Yvl^ zkCr}Vx@@^46|)G`!K3>vH$zwf~{R#Mz;RfuiAb`n;{VwYSe+*H0|?`~Ag(%{!a-wOxtvfvub2Y^tA#QVV$2zneY%dS7dJ zCU~|!kdc}DD_$<~Q{hcSlni@TlY>X$V2;n_UuxiDth25Y?K>7V3fZRjoGQ8221!;) zo)&AF`|!T*ZIRh!WLz{8#{&loxCJN*=gS0eVEVlf$pMx|#L zm&-VGIP!k_$}-fbt3{v|sZ4&@VpwJq0xzTVt($Ub-i%1SVKUv+nx0s7Rr2nlgb9_u z>6?=Ck&25k*pR}u;h;|arhFbSg?h@&PTQGID)?D6v#tlft*gY~@;!MiI;%MC&wMr%G_{Jjx~nKC=+W}Lm@II2=6T?DGyaSfT2kr#u;;y`uzKjpi}|M| zRE*&Q-eB;a;tzFt+#$pvXlA1C5AKd;TRS?;u-KHvwKOmNdXtmNSJT<-Ic4g7*8Y)W z#lo7`;P$+XiKXo}dK-RU_Yz}#d-ztI1jpm{i3Mz6e!dW=g}2?zCi}G3nfj<$!Ma## zv8b67br+su6sYZ1*?654%ay1P2Ed9Kdqu}M)=HH`fu|D<$R7>og58t`dUanIhrUiQ&eCNRvyFPj>z6evQRHSt^Gi6_sKk0FF5wS@x z7t^;{lP6$F%UChH*D9&KL5&Ui=?>F{(&YlVCE4ct(vBtftLpXPdmg z-cS6q>9ZYO?VU=oyyIbYc}Mw8)9lGYFV4sfa78w8~VUOtqySP4s(82M;ZJaKdGi`!{LW4@CI5biSV4W($gsapLqJq z9oHR4Uoa8sHSADps4%&XRowtG3grpNq_R?@d?_E*5F4`=vn5rb!bI~yrXs~JT=x0W z{2X!1#)ZKQZ+B4y?^O-boJ_uJw<1!XYZfr4#-F5 zm@(hxHTN*)u{5Q=dAqM4D0zrrE+$IH4=iY8@ii$91?n^8VjpDE8%u1#vs$ag&s5A< z$!0R2ERGhek#S9*+Ba{YZzMJI^BRjY5r88?HR{|Ol1VbivYP_(oVptZ{2dK;wFXBw zRMbH7Ip2jeult|_IxLK% z+rW4BXpRAr%wa7D`JkoM@BN<3)SD#ZqST155!ZF<&6T;O0}?BT!)t?cJIGT+e=Svj zULlIAx`OI3fGU}=Z@bzkuK8g!F$*!QKch7AlspcqvCO)qQe5=B+`>gQzC=?>vLMY4 z#f~^R%%6(PQ#z9$D5BL%6sui5EKAXgoBXZs=BBatQ=o10 z_pMMMvw9b|MxzCs$4X3(0M%^;%#i#7Or_vN%KT?jiM;AWpsn?Ob5}!4DnKQ20C{Z6 zTwXz%X;ySGDQ}Rw+C+OyxnMU;y7*W%asYm83S9H=#xUl@oSzN7`ARV5Z?Srp(7Fv( zsrD*ji2#p^hk6bHaN#8M?sCq*b-ZQ~Nhf}tFXX#CH~&Y%O}&4;bQp}=gmzg!L(J!hRSZ^>DkL9{m1RE zcT&|!bwCKY2p$T&7$R(aSGb-Cjbh$;S#-@y`AL{TZq9Cgk(`lAmt=ZPUsZyj#e5Dh z;`GgKxxKwy={7bsi!O_7$(+o2lPC|GtT_4y8`HIR*7TD~N5IX65p!$NK=BN9r2ZL$ zqI4^8*f5~@oY(!5b=6pB250g~gl#(=|t6LYG8cfHtLM9&%Nv29mYQ zP+DCg0R{PwG0T)SfUhW+DsyP4Xusj3@|iPH`9 z>$HlC^_VJkX+GTocf|uAw3vowU?xPG>?$x3rb!D&{{giWwTY7gm?n=7GgQbl1{=_% zW>AG1b5bpy8D^jIc6{3;jx|`Er`b(whA!=6WDw(NcqB zG~3NUJ1&Ig=su95JyFIy$ZcQX(Rsv7kD20mwC~DUyGNH+b)&vPO~-i(Ftw4~%ItDG zNqJPa&O!0aMPb(pIXhI+!_B;z5srI(q5gE%E5EoI_~)9(myp*8dO6!~&=7!FONCH& z3(ZnxUD0B=REWjGzEp9gLSw$WqwIueK>|*Fnu5lvC|^jLc1$ad1yBgvd*}HKEc<{+ z$7AgT%U(zq+k3~J2usQZ2|NW@Q0?ZWq*l9Ax91V3x97pmE4XIAk?82monTd#^W&T= z4+zcfIMz>K=c`us6g7hz?i84ex+vOG|PeItCZ^%UfDJGSqU7r}K5vlkvlZ z&@j|O10Y~xDSuX))ImQEwd2+0Xf;bs><=U;%6FEyU!k_Vz15HwzU{!~Z9~}@P|h`0 ztw{fJtE{O>;J|ra4|(W)fktuJT0uuP=m)|%5?`1d0Y5e54X)BO*_a#qI~m>8 z&4GSlGWyPV#IRIt>I?eAhKb9F%l1BGf1-~MElsWRb*EpARqG-#bJmLBx>J0A3I~bZ z>EJ*rOwoKbPO8sEZ1ELR5JXJ_D7t_kVkM|n!|D0G<|ZyMxrJzB=hYjwR@X43n`!(phqct~W~OK{gJNI7h8>kGU#7|F^_`qHCPLYyDemyCL<=M*RQ zPY-4A$oChy=Z?75sZvu@!&^fZsy=@QOj38!d^VtF(S9`mXH(nw-^1Gp(P0|h+wS1Q z&_sN@?)qhY`Q9r|J4k`ebbs9@EoforOX=re<-lpEjmeix8e2-Che&%3D`4xM8-?WJ+&al073O`gVWp zoAL_6->0N}!4w~=DyBpZTD~S^>S(kwqRg69CY!F!#O10<1tf#vxxGI)EZQStwcD3epvxB;`tce;JX<`9=(!qOYm=_IZftz1eTO0AIeun` z{4FeBDLCbyitD{C5RZ*%Tyd|o`9P_uF+T9n>b@m*c$Z2zIaDW}?;otCo zvG-O{bp+|!a3DZ%2$~?l-Q6{~yITnE?h@RC%f{Uuf?FWCyGwwLyE|VqGiT1s<$wFH zv)1N<-o2}85E)c2~a9X$9|OXwo>%biXCl+{C>`X zYf0d=GLnk5Sp(+VuFy7RIX` zkC{dD6r4cfqF;d|gBPq0zkO&)N%%{d?C(YSN}1@QnB{2!-<=DI)hsKJJtei!)1QCD zf}a?#Ev75DJsN9*ovYHGr3qv$(^oQ0Ugk(*TLc!FM4h3GwK1U9vT3EcuR5Evl+%LfC5)&BC?Y zNr%cNZ)dak9)4qaXkl<3f|h#JE=Ei&V2(%o*XhoOCiV4}c*OHXBX01T)cGoumANdQ zDwI`23Yr;IMH4;|i77;rZ^YG1Dl%Z1CrWO2Tz`3ZE53@+t84^gUiNc*EX(ZWlB1HD zWAu||j4&bi?-w>7l+s>N*Cn5C2|nP>nN_M2UiN9UDD(bP{ zH*&D!xGpXUvv&@w6?*EH@q}TbA^AZlW8anWu>mMVp7?#=KM$-S{8;tphztJA)~sEhNuQo)ee#S^nA521Eo$T^sYI-f8x$&stMjKYyzbYu_H}Px` zGQK{XXSg7P2{@oiv}_#1v3^;_jp-+I@YQNBn|$&s61=*>2$YGmn zyQCM?YduS%6(|vjNq9jmy~6jYt4k(40lMm)*`McI{b_*mdQrX%`w>u>+(w@^?`EG1sSPF6LeY=|MSl#JmwYjdvaqS?_!{{5~*iSwzCjF?8JJF1CBR zF0~&oH>Lq{i@W(Z%>{UmRpn2u+2Uk=a1ZeAv)GkTFWeg%XxmW^^a}>?>-tl&+UiE}_?)>L z=q)TQQRt}9JCM0&CHkj+oP_G5@X0nmCKc4-T6k`0Vqi2Hv>S1r^?J#0&KUIC76`PBv}n3#O5m6@Nw12wWF}9wRdV6f0F|*BO!8MmQO4vp zlcPE#y0BrPx}#>Cxs??wwJJU9FYenP*R4P_6($E+?mHlV(<8^k&rS>j7R2D=et{SJ zROWAVS4CoTAv(DXOdNYh&$sKg$!!Wr4L^QfjHa>;ld}n37uvi$2uh`j zV3ARw2T7rh3lHx}?PHpGov!S;x{VrT`*oJXb)G*rKB;CK=~AjR%n@)z(=H!SQP_gS zlWdSw$gMz%RG5Ze85;_4R!tjAaacA>$HmkQlHyp;l7AUq3#{!|L6RK`=QudLiq-A@ z3K^l6=URMT>V&37Zx|^~fUo&TLaGJ%;4?2`wvxLpqlv!ebt&tMNvVkqkEyxaXtlUW zL-By9^snnEn|JypeN)Q9G|j0tU_+9Rfa&8FiO@w}B|h zxsYh@qwkuUlIM21pzZh62%(k*vAGuj-@94&^P9|nT)t8>>-A}OdG&P9pO(>KKaMBC zB&o9V<)K`2+rij0vljGY)imu_Hasv?N%yCjuCHedWFjwd2!{u~U{K_YZeA6E^(m0K zPE(1&f18Q|B|c92pw~K(Htz=NLHv@migAOD)H#E8JX`H==M3I6(Wv{SQiG;MdsTE7 z+M(waXh>@D;U{Z*hRJLB?#-%;7#dxbTO*;^Zo)~zm&(=? z3v3!9@aD_oDTl!0;`mdCnakIqXqZzWL-qI=hg=4pYu!qTWE}@dg^PhIs%+VCP>0p5 zTJI02!8iXL{iNCNeTdM{#P?`!1}~(x$}Md76ob|OKcaA*vEiu1lD ztA$SIb7oKPtf0TOLd@FFYf9V$$cD5a4TZ6d6t-L8rIQ#pf?ACLT81_rW^$ zlB(TQk1NprfeK6Ridk$-gP6XE*a~kXD^P6Fc)J4#x-A@bPVTiN%p#{6RCH1w02e)H zIbmiSF#HR{yuA20f^63CT3S|l!7!X~KPAmzOdj^6qXskjL!ur{S)9g#>P{0YN#1J{ z-DIuJ-S4>Oy&IKsZT$lHR7aGA@p~Y4S!pSNx$dehO;+YtJ|*>tmJvp1JThj|E39JXObp+dfglKgh zzad!v;M(dIV!4LRTVcUFiv`%W&XkO#!n<;$OIIbMtaawv^dJ1wGV(U-?r0mWW39O`c?;l?uKV} z+i^H1!8kHTr#0Q3KWol43g{lAjGW9!{b%=a~$4h2L=L)goj)Jf;6d0TzZ2dZ5S7 zr<_}IIUIE<=OeD)Oh~Fu^o(C3i!~%E5M~DW+^;Ol0#c^aFa?9o43yqndXEQ4(~&OY za|cq1q*~TeZ?LLCcmK-(K+myx!`0JaFiPe+(04yy<5M9+9QQkI{(l*%c?rVjG!E*o2`B0 zAI+HNH$joFKdPIo`o1)nmkKm?3EOL<`yRisa}HRPbRbhnwL84r)uJOe8|WXF*wm`^ zK1?Rdg*C&flnduzSC*Z8B?=;*7v!CPf4Y|mvopsWd-_g=hT8nt5ca<=Hr z^?J-nEGRdt3LWvn`7w<4cj!%3tIcj?@6elZolJZ+@fD@HQMvBPfi2FE2%5wuc2*R= zGJ%Wg<3V(0zytMQKY?1M5=8pUqeRJdt&c-51bu-r#cI3*# zzqhL1V&T%+h2y9!;P`dcL*F}|ovWIFUTc|=U-MV^2mkzD5Ir({IzFNX;C|bbZI-Ow z{HlvDJ+H5Pl9nYfPxSTO|MmeY|C5G29n_81MA3?)P5ZUlYtl-}=7Q)lKBeXNbeY(+ zBtyg%fnGleW=xXSmUz0J7WhSZPhIaCzvUaP^emSiZcT$37wb<(>fS^12k54cLnTM& z0f!?T{6004KU#G}y_E@O)$>_luW;BGWu8YGBVks+)CXz*Vj;w=Yuo**g3gljbmP37Qg zHec^sJd)&W2lQ)6pn|be#1o#|PAtcc>r4)C)EtUgGaT0+spueUFNW#noC)YFu!3!) z9`ZYyGZFtvlbC7%!}_WdRr}j_C0x_DKzMl{z>f4vq<0kKN3vwls;d1T&2%GTr>T- zh&DOxbU)R}%LY4qycYHDW>##GSE;+5?!43e?_-_&OUZ+BV~IA>m$smXTz*V$y}?cx zr5$NPpWQPr?Wx{rbHNV4Xsf*4&U9f_#9@69OQziEVcgJk*qXoj_jalDK5JP;fdor$ zg*^X*mXe$=4(IY`Z?JZg-8YlDwlP~kO@6tT7hS01>|o3dNbtve1_JkCK3m2xMEE_> zn?&>7q-a(f2wB(yrhFJy6|@VYtUN1XvOij|+r(tXRB(#z41njH zl%~>C|4hmKan=U^a(2T3f_mjQ32um9Y_H2T=@Eg>+KyocsI&YJl@mYOCeZdevGA(d2{B`Vd#ECDKc85Vs~h7A^$LWW)zR?ubpE z|K4bB>MH9FLH|y;^$|eAEnG+2v)fUbUwb5S22_(T*4?(E`o?No!OkjKw1}>2?xs9s zeRL%AH87{@dhP}8fNhim+2tt}r`l0AyW7|0)RdS;b~K<$iIpZuT+z z77~s;+pkF{5a43LIJO+GD7F8ll0GeU>6$BaK4MYy7%$AjGAGpAZHBe>Jvkj+oO86- z#|Kj-J}yCMr_I%ji*t=v2D-(R=@9Rm=fXOudp) z$7Z2(bfUl|uQter`<7GtA^R|B+i|+39|S(gq(w`un78WKgs%;w>-RB{rohIhf}abY zQhcxiL+Pq(pSGUzUykvd-p#>VhS_zZChpV@(_8LRZ@2J(x5P+?yM_{JynDfCe|wH; zae}Uf3y&qZ6u9}`w_Y|yNy8cDST?L!-L4)6G~G_a zDb&l2S>*+YR%zaf4KWMBHP>#Py33%`l)h_QC<^MDviF6$-+|}_-=&MbW>-nVk(DqR zJ1~hFMe8U(rZ!HB2HRK`Ht9R9gc9ObX;B)-ch82HZuiij31aJXD5Da^9}To9wWI?X z;`%??k%`7ys9K-k+S**Q+}-xE>R!#1C0$(HIx~0t?&C+ISi};H9?euZA+O6anLPEL zU8h%?D0Cp0b`O{g52gdNJ)I0O!VBQ6T)y#g}#zd8RRI}>|=Vh4mux(;?+&dlO zsD;+M4<_r{(J6EBQDl?32W#&~Ld*Cq#pumWTeQ)T@;}C+{)3zX*rQnpluE!Kix6FK zPOPcbu8<6(0z9W+mR~^b4O1ffdPMW`s#JHU`PLQNI>ed|+OrJX$-CdmmgDy1zST-? zV~aYCKFgZN`lj=l#nJA5OLY00w)Ai0e~~g}8cS~wyc3YDxZ{Wku?<@dqybW9X?4tp zi(o~>Z$$QiL}kR zRuB~K{WN6k{wMTf->N|A4`K-%2!PQ5OQ;0(=9l3GH(+soGv`rf`1q~PL;b5!5`rdi zee$1`^8j8lL)f`cF9M06e4gbw3mgtwW&jpu5pSf69&sR&7U_h$l<6E)ca!=vo5_}I zIB!)F!%LB}wel4~GS2Wqf5{tCpyztBM+1v~*GOHY}(;L%zD{6(o#d@SE;O0ik=&fdDok2!JAGq_^~@9gecGJ?;Obn{%0u)n`UL@9XJ) zZ<)VgpKX6kTk7~Kd;BBz1zxs2SeD5-uP`l@U!&{7SdRO9YFb*6zxa* zefdWbP0QeNWWb8$Md@luS^D>^gXvU-kSb*{Qd42L6lZQ18}iAy(chV!$60`REsTH4xmt2VCfX+?kLW@b_V0q6wcXXgA> zZ+byODWDT5PUX`AM3{WI`V1~h7mjpReNU?(_p<}4oy_JfL(9_;Pn=PKj`}eMUprlt z%Tdo|6jB2HnjYTA-(Lhq#S0PH^xG^Ptd4UwHUX+j;pm%?V9xuM#^k7bosFdO!OAL% ztK)mY;={K7BY6G>*P_t-Z|m{FQscJx&PHqJSrtkfFc9tZy_V_X&^viUnvQ2))8Wvl zSH7hj8I=oV!YY(Qknx!TI3`EGBOwJa2CmiBO=GtPmQR4FAl{!u^aB+Ea3A1H+I=`E z>Qq79XbTpao`a2jl)`EnX}()JV?efnM~!f00tjxit>ks{MF_AZUIm#f56B_ zgsp7rm)XJntq?D;DEJrNBDRK=@^gbqYWyQRRN-GkbMzQ(WgwS5jY9>UTTwCEXvoS@ zq;1m((BCaAEk~Q|&t-C1+1LtJYUHx`Gv??$9RPz5mDH{N`;I!DAuxJSu1+TD^AEuw z^d_%O)XUeEbnm{h=3k>vtBwSz1=9!^f23DebJx#`b?(&)G-ul`G)$!sR7I~?rgnTs`(0}$LI&|;_HNb zgy37Y_>dd6JeaGCLzD+`DdnvaN9XIx3g&jpaqsK0tTYrn7R#G2=Z{?9MSNN8&9b^$ z0*1g^FHkTt%~R=1om7cAV2$>DCIh1bofAd1!Qy?E1Msms9QXFMnjtK$& zX@{wLc6|BOY0-jTzqe*HE$2XLwt|aGR$B7-*Oz-)4JPAA;CYB0Hs^r1S-uA{(ea?m z#L@5;=hQL2(?j)Ckws>8z`U?OyQZX;8D)mxT3Tr~Z|rsY{Ec$vuB}KI;8bzB~KYnPr$)>whpt8-Mu|uKsmrj}wLJO^xZK32FVA#VO#xV*25t z`Sr4JvP<{kdfD_dwDgC;aQu)_j?6096H?a^_a{rZ$I zQL5-Y6=Ye*Gt=u*j5NPZ!aOw!dk)Ms`{?%LOCMs(ULH`x#p)Z?x_eXK^ncV)Wa!7m z?2Ro!gi7auX5Dc~=Xu>#mRAtS=~O?>TK+Z49AFigFumLtTN1G5RlPcF@X-g8WD7OZ zw0jiD^U?yi#R4mQ+!r>Bgfw1fz@^#e^7jXVyIm!2o3?YYSB?3D!|~SGgWMs{%TY%F zBJP+YnvtVS#KFu;}KGfuJ$HP-rSCuUIQs6^vDqPvAEts5r7TEvWBu+Te0i= zWCR!EOq8}ju$2AyxpTUNbg^<73V&6d+ZC43c-z-=sB4|~(nrl$*nQ4JEqMKDoNVXU z^`mntxsAKS<--L^k_jNqJ{KQuNG0fOr>j7e>qh4+15I8>C_&G-sRh|&GRLU4WuI8Z zJwMxLIVha`JfRuCXH^nw;CmJrEzEj~E*}bXzymgp(0rD6P5XNKDpj<<$=Yx~;B)yR zu%4_6Qt0EW64-uz&bngeM35C+*H4XVB<3jAsXK4(IJNo=%EAZl@A)XW<2+f0t?0NH z#L#Ni{yAD{W~mFUcLeb4m8Kd}bGWv6z)UX~MJe^9f{jNJPp7=D}=d2RSG;8XabQRhBhm(bSPI(ZtB5N+%3 z>1Y-mMdUs9DA$@XGo+;EF{=WyEJEUF=fy5YX=mP+G6si8H>9MQM8ej)EwBQqXF+<= zG@lE$X|KDdE>kDO;d*LL9UCPIzQ$7Y*0E92GUu zNpZE+cL*m}_OATM^Rjc~H#mA(Id8TcM!$YyCJF=wuiE~!abE_Q65X8);O~c9z z4=a~ZQ_cSgo7Bb!to%-BsI-1d26)kY4auxKI#9+v8f-7g$ssZ>iE$uFCXwv)dA4G& zv)>YPJlk*|F2Nww-kaBACeLc4m;*QedEwOjD3( z$P94n1tUV}BF0yM;Md{uFFl}X5QU|^h1pH*9ZvwHk~=%!iQ@zup z8lC*BMz<}9%f|6c+=W511J}0EtFhr`g5^`Uq>x?T3R)TbNd}TAj>p4ZLqOSKNu9O= z>TrBDE^$Lzy}JUVkI)?6fI44in}t9L@YZ*?jkh{+L)cE$8~)#RI@ekGFy(VtU%^x# zqq&p9$kxI&2(mIx!ckS!$n<$?&BGS2rUfiQHX;qtf8tv;S{-dHHiB|89~Ebav8kTf z%H0<&$6pVz8Ip_PT%YV)OM!QyF|+n8(6`;@YQ)7Hm}Xd7^`9G6_?uZqpDs|8&T(3p z4pP@yL(~LJ8=f|CeYo{Y&e)&QZti_0!3f-+-2O(HY-aez0rNrXYL(agk^9zT$u`oV z9!F2rozX#hzzq~Dp$~vTFRv<;`@>AK2X~QAZ0LF_iqJX4PGyiGh^V;%?U0xux`-uPhMN~5({|Db}`OR(+|>p3X!l5Sdazu3C0?0jNh{`nZ#&yixn z<06zJ)R&9_hY#i_GrG+y0ggR5u|p%wh%Cn60Nl;sE$~+EuVgXDo|A+Nd#7O@pN;0$ z+(g+j`Cdht`|VdJhWmbCoTjUDJ@+j*u;Opa147k&^q9@;g+MQnfW495p8WT5a&^Go zAwY~rQ`wZ8!JNZx&VZzeU4D_nN0)Cv)x|A=A#M+VsST|KO>n&y8uQfi-Ba{T*xaNs ztL{xb<)naa@6E#dh{t1y@=i-FP$`K_ZlYeNr2asK{r)cfYSyK}*lK%s=W*y4c2iNw zcO=JtL|%ezGxcC8vW;wIs8rmWl*ILp)kb2c((Du#j!I8D)qsEg{Ikn_(UeWbm0G|M z`FGp#s35!v;F}Mk88AIft6K(P6 zOxO95k$6jS8|xd>UgzlA`MZ&SSS#90Otb5bm7#N0N8#>Zy*(m=NN2BJ6$o7}|nNrd@CGRy0}j&<%<_wLEz zui)d%=l1d4n@%KZmJ`d6=pvNTna-a^z&c7ihx1E{j?ijzK6ihqdh>Uhb4lZ#7wRmQ1!mWBa$;lxB)_te~Y8! z#0z%wl==hT=o$?nckx$~$v5!g+r520sUIEqoBt zOvCMwX{BmK0{L~v6eFhmp9t$#i(2lR471!|7z{R?)^g@Wgg&&)YUWcCuC4r z;?P*p{+}08*BqGRuh5`r0k*zWM`THFzQeAmlY%BHp_pai( zv*qOj&u{>C@SeVjxiVouB7iILXyk9hxkMW+Xd@jog(U6-vU``L<$xpHrhyc;RA2?Q1 z#Id^3o!x^zAKQQ?PUDemry#*HPB2=p&XM!Yf?&>oXc_1260_m^F(c6E_-sp3pJUCZ z<|(HgJq8L+E%3rZbh)vI4clmlYk>_-CL~bd@G?8H%a!)zW6o(ZD(#l)d6q4_+GfUP za4UR};n$eWHxm?kUkhN@mT*BrN9Uq*P5*?|&#xmU7RoK0qG@C1ukbXswxhaP?1h&0 zI*nr2@>%8$;4@8LNF+-=sWKhE0ih{}tEWic9q(h$k40wFT*vy~zyraeH;iYO3qMtN zBDY!!Qqc12VHes7tjd5L435~m+1ZSvz=P3umC zkEO&mOJjKQcpht~PbG;wvSoRUMoEt&2bZ|4k{>5+7A5vk%`_fMxteXimkKQ@wv_g} z(5dl}w_lsKITZ3T0ThVdP)NY~)q;xMtPp1c?fFqtmP6^*f=Ah%s=9K>P7c5FG? z7NEh6<+c4BIi)c<)+G~d5L`RVZSnobl7hxhRO!@7Y0V_?>O08Am4tJW9xl)`I^CY;LJP|Bdm;AZINraB$D64DT z?vTQ(sH;Eh^u_Nxr28Yyt@Q2hesAOCwtaO{#t%KNF}PxI8;y`0D{>5h2tpEVz^+|$ zwDLFM^X2ES?R8antJBlp=}=7>Q1nBPxe#G zBIgxz0tB_}iY3Ng+W0EAs6XxFeBsi7(31r&<{jK0nGG)IuTkoxE@fKFe_P03HLYwk zv`LD%O~eTZmH5xw)uE@yuy(-%lXLv*I7kSyb#fIE-x>v8{(foB?NF*z>u}1zJs1MV za)@Dhg!F?^PS#0=%fh!$DvP?8vhM1&1;spD zs9HTjx_!!MvXpLbx3FoI$bQ^FKPY?%3$-X-b0|_N?;Jc$9~!nv{G0TBjz2V^N54aT zXnvJ&(V}JcH^K*ROV+!L?X#R>pZN8)JpIR%RNVt=Dt*uPsd=+HRX!@H zKB}I_A7&omscf2rhf*s);_J=29vHhn>#sA+rrFlbrKfy4Nc3Z=l8Q!?USi}{^c;P> z7Vl`4dB-s$&v&gN@@s?2M^`svoh!vdP2jj+_6gVzq5`vsDco<{x?L<_T@sm~wDgIh z<;SP4q1m&l!}8+dn424yL#u83HeiP_e`i9qN*yZL9)FZ=rM-Onw$r6w!xw&daP`nR z>Nl|%p%_KioOr1Ny7cJT*>;~9SL5HokrMcok09RnXmboiSz?b{uHdI7QGJ^_K`{3( z7EDpe7K-HcF?*TT*R9m4u!x%c`I95Au|{GwUR+Bhz4{KScMj}0J-^8tsPQ+*+?t5e zp!0Ue`C{LPfQ=6L>Ei( zTbi!<^Pv#*jLRCd{ULd9PoE<3p8KjE3uAkoYO%9k!q?p&-gp0+TfMEaa5AJ1lqT5n z+=SaG#3ez$zP==2-7xvWanHSvlbhSv=&F}TBo@<%I&yJw0hNdELBuyQH8achNGO5; z9~$w!-$az<2@wTFo8fNG9Un+?){2okb+fIdrKRDQi8jpvyT3gNH{l^TnCieXZd1{x zXu`q8{J@1e`ns3%^i^;s5qls_ZGIr6N|#Ju5n+)l4DL>_cmjK^Zq&8{zSVZ6{Pl$H zaGM`2j{C&3Sap(4v*pyrDjofoN=dfYl!w*V% zfpU~Im7O~5-kahUv!~9N;W@8M%(V_zg8dBHPLJM>>Ws3_jR3;jCg%04v`J zur>!SS@4lMaO-zms{QoZ%na$_+^FulL1!yM6h^izV3iIx>m>B07cc=XC@ds5;)=A& z#(Vf=c5}1X_ z7`DX2gWdw4ItIEw5clX5OApY>)5KO5?#`2Kmmm7c3z|I#sFf8HXs)T#2lu0KyK{dw zA`OJy_*niCZZtJ^t}ze^O!@*Q_*jf|J{WY{+mRQGwzd#zE*M3fcK{kr-f8M zDw<9acnh^r9$yC|!RoFrg;k?em1vej8Xsy{nHDO<+H^4s9~?@#_`KQm}ix2*wipk`+?_QdM_@1=licEtlF@VYN9n*Uc3|5xGvd3^uZ z!vE?R|JNn{uS@*jDDnSo9QL!4ze)Y)klh1CURY>sWH{szB`Y`F^bqN-Jk7$)#zJx+ zFwD#>QadA{3HlrtpGehwkeHl717hwx}dic0SXDuDyx5X9}De*|TIO57i00)cRn zLHm-|saV(JMzJkqd;O{?AzlnBA^laaiaea+#|?{d8vW>jF*NH z8fu5QD_iPIo;YF0{b4hglR;bR(jgy+f}TGj_tOl!1;6XyA!$FDrBKd$P6~xBJC)KH zq4eWnVWY|o>{scMM8(#;FNo7sDAWUThkEY_eG|zDY1id&v2a3A5 zG;D8gYcLcsuO#C@F$V_+uesS^=>;GlAoS1-D3J<6lEwr>5fXcdk>|UL@In9Fn`d$O zgo+M^ZdOucq@gFi?P8e<`awnv(`sbcWNI_>yJDS~>sNj&0ywVhZVrnbiFkm{Ah9bn{4(TgTo-P*V)iBu3ZJ`|Z zu%99R@+UqU`MMXEz$`w@@8(RL7?A^)1e=SDEl#^OB@Zijk-V;Ta#B%R1PWKvuJ!m+ z^N;F*@p0Ey>IW1;L7|WD0twzG`7S8G20z99Pk4302{LyPv*Hay?HVfS6cN&QA?#{N zgI+Ig`VkvJI-y34+j`qcbTxW|6JHvB<3pmNxe>`weMWT0M#aRyI&a0nz&QUtnhH$i zyn@-DZaP|zv&!6vWjRapNcxyn!(a! zMNLby9(%kUP^fdP%(-Zfu>)Cw!Q03F{*ab4#BgcJYO=Z65@o}KV?c028vaf=mHs+P zB5Np70-8oSY}wfudQL{MWJ0fD67c)GC5CXyG3*uw=eKe*gYGDMca^D`*`pG`y{? z?M&Wauo_N5AuuW&`mLP}`2BX)zWHTK7zbn*GwjNEl{g`Zw~lE^&X>&WbTts0^K_On z*>MO^FhQ)a3M=H-3Mts_C|;^FY6<;zrX0~n@F0ailOTfB@H){Mul|)J0?)QwQ-Uf2 zyQrn7XhxU1s}af*@Ba=fA9tVAxPmMe11UV`qX$;0zi3&LpdKRLmOZs_`iujF|1VOd zRl-n41XV@Fk6*LnHVhrYx=EX0tsvoI1Px&$OA{;PU62cdQYN5k2EIH5c1*^_cU}Dn zMQr>ciNKTt_dS;H3eG!^i~?fC3kCTfCk7HlP85mA+LkT2Lf{e!=`meldKZ!<0bflsjZl43efzgJ>m9V{6R1uM7`mW7cFj~vXx*gd zjPLOPuQnqaZCp~j$sWstoHQbY%qs}Fj!RSu#rvnr!L-Do;XM~H>^agli2`Fw9~5JO zMQIhw$6@ff$LsfR*u%{l^~lqu9gc*)WfU*oJYEc={>O?0>uf_70<}2`r(HL^w!)UkCUlcekTOYR5=-QCt}^ zoe7^vyZU(Gg z{!)+`@rE8S{28>Yje%i;6`;J(E~D=xmFHs$f&mQ zX}bb<=>5*m?LjFUrx}HaSO&t5S%M9Zs?{)Wft>`N-`vaHc=>dm%|f)!LE<#NMeo76 zq@`bT(pqz@9~l^0Nil&!dI;X=t8Vj#BQKH+HG<=oX2I?O&T0FnTYh;&m%)wu`Pof} ze&COUxk4{*72E50ph}0Ft2Z&OXe|Pl9ge?$x{I`^i91u(qp~tKws{@o=KO`@sJ*?N znUT?8lrjjEbVTw#C@3f{Ese&Ffrh4TZEKc&<~@0F7EpIYwstiUzjt@S6K^XQLQL3t zq(~|0bSP-77|$1xRy;M~Zu&3Xe^nF{Ea4(7)#oKd(`~Mj6Ly9-_f~nUw$z-ld~S|ybL~1H9$a&-)=@U zIX7ow&4WeNUNZQ1C?%t-nD|!ovsi(v2jMz4hrB!QF|Jk4%1*r(Da% zA7L>tKSljmU?d`CHH>sP;+r>y`xN-K*%(#JpuU)Myn>o{-_p`_el`TGUv?5u=8(v0J=D5)8V&j&i1 z@2V8; zz0JxBBVP$Fk*6)?pu)p5d&VV}X;7f7DI7>p`vOr5W!RRoFG*vh{nFvLH3ee`MW`nj zr|i#5s$j)vEE+m_&Z=w14Mc>#Ar^rLoHp&Vi@TzH9UadY`9mSvfYiYx4E~qsqE%Ev z?s3Rm(h0jKz}VM+GW_A;p{u8lKMx55qt9;4QACId1PNxACOj0}aqV$~YScdfOwNue?a#Uh8ITP-8yVJ>`7{5X=;?v=l60Hs!N&lQ_F zbb$;-F7BbLX)6=~uVTJFC;P)rqZ~@mzGo+!NLouHv^=S{5Pxp3Z{z-1DxKF14(S-- z^i#!;rXPTZ5EQ(n(hpS^KTi_7o0t4Yb`xf1E{kk;b49=L8*6X8ZV1SC!o(T_aadTK zMWv-f78D}Tek-c7h1R z&8Svfe4(BR70%~)p+xxx@zI|*a?D%c+OnmRfpKN1N&%6eE8L$L=0}6FY_!~h4i7vW zo<6WMcA^UYew4t_R}H~HLXX|A-T(r#xu=u5rzgnTmu$HAo)-M%Cv_B7;dQ~ z-f@Mslboly;`wj5uC?*+h*;eDQTkO0Dncrr54>#rRjtt>uV#+v|16C@wWR}XZ`ed( zWGf@97D_bVuzO7+9YGON|IC~tG+g1Y>P>B|jduB6Zv;l#cXtkGQG*~%rJk__cbgohj$)aTioJYbkUBd-;X%+edQ|jGF5L1x5VW{C5 zbe4Of^s^L^>3c5hKG~Yul+Uh5bRp+De~>v|aM`WSz~U){Q8AQvf9fk;rj@6bZb3^w zDOi-P<)8&HFiPwa7v84OYPhTD-qW2=bv%5SsJR#}U%z7f(ZV2TbD3?6g&(2BOfmh~ zExQo1IY@gXR-o~FF!p}%+Qu2;9tlVRvz&YhTN$=_xdTp}W|7(t?vDpmvaGIcxjRPU z1xhE=e-;lFIVmhGbSJ?qG)*Da!0Y#o1Fho z8YqmNA}xAw@a|=e2oH|qp%5w8a1`ftou?5>rVRu#Ni2V%q>Q^Bs@4TM!AJCz6u{Ha zr6>qzGpShc4*i1qD0rgi3mdpxvd2o^Ks@4S*T_sDO&t&23{Im6baz&a`Ztb1{%=E? z@xhCkT|cq#{r30w-C4*)cd2UYR?skEeT8cqS5Y5~xKAO3p^wZ=fS@!5ENKf|433l$ zjq%umHx0OyT`CuRoe-!&q?Tnh+3hh6halWFvEuxr_@9idaK zaXa61&yi0-8mcFY%h>NAjSzqjH)=++`T)!{BT#7G%16P)U6Jw{%iT8OGcA~fbdyIi zw-lK#)do7mqezN=e{9RGzcv28tXdYpS(IbtA<2-4i5FSNXeFYKxx;U2%9u8Et09(W zZPi%LirjU?4>xL~wn7IASAkm57(qt5PxEXLoBg6p@hu8IwwX67GspgS`0|bDg<-`o zol8vv4d$5m-cQ_ylb+Y3;N@y>!+)HH6v+Fn*E+sVy1AGBNUqRMsL>`I;PfUbP;2CM z+rYYa|D%Yb{=7w(2whfd$z(@P;aGb0xMv_Vi8*H-ecwgd8{ER&N#oV>z3bGmoM0+Z zw_K;2%h$t!Hr7b)#&iEqWD`#-)G(7k-eDD{z&8s@`?9w9UrkdrYs`#WrS zC55JUiS$5-iuRQ-13f~Wmij!vqpvz!!qmlQL+6f>#h6`kEr?v~xVGBm*Lrgyv?zDo z<@??45Re;P)0Xfuwu7e9=Bp*GqU-Poh_S4cw-;4H}>AMwa(S=uJ2gI3;$Aj{Fc-L7Dqh8H;ph zzwD10p@S^V_EUfXbPcL->Ml%I=%?=xt^=iv7Iz)X;NalA430ct#yO4tzlYSh1&qZP z;#Xt7ew&&CWk|}!-sNV824W4z0c$rlKh`;PG4$#TdPAT#2UU~aEc-k~-W#w%iZ*sh zeMgaX7cpPs;TFDhCrwnEAR-}&Vvux2q)#074grlMjJn`DdE`{;`_QG=xrD~I9IyXf z=gzKI>2*<6rzZ`+Jq~WrmeUz|Q=Ih-6ye8~@zN4u<-DbCOL--JuM&ANib5q6nNM`= zqx6x~(}fZy4X^R58a!A{+}GJ?7|L5FMQ}fVMHP;5jEhj?%Y}Gz zmy$DY`_?Fve)Clux@Q1;j1h!|bYC>diX{xm&81ZL_2CrxsU{RclY4# z?(XhEg1fuBy95Xj+%>p+aCZ&v_73;?opb8>3*I_ach&U;rl+T;r)BrvYpor;Cz$m` z?oMo?BG-#g)>;3uT#Q{SlV*zUY&M;%zoGfL+8Mgmb#HGkoM#pYGX5MsInz;7 zOUdN%U_IGu`R{t8VBg=nKX-uzc<&u@`Pl7FjQB9LN_dPSSI0M~?E(}8iaYK46=8>h z+s%(aPbCf2R9iShfg=RndM#4M|Uz(1Wsi(;Sge!?{uUX zMgCkM|1w!(1NI5hQXWZ3rauuh9e4)dbq_hbvY_coH+rHnw)!H_pPXjgj^VAX68iS2;Xw>Z4lY!3dIvkJ}{G+Jb5J%J;uf* z5&u&{Nn_@Z_vyjPozizBnQ-AS7zPL~O-IPsPx_Dj7=&_ugtCB=&{lssN*EHVem_q5 zL5D-$cz!NOBxK;-wvXojp8YUe#l=dW@a${%^Ud>b)5Rotmuw)=WQ}33?}p#(RJ|=C z@%D0bYhUo7;h-&F7x}Q@y#&X?5KwIxGUOQB?~Khd-rCD5D|5(|qw)D{xUZqr$Pn|p zKbs!D(85-_prCAiH>3o<6$+tzy4h-OUI^mg|W3N>1i`q0LO;NOq6 zuJt?`M?-WJ%xj6|E8t1nc9l7LfxH6BP1UR-2B(%uaDVx*_SKp<;cXb0S9%LwQWA__ z@4m>LLpb0dJVGiM$Str!6&DuvN`7S9wI$@UVbCg(rN=4GJ?~aA#h2(3f|R^+An7@I zbVlQmCiJl8=Y{Idetj4s7VXKYlY1Ifw9)1LFT1J+b{3@vbMLJ%`Rlj%@Xu_IEME-d z%zQ503O41Iim?UzDlZ-b3{4nkavtzd!5VF%<1%%WwsZJ`tBQL<;ITjZO!KZHQ2q98 z>7!Bi(p|KDou8oIS&##Ip^(HEd*>3o7B=cIn&_I6AqSio^{r4C>XOP(qX2xr`;+Hy zvo^T$6$JeYOP}f40)jmh)u!ppKC1teML-=a3pI&?$%MrR6asR@xooPp(CHPwMeoMl zZ3Gkkr<7Q9NeBg1B~da9l^vaDml};X(P^VrIgzy(XEGbUXG(P90y)r_L?U^G*lkG) zBm#cruG{R>nzb7~1c>+Z=<=WMk*1J)+6VT2X9!5@A>jL5(9odNq=;~0&0?aeX!)Gq z;ikd-4KV2G7?*FlsTVZ;3}O?i}BcN;5Nn>h>Zhh3#`MgBO%t;R{*3; za;&_tTtCVBexS(blNCVZ;mVc({4|At`5TZH(N9(!)i^m^++^QOilGZi zs4=i;MnW@DR7f>T>LYSv2>dD_TzCC>$4G{XhcI4Qx z7;K2|RsJ9sHM;)#=9netM{)`r3hz;U+07SkXsz%C3&XKlwP3gNXwZfN2n#JVldz9F zD1ex>34cWg?kI33)B-9^M?(ebE7rdzUXMY*Tbblq%@zAQ_67&kcX#Xjc37j3({T|} z(gn+QLJ=WysSmOcY>taV#Kgcrph-j@C6GNaP+fAVx{UiP){5~Lg|hy9#6wnIpLh50 zFvylEH#Q<7f;K)OAz^xI%D~zv+VsiMh=+%ViIdavWkN|6O;=Hu!Y7Xo_jTap_!w5D z*QLCrW$BJDx}8@KtUfL;I0Nuglox~D@-B`nG&<>>K3zMDhy?BIhjePvc0|ya?-eR$B>N;vi;fIygkhLiRB)7l-)pC~VOwCJEq^rPqfY!BIJJRYo{p=S%UjVnZDsueZ7 z%g0x!poPJakpzH4@}5>cV7wvs3Cr&1SwTl$C!j_~I$QT`g72*jl?_vRVN(qDw2`m$ zT;;O=qs<(?m-6R7)COC|Wonhl88(-C7%;nz_$TwQ-Ft_{#Ci-z+xTxyD)m{Fuim+~ zdQVI9G#8eYBc&A!Y>bSA>-YU^G+^Kgjsv(Z>LLa0d%uq^roD@HcjT>dq-DjfkQ$6wE+3>`AZqM^O^0S!(q`Wnjjamztp4)o*M@mVcwvZGe)iL!%i1 zk3;PG%!6mxY;m6vVOP{O6>fgi8w&P1zAb>$kOc?7RM%w3iT9V6oBt2|Q8&*(+3q<3 zGuG7#NTdniz#HQKsuWJ_dE<^-SXfBKVYlmQnd*GGT^3p!{d5%(mkuOL*OGgB7k+c& zL%1h&KgbJt7KLDV4kf>A0viyA@`huic?5b&-KOKgG>4*Q-VGpVx!o?Bd9`jp6iB$X z#JnMHKoEfyNSY4_&NC^hc7zLk%a!H+&f)SmlO^20A;_K6pZAatGJ|!D2NzDEuT9A2 z+DMm_vJT=6mWFCPA=&$CliV4u>0-bfO8A57B(Hs`8c|jr^rrk^D~OcDF^jAh($h~S zkPo>9+7n)cUto+@hscO$EKjn}6OQc_aJV2GsB)kLSQ;A|R&fz^0*CcK=DmBdf`VML z#Hf!Bb!YlL^tyG|f;k}}?l#eixy~#1+qT%kABcDf4A1Xqk!A|c^8y2J%><>p)JPCf zT5LMRM7wJJ!R59p+b)L(%}FIJR?5Av3-F_UvOGd_%8HhZ16l0LGjzF42H+916SqxY z+t0izQGaeLOKc#!+zT8`MbLMcul5qt99IwEUGbRA^Pbn~grEsPw(Zi|#+i(mZhI(v zc1^#-s zXd*)DvIqzW^%tXkafnQURhM9f2mB{>y5zBlOmtJ`isNQ+1PX+dSP;f&^N=B8wZZ{(Y8hv_Xp&6zfW!f0ReM8{Ij;`EC}%Ttse>f z47PIF+;0T<<3Oy8zFimdCEWoX zZQz9D4KP=CbR_EUhs2<+loyZF*M$#^mVKO04*4Z|l2qytms z%J#gJXa@9$>=u}w%?(H(ofl0~#*o49F9aWKOU?x`X0PFZj8tmIU6YB^$P?18w z@0I_LrqTp4^8w_6nZV#P*LIgj65J9jq!3QXKf!u_Ur>Cb1 zg%I)O4wH!RD3#z0x2(bFiOSAb&NZ6W&0y@kFlaBhvq7DyQ~t~!UhJqshW7JYs^uDrV$ z^e#AFZte#q59Ya%Y2Zb>|MJ}d$a(wZjL+x2(ipW^Sl12!X$2B$;*@>* zP}M;3wa6B?-jLg2&(IjciS0gN-&|V$=%}f7RarYJ{MpF;ClYf>rF>76>#>Rg5fL=c z(Oddf%Ig*_A#H3BZ)&cGf|B>(`j@2%bv%y0xkze1xbcPp;)nd_fs@m! zr#d;gh{+OL@2d>ewV*GUFas{!BmDY@yjGj~m3jkNhU2|H^Td6P)L)9QaftGh?&65?1BkLdeAV}3!nv4{gRDvCk_2{pt8 zN|8_%Vn_Tz^4avB5Ss0ca54lBFYv=;GmM{!zn7@}Ex-pi#O*f^>4<9}HxFvNI+FzlTLY%FH zn)UbgSm0I7T23n!t+?Riq%|d$4(A%}9s^#tMIz|^GUG)oNskDrCAd0R$i=MH9l+tt zFGzh$HyCS);tSi&5BPNJ?h((+bNQvYbY(w^WQ_WQTlYsfGSsejeWFITD7c|l>B=qg#$E${hy?SZo#4)Y00-j>b$1j>5!ssm#CI=nOorPn zKOa^jzSj@i4YJZ;A4@HK={@!WNZXfycAbXA9sUj1ZD&fnrQ<7LtE z`ISAY3bx}B*or^3p9cKj-V&legkRM_c@>ie^Lr3+sy93@TUUtK=5KF#h0_0nK&9>%RVDq=_F33iD zKMSD>!hpR>KTKMDp&ul`AhhQH@?-Ip&$%g2;vTFQo^aHnh3y&$T(- zf{=P70`yuK9^kYW0HF&n3?-0zed`j80XOLXDZh8i0?Rd zUNCd=J#vadqgnLBfyWR!qPKyBx1P8c`kxRg9>SJw%d1EF!d#Oc7oPBugw9H36w3m% ztE&9QM>>`Hysoh#t)YGlnMq>gI1qIxJdI+lVIRzIWVhDEAc-b7%v%+9^vCaAp-{S9 z&L>sf3spxqeG#=+l}2D~@LmT(w|gYU*h7m5DDGcB5hHP~Ko>B&t6b?vIb5ZGDr45U z+b?0kP*p}7Dy2gWMhdy1L>f}KLp`hOMH(DbjBuSRSIrlsHRM2D6x0v1cH5~pGv3wo z63MX$16C_~O=SW{)-0L#^7qKV2nyvpnk`XS4=t!46tk=83OdakhWy(@5v2P}cAh$8 z<{^$c=Kz|QhgW@^J2udV{J@tV_UdP$Y~^);KnH@R8FV?Cr7Y9J5RhfX(u+pVfv z8U9Jck=36MP6X~HtYvvIHygWTYv68d}1K6-TtvOM8NL-yp8{~?N+fi(q%a8awL6UI%YTB3g6R(%y*Jt#h2~wOYw7JO)6S)EeD6*zVULzvw!!J6Vs9t>uzyk-)vRp z80BJz!T9NK2+s1DKm_9_xXAIM1P^+=!9{W}iNA9{e2yt7;B<^uAh(Cy8G6v)I-dS! zxZI<6-uJb6-Qub@b21EJvZdr5bw8vs{h^$4$$Mm|IObY^kX`@W(oS1#v%Tk|ug}k* zLiPCJyC1su#yKXvH3G8Bs?$8TLLk22{ckslPLDgA_kA4RJ!B`13>Lprm*EZmg&?l_Jzf-B(A>7aq$m_A~ZbrGS zxwX#3zUN5g14t&$RhP0)#2gd4a~-$`=mWrcqIkcl*&6ObSnsJigaGPM>wsAl2SN7c zsH`$vw@Nl9azlI8j}_pJEBTKxK?(Q?TSp2XkkdHho8zlyHOT3dEu+fdUvn&pZL|W| za;_>IUZbxfu;BpaAF8-fYcQuhT6}nEV*3^cY$cZ1_yB-OTt{(M_Ase&ax@HIIu!mY zC!lo@h!3cGs_6Rcrs^FQd6StkWUzk|w_+<|%wmk5ETt~GS=;rNku zpZWYjZ{3b{7&^b*;h&>}rDApk5#P}lbFT`Ra?_POc6s*c*8; z1-SM3x#yE9fjXpMNTHeh%UvaoaM43Mj=~eVM3oey%r(r+#tPMvd-Ox_S8!-jBH-Iz zv`lO3`9D%*qE%LzYidXv9m95#gZQFcsO<0DGva(gQ+Oab;-ncaqx-D0(3)h7Tc?|C zV8R_cT28P5cdsBcL0!9p`6z%+Bs2X^Aq}OalW5jHyRM#&{tiL7=g&y0bPcB(JxbKr1WDyrGLO{i+2eDX0W}FIoe-b68AXzCqImz(vPJ_Jzf)KI33g9nP zjrnHAg6?AdIum()FIsMX>4d)s#3WUIL5{V)N3TuntE9++J(MpSM)FySmF!`tNm`pE zYhZ`lVY7G|?WqZ9&cj0lgf~zn4jj0bc8fSEDB2wB7u5iVRv>a$2~@Ah+d?2*v`lzu z9Bia80b|=&TUFunJiBgsCwmrtuM3**jMMK3MMKLSaAHJtDWcZgZ$N>F6zzE)Xw863 zk+!Pj_cG9<{9$Mr0rfFxVz71c%$aX6 zfM2oRJ0x_HetgcDJPBv{e_Qq+boM)xN8%mC!3!fbG%_ao?!*6|AHO{S{TGiu?o$2V z|GoS8B>@70_|QoIzoq}TtNwrKlR?>N(<)RT1Vw_t;pa8RGtI`-u@UCBs8Q4QQ`~X{ zhQ#RiGz~v^9`tpNw+dN^hakG57_gcY=9(t$sL-GeZLrx2=+hv?^Lu!-M#j)Td!(eL zQJR>TC@L$XOyk4H`$_;%H!_Q9bl{_FLwjCa^h|TGqd8{*kmKZ%`&F&EArq;Q9^M!z zi7wfVQ6V47?U&PA9l}Otrdk?>DcAktBIAeTSQEEcNPk3j&-*HAS=oL+EaX z`MBL?FZEOs$#Z<}p0S7UPkHG1cwC359CT)g9?t8_w5{NA$${wmbz-D*R!V{18%t^D zjZ4w(5`5EK>hG(koza-LrOOFTG>iWgLDn|E^6UK`U&+#@95 zk1R)w@_M?JFfu9td=<@eKuhU391mi5@rmB)-f3#{fH}Q8U9`B)1;PR0YCgWtl^m;~ z>{#DoXcR!Kco(eTizMIRL2n`|n$s_4klcx~u1G!9C?ZreD4MZK@+9BYU4t;{(WPPm_KDz@p_b`XtPNSu!NMF}$l{ z-{4@=)Gif7MoTw#$I|NJs!fJST~sa@Bup5$JQN!z;QwJDxtIA(uuauvBacmB2ADcTGq*ZCCoXeMo=T9@(%)u@*DYTQMVNyWYDz+*5=RP=hlZ;bf#fX zKFO13mrL=ZzlZxe8-|#?wx$b&E~2YU22zvBwSN$F*`JF`Lmq^NhdLHw{?7Zx?RON{$xNdjop`cy zP5XZ9?u1XdO=#jSmB7WM?YgJ6w@dU3c{ z%&8nLwpj*h()7=v#}%ur!7e41P)9I$%(_OeV1=IbSM_M%m) z?vwCRW!w5TD`o%8)oJTBK02OcowI0So#Sy5G5xS4=eb)2Mp*S0;Q}!68&@dV)gnIW zAh6xEjQ;fCrA|s|7s0Pt^N8lAE%v@I?r3><0S>ur7QaTs=*kScEeo_&e*UANki>TNKwq0jxigTayDj>7Olu0ZJ5HmNU z|GR8sWt9-{30^aYkkh7l7tIR$iIZ!;Tf7?iHQUGg_U_Bjd{Y>FW|pO^>jEGv-r`jA zZINjt=k?RjGN5dCQ7>~gzg1FICI72w3+A^+ZWf=9ZtRCILfJzAkJk9@^~HNrk3ATH zVPU#R%H-woW{&kOEW6870;8S&JvPS=E+M0@`I6`HFuH=z7YV8FNSJ!aS0_6F@hbZi z4!K+jOXG;Md(!v;f%vVkx62IQi>D;Di$iRdqDQRbBA?r#{4@T`=wEmPUHrE_DS6I0ngYGkCQ7QtP zlV%ccsM(MRbo$|HqXBT2D~CWxc0oi!1~hWO5|aT3Q9d4v>841v*9u)6^m)yfe_g{Q z2_cp~ii9cSoa02-1T04(aC&c^Aq^)kui_6TQ4+@y1!P4e-TTa zt%51TYGHUH!K~1#JEbd&Gojj{>ar4RmgUFpQ~Pw@gQa zNQ9}F^F=h&EyCLD%*-}+Dc}klL@WnFjX7jMF7DXq=;k;j5J99p!7MZ{L99GFod5Ry z#rE7qR~-83WCsF)Cm=5ieH7d^NvK8vYoMs7cgDVz=XJsJ6$~bP($h5&uvbJtCkkx) zuHpFR#M?^KEMHA`@fKnXS{Ag{n}!DJge1S)K~AYj34) zpdWD=43mtuOA9~8Y*R$2o(Jm)g<&eQd-&8&AM}zv0)<&Rw&nI!oNhNe6%02Ct$e1Y zqppUfqu~boiaWQs;5VhQ`Ceu8IzE1x)pE1nNWq_w#PVuy?CNLtU;r8{0;ZqIq|H+(#3el-HMTi2Kluf58j=t! zpu|@%5!M8Oqy(O~KCj)pku^}MLX(C3=Z$wqh?uWG5w|SOJ3V6u@=?W~`4XtL~`yA_+EY{x!UARNv8C1T~eg4U2#0oS$Q1Fbkfnb0=vh)`rU(@ zNmEbGhd>B>)8T`M3zf{!3RE<)P;=&?<@VMJHN&&MUSXxUZa_fDBV?Co30*xEcttDna zMcw5}zfZ=gpUsvzu&ZKoUfT3p4eDPCY_S`gN2vDVac)NCJHS^$!@ATbNEh$=mMatj zQ*oL-?a!vnJXr`5VQOWeYST~8Zn(adn+Cv`-q=0~?F&ij@2b(?;m$A%JviGDlYxVL z+<_SCOLqUj&SX)-=>r}p;QhHY44!43K6Kj5=b7@<_D0ow*0<*r?J;MY$N*^VzFa*X zm`!2OD!aMju3JIS1|UrRh&2kXhSHb$wL zc_5rio7}aRLSKXox&lGPw+N-pJfi0fd%R#|uMrb+CT`w+sU#+pIN|0BklCa$i0? z{KZ8QE#)tMtfTIML3>2?=Hp?7(Na|8-8R2Xt!q-M>4QV!Fv({kmN;;?c~d~f#*!~u z-eQt!Hg_t%8ZoA1170~jtEp+>&zW{!1({x~RGz@9Imk4-<+x-z+wCTsoP@3^&z{xe zRgKtnw%Q+s{bDoz9RhDG;r{(eHy8@lT2&euCnhI`gz8TW1;_wNih^RRC#@cEYyf>u zjs0TOeX3L%ygVwfOf|omjV#gZSr5~&S_OV57`#|sNBA5DIM9dH^p58V0)<5^Z&iK~ z^RQ)JrZvC9=Ey`n!D^A?r;bT#>Hg8C3tStx>qY9SD|3cL#WSWiTc0BayY(V#tj@1r zJ=v7IeYv&v$mm8SxOHf@&i()u2i!Me#p~gTjR=zK>R69GXV2#XzIMcfzSU@*?`3eAX0_I z$q7i&fe)5dX>FK2RqHSN5lZ|X7HQ>Um>^UKC9HPp$P=&yCaVL-`>@@KrFUdAKY^Wd z@vcC8;;Gy-L`Im%;mTJU&X61Gx^{aqM=$kMn-#Pc6*U0ort!4tu?4!u@t&@`bhS~@uPuJ&|t#M+{y~}u%)(khHaG^COE+XahedmUt0ffrON290|4vm3mKpD zVeTh;g=+O&@JgWnO7nR>QN3jy>yzZXJO0{t2cH_A`*Nb&n(A+r>R-`aUK6~=m@JUt z{Jimb7#jJJ13{`IKS<&IvWewJ?2e)J0;=*IRo7N15_v4#4z>vOIG#k$F7{0hrWKy( z)EZzd=kK2z+MglP($depzO0!0+<>jqf#TwK^U#&AQTIf(LHb!xt@2$_tvqdm*&)95 zIGN@3^?z(tEQ*=PZWnu!<;|+vK(kJNSG1c50>uHf%&^-@F=JrJ5pDNPzgxVLA7Hx( z6_yVF%<)mtm#XA+-rvW$m07$keRg1zJHS#cn7f6om+iyMxbO0o=6X_#!I>2C?^rgI z>K+7JLNLE2u>_&Ccg54)O|h{Y%2-`*(tH1_JoT^g)W6D8|0+-Yt336u^3=b|Q~y!B z`ada^rGf)_``=ms|LS}Jj^BTU$=$pgn-YJiG#)ZPij^YB~-J9VtNj-iin${Qab$z6^x0SN_F`!%DC`+ z?H<~KR!1@h#syNLl;~mcCkf0`PWtV3S|;8}!h{|#CLUgznFM6jJLXyk66Qwv8rTt% zM&mdDfc)-zp)9e8&u?*xSJF-zPhDW^f$Z<^HwM5@08iJ%)m2?oRMhxgp-DzYX6X7F z-~yVO{xCK%k+8A(bwfo#5!>A@NJ&SR93PJ~G%~`x!qg&#;uo2hmzO3^HGu9X`tB*y zC1>E^A+F3kOl;q8+3gC#lM+tV2mfAep%L^=N0)M0O<4+1*nn=ljw6Evcn(E(_jHGR zH}TgwtHcFa`;pf)o$k$vtTqYLDqMx0W3oeoTUVmQ`ZK*lqoa|Ij*j9kE{)gM*P$&g zU#DyH^NC6UomT+6rcq}eXKZ|aHx63B$mAywH9|p|lHcY4+LKLsKAcA9cI%pP0=SNm zZ6i59hypJ9@>1F))IWWSmBIqn8h*;C`w|)g(O7YV$v7-bU_Bhf+X(;$fKVsEXnKi_ zXv|W0TY4ZD$M!fSE{w7a=k+(oyVLly6&m&T-{gb540tOCJg;qz_|N!<9M6eZP8fHH zgNg-TM5Ne&0P7#csuBet3@IslNHj!AlQP;yG&DL~JuE9HGkCoaD-CxyEbJ2!d83;c z7hTIV?JO8fhnGyrlAcG)%%w)fxA z+|rUJ5Qm>@eZVsVTo>OzjvoQOfi|HJ1&HuxodhxM-czT1V6-6-dZr zC+b$6ZF4KMtrN~en^Io9DHzR7r^Qdyj^WYDcy?%BT78fD1yha+)*cnoQ#!GeB?l%>>w`bby zdXc{_F6`#ktgNDiG}>;Jf* zTqC>S0hO0eciAc4EcqXLqF%<1ttu1(NG(yiWvmnm&@n!{9f_C84JQ6Xi~+z9v3f1` z%^4~)F8Q9UlJx4ef3kJzL}9gwTvDYpFSS(vg|+;;1AVyirj(Sz zh^+|Z(dM?SeDS4ObjvAonsGCP1~{{-fMly#6h$s6$l+ZPgT>NU0mSzC{izlf7S)$b z^5~-6$@F@3QBhGgsxs@WK-aTktN>D11b*t!&)TcKKKn(?(@T7Y%}d&Pgf8DS$>v#T z!~Zxb@ALW82;p(q3EZ;XsqfDxqYZv?E|1kpY|1Nw_ZxqS87?w=73z1V)5xOI`Cc^p z?Tr)&l`08xE;{U3SorLQO#7HNs`%)NWX-PLGm_fa$ccNXmvTYcA^SXDTTqigvk+8* z6+nOlBm)V1VG2kF=Y0i6%e9-Qk=Vk_V^WR^bI+&$nCb!EEp1}EY8Um6$B2Z>=|kDF zFM%xWVo@In1UNC_!Zz;86p(Sh)Ek-9KObeJ8(VOYkBSE$BU@uL2q|4{>&34bO=!>| z%mFzUNW{ql2oZ4#$T)F+dY;}W`W%y&r{%}zd3_UdgtWVI1=2)QZ(`xSm-RIsGT{I6 zNmRy>9R;aTty0%IDpPpgD7zj32pk20F4*63Ry6z@W}oPXI(ZycBs2T#e%dS4X5AYUI!jV_gv96z_Z=~Q^0Jd&{p zDcM&-`=#Z-ZZ{)e&Q7V8t=g(dEO&ZcXZ6N!P#y;Q3TGhxp) zcbUU<*XoZX(%3P8j(>6?Xb%b>fSLl|(LWr^8iCA#M_= z|A>*L=2DK2&l0yE3(e=UAxd!w>e7ExGW-P)x3WL_&6nWE>`{LEwPV|d^t42nK_8=n z{pozayoZ#!Vd$sJTaqRLJ%=DfK>gzJ6Qk4d?|@HU&Cq}xi(E7L3sBU4C)9~D?)W=E zu=(!C9iaCO1}1>vFdR_m!-gDp`aA?gr&rSjpljJ)HY>0rW!|uC{Znmj&+z$9jz@}Z zJGCo1bWqMrt2!7!k##xo33ooj=`d(BHNV=9C!&DTqBo)u`Ynqy@GnJ`^fG4;ZJJ&l zNmHB$qi|s5mR=iOU{)VVN7w3rTs@2|FJ)5fkp29S zl~GvwgT!R%EGYO(BTmxx`ioE+#sR|UM%_{N1esUpjNm*Jp?opkeI0Oz>=2R0)rb#$ zkQ7FE4ML+U-hiO})9q<3T1wB)S=XOACxo)F7Xly@QLQR>HncyjTjA8@LAPj}F#|$? zP&sHUMC_l|iG3hO&Uu*Pm6Fy^F68qVAR9Wzl{t;V{PW!De(%d7g(}>q*Le&RtxPgR z+Beu+ZR^#IguHuf6Z_}viR(|z^}}A){cDam5SoI@H#}|E+Y%Rv_dH`@x>&NR)G!3E zC9z&>R+-@V*)EiW!Q^Vk(;W6&C@^Z#`!)G3t_-^qzOi$iIEYI z-?*ZBA%B6{$W6V2|92n%dCP(z2|m@N=k!VOO8r64I|bZUYKf_HZJLj7+~# zR+B{lFV0X7{^gy+#J>Qq+7)b&6{ehp#fqhQK>Y{@5nzrSSx~xsye}{B`hwl{n&A5h z|xo^Aqa_g3o1=1gX zplklald_zinVIoNtxBQO!OD?LC_w}I=MzL#ZePfI7qQo({nJJF4{@qiFn^|>aUK?K z%8+Nnd)1z*k24_QbU9Zk0XAF;|Ng63(cOYWypB5AXWJJZ7iuZPvjZ+brth6XH#t3R zD3h0-kU(6f=5crT#p_c*bo3W6RrTF&o>$fK(J#xS;^@!r0zX{)gx%IC}d zX;!rixXts)4pX-a<&Yd#Q1NtM(S!ZiPm#-U>Z7E|LHPZ|l9A^r_`5;Ckh`RwuZRZ> zA-7p?S3^5++SU$A^z3JJN}C0mV?HKo8vm5&Q;@LGvebGCUVUz+4xrnIx|Q#_8dc*u z@I;e`ILDCf|_eVyt%pYw`Q}x`@0HQcUEB$Kzc{EGD+<9sl6;9Yk+kJ_z4I= zv1fJdTt{*@xv(N$^DwTlzjcyFFX%j33yFK~?=oL*R(9(1JT%4#-=o4^fDvQCx6jdZ z=6ibXHY3lKh=y)4;!e|aeS9aXk4no(9>cCzXZE{qd+z1EA=iCJK*E4pe1mrx61l-E zP4zX3G_PyF=HWPpKTEvgd-9nJ6`h1J;?C9Z{fsd+ij6+g|8_XtG=*93=pOC_;#2EMCbh= z@z#6<9>vJY`&Jt&OQK6j<#22e$rb#jK(r(TG}0J>P@dh5*dNi<&%b=@3N=mUU#7kr z*|DpvZ_;{5&tl{_Te%Bm4}*ymH75i!Fz6L@m&bxaHIii6@<|)^+$kNEZ1lvhQ^F#*=HzJDHLWQy!Ey5Ci?sb z(7pNfr`PcI#8k7eo6;H&q#fMQk^20e`pV$>dGiA78}~zJZ`CkvnoMsy_%q~zjSP9gV0 zgbRhwGTS78l>1lMHECMY8 z`Z?xkjuI~HsnApG8?2~4>M>|s@W$58qZ?CXLpFa+ud&QC5_%kbG+84}_WV);$* zo7{s~@)7=9-jAQ30DwHS@bWMj@}Z5eEfyXbb#j;sQ|J?ZF>R~j` zZm+u?u(l~BKZNzS%GPOBbQ+8q&U=6foKJMN>F`z=iAWcK&LIF57Ya!ND#0K%kr|1x zkL9VExSs{y9AeE^9PTNt%yvy|FZd3+$s;AdJ>S@lD3VeTp(5Yz0s3UV^!Ihx!XhQ- zR33|VjV#zzhW5@)v;HYU`Hb23J(gChIWSoM8vxFz;lBh5VgC^*^z;7bS&J`$trd&D zs0p<_MQ9ovFyVu))n9>qDIVE%SGu^KiuFghj^f_m#6V5yg`QNyJ_tPoRO+%9+rP23 z222Xr-?~6$W&xPAtl;efE<<&ih*(N}dn)Ne%g}Q~p}tX_uef^N!d3QhCt~8W<#KO* zlh=uLarZDPXuyr-U6E+mU^^uGBIeSl$G0fun$iahKNd83Jy<;jlp!B`4}z3BMCzRU zKV$eMNpwy%kmF7iD^XNXw3QW#(I=KRkT)Ba|eg5+QP#dFo)WEd*zl$&*$3 zfoWm-s3(T2<7X0Us%t_@78;a%LBA6Kif=``?oeU+dj# z%PkjcOh(%KzegC6N1t9xB7wu^)gpjeQ($3RyL9zaXr$WFYZ6yYhPs0RtzmvF3Gqxr z!vR_CEgOwwQs7pVvO56!H)!^iS#Ro2;_8pv+PYk}^LU!WE3r@dKG&JY8Y4(vJ`yZ6 z1u*yxL-?iCIy>wY-0kye(vxu;qC+H=yI!DwubBoMBPVA%bpzkLY6*E^s$Wb$w^l>1 znSzm2h{=o&UypdZ1eHnw?2a7LBjfWgId%IvXb9q}Zc9LH5gXsHql4FLH@~-6IE~3< z_#O*WtU^8vriq8}SNAtNukQF-Squz6R8iyBBJmC3o=~m+?)>vG zXqFY=j-C9fPZmZj6vf{*MK+5TIR5;~SUUVkI}?(@VFU;c*+ugx=NlUDQdr@@Cnq=! zqfqyampZS`Mh`1yW#PU~w7ypn22{b77Asq=c(QW+gmhG`C?A;4uneGkLD+suW5maY z6O6m=pyjc8>>xp9e(8mT<{Nb=ckdM%vx6sIK!0(KR5_dssT;Lt!Aj zi5r6!+emwu_25nQfSUbFM{0;6Il07m&rZO`Hn)&r6u=k_baO zqu96(;}AnP1%A+W(I?fMW+gv;n9$ocb`WR`!a?0*|J=k)xZQwUCPk?lt}~fs1a)Z5 zTcIRQPvex>Z*tduYVPryH5e#}p#4ul$$0c{9($MJNrq+}{V!c0N0%7SH4{_QkE(=S ziU2uY$Cp${366tm^gEWFTX&>C5(IK{8PFP;LfW}{qz$;Bq)#zGw;QJN_w+6JTM+8f zv95$NNL72=`0X~xLMc+KhG*@Paf3qn-+=40nV4WnF-d}{MT1kqL5rMpA9FG$qRigk zzJDfo`M6}kU!EQv+h#nqh=PWuZe^~N-?C4#x^^Y-6EYFM03)GiximnFl7UQb6$L-N ztW_*1)r!70=^NFS;*y1i`A<ft00}t<^O-ekpbAsy$F31PTPfw*BrM1hdW=9=z>&&XH zT6FXn=o}IR0zWP9=buH!g=!w**DtgTt_V!vt!G+h7F^S1JR*;;Xc*ieOuq`PM$M(@ zYfHJfj!vkL@ckqRJ~hsxgthPIpf)7&7ItPvyYD}`55IHnn(jDul1*p-*Z69jlM%;C zOT)m!N-MQX4^XlZmA$hfIt9k{s_>G%)vCPD^54V^g|9sLEX;WeB1-Fq?er)p)vu6? zfD$@b0KdCre#iO@pLu4+;P^^}#JVzemRFvef%2)CVHxm|;tqt$*O>`TNX~}r^iqh0 zhEf~4rpM*a#6P-@3}Nue1FwvMFDnede%UYG*w_z7_p?^V21}iZ!3PFp{-mOC;rF?^ z;{Yp9KUkCsFa`1x_??#q+4`(`#@p`Y#$;>ZP@s3W#(?#NZml0Z`hvtnddil0a`kBN zRM9@1_LLw`yDbfP)4t{VZpQ4yM3fg+2#9gdwW1;ozOyYxwE*B+&^AZ&E*_xn?lz4> z4&CI-@4YwZelnIt{6Im*x#Jczhic=TjWfi?Fy&lO+5z0~-U~(alnG*&a&UEAS5F4; zfi{%OXw($oe~W?3P}*@&pTUocnkpyK-aoF0Q2}%3glI^Cz8Ekr@^huW&p^S1H@PL^ zydQGX6-um*zeDy1yUhukv{GdhmQ7&Zfs1h-@Dl^;#Xf(+FDoKavliaHj{lFnw+hQ+ zS;9u)%ZIx|AOwft?m>gQySo$I9fAdScL)S`_uvpbNN{%vZvU|M{`Xq@Ip^lwoU5H@ zF2a0MJu}_Y-BtBgy){=G75Q;KDYHcd1M__6x&Y|jC_hIHQdu+a2D9Rj9C>=7^8nSc z7Alu><_dFM7&Z6skm4>rz!c^b(lt zi21$EhIj1l`*ht4*Ef%YbiT?Z2F`!UEu8jmR>K(^M|!O|J9A;Q2I2vGN^1Nd8!M~$ z=jvG~yQ8c-1_doG8nI}?E4@Ld*`e92*FC`r|3o$h!ivOGf0QTz;q?89wLRr3j{%b8aQ9&v4uzQp^*2T^Dd8mKNoiP>zqsy;l+w z)cH@>E}Q_*z`&%ar1IB1<879S1A@5E%TYd(+t;>q$h2{yK&@hvc zB#o->E4VzN@;KvW&h9sDYhR3J$@|5b()AlPev1NTBy`XhV5zQ_(f^$Rl8}{-$*;F@ z7|-1{5(IZIxPGs@$LT%ZukG|+Qn;aj_oA`YIPvWN8KpOC<3gSc` z4C1V{8EX`W8ZJDf6jecgmdZ&M^g94voQoykW)yU zOj-RA9e?lRZuoVL3rPjxE;3TIbrm;j`L%M{oQxA0-l9oUx8w%_${8py-;8Ia7jGSeWn5mh^ zt9QLGgV5JzZNoTp>Qx_hsSjdT{|)!ud>nO9!>tgo2JEIkSa4mZZP7O`riRq3D)T}$ zpn^;TIZHea^uP|7^om>&jeFIouzR9$ytvwFAs#$eHey%0f1HpC1?~x0(aZ2(U0qqf@@AGqH%B%rk3yIw}OnpHX5f^Q<%s zj(@!#lent7#~6iEfTUn#%;S>Eu^($K+?n8y3u(-@SC%i)H7o*kPotuu!ny>$${lTw z4g9~!>Hmnt3m|g>JT;I{PsrCNZVO^(tl*$VJUCb=U&HRzCn6z63`3vfo&z~Xpvpr^ zS63)DH>d&&^S0l2J5kL^VGW6)X!8ugXI4ecy_MFk^Qj?&^Rv*|#nX_S&y*FOGy2VI zs?b&Ml5OjlxX}y1%mejjqkOR&`{i4s^+I0uVy#(pLSo{+py*c1&(>hX6Mi#)G)J}gN=<~tzydUQc@}f{D8kqrlpS&0c09v_) z{UMMjs~H?-xo38U=cd|}ZoQc1NaL5kP||Hv&(TO%o*eT@xm-L&p1p4j{X*x zz~lN$oQPOQMJ16B!H+>w_*{lp_x9WtLXDgmT|L^D?adA9=V_bYEh;ZA@80xqY~$hKwQzPtTy%B$JtI8>siff5 zomKbUOkLjvO2FsKFtz!OCClgJSGDlVL~#+_z%=w>i~t!N(a+nDWoAQxJhH=^p0dH8 z$)wgER zFuOh{WbwSVehqs$I5_yX>@5h5VfS|D{R)o18(E52*bRIr1|X^J@-N9ZqIEyf>@#!x z%HlMnyXxV>myT+b0Cmgv`7+zt0J5=QUe8yjqV>g8CPoDBSc&Qt5oz4aSEe<+IJDzR7l3ue zjF?$Agv8f0hfPRI8U`STt8Im9q{0Z43sC{}HL-p%DpxZCnm{){*lrZ&S-yt|yLwb#WiEUncQxG@&Hj3vYX7%Oy=AIV1=w_|K`1IDv*Y`Nd8c}b5-g8~_0`XVEc3BBDJ2-<0e-dI)-a-DlWr9)u@>pcFoKtQlVCHA2 zFN8qnzd@HBSIYk!k>S40U!M|07ni^lH_4gcDgwdoGYUDI+onfkgW^)ZhbWINZJtZc z2y8hY$01p;+{~DKHQtu;2(zvY5XiqP^@Liq1)_NPv;r@Hc0WR@aaC^OAks@SHgW#; zx*X$!BW2X;r_TBLinb?xZA7py1HJ$C{PY0D7s`qrssfs)Po+5A#TNHG^}{aEK`ZM` zvF}97L52pVXWdV9s-{1xLmG7w(5*{bb=U>Rs=dFuA%OB#*qR`97c9V&yA*oqRAz7l zAbTrG?anmG@=;4F0ibZ5g^TTx0YqrsDt&)6p7l=`0cL|ly zkDp9m#Jh0(<#gHfCSac|H8M}GH_No!vV7O=%k_^2!;!G-&QPhE*BzN9Mqqz?ok9JE zqULq|n$_Ah3up8S83uoWSkXD_CvsruIv%hIVKRDs5r~szcQPphGvsJ0y6^il-PJ;-&&JgzMAX~O^SiT#ZCK!l`lcn&wmn` zpGaOye({2*F3g6G(q9BSHLhw`6DwH0^g3=*H6i>6XX@<&*dEu3AyD3YSA^@`U{=>% zp$n-t9A#vbU%|G;^CcVDFU5ri8`B`Lo+A{EB%msUDJbKgcj(kxCT8%uD^4W)?+b&g zU}}%vY8O85`aTa(QrxoHF4XkzI_nZaQo=3QwW(9T<=(mzHoHm*f4Nb!s&flBrnEzI zwjs6!os(8+)n#Dl3m`D~_prH2&Nnk#EMLNWn{g1My*q^IL6<{YQP4aMX@ZNyQf<1X zr=xn3wSpuJ&VVrdght@KGm7`I2&9J^LYhUg_2$y?O;df@Cr=i$aYPIGmTcRm>$oyg zDrIyo>A-bLRACY>lhO`um)`3nEn6n__Q#8nfS0OnT=ccudw+raSOHEruj@3C`(epJ z^rv&Ud^Z8;18%uwHQ=~KfbX< zx&z6~+|;mv$+{jNP^~@iX4>x$%DkVo0g6`0#{K}ZHB5ho)jDa@9n-y`-_KVIw>s94 zM#3PTNGziwk)*D+o5!*OtkJpn)=alQBeBQQu%}Vg#QyJqah)cSf;i8+)rurPLm}Wq zT^J8KJHf^O5ef`#-5Cb(aSe`+vci_lW<_G~xd1Gg`|HQp;@ToaCP&Aj(@X(rjNY)q zQBeTa2Q%~WaX?f@kKdjW=%OaLEt8_bdE53+7c5F9Y9{esN}lIY#itQW*pYBXy|_%O zk*U}kpdk$?<`?hP_^qMfDa{5MS>Ai{a^dr<^e;>X*0}k6sy3r_g8-j_Od=MIDr|%L zGasP{)Q_O*)Pc7e2PbWc$V!o?xn@CIp`F+E<0585g*mT!yn8Q}jAT+%4dHtPWo8Wi+AAZ$TO#V!U z-|O~>V)&f1Xdl;5kQ6>Y=Dv`Ja)dhf;xb~BQvf5Di2V*+Q&VHSJ)9U)@~cr!$_uyP z!NDoAZxJC9(n!G&WYni_5lg&AEy!dxPGIywnQAdBi?DOX^?1>QHrY}xGEdc4=#3HG zhlm_1lO2x(ZCY#MAltTc(e^S_g+Ve|Qh#*{M&ASDySY}iw++Vfua6cm zrpx#Z*eD|fo4J5)C8cu!Ym-xCbECaIBhkAWZ&p1gEJ@`b5TcLKwyZlN{z)dg~G_- z2CpdtRSZR#!@G5*{oV356>ViTUZdW{2hdMhwwDlCRx$vVhY!c;c zG*Pcch8wQ_94>Um)**)!8Z@UVSwGT~78#xo_)yGFc+35DF}Lh-vIfVq&I|($0uH5d zm*^BXZc@m$rEK-N=NHa5ZGOps<|#EyVkT^5RYrJ-d#vZSkqMIeMQZU5u{!fWYW!Eu z`_*rZqgkMB07xmAf?HZT7?Y+ywh{bmj1|>`&H#>D@1^%dH)$JQmkCrsRYkmj!h<$a{EI zv2{`I6g_wNo1^V#Bw62@VKY6}VeSz;wEEMTFBdy!9XQ&SQt>&L;Z4cM+b*)1fBh~p zd+mgsRC`z zDXAdX7#QSEIv#8nI=owz)zl6dez<+$h=3Rs5D*uTzhwyx=UDYp0wVn^L(v?0ZrNWW z`n{bDe+H-Wxgyvl zhLEz2ppWE*P(ClY5f7|7dL2f0nT`TjIiRaa3JN-TtqAU|eMG9IV*HLAmPm?*AQV9l zif7fk&6z8YX#5hY0sko0!$6~*jLM4C9UC8yF%#c23Z10f-*{mT697K`G~zp)1KryL zxG^qjwqiI*{EhH+I8w`uIx%in!-kp}1C+s3;O$Jt+yA_!fk9?T}XkL<~ zH>bl%K{7DUWUv0PKlPD)7seABG)nVNiGU5wO_Fa7SktU+PeFuEUy%!Tu%*tEL|V{6hc(9qm=WKv-&pxV&nql4*^Rc< zPLFSOe?@3iU&1#O|4I>o!`aPEe=Z1{5ESlR<(i)Zn}j<8@EJBmb*-I2xnFnTxv&4! z*z6}nO~RIotuMT*DJ7G`mKkvgLP+xUF5YP)3K4E*%Qb*aO|Q>6bk*TjibJR1a$sOb z{|%-`M3Q`3iaw+fFd!#4(Ws?Q%(zn%zg`|8b1Y)f@UMQf^4zwym^I`~(84(R5;-5b zOQm_kmzuCA$zT!un@y|9#>fTYGr|tmyY=SS?CeTUJElnIOO(TV0NHUCe z4WpD0$HCe2fr5NcGRG;9mawJ>0&La8TIeM?*1@iydnCyFLt!;lR9ZWjrV?S-7yL5m z?Sm7NvufdzauQQ-iv1CtJ?>$yK6#8~dMg%>3C)<-qNvDZDprJrW%&~aT00m90PZrC zY$RaTta47gyFoLjTg@GN`>3HA)j{1G_yq0Omw-5wQLQ``fi3P~@U38HG-m5aNMg)>4A~#P|31e(Lm92X!*{c^HaFj)wfy(N=(aNeUo&9Ca51zC|32uJ2Hwf}2ck z2AGLDbyIqZ04NqT8q=NOg9UdFB2F_>3L%!~1H(BG|KXa%ztF4T%~LR;E60hKg#USRYCsDcZh2`z1WrZC4ogj5SC zFihnC8O?luYEIm4FGguBv!%)0{4{Z=g3nuHKI@qnuZ=T3wqT6ApxAu%q>x<7$Fx*> zOm_M=P)5vb2xPOcs7=QJ{S^!%XZ*Q9t5a_>H7%dp&y$h#Jm)yII$6SS$o+kc8xaM0 zPllX~Tq=M)JvMr4FS@J}IO)D?_H zRmwLudkx6_$B`Ef1Uf2zM0N@JuhWJRz-jA`4A)8jb^3o-|Nq@50*cC4A(?-Dl0>ja zl@_rLS@%sH++4x?hk<7R#ubnGpafKaGc8)Zc8djPkO>H`lgTsyL`tZtpqox78$`qWM z=c@HVv?fO0*ZrgLsN1t}D`a8>*g`OC#+|ZO7*ynZrR@00TjjC6kIV>fN|)}mUTx7Q zFJQ4U-l_LJR0yFo%n3wId*H@U(Q?_a~4FKM~Z(e2s%M`y^I``8b2_F?wl;ZFU|lVx+&xP9FC3O_U? z9&3dySDWE_kW*Nuhr?iAS=~NwRm+yvtBJrZ&6aGUFN<&5SNiic}HX005tI$AoJQpXZg5QZM)2@XzEFeL#2rua|>Koxy8lS zP?D^W08pB7zZTcqdoFe9;J{KsLLye9R_Kyk($21OJ&Fw|qP?HYy?1cHJnZChaVh&b zESU~Uq>Wc1DiEwK`-%hIO?~a?JU_rEh&%1H|Ky^=j#ohFQOj%`(9;Cxx{)RT=ugZy z6?XRon`Z)*8D1BMQyz~DqNyyEkF@`}2Jmu!*R{c@DMAxgKU!*(TU=a>tOZ!rh%qpK z$TV$gg0#1X>Z7yXP(r$*3Fu$*cUlD}U>oDTu{+vJ?9MgVOyMD0WAzW(V%0eFe=qJa zS<(t;icF8_{(?Qf|4{qU6NVyhpK}2hfcok% z)OmRHO4CJ)m(tnh3-XRw^OwqhKQY7VeHe3KOQr%lc(U{v)tQ?Z423P0QtuDl`$X>; z&dzd}YxfQjk6{TyMfb8<31Bci1@=x&^4u#f{N^`L@TXCYOMckMvj0t8X*WL*lNVM1 zB@%Co7dkGRXatQN6FQ@6lg$>0eq?Vnc+_;YD z+ZBICqEt|Yil(%v(C7_ZMA+8PM!c>&bUvGq&)x}fVCv%KVv(aD_vpaR$;=9gpK`t~ zX(<1xRyjg1Y zY*)x)_W`-PyE~jLbLIO3#_-62oc&it5>h%k8Li0ChuwF}-`3{9fvt(?)UW{eXLYOk zIv-=7QjYg%N{UXdyj-H7mie@86Q!xTrj}M=e!eh6U@G2sAXbg-zCWg&@TB-YJ|Ust z2GYcy(B_po@;&9R96Gz3hQ=WPe0TG4h}8M=T3cM4$P^B7p(A%>M7lb1o3wM8*zNNd z@8dZsaQD=T_3HlR#n<9`9Fj3bR>AWbv&Ov#{#8|ahIe>RZ=&MOPxCcftMHR#lD&(^ z@izqdzdbqDHH=YRMsqO4%OFI|kbAf0=P7jD^cdvZB}FWD1KKS33Z61LoK$5e(a8B? zQ%w}qr#3Mh&tSFflLr;q>0YCNRc+1hc1Lh`cF&dM$eV)eZ*W|=Z2ck4oN>wj{YoAJ zL`M3{^QqKHT-jLi*Qe|F)`G`ahP?qei4Qe9hf7yaN({?DiVv?*LN9Vqm;Zy^^aR%T z79DxDFc=k7hO5%iwi_R(6*rS!?@2#!@!mWt=Pc`IHnJ`iA(X?e62BPr1m39+3hX)5^5^2=n8(et2@9T&l2tqjHRmxO{ z{NKRPp6E3}<1qe;#A7iYiX*@0d%@#}l#}3mZcvYZRV4D#x~i_foRpVN^82K~bsYsT zDEXSV>oh)PvWMStSHed+zuO+I1SmlHXZyMuUz`SuQv@=N7HNAaed?8T`E{d(BT|Byy(B>;UBXxiB3EjDt0%@z;CVbeOQj z!h}Lf%HbUmk+_Oxfp?ROel&?St4H4x4wIxWxi@o%?RnTCn=n;)uTA!O`0qDZNWmj@ zB%B1cioeseROVA-?cyd|0q^cXW=3AKcH#C|LIS= zf|i(Rc(=&hXkV!4a$TP-)jhmahlg^AnAtLJqYqxwtpn(!ja0~I(pU!WGzNg=YMlao zD9W}i8X8)H)P;U*xa+l*86eeWR9RrTYa2ERfMZLC!Z0Wcsy{pJV1i(43GAJP@KME^ z0P@fLwl?if+iZ6Qq%;i3ymElxxVxR0F<}I2SSTeSA;B&4T;AsMVKxv%;>*_tMBSs3 zg0C$B5DRtp#F_$N&Xb=#=0v1LaZ5+^&JW(}DLS5!=t19_(9`0P{BD*X{$D`^tdMh>=Md>D5CcjnVV-DX%>s+F|R4zH!kD_~a^9WI+2!ZQ`m zZ}~lla7C?!#PSDfs_&9lNP^QIVyB^TK0MYDc#9lPyiBHlky74o?Kt>cc3{?-9~NBv z=Q5Qg$vpw@Xg{X5@}vF?@HjPc{KkD&YeMHma^jcWI0Y9dt3OBf^Ms^s8~5^G3}!AH z;#>b{raBJHe|3XT;CeWiD7a=odE2iw+#oTzeaaHmyeR>}(C2x5bl&8r4h4)lE=UD} z;dD@By{=mXp8q!KJ-sAj(pkbKFp!KNH&ZxImV zC#amGlW=Kxu1aib$;u-W?v9D%4g;IIit|%CpJ2dpAGIJG%DCyeF|PzN!vS0 z_s?Q=cIL)A=7CAI7t&a4R5-080y22ecH0?>en> zo9G)9sAaj@Wuq*#gu(8H(x8saF9Y9)Uz2vpP}9K&i=N=_`4o{*(%>i1|=J*Ewc*O(;cWCVWanz%`A>$fdsR|@}iI@(xC!+QsqaTFRI?y20}=|O%7HI zhdWkwckjkbxG2s*k~)!2;)&Uu@HmoeHVd%^X;Wu zI5yn8;T<=WCP9PQ4|=AqtCn`}o#*T3&y!>Ehn^Esf9KC|*}kC!mc1^GYBFHi!^BW8 zXhvMecWE_npG&*c3BWlrT9lMT#bBg8hEFcY_BmtrUQqFD7k_W0D@4Z@(Xm`oj=Vil zQ}-(zFAY~dwedK$d(2ttf_dyq(v!v_n@Xde6twuI9FgOWgN;d^=SO&*pXiHMteI2E z8pq$cO1$Is%98P>l3aqNrfNKWN%0nI$`s7f5W?KaO9EzHZ;uTX?~Nr!vQ3Ov8qAby?$A{hbSEs&*MJgXMo-+FF;)I5$V$LH+*(IgQ3{Y*PF zQL6TQ(0uh4l({~#O@Rg^?2gU{mX3JjA9v;=h>RzLY+l?rzKjmDRPV` z%;R>d{JS8UWOPhwc`Y3!E#ETD+{nr{{8GL~e~g?FrL}+YxBh@ziyok4A5T`%MD%C= z?h*9Kv3t?&0PGm8Nk`FR-Jxp3oXkYo+dCS`p(JtKrnA|Mik6ZqXE?|w|~P|hn?9Hd&FwSB$=tW=?|?rXdLO=o1?$7LZbY7K>(5^+rGPx%A z53>TT3l_r;@60pxhYKwVVPmyPgLYZakyC;=p9P{TgBP}n{Uer{BwBCs4^{4NO7 zYNIySr>yE~4jQ;DDUJUvLhkryd<_6BerWeDtp7~Slw^KNrhC#{tl#I>TFJ3&p9f&VjdX*5g^sj?7mfyYtU9ib z=_NXbzuvTc9Pds>h;R0;%@MGMrKt77ry*tMTZ>Cwpeo2KGWY9*V!Gwno+j(%LM*|E8jc4|KR&RIB&JX7836h zT&Pi5(fA4mU&2f80BDO*NDsk; zJiwyexL;I6VbrXKiAc87V;9)QX#mRiEvHz<#D8^9`R`HsX=5d7Vq2Mn%81M1IWr8; z)QHlsn6;?xR`ri~iv*skh>V(0*6Of~@qr%wT31I@ipPh6yaEbxEf&6^qQ5-(rq{05hlow+98H=q#!-`m>1GNlsG1wfo&NzaFGcBhFtnsd7kdfYp)G7l?b z`3!QnZ)+52JcUP;6im?Hb4Ht(y<9a1mWEE0yVsMA66Bz`u)rt?=ahh@N|ym=h+6CY zQLpy|!JoGR&qw|&HRWD^@Y`YRG#Af7ci zyv9oc*kvEDBXr*k;;;B<0}+!$R6I|mo!Fj;A)jLb^Sa9nO1G)~sY?e|XafMhCe_@T zSKZcy4tIfSu1-Mp#Vn$6Z9(nrq)50RD|PJa|85DueDJTh5|PN{0f#mhf&y)11GRq(YI!^4yPjf=|?@D{f;N zGD$URRfiMq@IN)H)n|H1AwTWH6s%39Uu9st(J7x&sMpeDtu8>U#h7OI5_so;ZwPYB z^#Q=dz!rp#eg=B_hMDfE+JhyZw!YJaTCoYvuNsJ8yD|c#BuQQ5i_3BZ9RWllN47<^ zo6)hc#E=l^cJ>WU04V-2_=X9H+wsT8UKF4WhJQQY0`NF^;D^Qv=&gB}WJ&mopC?84 zO5wOu_W_HC5Ms(00I7U>@81_BadE>zn@ATC&dcq(6rP&KXu+tRMnt_vVZsp_n;hll z^H4UtZLU$yv^43)ji6>U3aVtr-Ttr?o;5gnVc{#2!)e>6Ei% zfYvs8IIEz3N_%?0m2!KcQwBcAsoNuE1e}UHZ4Z2aH6R*2j-_+0Yr%CpQAf_rB)v63XT%wn$S~DANb8gA$ z8k$<_qz3}HBda56lj1)a=m5n3X3oQ=})z^Q%Nt%au?Bwct$ZxLI z@BCf8S|~eJ9&-NI+{}zyJKb`HVaC2VFaGTkt6O?v97Xw>2- zHD|Sqmx~H`a-sAQ5h>R9*}IQa#HY?bmnRLLz*Pcw?N%{Ar}QxZ?%DyPJ11rLk~TNK z8kxnu?Th>IgU2|+WwkdyVBkr&UXWf-CmC&JH*NWTq)=kZ-JGbAq>shQe#lR{@~jqP ziqu;u=rgWAbhhdkCv(+B(+EgvPsZhnm=H0J{Sn#qU8B|*C=H_950>mzft~k;V%seA zetx{GaXa6;yt-=UnUjXRXZ5~!^3}oVQvkv}6^djt4;l$f+2xUq>e8Eicf38h2+}Ll zZ`u>Lxn95&7CzSMHjMhc!UeHF@{k`s>>taKk)EghKX?)Bi?LK z%FZ+*BozfO%^U?tN8e|92P!&tNHN5xr;?DT@x(Xs+uBD^SDwaTARXUF1|Li;2hes$ z!qV}%aSX$YYkixD3xZ5vF_W_q4tQz3ZpL^BOU%E!2mowVDSGxP*Ds=WROj(FL)#wX5|2Q~bQ^@h6tb_jx(9wQ%$tOl<22%V7 zEPDNq8Ia7$*&AE_&jw=rXaEBHri*IFpRd-(e~vXoprn@>XARar04GRvdvf5c8lMYt z+JD_IgBSoC5XBmV{?UK{sNxlZ7#gQ~A?!T%gxiNIOyyI))Y zJ7cseN7TLTj6y?0HjF&{=aN|aoSv#|JqQ6#B(~@)c~M&xSOSXYL^R}oJ-ZZwP<+xKfyV<#^x0Uu5GF)W5 zfSg=3D?7U+VAmlcBOma;d-qP%DxOjFw)z&Q8G{2%0ocYmu%@g)f=V~0 zna1m0Y!3wq`=$7LesDbgEA~0+;95k@v~h2nP%{whOTjt?`qsltmV@DE4y2Kk)R_zQ z&=P{W-+Yd(b&J3(@6^J1>px?FhYkU>F% zvr4N8ugSIZ)qsUj90qqJHv?q63Yc0qi=j_b$klzAi~jsq^g^Ljvd6n%baYgVU)d#N zX>3wE>_ zM{fpgambF3X~X=QcQy(9v)oCdIG zZG^_iI}uCUcLFJ#`?c5yyp7eb6|Szc@H}4$4j@4;3g>k@D}OF+D7~(YpO!&7s9nJy zXxJ7);{|A;45?AgAO&m6YKHQWU=w`3Ph#{NHm1|D-L!Y%ZcwWt;F~xyea?NdAyDxl z1tDB1M%jsULC~&Lu&8|+0x?8$J+@7{=X=SlI3*~9-_twvJ4cOh&;YTv+vMcvADh1v zh}c2=_69xHZ#KyF?Z5O$hlJPqQB~ttyyvtRVAQI%UmrXzYe$UE2OtxXKm4TEF@Seo z5|&EA|0Lx`wD+_ z`=%VWdn*F+8JUprR%wCKBER zoK>}IxnpjG#h~dUiVXg&F?gLbXEG3=jfYbWn*@AC#b^UwW2>-4D^y1??9mDmwg=? z-sR#9T?Na$C*!9qPU z0iv65tba&)zW_$ShO%xa!0rvjRdk6>xt-? zhE{-7qplU~%D6%|GNAAEc188$LBCMuv_ZwPFJ#6CM>gUjIO3g%y?T%L+_8_~fax8H z4x3ow_ka=5J_bEcNy{Zg>JJdVH1QMvTKX5;4C}uy*q|Q$*98%;Nz0Qjk-vli&n7Mr zDz(D8%{CP+r4%V7D$o|L2G{W0fxvBJ3o-~$E;`nVYE$2kT0z8)pR_pjVJ z0RmK?pg^6+L&q*E%$z(FKEypUL;p<iRx8BOut( z2x`Eebuoc9$Ar7_;0FjH@ks!y$p0s57j6H2GgQ(Klq`#Cf=fSe28EwSH~}3$z|&HC zlZMhP2a3YzqJ_FpN+~Z4&UQ5=oNSU4MEfci?ETsRB)&fuizA&G6%{R~8!8ECp>Qto z$70z{@Sd!75?B;&Ye$p+l!{7p;nN`@lt>*P-Zc;y<_DGrS8c>Eyyb41icf{P5f+A^ z;Y%&grumrq*`EK?U%z>H-npCYpnZJ+diz%S7v<|mP=z)qDbtYg&HAYB^+|;UA#CML z4=ZRm-aBN2g@pe4Yj2P7y#qh|YZCtU%&-g-Od#Nu$?8@={(-xO2umdVYkg|~lA z*yxovsYh7f)}IZvrPhv!mt#jqTZYJJ5j1ieixMCT%B9eEWf9_oeG3Pc1g4j~BCQx; zg>r+GYNu(9D(rS8NwJA|Vd4A}G7P0!y|p!ldIDi`iDQyXpV|)h_u<9>z65Q+z6~82 z7#0LvC7go#y1CB5>6w)HndV70F@AcWYk|F_8XKRHOA_E$paUj<4NmY-HnkK22t^~W zMHCRgL1YfX-_fY8KPk12tKe&a1S7>^1(3v8jmZ8kg@bST2o)R?JRsPWmH9Rxz*cS( zVthsgo{z`cC!}5sO#879u7wy`;whgtu zGLr@>3+4x|>HdsQ$hDYIGv6}=&RO-A-PnPqQJ>w$yF!>V?{53-)_^1}MSnrWz z!0ZE&{Lb>-gaHAT9o8`z@H$!U8v-2Po3)szQ~)<&{qh%>YPr|_IGb1uu>VnoK!Cfr zx(+$HxOnATHNcqRm)8Rqem*Tad5@wF{U*7%MJHNwoa?iI!aBJB)*`>4@7^6IxfoDw zc=!au;Rj+x+XUgmL-|22uQ5+)aQ_dk3{0%a$8^+{jzUX%IiL^fm+OF?CP{v)Ag82C z-{nfs!=pty+xDrg?ECkGzs`nM>aoFx-+E*bAOWivEbMZtyT5Ufrto;j#e;WLD_`y* zCKj=qAJgI%u)$M>SHZC^Z5MWyB9)%tI4F>cmD<OO3xj7&eP1E|7;P!ZTUk_A(!f6AROC_`XlzT>+7A)r~x!NGyCU*oTE=8cf9#VIdu(Y%^()40=JKdX3s z_r4F3p^^1SNxWUXVNE%AGd%rp_lzJ0wz;oGDbL-90b7>0{F&NL9 zY2wZ~I>Bhj11FX^D_e^P;2Qsoz8K6CJza5$w}J^h9Z)Kfi$8F%m@ zKS!Qyxpr)1Bp%>fV~T)}>?kZ08PDJ%1-#%bt%^B4AR*8dG65&i*w`2$5gKY#Dw<=G zEj&DmH1S6!T|tAdEpQe%3x5%x_whk~%-RSc_lUWkekdOq5F%K9K}Vl?htVW%lcJUr z5iy!TCioZIL(4r(z0DVbnNNeVbP8Dv4}XfF40RjWQ?^_?7Pszxk>zZBs48!ydynv0 z{%WREJdvHXNqn1jB`*R2>|}Hef=({VU6BPyOWM_9s3wxfTJ{lIQsn0YC47nx?D5}& z0kVlUrK8seAmDQN^qxw)Af^`-b}kQ7i^JH&noH1tN^F{&gTwe#YrifOk*)%8SV)iA za|r$0&e>V{%g%{zsR77fjbtlxr*9`>64@?5elLgz{DKM!lTF39Kj~{^k%2&5o3a;s z&Pv2p&>FukW5`PvtYsds;szx{^mRRHhFHPEQ6eogSJxzb{FXIbGA6wsI~CR5Km<)h zM1-2bYP|bnSn;~RgF2s`#e_$K=X$Zn6BP_z3Cmz@>(w{;5Q<*=Epl-*!KMiP{^{i8 zWbl)(!~@0DzD5K z4|zlJsK1&nsH|_Hp?M1%sV48{8?b)pId{YQNZbbAKKwp$~1ND>IVIwq^hpOg5QG0jjK_truD#JO(^Qh=|ty+4BA6oUwS z;QA!%YH(op5eGBjU(5u)LPBifOu6Dso)I{{O%%lWE;2G-Pn;*0@RxVrwXw`lD|P?| znKW?4r&w7E^Hl!qY}6+~#FwXoFw;;8 z4|NWK7La{3H7lASq7AvGPa-7HF9u}9ZS)*9Ae}=@`n_*56&7dQ{q%`Ysf%M9QKYMc zL-xr@|`}F_< z9v5lV@9MePyZpe0{r7lT zr4JpeS^`+Uj92;S$}D_4iSFJ_k1oNTr~Ko|07U^9rM-RqtD@3U>UQUXGzMzw3lGYI zJm1|+*FUpaL;_S)ZH5~_LEirinLiadkQ1~O=#P)Vto^_Y3kG`$OPAonc``OM+bSx? z(X+=yZ;Yn0c)YV?!Q0_p27*TZA#4r+HfUS%Zkt~@9_M}maY7xu--rE>J~R40dv!X; z#DfArAh5*Q=*Y-@`C!D~!}h8p8Gy26pU_U^n{1<-LImhiYRoZuUei$Q2ltUc$-+H0-7X8FE392jy0Z5-nH+h77_ zd2HLa^73-R_Blxw7MAptKTB2orGex+-uw4{l89OA*n>7J`oDGh>JM-M;U_L)hO4OH z-!42^;0Slih#Sc0{QDex35<~CdOOQMWrQ&SQ82t~af<(VbfI{qfbCf-=?lD<|1N_B z4_FsWFRLE?L*e_-6d(fiCnM(HCs;TWFsyjo6u?scYp?+;1~{Tu9xmPcrwkbqKx24l z=huHIl)*Is%uNFZ$vR9nDDqnX>{0VeVWpYnY(Q&)MG0s!g%k_ga>IPF6W6%`|4lL-LAdP!zu zWaX;h!kMI6!W%rm?iCVN<*gcgVuz9S$B%jqF4P?~qmXL#&6D#G)LHw~InMnn>xtdw z)>J3qtfSK&YSt;9&4tPBWlDUOdH=r6YciGR{bRQD1||}ImPS$d{x-QKiU8Rz&y<5X z2EbLWt6s!r@&F>JHk>8_5!#$o66@Lsk7g?;JP_}lJu+2PbMLemzT$I zD_P`tA?h0&je+-x&1C6FV9Zr50EqP+A|fM9{@upL#&?2QS!d0vuzYkM%u>{E7DX?V5@qD_yL4nh*xuK;LJJNhpB4o#gs@kyR%ETh)UX=}xu_NyRbr^FZeP zYEx}9!y`#QAKo)&&cE@ZtBqE|ALM2?Erz&DAg0d5EUr!wxP+f%{&>qJJR^coexbF~ z3v=N#oP|e9Mz&tv&zlT`>0QUMy&Dw`cvx_j6Y}uH-3DYD@=NZ->n-5FJqQ7{4&`_*!55%)c7CnAc$Bg}OsC<>sN{ zsi@Vy>NZF-qVW83sq*!40#wiYH!%%pDK=$o9SUJL1@{4H8G&zh5A0<}Z88kSUc`Ei zp|Am1{I5lIuhz_|IbxDN2p*0mx@S9WywCeJd+g4eA)*KXr2SgJU~fNOH(c=}Q5DUg zNbN7Jd8#^|-)Xzu5&`^@IF|)U4|0$s@fw)TNY1MIAqcUB{c#RpCE@m_KU6>Jx38*x za-7`HJ&_ZiW{-G^^rt@)f)zA;0r*NZhX#^WW3nr5*cB8ke|w$vwAh*Jc%lTz08v34 zD<*w1w5kOyw)^t)8d*7fzlb;|l#duQ^D%v*$=If2l%($wV?)lf@9+AtAU;RN+&ufU zgwK#&Zb3nJHHOSI?_-aOn%X!8%h81&z7HovxP8eb|IO|2pUiqYyao_rq62a}Mj ztAqVE;~fvYR2O#v7K6POx9N?{^{?KQHW+f*mX6-M6_pgfb)&4a)07W52NN}iYyHLz zId<1pU9+9^6uIHV=2FU1&A|!lbi`~*FO32K)KV-P&4Bk(G&5_^?^cLcI- zJzwMH2w5Y0U zET%TEPnD=)>er_oJq}|kXo6}?VRxBsYVm<$UvcXI{1Ew=4A*V_?*mPy2s~VXVyCOD zl@?)stO%T};brq0IZ`~gaH5%qY$l5JJ%Bn;aahXo_8UYZ)?Gv|s%>JR!y#Ro zZMvihtvpvrs9Bf*@(nb3BV=Ry#rxK@DN30MhO9<3vv^ScZtnd^LE?)C-H8h!BYCk0~ zZ4=GwUgW1ynY6vnW^dJ2U@tol9r(SMh~@|=c{=F@qvp9T01TK<{z_HFDRBGf3s051 z7pL=Mfg8hOwV#S=f}Bwv8;gtE0M^P1S#Mz{-CA4Up65>1_KOl4Z+KJmQOIH!7Tc`r zJPo#~&(;%Tr)_lSl# zK2GC;uunL0Nh6C~L~J>$$CK7$<7$}m(Rt%&&E2Q0e5R(x6j_n|Fk9yntAk@F`>l;+ zpW2Kh`Bx?=cbUL5t^UCNvcL_Y;F&V1^Q*rvtaz1;-nbhW36! z`4y+mt{7R}bX z2imA^>@giJ$Bb_L69j!JcRn{WtNbBfgDffFQK=u`F)jL-6@>hyQ+X)j-1Xy$d_lP< zE!8y$CBW%3Wu#9~hZt}Vo~$Y?RH5WBYA4`B_uVE`w)L)341Wp{t*fo261qLwlz zdiAQr!2>X6?49Vc#3OM!xbaQ1MsDJf?%s%4dc?;!RRMoxt`~t&2({yqmbP$ny+yR{ z5m`;b#>&cS{z_8MWDdg)q>R#r^=th;3(?vd5qyI1*E#mWFC~#)+v9Xdqh6n`C1E zUtH1I57A?f#=;TO3m(iy2o6BrlV}HNH{KD4F|h{SqG9V$N5H^71r-N8&z&f*C_m+LHm zDMH1bdUbO2z(pE|3at>~R@u*N9?m#Y^nR1Mtz1cDOTa|(@qA;qjzZwekUZT)9g1qj zIz&B=q1M@a^jS(Lg*&-L3#bA85qf#gxeF2VwBTL97R4w4k4_bx!_yu4Yeu z*vt)9srTc!xP;dx7l_=+9jD4skT(#5pAL_vIFE?plr6KVl0#j8Een)X|6wBjWD9FN zVUXPyw!Qat#`{zF_vJqkQAn<`5~LoS6rHg>5BSv4Bh%fEy90BhOv-hFAGJdz$R3PL z>2P89TJ>`j)3xN8%jb+w8r|_BI#;kL5wCeHPg-N$L~h`VUiFZ@^CY&)vD>z^Q?Nd* zE&?FW6K5``-WhI-773QS6IEC(zHr?|%gC!QZDt-k3s;^OMtYrr)|9HHLAJjic_qNx zuC_fl18!Ad+v~)mu;-OOjhc5c%C18MrY+sTrq?Ht{=_3vYwBR#EMRPYZs9#)&NtSb zo~ETX_?1u8p+p{C!_8A~6~%T_58)hO>*hJ1)cpMD3n(PjTYUmKm2_?FjI8H#gQ-cz zhIyhKW$hd9r|JdAAOi`$syKDqwnFCTE?7Sd!qS7mMqzczQ#d=*eljPKiU20e8l2 zN=67x`#C$!U^D5*pb7SX5N5pnJO!Mtt^OVA&cXFI?S|;Ed(LNo8Qe9TAPm^!U*F2O zYeen#t(K_)jFB4!0(Iw03CV|R3)*S1mnER#3$*e%cG2Ha2=;5p$JnBnA6msNEj01) z(UTSmWi7C@+F{LBN~^z1OO(tj$f2*$YMr`CU6Ji}h{}AzB2}lx#YN6q(y){ZopS%( zL+f;&LCtIeeO}h4k%y0(hqagr;W>W&A=8k*1 zdJq$T1WKWh&m}5hU>-HC6v=+lK9^?@7sH=fp`SSb8tC2U7g`&a*bkTv{3^0OZ$ zaM*bCpt2seMdo7uOnAh_`%|?kzA<~chrKa{Qw{U=-$qdrr61eRV<^npH%Uyt zh6{V9Zok~VsUyYQ`RUZDaFNrgr7jF;mXAp6k}LF_Q%c22H51O1{>|hmegyqQz@Ovk z!AM;;XzLv!m?OHEi6wuFBQUiNJpvy5=U06cR}cQPOb&8=ZVHUPh|;cLeM^`>I8bvN zw{&G~n8ee4=%aN+cn4!yk11_+=S?E)smP+m9>zr3O5iLdqo?k*uG`~T?J7noIBd=V zGn6C1%aR=qbeP1@QUqIt{!|gvq?T0SvHH|C(Q|*j!^UNi`w zJJ^sm8uF9i$5*jN-~?4>Haz!13h>NV3WtVF-pLUv&W$H)J^wm|a~K6?OgoCU5bV=v z-Kywhh_EzW1I+9F7h#kxuF`Il;qQH~Jh=MV1ES`T5sV)|OF2I__LcpuP@1xda)K`< z1mS_0xp6$0*`L%vR1TNkqu`-2Q=*>o-djNG>**O7+{P3WsSOC88jrr6^FA(t^q`h6 z!9F3(9%f#2ZJHOQ_Q}pQnRha6kS?Z6J%qWL3rIK2OH>9=XUsUW4h>apSV^4F5 zq39LQQLE1AaJzf5$DJy81hBDhob~or9Gyz=$M#3knX}{v7iWG4!tZZw6&Hnb5XN?)~m9La(y{Tex`{((QNSWYhFqO)!6p$8pDo{F{&6 z!6&A%@SzjlEmi!xIiHR4mOZ+u%O*SR7NDqO=xgkL_3?*dgP?&s@|2Q>6)&f#V6VkbZV!shS;m`1mO;J}vgax1Gz;A(*JY zrm@ky3u-{xBHbwO%euUCHa9hc<4nL3yG8LXuh*+Blgp|Y>yw1J)U6MZMhY&M$rjHA z&K=gxa!MFnpS7@n3-Y(?zx(@7^crTXhXkB`sXeRL6rTJn7ILES)AxSr7LO9U zflE+f@RobRjTJ)F?tIfLuaBo(7b7ED{jXLgYfu*0RkgE)mH=8VjqXQErp;y*qa%l3 zL^N;SGog@Wt7-eNKhXG54mX!0f?p z?~i!1DwTPY5VW(`k8?CxnAPSi4+>73_^PChR9bB+7y@Yj6)yqJynA-sPX_)F5AVI$ zCf2MCEDt6fuTx?SZl=jf|JtE;Q=IfZ5xQvxC)lT;an ze2|20`RKcKPo17m0kz_E`^n4eU2AJtaKB4>y_u1{MUqY!hG0I<*isIq+G-LBI!3e~ z_n0}3lTFBZBRdpeZ;RxlPj?Whb)26ZyVFn=^AevJ%C}%9FjsJpC44Plwk7yn_~~Z* zpwQy|SGkQ{tI-nRZ`f|B>GGdHp(X}A>Y7s3!ezA0E>;%jYDZ`kw_Qj%Dj>7KQaGeM zc;1>-D@eRGi3j)RR|iW72)vNy0{P7asMZAEA=Bpiemg$+qMOH2|1l#Av~&@&DxsgH z%*-OMtp=&V`S0x|6v-W6 z@_8K+_>kL^WomhO$>#w@AwGPfIwZep9VUu1G@f>Pk;Chq)gmGygrIy%A}c|oT}38G zXyHpKRM0^)8iiPdw@g7ZZXooJrdM1d44W0%XK#@(X@$2*Odvtlm~qGMF4{r*BA0dl zqu6beUFd7^Xh`tNx~OJ8MA-Rxrg2MPZ|!gn`gg$QNL5Yz?_)l+3{ClWp*n1i$@4f2 zHnU*7Us*#~iF@nlMNPA4=i9es5_lK7W#|0Cr!SxQ9CxVbJ(o9@to^dStCr?yZ;Iu= zz+80Er&E}Enl*a6A!~)Dr&lfBe@~C)J_^lU z&byFs@1BXzt)Gv-QDupFZRzF73OI~RO^KFllWox)P_a;GTW_K62yBszXRKfnsb=2V zYalOL;y5$}>bQnDl!P7}|9o65R&e^+*#)ly;~)~Y;s6Vb!nuZv2aJYHs7xAxsdFx* z+8xgOV~p-!UtaxscQm6ycQCF+8jimANKCCz{|T2w2xl)G1hOcio9g(Wpv|f6BmHu)X-k?sE5A|lVfVbN z{0g^>oSv!PdAv}|7-I0HSX}o2$1MH;D1i=I{S=gm9^Ki%Yx104rd(}_A zKem6CPiH&8pkZ+J^XO@=OCI0(2W66tUMF*nyYic~=6|maO%{udI8s0^tJH>@rng!r z=FRo6i?C_=eLZKHDWUu9F7^mccxwBLE6Ba*PKU-4;f!$WjV;2(U!FXE@7ZR4qwj`J z<1oT3$SvIgmLw``Y!?%Ev*z37hO?gqe+%=&SO(ruu}psyq@`5=!HZkq=dVJlCulU#-MW_xMN9w_$ZFl*}&2@CGsmIeE zE#2lm^61Uga}ZStt-Q%t4$Tu6Zk=v<7X5*VCxrSkjG9)9Bd87%AVTLVGKO20X60 z7kD_*(v*%!?c~m$Q~XWjP|k@rApP@=$b8~kqWs4<@8_zw^xIM;?;0(CY~S9inH(@X zN^M^eD?2nCv~<jK?z#fU*W_EP@KN~IAz+eNQ~T-_0CGip3&=DnSB$oHC; zEeos^EmfUb)fyjaHa-e>7wX9E0GoXeWIGac=!R(Ky(?ZvJ28Wpvvh;9H)*n45hL40 zYRQDXp|j(RA60XztG8DtYcGA!V^#{s)o-|FAgCKA>Q^#rH9ok^4h- zRH%IE;Zs-mWv349s+~T1h+qB09XerKrNRo1Vn_Mp6S?8?Ssd|UIksm_kIRIK*&Z1_ zNeWeP<2ZjL?<3re$&%4`iUK_%p~mia#Q!wt!UeC#p&a~d&&0k*eYoH(K*x0R%}Y6f zLmIcsPYb`fk;|`oA*bELUaXum|JR_Kr!KU;s<HViRWB3|B1*1jYde+G5t6pQYs@c~`G+X5^pHv-~Sm&+%|VagE`ZVem_N)0#t6}P$3F|aq~|Xj&BhbT)(Qm z-hUP(Tetv$WZ^sX43}9KL_!Rt})RuZ3k5A z(qpqc`F^E#C0t+*S%2fy@rautPd-1$`63xf5WUX!G@Xv z!lfdXqTdQhrsEa4<`qTKMJDF5X1*h)!%^iaFhdtlT;hXH)LC3HO4)@v(LEtP0&BF& z7?%#<56DEkMpV(Pj?`YyY7uy<`LrPV#%+{c^t6AQmhQW_ytv`~PxEi27nbm%?$#?~ z3XiXRc6{b_2mg{w{3?62R;X50XZY)`*ZS8ZBZf{QJbo3$!mwL#VI+-^0^$j!D z*Q~iGWG3b(7VBM0PY#zY-CUAZ0U>RXW-3n+DinY6EOmK<*4gt#qRlmLvf>Ph{{}xQ z+Hb}c-?KfrG|Bey*d6BKUwYXda<(%Uo(SZy=N33I%C;Fl-Hx7J`d)v+=Vam$-V;GR zTlnrNnF!kp-!6bJh`pw~e*W6&`pQ$YCy*ybPraW6MCcuNjpDm;@^N8a~^f~!QU*6SyMSbm?tK~S|5@~kEQ({QP$6(1d z`+2tAZIh@V7Fi{j|Jc0Wt=-2v8EY#nVXTP)V;Wv}?g`3(=LK@WM&Jg$QySKpV=@lI z$((lGdC70@7%UiSklrhppazu(8)!nc)gWFX~#dr4=lLG4wD=Ck) zFRtG=H+Z&fRfIgwSs&%iX~j@%TQ&9M%AF4e!xz@s#n_cGn?079WYJDlr<=x4xcCx%G2h_icA zCy|25Ls!Q=DCzUe4sH(4na{hrl1Hv~`VWnn5i438SCX%1#7PsjFJj-|Z@LC+?&aSv z9vK_)39@=3*hb2B)K8_XLHNPk-Z?a%+ZcKr{vi(|ve7bMB z=ehE|>x-CHeWJ6ersZWTe}vgoId|t)BD;8S<%5CWMiUAXz#@~ysih0fDYr*j2L}c_ z23_#__$?>rAyKOhc#$8m>bI%iloz$JVwT%M4Q@32Np-GAGN~@2<2%qe`+f}OTbh#y z@p32XboDRJ@bYWW#d(|Irh6{ZBgVDFPM>)airZZ=wV=M>y-(`0rNIkhkpe}Z9Aa&y zqP;KTg%)O3xl1`GpxGKfL1@a|_ea>wH0IKlXxEN7GZ!kh%b6NP4(JvU-?L(?2J;50 zdCtM#T)`V=l4e& zbF+zYuY`Kik12Y8ze?CFliqVYh1^mOm^)9k9EX=|RIw{boZlVa*bW!77OP@!kQlOA zuNml7c(XN!|Jd19^4L<|JHdBrw`$I*2+LYBS^vr>o0z*gTVYXCZ9OjjVcgS^Wc6u0 zHlTL9V>xZ2WVdB4M%l&MqOoq@Aq!R=4mj^EBwL z?{;YJnVY$FX{nKiU6md)H#E3*(eYiQTfI4f!&Nj^Zy&GEeo#&KF#T<#)BDFqR}QCz z-J46*k3A76v=A^SD<3q;XawS!qVCzie|`S)o?pdxK;=k;m})ra=+IpT(nskI(X-Go z0x5dnmyZ4%-J##pbaa~ZT>nfP&|mudGYoWePoZ?6zdvIRd>{P01U>-u-@h4SBj}C* z|FHm{$5{;jc>35}7UMtCAYGu0PTlajh6eC$Xy*Zez&szidbKw;egiU?-0qlp($TSj z4?gr71_G;ebPV3md!}BdI@$_$t}f#D?Oh*0#Qj{{4(g#(@>2kkE)cK#e10y@Fi!

Rp#Y>0vL!C^{r-rTlk!DVox6P3T|FRt*Tk=iU%9AqjE|2`$-~}3!QjTNzmo(1 zDPMf(<>jUzA>r%mEAA^T?&{$vAt^5}FL6amLP|;uctXq*4)eP2CkFH6|63*hsOJX6 z)6N6x<^^?y@g3BA|ADKwm-5An2Mzu6=WqRl_(A`tC79>mhXo8!;-ExAQv8a<|3>Bo zb@&ft2PJH-&4i@HL7V2-i;P+f$8>k#plKAJAQaL7>IOt4A zr$(o7L;ao~{n9w0PV{Dt>=fHwfuphNH&84$PJ{V1WEeaIp8ZDOvKA<}XGU0$^Y8jC zEbN&*2n3=(OV1R0=**#Cv?ZE?isY*T^fIlTFr(DsMRO+yg?qk}MppfvnEsyn<(wpI zib?iqKD7`!dIr$Zzn18Y{3z2f@P_3t6a1}qb9(w(1%|)g3_umia|kp?dX|6r=bB>h z+WM(x=oyrc9qlEaF*N$CQ}DMDf#wz%e~!Zcm(y7|{@nL}ai;&iEJu3>kNh0P<|RJ0 z>f72zXMSpBPiGY{|Ftdf_l}*O(^m_D#U#JK_>YXg)E=Lj3GZKe@SnBzW{1#?^GF)q z{F!~KrWR7H^3N*%QX=a%ut}94y#MVd*g-8Mgw6`_QymLYi(z2!3iy2Q?9c5}`dZ3Q zb?pCj212DJO>H;rBQ{EcX-*Y`Hrut>Yjw-DP8$)j_4g~_kWZ8Qd)u?j!8_Nf9wiN= zN9Elg*2g@1uI=x%siw*{%WXoN#_ zHJ%a)CU@GTKIQR$NA5@N4b-o9h+s%K*U6>wPH{}cNv>3G-!b>$%f!mj`!UL-hp2HM z+^bH9TO@gEW52FqRj?g9kCZfZyGy#KGI)QNpqkdOJyAE}JBh#{xXbTu>vqBc46VZQ^Mu z(5LZ0b4764qRpgAPm}82S`4P3q*1}oD)X)D+wsYrR@p?2gky{!qm+Nv+~7dk(ndQ_;D z1dI<3qwE!}_}C%SWvDIH(|>gRd!&R6bUR*Sy638kv1|2`Ve4WPu0K&q+_AOz8@d#!{{&Eq&N1QYa^p@d4`)>r7V<3O|@u95 z)>r2t`jFpK-375{vODT&&i4>4xi-Gz-k6o3?Yh}#{Lv4i6&Bvzk35l^fNEE9Oh0e3 zu;FOH+u<(m?=m=^l+IYU(nxh!ao_T&a<#F$ZWRny>ABW=mEe{i{Hjf#rbJVud8KZD z{4NJWdMc;%Fv5`t(ugAt0924pugoSGXUopdN-w8Yh}ux7qINwWBpU}Tcov;fv=_6* zG{+-Vy1!exiXi1XOp|)f&R?ezt8EmAPA+PF`A}@vw=wEsI$2O+Cw=$?4(7{+H*W|k z;T_}|_ZHg9S>~`H)mZeDVy9cX2c&yGjEr{|x+HEb2B~1E(0RQoS6@{Ja$%np*6BxA zT<66rzVRbxO)Moz9P3{k8*PL4sgq4+wqIHGl)lbHqT@GuRGUsd;xrk-C)rFKX5{r5 zzK?NlST39 zT2Kj{lqRW7ch`z1Xy+RV685cIo{)|qtrgcTKjQJ53YB?@uRzk4YzG5tG7%{`UO2eH zzOc6t-S;<<;+G|GZSWY!I8DL&cFDcfr>f3L=TOY!gONtLNViW+nAcBvMy>2u6{t45 zx(f4eXS2djo$IQbO?8rS%4_bzW(ph?rT=)F2W}syBCV&P*0qJTX&NEN*%rp9*Es^K zEEpP?f^CzJqXciHO>d(YBSzN;k@*|dK%Fc z`N*WN$@98;M~Y+S$l=Z?bN5u40<0J{o-Y|-_v*}RBseE~U(+OYVmsQ(=WEKAe85!b z5t+OUpV50pdz*QxE|b^GR~0A8-LpH>F}#H)SovhR?-~>YC0G++I9-l)iDnf}kq6SE z@01IoJeoGT71Jj7NYySO%XzA_`3qJ1lW##?@oV#i72S^}+d9V#f~`yL*@)m$H%&>9 zA(f$`?FcT|!%Y8$d>@Z-!Et=YV&Cn~#bvv&d!9sAq`Uecr_D0JNEnz`huq89>EHHC zQJK|9?``j~Maw*V!^JkK{CHG5wI5E%kR_!qzq-u>h1K8_Q5|}S1;gu%snmMZxvG^K zo-XQU-6U-p!SG z=wz)-AB(~f_51v88cmw8;?aAPMDfp`C@637CE^tI`f_-7}jmqeo zfrj?!!fuEKa2)%_HGu+$a-zKFZ<7l-whh=C4xb;|X4$luz~$Do`t7c@9YKDLRwfP4 zTCMn-)CI(iW}k0)+jDAM61C)M7CbgBq_XxLqf#NJ02{)kLX+jW!Nsb?xhWml#@d`!~!PW0}WeuvLZ$&`5C zw2`sm%#xnwY=dUF=Sb5e<#5EGKx8j;C#9nO27J-%eIr3k-8za8-VKw+6FrT1QxEO_ z`0|OXor#c$L!1flX`VWq`SWQ`6wPLDJt-WGzI9Ej6%TNjBjbuXSXmj(KE(8hjMfY4 z6DSoeaTI2HTr(4^b-1}^O()Bs9F*w%K;DfRZJ@3)} z_KR$q>N3YHw_WG0TJLRnSU1iAGD-1E->%T)#Tg&@fw&i%a5`Br95#{yV|$Zi?Vo@0 zDkf=^Tz<{QL+JS8x2L?;#`Ac|k(`AShWS@L(~0Z>_ehH14=WeedCVp==W}e0<3+ zj3*ZEJQ^F4%2Jr&B47yPzVyncZfnQ_7m^Ih7Ywk~VmoEm;SG?w;H698(DQ2=ZZKiAcxo3+KF`j3^XqM929*w}3Kdcf zW;1SQ_B^+V2ak?Lu1f`U(V`Xa(Jgqi#=f1aD#rUR{vAY0d3v|rOgzqAjwS=1_6W=O ztkCMF*(Y>Yf>4N^7T(O^ZWpk~rYo2-dW^Wx{>alM79{~D_;$Ckd^XBu4p?gR1!rAS zH-S%fQiEWD8dC`0!0sK&QbiBS$YBXnb&DI6M#5m&p&Lp)ex7Sz*qL!po=`@5kL@d$ zjfuuP6DtxexA7ct2(Qe(?J6UL3M5#{hhV9xh=)_ug2Yuu%%3JSwndb`xLGWz$z8B! zy1ijKL*b`S;7sc4krtB$=Sajzokt;6_sKmtG^a=$xv_gU(_Ng_n0~tkHgaVqwP8T9 z1mc_CT{h!TW65ZrCOpz(skm)ci|`n&HF+U#U(NtAeK88O zO~A?+P-+j0;x5O`XTy1W2w&W>nl&sD2yU6-xGy1&1o} zQhJ}t9FNxw84KQR3qBF%!de-NJi%?U{=}^@Yq>(;*+sDW=PkW5NAppk(5{rEJ`+W} z)(U9ut-uxE3AGGVSa;K)TxOs!@?%CkX!&hCUpVQ@FZ&PfGThBI4g7u)n#~_A_l7)m zM0NOZc+%N&8zz}lRD4!QC4%C@ot~x;3tlR1IptKKh13brM&{VR)6T5`ME9DaT6^I| zPsNQPqrmc@u;s<6F>Rb(jB=`Uw;aD7&cHEItlt5#6p$7d=F0j@9A5#nv%GqwvP}|N zj{XhCdD&B_|P66>x&uZ6yn6025j|J8c2&)3F+I4w+Y?cVTcFv!K!N&xbPOPpFU zaJQGB_0sYNM&KI?(@=(A4a*y%2;Oe6+&qjlDc)U9y%wJv+GX>?p!iU&tgdz)ajd>q znFJlO%6BU8$H9AWtLCMSqxqF^`3e6T3VhP;Ixm)EYp-Z%!w;W2H*6QMfYrVV%?3`QL-*>Eai6%DlQ$)=M6Vr_{V60-cF7V`ySxyr?6 z8J;b_*1W!qYsUm1^eHEU^`%8|g|y1-C>*SXVD0{}y#abQi;&4#;nFsA~8ePZchZPy!+yinkiwSl{NqF1SIVCelQ89 z7l1SwY`^8J@uz~PWSZ@>N5N*zeZ1?k?_IIp-Rt$B)P}7hSMFVVw{nfdAO$TekuqoQ z59X~U%RVgH9-o+mDpi=;3$!Q*snwh&Z40(>2VX^Sg@>;{Ji|6RUY}@_C=$~-;Q&!( zM|A11gDd7sYgybrB(6Z9CH0f>WlEviB9e_K6iNF1lx3%ER0T^vt3a}7wJ_7@Wr7Dh z80nh^%{y6gC?xklu_fA2zgGo&tC_a0E}x`>)F|`SxLyxBMejdQ2_L3zMdk zQQc!+`mG60#WlGYIwfMQS@CdEqsju!G4bF^?P*L*i_3)1rszjj^;3Dc*lJoi>aq)z zHa<*8bAha88%ioC-;O8GDobE5p~W*6UyjLLeP0-lx0qN@Y!>W12@hw|+OeMi?$Emq z-rX3xn)xgE1F?PgTuUhte>mR2p(ayov1>hfvDV6GB*!WT6ne^{X%oNMVp&2mW8<`Y zO1wRSz1fC=JgTVLE0pRQx%wmRDDr5bX$Y)bH$kFmd&CiWljNR1gpo{`)>P9YzwsT= z6^w(SPbEaXWjc1wn5ED#$e7x#xN;tJ>ZFCwD3ts_o<3U`9b^;+t6dbjb7{nE!z9e9 zwo{v`pz3WIElJNPzt`CD=)4}oG0nsYdv7gjVh9deKKEq>zyr?933fu54CXp7Y@H8W zZDz!Q=JA1Px$#;3qBc_UK3FYPQQB+!8lt##&mu@JQEkjVPefg|0z~Sn7&jXdrnfK? zLcs6IZ}wid$X*^MWvm3|VVo&|u8&yovGGcS@NVN=n@CWlw(%2pM-i!6aa+9(_#FbG zi=1J*8}Ht%4zX_7t;ePNHh=_&n#tfRjuVtwtAk6co+`EC4^iq#ZunLeGP*8Jf(J{4 z)@=-BY`-^HD66r5prFMHde|YkE1=_1LV3)_=0;)MHZ491(4vBA19c4s zSmSA*EKA-OwXfgETq5k3QabAW$@e=Uqi?Vr*$Y+$^9S0CZ9m>2y7}=LJx#&YuI`ik z*}EG&2~Mwk>!-P|JDF>AT1qGNA&?UNNksQdRPrpxta~x_SJ)nx$-4Xn&Z0Q|z`pY7 zg%ls_;zP9W&$N7q zn=v4Uq!Y2z44Q=T38h8w-4al~DrwjbQ{6-(%7k2M-ip%hxFarL!% zc+EHd&LX43;|X(4anW@vWH1MG60z;#YOld(EWdp_L$!bTIvSNp(ah2x(oxk+A+XV~(eH6%^rl~`4(B1}87INYa zHA!u`d>n#E&lAg)PlTt(eN)a+JRCi0U3_R`Vu+xF$VMeBPA!>qAhyS=M;`YC0 ze$=d=lu&3LQnYL>)fPcAEs$F>V<_6S+AgR>q)|jl%B>%Ov9|i5M7AQnk&+I*+`M9z zv19`I)7DI!9#0?~30-U$pg-!JHSl5ja`R=gTAFbF zrotXmqAmiOW)JJIX-wCpo(CWf7e3-UWNfC79g`1Q&phvKF(4LXBUI*XD7s7x=TS?~ zg))Z);#`D95K4HVcGi1FVQ*O6yjB{vQ9(=sI$S!J4}h+;KqjO_&xUlZd<2W75_B9& z$lFhlp!ApIl08&x{DoGp1`9JObWZ~C%>a+9)DV7WA*&p^?KtLv{+MW66tBQZSljXA%%Cbfo|^oa92-)kA+sQL(U2B9FI4RZUZ@7)E2cy)$FiuBk6`da`PxjB|P# zQKM}yB}+h^iCmI>D9&tYU5I6o^jW>SU})Uf&RtmYySClhqFMsJa?3Z#;&~A10C-Is zSsle3+eob64_>sGd?cMc;Wzz4N9tvw=wS9jVaW?hBWeLA%^B<25GyI31N!EZB(gy{ z&qb+ieJWUSt*Clpv|G#8o}rv7K25=vc70&#&{%B+aQLr>-QsD{?otJK z34#|xRIQyFB`6X3OV)sL>rIpyHo-@W&z*ElwJsAS4klWZQv^c-4a_=a(kfjMJ$fH? z!X4Z!sSfNb62TM9<$EOO@x6$cVnynEE?bSTlb}V2?Nu9cy^nCG7*yqDro4>LxTVL*{50W~&*v!4y%o8Y(TunX{vp&Au}3ygOS$|u#BBS?sCa*cP0d$9>^DRrC?aWU_5N0LnyfR~e^kjuzhn}jQsOBe0Xfl& zk(^Zk)@j}sosQhDh>uEXQ8`j6t+?NJTeFGS^~h$(&OAkx$U*(c$Q*AZ6A%R@TbjDs z4O2TDM4Dvo4}7R`c0sWLM=AV=M`;#w=o3b-xX`LouserqKw)?x{f(RUQr>%jYW1*N zb$_>vGn*opJoqmAl+vA23vL1VM^yJqIlI5O!IhWR4lqh_0G5(@CJ-vd3s`jWP95Vi zwh1#__au?EUP8l8u{PY*E_4Xn+`X`As?fgCb0$>kwyhwa3&hm z1SzM}H@b1VIT)?rJEgxeUD5jZYuJ}qbWx0fv*+FbL7QQQ<>AYy2WWG7y?w6gU}(5| zC;=^?SSa9R&QQo&`cmyR2fhqc4^CbNkR)p^+j}ug`30vAa~W^HgGM@66icf|Fg1#Y zMgTR}P?zg)ZS~#qvf`xz$BT{9suXJu@5i2znSRjyywV#Tl)7D7Uy|d+=zE*!KvCF4a$Q{R!}a+3<-Oph%)`%G*sFm~-!D>UE4$=yz>es@ed7kbH>^0Ac0#h#upRRWvE z_(zG;+j=)}26XON=<#mXuLLD7qT(q+y=^YRWAz{vg7WMEU|Vu%+H5lYt5r46?E|(?7%CO(AXLwmFp0Iu(Z=2T^UTZf$g@F7JSkxX;C(4>(nLyN=Fez#;@W!dlc=?&i^xJG-#y=V8GgI~pR*)Q;+VOA9! zKG=+EvD&S8?1qBlc}z{xA|4{jN$oU6rg>~plLOu5(BzC5kw^tA26vYe0$6)SX7SQ1u=jl7wU6*rZv=V36tT=wE}M0@t||u z!MkgC{BYZO3#nIvQ`hKAM{dbpa&|ss=a7g*V=ne@7Th-is|hx@f$iMFjvQd<>b5tn zCHhoG9Ky`CdhY=8jK(}@dLX4Mg1A!H&yrQwzUNwjk#UK@u$+(om;o{udM1RpI1(HO z{m@fBCnHS~41kd&ny)b(?%3FDiSHYlCc(vU&SODEGxea)_Decy`V)1UZVsY`>(;X3 z@7~wBMsC)@thN?Gr<0}@%vu))^keM2GqyIMiNc-RU$L521zV<$5xP^fcWdv)O0QhD z^MLV;+=UEv)fh9lcKYe_8kUD98cbFi=H|G1PZC(=5@{SJlqE;78$2~@(4Bg37Q8BD z=TC8#ie>f`?i^aVkFd7D`{#9wrbHFV2eYJ`b+45(XY&B|0psuI>;_ayW;fUOGPjH2 zT7c}A^pRxm(lDQ!Hrg0Rfi;q6Nw=zMmm5W&B7)HJ2~OWu0tt%5Ykm_1>WN+*s{;uJ zA=jY1k}bB7k%E=SCZdmKBSiSC?el)u+5cJ6Q|R7-5mOR>gqE z-pr0Wuu^3;964M3J?>_-P-v1jpL%rBUIBBq{m1utF9I^N3i^CmAI45~t7t+C((SUP zn!9T=K)C~)_ydcuS;4R~8I&@Z0E3w{}GYp=1d#eHbURM{%NU2Xt(q)_4KVz@x>w_e;%u@0;1DBrT1Kz3qI!VANlTpqTMChW_exP7zr`d{k2n`Rz(Mi=DIb^5FEh4~UYa0_;jQX2B`KU$KSc_^M}HWX%jR ztdja8g(6EL)F{%gDA?gcw?ksr&1orxq0ojce*}G(xn5(Sc5a=0G~nq?Gn{K#(7a;A zXco;L&B-2I{cKvJB*aFGcAfti;cv8qW zBw+6hA7obE>}}p~*IOu)Uoiu(Iu9#&)2&|R3}+`gwUF-TcE4V((qXXiWc`(b1>o6{^WFpc{LI%vUBLXV8DRIBW5>JOgYpFA zJW?eejAHOKflxR3<){?-l8A)CT9m@f%j=^jrs4Zt7?~A#Przu`NDC=H6E!zn8VkUr zLB+Ehn_oL6ngUDFuwdSJ+-@xS%EAWC9ATW2$87fWM+V1A29Z>C*=8~Fr)%KmD>*ZcpS7|c zmA6E9^reV;GCdH^DbCimh-|YzEDml?Y$^W+3CgtrfECEsTx-`W?p<*l0B8dxvM`-W zzGhkuViEfIdRLoTib=4o@4^M|)1Hczk5mShnU^152G&(aYOmPKEPq;qS4UMF&A!R> zK>M!#wnVcf*ftv^t{u=tmfu{z=^aMTCOqPk0VU04$7H^*wXfD{eGf{C={#@hc+~o8 z+=C!k4Ty!XQNyx4Ud-%o}UPFFl(>(@d<2%|}hV0I|ormt?9e zzv)% z$D$?eIx0icn9hsgQ8*Y^%1v3>3j$e+;7~25y_9=w^GepK3SN^?vAWnc%$=n zP7NtGU~x|5`*`3Gg%P*N^$mB5k)KT#G)q{|aV{SOw_oWLpz4+jgF7byJx$^0tq%5m zeCLD#!CYCe!XPXrj#D=DDpRTg0EWn-Kg3T`=7)N!H{e}AF+QreEES0fS9f9L^(K%7{ZQ ze)kes-Jy<%vVhBzB&obD_U+n;Bufts&jT+H^+#rsIBivp#Hsj7VkzB#&uskug4(Qm z%B6~oJ`>g(CSiiPV_ofEYNN*wc}8vN?K<#k*^UDTGG_K|obDr!Q?25}47Fv2tb#NM z@pn<*FTQaPu&sNXj>3+^X#QVahP(%Rm{oUINxR~*rv*MU5m8T ztKtHFl~HzP63rST#-r~~8Rsvili)*oZZM|D7=Lg`;HW~mC1UTCg#>|Ex+b$Cf_I2o zy53C%VP@0C)V0lA@5wCO$Ngp^#p+NPX-I)iRCr9}*u>k`fO3;u1m1a!O1au-(V&a5 zBZ?z_j@+IO^LBWLc+l7jE?L$)0sFM=>ZeFack@WoS!Dt25on#?knG*J+#XT*)@+a= z-W!!9DcBZE>h^cnKv%VVSaX{Q8Zx$~iG;?EOBR{izs_^a@HVDq8Ul)Xhw?zW z--Oz@Tk5OzE^kDiMA+CxIc+QljJ_e5D6{1eJGS&-H}c!s51fTucr)#j$@42<)4dLn z66XpILcK6{hm+Csg;}w8pLNcri&=0GTE+vBNF*Sxm{l6yYH;nAB2}KHQEil4vHhJJ z_0^EVxx|~J4~DkeRnk4f@1xRU>Bjva^?=>AI4}05Jk}6@_>JZ9D6XVB9z?xvlgLWI zNK<@0Qpa$C#DNN=k--}#kD`d4V@uf>HdUdf@pbfQvqd?(TJ!6$>6od?Lz=y z&{VY92tr^v>H#>KB_&C#W(KaKUG752>wbyH)(y*;7%n$IVY(9Ku1QQM36J;-4chE) z1}y9VJ4*_hAj9Eoy1LlHtU5O1dJnDFYz^Qn;UgmMN=&($&pRWqL1BTGXvrBZ(s^GB zt&(%vz;Qu!qe~hWvOF3zOkyc@`*POgMB1RPmK76<$3ej(2kRhkM{Y~-D7g91e2egS zP#T3bT|tY^!$O~66Q*RqVy`^!*w6YnuJNVX=Ovrbps!MB$*tg7X(Z=)$1n)%jSRk7 z5U*7*ZHp-Gg^-dYG5Lvu368Dd@gS1G(Y#Z8Vx8W+>?01<#T0Lf1CvbmX3HtX!c66L z`0tEBFUn-UoVXdj`{MGv$N@s+*rrTOkh=WxeTF=~33MBLNs9iVFto*t`k;Hoo#48l zn+G9+uTrd>ds4>u!e{CbKBc=APBVQ~TIM6Lv2(^uIloX8Zacra1X3UTde1(;wV z-cXmbejh(dya?Ud{(mK!}01 zWx{B2tvlyUTBl$s)nc>on5FEVS(=<3fml5`!K1m*HCb9FZU>`$eUxMwE)ebyXYQar z3OZ|_DwVIi&?6zD+)BCzBYky11UA|bdoK4^RzrT|OD=k`6mwA|#$48>akg_P5WV}2 zIoL0b59Oa>|D-di*E>s}_9bvZ)~f4?8f+aNqF^q&+$1PmrC8v)DTASAicfJ~OLb^zX9+o)+ zD9C83OFSH*oJ;d81~Z!0YYDf#!pbK}!@!JCE0#HZ2F346I&QEb8~d~^QXN9JMEY>v zXP9LOtc+NP8GR8$HbE&myn0=+uoe5HB;KPQzxAQb;5NK4sieEquN5D?QDQ+l9bXiQJadZXfR!%oa zbIYouY;RV!iSwQ^W;lf_+#ps`rMY3;V1cOH^Fg1Y?d&Rk;(-kheJgwgvzL^C0 zG5WgE>dg~tQZ6C*+maB4C5Jj1bvI0TeQANI-g#CIsi@>F<#Gwa`Rm1t9&rvZQDN{_ z5(}=r|K2!YagfAvgzH==wB~2T)5vXrwRQE`4!B-j`hn$h{98zCk!p`j+hBE0Pu&5kw-m|QFW$KGU5w@yAm133p{Klc zFYTt{$XQm71SFdtuMN?Ij8Cdo_0HVR2EB#3fU(NtPL4R+FCN7HlVR2xNe5;hBFVGA z`D$~gNR7mJEw-h~$QPM3zvVC26kDW%&8bn*v9)du(`ZiZw69;HmW!^uA`eDXt~ntU zacQjUoUTq#!XS?w^_(pAVTFpyB(<=7DLabB|DWv&$pWS0Zx0ze1u-z1Tnw0aL=0xw zP88#-4p?HUw_NGol5~N#8S>&DDeHxh{7>~+L-WQ&-2hM3?#h&#VV)JQ;VAk3Q?UET zg{Fic_t@IRmVmLRM`e(O7k7)iHR$eYmdCli0GkbNR2ze3e-V(AgAA3y0Owa_ON*k2 zmU^5iGr~3&))g06UTap=SYCvdNZVBO+F>vak)bL$v=Z?UV!%BXPlE zEz!eAejnYHf{zFCfB@aCkZ*+^PECP96zbR8ye{h-g8{@U?C8o%WxmowOma=AtX9jZ zyY;ulLmZ8Mr~HpQVUrIC6FPFk=;wldE-~QZg?N~Lj>yzfEoAw7#G{{!`?+%Zbe3Y) z>f;~i!hbIM_#FtYVVAx4`wIQ#UWSGOAx891gnlF#{`ul$V?Ui$_u=)qKbQO{=L85e zcj}VTh5xuP|68w1KL8#4a&qveh}3L>CH7VO#`K?g=+6^K7y1Q=yAy}KJN)DA^T%E? z0>M*^$Mk+Q@;{P*j*5x{9dy5b?aw7Y%HcSAw3qv?->*Ng^#8fY)*a|zB-i`U|7FPk zd44_uab(LOpICoxE+UT~?X?=ad-CVD(_vue9{DBnM zBkIgB5a-g?buIE=_rjvh6c9kOjOVlOB|gyy|4X%hVMX?ufH*+qpW9pijRX9hOaB{4 z``z;IS-SdTPU3+g6D#|2{09p5A8C%BHnjmHyZ z@!bXR9yX>QM!WrC9)N!M1K1ai@y+Ewm;5N_7ho!Ge)}dpZ&kd55LcQE}I_!o~N-}`@J6V!MPl~cO~Gv{{h5)@WPmak%Q<< z+4^rM`IGb-n3Y!5HriD8%E*g0`=j-1FI=5{#=Wt#Q{l`oz}F@3)gq0y66_iTyf}k7 zqX~HDN)>M0A?+)CwPWpVmyR`e{R~vOSmAr3lD-@&_U6cz3Y6F(B#Culs5gG z;kT13Raon6Hk>mBc)Q1Bre_*vPP@I4z@aIO6DjGOE_Bf!vM7nENXKnS=IV_DUOO1T zID_4t*9(5+1Nf@X7P%sva6MAGUY(H=jl;X-p5SF&9;(9h9ITEwByPA}B2`>ZStuZq zD%4tY?&F9sKEe%6ffK%8qFD_ zw0jJ7zonajHpzlccj@a5AeJik z8sdfHCENnJDx4`-2C&cob$@8>c)^^;MI1Q;gXlUUM%JRp;uEbS?IXd1rFmJsrT35_ z*2osPnL^fvsYc0$^J|lw-IeoOKnQttXHC3cu1aPpGo-7e_Zl8C5(rX8-nSF?xqz0+L}y|4+6_2gRu7Y+?X z^zv)nRDrfa0%J+fw|k|efXU1i-^Q!ZKe3zC@0$lju3N&)Rjt;@J`KciIs9EikP4@t z`_1We_aW6@Ff_r4h`DmEj47^o&<1O5?%tMq5xec9?*}6VoxU~!Ot>=h^Ru@$+&~D4 z_GxRPReMXujp%)FUn~!rhtiB%`n;G^q{rt$l#7EUPc-o^CrRhvno)oMwwY^F&G}g^ zo#TL$-2hKJ*Kc>E3S$v+Cx_c9wT<(_DLor-4Q$RA;ls8iGauCEDbMHs$K&y*I_)U> zbS^?li(^8{$(7Na5Lf04yZAm4rnWG3r`TRh@_6Iqc!P@(_-xxX)fYO+u^GKUfhOfr zAvr6VbcQ$1CQHM%&AyvFn$v_dsa>3|#+$iF22qVoyANyjjyDr)Bs!C-LO*V25xsrjhFULYWBd6K$(S5a6S$Z85nRR^2vq zO~1x^I~7X~put+LfG`lNek#9l)^<*RVXOnmwUQ}eXzeVFRM#998 zsylN5n)_P zYU=5SPq^nmhLQrxCLZK=ByzL)uJAi2-TE=8re&{9^!`}YQn*4#^}StKQ>kdky0_!4 z1NA>$(!agz6TwvEU@D0OD8huCanSFf50WdExy}eEemHKW_b)%f>^w9HJ^&UZP6^tZ zYD)U?C#!afvS(Zby5lI<1XHfCdf5rj5g3sLw;OQ+ptvb1Wz^du)w34+LY; zU&ux|9_6nxW2v09?CZs=z`~=6l65pGL?wDCjy>Kt>0b*M9bG6jy4yq!+za}S_%Bz;mq z(D2lWfV?~5~yFVJYOgrEWLUyqC7}!(aD%GuPr`L)frkHWDCd3Si zD^F*TM)H#n-F?+a8e)&N%oqmJ-Ue>zY01E1Mj3RHxIXo$tHuwzaku*LcalsXhh*ic zTXA@5?YM>U{sT_IEL|y>8AQ)@5Z|viZujvhF3PL(w}#O^ zSG%}g?i5}q8Wf+Dv6g!SKU>1B$e*4Ot?dN_jqS+vS&Ypc4g<2DjK@SIU$_%xT3Nso z@|c#r2^g01N`HGMPWRRBE90IaxY8IcJ%%&J{$tHMYme~UVav32beE`|b4) z-WJ+{>)tN%2U`FAF*fdi(3Z$=G;Y&isJHc2x%Zrg9&w+M1eRHIvck9n`BnqXooy4$ zz<4O_sH$V428n+WM`aVQ(KHA7^1H2_5NFSA?NEv2k+r3D5>$j+#&1uQDK&yXE>Bck zo+Zzo%R^O8e&r_G_=D|?6FK)dn~(A<1=-2F&AUw@^9^U?g}Mtj$cU3+AmQQZb;Nkm z0s)i&dE*i);&~pSKFh-abv|++?*PyA;-MiNp8%zBTJrC$v{R^xuZZmx~S@71?tSeVvAeb!d3GD}NfkfPk$q%hcBE_ds&fo47&Vm;!)^%7gXJ1x{oB*JWW_SXt~(r*>UcT z0YC0;@?lY=DPOVWyf;FLPR;YFB6wTxqvL8&b6`Ug-#`rIJLg3)!*J;H$RxiAd$^M~ zuB;M=R)n1XC;VhNk~$JZ@A0r+V5CUNP|?0gNGSHhbcPmVS?8wANuI}K$FChCrobZav?25^F~ zn6wY@v!vzW7Zw#{a!(N(?HAf|``9KF^8Pg=SIFqv*_vj!NE@d(v8fT+XRyDi86BFwu<>rp> ztn^Y8a8B7L9GD$7kAe?wv3o18bgWqfivX0eS=a>UKX{G}`JRH7P116|%V?5og6#I* zpITHHr+F8d#TTTLq^Ozqo6s(h*vZg47lyp+s+O~O*2x_b{=(}BG%wZ{6H~@%orDzU z)5mddGrMiL{Xnmga_H*^jKzmJN94@VL-)O$hoJ0+J?0ol;#wf*u=RrF8e==8`80K? zD^I}_;dBk*FEB~ zRCpdGDaz0munx7;up>gA;YpmpNQgMO@7!X67+dTdku3_Rb7!ydmG?_W6^vV=7Quth z8uieYmIB&4r)9WFwUkGn6SW3n^wt*O7h*MLJF8_2cQB#k5Jm)?Hc}Mh!0X(SoiXlrXwDAh)ImaqmVKw)h8_Myz%aZk_j;?nsm@nJ#^l?72|-E{@|LkO_e9e`|1y zRUTL{RwV22DvBgsIH&+oQ+O(T+}pqoa>i*R`+nlQ8f#pTnDRr9Onnmt3`@V+JAF4BJq~1 zS$KhqCU3uw3-1HPxnUvJ_eR@FF})2t{Z#o06u5AMT#c*6B#@)Akn%P~aDksz3kS@F zp-9sfdRWkqg3MyRFbqSY2}e)c#AhrVIZv+jHcb6!J=utzVi;r0Y~ZfWvi=8*k`pBa zgv>pF14X|SNUAkX`E{%LVBL{nQ=+7CS=05Z2CxI>r!~?^_B}(I}cW?w5verb*Xf*VE0+AaL!vwrN{U~92kF@P*Ht4e|zzZ9CjsJ zcmcDnRwBMppN3G&B#_^wxQSAWl^)G=oflG57#XglSBP7CsZ~yZYUaw`kfv~;(^vcU z2r=!SRN;}#Ch$y$?4rr^>#B&7pBT4|NA;j{N31pbhRM#go@D&31F=GlDvd(xv0J4j zwGs+0RT9^#!6NeyFojkSAbc8ne@bj>I40p!K!0Pu6uAzVnULkq`!bq^30RN{8j5^7 zTX{(3voE`x6Eiu_z~lw`&kInyiH~Gtu=bV8h?_#NLsx8%M+g2;wOn5e8UJ=16G|%U z@d3WXWEM-`ipHIZ?Dum~iV6k77)KUiatavRMKhAhO7W?VZ4yZ3?E8>8;+(#io1=Z> z;`Go4##rYJza|jaBw^bn@uX_y+@px++XhjIYsPd|^ksQ}>*ST{d@(6ZR(oy(XJlqtYIv%N*0T02SszKR zeW>4dx^6jt$_?TYt3-S z{kW+sn`HXzJcS=fznuQM5IV{SmPNBFa^{^B_g7!OpnMtL3*fyOo%pp?@^RXb%G0CF zp0VWigg4lK6SjZ>=?7e>m)&D=GxPIt{PRIKi`l{B7pf7`qNsoVs?Se|#AO%K_Y z_xeY6Wu|y}Y(9o~sleX!?tt4MS6rQIQKrGR`yBA7=WTf}IwZffs%AJx0QK1WqFfvW z^6=|H&Reej*pZkFW9|EG>z2WN3?Jj3k)20T$As(AfpvGJeJ3;OM3v_{!;{{x>vH>L z#h#*BgU*FWo!*()XJC1tL_wte_cbtPu**;8WrNke{-Ow0aq%N1M!4@Ykx7r zHKag=V*~U6<2I=eRA0=1OuK-Xd+I!2G=wPkQ-n4*SPHYL7I|LQIw@AgTxyObn^T=7 zcfXd^cL@519CJ#G0K)%F$}B!|J< zSCW(ww6p4YldgVvvtE!K3_|1DZN!0Xnhm>O$ctfDpIt5RZWv}%G6{}lcuE}6)0Q9; zKb{r67UUSBL~``=>Fqq)3tF}#?0RY(jWPu}-fshE$W)rDBu@7rF5^L2RkdMpt#-^- z<%LfxeKQX&d7s}>js%!j!cW8*ygn!O8ZP2S*Sx;I2^pVDzo8_GLBzyKnnav{4C0!k z2!Jsc5j9j{GfzL9UqgufaOBXib}af!G1WScmFq6fle4~XwVw>@5XU&r8C)ZX*1|er zsLqU0zFEFbyVMJUMLYfD0{hXyNKJXsenuMwp=>*ni}Rf|Z`>MT@G{O>^aEa@k4$sI zqh(|%(S_nkP4EkL>^&22R!ei~7Z0aFCuB(2jFSHHashZa9Z&r-yzvlpsk<6A^xMRD zF7wNCGW5enMuH(O#2;8^$%qNn5HtHV{6t2PaWDC8vmcq}AK)eUX2qu*GX%T;Hej%C>TY**iFa_!!1 zjDpLy#@TOBdF9=BDIUNojz5m`TIOX{F>1K6B#TLh!M0LHl@*_HSdAQ~xvBKik#z+H4UnT#^l>Y`_l$*I8{ zDrjp}3*K@>;ugsL!;wR8L%48_ig`9^>pqU{=sS29Orcjtb>;EcVO{T-?`CA$KbR0& z5vUoi+}2cG=&*Sq1e@@tJtP57*WlO1_jrvQkM;?T{zIXJ`G#C%t-pn6LS`|;VJt-@ zl|}r+G5#o+_ceS*d|6bkkRJFd$-IMogND?jBBx}SNKKy6LRkk(V);Ko3A#S}K?ruy8t z+15f8cHY?nx|WsQcG)s1nvLmg8!-kfG9ObQE0P5n^a9BAk!}3q=#L@!9%IWxMyJI? z<&yMgq7B-$)W#-aA5rF88?E-F+O<4ur1jU1e#UQ~fsPOp?GCTPJPPGVCdYuUiOu^K zcf1`*V^bDEFJ%!^MX)OhJP)K6eG9K|1G5s9K5y7Y>uJs@XpNuzMxtbOWvSB_yhQ{4 zi=`RnR$2Flw1xFT4=*c3^1ts@P^qESRR5534PWuoSp`cZq*C(_g52^V2>71B?njEK zQ5>5Y(B-^;8g$s`Q@PB;Xdg@;qb$~1Ll;zY@qv+xZ=O=K1y^BfQ_Bo->ZSPfs;^O1>Cx)` z(tj2xt@XP+GWMg)5H*^ay8H*e(AXrXxmg;DX_|WGuv`DE+g@GeUpn`Rht$_V(BuL+ zFQe*F07%iBc}PF(R+^~<4pnQ?>ZkvoViEsZo2*8ues2uTKpgw~BIn^3XU;JKzlBEI ze~jDwGn}x((f+=V#__?%47=OMOL&)=was|$a$LNJbmWVF-@?Bh`>zY$)aQs*;S*V8dC#L`NqjD)(b%NQqh)Ku<$A4!P{{4G{ z2*PBcT5U$te=-Yw*IyWmk%ekwT!{Y^?(pxU{O>ih@*{f*X4dRB{_v3e3BUdA#f{e> z3)LiE;{I(j**uwO7`{?pB)75M(N`^=mSi#1x8u@yN;0vRX+r2%{+mn(TEhCe0tSU< z$zJ!f*WZ|4C&*=cT`RQIP{)%gm%}m}o6&cMh+h#6JIU5RaJb zYpeHJ-*`_u^D>;x?fSR&h&7*_8|%;3WfuL{n|Ns#6_0}`AZNG&|LY&IwG<%r&hO}o z{6G5fKmJCgSF}LY@tEb8&wu>xe?8*wKO9@Dx@D+sy|)c5wDqevsEMQ&S+1Hl<1t>+S*!P zem<{r+D&WsMRCNcu{f*?#1Z6RC&tEXNe2g-nwk+DcIZ1U*xA`k8UMpNXk3V#7_+C= zw^13L@FpquncT}zDV(5nd$=l2!l|jD0h=lVZyy;OOCB2=dvs8vJg&d{@y&IWo6Z12Bn3b30tNGI^fY=M9KiN)Z_5QfY2?{7yf#wda9z)BcQZ#drU$V3Vg{P4 zY*((_VQXEbKx9n%;JzHdT;#LbHP6Q_W2GHN_zu_)B)Nr)(x43p3_g2?Uu@{G;mKfD z&Vk}`=54{`e8l>cy;i!MeL%+Y{-DPgq3^bK{h}H?lGLYvJIcP%dpcx2qhO&@W6p~6 zyT`}oGMAE66}`_TB??Nai+}xt>)tHrS1Zk!ly<RF8dBWmV7v*VSr<1XPmzoT#6qH8h^i@*JPcFlOm@DPzL%S)Xv4xQ210LnIn>>P{5-*s|F! z@~q!QVh2ywdhO|iG?X1~e*!%S>{P#p_R$xXmhxSXymkG~rgcKCSOy?@lRd7A?cI`e!swZ~Y;vL@RN-rloOipS3%H<-P25P`34 zz5edS->0QI>Gtwpb7T7M+4#K%=)VdSJJ$>jas3V!M0yM~g5K-ZtT}ZAzjc9sbxD?z z1ni+N=xeuE)G^oMk~RVEtVy~gF7a(SKf`u1ZGr`rE;|c=`_r&?>UnO-@{6wmAzu(1 z)6QgN(Ulg@iFOZBL7ge)1OkTINzhnlw`jf1X&%6Pb$#8NwUzNNgz2adUblQm}qB`gp$~;n>B};!LE<7=fjwLb;)R;H(uC` zA^$6pTk;q4PlzdCW^yqbl6WXNqj3+@j|=5w%1P7iBuu;cJ?S&lB~J3GuRM=^MFiW` zsM7U~ikJ1&A3Ke76&wNKipbnXwAA$T4}8YPC;>VLLyA%{^@bne@*T-6bOu?e-Ek5I@|tnMf?wd?W}i;(fGprU%o`kQQ(sH?Dg`RALN=O2$s!dwiW zPPMUEvKPT%1N!Y+%+w3hfIG1L_OsNFtF|<-LG<4CDQZj{j@}Vohx_ zD-Z{sZV7ucblixK@zJuy;89-SJ)A6{if#f~nk)Ll_H>?5?~3gB!Ql zPn?K>2_~l!jSl5DMMX={)z}x$`)uSmuVN#-^CX&+ldt066e0sMf?bDU?Zk0asNoAM zzcWAQ*4JbBPE`cMp@UPUPBnDVM)IQp0GcwifuBS9a(gg zI|nFax}MK%%5?i-prF0@Ye_74NGY~txcuv4_1{*^mugBTrRY z{3xv1!Tg@G86%HIdACan^s}PZ*`;gbHO!>q@vr9*aE$V3W+l!RJ$9@GeTqc!EA?}x z7CX}=gSJ|>=1ExaR&dwn521{d0asJhP(A_$!m#N^Pz!qj$7Ch$R+Qc?bk$v>0;S?1 z{95Ap<`H^PaGN3_Jj}=Sv8?H8!0L+XHv$xh0nqf4UsuM_k3A&cc56 zX#KEEa_|4OeVyJ^(@3hz8ENUql^uOAX`lg(c4DFH2>=_+gr?;$I5~SNk9PSs*bnFB zJnGcJ%tCceU$+x{@ApX-Ls>$XRD2#)(1b0^N@w=N?Natd+6(qSqBVm+~}1O=+a5G zpDH#itt9Ml!aSqUKg%TClb4*l`vPYz(}+i;$Oq`+Rem{^5Igy;yQ+C}KOEl0T2c?xu2n2%X#e9YxnQZw;bU*8`2$V7v<6isU z=9i1YpP1>xF)wLaTfc+q(V*v&Qf`I({nGhWATv{pWhwXl{eXdoc_^(61!qq|_#=RQ z4D@xfx-FI>dq@0NngOiimefp_lc`v>)ET?W@+pPHynsyaeqI2-07hZ3?#n&}D}oPP zS0^gkVb?Cug~R=}k~0F=8CjU{kj=`P>L-IgX8Y*g!=wR0DQmVyC*8;HTt1zC*pRzP zN}R6V{L)}{UQ3H&!h#bNw*f{1uXXS1F~hcm6W;dM@QuQ|!L`h65iBh&b-A@^01sI> zb5vI^QvQremPrXYG&UB$cQL31gKO}_jsh$_>DAp*7TxWF97`3A`H6W~uFx;dI`K={ zVoNh=_Qh+Y8A{1%ba;aTYDbN~56w#M&br33_QPKq2%S<$&8YX6RH?teaN*`kLHU4l z&G!OoXJ@M~lQoXL00O1gJc6m}+dDb+n2sCh;36Xa0I@27T0Z{;=@9S5B{y=oi4^8oh94?ynK`c!!z z6qmATp>-jO5FdZJ3cPqe+ADW#&OX=Aoa%}b>;(~}PYRiyG(Y-4bD(Ew=?Z9^AF~6^ zYEla84m6a#MTSc&qXZ_#VVccfUJF7}bjrVyWrZL8BXDtO^c^@DeeqNpHmvD3f?Sj^ z)(EotFA3~IH9u;A9RIOQi_TX^p}+Fv16|jEsl&b9cL&k$iEG%1ljfb%F`{NDp}B$V zX3r^hS6r!Mz z?r!KRVel3m&v;X2hH4B?5_$VF`;ekI=W*El&WseggZXy8l@spnvC=1Z>u0;hD+<(< z0%65sN~d8#TJk)rXwtbABWIh*gwiNq;ycg{3W?G$5GkB{Os{bfSDR*v zWYYfjBDQSn!pcucp3EaTnQi55qoWndx!}EB6QMT50dKx4rQx!Gz^Sa}c5~&&UEVA7 z)$W#VWn6tXDKkVqX?h${#?{o++-GHrVwZWm!ii+jNSjG#PJU$iRK`*$S*Nw!NWy73z zPrt#l>iR{%W}5x(D=!5AVW)HaN~YvP?71prAUt66(aNoT+kOMteT%S>TTE~q6l`I#O=ZtToNb^cayuo3Q}oH7xis=Fts3X2Ee!B$;o6y4@Q!- zI5~no_B+OBFADS!bmfgwN>q*_OC2UFGp=<{7+V-)yOXjb2=J&F5 zu_{nZcp3<`$h)XiC8>-9KpS!;r}IkSlB+9N2^N5YHSGK~7gyKXATvM=+*}tNtWh)@G=^Gb1&I`!>Bcr?7GJyI{)`?b7&NG-Soh z)byKz!f?>_rprl_k=B;Y{m=CD^d3Jab24XHL^Mhgx`H8{Qce?Ai?d)Ggx|olc%~v~ zR^+-9%BlZO6yFAilqLSuxqT-2+9(CmlY+ZPlTu5 z<7)<;b|PU#u9M1tK@}8~*53}sRloifCI2sv5X3|Y<8r60q;v2ALoz)Fb7O*?ihEEA z3-N;G!|05&rgU^S^aGJ%)94IxD{-l(_*|mMd(Y?iPBW$+d~l$Y%hVH3e?T%24Onm6 z^`$2HDkV!$H|&QUTz$T~GP5YQO{%R(Z3zrchqhxiOdi3Pm3Q%AP-biXz6^pmx`#(< zJ9~~}nn-vw*Uu-Yo85G#?u*%0xMzI7)?IeX@NDj{42V>3vizbDnt2?%?=e|zkJtrD zKA0tL-vOy7xh36we01RK=|&}fP!=VY7s`L^?a#I=tJ;zs3-ifo%P5p85KbsHV#UDu zF$V<9hqs=Dhq@}kKoJ>b|Y zC5cGh``8HTVesYoNpPjjinqW`t)SZDFTo{ov?NfkwW+?5@T=I`{%JiwKfi^|&mZ1F znvOaS67&vsHw5G6ear3@hR;M?pRqGhJ|?#aWTA#cbXV%J(`m)J(4Gj&>IO?;Pf4O6OBW_1da285gL-%r& zy^P+Din(`KM9CA7jj!n43Yz^h)-Y>_Rm}g&0;uY^hIYZ-*#>(!P)S%T@@1XFdMm{G zO=P?>qa3Dl=)W9TCiBF~>OJvuKUK;3>uKGP(|s4dny#Pl!Jf=ad6{{cS?^7$4~zJU=Sobff{QL-n*k=9gCsI>El;u<-hzcR zPeNPc>3#v~VixC{abq8-mISVspS`U&8!vV_@4zi6lWt_P!dj*4jB&4uRd2GyE5{NF zx&2W7kdP2b9c|VaX08MzU*I6D6kruZ)@$UtX*kJ>S522>nlQ`g;A%<}64r4Sfeh&MSj?Kr+={+i@e97#Cs2c~RA9M|K&=g49=sHlzbsJIxndLt)=t z?w9w$XKepVg&XK?ok$XovC}=MwgPSk7c@8C{!i# zR2}=9?Rx{L(d~HPs>C22G=RkCC6;-wh~gGZZ^Q`Mkl9lYUrfGf$-7S9tj{x@nME8; z?=!O$%n-pALr6@U%=)+c78VvVam@8l<)XfyTOCXdiQSC6S~n`yRz3n3&;~DrzDijL ziXI^kiY29WF~T1GOWuM{b^UySr$lwPN^A|CHETYqt1GK~Z``!Cp(~O#R>GvU^_c5f zP4TQ!T1NUM>Qlv3uqy;?4qK=gg_MNEc`UaqHIbT`BimXptfi#@dC!5f&75<&s>IG4 z(3z5ZX5&P#Xo-XVPL1lZK(uB5@j`D3W4;$SB5(YhsZKOfEV+TgpqD?n<3p_PM%oAp zCs(#8f~}FLzdIkRhg1$zI4hlvQe15`2C?4-wrz{(v zUi!d`MjVU1t?!w+(EVL+bTIkoA3xL6WiRavN`w1_YdQk0t>Sa#yBVJr1B0`D6w<{qfJMn zMwaKhH;V&}sNHM@=tyVj26}C?XFJ@L*FigBktfm%240C*x(=cX?c8aF7Rao7qHrg&=C`WYx2+=jMHI+*%r+7#@uU;=uA3d?y zw6t5(lTFTk80K$B_J<(k?${m>*N7^+ug~^*b`(T_erBSS$3jIcf&1#C@0pb!8TS?} z(bpX#zhl4tXI%%ZCe!WM!V-(7$#7P29zEuiSDQe9eiL+%ue|9rzMZ~ppRtnDZCVgA zC2elyn)SoXZy+~2*_a%>%-DTQJsye8qj;R)tZ&(%;PuU>w!0ZkS~p;eV;!Y-&+C4f zG7?yuWuVRejp6{eYq0E2p=vBcU&&Szb8_61`>F(CGa&!o|Xg{g*%XQrtopN7=9p3Tdv3NOH(`bOnq#%$sp|GD?8@dBbZ^<1HsK^v4>h$|9F{#7?{AZ z7M2*~q+a~#7~j=3ozIZ2&6VTX8mrb|Iz=-r`oHvjlvG8UnW#yv#O=TKDS!HG7x|h4 zA?~10fbnRhK4}kU)jOoT1^L(M|NBR|ehSisLZOS-oucySZoD^YV>%OW`^P6C^9e*m z&v1}NCzoUUxKd42F8>exrV{np&113Yu^&S=$gOz zQXdJbdz_E6jQIDb{O^HT$l3O>tgAWLw$G_cI@AAaWVe=8_f zpsSs7>`waIuJ&*4$-f8uOv*s{@nhyN_ur$cfB)cje^Z*L8!=ojbo-wRTnNG8a0@+2 z;(2*_?O-}1;jvpz0P~~d?Zy5Se!aXz@J3(2Zb%m30EwA2oUfgdo_>wYkddG1%fhBM zSJ~L0HIK?b0a^I?itz)=@vgIT>6+)x(ro|Rx^3MfCu@BUBQO>311?< z7nel3DsCHYZ*Q+^*5SO9FL{&e@GgdfR0+l_|#grHTLy{NI9 zYZ3CgYVc@!a`LLa^8^tP*#{-(v2QAst;c2RzL4Pfb%}Au&yj+)%DTy%KC|AbjhJZ zgp|pkbZX`kxrB|Tm`Ow)0XUAjmSoTy%?EGSTiiS97VqE`PEcEO9d@aLfC01{iAP4g zM!xay?@f{FM}{6n`Adsz{QOlkDG35=`63TR35$XiX2@4|Ib;^d%;5k&Cq5Z zkA$NB!E^JGH~Lugw=IIU_U~`PEjp*Exj~TXhqsl$#rEbu5P_WOL;Nh3Qd;6A5)Eb0blVdlH7KfgTP1b8FAi5?2wB`u`5@~kfd4?(YxdELO;RpLs^^aq50gYs_Jdez7+$J#1gu3fT2 zIg{sw^EjMQl0ttCt>iX7Q%>W@_M7=xOG2e-&%6nO7iB-plg&xJOzH;WR2L&=ilX`s zR>wIK0S~kvK8K@KB96#|t*8Je{QicZR1{x1u|MFr3YW3Y`e4oK`STEGx&;QMuacgtL-&2 zareQB!U-D4b3b7$iGas5Vt(KQ%y5_)`{N_i>GDS*=VuLX9*g>Kg^l1;@g$ws4Uu3P zTb3jPw;ej>Tdd4^Ve&nT^IZ*p3FVR&ezbb`-CgoO1xZtrlNkmm{g>Nwxk`W!iRaR% zf;%E`q+&y%nDp_wXN$Vc4b5@GJm;>T_sL-b3qS_ltKUmAB_RF?mDLm5Rec4;F8!2? zf3ur<{#W^Q@6S|B#s{B6Ig@8jj&~)uZR@g|3viMakq~ZXn<7q@+l8xrMcD_E zdV@!wD#TJ1+pKgC^Btmj-5L zG_oN+nT^R93~S=wBkrTGchx)PSbu*0-F5wLg$R0cHd@*9>x*h~J&(M@=ed}!gbCXpR@o%%uHF{8HJn=^=KgsI|ghUGDW z$2whso>g3Y9Jd<)6t-Jm+K_5P#gL`u!*AU`$A8L6Yi6b{U7q?7KSH4yVGStFNA&sW z+Der0W1)&Jra~)w7)cJu0(2=-Ay0t1#4AO0gnD8>`9VX$tPw}?+vH1N$IbO0sBf<* z=+l_M+Rh80n~x9fTHY%==;w@Pb$42kFVRS%GX#o-6y43bK7;;WA)(mjt@UZdz?627-i32Ep{A7N&qUd09S@C+%*C3zZcLt zuN|AY)VBfEHuo#kZz6m#^?i4pVdw<+8Nst zHQADJ941LYqlP2gUG+jM6@%CQ`|_!@4zU^N#f4udzb3CQ=>#S;C(DkL#V?Z-w>a{{ zBY_#r>LHlW3!c%%LZf3U)dlwWoOG4Gf*!H=dX(JTGbkFr?rSk?ppE%zsGGS*E}-s- z5JBd1g?<8Eh~z@Pm)iF*iqOm%V5EAp9R1!8v}Te|Hi2SSZ3NTg@G6ho$cnTae)}k1%;D{yAOcOk&0AttEAsiv1;c^nO7r5| z5)w%u;X!uGryJ~JVe`ss>0Rhl(fJ+ilAr4?&YNHUT>gaazk?($ZGZr`f0?@pUaibj zYNqN5zz=CZA}hWuH`3JIl*8!)A6|4puZBBlQzlH79qY&bdUHIh?8>-NS24T1_wBjQ zbm<1|!MB@*JWvF(`f^Pj(VW0$Eep!0>lV5^*qiq#gVynD zIQg`7X_$Bu*rKTia9XlLO8ui7tE(DREMzB_EtxnrQrInZ)GO=ywEQ|aO1@Q4D;sY_}|!0YFysNww_vqLxvh5)P;j=>jb6&5Kh7Y9 z29w1Jt>=4jzY45$zzB7i3 z0(4fX(r%C2@5ZW*!xHtMW(9MB3A~t|E`=UC>%B%op_E==Dt56f11VqI3)3s010CC<>o z!h5YwbhG-ph!LlIL1sV{i%M>uHos^24w=;x0f_b5?n7Qv$^euJi%nuFSu!;t&^5L1 zdO~zv05APbG`%@-&Z(o}NQ6%>$eV7+z*dXpkgOOm65c6ZXM{m4s%#_V@Appufzw@1 z%hlKW=3$ScWS}Qtr3CYo3e9Db-PuX~HUQ9BNJX6ibYN;3T^eCmvTZxqjj|GC5hK$=VIp(=`tS{O9&AFYxw> zbZ0wW_yCw6DNF)5YD@fp0l!)~i7wB*wZr8EOf_v;m~(P_3R0w85e-Al z;1#E%fSW*>pOjDtQ&SX2g^8f~)+(HOEZ=i7t%yn3Ij)VFxk`XVm($7Cj(T3;LxsQl z8k2NkS*_97pa!dG)HV6!y)JLhjAc+2bf~TIGW!7aq`2{shoOu?F;_zsm5f`P$z((O z+%^USRLuU{DKk{pip~`Q_Lgoc!(K&U{6{^Xw#kJ4s**r|W*Ana=AoGxhz1}8g*5r> zUd5dpS2|-Q8;U9f;qE%GNYlEr#g)4&_1#3D8@R-s9)WIebk@1$W1%|0^r_|1JLjOX z(WIj}WGV3=AY(s3JNFvfxHl8r#N0ZU^B*9ORnXPiN@dZIU;jY}S@H$)$n2ahuHwsD zT>QVqWK3|4WX2$ZbSF7^;O|y6lW(hvqV__vrzD%2!Bg_;T&O80JG%zef&-K?a=jQ= zlWxl7TezA-7DNw@WAbU1&}DTQQm*NPMz8DyMN*0?1xTl4nLi!^5oYprmB z6Bp)^VxTg(b`3yE>)A&RI>?qIGKITEP1q<)!B>hAXyP&hJ2FYfYy0MBPquO^Q^7^w zSK&^e7?AEaGI`IOS?pNm<2Y7gg7U!~h-}x2t=S6dPRjyiVj(JyCdl{h;C`bx2s{Rzj|0g7ZHh5!xm004l-n zVNy4$N-}+WRqAaHBe$vIny|P8IyFy9baIM$r=-+9zYV^Wveyb4Z?tuvI)Higcf3leATmiV??3`LLxEV?&v_ck* z6RT78!|Za;2W(+e71p7;6vk*V|HHkH3t(YkKjXAxuj*SQ? zI%RMpHoA{sMc4Z=@nN?Bo#8pg@}HvsFE9}GT%5S!3gV_)l*~IAh1PcU} zcVA;UcZz(Jc4PdRZ0dn5eH-)!m=(HsgJ_iEO;@0|c;(dVLtMQDjFe?D$%YhVue*(} z#!7gB!{p`WaxWW~3RyN!*}fcuXC5=_6kC1ddmSwFK`vx}hq~2g-BWIjKmJEn>36ay_Qm_9 zp(`}mzjrcxsP{m^;B5F)#2j!fivyn0J`}75$rH%c*hjBhrbi0(hOcE=iTiOk9GKKU z%Pq~H{R99p*V?URNedw3MN|csGDYWZKV|i0E>9}ud#;vb1RX@T&z`s)08yaz9a&kN zK-r};?04Mx247c>M^=xFj7$U?ds-IA2fVKvt98K@CH%Z)=_uTg<)cjbW5SzC?iI&NyE0KdhYk;3XsA&?tIf2Wy}*f$22H*J z&&PkbJ5T4KSM;i7=+}g99sRwe{%`U??it`D(1mWdQo_813}i~V4FEffm7(Rj;)w__ zg%&g#CLT`~?XLpVdwVLMbpd)ltGF=qv54b6aUca*6_0kG=E|8?t)c@!xT44bdR-m} zQzPf|dz6-%kF3BDr0C=mYii1~bS_z1}DV5m7p?~Y<4 zj@HBN0g1Kv!qVoMT?uzBz^d5X-mdhb(}J*?>6Fmi+}zYZ$MCoT>a2F&^^Yuzr5Jh1 z2~0;RM+s`2tH=#Myax-$6Tor%+`)+uB(XEOj{}O5o;1<|Ej4?Cj1pX;z@tvCZ&&8uDeiA7+L@B{c2&Tj74+u*R}0fL!NQua5|MS}UiIoamw>J%$3Wpi4LHKrm>*A9gBNVAu0(L&yQoi)Nl zZK%$VLm8_sese+LAh&PO9gyrDy-R-5u<9?Mc1Q1O;vqS!Pp6t@%~~D&yVC~qxjMTu ztl8OFD|DxCuw-O|$nm=m%-4enY&7`=eQ%3G>CyS~ztqwIys}OmGd!|uUj@rRW zPM%yHk)8UJY`i%v+VHbZ(#T55xg8J@t$QGz-n|WYlXo-H^CbcjxK&wjRj|nO=4fuN z3PDW?2^XRvDhkT0Gk+vhl>nvW$PfHMEW<%Ig7;cr9SFTS1g!L4Mi73D!hPF@Je0Uw zxZ<&!XyETe5P2XO0-$*dNDUDYk#*&OZap9fI^1&*5x1yjODaaF6Az~=O{_##b8^T% z;`}-Qcv`R7aP|%Fg5suw7JhnL5ZEJ52G4)oEdZA1?{c!)z8K|w z26~_sDu}-b;MNKA5F%1oG*3F@w}Pdmhl4TZ@lyOl#PVQ(wp}ZJt)E8pE?6eQQ%$xfH4yOM8RI|#c1d{kU6YrlYcy@ zpc_{qww0TcW2`Dy;P(_3xxHkR;MX3*I=kK zAx;V|3qY$q`&Ee_Ik0Pst4v+N8`DIZ$3;q7AS}77J*NVfuMIK^p?!6iD^a7x^ zg!m6(KER~E5fvnZW1!_`Mwj2`{$sI06p8G zsfG6BejqF=ex(MkyR6){GYZF(L{p7KJ9bl{0}}W-%cZ-mkBEX#m#WpI_qgKC*ow_$%T8%72`w&4wl6cH zE@UOluGG3g`$mUtpC1?0O|+_AJ?|yl$Xo&8)4CZ0C5QLLAnW+e`bh{mb^d`@;5~a4H2H81m)W$nEVk?vMyQ^cBs!m) z>YF6^Tkd9ay;>zV3RM=zwM{r|jY_@PGLya<2Ono;)s(9=s}7CV7J~R&z&iz z%q3ML_K7AjLES9)OJCnTIwMse%1Ux;es@<12Hyjm)9bDgYB+7dqE6~w>tdj>REQd8 zY=9f;wMmmBue@?D-nMjO8SbM&2AspV_kfB&k@FDd{%!C0*KQS76tm^lK5PR<5a*~L zi1uFWE5t8&|7t$gBLS&rj?&M-B;hqNM6SQ|^+;%u6r9H+Y{Xnf-#U9X4%0;%mPIN**bcIzhvIQTbMvYmkj#dghr?t4#~z};OO;=V`x7vV26B;S zhw|&){4M?b&rwUDn}6d$YZ?CEw(@_fBCsdIqi+MEp$7lwZ~pzWVOR?sZ~+6q?&5#n z0&)fN@4_tiYc#0awYn5z#*F*2{!?Bjjxu!d5XNxVj;VR_p6a^(7 z-1b7FzQ(vJzm&-8*|zyWRzSJ2gh6sVd-_6u(wHuN!iXtO73;Lu)Jt>~-Gghl(ecbH z%Wo$qXbIZ;xkC+$4;~C9g42(Uzs~wBT*>3JnMdL8-i(Evd7F#GmoMC?a^!T4ZRgf> zu}(}TJhS0P1ed}0`{-rofkNRkff}Udc(204oxY7Ef@jZqO{-9_|8iho>A%g-CpTfR zy~G9h@Ou_((63t;#(^;>uJ0er8CB96?{EVhy~*vLc()7fBQ@#gV_@XyWu8PH)8aPB zP-AbH*7O=SWU-rzqfE>#X2!+Cdv@g4awRP)+p>8A?=WpeQwzYPFSfwbZ7SgDD%RY8DW1YZ zaP`5zUr~y@0J>yUeG6p5a8)bUKDoK|30CeKg2Yp{=cq!V3pB=w9wl+g5vvArq?nuw z!vH**?YlOFQ0M>ej11F|JDXuB+anw@QEu@)%uC zcg7)ghoyV)EUI%_DpAhnxfWlnzz%qxL;Ws{imWz=gGM z)uxQb(vZo-1#|%t?R#F)SEJkK3G)=(E4!Q-3ph1l9I{1mHY&8H!Fj?7!HQ{3g_DG5 z%uwgkv+ijtLoc?8P$rh95XeBN)8}e&p+h9byG|2n*|isdnu8J4syo5|@1mZA6}5H0 z`}p|Ox_Mj;yK>XoGSq5w&tI?P_!~2WBM@W4axR*|FC3PXV!1Zw1Eb|~T+io|dP0pY zcQ+(BlRxl3gtmNW=}6K|`R$-MhLF+E^%{pmHIi|by#NlJ!Cv$H z^=;qt*u#bUe;ifX0lbYhkGXgC9?j@9kKB(z{hjpul8Nh6I^4wB7^(1b5TsW*t+;Y> zhiBU8L12JAZ&lXzWXN+XsEipaowVU7-5PS|HK-R9SdOjnoArTnB@wWb$^m(io)_?| zyfPw%)fHB7Eo0zQ0(FJo-!P*5s%L|wfR%lg4=@ipk4}%v1JXZ6FAsDU=d5p!E|!_` zt-RYCw~ykXKJ~jJ*Qn4uzsEaP+pHAa?vH0g%L#0VbZnrttk@oSC#fR77Yt7xC!!x9 z{UmWMVsk2nBazyuQdEP#u$Lzw$P5x?7sowO_8AHTy$+t1!g#wOtQvkwG(hLdn=Gwg?C7o9|V2BM;hHr+{W=^uk89SXF(zd z2Z*sL99>iF`B(c4G?z#A_P@NXl>PIlcK$djpnjI4mWb`{WF~f)UER3&#>Rz~t(Goc z+c>i%WVy!aEPe*Vh%t1{!h^a8ZO@lzEb4?ubNm~ek1|8hw)m_|SiC(0Eu?ymXJ`1a#@ zb7rj#V7#o!{CcjxisWBe1!kS)soq1(y=k%8&zm~#JMAzO{A68XelZCW*qXFTzTlA4 z6YcdQng2mgeXLW#27EuX@W%y8A`iMw{!Aqy@nfwD6goL_?!a;43~q&1QrL z%%1)fOd@}?MtJq;&=5-hr@FU&JH6Mj(}7LH0HP5=G8x@}k)r*%p(x+hTSYAx?PVZ{ zD9i|b`dmag{5WZwfU!Z=QDoK>v4)&fO+Eu#_ZE4*=Nfk~Se+CT0JAdmCj6z6_HP&Y z>xIkd!`~fUvX4$nF6q?tz5MxUQ==1RfEdcKs)E;u{P{%2JO5)t;2Cd=KLb19VdnoI z<<9@}LjQAMlrO+{mr&=*)s1P4XYyuf!Ya&}Z%NB0kvVr?a=vEGDKZoZh6xi6QE1Ct zV_tFtU~AVW+9CXxwzdG$nu;F>{ghm1@U!%(H=Vdh98 zBSXL-ytrVxTU+mvUj|6?$@*KmU*+O|*88`gz!*53*B!oL`Gj{g?eaYeIZ?Lo-8}A6ARC{$-mzY463KXlFMuuK@9

W~x+M{xAnL1jFgSJ$MNjfoan4WU^V~FDYci#6;10O)X10A)w`vcThqOz zNwTW0eqB&lxb0b;?8ud310bq#p(Zl@)yW3KO0mILQ}UdEM}RXJ6Z4C&B9O)j>+YCL z{zKau;=o811`FMzN!8W#_>0#;0hjUGmx(OhIYuG5uC8$BR7M6XJ~;(^@ZHcA;Kqb% zd`WsUK5n+Z#l{ov64mbpvz&4~z{>-n29bVt?I?0>5N_i6!0f1}u7_iX3m0SlT>b@x z?bo0ml7rVE*HwkR7l5shDS7b<|1aT}zmejv*RqMQ@Z(4fGJrUJR$Ca0P*d1CM^Tb$ zbK5;+!w49`sSdU!&s4hRAC{&VcyCu9f)=$bS@s?{@2Hc-?ab@;3h!V zW^q?CoTrhib@FVQcE}jz>HgvOX*Ah4#E5qSnIuOOUH7&@SN1a=cwtD$|E+o zW6a+Xsch804gJuI;*JH;rd~;{F_Fi~FV_J0&>v(9nngjMygT7#289Ua&74g27 zvG(6Ivt?1l)N9oH3-ZFA(x7TAZbBJ>DS=BdSP&B0f>1f5dpF zRYrM&ajcW>Pt)QB^qAZ|a|rn7<6XkUJGiB+*0V{RuG){9wlAB1uy*PEkbY*V$3Y0X zQ-534O{seRVR`_XP#-zqbgUs|^?up{{$XcW#Zyk7+s0V8yu~E0NfYkoC%339u83Qx zZh{R9i;4qWt2f;z6ht{`hlkqVestJfW^UoJm@7G|MMiMzXVU^_+Iv*NWcs@(E zyjSyyEwdQv=Qv*AGkuyt@>QpJ)~xbsOUP~W19K$g=rUGxCve{y2vT706fTMT$g|Ir zGpL?}v_DzPdE8$5tH!Y1gY;D7>i4H??@uFcnkV{9kIR$nHAiZ(H|#Hc;~?gAzM3mU z9@{-w&;iV0*EUF|)u$3aFGZF^>O||}TAx(hEP}BVi(0wT3SeG^8eslSXMVEi_wgSq z4y%duDFk(MImG<)Im-FN6P%^6ZaWjQ?eB9h8&OH$i57e=qr58dp0MUMWJzAA${U}v z?{Q>Mb?FsLSes(T<=nk_ahMgmyRKxCihtzim`UGzRFt}^EmAV9ZM*k9r`-6%`FLgI zh@rp-h|LU*);(y$NE3Sq%I{Wl##7E!FIxrTI$9NR+_=K>*EfgSiHGcy0_x+Sw322S zt$X#dn*98mW12p9*OxU}yLQE2)uEW(p}~cH5ql=B$e!a589pkHAVSS)17%!1@NGQo zQL~hnis7B2?OZN9+*vFXghuk~Z_lcnURi}(2v0DB(il6ZOg>*QH1mKj82Gj&c7x&O zC7LRdaR1pfbMrc0Lu5-AE%=V$o$d~YEg~v5sl{ryXLlOS(C80D;!7ch z>R=D5aHy=uVwi%2u$n_H5to6c@tkLOj=;RoLQ8U$%V|6r3pu&bsPd=1){7UFi+zI{ zAuo?(av=JSTJ~Pdcbz`sad#^mrCHA{ZejBV?+UUo3&tGqSpsBVC~sA-HU44^E1Ku)Xp+MG7 zru+j7zz$3eAb@W=7_T3qUOgNDw{5UM1F{ttdu^Tik*AdLb%t7)0;_4d-TPhET*vVo zqG0+{fyG0kv9#a%?Gpra%0^$lp!&Y6yFJc6Oqz(w8Avm>(iL&aH2P-Xo9G_Lc@WUs z>5w2@xj)N9pUgMBW40Yq#o+RMTARXkpQ=RXTST$C^3LQ#X3=LTi8N!h`|T}2U9bZ` zzvB!LlFgY-o@Dph_z{Jh#naXo_c{mqW@07>!nELqCNcw>x;NpzdccpY7hc%m-tTkh z1-CfQ516bO5baF&R5v}GVtW2ToPTx&sg;%ntV9Qfe6G?jb{{qjs4)nXD}Ct7U^26O zMw(rL0Jv-e(EGd4)_i)Fr5mQoU*C({r`~qAXaAjD(Y2Q(88l4uqq-pK#~r7e?_5Ng zMG(QafKh>u^XL-L*LbHu#FOl}Ziu(KWiSOiCM~Q{iqG5IpAg08>hkK{77-pRPq-5v zBHUG<-vl{BrSpU%4b8Z-wG@*r=6ndU8DW2P(}m!G3sZDU3ujq@oH3C zb|c!HfCR9W8GG|Hc>xFR#gglq@uFyu*!m8Ok5byQZ)Kc^`<&0^WEo?lpGW#yHj87E zYJaZZDQrS<*9mnfX{jPq@0yH9q+2CzVSPL@AA^BnbKftqTX+Ff^T3Gy%ABF!r{8D% z7A0!+0y9k`3>5l5%(g%G5z$JMO3Z#Ysz}h^?J*Nk6MOWbtANR3C+Y|b7749+{@QA$ zsq~gMHly6U{~1sAYnZ%0hA^4`!MifLvKl6ip~6!N>3)vqNgJ%PK8+k^S!kMU-9QL4 zwTdn*TA@08bxw;|i!6$FGE}_O|MAG~9s%Cj^2#P=S3G3qna_DSZES%TEybM`MfN2M zz?5#d-$3;+fM9D-$iLk{L~BcPb^A5HjWx&3J0bDeK0RTBi76-4s3VN2ZA8SK(_1+{ zr2u?SR^w2ubpa{{;LML8+97`s=ws5dmX3<`%b^N6L30Lg_f|@|5uN9a?qNP`F>4An z;fSr1iq8U@*Mf)LT6leo6@?>p6_66AsaCW;Fao0`E0aCIp;n6}Q+@5m`iyFa@ z>ngAk9Z~^a#8hc5ACz7fqoRYUXvp)B2fwdhLTJelWMhW%3M#*GH#xa4jylq)@9a>N znWy5xZ=ZTzOg*j|CCtGl=JKVEsa!#+u!*={Jr!8oomQ*;|4trqo$$S{E>dr+I+c!y zUpZQHcaN2Z7p?SZpD2Q$b41;P3AfR7CW|!L z3@x)I9pNbbAvt#sGH$s)_wd0`LuY}*Y5ToX*cs42 zLmK5k=?{W7DAYX;`6Edzp`4b`a-laAJebwT?BwY+;+_sFm|mDhMNzi#wca`{Eez$@ zDN5L#zln8!GIwU~YIIu|P^cNdj<+wR79Ws={g119)Io9(Uh1ibTI16FP0`FT-C>+d z@dHg+AMzmYB!}vpV8>L$pz^vDRS9rNb~l@UWU(bQ(sKP;re7v{n%LMs7zKRiY1Cjx zAGTSZuj$9*1Zg~R7)f)0Szg|8q&{$lT9*L3ITzdmb!#A+5i^Tz(D;YA{MAW(q?G%G}}u!B$0Db$-%?2QGT%cssRw8~Ax zsn1xxUgPebW>s&YQ|{eWD+Mx{{ENHn_W1g;Nh=3P0X2`6_Xq$%Z3MvIVir=quFjTG zdr*9+uZ+#vjE^RyV=-`-Ho{Wjty52 zBJj*ba5)4x%@~)FhKpZON1w(pI2Bcu3nlGUAHSa%>LWDw9spB{8QAZUBIq) zrP*`Uc>MpuY~%-Hm%QbtYuqEm>L6NEHc)?xVHCFb-H*My%Vr=0F;HH)9-_@Z! zVzBBO-D4%0(><&_er8wJ#B=6QO29J1$}tv?bZQ_aJwTbs&wbfaql6#neiay^E$eh1 zzqjxmMZ*7inUs3M*5i3;<=P=nj_V_q#U~tk$iFYilaw)Eujss)mdmu}6FU$VciqR- zz|bnvoHEzGI}+1xO29GH+0CBt7{XcCU~WRQJgev62s`C_i@$iIBQdFQHm)6a_rc{M z;~n-;^PC5{KwFm^s!Y&-+Kpy11?Dm`SCc23eUDhol;eq z7Q+rR=PCLn6VW=DwQruPvxjT(aLgY}vA+S-^N<_3>>a5k+1&Euj$|giq+w#vO$8MR?Xo&}7i2BNmx=L_UD%Mq0?X73`WqvYX3708D!;3I zMxcVCk@)$jM>7z1N=*Zml`M!lcj9NqZ#2~*+s)#hTaKRd0l|_@iIzeVjniUsAinf! zMy1SpU}MdFs~=!4cH97(U#o6)rKaT@i{u(TkN~OI5$p>8iy-?w7AD}2 zgo2XHF=R7C+@p503#8>zbrxf4=y2n%mc|`+h(V(&y%qBKE>4Z!u-J#&v@4IHiSn681P+Gx^UDI__L+6$pbh!`k-Q%&)3`#MORl)8XoawJY z0FG#d6Do>GBsg#Us@)4>+28ByahlY_j%?lBR-bQDOrlktUxTb>h`B!b2=_=+BHs$w zJLug7{h#v>0LL@F*)qcppYmf?%k{Vm?)nX2^zq!TO}4z&za?9`pL6TpsYxH;#WcjB zwRp<(aKjvBcfLtnD4r*K*mziahVu(H;`IZsZ;tP!MV(!lc1Q_4-#)=!#W%dYg05h< z^JUBi7=NHeA82`vd+}=HFC}sR@qejBml!nAgx#5ehCaJ^N8&p3u#0UCoQG%S-m;0q z#Kc%3Q`57lKki4v(Y_5VL=G>9$M1ltZ`!bcM={hsl%YyGgOpkM#{UlXWRA!jUELPeN`Gj9Q&PZG!+%> z(^kwdE!pS2D3H&M3YkaTxUNd{DhUGqA2KQUS5Pjq*fYkHZ3wYTNGAH@8IY3gi4b3Alg#JcAG%o`G*N?Al%9RL1|{+MUX*g~ zMUPmVR61sVwSE52RD@pG>U$oTbMBHHR4i*0e}Oh+S*9bNAgOD;1?N=MJfUQjZCp|= z2+^{XFqtvj&S? z3wWcU|@ImkS z_*ABKF5b|~W1Z_3hm2+$(^6M}d2ohOQhrSw{YOE!QUKOx;wEv(dN}`O`%vB{@`)a^+>v2kOTTB4tmKQnN*G6dMyhf-PfU-4muW#7wBndwxWQGH*U&(7 zv&!)--aJ8Cm2y~}%7chkkg6bhsTFrY0_9r_v>U|#rT{8JE*VNF;zwh&xanovmMIz$Y z%Jj2Z+YZ0F4f(rd`uk7EoX_pWeWuY8dYISVflL^O5jQ zf7eXcV+Aa*k!k<>B+Tm7zibych9Cm?sb-c4=eq=IusoDe zLNjCfWQkA6mb3WcG<|(lW0f%r&Owd@JP%GKcY_eeg@q@O{YVG;vlWr-pKijoigdJ8 zM(|1i{YPq{qvOlCB!z}%9tsUh&$3uUXXHOuVG4k)u!dS>8ez z3voHScNFa^X$0e%2&Tw(kqaUan={|5aW2gTV@Fi+hi*oGkl?_67!?!6WT%=EM zu&-CtV4~A(j7{8B$C%8mhV%19%P9EOy2> zxYpsEjOrsIQwp>f`V`-+zL}QSF{b^pc5TB~S1>?!+PeRKSy-{jQb)8bryhfHP$t&2 zsgaYHB{L;kFJ3{k{~{y+m+jEA?XsJ^dJ$zuadak(#$XHoy-}eF+NNzk=*#xYaa0A zH6li$3QxH2N7i-nCvhE$ESaC%jwKM%f2QxKleJVYqI2C$_R!Qa;1QsCvQsk=qpD^& z66G&^YN}TE7D8mc+)_c(XT+nRS$h_yKBHVl^Zlinm=xE7|9k1ajzfA!=YDbcSB#>% zmX=Zv9%?lW4s{MD)2WsTP}9&P-vc@-nVFbgOixcM$jL3Cq$VUp0MKdx!feKy8+OaR za~+*EF61-2k@4|t??BY+6=`GR94u^XF3I6-hXJivRi!jC;_0z#X=R1Yh>wT&>Ey(5H$@o)vhaH2 zT{$s7Pd7R`s?Ia4?LvT$|9N?N2};}Lp=)U3DFbxpt^uI_>K+dE_H%`&brbQ%Mn>X# zdg(a(+Y1mAXP=z;)zw4y$s_x|bx@mq>-FBwz`cw6WMBQKhUZBdPbr$6WNjL|AaK2b zUqQ9C&v>dv#XdT=B|s(8C@F;0qg~k&oQ2#*h@Pj8Ak?eII&wU+xe2zJA0;T=HRr`z zI}e{uZfhc~WFQn(&qAJH1;G>EX}Y~X{;;aUxk)ZMowA4;k-4}-_LCC?2r)T*ECdpR zyeDQTTn!jL2}(_K7{xZrH?Zop)tb?FN30Om7v`uY;+1M}UI}$+(hiB~hQTfPc539@ z-!kZGz<3Y&Awap;yp$MiJ&FTdO&Iiy!=Y(atq5bu6}QkOVE5%8a_`YY@Wkx!EcMeH zq(CuThkLX+&v0dGC!^JxeNmjTHUiF+!i3vAO3JgB(Klse7oS?Xm}@f9^{OCuWBlO2 zGMI%=ey5ebK9~!xVA6gHeE6k7>wm~)X;hX!8t8l*K>WdV)y2`gj8*cS%l<8<=^MsN zpg)bio%J$K9*2gsu?S)dVVc_T+U(GY-$ zvM#TT?P`8G0Q7e@=8WEl4O26RpP!jgcLUnqPIQr=&w){ApsnrgWVh2u0OYN=o7kr) zx-@Xvb*&eBmzk7Q2pF6El!^-J`sM7mZ=ZlxZLz-fL1|>AI{-Q64bbR&Dyb+M6anje zw=fIcIax<|vpuQpA&sfozzaz}G)I(k+Y9+z_rppD+c#VkN1iX<;%){gI8(Z{ z#tnwQ?ylHd77|;uCMvU?9cW7Y=Qurx`s+8=H9chkO*p>|)!kzrS z+m<7veV(GmZpe7wF2jBvkf}Oqbe0d4V8$OS#HQnfRgSYa7~r_0pyKk3CWoxPU%pIS zbH(jOLrj!`e}!I&(C^+J+KGxV>+EXh&oK!MG84k=@ZOZv!3c8pQq#~#)NF8;24hrUSe{`gTxu3J63n-F&jbZ^G6Sxj(_y7OEBI5Ej> z2Ya)VlN6nuor8=?t`>ok@C>-%y?ZM!90PEd78bOnEm0U+n|F@Z`qUTE7XgSz8nqFB z11p9ZcrAfRop0~+aCmZCEv(CU+-gq3OuY`t`q>ud#6CEl;;M(99(%?Jm|2UAAwo=% z-d7zs&t|`^#zyRY2XPn2JZ{xR*;Yg+xWa%w>-&%;h8tqGfMk1pJlNSQ7v`ffBDGLK z`AvGkV<;sOP=*4U=&f&;Qu(dM7tlM|pDnXKa?<&+kp3~Ztz+{m9wuz znxO|1LBcbb5=He*)`OAi?HMo20XoXt`Ql+>ELkh-FPcUWTys@;U)!;~%zUnwm7irm z0c@R7aojy#Q1|u*xHFS+%rEwU)_W-ow<6|>848+hbgKk9l*u-r4Ibu1fPe;Cdyx@p z(Kp`Y&5n&_xjC`9H=U{sd+aw+08QgjMMbnW!}r?X)IUV8eAZbHYr74EI|q;$jsQ#w zGp~z{%Hs_gJxq&nYLGRn3? zNcpBW^CMEDb9SNmO;!0NPVEU;6GFLTqO-z|jtcsAVX@IM)Vfl~GQO*+F7zt?_Scmk zUiHNjc=hLFkN`}eP(N!2ZYfgT8x3-8n1U5ul; zyV?WM`V?h(vmg4OJ~})Y&UD~0gaMieC4GD#(5R`VMpfE$mN4<$b?%gm9T-W18`z$n zU06^M5f+AOW^H|jzG05^}5NgM*OwKp@5Dd-k1i|+o!=sN|#m=8vn%%;#@3!i@)s(`JEAgXJs?=1hiPV?~d%)Ewm*=*8-Eu)u} z$YbXhT|6(Z?V+Bt1XAATTt;QHi4O{BK2IZVU3sozUf9H}&U>b!LMdRPdIQ53&jmnS z85C*7EM|CDt1<4t3|z{m+Ha}dwi@d1 zj{cI!bui4q5)hED64U-=L8d1{v>v*yQ+x9mDLUeAb zl5pBSZ86YPIOq@jeD=FwJOb8xjMbOtk!b`^AL0Y{>^iyKH8R?yAzd{5ykXPv4hPI4 z>7WFYuFtNy+#X_HG#2w4s|Nw6WlBKDgye`O`?WstKK%Zha(z?enfEor7?A)mb~Kjm zVE=B_e-hY0=%UCK8X{cf65T0rcw*^bo=wKgL&N1pgWM4Rsz9$$Aydyok%sQ`v|3M( zhFb77N8jP#ERhM`&u8O;l?zqGy}g?!HUO(K^^3|QHx_2&TB5)}^&rW1D*(OEUZos> zHCV4Njl8)!?*p}5Ds$N``DW#~d*k{&T+*nuHk*!R(4jvdPfAWM)=CAibwTAZfu+C@ zN3|UJpluW-idcpr_rQUkp3fN>FAcDUT1ae{N}g4e#lgiVJXBYXGvZ@XOn51flf!5h z{G--9C3-r_&^!ifH2#GExCCE9>NnYn{uJKls!jQ#&xJmCCY=(BV)bVBn~1vp)4E{} zYC3a|bXB&hCstWxIQPO_f}QxM3I24uEFMWo52-53p~S50$&YN2lQZ)as@2DGkTU%s zeeXdk)cCy8;~WE5-|qP|MtriU2_34~PZq`Dr=<;p$&!q>X+=d+g%@G!gq!>4dvcw| zl|6usl(dOT%vUtw^5tq?!lus;5jiU@jf5n*s)|**e@pV4J75%n#c*>xR>zyBfw6Mj zO{WivOjD4Kj*gNtOtpe6XzdLR-v$H*R;K}N`vjS;)+BHY5vN9O0q7}%fpDrL9wlym z2PX-UpN;wMD_)Yp#hj#U<9?QW)yLH*~+O>gLnIee|oMk zRb&ls_cC*2^HmYxcw#I#I>#f3wPL`d8+!w@{rLLS0mKL;C8ZxB;m#cZWXBo+QplHB zZZSy@22IHo6%IFGv+cD3fWS*E z&lfCHy)Vs7t~)w*!W<4>TKFgP`)JdUb8vu2BK(WB8dQJ|?#$p&2JObYQ`wJ?j`{O& zuSG;fjcjed3Huh+D%zx$<^WR@fVc_>L;=hpN-f<%dV0HarhbvBb9vh!79=B*hp8)$ z946o-n4`JtJTFL5hY_bv0T)xX^vL!aIV`qijPUMySWlA@f%4lE|7XX)xz?%@OW`{F z6x}7Ks_Mp^$nQS6D!4gcwg;})5I#2XqUCvwP~!YVd~w6j^)Z@IJ~~GGRqN4*>Eg~W za)=*8-~fVs>f2BKo8AKcU5ODWpc5w4JIT-h#n3FD?cmY<&=o}v75G5=$=2O(U{EaD z)}!J{@%r%)qI1=^N4AZ~p#=7JjmXJF4iRujt`xSLBV_wesj*&uQ^na>IbX@AT6})I zd-g3^5s!CpD??Q$4M3=&pDfjh1txWaKLNkj+bf~d!~5mtRL|3Mj_l^-q{?|$GVN-W z_)e9aqUmlA&8B61e0=bztE&qDv6gMnt~QTmAv9WFU$?jcrtpQt3E*0B+O52=L4^y0 z!N*lfADke+lj9~OZO7l+?I4yt;TpDTaM!aQDv)qHS1`$NVJo`1FI1L=C<=4%B<#u8 z&P+E}ZEV@djkhp5pVFGOJq3a)gbX_QT(=i5+Yc_#(*#`jPU2#Js(0N5ge7t2l#Y7$ zz+vO62Q&CBz@mS5P^czGfMkMo{S9%ms^UFWkF-?d0Ue7qbuejoJ^FV>9 z)`3h~UEP$&`^Tra>nw^0qyWJA_er4=`H*Lpl}o|O96I`{ywAGniS+&|YWx`!j=zfe(f5k% ztVehwZ%A7Y8Cb2|>BD@uk)9WmqyNw-A7`t0{ktIj;n%w8ZL7Q#%C7yyilJ8~)@B#g z>SLbku1jO>mB?aVD}hzxvze5XgqM<>T%m;;Uk~X^tZ@k>|FoLO;4k9Mn6q%oiz-Ue zk#ND*!rm*^;g4V>oHdQ}b*zZA=G$Z2KBLqGdHDJI))1wj++vTCb&0TB{HbBs;^2nYM35^^r#Kc#rFwzlSt2sz$-@HPXo1|4iV$qB3{K0Z1!1ZJSw0}vPk z?{Suh_UvoR=*w=dDb8BoMRYkGz?4Gl(7;-4w#DTel{TM1=dph=~@Aa*yu&V&5{22!? zZa052LbwWMn!u!a25tCHB5%d|X%<9}TIGx+h`;xr*mW`*Da(^v!ln{!nh)NUbZTeM z(Gpq(;N!a!J!oequ)JC|Jkg31XK}okgdf|Di*{s${;x z?-Oq(tmDZ~F4tKir=Hd>i`4-rhun5SIDGHg#hII~$ugfb^`{;;p5wuI`sVqBJuyq5y=U zzKwjTv=kQ)mgIBAW=~i^dyntmh2FBIZT57%Z<~IlM7!x36L@bVTN2RAX4-x)`sXW6 z!n?3`^YZhb&Y>l6!Fzx}5(Zbkjp-AlW>BOZ#qDHW(L`eK$Q%lOitVc%O@}eY}C6GCnB{(@t;+MqlP@wky~DJWknls=~N( zC^%zMJ4s!>_ny#Z>oaJm%4~h%DDH`nj*1FUW@F5p7`ypW6z=6T4%t{rsbG*sbSjyu zA=?MLrs$8ZMSU-Kzhqc~DY9?n8yu<2Io~%NGo2vLS|XUYdv572TwpG_a`*($f`2Xo z<}tWEQr%s~acDNF9p}CW#2wteo5EW=n6vRvRK4OXpJ}Jl9_+Z5O0L~Y07 z8o;stT5T~|r4NI>as%MzZd8T=eAmwQQToQ~tp}xbjPLm`H!`)af*NyWl1E;{*Vfib zIyo5stH1F{{N-g-hDqvgFF-bO2MgDfkY*soVcY*;_zWxwUJ< zh=3r92nr%0sDMZ}NH@}gbc1yFqC+}G8U&Q??(Xi+MR#|@KbO9Hzvn$?f9LU5VIpoY28G}F#ZIff-)OY#ui*9(2QeeK(! z$JJ10f^iQ9KQZlxQEr058d zT$`_$!Fv%m{+jZ#q$-OrJdH-u6CAPu==yShxB1`D5wLLhgXFA{=XMGMye-!J;x+e^ zt{P(BUj)ZC$Clo36{uxsFtQapfAqATh;I@3`arejhu=k_X{+Jd^X%I7redj|Q4uGX z7VMKVMl~hNGlsU24DTf#{<%dzW*|&qup7SU2IrX#rtw&nSx=Xl^jXo9;^5#E+3l&p zB5@c)^J3T=Q!;aM!ne1L#kpsur^#QrUKdL4m4QIdZ@0HDxe&{V7jShqF3gmMHaCy_v@#bKeDx41@db$Vhk%2!m6aZWxtkt7S@Xmw=DXzKL_a z6cfbQ7ZBGYrDSpEi`G~z#rhocOkjkp(LlTXn^=EOzky^@a}n9zyoNw=BwRa}6+7!~ z%u>teqc_~{yVvKmznh$I+}{vfELPK;piEa^ed}}1vJoYstA()%%!#00!sGA13S*;Y zWuOuW@zNfnI6GP=Z=HVp72e7|hPnQkAk3#tZ;tLv{sR_^=I(1%NJB1lH>zUvR<4Av z^`}>5vpcWik0ak|ytwqNlYQUFN_h&qUA2x)SbsN^EllpQ7+cudH0_RJJ2gqu<#yCj z+V6Wro-mm)+UmCoS<%wtZCmU5x%5bs%l$-EyV15~l@G)Wmyc94n-t4HBT8!AND2`1p7L?=OhCg3%2hEi4L;rnWo5UWTZq z0Vby2*L6Q1oxn1~8Sn;eh2BV1{k0AV%akvHg#zjm=)zJjQS9`>kUi0@dX$@{s2X>-ki?1UNA^?~1_iJQ;xp z4w3V;6*V<8pB4SS>wmNeb~^i2diYBHhW%63vq%@WrwW5P#NSeFr*h=`-1Dpl1B$td zG!Wz%i~txw-yXJ<$SNVm$OVtLu-YC{2}3p95IhKJm{^Ia6CPcE4OB}3H##7z-hR)L zV`>S)YyY)Ti$4m3B6tE{B9s^_+me0=LCuP2zqKrF7pZa274oHaRUDgunveE)=azAE z$3%jVw-LLH9dI?va;_SCl@9l31gg-7v}i}8PO^7Ii3&<3#k<3^P@&&7CO2b5WD{%) zS4a`+CdNi)=l$#i1nO4B#{+%T&#o&3=ejKEDV{%Z%=Xa)B_;%vm}xLr_g^n`1vSp{ zl^j|A0&V|KKeKl_lGKKrHuwW%W%XD1l~ZuhY$M_Q7n*XM?kVh%*ox6Uw5C1FmiCy9 zyD3%{*xFci3@j67#@k-)eyeuqvjp30Yi69wz)B_@M1c(pbg8azJTp}+?Xp3=0JXP0 z2>f(j{W<`f?04jAW@w1vAuL8Z-B(g_dvFtZmwE{27WlpvEX!76H~uWz1k#fD;S7J3FicRL5nQ+c`9 zttN^}uU+@&UtSzB<6>qiN1h-WH~3-^z)sz6S zHmh26Ul*c`leK#vu{Zr$N^-?a$`CzZ-==jjXOIwHP{C+Ue}Eujfce%t zqIppW`&zhV&gIfAzSt~tbrWP~`FYlK_O{Bor}zy0#Pu6jai3g~x9b*v1iT%Ir`L;Ti)v=N6wQ#`1gsT+S4pDbe@GFi zOt-1G?Ki7AjkE>BI%4fKkdqu89ZQ#Y7gZqsUgfhnIhFB`zkxhhWl?oiReY%oC1vHU zXSZrq)}4Gmjf~?CW+q&2W?q=Fk1quY`6k=AQ`HdSBDS?zU)ujXJhtw1n#o@E#0)mL zpx#rH(0xSUe7D0vj%cjEKrEGox6_k>jgfcO=g^8~W^y2NIW(kl4_68D8()ut0kDrA zKXFG)PEKwllWQ7Ai+t(kmj6-8%{cHkVG>OQN3>JydKG#|_o3QE>ZdpUZ7nsT$ZP6& z<3V;P5_!rf>KF&9rp4GSRE`(AS8p@O!7^_nXy{*aoa@N$S$~h7jz1N;Ma0B$i(9@LT*8IgF+rSOx5DW z8E(op-pxwo`?1XV8-yH(FS`ZRAP9Vl?}qgiq;kpPrwzMbtnJ}B^TWQvZAsO5=0VwC zIJ__+CyH?%Sy|0O^wrHpTpqOsZ^@M_SE=Ir@QwjPHpgQ1`ATMKEHvFvL&uyEnQuC^ z543u2VrR-|TKmY1vL3#D(|eh?;zL40c{SVGh)@oRH`Btd5Vya(P$o@jSUjEk&vFP3Eq;q5timrP#->TR|wMJ zwlG~bd)QvDxQci8`fj^W@adK-%3Ilg9R~Zna0CXqG!zWir=p3T%Q_?SH~R|ybPKfY z`XMGN6l|N_fjnt_xtrOUUC|xX_nfmO>;1&|`~0o0C};hjO~)owr*>Im`pCcEtNLXu zX(X#IKCkf|4k72|eQ@L9diDQ0bKE`O7L=BK9x@)g`(j^{DWt|RyxQ~#DtLFfrF`Rn zZ_}x<$V*L+*Q9PX`t^DA;3@!2*unz{9023QMcsc_YubxY}a_8W%$=myf=qXFnjfiqm0Lr@>*iIx@^LqCvnh@=BI!U z;Mcr!GCJg|wFGrf$!3s@ILlAU$h$7}nKa6UzRZFr; z?LIpQZc{yO!Lzz);#K?{j(1$U6v1Y48sAxo;}HPNwuwOb8b z?v$dU%Xb%vyWb-sF2F!*DGKmAChwK3W4!B;kgv{O7CJurx_+uqQkT@f&PG{<04`J% zmyx6deA%A!p5q-WYc+v-t%PW@kjHtIwlO8jH@8r@nrEt;cyvgJ?5?(sx%~_ir|?kU zVCJ(+F-#GJ8d;Yq2j$az_4S^Fyqf-o`@MR(&V4lWq>%e3c`qf*dkY@Qzx2%$B1!Xj zPkEaC>gnSRxYVSy@o ze@7%nx##ny!h-5!foE;p4|Q*RT5?bVMU%QS#EC2);9GSKg(WX~;GS>WtfJb7$wfJl^{BZT#~6xZ z`Vf@b<>hWa`w0_fqFmW$-Xq=N2ANEqpP*Jjk$~J=^-$cjuYPm7VNhw+{$lG2uSsQD zIg|a#bBN-MCt-z=d6SM^r1Fh+9qJ=GT?>ogFKLq=J*~@7P~9I1wmQCOXWLVG@j=M# zsGAillx3-g4kKLg0bqA4P&7DJe%Xu;F&jo1%{DLOQDv>{$=tNmL>LKws(nlqq3z>) zSR)qmxt^kh@PWAhVF))2(VBcw!#<6jJXIEy@rjh4!VLg2S8dl;}6atkSbltT$dSHC;3bd?P? z_!5NVyy-gV!xIg*TVSNZEiTw9ibu+WX?_S}!IhCTwe4_UzfSX!y;1c2~r}prFqA`JeS~ z`zio%HOL{2vt>mhMLMCxPEIa5Ag`SmXb`yOpdOlDP%!Xf#ex$wh(L!mwwaM*t=d5A z_ynMlsTmm^$;KRT>;Tky4@PB9al9iV3*FoVX>in0BcG4B=SyYfz32~dcMyjA1a^qbfY`6qjy`d{~mgi^V#4Qwdc z0R%ppxV^d|F#7L$K*I%rP-C_vMfmngNc?a&weR9N)|<++oUCwHXUW>K0I@&@zutWw zIC#05z{#|+C^PbqK0gg&!?V}hbxn-j6ZLUGW_m|Z=yf33a5TPlzK7}fNA!u#hd^bA z=2glFv{X&W7+5kvsOi&NU16tBs{YCX@W5D48eV6^&TDeGa>n9Js?qcsZXz1;5+bHR zz{QpbD56i1^-#tWoC}b-ATeawtIscDg?{?EwKb{10(Na11U2UqSsAarG!;4^b{%N>cCpwTGtZvGkKKQOcK*B{;Gms=ImpntUS+P|kWQO)grnU8+yTcF z{I5-Avsz-%^jrEFnV3X?#?3$zj1>AlTWwd}a#aOci?>4v)DSdva4_aM2~fZ0t!Hp{ z0wkQy#!#w~Lwx)JYo+;uhtuuFno`Y`)k^Mnkn+s3cL#K2l;|_DmE{hK5Q2gFFGcyr z3U9e?Ms37(OpzIUSnOx-z9xU#S)whKGJ3YIb?;$Q=W4>!;T_&NTEBFGgoX^~ z4=Ey&Kxh@-pC#t3ZEK<|Q(N!|Lu>_bh-6pwgyA+a%7eGFgZkT(kuJs z5;YcmRBP=Sr1$ZuKsO-68u5mrXvQaOvq7tSUl3qB8a)}(Y%vW+pIF2ld1UN|y$XOj zYkozn=gxx`xrylX1gNtjbs~hZjd}6qgLW1w$-#ZhW1q=qfmUKJF#b&K-w*%Q;!_%d7??qIT4@ESIcdf_|T-6e#p54 zh;d~#%n0Bx;smR&1=x_`G%7ud)K-7waMK?iqenxBPSn96OX6sZANpmiY-evHMhN1H39AE zK_;MObxWV1R4!{FMn`>W{U)Canxd&b4^*1IQen*h=ea#?sfCV@$;m(ELM?3;LuHRn?K^;{a z6HC0>Akdm2TOq@SS^^=HAyi*}2Q@KD-RukfkTE<{$v*l#*l@^y7hxiQlYBVv=v9mN zf9)FSjhfLIVz(%i#D2%KPtknpRapqJS{)>*VGn$=ny%WFyj#(1m7ZY#%uI1Cr{r^{ z6oJ)O=gG+;q=KIXu+@r{L&4yO(sR=l)q*}@^SdT;-+#I;9p(*Tq$sOGwO)AInbT@D z*LzAUH{9AiodP}AEF2a1nT@5lAp2iFax}-@UajDqH9-aY9{b{OO~YW8v0-9N49>+x zziXbK0Fi>%`7xN7a~iMM+AzIaq|=>}mDOeTA^Y{h0yezL3;x0ouG@;APXxazoW2F~w% zn;$@`fa){e3A7%L;?3N12xzAHVO*|Or)pOcIwp^7B^pViFA_^B_tjrU4>XBteEL+z zU?XJ9rd$*4CrNWuzb|c0i7y5KnTCVDFzR+TNs>o@T3_&2`Lf?r%|L4BG-I~aXUpKP zd!E3!`1l#2~X*Y^M$ibXFgFP9e)6nK)8j15=cj!GO52p~Me1BDax)}b_B_Vpy)_Hj{i-Dg`$>ZrvZfx>dVRY_t$g=fv2 zNYZsjR7Rt zN`U<+t;7ajjv~zaDZUe&hhP5bIvDZ zYE4TQX3*LlyuHPhOl>yUc?M+aHQ=Kq>9#dB|Hy0;fID`Tjo8eXN>{D{CQZX`+)hV;1!44kJ`mnU{lt zRhdb&S!xZ8s)g|gfVW6Pu_5ASdf8IB{=oR=@}%uu!ULZ93)SxB&qj$Xi{}D0gjHMg z2C3mj{p8oyggl3uM!dVjCs$ zl#(xQ;5u7M>~u{|(7wwp7vduy5y}I*iK2`w;Z_8V-SBrUGO22+q3>~Uo`ug56{qw> zcCr|MuI8d|28)SxRy2>I3^;w%Nlg_o)y?9LR*sG*$=tMKQL@CGKaZL@ORRko4~JOw zt5{p&PsfFcfVW9m2Vt}e`QCW?CgF;}SY4a)CNQppacpWWpJQUkniH$vIZ?7+o5+m) z4t8L8k@}i|iKo{=E*NBMJ!3LkB3W@VMXsZ%h(*qoLlenH4WZ@yC{|k{R;3je<==_l zz6am4@ctvt0)rEejSP%U2{Cb)&t`k`Ydmv$+8#0e^k!_udbp0+ zl>-6&$jpVpVci7 zl>rcT(-MCpK!5zz#x04F^90kN{vec-dFljLai84@AUR$kl%n8kgq`5g!<)#nnY)3e zGgrCXA;8~{2ANeIvVfRq;_jmi33=Q)G&J;{t!+)xDoG94DOn?@WR!EPEq!ECzHy^dmn<9HU@fz^ zot0x%+7WJZV1*Jdsp^5T3J6I88X6kh`vR&K%bzB zEO?_RDCj-odUtb3eRoJ5d-mITkl=Lq(N$4pao(g^oy+_k|t z^>u=Z|Gv)f;sUGO*|#l9KAV#t>5>q{vBxLC{0f}!jYVJ_7=sY3lzEfTIV3%fk6VJ=%mr$h?|`x9 z^W8GY;Tq4&eY`gcl%(W$SN)O(ytDgb&u~+z-*;gh$6%?#cXu5vYqkFjlyrENoizPn z%cx(Z9OY6hfC@aNgDd@0e|X`)clv+5)9?`9O5_>2h&Il@I=^{Apa@jG6zoN{t{y21 z6?8ZCnvwuTh;urCr>lT2k_Td1mR&OGJslDHFkkOr10MzUAs~xhH`mJr-=y;+T!M7D z@gzo6ybt$yVu1~3yvKm-*$*SRfy#ezsDyidn569dV1%KJnwn|VD|>sZ*ZI41*}lU?vwUC24&iF-!4Q`=o2Vrn3?&B8v9Qch z&I`=ay2k|5!^2CT#3UqwDO9UQR_Iw- zGgGawUp9B=56*uYKObBghywG9)}u7J@)U~&v+oml44#7hk&QL>LIT?~)T zArxwvZd6P;K)tm2!gy{e%Ze5{p>em$3T-`qtaAi=9tr!91A~LRfPZGqxRmOJ4bnNQ zJM#>vHYr;>$oWP4rd$2M`xu{K9<&Grz6y6ZEF_*iOiA{I zldqQ=YyFAi!J+5v9alimVR^79kUO=wsAYkTBb3C^Db-H5vTziVIPosP-y_bd?LIEh zz3{yj# zb8J=nV{*dCAV)RjDXi4vuks;HnVGk@OFvAylGFA{y>ZnLk8oOZA5H6?0pLg4@FvRF zo$7>;_6y98PGr-RNsxk=-S zKx|TME0Mdv^$2ed80IK`Z&M~QcUsMobabUT}wQ8}7pl^Q7fu7lWn((3b01o^z3{#nyh?ZNave{}whs#Q51&@N*w2DJ{%HDI4i(`7GPp-WZ@Gt$$AoaLjLkSc#P8|Ccw%7#=}tp(3j zeM4&+E@9~3qi?&!L-U!bv6s2x_WeLlpDgR{1m=+j4!Kd`uoGD zhUV2af%9K+4p#0sVf^<4&1hp1*wnqH1DCLkV{rfBv?5Om20%se(P(rz;@50)N%hz z*0|eytGK7PyTMnBmM)A9xX}Ns3KV$Y)U?$BD4Zz3V|+Pd)oS6nr&_XlkLuu z%?{*=Js(w96|MmYu=~%^S@_YY#6;>4j?-wLcN4XE>f`9myAy?c!T4;zZ%JR1nfY=5 zKxaSLaetmCY8_^{`NijxQeUr5LPD~uHn5$dg~&pc#HmGT=3FK5I8;bE*S|>3Y<~6mp+o_1{lGjWvTuFVn(3zq^D!w-D=p zIOd!locqF;!*#3f`Qbp-<^&k9g82>3GxxkV2@s~bVl^}91r5j~!iojlh9Vc!0tlhX za?jh@x}}N;|M7IfKxVsVm5rcjh6Lji!AtlHyxk~d&S6YGu{!)L2FBU)b5-ZcH7(dY zdp%nZ*-8>sl~X~O)+68if|G~vu=wjV#uz}O5}sCz5}^hZ5i3)cDVd;eFr5V|sOEsr z>&9(>C!VNx29JXN?=71F9yL6pBL`>rWq;`0&6Iphn{}I&`bMqSgRuVSG03hO)#CiG za-g9&ioH4>mK2p6n+b+%J9c2b9DJe2t_}=fz?{PJ6+YFDguw!SukHaF-Zx;x6EWPJ zv7-P5lL5?x^14r85VjeOxiKNp&00}Yvsf#|H;dIF&#sq@x=Y>FIM@`M>6e};<6aI3<%u&_4*0s_)% zY6-{2$PF*y_cEe5)!7FrAVlx6ash7ugTnw+qg`lkEaQvdFe;ij;nliJQy(YlE9(_b z`KFg7U?dI_E43d+r$4*7mQ?GiwIrmo%(Nk!)wWgEc>(_$GI!0 zYp~OiqILnoJdd{^4BI*o`Kdz5?gA-QMry}Tt9GOOI6aayR!hEGW0#tq))5(taglRU zwgQY9E_NePAM>7=Wdgkt?d&OWE9)UH2xg5>KxyV9d^1YooNOEOkXIo9|6}_ouc4o2 zA;z>z6aCKoc?x%qQL6Y{%qO)-y0@c*$V`#0qBoDDO9AaVKbb5L1*=#O^>z+~8Ww2o zW(jW{u&XIoujy>}#OX>O5olUjS*3zNhODftk~jQS3>XFeaB7~8PQzM_>_wG!{M$10 za?d&PEf0%_mbVOjqFwLy9qOsKdb2TfgJ0gO`J$rujW}8;SX`p}5lIZKMrPTwMl{-P z@HdzMKS!)z=|MTJFUPe)1>`&olK0KpJdC5BX z7zLLeJasMT?kJ@%94@`r#)@uZk@M**V={}fiW*`bP17_@Q}S2cXovOfU;NM@TB5Ei zYu&RAZ$!3EtjZRg?+nLsh94M4dhR36l|-CUw`qFE4I_q+-PB8m zoc6qGlb2_*j^c&8sf{L6?b;Qy%`UmOc_$#27=O-$;jjt|-{IFQ9(WA-|3ze$o(}AYIr6h*T77WYEMn)?Z^hqcw3YcZzu%p=VxnD6pT694;;Q| za4P^%6O~*ID?tMxXX+(MBanQs{Vn-aKJyV>MuW?@(v=m|RvmJBQ-wc=enco`s@B`pM8{u|AA?zAhvw6xN@=ndw z*m=o^?t;C`<@{Eb6*{A>lo4YrBnfJW zIH%vGq{>T_o^~oS-Zi69$-SuCV+QJ&UdC3DaOL-zPJVq4b5La3;@Rv*Ou5lYhr3fA zk(>2_=$^>q#|f4TrR9X=s{Td8U)(V^hJ?9E8xAB$8?}=#=V2Ev`v2|1&C4FfaeW|p zgDFE)x()0`R3T&`<#pRY4gyRl5mYO))}Kd5XXulNz2<32Ib=~@9gXlB{Myc-K9cpk z?tLJ?0%C?JZ`~PXB|`IX+)V*SdVQ0>mvW|(Xq}9Ck9H@ftnOR+vs|*?P?42`v8a;} zi7dpik1O~NN(JkTY5YqC#>BU6T25sSr-!4w2A_h>`UTLhY|(;^F1ils;$N%M!_R&u zzMid!hFUQ~Xpf(?SHGyjF%}WSEHKo<1;G@JZ5A##UzxqcL0XFMhkH)>^-~-VBp>>ItcqHCj%;-qOlXWDRasowHP?x!0G!)SzUS??I`bk0zy|l^q7+sko@wn4P z+9v(C8o;o?R-6(|1w=(IIFoE`_Bvnei~kL${jPG{JHYRp@X_6Lc~4cCvF(T-`^nb) zyhejdb1|QePAa|XA2kT_rP}`p=wUJ0eW3qe0(#IBRXq$bNqQTkum)hIbn7G3^Xg!AI8ByNN*9Y>-097DJh(2k_=C2b3?7c2R)m`!7 z;njMZK-)HZ$W!=uLyOu{JGlaUk+6aewR{99lzq-yIw7H*lQ9_uu7E|CK{drl@Tam& zY&JrR`(2zCMdI4u%3P=4&&1rb*K?PU1a-j#ETjLH9OnA~cFdnrS*YPCLUVpAfc|~f z6CQ%)s&^@WB~YiHLwgU!>2f385?EkmIQ}UW=Looz{wWp5C6EQO|C2sfEs?%q2Vqeh zS%}$W>TLkF;~BEyHu=!@ba{X7vvDx${V*z)yS%JSjsP-$PwxxOnZ_QpR$5(suO~ZE zrPe`~^Y&aj*NNj%JGs2BS0r%j0KPXw7}(cnr?xKsm5LK!wU(v_^UE?YGjBzu1)~$Y z-fXFl551h+=tuD!gXKApRM@)a)yU49v;5}35Ngqhl3fe9&&CwSj{3RGl=w}1qB_>l z3kb}1L;I&M`8G*vmO0OO>+xpPw#MV~CYu&k4xg{kVyjs#l(x-64Y$po96Ho$T0Cv7 zRO@UJBt*!$*>_>wMb6|wA4o`8$26AT>i_*^qu2yiY~kf=1}iw7vku`JGl465sh@rr zA$<-X0+V=wx^bt5RXph5{k$> z^{UQQ*5yX1eR-7L1b(l)Q7Pas?Q*CSi};j-ggRdT;C#O2(KOWGLH= z)9OzMQ%rX7Bj`<>hcZ1&_g!#vc+g$4UBx7_=}fbdnJx0v(r`j|ovu>GTeZ&t=Ysl5 zIr0yS`oCVEzt6`)F*gEh?Tg*F3e$wap3H-gQlK~J1~EJyrghcnV_-~srOQnfw>hdi zm1h;86=LP(lgE|Kp4Xm19gEBtcsskg4zciQD8d~Frl#KO_5HAjbnfRk>xgAE`Z3PJ zYO@*cbULZ0qz)4*_cPYQ$9C)lX^OShgtKe+A*To%MZMn2-09)HxE~48K7>nW) z-j{B&8f@Ui$TtE(Fv*BX#HUW+atBI7chc#=k!L*kRUkelm3^g2nTq}FG-MLdK9}ye zRUuJ!r3eq0kZOt}Nkw6n#{bKgJA{ZP{k2~dR&o4W^fd&4f9Nc=1x>Ai6c!lvlq*C@ zN$Fu^#w%6ZO;1m62^1Ojo0;jyKMM$m2sj;%Gm3-30q@{z^%Uj65*z?Er&C5sO8?GZ z(Y6h^$jW-ZvA+IobyfF?dtR}0fTWb3gG1FS$9N*Q9pIQYCd&aWxF}b^f)3GFEiE|- z>LO2{rnonh!yk2ySCqkC9OR%itd&cxJ4~-?jS{}5(*>xs4@hm41|88D&P&6r`r`Jw zxU#a*#OtV(oG`yz$W@CR;1T|i6aV{N+y~6nxY-wv}R09Oc4l#xJY-sBrR>dDv8vC3D#69?i35PykNqK`CbSR*%TEQ zb7UDC8(Vt|c$5|wy=A)?+g<6(UQem9t0bp#beZdV$n#47Kmd-bN=%}+W9O-(6XSKj zSmd&b+J2A2k$?+s)iV;^!A$n&5o1MgK;sMoqms*km0Y1W(*&>|)p+qY6x*RV+ zwF!Uv6e`4iKj+QAe#8ik6@PZm#*t*s%{ z;getmB{j9=;n5M}D*7VO5fRZ55D<*T7CM}4nlt;Xki)y41KI|_$BS)YRP1ZgKXC6t zb`SlXD#tkRm=mlQSfdta&Rus|psjZtU!MHC4EfU){^wh*xQ5dz=@29>yH+A%Ipa@S zts60Hedi&0wx~5Rx5~srk9|(a^=Qj4+e?xhy=xp58N*2MOtfQwI4e4S_fx@l4`lvI zkVZje0bmC3G=!S6JhGX>A66O+3s%hacI40lf$Mj_+`~WcOsTo->p7c%CYJe!(vVS=k5%Mn(fgBD53mG<~tR zuVi3g(BI*%T51pJ2J%92c|XVfCRFNku_tC_l3X_>^e$RjwjOZQMRF4tM{A{8mR44X zuN5ai7zLv{RZAx}wc5yKx`5}!s}WQep!%U>VOf98JvNV^8(w#P&mg7=?{XqTxy=B_CKw%$Tc^I(nb)RgFGw$W1 zf9FL|QdHcC>^e)W=L`&~emIhrt~Zx*NIYxXDZ1`JZ}4QM?+LGuT_tYqGfDu~3*^twzjTfq<8Qq9 zF^t(zY|0avzBX%K>b^ok3Kn>${oLf%I*7SozC0t$RFVQA&8WHc6$)-8`h&0Q2`q!O zMl_~TC3C7SFq$_HSU9iun?ZicH9uw)EZGu`fc;%&ru*Fw>~~(jxI*%FwMIZEZ6v0SGHuNprJ!4bBtP&_e1kuS?F$x72x!95LWno)~`2!BDsct3&Nnq;O z?}`5UpV-k~7xVAkBZsgcHLXS9=QIaHb#;y!6GE7Fm^w>|w2`o4*JJ?o7H)hv&Wbbg zV)^$O#RpPL!3H>`k{|CTel%wrM5M{vi+ZhO&}q64oo8XIDdbx}?i|h2BtHG|l*OsB zFO-qE@_VdDB!n4ay2+LLBYz{GVn@~frp{MBtpJfEh6OUs5gL)fOG`!BH5}|g=^}0nf+3CPjyN&q`X-IBl((Etqq&Sf?s@`1 zRzR@pk%L<_t3Lc^CxoCt9A4sY-@m^G5Ii!Yd$~NSlw(yaT{WH3I87XwVkYGwRg>QQO+ux*2=uZc4*` zgViRC4UgV*+Zh(OjIC$d6+jv{8f7sD%~qvTate)$dHdvb3-?evc7m(Y)vabsbv2`B$by}akopDWdY zY)ny6(EvnB3(BODk`WxZ{-Rx^{3am1vT@m8kz`IDc(EuyOHR4CU;`u!NAr-AP1z+K zh5kX?xJwV@VXsQiWlhgKv*> zQ2kK$**<|Wc4+8BuleSqBm2YF*hREV8ZWNm0xnSR(h|pjG*;mvmuS-rM~eVn3PFQK!7??lVLZR$1ZmlY;C0W z5wRepDT=u*y=vzQctwVV?dG;dj(U%d26!bKl;GP#UPToa(&i3$p<*KuKlFN_3`vfc zQ@5NK7&lZd)(wKi%95YnoXtg%COQq7JqPHO5<67GBT9XC{yDbyzR)Y@5u;b3uzb>3 zp?M&a%goCgEA}~2ke5&Q^B^*ZWsb4n6)R6OGcb6Ts$rQXz}3WZmKUqlRiz4|B^pJQ zqG>l8t}m4H7*XV_=ewl`X6i$S^RJex^%N^}WD_j)!efte4o@A6 zQpd^4ZdTTqQ+e!VY8@40=tB+=@cN+Jc1W|;NxaJWRe7EfiE4>Q9sUe^YMbE?Mqa)* zxkVsk@*1Dm{bix2*~*IZ9ppA=y_8Gvqi4zrJ_zPbbFKPmg4vdDVirSu0}`l5Yvr6HkelQuz@H+`?w1)!L60cacUi z#27{z%@7e0@g2lLqWHr4L7?4>gjFp@PyfWy02{)7PPSuWtFqLeRGRd0^)p_7fB)s< zjp0p79>%9qDxk%g1zv8Ffq0O24kG2`jj$>dESbnYU({HqrHZ8sEI$Pb9ibiknZ2^cLY*(8vM-%ZUD1iRthh~VWLP||!aM#{V zhh_Dp8L(SV)y?X^=1@y0`BlMkSDvbxp}BaHuNU3`Y{^XW$%Me zdLZ@Pk*W7hPGMbL9jAejQCMG}L`-zFd0PEeUUdqH&9gT-{Q~-XcC3hhQPnd*bCjRsEk?&WpAL=uf9!pEAk_W# ze-sr-8!B0P3RwopQW&O!fKY|Z2kV5So^Ns(W&SYHQcAy3PgY~ zF>r3u-M(V`_Gz4T#7ffX%S0f1_5;*T=2n};;#XVOOa)Ns!M?WU3mR#Q&NmlC&tm{7Bb8t+2?MbuN@@Z+!$CsJY{doiC z(P!@f3G=QX-aA^R^&<&56C33uq}UFN3n?*;yZ`NgfLM(A zD>;4Ou&&S}jy;EYS%uJRuZO)5b3>pU_@nNh8tkj%xN1+HsPWK2` z*MXy{lg7!bfR`W0{YO#7ys_>+_;&h6Lc$5~$ElM?r(%Fp%mM$X5I$?JUG~gNFPKhP zimrbu+vPpoC2p?=oJ!W>jS&l=f)>@7n@c+G@3$K6SWfP0h#KKdhC0n0JHGeI(;d4? zYqO3y;iIl~fAqTsDJ}^6Dv-SE?_d%@yT1#o&Sy@(QZ4e$Ix(o1xfxQIA>f{L_{3#H z&U}2;J}ciG&Z0LcYhy#wpvugf28)deDwcL&VtOh%X2NmkmM2)1I=y0~`{C>6-UsL+ z7&+g??2YQN`s|vZJhubg@5Q5Kf=r<2K^<310C1q{r4tIyH!=Oh+wejKgm3@LZ)fqy z)JmF$VXO*dJp_UENZhSzr=Yomwd>Z+)(PrWBW~`}n?>tQ8JvbhqL+)}*!8pL3=Y4) zw2#9xU+G-*ZB>MB$RYsai3RT$=tv#xtbpMsl&p|i+qp)~DzdxU2?T<<7s69owe~&9 z4M?dW>0avuGCk7svDp1*3<1^d%Yl)BR*ar(Qz&h|=jK90yFF7%npvnj^+!7}Myuzc ztTr|k%w&QJ%k!~{86?Io1G!p$4lz!x$bm!q2c#P73J>1f86>-~Sbg%9X0@Vf;K{vb zM?Y6S9}Vc=JEFRH%|Ez?h4s$fgK$|zYsgEGMd97+CNpH3>nZ_1QN_%+%f@GC_QpS#i)38*mvhTEkFSmjB){6R;SNX=~%Dq23-Tkxg(J!vvCi~kdZsO)Flb>I|h~|?z zO!<`KZKY`5+%^?6jM@C1zxY|=Tm>?jsh4Y|5b_pQwbcW~7Tw%eN7!9An5>($pxC~^ zD~U5*?YT2n-Dka;V`%5w(?QuSb%bZ~o$OpZf-8@1buvRMizhR;u0cZu7s+V}R=O}} z+YX9$ghOq8x2!!c#MHo>0=*lr?%*O3(=Gko+(?^tl6!EbQ(EIyMXElL9Bh-!gfwQ( z{GHn+6&#~}#TC@(#FB{W_@QOd%w(rV`Vg%uFn&9Lg_^u9B(Vm~;tuIHapFheUZ5QD zp;TScMtYo$k-tkpsoV02wb`~Dxv45Tc@Dm`v;>@!+34ow)xntoR55zt;j@dZVL>y_ zW;NYHn_H1I*BEk3hkuF69+9O5C4Zz9T_Oa19tCQG)MtavWL-5%Q-HxvQcZtdCoUk4>^^fDX@Y zwFlg)U1}`Pt#~bSqq3l}bX-K>V@g7qdJb4+=wY`wqbV zF^qrd;RY#YB`(LFqBc@9ecBVj>JcHw^czsmo8xz+X_-{!kO*}OIvp*le&4)~zIN^EY=o-FC`9#h~ zE9xN|zI5w+yewhF2zlFSrKC$uN4LqIICQQf8ESXZiZ#~x^D^$fyQC9EpNCe)V`OSA z0#+qNT5;{mzl*66_97b?d=ZB*`C6AQ<(M1z?;!W6=AYpCWs_LYsg!*ndsqJjO(DMy z)QGkcU_uuW?dn$t%dgWKlTkG}7?+fKMiY{1h09k*Ek@G2iY6*s=ZKzoI#p>j<0=#< zCnTTe&#uV_3Tl7hZQw?<^%{b@N~B4IJ*dmb1>5yk7*@E(wUXf6`6Tn53w*tDw?kJE zc+~yQ*I1H2cbvZe7FJxBKlIPmZ94))dG3uyX}yjXDjudY?zBF!)5_X?Gx_|5Bxt@d zCsLDM#8LrMh1U|8&RCfWNn064LzZRys+$M|cg8q~`05p>dRcC)>1BeJ<(ltrgo>9j{o`A~?7NigYU43EjqCz7klkz5Wkrq*un5(;Nz9RrF;>>;|` z{FcN4+gXE}YKcYxNj4=D-rq2Z>sQK9Y)T^^`u4UB*HRp(mMA0w>{ zULK3t?KU(evv~Yez{9a(eDUgzjN#mxYOqskQ75ynS%#;IX)xj@axAKd$JOKZJCzq) z6^S@_D=0mY>dFz7bN^z!jY37Rbg{cyj-~%rzL#Xr6=9Bm_h7pt3I@A>$!>duZ)uEF zT_z1`R(G#aC;>X&QBQn96W&($>`k9QR60;AIbK&r7NRPYUim#iGFkd9z zxlGC8Vc{e6c=-}_7B|;|jxI$#Sk|rja>G`syJ0V~tyRXHmI~fe;jM+G-srjCOQsJB zp{DM_Vd@L&NpR)@Y0j4v{C=hKfoC0~Vc?l;w#hl~Gi5RQumESjjUvc(i;-eM_U?TW z_F^VN8!INHg7j8Fj^^~{*}Zo=wQc37i%l;R=LUDC4b*c^WDY9OVObrYy?mX>BFOo3 zrnpiNu0=Xtdwg*85*#K2O@QO(j(L)w43^~ijZ^x<%;w8r?8ujH@2&~w6Zhx0bG9+_ z;yRdDF|K-F>)7_Rk;?=ue*2|XgoLvBxhVgEp@R@*LTm2f_`}iS*TxEMW81AAJW`74 zno~9u4^I}aUvVEQuLXO^QhJd_rVSq$7n;=jEg8OdI!u#c=Ws$4?;hG8>AhnX-^uWkUOvf66Fl0; zKAFv8;tG*_<$EpYK!ZkF>P1m5VIGO&WeM+mjb287y0+6m;`oTZq6kw36oQBCtbLC1oA2avD|yCfFa63F`=tEn#D!hYFw-%E2h9ZTTaRZ%_O~0%ip@h)H|>^ z`hGga0)vQAnonQxNzer0bJ%-)5^(+UxxuB}yn~3>e(SkjEKnh|Kep7o#nKxLFjKno zrJxrQ6-iHPsZIjwA)!6(6%rMS%MpcsjMQ9>iWWm3^a{FmXxeW+q;vtmkzljlC!^p+ zaHynK#A*)Z>T$>{*Ik>%nPnKy?-ZOSoyG)ZRb9Xj*()4yiQ>xZHln;@Y~0JU^4|*E z!fxa|0)3aB)@iH_I&=c>$L!$cz%f63{YDRdwSu|O6-%kt1!|o(_C}jPf$VM)Dv2t_ z$wL;C=*$z8H)>~mwNF-`W1y+KCyfhRaD(N&VCRc3!UYMG?lffIwl2b1PO38(XL0wB z`Ea7@?H3N-f)Ak5b_S^8a$Gxycfiez$()^>{dGE|;oTX~^RkGyy;QSVHEr7Chfk?| zD@u=T;}fr4rKJxI%ToMkJAEY0?1ODlNmiyUTg|6!l(P6Tyj&ZHX)C1Qk4f?2hd$7j zF=ti9<+DV9P3QWlv*F@DRQQk9LYq13@y)%_BVB15n+)RmH8^BCZFqCqMKpCp(Hy9>B;~uRx9SpJvFR7Dw+X9!0qF#2@#Sz_$?5 z^|MrG_n|4w7(s2Z!IpL|8LdbvZHrmeFrYf(H?yvnBozuV8YZmf70d0JZ|Qm#b0)48 z`WQ$L{kQq#xqIZ3w8VV%BWu6cYIBZ;da`GpFe1YWX08Y1NGO@rkvC_&R`@3}T!fcu zIXj0exHgHaZLe^-)vlP7A(+WZmK6__Z=i>}Zlzc6c^R=Kl$Vl6xlxn)%sk&RuB8;T zmKeR;^#CnH;POny>2AdFTrm8;!nuxjY=;NSY}y2HwCti=1Gz6oG zFQA^U`d(z;k1J7nyRr+1-A9>{msST-RmEprN_j(JtLNUORx$p31qo+cnwCZm?C1KFy1*6``dL`AOo=i@>4 zQk&X@p($nX?M~nndaLFZBNt*rAiZnKQ|8QV7ugeo{Hh$bW_}yXch4Z*(TVnA;{*z< zx8IN$+05BCd_l$`am#I~_mIM$&F9;6Sk;%KEfUdAdQ~&dSX!WmZr=xA8Pa7$oa5Di z7fR;-bI~Qo%+%Hcl%fYq1V<%VTx@Z(%dWV2lIJk zZG@Sv4(TDSb-72TK7(zcAmh^hxvk`l&q{oB<>mFAJ$8&+4V)(i6epJrLQ;2Ff{&D2 zn|Vd0o6#PCKj|o0v%KSYWK>QPoCFyyLnbC`1mmG1W3I#L!k;V6j3mr7>3wQ{rB*`CDpfX2HvyHvN7fJmAx);n%LURr^uc)n@`6!#R(PN3@Oox5Bq%kZ0c= zuwY^Ju|YaH9R0PG=uGwIJCmy`86|5d4;UxDMR{NoyqJ1d?jwD zja%!rWV}N_I84n`A^y5a|C1q)uWmk@?)4|LvJq2s?w+W@f*NDsgkb#}NO*uDpTFnGx`craYXj*{{H4ir{@#;k{ zEVy@(Raxvf#j4oRhEdqcel<;+L$UW}MMaA}pSQsmr;S@tpR3$@orChV6d$W!NN#+S z6JV-tkuN8+KDOEQ;LLekPR@r$tV&<}JS$73xSp%IArBWtkf8e2)@8bMDpq*15S0Co3Y#3k`nkw9Rj^67Y-vf3udm1>_jH7zF z!#Lx(&{h3obkIj*b>{q{2(3UDJY$qu)9%5W(G3}dF$OuQm^|A$LVt$azWlG1)wR0l z&-Y5NlY;%o`CDIm&EMI&O*hcYqDe&b=Ro>HqUx8tO#e1mp)fg|K&MjR4|#{~b?&FN z4*NMfSW^*FXOzy5P21FC%Me55xVG^JrJ}MIk{4M$mM+Ti7H8)c)KnYh6*U*`no`w( z9=V&7?1}GzSy?8E8V12WQ?$rKZak_~`#OPQ|G9bPmh{=<%7^!i8n@-KQ-b<46wnx3 zxVQ=-E6^w0>^U_LAFL%f@Rn^{;^@Vl1?cvwNN}&rS6)b^Gw59(^I7k^9Si{mbnWTL zUzYTrTX|b36<6$FsmMb=x}f$;d*_anEa8<`c%@f)Dz8&^i_n85kTlsUCZGiS58D1Q$3>^)|A zETSKk#JNk`&g9O?)6ZLSO>a@WCX4R4`$?&EzlOj^@60G{c(XN0jP%H?*OYHfG;~zn zjSXN}4~aKE%4y20Ej-I*5e?IhiHFH|PnUlhR5KDwFa9>aDaqg6e`-yh(!GnL)uP); z^V7mVC;j6Uq?6O~m6gXFvstrJ3g@Zzsy=L-HEd3$xY@O2NBy0#M8qs7%J(-J8;|+M zIpjzN0J#*hM)OEb#a!nsdvirBrMgp0Hyml^mX@Qi5hp6enGe&T#BtiStf7L?jTl08N)`Qy^bV0bj`{G5w4#5S&o`8) znq24{V!+Wpn1XjNzLzqJrnd~kFKCN)zMNbgvvz+U7}tx$ znsS)4uTcC~&|ABRM}C_=%NL(5&g5(p~uil)c+DPuaUmbRve_ zX)oGPYWP6~_%`{qYY?_IL+g$3yJIX|NxCu_64{sfG4hW)d5#WZ9WEPR64nJUF7DrP ze@zc^a~BnSe!R-dNtJY*ZOY1>med{D&oL*Hopr9v&Hc9rLY2=O%DnpB^IJf+Ic3tX zsubwroS{dK7Tm-etSTKON)24dQ}mZD(nrab6NxvhmUcRxhui@%a>D% zIj?QV3M_0BRbHMM65QG~7Y2sE?swz&NW4qWY6y!m0hCzTp}(|Dz&#ErGwZwWjx;Lr zTZ&=Uzck(1(tJ@htTG^!Jr`)(1&X?A^2DfBcf62#D24w^NNs#miN^-%PQRU&0$dzQ z+CkpjK@#Dt0>xZKh(|daY^|n;J)E091;C*~_N#&a9Q3qACK0f2X$Gh0_M#V`rn;HUcR!~~yOnGdO-+IThc$f~-h%&4^Qo4UML#;bF zZo{yb_{cj7y3qqIaSdO+?)Yp618OtaFZtd6DUPXDuY4fxQ@vYb_oX?8Qq8mCE&HvR z7+uR1KIg@O7>ZXM*{0uar{4X|H6vQ~jK)*y%mqAbzPI}Z@)7+hwvjLN;L+qp+g2k^ zpD@m-k^4z{BB`{961NNmNU_Mw}5V@3&V>8r&%proZ2@Xl@+#Ll}=sa1JQN; zTn|_Vr#WgSgO#SX!wyAhoy%qD9&CDb6+{41-**{aA`STS%0w>AR+l3U3iJLb z^0Y}}i4O*jcMW4jYOyWZncRKt#>&x>hzkw}-1y=eWCymTg@T%-q~_sjVdrSsBbMMc zlbMd;&aq0xzA$MWPzB0@4%K{NW-F~TA$MK!9YX7g^^iF(exnx<#Cb}e5C6Lm24ujo zZI8FENFyGQ76GsJZ1$trxUj*;xT6NbiE++@B#m6hSH;RBzD~G zV*y^QO4OrXpMKj(8i4zq9J4Bu9qW0?ULL7^D%;szUZ%*koG}k(y$Gyi3VY*U8yA4v zE9`Ib-0Rauw$ClryJj3AYoS-ymtG5ChIc9j4>{NIGB36haX0Zy5@GisAddQdrEkiV zG3lT4?S}a*_ON$IoXTcBhH%^4${z8~B^|9-J*R+Y*~@+jy$x}PZ?;DaNo0Q=W~`f# zbt{*`d}(sbrKxk&B^l^)j@K}H_+qccX%%O<2=8wP+rT!mK`!q)BEcg$!G2F_+&`w|BX_I;a_0x?0{+tsr0-Gv)xun#s9T zLh4(tpA_F0>F0E<+k+N2=-*^foX!XqWkJTQ^{9|Fnaf!&r0|5~-yljkHJ3oUB5%{8 zp&zJh_?}HUeB^JC-ujUeQ2@|WxSg*5eVrW+2M~*P7%>bDfFu2=zO-oW!NLy$gvvMp zlZzhe%XFAmJ`o)cIB9;|3yGD=ChgL0WFDP>jTh>E@5v?ZU4)kDMWOTHO8Y;+mC@_Q z{d&wXA+^u@pK+A|p@d=aYm0FDmI4sKJS>*)M}Gj|A9QuK^{cdT3q<*hRL)c+*mSKJ z+_lly-q^1wj-;wrAYrRu&Jvzm{!X&jN?sDg_oy;Ix1MbrrP$XSwapdTixGljqs&Zb zsWr!pZp_-e6Wh$(IHkznz2`z&;yew*ftqgdj;1R*FTkYO#IW3EQa__B;Atuh=` zMw9nvm&zL7BL}h|H`TqfsRB_16Iu+~p9Ca63Kjv$j_8vu3NbKs;}1T zR(MC`&}#e`qkLh(rAx#6Og+YRiFE2qTI^OuWe*H8VTIvro5Qc$WI z98uEvdP1|H2goMS^*x*H$b#2U0J*^ZA2O@{? zEl64N>=}#=7l*TQ_vVx@V3t{NtZ>_Fn49F83R=e;aVY2|ukdMO&(VAw=+-fD7&s*uR zJQLa&h#y2n@9pJo1M$9EBe+-AFq$%xB?m5nEjNaGDF|+`XZEBr$M_~@nCVA@sWJ5x zNp7#BRz}9R1$rQNE;}iv*t$VqMnN)uQSCwU7%m{CBfc^b2fWcJ&o811t@TVGx{%c@gGt=1-xyG zhA%bgZMz3thu0RLcpUh;qL^}A>iz=0Ccg)iFLIU(lO*)y*j5kHq*<*vpiqzzua1=9 zx3);RA#=DhpV1tm_!im1pdjZy*=36tQ|Hv+P2l6NO64&Ewl*8{bEr=Yb>?VQVE?_v z-U-zGfKTh)xlLPf#|^onov=>=V@zwfgOG30X8m5UGTA7ucOb){0n~d|H-)!37xVOk zsP>}cmalWQ(S(M&R{+rh|tqy_8_cB^}xZeuasj-QMptfr`d)h6EeAVlV>5ejK*kM6i6{8Wm zg2mDg_(ZgXIP;4u?gHc1Q_e`g^F?dMV?@0JGkHJ@8j57^;Gow4(p29<{ETJ)3x;rS zubIcaEIGxtucd<1t6PG%jm+jfHw^++E7o}Jgv_12U?{=nBGGV3OqEy#eP zY>l0I$4?ma#PB2bmAe=F%IAF@uDYiOLyiHl(@LrHH7;*BOIyOh%Wo`NM&Ac0_#-B& z^4#9!lLRiPPgMa@N%1f?Lx<5!#MClI;@uZ=ptR%rS_qBPLF6xV$vXB2PL7+b-zqy~`Dv&w-58lvrEansq2Q zJk6QX0kFQ^9FJ!UgoqA_6Ci`Rr?3~Ovo15@k}-vMoBJZu55q0dqLy6Pq(Wi;%kV@# z$(oVD&uaYsC2;XGCTau8Pp1vQ8%me@6Lv7j*+LBRIQCTOUkLz{yCP=|&uL8Br(Lb7 z94qaeWBT30TDGIAQNeYU$zC&ys3nd`E6$pJcW?5kR$?G5asDZacQOS&3^gnmx8&dV|TVJ9w5eg)b4$Xf^6SXcVwo z3EzHd^`P(*nik1;b9OKLq*Fr&D*C>t>DCAkZyp(( zV^+jpUa4fPlHEQBJhQDt4L16{aaCVwGNWxhP@c}FY(L)giCk3U!QNhXgWJ=eCPhS0SC)Kl`7Ql= zyhe%X`no$Zw9^n>Bd6H+b;!FFO;ZUMSW+|Yv0|(lVA*?ZFNn$7PGohYy40dINH=g< zG(T~biHS_(Afb}EO<@=j%uz~URNSU@iF0D1js8f#J41~}X7eKeerbKD4L!c)tJ{x6 zaMQ}qIU6t}ob%C};wDQoBaG~ASWtk;`;%z?w^Xa`Ki_HyE8)BpEDEImWF{ky&0yxb z5iNpS{c8rFfsvaTv76{8%D48GP(@duhfp7cXp5{zf4~PAjXB6&vGbV%Enj zqn()Nm_}yaOF`a@xy7L9&S=!DLy3S*vUYnHEPAUYW`yS-n&lV6{}TsK5!m%!ynEpD z;|m(wHh;j!UFgx-U~*3Y^%kmEs>9=fTYqAi@`R36tgr6wKr11zUq2{APUKwkBZ-`) z_;b;rT{8I6<#NDpWZ>9fb70wVK_C)AOAISF%E8N!J_|dq&?HidX zX{_y_cK=z);?lHg_8>wnrg=u|5wWvGOC0nqV7S5Y`9B5U|7GUySwBxcn@3ds>1L1D!Kd}{)&l8LfoN2;^sYc2I zCKqebQ=r2MIV&%pcz7(nbcH$K^)&<@{^rNfm^Z%#fMSE;?ZZ5kH`fmQ_f^{wkPA8g z{uKQz=bw7z$|(fAj>P3rw&9KB-7uA<#W7wjbo}IL4y8%s zaN7-)iOIQX&-4QBpD}=cq472s*&W!U$*XWV#PQVj)_`>G-44Z7?2Nq=4om89JKH3a zsZ74y7=`BvNBi!iO%udlD|u6WeiEPH4KLD$$_=q_^;bT=jhlo0#TcF<^tm%DH^u21oSl{!mp zw^b2yT_nO{SzUsjtt`ji|IVekoF}liSzkEb%`J4kr@I!$2FCX#`T>zU}OFV4;J8-8sq57P?7*zJ$Te+JXBF{&p$o^An^b77%~e9wnHFgod*i|Ga?APG%!jPJ7=}A+akz)F z0^|bpSCq5{1EP_xhWXsll!~1C;k9}CjIk}lAn9Qkgw@fA$mAvO}BDCO) z6%@ICwT2*;|7hkTOzbHwD4_cG?9!LzJMB(UC_lyL*Zo}HWlmN+(8B=Sun}LR`QLez zW!D!8h`*a<>%Q4bz$D`!!nPMfAEL)WoRge<8RX2Q3o}(ToDe5lA$6c*0*KRvQQF7s zlNg~yqzFBcIG+qUPwR^^W4gBY-Zjx&#ZR>6wU&{N?P=(GD#Om|va(f5{y>d}S`<%4 z4d17{qBmrDGF?}VV$GP{LTWEi!{qL%t#&fKaL(*)o`3C-GF$gJ^UN8Onw%J^>Xj^D z3qyL6?#A#7d}J${M!idrIPe(xWjZ&Wd)Ei{UT$dwd&fe{K#3l9fTCSdGi1q2 zK6lvL&FMA@JQc-*7#+M@>NktPF_5WUnklznnXSO~{n~2vzi2iG#Q;nBYegjqtKY&D z@|Gib%uIXsfNWcYhY)JsNSaS$W^fj%k-%!n*q4!vnMyUVe#2^O&(~??Pq`#v(2m|e zC+ImL%2(-Y)T*!imCY7C84zEITE2fVj_d}g6pIOU6!j|Yk0+i82T}^Xv{!Imjs6-i zr?&br$UzI^>Ind?5~l%{Joz*DgS6wUs-I(BmK$+@-dk7X5~~`4V@+3kSCYg5d8m^n zl(!7k*RfaYc4reEnxv-QiiT4gCdLT87ce?m;sd?KetQl+jecp^DsdddflJdZP z7|4QrmW+lDKKAZ@02qja)Dw~bUu2GkWRO&yeeEGU!o$ckYt)H@4>hG-QIDrYWPMe%_>pkey~&KG$YCIU{od|HXCz zYT3fJHiU4nfD5p(N%pON&QJP;&VYR4u9~W&AVHhmFP5k#YV<#2&RffpnU`zIxraOx zk;ACnmuHql)mSg1t|NK@$Dlg!cF@)9?(TgDt9bb+%H^s>lZmjuK6z}48>4=kWu)N? z{?MLz^1yIn-X)ewj#0vS!tt9}nIpM5{zKM!7Gcn&mB9C{x}e_!y`%2?wf1a{OiR^Y z15}!ZSWw1~k<-8A+`r#z69$qd_;CuZ&xuOYJD*8&=DOI*=u0y}MBC4mKGQ-B?ic#U+zz>!fPj56caT*vCYQvXp z>G>aJ?4J(;?06?%#mDEkY>nHgHSjthG3sWE<|Fc6dw`VLfNHiziH$E09hC^rz0!7q zqsM&OW(PVqm>42pQRh+E5HZ(a!Rmf?433ycI3#}G@1UfRddmfODxfj zjsAX%)49m?FV7e^kpU4(<~>FXijcs3ppQ4wHY=7by5pDlukX#WJz) zXlU0;MLb}k7A0RC5PDd>x%uEo_btsR)V3A*w(yBy{5bYoj0M z@}GbI;}^8I)lo#!`MA&@@BUBkIiL${pRf0=9Dbe1|99_zL~tBPA-xd`v-@>Vhk;(vaJd=}v3Yx{k1 zQ2fdN|K%`$Sh@dO+F!56PqhEPrTrfX^?$qehwb%uH2c3@`#%!u{{-@Xlj7gm?Eg1i z`$W`LsrfsI{-de%Yui(pmo+xZ+3jSMXUNnuiyQf6V@*%B`gN7Pn{BaBZ^=~~=0sH3 z{t4w-b?9ouXUSDx1*%qfwz~0U3*io=a8O~t3q>_(g)hT zN!>;8^$Sq5p>Qasf_IjP?ZhfUy(**+TOy6#7G(p4v1R)YoRJ3XAW#0Pi~q$e{>MD5 z6a52E0_cVtTzqys8YJ5r=q(B2=rU?^tGguXY9Kj-n=KJ02T-Mz`XW3ogRcjQO4hnY ztoU%H8yiWTT0%dzDrlLZC49y>}bhZbo z0pV)&6UY+4b}^Q$+xSWK{fBMpDwguBEP_*9sif@qD+{e1Y@5>)(}RULezxiTG*R+3 zSVv=-MI*`pp~`mT_nhi$&|r>+Jlh4i1@l$=+C&-i9p!v)oz0S>pe8l=$koFsOlP8Z z%R$Xk0G;H+y8gw0{hJ}R1+sE{6i9}_4R{ksZ&Pm)HZG`?j64EeLlhH9oPDl_$Ub+* zt|Lcd3$6Q$ZJS&T^&lR0whEoz@8zaN@lr)tHj2JE45;N>X+5iHx}D|jJfk)HHy`{L zYG|MFuyy+cE!bDuaF;(b6>^)gEQ%j24RE7RJuz5v(7M9f$omQp(*IA>rg55LRAZesATAEBew?0W=1KDac_wWkBQ1yf~h_JWAd1N#HVg*ROX{j9zrpXEPKEMv6qbvSrw?@Fy`Jssqxt-~GlQzGYo&}8xv{uy3G zS;8dmo#?Z;gx9Rftv991a-wH}+!8CL!FVa$-r@RN!s*Y-W1XdKjyc6=o%xVocr!D1 zmJAh;zOF&GQ%3cdb}((lO(DYi0QFCey^;Ix&f~Y42iP6DWj%URv8dxgKXv z`X45cnimafBxRH2CDzbRxFz9}bl@LfkyH0UY0QxIy{Y#>CjnO1O3>KP`r|_WT6lev z8Y#yEIwO{-)0W=$%^-Ls$9Xk{vvcFooo>U|Fa_Ofl>w{`_Xa6u-XRO(Bc}D4E)^)= zw^~n!3e2m;~L9Hj>th`$?%Hk zp2%k(`i1^00P`Sb3B@pUa)QNC zAZ}P8D6U5SJD}KI|0}yk^W5?ni2d|18eHYX4fOh*GR`SoSmAkI@v6b4GLV;~58UdR zd(**um^a0IFIbsF0Nlb7CAKo4jA?d6Yxs}c?wzd7~cIxoF ze*20cY#t~_8c(qdh9WAqiU%Dz;d=*s`=+2FfBt?M5p|uEbj76K*X*?y3-~#3_rA=r6~yVv-M1R^ zn~z5Ur#l#lUS*oZ9(H!s0dS1w^#X-og97qT`~$m0dG+1AZeNJ!QEJGLbU=s`DA*Pd zvR_AYqk`O1)oo2aL%R%Z7D@4UvjuhQf}XOXW}mLgspp_=y?Vk6t@Q?gieW5pPP%5; zcV@c4VykKR{B(M;|FgTkORKLtBo|$cSUH}LPD|>Fo-*U|IsD$(DrZq)k||M?%FJnc zQlcmZnJc}Z{#P=@zlp+tqnu}uqfzA|bD6h#NahMqIw0&<(UE2d5+s~<*{jq1Nqvr$ zZ6&nSr#uU2xDxA?=2kAWFSn`UQww0eIr@Ie<}dM5odN1ge!#EVj&2K5H}r+hSBXlW zt!zb#P^TE$eH&{E_fJNhJYV^=voOx}{MU__cRjIzd6U`8n5&K)=!;B~=MTA0ZR0eT zZf0+XSALe&0c(3K6M(F3`MzPXj~`9mNHUC=~5YS7wP751DenAbj}? z;n%7$4sy#U-5WSQYM-ld&^X#q2OMIfXs5}X>IMX2^6u6TUspsc0z`Am1Whp&C+d4@**>ON3_f!Ic~!UR zm~wqrWYlU?S7nIVV#iBAgAj2gLZlZmm`?87VemNmkEc^H9Hnlhlxq#6ssOAEX#3vg zuGeP?g*TK!wy?$A!{1FR2%Te6(D}Wc;cFKi$fHxJ>wuLsXnEDOw4^X*I=Jux%P~=@ z5a}YK;lwqjNuo(X$rSVHr}=feT_02M$H1k(4#xyM;!H?NKx{Z>j93b3yRMSvfb>7_ zJyIFxwD}VFBaN&J!U8%hS<#q_m|n|?(4N1>g4!khd|g4#K`JNHvgNr7&adRXg|%5< zdROLVJSg3Oj4(Bxs2vyslq|^okK;e+>K_FCfy*qmM)$`Wat#ze*~uug3vl+szhFca zMwM|1@J2;n$09y~ps5?qwauzvGssOdK~Ish>=L~g^LRS zop(!5D)S0NgoPf`4S1FgGJ-hUrTbno_mvttt6+1Z=bn}53*6H!X)k?=?^!?ryhqC9 zFUvZ1W%6`3T($Vj($WxKs^)yhy!;%~SQ3}*qkR+jG~ou2&6s!PiSMu3L|Bov;jZWM zbb^Ibz`l(2x5}ad{ISW4w#S)P0l7-r&+z6=ODo~&UaklNiLHKu~ ztQ@$tdack^Lk46}I2nzI>g3>7jSkNC;)-3It57}8fZb0E&ArIP9aJb47kz$al`Z){ znLeI}Z;5`g;jPY|8nP&v?DKi11Z1cW-8IP(v@;Nhk(+2Cl_2sS?uPohDA#RK0spqW z-Ebn)h+hlSn{6Nc^}B!zc)M-WXhLmIuV^>P00Cj`3Y!?9Kq3CgWo}qvvgOAf0`g6( ztH7iuKA1lE8GK4-?yK=#JkU%|T>3!o&HN40`=&bsf^|2M+;P)Y@K4x_#O1zW{+G~1 ztWx_JJ2GOG7Q8lgFVYoP@UruzH?$rEx&;iN9B~9?MEfqO8 z!K+*jc=U*`r5D|+bK7VSjD=VjEGRcuNRb-Sg<=Ktq8)@F-XBaQ^({d#y{4Gep$9-1 zr-zo{2{VJauRhwrn$DKNYd|dnj~tCj4bBz3zy4C?PC$8$_27*GoNo$=(-8SVTV=3k zi+V#bt5G?a^11ys=g6B}zP7np&o~y%qSTwF)}u}O5=WlltHx&3_1vdib0B;Xp0e@llt|juJpJ z>(rmX*`yOgNXK4-J^4nq3ajiN(;GJYij;tJyFeZf9<*qK-rUGP(vHJyjzv(xG{G~b z@j|cYlaeum@4ck89BZN^*XGfj9jM07P@b}2+o#hstxS)t_ObKM8-ca9)mA>cWP0n>@WxlE*c?3OOK*jt%F zm)A^Et}sdSTkz_)Y<4~FUmG&Qw<8mKY@Ys#bjG>uyWCvV z={|*S@$@YqXJr|&LY(gVmcX-vwOKrclD@*x64iEC4C{Am{bEH!bj}F*468Te+-nF< zOxJ3KHBfc zj>i!EM_#kr>qaj$l<4&Kx35{>9v0i5zd~guSqt=M4&-^c7>Kx`6z%BPwC+M@fV z<;IF6s#c#aPMbTsMnwBz`!IQ|!bTpfX^~has%|Qx)6mzP!Y);kt9rw4_;#=Pd7IiS-V;u}#8P^mzmOz?|Qsx#y0- zgY)@4Pcg`fYOx>fAV!d}OA@o9pgoHp`>zAJ9EJ`m1fWn!Ob9$4sl6CKH;AXw{m{ZQ zv(b7{FAul9@*!xUpHs^igprQrOYL_1%spmr>2`=57Jy^yzm9&=aVOVC23na|N}!sX zrP2p;+1AJTLhmR2Kf2yJuBt6+8x^Dx5a~vc?vRv}?(RmqyFo;d20^;JyEhF2N^H7g z6Vff6`!4jH^S$qP@8!ooEY@bR#vF6Z=Xu7MV`e0K3>LP!$T~dEy7{r}A2B0n1?@!b zJlUSCL3rUy7V{)@{y75W<8SZcZZWmWH2{fV26$ClN?E4TaWc z?A!92Va7rL>pQ;yd1?LBtE1sRl$d$s*mUN`N0}knlW#U|?c~4({l8j0QOKd{iy7Nh1CY?dH^`|&$>F+4=aoN z#?#!oBMM#vLmvU;a9D$=NY{Wj=4XgK$v)Fj(6Aiz;=GF^CER-dU{)cZiC!dN+Yqzu z-_@KKCJK)$_gVzB;Ndv$AX`O+;(b!tZm=cEgh$`aSbRl{e|98GUHXrI@;e(4Ns#yG>zDG-inXt~MLDD#9Q`oTn`b;OaS`AjTd9Mkcd5I55ip~< z+x^+(LA?>Wc(f#dID0GPqa@PZ5qvAu=lMQ}V}6+pN=!JN zryrNEErc_P_2bB`XkdEKx5-e9M)(H?bFnzuTX$CoKpSrcQ=1V8eyoqp31g9opK%HV z2p4{&MK zYP#x84ySKXrUY!~sc~ZOS}3>Qm)+j^jJ6|+X3g$Lm77%}Uej{57B1)6yem>JP%^4q zsI{w}Wna+{nyIL9g5RSr_UP%~s2XMtK_7t_a#gdR+Z{rF=xlM7%diDXTm=Nfy11Ee zO+&S_D?fRoUIaWouE;_ME+F}^_v#hWio|~e@C9+^YJZ&kun>;;8>g4D|XXoq0^fE^f5uXX+dais#JeU_x~y~3+?P` z7AT%CjwE-Q`Wh@JaoDXQa|m}HTZqs~TLxPj8%D}pFr@%g!`R9O;9dULP@x}V(UAax1(GU=T`${Ql(4;>9LcgpicpExYJ z)<66@R7DO1dQ>g&Y-}AZa&mRp6%W9=#UD*g&yQWVeRAbLyvsk<)Ydq0ilv;tO;SwH!!~W)DY+iGuNJek;JNNJ^TzK@Wb^!s6rRfd+BIR(4ot&1S>xjHqVy_YuBT!^H_+_;$)deWmhZXcPUgAtP^HhqrO2^AXD3O6 zKZ^^jt7ZaGiU2qC9Rtr*tUi|VO5JXzs#_*O*3~Pto4fSt(=-3pl`o7Rn^yWbj!Ul$ zHd;D)E&@xviQqK1fkId79FRXK4(DssH_W|6};Pwn*hOrN+v&=@=+_c0sRp46?5Ym!4*C~ zy(A?9X4h$wdl?v5g@g>KFPmc~<N)l|5K5Wv=Tj-FEssVH~Dg zp}Vx7142Yc&?$_E9qw`H>2bCo0OBm%{m%2q9y~6r*nQ?Bh1s>CMT%UL27hQD7ro=O z|4%-5H!yqHjF7H;4ObbHbrM3`xfprD1)OX2wwzW=@s$l&snm(1CeXv_|r)_ZE4>t0#TiDy_`|sE3XwU2(wV>BSG!f>wDn>`! zhHX2KcN+uCvOv*jxfyFkV{!E4jE33i*zd<0n562v0Ug{!3!r6Z-6FiqXIK!8UMQ_k zC2V_y88-0g>w{W;pb765qiJOleDUDMm_T0TbNK6p4~#4C`#=HZX5*a$_GyO&dHr`K zn{3}}>~C8qEQ0@#YmKYmsvsa3S>4jtt<9P?eQkHQBsjMbr9W*N;IuN3E3l+} z?A&Lb#iVgwU1E;RsukHA!StqZs?vM0MB%?N<#OxCAcZ1N=1N*M^suH`}SH&J2(?>woQ4q zmI4@6cia4STh)}0_Sp#}C5^qw2@O;MObyZj2V-bO?0YIYl7MjL2Bwm%iwg%cepaJUCsHJIFEIGjxNgSGH48S)g`p+8<(!#Pj@ZDb-MDg!pc+~;n?v;8FMO5Tf!aYYj@#DX692S{5^hE2r0}sS=)bwjO0d_o7g#nGtmSfv=&W23 z((1ia2oUPloS)@)v37(yY0W%n>d8L(S*jf_@r@n!A0EH#Hk}o)XF3)_ZSZr09zKj& zrr&ka%sxI|uJ~YJ^Z5}ymK#AW0v7Y2i>!1+Guptq$rn_||AgcNFJK1_kw;5{FM?$E zXCnt_P~Ob2K)*;Ju8))J)Vzif*eo&HH>U%xx|ThB_+g!>s!^SB?g6j;f3|lZAzNO) z8ga&SJ4KXMcW|7CC|1c6-LC5UwC`Tm>lI%ICf**A4o&4mvJHMOGcsgCj1Y1xC0{nV zfS;{$*OsU?NldcdM5(H}>rEhBqPz{tTd)DZY%n|YU}<6-!3Rs61ET_APe;kNsqO_( z;>$NQ-&fyi+1=6Itvt<}1Eb0xO@fY^WsK?wiJ#H_;Y#ljLy~+e{!cMsgWv3WeU$h3e4+I8F%p<0bo%HFvThjh1 zvJCQRj+?e_j6M?4H==mGOk~}U7jT)BddQ>Xly~r4-tyWc?-7lw4O*8{sYfoH^jNi) zM1fW;`mv?Bw97>OkIz}cgB6%~%<}AJavS&YX@PWum5?>>iH;50vH9#D-SXUH#I3`U z=^r4@sUTb@rocRPET|0ANanw9rvL+*M%YG3sIS;l(!aT&mAYCh8imu0vDMaK%hcwm z-6(exPp!z$yb2pk^>JK`UF4doD`9K`iYZ7+W!(@WKDn|ee0lB>1aUCe)?m-G1yF4z zpU`dVUYi!tAMOySfmghJeC$*^^{}-jutq*&nq;xJ@ZG%ugTm0|&`T)aXRLeWLu`*# z|AcoUaFwuWzfWHnD3XFSsxzp9=0lQ2Kop{~7W|$TL z)iQD~Ou2LC=Xk|)0sAY*tfYC`QW|Nu7wuup+~x!hw5NDuSiwV>3JGOI*#v1CYTQ}g zCLE@DHnM?Mc0LCfR6woDG2u9xjhbTY9zN&wf}NY{I*V`s9@Iq)^&c2ZE(n`?)NbGu z@CQdSWxLx1xL&#ZZyY(E#L}|ggyDUar))hWW8Ukx22)FWHID9Pw#U<0>eKSxooUB_ ztu)t1e%j02cZCU_bSFJo*ZILc17i~{TcXA=g{p_GTUl*U!)*+r?g838EsHYZPhu=Vu75#>)pr<(SSVOov?etzL^d27ZKONvggIpZr>m(U_)bS?~z<|3-8$y2Z43)I&&`5R)1(I(HmiKk&c$3gI7Q9RCRs@!gJUn}DcS0fqJL z1iF89_pwq~ndFH|Dj{U$b_)hO3m<5z%{GDf?|95<{xlo@#k*NUekf5s^sEXNfbQg= zf%CM(A68E$`zYKC$2slOk{dW=BK|xbrS{=QQE0zC5f#j&76Z!&wA(xb`YAmG%fBTg z23A=AmQi}%LT9%VKRftD#(mosr5TmkH~@u&dY?~3;@J`nf77)Za*Hp0AyN8XHL4Wo zlu8m29rns0Q05llw$(H1z0SWmo(r60{nF#9P{s7-J(&l=#_>GO*ds);X5RW1*iS+> zSGCGX-f7~?k33UJm1nDuQ$5b}h*8|@x#Y_ara?LKfT)IK!TOt_swt%tqTyX})v15m zssZxm!TsxAFOdYl&DazA{d6SlP%+hQsJ623fw*ks`S_!a+%3#wqH`?%@Z2?z?f~4W z>3_JBaPzipGnaPO@LHiumVS@!gXZ;sRuHh? zzW2znXCr356cv(O=KVfE6GzkC?0-l{_3gqLSv3&}9{vbFy}2uaSKN2+z#AOR-cOs_ zZvcMW_@8flJ)UZABk(66y|ko4+B<=PpX3&8ifIUh_CvKGX z-`R0?cj=&boC3U{See$JH)bBc4)WpG6)MW!cXt33G`SU8NOJU7zLOCgtBG3ZXyqH) zw5rJGnh8@e8V3gyhzI4hjyQB@n&6>ygR zf&@rRqc5B8<&3SCGkHT-5svvI8f4uEGi6E)j5s*b)H<6^Z~;iQ=D_`Ezc1WG1QhVB zJ}(3{E${eQ)Fl33?uH15pMJYff2@3?_>*P#SmyT$)jx~Ql+@|~nK!%I*}#gA;*MWC zgwq>(A-LiWfuL^pnl3gSk=oNr=UqX@f*g7?CZP>$(%Z3=ctEQ7-~19Swc}6rVGaJ1 zO^mow@M>*m%*ux(A3&cwI?2RDjXd}*gx-D&fTNSl=cX%N#kHICbKE>qrN<9}s!uwd z;yw;N9~a5S5gLLHZfX1|7fZH_-r?l8NAi+OQb1>$oF6xSp5|v?&8^Hy?(;F8?|x|7Ov;RLP98lq*(apFv4eq#Y}W92IGdf5jg z99N)b-bZ>A>He}w!`;kD*C<%$A+4a(CNLuC{l7{6aJX+$RH_3=`cca}f?$@^mOA~2 zgT;0!Bh$PXqWFDj*OmfT`j4re z#uzLAZ9qyuVbpzQ%z(S>K)QmJ>Hm9fGerucLH&?IoL)uy@db^zh7Bmj?U*+?N!`nz zcY*wqMnl=aPy6YBIv^d>>^=AI(Fs!7Wnht9-8(zbci|Mnm#bc_iQbD%WiAY)9?f_TeU!hF{}4fw z*Q})DEY^O@xaoI|ixe4L5{m7(rDsoy+4n-yibgTF^68_bi&<3K_e$8}f%QQ5ISD@f z$ihtJ4DY?STGU&KOOf&dI(A`uT4l>D`&D?Mr5HfFEQcYQf6@8^Y{fnQVb0(7=o8d1BaSLGQnY%V>%(2Pa!2{$DiT052mm)dSVy>O1|2+==|RQy#qx2(g9(uI_VFl#vE@0BmqguY&q{)cq{4G)m8r$o=ZMjmWYF_GslzgO z!!`*l_~YY$gmGL-GiLoftzpy-iy?6m4*y2?m0iRMk&c-h<|Qh!31l42mD}5p?JB?! z;@wnQwx>Q_=3TY252X=k)3IOP)SON_E<0|8cu==JjA@7M~+Nk z=#OT6t_k~J&p%kYir)Y3YVj>~Y{z9VB)hxcv-;|q<$e5F4kksOVBNcBgS-w<<`%g5D>d>12IY?FoK4TvXl*x=V+U$~Siye>y-IaO z3G+fT`+AgAL8j4-YTyGoduiK&Z?05fm7DrBxFM;pnp7=$>o{7dYV^SYb?L`(o+er} z$g$7h>I!Wu`;mjn7M(sXulpdlBRYg z8=0>daBqpzU7>3kHhov_r1h1-?@ttVU*312$(EanaItQM5I$OPA(iD1Mh3e&j!eg_ z5ZkV*U6(mu z-PafYokOXq`uf$Sn9H~s^rYFcvbh`TN}!waz<&o_^099H(?iO=mwNJq}k&>j7H!zzf`Y5sy{xfyL29|?QE5uugC z{;DffejLneq)i^ihG>;!Rtpz*y}0e0v^m7|?|F2Azp0h_{o^Q(g8jiXIqCDf1B6%p z%}Z2HO_{cSU?h-J6JWD-^Ud1>c0~Rt%nJHkk1BEyEX=PBE_`x8ax!0|eq%JqaiCJT6g0=$)u(doDN(dp9Q4EPEgI30e9f ztNneKwCkf(Y*6VhkV7^^OPB7X*&LJV(X!q)p0{uZIYcUxOzxlmoQR#RhZHG8^K%*4C-5$;}py0sL+ zRhYxb2n;yCDTeUTJ0weilo!LD_1WemcP-*(hcl@tcW||I)Zw-<%hc!KFvnXeYWn$b z2PCNJ9sG)=Ku+~U_0cBP7z<6J2@HUdDr^qU$nI%hr9caFe}{zS>(U-s7U3VD@(MO4 z5X0z<$D0nN{vDb(fg&a8)O6BfiRBfgFEN&yzt0>7vCGSANqZj{-*LnbD$4bf3C#XV z5__|Zva8M?V4pD`xkE-;cZfI-+#+(zsyg)MfqV4EzEDt`nEM~Q3=_jjFE+*f2>F`W z8qe8UAITBs|He*(gj7~TNdA-b7+<_OUOicX7V~bWHrS)!TCIBYDKh-|Hb$C~)-}i} z5HIxfD0B_j?P?KYXDQ^3vuB&byEWLhuBt`)>Rd{19#IIg)}002elhDRxpo6{N=`5# z_z<0AA7F1dybLTnUx$ezueo9A`|29eZE&{bVTEM`w>;4ia3JvXPv&QK#bO3?$yr2@ zXj|sVsJis*v1^d`G-FcBll8CYX_`%UNA+MP3**ltsT}+eMQiw7l!9q%^#ZfFz=VXF ziLT$^^OXvwWfFuc{g?-m08t&m{Q7rjg^iKbq+%LQ@i~lz12{6KLi+nr`Lkgg5!}C7 z!kJ6EYnu8VS$}v_g-IDd_DdaKc8Eg(VNN+0bJZ6wil}nk7cYaP>doK7VFR5hK4#M( zHJh6EGJd~~wL9xdA=Pb#1RP?W`dm4vJcQL@ED$iue|7C9KA`(y&O4NdQ}7VpXQKEbXT?UH~Iqb2I5S=xO^is+2KLm;r0UEbj>!QCS7{W zPL}R@j!2GmaRWaudUS{j1?_YV9*O@8658obFR%yOlCOryzoGXfYG8AeZ>aqTnbFna z7F~@+r#c1(9$o~jrWh;rf`^2=InR3dd|psS_@q;vY+p9YR9N#$`uOav^2&rKv ztLk6Vf;_W29=0~Q(BHGC(WXyS5j}9c4I(IWJS`YK&Em-Mz z_A}ewk-t2ru`j7Ai4_Sv;Im({`&?3mKiqp>6>Ao8+O)$3?bg;D31FYoUh27FvCl29 zN`{-@h{uhGU8Mdq9#WBAJD&H0!X_DRYLR4qg~X`4*}8+K+ynaIiv_liX);^g*uqdi;Ri%Ksyi}k4N-8Tn++UYqB_?ISNy2|eo z5pZ}6S@YYwo59lz7_C31ZTcoX=TZDGXndmz3?Xb4C{PL#!v&8TP8!>w&+9(gZj0#R z;^_t=@q-jT+yL(%0ldG%Wu6u|H;R2saVVXzj=@BXPnvZ9KvSF7j^_8ANQmN8%I6J- zDSMmaH5LFZx>5_a5l@a_P9Avr3VnN5FA(2- z(}pgleTr;4?B|5ri>iuR=sVQ1>%`x4vJWi`n@^)&@OWMW{bxcek;0XlMi0W~1=1mc zFBc|GQnqFMfHy1vQ_4X%6u#~bhflCf#wdI{X~h&ubgDbEDO&>fJ#Y`*R4!${jQ;W` zk^|@1lOqN86Z%N>kk5Ws-wGs33>{IWn{&$u%}4!Gn}nV|Bzq+$CNmWXQnEEnJA)4`dXJ4U zU#SG9j&q@>A7ZAFNPIqdyI3{nw;nfldW3u@lGT1}4>@q*S}19r7vC4RGN9u4+)uCN z8n#osWis@*<}|KGR&^$Pyqe52%a7lDypP8P&rDQrv~=*PQ5SvlkN;?*E5Z-_8(ZJJ zOcXA-7YV10d!XDfW{E0zmp(<_8e>>Hjkvv_pJjk;_;tG`7R72U2q}F$+i=~Rdq9r| zuFBd0sUQHsirbQ)8o@;-< z8#^R~@!*!;%IFqHBnjLxR&UD?wRcbxV$MKwZCt;{RwwJnc$Y-FZ|q$jhmy#vntVvVBL1_ue3v7)W7zL`F-oA!KHNYH zOg9Yvnfe68I~70i)yQn3M5e6P>hJ3ehJy#ZfG9~^P5oc&*n!)FC1mQYuNEPE?;+j$ zF){0qmt;^lyXx$22EEfb-SuHF!kHP_UHMiyd{(WvSn|}|SOk07-s9u=2l~JZgwt*F0PO_MJCB z+U#XC(>PX-?1a*M@9!H?!LWP9bn&*d+@CC_OW08?sCQ!=?C-QH7qfl%x$d}P)>Uge zA}8R}+dhS75gatsz3>Y)voHNH(91j%&4(ORp<+?hni=~)8FxPWFVG6@Fw|yS^8Y%S z%cuWh;pph9M}8NPpq|SWG=c9NW+MT=+n4(L z1kbX36{hcL@TPoz*56biDS*0yf+gQ`0 zxx?)pQpEwWKX6C>|GxV1Oka*%8|@!^#0t;9l^VKg>^q zYt@1&Xs*p3|J?HeCPa2p7-fT&g171I%;yqni+L0NUFvS;?d+j^;a5-eWboJ8Dk~6? zP(+O!9hJ^67a+*3ZzFBZP;nWn72G^LBG%T7l?@G9Qd4WkcLxRr#4Rj}=(z(PeRmmg zhQof836_b(M4{p_hyMJzgc@mWV*wRueo!>(tT`0f+D7=k` zjz+Js9H*GZYw|IU?rt+oVll*}q?{Mm=pf1BL$=@H5IcLDg>ha~Ri!9^Wyz2f866!i zo5Vhjw79s)grI!vRe3qM=If%Lz%xn2{M>wLL*k7-$@~n{Z%Sf^hjfRB+n{n*zE@Su znv4%v<#g__R-v@-3?(Kik`&?`uia7KJRi^%+Sa`bJ@9c17tc4~xwfWDBuzz_NfpuQ zkTrRXk8b*5jw7DBUsfU2cIz$n>dOIbbv!fBpb7DsBtf{^utC{o+wE_-7;$5+FJx==h=N_IXnHmBF7u<>LXQ$*Ho#^NJ*E>7AH4GW8%$gc@)aS zNjK@$Pt{B&1+^+96i-zaV-DAyWlVI!9=@KTyv6FhVJ74UdyF@q(!U}P+=W~5ITmo* z8OzzF(Tn!oAc9mAYZ`j4!Ef3k(@cFK^Pi*lyFAbiba_dPv6sK6o~2$h&|fzyxbM{O zj~|^IBXF7QrqpCX;%M9Tnm{3+d)YN!3*=g|VQW51T&4@d^PP*EJAz5KF*Jce6NIBY zusU`>A5EkGh@;q>wo!9i;<)VY`=vH2g zU@38tGS{BKm32{iw1vNq=1<7V%D50Jo54;p54- zK>UJ39JpnQzi2X8zETD3vjKxEFW1S}LFt%Xaa@e8|3KN;m#eJX)vU8Ug~Suu$}~LX zZ8>$@Yk=5aAD~dgWxCx-N3*;u7RL*~AA(AbiW#G!D|14e=%hchA1L0p7g~6r_aKz| z(%=6OUUaKBS5xH8N;T6`4Q_dxaG69DuesrZM9T@PHf3>z4z{#c2b=-(^~P#-?msyq z_myRFm{8`kTmoLS)F&jH;LKtz)Lt3%)wNabR8va&llJSotdK_ff>Snok#DbyU`~G( z_@_K_3Q8I+Ti{FLaZT?pfAXd2E+;2ZRHl@^KXmSp9Y-_Q1fDP$@=+IVMuk9cu47}F zJ$LNs-1WiJw}Y+bJR=mZ4kK7PXrqaF*TYfJ8%E!qMQ)~}4j75$h;!=jOp7Xwb_XH$ z0mBDJ0W@YC$n^a!J;bXy8yMORims_)n~v5LN_Pv{4BmIqcUg9u)gE~|@_ONNVa(6Y z*0w&~rF{@YGCEDxWHY#?Ri>Amf)Kb81~Kit+LT{Eo2bDBM;XJrKmXu+6J7osqM$!h zUKOhVvNE=f7Ghdd$2r}PSMEn3!pYsOJhJ>YY9RmSi}jrBA|bmQ`SZxEWrmG>qJpBe zDrwY>69L7?@cMf@oioTo$_>W2L+@Zu;mb2am<-p+9v();L`A&7Ylvr&jqkzVz$^R} znSA;CoY;v1IS4a%%X*i9csh;hYDA5wuhk64nQBukbh=cXUPkj$goG#wVe-WL{V9TN zePoSl_L0%yv>t>^+Y5F1Uq$vF``s8 z8hi0InDS=6^P^V@ej=a}f=yswKim;(Lw#%f{gMQp?dhL>+{3Yf0|cT+xYgn7?^uf0crvH+BWc_b6}n9! zM>zy*ICxj*=SX510&aWXoX3JqnTf^M-uN81UwO|QM^RzG#;V;=4;D#Hj^W>ku|wrny+@vB;K(wtq(Ecm8#*!6s?pVT-%d%I1C2>74|& zDeKPBk%nK#er4;sh+bYo(-7OG=J5u-DW4-9Z2}Tol@xmVSK6Nm;IUlgc=pzxr)`ge z1)b#lK?Ng|^?{;>A3JntgvKbjneC(Xg`y?`w%_hh;;SwplZVr>!)(SIkGF4GN{*8O z9}SAk3Ci2pM9of*DTvoOza9m`0$%E)_);(?zqixZ<` z-oJk5ipMn@@!Z0v;*o@Bk`ko_cFLM31T8W{g&5X&wsb~@s^0L!B-uq&WSD5>ePq1K zT+P7zrCe3S*|J;!ERX+xe#C<`oFE|t$C2QEt_8mj8*HR%qI~4m3tJ3Sr$b3o8)H=*uTcsAc(Vn;B4iYgr?Xw zQ@#ifojGnXL3Q^H^OF3QFJ3gB>=SVk#)lml8CmZqa!|{Pr%?>YGw>AAN2k#`V9{-4 zRB}T@Lt76avVVDac(~rOovAwOd%Ih-o~UbIQ^}p-g2!UOc+_!czn{LMRd4y#^Q0TG zPgPN%fY>&MRDd4X5u@G?8eZ%DGEGgfEqFfmev)F|ey&=Cmz2`_aCJ4?IW{=YmhIPq zO_e&hC-fF|+ca`ie)YwR?&Prm86H@>3A%%N%xAPq(?1hJu$Tp#Wc=#Y;BDz1;f%-# z(Ty>#s+cy zYkUbK&bRPjkd>O{u%Nfy7m`*@fp?^tAN39hWC)274j|cZS&)Wz7zYGs-~D^shPF2NAy$nDm}TabWd16*cA-V@XxH~d79Oy zCRR`05GwNw-0ZRB^u_JwXt}lGFq_CxSp1jPkKM_liXjO}$-ZDzyeUC2Bmnv_!@G@; zdt|@ZIKtQFacp2iL=;+%T2fw~zLj34@FSqnc0M;fXpKD5xi8Lbe@44AW0m!Qibf$_ zsfdq{PgHX6qSS?!Gaqcmmn^`$O)p^@w<%`=72bD6NDXUV^h`M6cV0WAdLblo>B zC~plm#Irp+#oE2UZ~TQpX5!DRw0n>=zVfLClJXD*U@tGzFo%&Gn;W>p?Ls`79MDyU zHK-5f?C@M@SYV}oQi#Hp_n@fYG1!t2xg<;9pUiqc9B zJD|6d)VwmnhKJr=wm>Ah3v85|HtPz1g#lBffUj7QqQjRT&z$dJ$?0OW2dR8CcG8xZ z&0taG=bBP0JI7w1SpwE%l~0&bHrUHX?TQw35~FDThCEPs3!M5l+noSQ zVMc=C+d;_r&i;4Iz9LU)B63)#qS?mwD{&m|j9#Xrn~}fW|Glu%=9|ff(=R<+#$2_b z+<&Bw7xRTuiH%4aR@8H6a3VC&bpXyqgq6B8pqzXk9jVwaNX)Zh4*}`%uBLi#``WSp+Y5k(@KcbT zgyg%|T+H@~-j?x}B~{91HO(l_3WajPs?5Y>G47W@g!P_sY6@6AuqkAV(uKlNR_A_y zpRK}tp3Wo`KXLQczFSo0-TPw56#qCn1tb$-fWJN)01VLaqj)|!BX#hL82M6X&r1Z! z0r=VuPw9arK1x5U`&*j+XByu;|D=b$p6RnHFp57-cBfaC4i1{=Ak9sOgrg(-zz5b` z5*JKl&7lI>d2wfeQ;mJ`>r6{cg{usrWWLQM(Orx6Ib9cbJG7~4rxtv?Hmx!4MX0f! zE*%4Z?;r`?{dF;GSVingLqpSdx-rlc-WhQXPPZW`H?m*2|=PS_I_FJ zXV$Y%ajf3Q3+-sUATH%p~Wx9;w@{wTSi1DAe~&#~vba3Lt!r1O%bmpP4}w zFZ+jC=>&DR)fQhAG&kyY{IH7fa&!E1%VGXcL0$g_myWZ%UY94o0b0Z4_k3n!NaEz; zLJ^w`B%e?K2;@ShP(TNhC`M#tZ*MRC1$Csq$oDG2&V9`JqNb+Vs!+GeiVAr(b+h!N z;mdMZ=jRgAVsCo1EXw+%x8`>jy~`&@k;W$`D6DNb#z~gJ{4uXfM}bvCU1mHm5C-Ns z#r10(Yo$D2$?vyW zF=yMO3>(KwEiQfOye{eLa*L8=V|eH7EiKv^G2Wv^>Voevx~d%uJ!osjDdQ@mZBdIP zi@Hu{MsH@cSC%9-@JYfn$rMGQ`8jHnQOB(^U<}Im$*eEUI>{`QyC%kD#O=%H>O3pA zypY?A=L+qiQ>ciBOwv19Mq)s~+-_ZZ#|zms|NaUv**KCgOQ1_pQn_vuc!H#D5c}*J zk<6F;@@RQ~K6ufgQ=c5g4qLm~F^9+bS11T59}udp{DOLUxL9;fY5QJr3id%+R#NiI z%K1Y`bcvhbj+Ty4P!Mx2c>Q_z9jvc`*CtK@4U1uiUKgE4C((&r{xg~+M(x~lUmn6< zf?3zGJ{M1b;Y~;2Flby~QvdWhT69Ft&?67PB5VETHzQNLU$RfHrP700T$xN2;@k;( zp}G5l2`%xPBODJjcw2wBr`(vBRWXA_>}MuN(oegBQ(RFSbJPWs7$=I4&=-> zA5_jq1=uJ_1FagOFA9zE8*vwWj)G=5`T{3s&d;VikttHotqY08LCRvR6Uq_mgvzfZ zRL;>%3$dTfwf@^;A28LX;_AFb78<7%{`yhtv7kDxMCB74u@kyK>4gPX={OQA`#HYY z{uFBH=Rezdwc-T39I2<=EzRW*&&0X`ef==Z-#5 zA9Mh4O5Z%R_M5G=_0{g6%4pzV9cTyp=Uk|NzXlI*B%6g$-Gs-UV2%OOiyt1#Zb^c+ ze*0|6SE&7S!11i}^jNMNi;%}gdh6fQqll4tqXJjygn9Fcn#-)!f)D4DgE@HU{TS~~ zKGG9jWcoC4Oh)$-?2AIG@fFEaflUJ>XZ(it*!%?@R?M%aw|o65`B-q%*MsbeEFUJl z-VF*;Bu^MKq3}X&jGhr^Bo{npKFCT4p&~BaM$3#(3z_J?A#9LfoU%;_U~zmQnQ!p# z$8f)lNf8F8L*J$!-`_ZPoNf2k0cO0xdRj#+s2mZdBktaz;+(=!44RDRBt=F>dS(oI z5u@@p7#WwPk$+-3e~oneNxZ~yFE|sv+eBefMC%GMf;xziQ=CMLvjl$D22r0lXeH({ zJL2;E1Bb5gD0C+;W(qO72C#iq1Cqw9dZfe7jps_W5)P_iH{vHYVT|A<$6mC(#r>=| z$1R#^1@3Lqk1HV=H9n5@Q=rV!$4{@Hob6);<}q78^-cj%bb31{&-#00fYBK87#I}r zLcPAOo%$k;`OuPiwwS8v7wtY1pO_Ii-zc5CxG(wdd}oahshyz-kcC$U}0 z)XJ~^A9LGtB+^^gk6yggG+dKHeZW#^__5@CVjDAU<< zvBeM<=It`egL@#kwk=6>27v{8JVtr~rY9GIt*EHT#JSEmYb*Xpv+8Tj*Tt9C58G1= zt1lI?i(MA8b{ECH!s=nS=qTv->#L+%KcSzfg=`=?@_<1GuSAx|-ORX)6Z*VbI&6`q zZ#Etozq=f$U#?Cr`>NiCfWs6JTTbwX=rimEMW=#7AdW(pwaKm0Zl?l5Yy22@!7X3U(cc%o=^$ z-m~{WQ;2kEuG6HZ)8piuYZ7h%`Siv zN9B`@l|ui}b-xC4Kl$KNj`G(tcEtD$w~BPkFkp|q&CwYky}#|LLA zzB?7m@7PDGYQ|TNGqMzen}4ETIXSP*RzJHOINbL;%;mmFiQ=W~$tA@%fOzjSZDL1+ zN{$La+i>7D3?u5R7Fbaz=_y`zvlhcEl()JczRL3b9mdY}_&cdn?Q3EBu2{fDnPG|S z>S{1;i_J{=xOy=gdF|2WP?GvNCBCNH8{@KA)915kZab4g_iGq9F~AZL%Hn?-aqGD1 zz_YNYR>GQn%e%4{s+*9I(0E<}s_{K)sWdJ0A9X0lNy?Ar()svP#gI`Hv;3`-Ccqz^DT;`nHWU~IfnwX^zY1V z>(+1Jji%r0g?vsE)feAXpb^WO)eQ9=$_H!%^MbB4ZQS^TsG0g);7i$d=IZDFZ~ybg z==;zAnqLX4CD*lU=M~z#9uN^Dzio>&`A|q0Y)35|zIz zicj>JzOh%`+o$lBTmrZH0wl_pwH~zdJ``zcdATCpG~n?p3o#n~vo|iI7J0{ILsb|F zzdP;r9Dth^t9t_R`sI;cR2n|)X%>lJhxIf)pW_%|#P;dx*>FJScIpk`rD+E{xzk`IiSg#(mhiJ>SDp0Z zLXI`er=N$`pl^Q|j(gZr8u>iD=v1r{&Y zYV*?E9IgNDWL9aM#b_o@pZl1&B$xdX?TXhnNrMvZZK1)haFj zusn>n`EWF>iVHm5(Q#xja|iuqaN9hv=f7s-CqRTtmdC@;OsB_)exQhp)4q)!KhX1? z+^2>CI&M?6h)xbEx!(FT4Zag1kJJ23&A--&nIBod#2iUiI` zI5N&3Ydj)#@8AkEx_+SbR!kEjWnlF+Rt4EDyRtdmg-wD`cJg#M2QU42!i8lH>(7|d z!5Ogz2USE%z&$TaiRPsJl4cK*#tH6q0N}XWe23p%`62&tn@g%orJIWVk_W_3L&#_> zxLX;O;*C{c&XoKrYvfK_(~@%pyB;WkZi>yW?QnM&Gbm{O1*-WS9}ZpgYkfK@e^^#} z&S{N4L#MDABwWr!>VPw&m*pQqUZHYojY(OrN!bRSWsop!^YddIJ;hex*U03(;WL4_ zfG(8n(*GJr1k|t09?#cFGM${4T>+T@jR1-Q{* z5%rn0UU;9ZiZm=PED$arYtQyNIKaxL?VBN>mzSEjq7l6L z6JvWs9r*eL9vDe7h2M1+_BIVM{MFOV@nP72co5+vX9B*wReb^7jDEV7OsjBYFgo(~sH9 zf%MW*imB|AE3Uq&2BaWk=85}Z3&9P>S6*bd6zQ(7v9Pe#0hHZ9?3j^23M|OkEHB}T zS@Fa~ul5cPakS(Bfb77>(r_v7H|2WLfP!uOeBPpdgSG#Q9M8)SDLHT68)?f59J<4d z^;E(Dj2U@KLj$P;{9^<=63|vyV88+0p3aX?HI~0Al~N#^ZK;1S+()=iSUa)cGX3Xk zc`-dN0jTAivR5N|z~?(YLrwuX^1S-|&Rx`2Z;6qM+4@i7mr*576j)d25LaBs#5wnRhx8w?hc%6pqb|9M?A|U%8zX!tkngMObam|I<~)AO8xYs zY1^A!d5Z7@T$#j;25t=T>3)WLvn&GlFDGkPfuQer9$st`=vzndtK)xZ>!p2*Ex1!wSUlKp<*x-*_Z zrnI)RtH38E)%Y6c4{XB@1C*dLj9mBv`PJ%3HcARMVy7niW$S&DfPl`O{e9H|F55XH z{(%fnWOCi_uUe81r=}cEJZ)Gq7P>yBaG-c}vft{97sGc4@9VGWd{RKe{nqnx)i-Hv z_@?Ua#zmuE)vhYcpjLNqKhP1(7v6qo{S#!)W$1mUa{r`wo zhb8vIpj5zefKMQu3Jt*wWL%t?n+q>0`f%t#X~H$L^LTdwS*&_iHdZ!o2#H`3Q%}Lj zlr~gjGp0$GAck}MZ@&6mmgayq+8f6V^$zX^k^vTF12*g`jnxt=j}AH(h`s!sJ}OKa zL;y@Xd2?mu=#^fIA>%1F#!f71+js4%>mJ!+s~NA+U15Cj+`+s`9SCS${P5g*%fCr! zH@y;~SwuX`zSPxR2@VuVS5?nIhryt!eC2hw!(FdKTHBMRky0!>&`LAqL#@TdxqF#} z0)=iwM`$=aad93fbaVe2tyIfA%X#-~vLBXr(Y_ua zbX?_zyi?jD#K%`gZhWOJ!{WkSGTAgas#d)&MyLA0qCOQJkMrOClvlysODYOvIaqGA zPA^At)GCDL@-ypX=z6SWoh6q}f;!Qk_SDPCEo@9}nS=?Hh@)r=gcX-O{)D!NGw+8= zjth~9IVq_w(xm)hs{C>qVONJSj||`dv-#CQfO^7>jSu2-FEpCm@|^fLK)Qbw4ncO$ zXdrs-XYVxNtm^#Ti%5-z^u`kahrg-*K3b@Q*d^w$!F#R{qQ}>}YQbnAJXa1K4Ui*O zZ!!hCA?Kp>e!VP8w?UImre~GcT-wp74D5#?P^>w}q|tDe!r7{CfDbXL`0=Ip_=9cx zS+GWvO=k1c_0o!5xuHU+BCOI-io+|-ju>?B5Bu($TJZtX4$jEK)w1JQ5F3s#dt~-T(>@oD1hXg@Ngp&O-isJb;EBxeB8VkD$KsbzuzY5-ZHfs8 zkzD%I*AX&!wge;i?j%=LM&a;yCaa5jN3PNzU1N7+nN+*{uJk-ZvgdW0_%!^$4#NIr>9JnP*QCUT6hys3edvp>%x*Szqg<}=!T`y`H0-)v)6j* zs-f3RKgTKoA6U`jL({m~P(d3_Vt6haM~B-fmS`g!`)T4wOQGAtmyIqT%$K*klKb0w`G5#E z0TO(V#Kc3|QO4PM|5+Et+hS?DSGaD?gF89Dn11&Pi4X}w%qAcxJ@nHd`J9ep7vkU$CZCSyd`;{c zNdmR}g{pF_VJ7oyQvlhJEd-p#7IuBV<)z+&97^c!D@HkIoHfvKaMAwhKqR5j&V2fM zn=~p4Dyz z;X>9H-Wtn%e834l#qRtKeKDD_1Zb~7VWt}XY`7fILKG__ks*$0CV(KuH=Zn~F233L zt8DE`{VbAamr2|#Uy^dy#+*NE=+qq>~Dt9e9_?Sj-6U!o{OE)?(C4|HwaL*4ZIT7f9KzblPr$nI8tQ2Ww-Hd=k%%}NFr!dnHYO^#s`B@t}3?rk+@dR+( zKdhTpOqi!hdXE9*0 zc`Oar27p>{wrpORnPzi*;9m)3qE4xSzydYj#zwmUBI~fo@O0>^NNGl_X<12jaFLfD z?;-WG%D8>r*8^YSjs!6+uYN$|9(x9l2$5kwQN(7&Hmf$InsYsfptb>rj}xwaxdNwp z76%2t&S&2#jlx(CNDWeIpw>}vMfs&6896L_;o0E*KPn$`8W1GruJ!nR9iauOloy@M z&CFnyEZMcr1eA#T1cbKUdR^CLtCmW}?p%zdG9SdL>wBvbPs!ClhYK3)%}fNNe#E|~ zfjZ@K*zcBHz4%;5CH8PD+fnNr#o=I1d>PR4`I0@G?Mh>7n)G~sOr{eHk@sxL$Ihu& z3rfF=htbraLJ_+ui6;4Tg!CAA#%Y*fw)Nix6h;^rmMFbey@dCu>-y7d8&>8kn4dz-l zoxTSn4V~dATEfD@CI-?H7>B>t=tD3y5U~ol_}IVuVKF7_W9~~rFM0|f2tk%M?FT)_ zYT$(c!i3OJZ3#gH&xjx;JgA&oxuHI&{K-@{v_@%CFh{6UxGW_8MB|QYf0GyY?=Jxioa+SA^WVI>9@Kh@78PVg2B5z} zXC{*l?hJ%`43I%`G;S1^vWM&b=$zy<6A*tgGB^>p{YDlY)RO1~8Wp1YjkU`U@`d*K zHNTAEe+$%!Pyt|o8H8Pb$5s?~#i7gTs@X z7holp17x(q{yrRds67%6kqlEheRX-){t`>2l!QsDr@G})?uME9z-O&|d`QVB@X>HR1@8#H%U^xq{W#zSxh$V8S;kyN|(yn2y9y+H7(CS~tjTue2c45eqbT~Om zX4Ta}B{HeF-f5tgpS-F)mOB95izyu^paV5@isYhWr12IWBNS{hwkO`T9aMI3UCe|MxAHQ-dXtkuI z1SJ&f4JRNGvs@J9*tH;KP)bw^lLjkiNk5RXP5f{l(WxvI4;G=VL8xmHz&9nKZ{bR} zqz`h{#9Ai#i{B4T2E#HVp$VI%sEJWNw70K^qEK;sPnMyw0)^Z@#`jP$^NKCcJ1Oo( z^78Uh2S(r;&s7|jjkwqWF{(41p+M^t3mntDK=wAaNa~F@iDP>G3`zTB25gmrvti6PMl~|S)6_Y92ek}=7+t{ zPY*ME8Sc&)WZK{-7#ZC|vz*kCGB@jHJxfuO#3Z|uoa_iKPP&1KrNT_C`}04HTDf*6 z@F}aEKv#asLLr=MiQ}W6)n91^3~*-1uS?w<8jF*YOve~lng@NpQ*uL)&Hbr0kgZ7| zmrWO>D8VL2M;X?oz*U$ISR#%Np%?%4)>p9Kg1gFhow5yJOV6GkPRprXPnJusH|oor zh4v!Gv2&M%?3PES0}M5Y?CqzS!S06V0 zaTSNuyGm{e&x$NFu6ICupK@;|%49+qh0w+{wEF!pwpSSHKQ}HBPCx9JR)f(d< zWho6Nd9E}1iDsM-+=B;dE()a2`d()`R+i?7>lxp^iyERfo7}U3IU&gXAg;s!G z94u;$KhpUGq2Pf^OnD5WiYEiPHW^1bcvnScgU&4pLB{wUuDcW?R=)!(Rtb2*&diJT zUk%Z~2;{3y%#Y6)A%pd4QD_0kb;K+5Iu_eytamNmE@-~<`YkxT;j9JiPTW9~IS2!p`{-Iqz(x4J6u=@*JZbN!4fy2nLrD6Kz{Ia%$kac*q) zXDmp{>sHW`6*m95!Ub|AcO9NL_-BFoqY;C_&Wfc@{5ncBP^1PAaxf6>&J}gE+$Tsy zR6ziJ_s0ZHlRAK#l|o?+1tA%h#UcvjGAmEY0#n<1`qoqZ-Rso8yQwh}14Qoc$2xm) zSw>6W8z@Ze3$4I>WI|gh9gp}?Knl&dB)~$#ks&mmyt=BlJzbtDi;6Vsgfjc&pNpPN z3}IM>rBhAlWPjB8aH4$N6BD*4qxC6A6pGAi9p_apE63b>P#g3Z{1JZ)f3k=q5A#-F z9j=m8dLN@u?@8(v`QV(2HiV{#&<^!V5c3CzLXD){78Sr(L6v2Qfh<5oZ%k$0bb$(EHEyd2PL# zPJLmRAd=b6DvA;xGhH()Vv>_Q(eNK_r=6B`2s8JXVYx_`8;wgg=z!9!KXE~pWAAe; zHOaO`$4mv}lW>2MwrvNi=ft#H!pA+!BGsJ|^tP5ElErG5acdi!#{ChStKG7(_75_e z7hE<=@B;dleuAoEya$A!cHx?2i8VcC>qHGQX9Ju{%0fx7dpsx_Rq8*vBJxb1l9SoOBIOEa1)FvNG2f}O#s?Kg^PGoDHI>Sn8B)H6=EJm{*So=Iuzw4R zeBcM*t%nBgsj;4J1%2Jz$-&F$h++uXH|=&sfl4A&@(_$AY7%|eG|B_YdB4@9ps~a} zDpCp)C;;+z+g+dYwHCt&-s@p$4SA&-0FZ;`oE4q0yY3&kLMmu(za*9%b1r>lQZpr- z*Kc#Fy#KVZ1F*Evd2iL#)e$)=NNA){R?zR6NzjDVMP0D=erPbZ0^UbmSLKFu1gG<= z(sqB?tLyu3fULjrN?OMI>M^!*uvxPX^&8(~yPb3Me7%IJBucJeDhHYn3P!mI7s3A)FTV@DgJKTdWA;ZKeOov)r;b1NW-TKNxJ!Y zEmWdhZ=V4DawMuBZ-TA3-#zSsTm*P7WG3^`>r`OI>kpFU3dY%EQ8C8e7dioGF3pPP zKvr=&7@^aYx9?DyYiK~7_rrA@p)#Oqst&Z_gA`6srvr4x9#c2?6V7RAX)4oNB4;1- z*EWTwCa_`TInsB~rUbEr#Tf)W)C;bsOSLw@9stcSmAEdBY3wa3zgBGE09Cwl%I4wCfYW3_2v6=AE zWGCzy-v>UJ3=fKL<#EVoMl63Ym>ZgIS9NfvDtv?oS|q%9j-b9KHUceZe!}#8cW@c* zx#chu>KEoAb08TAJFmXofN82+?IQA8Dw1TOfeZ#`S*bhJK^!GhX^ItibD54Ztf*px z1h?o=I5AcxOVq;0*Uk%FoXa4y%bKNCFX|YjR3!eT*IDk45jnMH} zN6PzcRMl;_pcl(FqTqgt_JRD;<+I~+I_QhI1ThhW)A(q}yJ~X(6gabDMUIc2xEw@2 zw;LI#`lBbr=i{%jMlJyT!!o(`wqWJupO$5Uy%5*h85-u_?#ug@NoDhTHtr#}?hW=w z;`af(VSe7n$fzjl0RxfgARRyrb&&p2kPa4+#K@$R(654{g4iI0Li0H867tCCVcwb@ zOXdMPFkco%eU)b{!xeJqPWrWRgv)@jGOpjFT_Sgc2Y~lXR(W?r{}g#52!lm^BSdOY zhM7UdT&ZWIThbORkhWfq;eVnsmIHp9!BkI-KS>#xWYR1M8mKFb(qv84!{DMQY=51P z(}&@Szr`FtNRJWiH@oc-GN96!w3=J9>D+JDQd%Xopon@Fr_>2mpHI)!81XYG$9xDX zt)`Uev&|i!cdtis-(598m<_1G0r!p$$`}wA^FgfwDvOUC93@h;dhHtBlI+NuEe?g< z;jSD>#{h?^<9XcB8P#Ol_0-6MWi-iGrPVNW0HGB5m*C<-Vyp#-9u6~F{LSjLoOnID zG}aacv5$$koFu#+&j!k9faTdq8#bfgcqj*kT#IPDD9H;uArk*(S_)FD zT*rV*o(p>FBRhO=p(+J|G3pe;zGUv@hiziy5IYggfSxR-I^YJRFWhA31NhJ1QLaQ3 z*dtmEF+w)YWX>X8WGSz3{&}XPgLR%s{gRG4omRnw6FpMV&t5r$V>bqMWh(y9jbZB< zAB#*@JIH~(^nPNarc*J$2G6O^U7T8foO3VQcp^!)_w zmCWNwG0?>TmseiG(^zeQ)(J~%zGnRGUfMTXB|zo^@@3xDb1e9Yk`rjdq@zg#4@L6I zMb_A^@s%H$@?GFsa<3tA-1kb}>`ml<{`^^p=i#VsbI$i^PM6Rxnvna$I5u1aEc>!u z;EWegez%p))icMX@g?%$zych2P$~Ow>q#$*WYfdO z@!3)tz#rE`;_3MmTyih3k${@f3dG{&{>2C;#KI&Y2ssG5j6PT?dXj^vf%OW+!UiSk zZ=osDrgjweCyt$4%zqL2e@C7_QT_61`G(UD6YEYAVl6=Cb-rLn8glAF;~O@pJfdh~ zBSyzIK(onsZ6dRMY5Y{z3%j6s86E{%pAI#wnVX` z4~j3M%FoZ=>P4koRSacK4})_tjr@M5O-QxX>-*ceZ^$*Udh60 zAe{`yqC+zUWuWdoMEgD(+5;6vK;Lf{RhX^7i}ET+wf1sT?##qeez*W z?5JTtf`c?&S#rapuuYqQ4UWT|$ZQ=Svrj_Nm!skq(qAx1LwXn`l~0{upbS4T1eq{v zVg4pi*(OuP?66P>aXUx|LJ-ajTBY+T2B9iuOhas=uko>Kae$yCQJ=>(^s^p#kZM+P z^jZQMx3)E`dAzZN-vwdzKPw1WM*yE1AteDD_7(~?CP#e}(o}aZjiV?+=iHSyLJvhp z{r!t#KUJx`Q1KUKdM6pLPbE1qe%Ro95lkgj4zr@E5%gbOaRwIyBqYu?zuVuvy_B>P z{zX2tk2OZrm}_g|G_r7@`Qsx3yc=q_L46SWGW5w7R~LPZJhP`xre#|W;HtQ>-;sl}0|w7Izt@mlcpXrq z-yG9qD9%;u+tNUatBS;5p>Zq%y7jFoIU-I6k@YR|tE;Qcnt^xeE?nxKw>=jvW8QLP zs51>^Wm2yiAd7ZGL&Kq->r~UM)caWS%)wv7zRK&(9v7qR=^@i>909l_TCO60x;R=KreF4-X-=1W53I5`A_E#xI+Jq45~6`k<6WgK;4z zT?BXlgxqZtiZ$W>lSDGdf)Q9$cH=Xnf(__6LEsK(nWY2A&;k}KXnS-PfQks6qz`=( zjchmSaYZkkL)|R?S2Bk{+tSjq?_j3954d{_>&u59ObB-xwKb~^Lx&y!d2AT_s+%yN za^ykxhD7D~B|Z$O9TN4{~I6t$>2xuaBv2J6}EtO2nzR0hBVbn zJm16>2UB$7=H?camygE5#YL5sl^x1$Y-!=dKopta1@!d--axE?4HN|W=T8P(ga-Zb z+5lcTlm^DcqJSXpcW=CrS||EnF9Qg26}n`Ss_R@166Hvi|HIO~{*RI!!hSy$@V2oO zfnhdZmnmK1{~clirPD)~ArW|rdkgVTZTw#)4M6OLn&YE6&n?wa`>lNe z?|=Dm1O7*$DTv-{Zh_>#{_^+1|Lyk#hS$8~v}1el^@{#aUtt1(US8A>^x;2m-T(A# zL&?C?IDE6}VD#tt{Xh61N(?k9AQ3Q)|35hP&mr5=z<9PjZ8@3#>xBP%1^zd__a}Lc z2T*hBB>x+K{@BPnUsZsoo80OD3{{MVXfO?IEA)MF%r0M_Q z@V^gH=zJYd=S>pnpW?57tn~k2+9@G`WrzjNmHw|@Pyf5e;s5h{O8wXIta%Q{{>c@9 zbm4#c!tfU`MqM=e*ZLus$}zQ5IpSQ&th=c*`q~(*Ra09jIIXJwi*^jq+=+j(`mCgb z`|g6~b7px}3f)0DjcA`0PY?!LDByr~om|@gW10g{ZhxyZ0li>GHS3FNg=n+c#c9pT z&>s`C(XkPK5!)G?$wbJ??NE~cu)3?CnNtZ%lj?68gb#;yKm)X3=%|SQ9*V#!RFvyg zIC?Uy!z{DsENxA5p&qSeCMmVK^w7_6=m1n4yiAlp!!1t4u{c0vJ7Ze>G)g}3PF31x-cN5|&zMsI|0W_Lylc%@&daGt{Bh$u``7FK#UK3- zA^a~A1c@|8@4K82EzVkIjvE`r`YC>#K906Q6mc{o_^MxiZHs^Ud|syX<)P5= zv=!RXcslR1oe$8#557se8vTw#9`#! zHiwpYf`2;q#0cQQud_d=o(P_061MfBH&vs)wbe_~V86*eMtw2feXsh$)AIY2pU+{c zzR{=lq2TsT+;qmCR_bYIS6!awJLI%_4gCEUAkB_H7aCa&>rhyF1)lagTJVlR&~-#@=B=$$c~EK&aE=7ERL zGlZdv7g^IVJ%jsnw)a&UGSAjcr^3cI0X!sbUm8W1St8ZQV?Zlh6o6%G2J2Q*r2uci zdpAP|E$IWGX#2YE+!o9^w{lhX4C~!xKfHkYDb)FsCe( zg|8hO_E(s%Q~rr5a#-NKTvV6pqoSqo(X5gOjJ^@khE1OLZ-gH-J)cTatdNm~M&TC7 zpm`f+{zU2KMl9~;f$JD69oBt^qX=rTo0Js_*h>=}BAZ~JO??9_;h%QKm1Hq*0kgRy z96k36R&~Fj`2BFBPot%S@g{QnyYkAWKL15-;V-=;F_3Py3xWuCUW|YWge4c=OgLKg zVfCBHufn^Yl~W4TZLs3r*{bD?>=NC9V7uIJ8F~IR2o-?%h|+9qoc^2n3km)ZU>~~N z9?X(w7NcDVWk&?(EWY3y%Ywlu^FvZ%sgoE=MNd;SbbsWgg4JDt=^9Q4;_>s&E&{@T zjIaO~+){z?D5ppCuXVhn|Bg6j?`DCM;sL|D(g@B=$NktYz2B5W)lg2B5d>?bBfUI#4 zQ&p9jy^GW?>+`^_^EkW$QDY5J%JbEel`(&eox0zTX zgfTC~y|T$V)|AKQwN?#_L^w6YzCZ3-52V&y6vqs3KkjZ_sH+f4Yagn9$(&&dD>pBg zIzBkn~kc9BI@?C@XlUKY^6tP5D76|uO(kE#ee1KoVI&4rfhB_6(8S5Q2Rhe9i`J##a*qIEXX1f&M*nD=%piVh` zTB{A)LF|&=@n$P{YL(L`BcTXMNIPBUppxVY|w+m>8hKF&ia|{2zZmnA|oz{$y?|0kJaJ3z7 zPcCBA%0>%*>+GDD(t|ON9d9}mv%lBC-vtu2l0ud4&)E8u>ZgQ*8Hh|7qm&j*ZnJYQ z^4OaTcsXo@;R!c5adn#bbMqB76pSWqOk%N#IF8R#`;3HBTR?vu&QSM zB;B?@f+iLh6)4TzjbhumHA20u*~AQE>?#E(VT{db!sCu$EVk9S@*~Vj)pIcVc}fLQ z!1dJ{TGYC2f&M}AcqINWZUUZUJwr9j-`Ntc9&$Ah?A>mgL^KM+-)uY(ZNUkEb+u%9 zycDROZzdW5-5|!VV75=q;VuRF+lY^RZ&#w$`ne9pPzceTcPE8A7DX}C_EJI^E=!>+ z#^Gaw9PW60S5PLj&X(SBeT~A2@SdlCo3W4j&Av*Tk-hGd;`3@TnK0NX$w;%BoOaPH z=0t00a?2IWeZeH&cI1~1!o2F6DOS}Mg8PzLSk=OQ{%;F6(f|-~s#?lFE4!aI&iUjd zVy!QVJ0%y^g}s-yXA5}{M^xPyS;#c({ZB6d8#`taU_ocRknnM}(~^L<-AMhAa{DLd zcSH4y{h1KeUvY*p;CsJ8MH3{`#&eUucHgeK-1x+h<)u%YN%pI$sS>lxny$hnI5-qOvEpeSwFym!8T-M}-fa4;RrtU?~`u zq7DfupRIzV;_!_1nL+lfDF_& z`dHs(uNWT&+ET-g4x;G30}8%wi-XnwSfDTO89z1*%IR=)I8xR_BT-`gnK zn_{J|73TtFLdWNetFa1F>7<1V+BN4M=FODm|JlRf~y+q{g#TNDC!1!kRK+zu;JJWm02l!DtA%!)o(%*2+Y?8KJ7ydQcM|?G@>H zFSET30#(`BzTI8`?sS7?MFl%x>X^vOJ$}BvS(B)?lR;`_E1iG7@H+P`|5eu-)w9~7 zitpozy?Q35OU28>Tora=EiJho#FVpa8}p^XcfHUXXqw0hArtv;-RFVv$rZwLbmoen zUxH4uItkK5y4z;h;Q|JSP6s7<3{yd6VF-nmT!B;@v>A>K-k2U|YNgoO$GB*wt*}hk z+|Q!3)6Pm`vpw+y#VzTue=VSMH!nAHD2T^uGbpq6zgs^ObNJsxEoI`UH?S|#yWE~G zf;e4|J}MN0xEio`MIHEM@S6!H9J=nl>t=ykC?QFYUmnf}HeH{ubuo?M2ikx6wmYjl zhGZW*I)nOH8NHsSy4=-2^-%*)zs8Cs0?C*dW|R1c?RK#Zg#@lH*4on~6#;T1S6;n4 zXqnHxRNsqCozYTU=OUxUTZ_7mvA>mbH;({g_h~Y=yM<(~B5-K~K={xDE_9nsgA4y4 zC;{jKWO@38hqd&6Jrfc2pEFYy{rrcd+vVH|=dONnMLU?3-;PEFrH#Wr`E(H_ym$0D ztX@T{_VN;BH}+1ya+VT4X!5;mEOw-)zfadERPI+Thp_o23igPas)_g}(kEE3YnML0 zOLQ(_nf?CFt``5UPJNVwIAg?)2lhu2Y@d^Ou99R&`h$Rvm}08H#s?g0@IWu6EYq(I zf7aYBy4#_I+JMMUOeTqNDy71@AM^E5?lv-1(Jf9A8E=*Pt#+{=#=>5Xt9`fkGs0`f z4La)#n{I8Zy*}%eHI81RI6?J9yHC>4B5LObHNlSE865<+U)^Wk1b5rPrD zEK}d~x)TINg<4VB+5G60r5mSsuWfWcCCVhV2c3F-*|C*O8@Q)a3hCuTtyOJ4zH;^q zfA%PD>dZ>byOqh*dU7A+m?#G)OhG{OejNV!_VjHDocLhv<_E6)Hz2_qKObERY|@it zXX46IEZVgD-eBk?P+s%}Hv#xEx(MwguBzQtTvDrDA{1q0Xq%g>|1QCTSN&e-kXy16 z&FM|3moHd{f;g2B6b)fzQz!L98j-n;EHCC5OWvW7dXO9(Bt_n-1?S`f1zsU2bWhXf za}-f4<7$2msMFw*UHdK8SCD0iNfH)&==&)9&f#vL%l2ljf#N?Iy#F}VZ*3w)L*LHR z2w>x@Ij0{s(g=Bmd5|ra3M-O(r6&CfI<8A;$o7>H35eR$dbr2fh}s|d2G@=`>8g?^ zR61&hbCy@9QsH_i-vSnE(0*S7K2sfWsNHL?z1ek3$UAh+9i@Av=OHqjX{k6#t+cMi zn0;b5-wSqvRneB-Tcs&dKzN{-sdCS7&vh$7_cCk*&v5a>*@;nAeWhiGs=lF5dMnjI zS!o6xOyNm5Et8f4jG|9NR0VJY@cWy=K0y`pPkn>h+UR;Jlkq1>?BjrjABL2$r*|ISx+f!xHTINn-Ow`aznma zEJs~lE0ie(gIt|IIS3EX{-%z%VyX6b;s#uM^p=(C{i@DA)BL8MFxH@!;caT`DSHC* z#2m^a{v|`)klbcr+{~?8e3rw$TlHa;0>(WH!5={0F6td~;$IP0KK$F03y7>!u|;gcmq`w$ ziyUr~8SvnD10g(VFq_aAyeRS}fKhGJQIqemm0#kj)LHH_*SL(-?%mue@6MoTt_d!N z|FgSRXY_=Uu4ZmV=cwz)K?g)a%%~QvsG(y3gt@FbWREB`dn*T~B{v+DKW^G^`6fzI zclJ3;B74g<7)X0Tu8-P(pi7A?u%iSUt`Ask8|*Ybh?e;99)UUhFSqok0z8VI1Tq5{ z;FsevZ=a8niL`ZlPS5!lJ2kB|Ql1Fkw!I=Io36&!^45o6qFUVVtSw@ToofsY&80hT z)hC0)ZRs==!uDFV^pZW82%T7wUTj5TW?C~f(Z&dz*c@|7LEnQTOc`z9^DOg5b?!?} zu(Rltfht)nBqfF!h_(-_Tf~SZ$P!TL^a1Lr9tHH(T{Xm4X?Kp+V`d*5Y^v!==!d(^ zx%RX;yx2Kj?4K{Z1>9=Qpla)kCtACM|Msp@iQP7(8PJJq50ed_Gg-8XG=B$P?XOT& z()aGqI-So@0gwl)KUn>x(0xJ6RYtvjwlq1!bF~vfMr=i#IK1I9`3)u=3J7fLu(y5ym}(Lp5)Ya7;H2PUgQo z|KQzn^_0$(_xt5$6~275PPyx*5@I<;3=CIv9Rpv)q9Fe;jO_tpjd%{THG-LSuOU25 z2U}{(8;WErE7hSY=nOqrWtYTi<>dqJ)gax)5Sn>6JE2nuq1@=bhmR>h^aCYD-gwP_ z^$>f76Jp5xbGSa-`+*7Xd>$fuz-&0t|0$ZXL(+CC(N?~nQGTdP&&=?=LCXHs_xabu z0Sc3QCov?Fx9lS63KZMe=~H!+Or0!A+unzk*0-P}l&Pp~wYSj=@K7_X_A^@h85ZYbPyz}F-1DmXbj=IOy<5cVtyqA7&IH3G_(Zgj7lAX|@@LFx`hgtB+nF2|es-wPH znz-1PhYTD6ou2HU>-bTZr6Iv@+EvZ>a3B5!<*PwGudE%bQb`&BsxM;EaB~4~xA3;w zuxHYseO@tY>;liTxJsHGSx3-}ai*fH0Y*O1nqyz$?XXHU7qpod>wtRvh3#iSSBu}=>NIA*_`=^?jg6Cgt!DzQc0<+7!;RJs*a!m{(z*J+n^r>X%d#F#_cVn5fW zRPo0-FG*byaexXAsUkGX zIk&v9*QS1?{eeRt;k*t*+MuvBi|*!*w8iVfwKi13_uBO!23ABzHA4pT9Z*Y>d3+8J z%t0-!N34VkBe~wwA6b*;yKW>NSZd=7G*Nog5Hl>acig(R1lGw!`ertZEjM|C)xq8y zMNWKPJiYqpGw@nO`rwHU@;&3xuOOEu=FT^cw*Lq8hCsdD)nDc~hP_qA4MT@{kAopE z5%g9n=y{@D8jrH3ca&k$Dkm77+K8GzbjYa4!QRs0@Z5c~g|~QyD#BeU%DXWft7bxi zVXMMavwUTcl`HFO!~yNV6Rp4MapdISUPLmhbc9qOl^O);K{T#$lQwl^JX27Ze!+s( zanKrG(i2cfB;!`INnzLCL7a(3Y{%1&NJ@c}aS=|Sqiw9t_Q62p$`(r%WVYcoaAza- z0&e&FUsD&u2>z%h4y92nz|TcqCnnIvBJQ>Q_96<81Nlka+E zN?Nz-dMva?zuENg**sxVlRm?obTm8}kWXC@TuOV>U6O|JgX28N6r1Sc9b$)&^W&gC zgbYAuIKFpl@@FZWqc1}#%2m)$4z_i)w`hxqJERC5S0TL`LoF2-hAFh+8ry=HYCfQa zAapUaIHOz*S9lfnZF%j!eECiL2aY6wiYYx`dtAJlD(kiNFk0?@ovdA zDjWtkW7m?Mt|6+>d~15U0&-WE2|YZWck+nADuw^}=R9LWmRZ)^(xK6%8iOVu1AfH! zY1a0k3%B5ITJr|&womtM2xiixhVes5U(M>>nsT92C3EuKMbl=s!>+6snRX?2b=cbq z7MecXH5KHq3e8=j@vpR2Q6GZDRHwq%FSjyYzN|m8KeepKZlVu@%=!Rz`@dG|XDBuX z+p9>3FB<~;4_#T$0>oF)Q0AL!+&+@TWmbznRBQ|gM#(Smj>;j&ZjhJM3Jwm_y-CPb z??vh+<}Q}xz|4b}^TCYsdjU;Wj8_d4Tdd;!`nPb?@l(BdZK~yW8DS0G9BI;J1pzh) z5v4Z$N|c}U;tu;F=bV}EI9^>P^WEL<{J(NFVsnV_w8K7=RK6)$zP2)1!v4?WM4j#; zM{WQjbrhYo#_;@zpWSdhRcpUs2NKO@?9^ehm5bcSIefP=IA#}gU#h>8XT|@Px2zQO z%sr2sTRn~#01?H}y(yT5od3kgvLOSVo2 zukk8C?y}E1H@7bOA_CfTrvc>P<5D+d-s6y=?zk2S=Hw`^%Zxv-0o{JDVgfPaphU0G z@9o&+f1uQN*H5BGXM%<4J#wdOJquW~`Uqwr;VoL3hxbwJy+|-qs#7Vu zrEE5Muq30-07>#0N(msFMs++cSFU~&En3F2ubS!sO~s|IZ0=jM%yr~cb#*|bG@^h2 zv^vX_uqLbN<%741{DXeLL(~;uuiLIPiY*&)oM**F#p`*b=o97XY^i5oENkKd_!`@H z#!v6qn^395!;??6^+z=j(-d<%&z9d?oawYEs31CVaGV4uQqFxb|IU)K*;*EJUpN<2 zq8;3Vc$Tp3MFF+j=9Wc1`zNeimtViOW=Y@!9UF8dZhmMS^iJhE46?2)AG{ox_g`}_MZLz}6*#!F?4 zS;|ZBCu9J%N@Sh(mEXv!Tg)#DpN(MoZ^?{AK=)81jDgq%&xia`kyuJ8$rP8EB*k$3 zRwUh`a$gPGveP?9OX~-Z0TrRkk3JOgVEqIIu@h)lcc}tCQ&4>oV!v+UL|hG~6$0!l ziiQq%b--C1R;YZmf#hG4via}H`)dV$MX@t6^pCgE*pF^@V=&`xNYq?Gn@iDTZa-*d zVf>tl5I50BJrWs!V&)>Uh~yxjNyvKjDCZd`NrP;VfyAZ`@hWxYFsH6NR1?Kn=ky9}7?7X)ZJ0t`)9cqr2K?FrN)i==-6 z#{kRnTiCmo@y%Uf?e8)ho!O5u-vYu*IJ7|AB=7dOcGxF%Ec_uIVlHD_dAi~$z;33? z&waJ>ZWlHWh{K9(NQavCao+v1HJq2=Mu0Uk6trP}UA?Z`QjJV?MDI~y&3SM@2 z!Dt_brW`(M+n0N~u{_+UX!pU5+C+r8kGQ`D`rcgFe6#+OvO17|GU5DzlmEEW>PCL} zCLN>rI@l^EM+XSPKGB=#PFu|>#vhO#BFT4`TH@_ob|;coTIP|m_6z+YK2DYU#VY1k z(H;1?Cjfv<)KNyPzCd9B#M-&w-|2uvMt3JOFB^rpNXj%xov79%H;08aH#>6Hq4T>i zZ{LOXiog?8+-=uEMwJ%U>+@X1S%d1m7Bz4ij0}Ob@s!HZdkaqt8gB=yWo{uG{odGy z@enRj+2iiPlw(`bn~BGhgR$pKyO~nS4}?oVUj%!idBi^hJ174QaD*8edFJV%>LBd_5luK~`ePn$s%SmcAOA&rq$fwH`PY%-C9K4G)El z$7k-l2D7Nn_^1sdv`j6Fft{B07M1oKw_?Yz)#1?qNq4JJ`)6AiaJ1hfzjumV2rpht zPvyFg+7GzLh$I`zRm!N3+Zr^JYPKlh`Ahig$m<6%WSC zoH@cG!!_cR!;KW*b2;^%C8ZCg8|IChKKW8DxpeKdt}69RkygRo%c^$qL5KQ{T1V4~ z=c)IpXVm3*ZK)7|EeK-25&pWam0yBl9~ z7Cy2D zqq$#v+aBNC_XBO*_+Rub^c6V^XNPO zIlxoW>BmGLVhUR>hNy*4K{JbTUmgZSb}<^NhE)z(4Ey1RYA*0@bU`!ha)DY!MIQR> zzP6-ef&Z5&1XS}H`8tUL^uMGY<{!2w^etgLIHrI;mnvsRjWM85a-);7tH*jB|i%#}7)ZHWg-WC`N+&K8> zjlBMdeofCftSf;F(fzrhrhmmSx7JEJJ3}Uqht1By%j2MB{OKL+%S3?V_rPz@SIgOv z7ez(2Cp-@3{VOfGIWor&7L?s;V@*{Wd%c9qUA|Vfvu~8G^Ydt#U$*#p;@v;L%zz!V zRcSNdWx#G@j^F0N;5xogm1qU#9*o%VPsd{pmKCaFjbs` zInLIX7ziBr8+w%WeGZF;br6U7J)&x#X{Vc}8+iD+P7+vMtC2iTL3c|%#<~9wd+!<5 zA>P(`+dqCn_HdJ84=8rTX*@4W=1w@^bQ zA>_MpyU%#WIqx&Zd47F=_8-PzW_KjK zHjo@{O!WPM#qV;8o;f8kDSyc!nw}k)n|`Ta%WN^RuOgEoktaQ3{WK|A&rkujSK&U; zbNCamb63QN-H~sfe%-x$Rn}Z0R>CR`-Z=Xzl@L-NmrG8U{8Q^e)6(Sx-sO$+L)N3PPm;&tCuCQ;xnd;WZe(n^7d~$NDiy}(E#HwV^7hW1Et+U>R8;f~y1)NN ziABq6?!ls6QImJW6REZ-DxXP_$7vZ7p@JBkQ9<$e zS=X8k(mGo8-LH+mF8duJ4_H7vk?3noXvt;$rqOc9g(H^HoiB$AuD>j*EX)e&n$W;p z3W4LlTF3=&zf6}aEWEEO)!-(dFF7oEqbYOA=4#1IsDO-L=jy_3BcRy7B}l8H9eDOd ze@?J0!*$EiWe4JHOuvnZ@HV;T@g4mblEW< z!XO*}9Nc|)DIdD>&P@REXoi3xXf=9; zj;YDSp^a4H_=)8AVA5v$%n6ofGqz@AFPjZcg4_^2x7-oj1nWpa*5LD_`!bri8_-!Gz(f65hUsuu+s>CcP?Hy;ln8UEx> zD{#(7$oHm5POyK9k^sxU*O~^w2|5HgbroM#NsWmYPf-8fvO4vkU5efosC3#N=5MoBQ6drkFuGqy zV?J6@7E+yWI&jL%x_M3bZS(Y*-c`QMPUaov)Bsy#p?l5sopSq%oac;^0|`PlZcBq< z9FV@GnjwQVBV0;nAk$a1E!k9DG(U<;L=m;^SvU%4ZbO_7^RJ5_BVOBL;C!ouk?sC(9CR202q%KSz&-5)3 zl$0{g?R_+nD@%XCbn$1DNaU*3ilH#9q zXq6EMKU+%hr?hBa0tREeCd8qrl-K%}jcWGCabdh+059Eaa*DX9*+N;UzxyR_{Np2S z{5U(44Rb|T2N&bsWo+_s+aXZ{ydFLzOppGimq7h|fvY(vJ2qKt@VVGWCTG|nTO zcd-h z59^d(_I$%aVQO`v)R6gszpuyZto%?R#Qt_jK>lS@+)}M0wcZupIwI!>Pi3cUCnj&b zaw;q7V>h$|8^OqyKfrg7>oo~NKMN~f!j`o-44x>P33iL9z;=tfGNovjGL=0%wzqZW z;9Ovh(Fk^br&6H%+MV$0Yi`{59;K&b&16dlIFn#mRpRbthH4uZP3B><+WsHFb*R*+ zvUz_zTU-5^0pr5yX!C?6Z{H8(hz9BWnG9xb89Hqa<*!e(Yz|xke+X5r4NM7;L9+>_ zy0Y(zK=;?(5uO%pSUVQ#&!<~vEyMVEP_6MWaFhKN!xPrNfVFPNOJT1Qxa0|=;L;Bg zSv}j8@F8ONY7coQmr|K9GBN(zUV}w8!&853{UDsiq`8ROzJ7QQcUEy`ljW|iuV=94 zmuFv0QwMiZ!}tz~ix@@dCDk9)_fkMml+`MoPG9|v3yzY9G$0{Mj;C#JvWceKnG-Nc0n+Q1E6g8mi2`Qa{tCDmI5Ta;=Lo*as!)w z_C-{~ajBM?FuFW~nJ*VP9cGKBH+-~)JUaxXvU{oPk2;?;UYYgl>SmdKXpGp?N;rv{ zxJn7Xyqn-W;|Jm0TvM0EKH;QAZI+&(7<)2P`Ni~S3eCzsb}@^$Rr+bjCwT}n_^8=@ zUYQ-N?skYj*-b`me^gq;92ww2X#RX|HEQ>{vEoJ^Zq(5XXXTN|j8h)s(~W{nOS(Vv z>VuXNXAAmS-bChQF9eFB6KGK0BM>d0E5HBg1Bx3Xmxj4+F>0T}L`_%EqLEGWkmch( z-%hMYIsk)Cs^0lkz3p+w5y%Ph#Eh4;yhhcJn&F!w zi|3m?gCIqT^^=1o3$T1*mIxC%)QqQrM(LTMY^kl zJhEWs;mfkrZyb%M@AT5}td4dYXKz1ZykO{5c@lTRVazuz!Q}7AUJSi~R(ZQjRernD zLB*)Z0<-Tfm#6E=5f`aT7&W8}dQ8QV(OLb_WnSP0dZyQk7gN}#+NbPT1I$>D`&2>Y z>+=uQUe82mrH<9W@sN0 z&G=#%zNz^^&twYHG$4>{T3*5*=`{D_Bw@R3cl(l~t+wL`IIM~C&tCeE`SBuNh0eZN z{ND?lOS6g0Ct zW&+85#DFlDq5EEN25uQhgYVH8$au8sxo8IILb^}Jk-99EgO=kA+~3LG(Jllg)TulT zFM1$LfW!BWxVg9brmo6nVu`V(ga+7!hMA5>ojVo8_eBk##y_P+AB>49vjCeeQ3GE? ziGN~1j3(xH=!n{19?^@|8P`>AAQAE^(3KrS>X=nbVUrJGW}@1|8RenJDTQSWU?yhm zDL>&=adU`%q;*kHp{pvM+bclWSndlKp9na(MMThyehE=w|ld)G!^sQXA1FO z$<5zC9;mXGMmheO9RG835TSa?mKFNjNB;$+a)9-}*QPw18VG(DydCxTyUt`6&wnTtu%7$L|M}v7@#`2pt86WHBAD_2{7&+m7r__iZkVVhhyEY`CIAf~M8qD& zLDU6A|L3nP`<{e+P;IC^hx5Pq@BZzPfBxD3Zm0g)+5gTg|1sl#J7E9Ium7Cc|I)ku zT`P+5RVIi8XbeX>cW*fF=a zp2)<2SU8&g8U6wFXZwe?#nt|#rPaQ)rR43y2_ffFds_z=N43M*P-w?O_3MGIV{#Y7 zlHk8qCr(2a|9$RZe?2}QH}@r7&O6I_GVPAoE_U0W5Chp|soXu~qCTE$8EcvFp2T3~ z4^!rbqi)tV6!*bEqbL!6ldDIPJ^Ct9sUjhoIAiL`HT%8OM5a4T-fN1TbL&6lMZNBh zAezL65UGMg2!}+;3E}>frDUeHdc7@+%}O!kneg=5=TKQ4fCz3s_B`NmfXudp>EgYA?EAmzdQQziSBTNeE1&?LIbU=E(^{Mj2c*lMS?{PWV9`kHtlQH z&BD;aAja7z{u#f%Nf7W&O7Hw47A>=0Y*wI!M^|fVY8Z=nb>#s~LpS%{k400=WO^(r z32!|cB6yK4&A|~9;Qh71$$P7V4OOI@#>V_1Z3LJLD^VpCww8AGN0z!Hr+gX+Uy)l3 znh`5IfvZ3jW$w@Mj#)Jy(@x^#Szj*~p+w_ZXGrgtL~LTZ4(+oUSXtrnvoy!Z zV^JFR2tTGkiB5d9hMW}nx3Pf-vb74*ydEC*%TG1c0F^^Z>%#X$f0xc{nCygTE7BD^ zy+Vn+lmuQE${LfFa^b{RMg31>`%v1NRwIEuemUEUo&7YVxLxT$zI6_J_5}WE0tzU{ zdK)(n3#45a+A!HX$rt#+Wxt_>qo?Ukvt}Oj!fkIH=6{s$J2o8Y)#?*SvnS~AO|~$S zjP#BkLMfCCYma=lYJ-->UmeT0HK_2!R>H-(m-t8l(+eQmR5~XGrIOl*^sou89B!9M zt`_KqJjA4V$;^4q;sY=gJvtKT=BBZh1T&}Nl9JlX^7cI6Mb<$zqL;!lVB<1J49e95 zF=!28a@Pi#kp{23L9zQcDRWRGRbnF03~zOSOT~f4J_`=dY<+ zEF%IaJ6(Dh3f`&bJ0zxEXY+I&#zfy(YhYG6qv!c$G$Xj9*?(Kmr$buMXh*QtW*ZJG z9Fn$&UejMnfaV%IzWlA!V7(VDAN3U;@;gw*^SxeY`RZ{HR&OyBRje;52yD!I6 zBd(n2hpqUsvr^yYTCvhVcA^I11Es8N(0%&%cK3p1w}}~Du+t;BInfMBo3zm0g+i$J z5bIhWG_qi{q_$iA6m#GZ?Bh`f8j7H0nEkAi!m$U}dOS%xf~Loaw|_C)~u3X=H5i(SeK; zyLviUn}kTreL4fDnffG0$}&^g$R3_6J&-f5V%*xOcy9UzCVtRzDQIM;#=ynt_R5$A z1XUkqJv&mC;lHoEtfO|K1o&8k{fsKy6IyR#PEQeZSi-=5Vv z7~Bp_>g1#wtjoGiX{!r$F|>iGpdSN+a<2NM%C{|TS`?M}j$>07hrvs^%Cb4G+R9kc zIzldiapccaVpp^v#bDoVN}c}3Iy>s~%e%mF32v=TmsxH(_&IOBTA+?mU=kY(wyKv% z#=b5jn#p%y)s;_6MAn1DaAwy}F%xVM!~S=0(q7av)^I z*!HGwTGB@o^j&pswpM)9fLt@>x3LPCK4PjS{qC24vX>Rt&?-tJ?Ul&_!QMfky@m4NwhLa#-nQYyNz|jk;~RZ5v(93^JT5 zevW{{=ToVPNQ$`k=5`|HylYtCB{dgg>3jj*1xhUiN@fA=eh+$=<Oj+-FqAM=Zpndbn(+eR-RNIncyMSK7 zDTR8PR!A;wqyO(&0D2+y-BuvGn%M%k?xJEjYL){3zGObk(2VFMl{5t@vYD~;V0gkE zF+rP)m?VZw%3fWO8Li3{h4{hCI@CX~vU4<&glUurTuhO)WN4=jIkq02JzYTo>_#N) zsizw&Ho?>Fi!D2`C*NKSY5P3kXAA2Kts9#Ywyj!W1!EkHPsV~vch|TK4q8Ctjg348 ziJ$Kf@hbUGLbJ!$tYe?(>IK1fKKM-CZ%59v%x~?d1ULR8m`78qu+?8qe zc(5L3BZHQj_x~zE?3sO!JwTFl^-i_xGbCbEIYWil0)};u6rre029L657ZHjju<=jF zkjAf;ii+;%9s{;Mb|#!dy8l-!6HVXJJkA~*;+1^-Q1(K|8}a}``+b!29lv%???Q>s zECC}5-nf;XBCSS6o{^!1z>0_KJ_8kur)?(sb!PQ;VBO6>m3p`{*DM zlk&$n@*P(96BLedI)Wxe|DRsGHy5u=n;qhW+0oBOB5ps3reOdBy zBgYq7UJX!Ysa_0&SVq^LB%*%ktYgRs&3Zgs`V^1q!&Q(>64{Zi@qky%1dm`6Vi>u2SnrcxjRGI zVU@c*2y{o!b*99Wty0-J!tv;q69TQFGw;{#hWR4u>@laS{2~@4ldi%4NWiO&xvD~r z?LgDk(awe2G2l^QNPRs_GZS@<$(b2Wr=lB2ZW|ftC?c#QI^*ml<(qB>xST+GQ+d|k z@!0TR@wl~w^lTHyFYb9;S2}R*CMK#_zYlA$GP&Qz95J`X5-2QIW%d0`199-yE%mL1 zo`Ly5SD<%;3@wR&61Yfh8qRIRxQc$)+wx%=G~227Gd*0OG3l1m7@gscbGXX)4qY;@Thc7JD?Ps^#8loU z5dlDJaw|7>7#%jv#@W`z`jTQ;t^=9lxGk(VPAwU%wfPm#$EhFc_dwp7p^MaRTdN{lIO_;ww(tYWs*efebT7|Nja!E018*9J^cczjes6ST()O=7`{M673uIiPSDJsEomDhDeQQ}m zbYX3R&g^Gq)wbvpFgf5S*m#lj!gs|FdDpey+1;6O7r1q$(f8R-P2oplU6~{46j|Ro z>qiFhxjk4gkVTW=D~t3UpmYZ2+>E?6y5P8L2206O^+8Yfp#vDP5eulMj!L zN}1YaU8Dit61edYkjC#Ozsz3#W&Xln{$>8x#LNw)&jrnMOCqTJ1Aph{S;$Y`6kbQE-=ejuB{& zq9r1Ee|=CZ9T~L$B1T-ltv&$+oz9{6WG^+HV<4g9jx8lyb}HXih?~ClGGb}Delatw zc)^%=H}+_F^wETEMJWK> z_*~eS73v<1p>DKyxVMtO+dK|~v(6du8lg19^6e6^$ddH* zk&RK~s#e)X-^Yz#yo9LX(=1v;qX6t|b)R%&(^J{)e0A51UdCEdojVuwzgBmj>WQNq za1G`iDamCKKEs%#z4}*5rw@w`t_dF(_0~6*WEARx0uMG_K}0!ouNm~6&YDS|9adM#1XaVgcY=JiWnOt!_z1)UStSwbB__vF5T zc7AkmhPbu4`NC_p>LzvWneh(lEOmaVJ_XilV#;3pl^V;B-3SP#8ilQ%W2@E;gGcX5 zZPc)AQbVn`YeRCIp=@Ib)GE_+@F>0fj9Q~hAQ=_TfjeSLXMLjSS7`PDwe(`(N>P07 z?I;NMgUnWAUb^fow%5vOYyp8Dv*_uM1JXTWLRLMMAI<7+kvQU3tAvH?ta^fHtOyMb z<|b+VTJNorTKr1*#on9+!!6}hI3p~Olz?!u_^METp;Aa&TU&C8H%veI3=A`q+l;Nf!1Uqg>=D@P#R6H&{>haTy+rKBqs^K(l~mpUxIB8yQ!>nlixR5xpaxME5bJ z(WGUqN5W_p#*|R!UuI$v(pX957U0tP3Ud-+Moktf6NFT2`#2J?_M_U8oMUGHLxg`= zx3N_lOvRdER>DfIuG3MWT7YUJvHb?=mX{GUcjY)~WN9jn_NL`2_Ib>{Zm|UKy66c* zu=PlP)iw|-c=bPf#i^XLB=wsK<4XV_-HOjOAs>xsW$39nkO{&YdKXwfBJanW@ra2= zu8h#iH5Bu5?;&uJTPC&O)Gs<3vSCw_(Z}_RLlrt?Ykr0-IWxnP3pJ(d<{O$O9NM%fZ!V&^r>!K^NR|J0oUsF>!tv}XT15dco(r8W!N!e7Wh>eGvGWIQ_Gft zTkK~I7D1)}r)OFaH;2H@tDKX7p|V{8GisRRsQvfgdyrP*fJ;2zwWeOZH~G`Gl9wvm zFsf{dr}Jwwa7!kPJ5Q2rSJzNhP_SC(BfQ@(MiLOwgTJs@-bnPX^5#ffEL5#w%;c@% z_*yFM-~F>>sd{Gki~EOEI!PonjG@AvTg=C2n^;iwLo+$ud^*k~yiMGskK$XkkZK>$ zElrmfWVk}rx^Yc5^FfG);X+X;d70tJiZs5|UOQG?lz!!yx92=&%sGJ$w0dTc5H@_D zakjEF(zA(wJraWTB$r}=7+OuPCsJ+Mw)R%hq>SyUokQZ55K4&?aRDQ|H zLK?c?HY%ijxo6E~T3gct=>3=E23LuxYG&b2nlF0J7vBuB6Umd-=r-~{8IB57Y2U7q z(}@10YaOS%7!#H1L1Wq(FL>NU*^eMX&j%m$ME?OpwR<>5I#o>a5qF< zMr}&~uN$k~CQ;P2m5)oqzUk&FmJX_j<*|=czIY@RmMtfHupUm;77T$^-=#*c1a{*2 zs56$7YeRtZ(!TNcj%*McjpNH${Mf_>345z*D4?-LA1h~nL~fL(xda|y7NZ4XS?tzZ zwjJT=(ZP`G4DIF^u1O!9_TQ^IAKs`Wm8Lw6v(qARujlgL*6Q(k)-3*Gf}p0 zc<1g=#UYYk`~y>8<0fcm2!>_L1PXFj!-53@?UK|;tR{c00hmFnq154;V6MP>=m)Oz=ycXS=< zXeef#b4~#F@fYW$OzSf((0=B8rRCP`=Sl8c;$jmjruA-%mh2{MidsSW>0t`ZD&m1$ z+9i4&nnOqd7q7O-Lg;fXb`!N1dKr~>urn(^1NuBvQ9%imu7t+XH~N%+p|9F<*R1(3 z*(n7*a$ul=3`%TPojJ2cb7XKcQyz8Ed0K2o^G0Uzk1!9G+7da!-qD%L@esWi=?@@0 zmU>_&KW9*4b<1BTkoIA-I{nmk=U(-^;R^Py_6+vAjcR@{sc)!7ccZB<)K{3CF1G}z z9aYV)Y~^3#xjIsBKjEP`73s+Jz@^UmJKFG)Mo(UE++9PW24K3We%k8&=4T0`I)?WA zm0K-s(%LExF~%8RSKs=|4VEAch^m0UWt%hzzS&ybpDU44ujC`VUYKc4dZ^IXku#M; z+0RT#9JFSD`<}J66T26SGr3+$>{&p1jNW5zVT4;a+)yM7Ka%KwHK=EuaB`Y+eX1TBP{UtX1( zDD&J!IDXx}0)T|t{zK$>1NM=E{*`L0^ z&UDn(+muvJVAD(-BMp~Igy)-{>j0=?u?Jw$%c*xQ&v*6XP2V_(Q~J3Y9?$_-1ry&v z?9aBD%Yf^7^G^3xvegN0JrL0{Z?m%nM>+G-P}c05j>YDtJH-~uH`BI0L~r*)e5co1 z)R0voMX)#kNBEZtEEJV&JMb21b>GYhst3pOO1ejqzT!6={K3fcQq*p!W?B)qd8=N2 zO~NLKgDdZ+NMWQMHyZ=MsC;&1E+G9~yw6cw*bO{3dQ^YV&kb#?HLDhoqW&=Xxz?~AB|bKg+&2i?M% zX!Ao1VguqMY6@tim(a^Lzv{@OBzIWaN!vWSB7;{;uwB5RckutK6oZO6%!9u5e$q^tBK1hsn>^XQbIF0*&m5w zQm6G*Cf5xltm-&kcq72Cql`w`tJNHJK%89w^O5jzOP2R{^Cl}Z@s*t?t5sR=1&RZJ zzKjicG=Y>YDbFomhF zHV_vtXxj}e+Ghr~J3u$)(CvDHy!-3oVbZL8CLX-;ZKCs!%#0!p6#7Jj+0ifKQfj-j z#u= z*E#w&2F%Oj zp)9=MP^&lEYEEwRP$+P9nF(?)k*U(5%ZQDw>8S=t``O?_$I3w41n@1b4EU_PV?tYt z_FAgy&Dsew_C+_Qi0A=4Uv?Xw@3e5?@o%H=)sv0QXu-T@|I+^u)p9Sxl*aB7F!bhAgRgeDo1bz5TdHeePqjYdGwlU_+}o)94c~FOFNSO%9q>Nre&qf??(L)_L-N;!oGgL94?PiQ*g z7&6t&gO*8EA|d;q=1@I|$)!>HCzeF-D93jyw!bW9t@$}eknTy>Ex8O{8GV1Vm^Vff z(&HB2*K@OOjV7H!pt~R%OU5LW`;9+S8ZxkOVonG3{LtME@q(cckYNs`{+NCr2sZwF`w}1_xa-o4r?Erk%GhlcFzjy8AH|6dl;yDot zmscQ*m_KYfzoY}*B4g|nTJPy!202aayNjT_hhUZaU3Hx|Ka^=6U~J&hFl@E*iyWn5 z%E3O9aG?{}3kB+W0$mVu9f8hSPs1Mw0X#@E)aHiWpx*g$39%(Tr^kENqV~5f}oG{BSU%TQo?0^oBn7~Ffsjk zsV)<{+vsYd)R$OFD3H!z|08fgC7LYB_G^+`cDjyS6EXmmiOXbuM${r>bQ)!jdff9t3oHJ_K1>sb(Py~4d|OVUTH zY9r3QjS1x6Rg+Y}94gAL#Ekipjtr@~<4|9D=np$RCXl}%gTSicsW6aSHyQd|K?S{{ zzSGGotB$Rc7r%491G3Oy=*g&7q|x>LBHby&r5xXtK zSL&cxk5^RtcKWA=H$6!c`0ML)1&>@!%JHf~epf12clk_Epb)v1&Q+%tA{8{7%z2^- z>4~0~c9(&hvr#tPr3IVD4>j)Gj{8ZXp4xLcrz3uaqn1!0YXolO)oE}roKmNHJEqJ{ zJ>EHDsU8nB2lmAH-%b2BW#2X>MSHPjafxHn8}m*Y*IT2osrVKXd0@Z}0cy1$p&&y1 z^$fs<|Afx&QqJtr{I=m``nsUky1f`=&8J=1$-6v=XEAt*f*>-uD(?b;=|56a0*UwhL!R_Lho5-QMeF3tm@csqk_UMeWYm4fzQk3TYmu` zQd6mM`X=v{_u-_qoGX#Da^qT2D;V8i7@6kRo=oW$jAhOR6Xs`*kWKW6y5mFHiDJFu zHGt7sc(dch+oS1r$#6+5!pgm@THV@*VbqlA)Oc-GQKD(uZ@fl-hQ3-BenMxDx(%!WP8l*kP5Ii1F9Q7TB1Yqz_pGusJ5CxOZ${}}%NLy&4 zqw1j@Z_N$+o}~0{vLS;;`xiUU%)8ZdTQWo4$M}2o1wtA`>g;0$6DFT8R8Z~6#gwvN zig@U2XGTh7R_F8h)+mohQ@~o{hA^)%7ZXF5a>%#1VZff$oWJ9p{8;AC6=CO|)gffp zNoM;PD2b{X`0rBNS0a}UEkl6b;C`v9Lj!Zp5wp1(u7ehI)0fY6mnYxMkLQsA!~MFq zNi4mK2m$6w0wwEjfshVTt7QWasfSP5jgZqITfUV)wm{wbO(qGu-!58&=6byvo)MH{lv(4Md zL(F+)u2bQNZ+%NSZFG!c?3Ex^uByflA%?BSG&d!FK)%8f$tv(H4 zyEe{x?KnS7r&vKgK9yXh>K&^omY7M^)8-V3(fjr8?@QJZJe7myAEqbrA`$)_ zsU_rtefKiZv?y=E5m!XY)F1!C#P|222ez-=IUQ%>56gK@#Ber-F>@pQ>;=sCzR{hu z@9B-77iRx>9WEOCC3FX@EKu^N`l5FoAzWD5zZYL7By-%)--_)#G4Y{0-!E47kT7e3 zu;<-m+A8v4CG|Zu4l<*(g%mBYmYq*tud@wEs?fdUlQ0_ii@6rcV!hGEhUK4T9VB;=mh;Q5#ye6Zkc zIb^srVMeqb=VWMhM1t7+;(43-S?BPQi)IXpKCnUZRI4kxIkLo3fzxE6xAlcfO#9A? z8N*XU_cEig6+J`t<=0{EUwOw`B;H2lTD<)b>Ve6)Lypinuy9_2DNCEDu>jD&>I&d6 zY}6gX|1z0oDh~gg&pQr=^NWGDDkr$lwixIap6aI&4xA%Y93xvN75fXjL?v$G&AM^k z-~t5fyG~6UFnNWbwyV9}I7@g>XMy7&o(kfPf?t~XOUM86P3!(U{=Oc2ml|M%vk7Xy zIiDR=d|}Spq}J-d_sga81q`oQLLX3k{Afl_Ge2vt55~Pu8z7-r(#r%Da{5 z8+^Wqkb?_P3KD|}X&6lK`!un)v;gBl^y%5}h5=a~Vhxn!ioy==6p&XzAxbY;Qkhn8 zUZWkhV|0Jz8FTa6_}IpOr5a-bI~|%;%h?}IrQOE6R2c#|E9uu6ZoAU+n|e@{$c)dv zoKL-ZxZ3ZjKUHn-^sx+4q^n)mCY%hJ zx2v07`jvB#ar?|Syi&@Ee}ZpWIpb6T55@14Ie~OhBV$MV(HVUtpZIF+lX9}+CHx)H zeJzWRMXiGD8EPq77NsrDQw>qa%Co}jWU&rZPD0P~Z!dWL?_=U{DUt;7wG zFd==WveqU0+*GKe0@3dvsA$xbM9=+Yq#6+-=ol!?b|SErk1lN0Vz;k&H}KCqADq41 zc!qx+)ct~}LEye@twHnl&VW&Qp|YaA#W54uM&#@V}VMdY48?^TA!fw#9wmC>j2u zNF5&Uit5f5+%eH zqg&6;E~BeDSD!a3$uxH5ZgH#wc(#jVsL67cZ~%`xy@x>n{pYe#vODsyWuf5wUtzZE z=Ai1!c(0yvE&JSN@y7nm2a23Kyh$hgEjyaWuTp$Sg)Zvk#^pX;f@vOQ3mb^!x+E1I zZr7rL-NBR{R=N?Nc>~P0mrX8M8Mia}R@OyR^o@8AfT|w6*qqu1b6MDPQ~9Y&W_^rJJyp65is^1uK%jxEE^kunRzgH zC17KSwOn|!?seU8cO9;8ji%ws^yBkEIweXOi#uHC$rQgO<+NI8fA(3LG8?=}eIi=N zyc8SAe|wuE)G<4X|1B(D=mmF0lX*~zrg=@2Vc!q6W>?{@&!g@*q#B{osNc_xz@5+6 zsop5-Me<@Aq=NfJn{e?x+7wKJ`o8<_Cd4C}Z8_>LBy0&SJaUX~V3}!u=+Xvd*G-c2 zRu8xY8~kL|81T`#*x5h4sK@pxu$nFJa3(LpBYthpIUw;Mg1vD0P8Ms#``xAIAZlF_ zS_iHV9Uska+FeB(R{OWYIc!^nqwWC|N^jZfRlq!UZe`c>u9btAldNOemb#s8x0f5s zHEe2gxf|5k1PgC&@+{&Hq@bV9(+MEx*CFZFI`E}p{51-{)-yAmr2lfNceK&5VSHl^ zR7SS;B|($H1!4}6l}j9yqhpUfx9#E^AF6_R?3HVR^{RF9jN;p&`_;3#FJ-jwR4j?b zO3AKqtS=`*A;l*cGG{Iey{pYfMQ#AY`=DRHj?iA%RUyE6=JMARG}gPsyFa%gD(wyy z9-?~vOgA2mNeAW5fXdbY*?D0}9QJ8c9%~{aL|t>-S7Z1tJRF8fBwcx{Zy;_Jvbc4#4`Deo)x=ut z{*^v;TLRQYB*63x<=tNFis1ewLOWl!f=eM8JJQ#L4r|m@jP*fay>H)lWbE#(0^zig z6~oJPvk@f9=W1jtU+j$~k?Srmjz1B4r!7}!R3u$nz<-joyX~?G3OqXY!G5Y=OGNqR zCv_hWO{hy4BK>!gH$=)BF@Ef!Q1q02s(w<7rjv|TNL9BNsKBGoxh4>lJ@TI0sC@(j zxdf9DwQ6fh?wyhpvJ0t8AT#Iw3({}bbc|>4=nMpu_2|@44(j4ZCvsH*^qm6d=)4ci z-+Ku|T3pWrAtutH_kpy8?wU=N>gVJk5djfY@#!a7Q7 zdn?B{>cdK0N9Cpzg#TbPCEMF?erQ28sB4~2>;YB`Ms1f)4q65~d7kN{OV&v=>RIlN znHP7J?47_`S#khQ)Ju&%%rXN#E2*>`nz6y>^GtwAM|h-d5MGgKJmxx)hDCIMSw-LbqTO z!lUTtrTaVKy1}I-fV3DYCHP6Ib|%!E+b}>zYwfbkv1g*_&_f-UQf$PDveoTTy>Lfc z50#r$2IWrvS4sQoV+htvPL=A9uSy50N&a6gJJl&PR z9bpH#Qz;STS)yTY1js+gM{|R%Lem)}cd-$j#_o-fu8c1Z1|7|0lNrlN- zjC)kKPZ!vgeas@7atSVl-)|RY7z6n>8Z2%un?K7=YRSZgyF$-j51BlF{ob$Fsb?%5 z0H<-fTS8z?pVQ=<`+%FvWpDa>6vzghn7yIQd7}uUPbIhz=Fvr;SS&H?eTZdUa;ylc znl=q-*nGytiUA68VBxL|epI{}T>bOfJAn(u-;GwOl5zma8;>R}y>6UsdFf_( zQ6(?ACGX!@y$itVvp`abv$xa22( z(Yw^Iez*!y@LVnUEIV>d!3K5uB7@0fJ02}(HhSnDeQ3i=#Sik zUaMJPlRxDzCRFPMfFLvWuru3&vR}wBY5E)9iT&>U-+{-ER_yT*0hA7BqZ0nUNyywS zD`a`TKVXd;0oHNqPJTM(5Rb@v>!Ic~x==)>_qF}Xod~m(J`3lS9V_>be#lNjKNh)I zWR-`{_CWSzHN2C)K5a!{K}-(zK>z8P=V^mWc?5UiEZ44qS?UpW3C>TnN^~{ z%F8vF{oFw9seprKU)Koe?XQAmY^hT-y&uu0HkMa&Uh8s?Yh5eSHF1hp^Wzf{6YYgT zJTEhIi*m;Nh1i`)mh4oTSZT4@%@hlavo{w)lWUVR(Vpja=Mr|VRd1`=p4e8Rb%tN zw48a*BQILn(PA2t-uSTmcHNt5tr{Liqv^~#iDVIu#f|XfYx=>ZwFh2?4;PglglK{w z@@$ciLK;w!kTI4WE*buxODE(DEZxXh4)0$}_W)$x`TTg+e%vxtvDgsAlG^x6$=_jY zu;NBe@tES*6@Ue6P>#;S0gE29`2BIf1aqotp__|A*7#i)-Z4mCgBv16=?~1`@R=_p0VwX#c#d_4 zyE40tcMch>>Ss)fZsDnR>U#C=;495$yp-7I2F_fpOqaRz}zWZ1Q2uDBYSmUn+6@ureujonJ8G7v2yUFL^vz>C-%%!c< zCJI*CG-eq*wSOfIzKS9r)mjIxMl#OAc2XEu8$MO^ww7>ZvCgs4GGs0lB|-zItkcE| zRsa!0wv)t3#4Y6UcS-mw2LN52o1w)2$JSdwRoQi2!*r@Nh)5{irF1HSG=g-uba#g+ z-QC@Xu0w-#Nq0AgjzhzL;eGpj&-=dr7!1cX;PMREvDRF3&b2qo|5=7SW)>35=?wG9 zRqTm}{DjTgEQ{N1zyR*nZZ_Y+t>Z+qZx1C#d-=WctZA>L`984nnGYwUIkpZx-LGf# zpI{hPt88K3br0eI;naxy1Ei)9-#t`4o(o}eId=u^A@B4n=!esJ*^f-E7;8KNrMC7% z_r>A5wukL$gz2L)$?~>C;5xg4PU&-5qMw8d=_x3_rWE62cZ8pYnNkvCHNVPx-<8WJJibuS7-xBnl; zk7lPm2uJuLsjLoV0|Rn#x4^9eY^#k^h{x>>_1xb4q4u`%CNK<5t;izW?3ax+66St? z%6=HQi?=Ks0+D_8S~m{{iOFBsKxT7Xx|;`UJeK^#+gZ;K3v*ZmIHxwHJJV5tsMv9I z!j%M6;TNr)qtK$zQlQ178#p%q-@pj=W^*nwuiQ@)r|Y6Z2~uoyEw_u*4xGL; zH!oXfF}Hly>i6KpMtiXN5FbM?%pXM~w>+*E<@~AOsjP`$gEj2boabLQ>ANJrxCBH( zhvAtH0A6+%D(nUu`FNZ)_#L*WSMsJk+|NFotGWdDlR$O^Kf4TZZA@t)-*2%bp;izU^!D6#( z$w=SB9?E)iOPI+WHy;PdyW$#Fmp96r{W*>1y2ZRk>jkT^U&BGPSW_GX$&o&>T;Jh1OCT@QE<}dO6f^To3jwJe z)a!ctWX!3LgLzKMbtnaXQf^l5PUp zXnOvf91d`*IjFBIPKaVBHP51zYBB^idnpQ^Wsx>}*eSV@F1xWoT)5Lq(msD%KNxTU z<&dhQ`hHbotTM-zQO`drf&< z`_*x``hUuS|1?80ECn{rmN=}uz$$8|Vnw&FdEclX2YVTUxC5#P>HgBMmV7_2KmWtn z>yXcNO0z0&pm3egIFLOWG*^(tp-@EMb`JtSr2M1P1MO_;Lh$O@9|;zI_a>N`4oTJ1 z=YAr>uj6gqPY)aS@~n>Oq_ovmEu?UeV~PC69h+qA(Ohv7Y`KsnLqz54V8=nbXQHm) zCw-pM|Lwg|aVl5*pzwUwEBrYXCA!M&K^cG^Jh6O2?D`nMUkU`vF$U`eHm9O*4!D6P<` zZyA&#e%?bLSa++6cV+l$g1Gu{!mnPnq*M;_wI4X?GM?XK%9o1E#jTNcP*9&Vl5jx8 zuYOmLKM+(LmNde`s}PFo->7@yTQbyb!E%9zKE^2aqbxgjl-ACQ_LGIe;)GI7qP*r) z9dxn1|4$GjlbeUT@hq`*q)8K+%jNcHvOT9PW;`ry(yW0f1aDgY? z7p@%EVo>P7;NS(sMhSi`{==g`$-EG0;Yb3{!0VsE!z_63GY-G)N4E_MQ87E9scm^B z*lgIjRY%YI{8++S!36}wyNd9DstHDb1^VaK1rDMxBYm+{H=BC)*Cl;IGfGW zpuRb+Dj~s#Nov2@3{|U`<6opz6YXlt9LrPKMZZ9-s8|LqXS* z-dP>|Z&O5+e4`=q#Q*DUH}6(z5pIV6kwZ)fRNk@n+JObxf2*0gaWeI#xdScl{fr*U zriW}NK&Q=iB~hVMaNg`t0|9yOd}k4DD<8g(nf&M0UJRXUe)BIWec0xA+o z1dmoKQGZPp(u(VtkMF8Sdd`$QI*W-RFeUsBBg;I6TI(&fi*>nv5) zs!N1pvY1PGrj*US9uYa3(&2o|v=(;-029G#e7;8sM`6=EU@Mi6dc!gjr}l+oA=?;v zF>>imouP|S-vSMAkrT}sa+m`5Y~zc|7hrvlP8s2*q{MV4o2eFu0PXBxA$mRyaJ%Qa!7a zOLY_$A}!tfHNtYCI4z}G_)704oU?R93(1MY;_TL-B*n~PL8I3p zbm7SMlk?vbLQM!>rd_oxMpgNKnwu|$)^Hk!JDBADmcRw(f!<~~CvCl>YY<^15K%Qs zZK!gh_zgA9>?Ov4ZRKxaU>Y%+6`e5dpJu9r8s^aJ!oFsFQt81r4g?W5dx`=g=yy-9 zS*JSE7i>d-H@3d<{?ssXuefbq&~tu@4CWFjvy2Y1Vdh63gnX)bQ!BqOfNg9rOSqPO z4ep=OIY=R!XILEd*;(FZYH==B<~?Om%+LF>*p#1@ExtfChU689X#22LW@k;|Pd^Ih z&5m=>?8Qf>6vm-7E$T?FnTl?mv`CSaEQ=*tUAV}9am-;tpO}Ox;mLg!qDc6fu#Q2T zU?IW-3Uu|SAQ_;?I^aKRD$%Edw~P^1s`)f)hnG;yAs+>_axO!a2MgPqRJAu|&sdCqHpNJ3O1C4RD5@F95ogz8m^a zGRRTaG3R4{1Jc#HXMAwmV8{9?Z*0l?egZ(VI-1Ku2s%GY%nZC6+I^UZE`ymnh5L@!@j1IIkrp%XCKn@xip zB;yR2`4ikC)_cMm(ed{uCMP%5)bijGZR^I*s*Fd#?d`(Tb8~wgni@ejfQ0`kepqZNL=CDr}no#s{V!#O$?6^cbvt*Kx4Wz>ZQm z#DB{^!ncmkpt5oZhA`FH?~X0h`E6tH9Sa?wg<831Hv->2wOrS}Ysc_hadma|U0Jwn zKJsWExV=1b5_~ubzo&}y@;uKbOIfcFEUTb;0Kav$lKTIbp3jTW* zKzny65&ZgY?J7S)KkYGO8sr#$z`v`-HM9NzrEXjVT!~o)iE)j`ADA?=J5v@RTX>>16wfWRg?iA47Z?CsaJFiD=rghu9 zO^GNIpKQV|ngxFjp??C5%0kPHHT#WJ+0CZHV4!z1MnkpqtIg#U-k}(8xC{vdsALf7 z%YUUhbY7Cu1GSat$0_CrRp+r~gO4tl;u)iCmNoA<>Vb|U9X9Kh*5@KTa^JFz)Qy~M z+^Tpd1#6=ESC^#l7wfB@Uq9&QvhC9KYQpxgMH3r3K5^T20Joh&p#D#7BZmRk|GJPN z>P9(~Axf>8{ZPPgtW2HX_+YS^qkpSN3Uss0-neC{Fua}gj?ihjGUXz4eMZ2}@_o~K zfmce;$^${ZQMEo`*xdT1^d0dET}_v0De#Mss$J{DMOkCKma7RHS6xNLC~dNto7?S1 zJig&i#kRdPem6b7+lkDmJ3+|m>Z&RthHMSf962JY0%k#No0!$|e)UQZ&}Hz8A81S_Lx_F$kRjZnQ?`dDa+i6EG~7U~iJ!i%CrjIrRxDiAuyN zN8`$vbUw~~nVD9-U^tUl>C0E>nA%3|HT|CI=3kT)4V#*cq@5zTX|;i)`142&E=KNU zpZ@!a#p%%ryUWvrIY}2_{afq;WMHz#vXaZ;O5zM%(SyEa`jKqwgZWadssw-GP52WJ zBaeY&;$^il^!DJFs0$*G8k-A)tA)I=hT%aLR8om|*5$l}XrPKsvT*zBW5rBhK^1>K z=c!Q@|BG90b;_Vy&504%%fE?VlLjY~Cc{|N*VQ*3)k?JX4XNL>yIUda64YIjj zt^Qc7G#v0z(BFd3)H_iEUb)V_%#A|`f-*K|yDo1b5byLIeJqi1meQiSEfTuqh0 zw%gJfNuBe_n(EO=7|PcVLVluN*3)>0f_&#ew|AXoNQ6RV+Vh&{g|VpO@TE8TiAD1m z7YL6sDx&iM<3}By&m8(HWK!_CCk=WTlrfjjZAD7X32P6(;cI)E-cCS4{Su|%HjPRllWLAwX^ObTv%z08HH z(yxcZ`qpXD3w-S#_fzL34oPK5?ALs5QupjkYhrEj2@88et8p&e`D9VhG+?R;U489T%bTRyv;;!BAK-|dWk!L3^+XhiB1 z*$iQ($1S5Ze`_c&Jf6$TQQym_Tts_B0LkRWL)ZBTo>sknOox)dU+^s3I@S<$)Cpz2 zll4B(zDn$wBfi!iR&mS1Qc0hhQfdHBj-VxcZBFWWwJHubwy|L_+hCUuTzl|YQ!^E7 zmxRk&2)aLuWS!7!n;An6k) zNvXEiwjqhAsZ|4`E)H6vl~985uO<8|{V)8A@-JpfRU>e!DaBb`a1WcNymKK&!b|`8 z0GRp4wyTO}^bj0{NSHr&(+V|V^-eB}y@@*5C*{zm$^<=DW-+)xY>OcrKZ@0VO{1lN zL|AKKr%=knFF#8qxkV%0dLcCqNUy&PA}nAeqDEX1K+w@AS(!O|f;Y6s@Y3TD3b zm_59PSH{a?ONG4c#y_R4Pyy$Vg4c0BfnvCZKm z7eAV=)`CyuEvDFqQSbI{m3xO3DUDP|1#eEoeU9Ic!5fOGuGacjX1@s8c`Fy0{su9z z5L~j8pfRy+GUOb*p_UOsL*F0r&(GVSOyD#ENy)!=db2notoT=Ye5#;rGgFinW<*ia zo~<$RQBT{M7tXm|tSd|KOq=gB*(W32@M$V1-YcK+##_|){m84`RsC~nX@!SW|01?y z5V!8bhtF;|u0J%6cBVa-2B$^3YI@;azN@8}8S7Wr7UMeQNqZk?>h#VmA$A8A{(Ipw z*%At_0hd>gFU;U zu{hi6o05k(efqbXS{3#E?85zars50sZ}(D2yj~-BGY_j)pN1c&RQCA^ZPF3)-U=Zv z7NVTom7q>cOeFAOV`Cd^_Q!gjB@24Bn9r08FS$Y(qd`SQ5>sW`N0&(|+^VXow7a{z z-NN;mnZm=Vywqk>C4sSf6(kfZ(QO1r>eQWJq~1(P#?wtw;`qmhHrH8sti%C3l41+a z;f5XS<(8(;a*m?**eZFJ1NuB*Hh4Km|h3{c?}2= zsUxAeRIvYEIEfS_g{|Y5oLqA!8_Ztc0?ik5QdaQ3IwT~dx7`mpx2Z{kjh*&a&<|tMBZs?YWX@jghy9Sd zyARQKX+idacGGk&I-MOqJ1UPR9IltkG*}FM?U=e6ur8d9z9!&N&dQe#jOfXo`3Bj? zL z9U{jar|^`fDO#1O31xQ)WsTXYh6M*6mA9HKuupMM)EZ?Yk5b%JKI>T+*PwxnRKznS zA!qeM$u+71ZefK>Z}nR1mabcWZ+h&*V4rCb>0n_Mk;mf#)h~uZ%gu+vjOj0a-2`>f zA=P5Mls2}WR8HdxLj~!;i~dTYR%eUY!X-Bh-5y!2V?6_1z-5=#^1g2l z>N)=7nSGWqSqNjhRryV%&jS1Jckpw}qAL6F%}n^?s)Byzj~$oxvk%|H9ZHsHom**t z(Y={6Q$j#OqIy`-_=-EDBcZFC2}$$t7}h@3K-P07r==BlJX&HL5qxa2aa^dgO6PmH zS|2aEup0q}_AL}omhZ$rCpY(+XK0;*#TbFixr=Nfe4+y7!%VO=|EU?T@@I)GI~G$A zTEMLH7f_$*E49T~QnFnuC)w8I8O&*2>MT@!9ih{Le1r{(;3bZumYb1lz`YFb5*ZB!lgWEW+McG zTS6lQ3qF7XkOdynw{$um`re(Epf#tCq&HYoW3*b4hN@!ym5WE+u!Y(%M zS2n{4nnlAcO2*Di{he+B0RRyBZEXkw;_J!BjNIH$TAtU2NY z4deTnWj{PgZ`x$}FJkx;mk*lVE|bpGYt3yS^lI0u8_ zvsFE*O23zKbxn~8n_|^orm1U1&1wOy+hC*kw{<4t_j$FrDauSZ^ztgJP0~8*eQ+Y1 zMvg){6nm_tkxlc21kIC~kxjcw!cXV$bH)-)YgoOIm?A5#GlS|GZvQ;wvkXd#-kXfYm^kL?n&s`?Jl^OziXDV;c?Vaf(ZJNDlxW}4bOdx3 zajAr(tzq8i)6=9rV1-E=`I4I-HQB9x`Fm|MEVYjWF|V+O>5F}NI(#n?Et5u{C%Cc>KQwP;Fkbzxzlj|R4#2}^>Sy1Lox*f3&VD#>`J_aIT9 zul7Lo07p%!Eqtk=ZQ#r&k0J!qSoBW4oZ%S~aqCS7q06;Kw!6W+o@(pw%SPhC)AW`l z+GRm`@*^z^_E}515gZ0-v`h+e4%Ce7Kv;VQWIy2^(|bP|v$=?v%{=iqFwu8%*RL-% zmbo+h+B&x!XHEL{l9EA^NvG2_*2n3=ZspC%=zC4ns1ZU8nDw@sL9e;2+v;1h1gvd8 zE#u(uzu_Y$BxH@o9|2I2b@F1BarnRmN5VyVAd3Ul^kB{)G6qS^>8WjBe}7WnW>Wyd zTVELefN;w~mT0Qh{QD|76#Fk<&f!-a(Wxo8NZa4nxwumX3kk1;pJCp<#jxtoa1#KQ z$Nh|bZ95z+$I`Ea@xEXaY8;ls6*|YRvF{f=zZ0Y5*tx%8hONvpD)lgPk-aZsw-9@b zc*g54TYu>&d5%|s9m%W?6AG>5NxjP|~{|!wBnZ^;m<_-uk7vNY_|hkdh1Mpm(bv zA`Is5UCJnysc@xd+-Ftii1-wnmGRIT@7=x(E1>C}cvvr=4`SFppVeXDo$(?El3XO& z7@|Hxf}ckdGEf1uzycX=fLG}VKkZTC7ajkUnFJivkgekU8<{R6aZvTtSbEyDF5$4s zi)V8JS1W#}`&A=J!rLCV(7ql4XoYvtGgd2I-D6EdI50O(q)-Hk5X$X#xOp5YX=|R0 zXnd#~zTRwdJZ=IdpH=CzA>N0nO(mDr35R$Vg49B4tI`;ZB@yK;GXA-r!$^L~#fq<& z3M|DFY|t_p1i0y9x=PwKh_9Y~vNsibCHY;gL!+LQaZoy5-a%0BmjG<7Q^jM5>PKuc zpB3yK2*eI&n@PK6p}uSGHtpi#;&d&T`Bf$pRnWuTwqU$wqa$J+S<-y8tN=Id$auc& zK<39EgD2V#o7(tp4OEmbR$78O&GpQf@6Nworj(WkULJJX>(sh`F^kXYJnw z_g1`I*FOLTs2&~gq_WI+3CHlHKh%NIUPrLBg~|d5sDWC^p*@K1zH=D%^91(2;yK=` zPI77VXS>N+g6RPAHW&tZdsO8=A2QGD1TsHbaIp?Y__t(f;EovSq&xZr2PF! z``GDFmE7y}j#fEyWgj*2@JO(lb?5%$Iq&H9FRn2Sq?hDvDXSC_g-l?~ovc<|CLbn| z`q=NPwiONY7cWH}91KxVlyQv_o6~ds-H)Od_+gvcygFuY~|m)O0q?YdgSL_sjOZY8@BZafNz(|1>l`){3+! zZa$tM3DrIm#1Ti;g&bBNiLD7w9st`9PZjbTTO}bL^x=S{P=R`}DP$vq7t4j7KaQe{ zTEo}M%J7(POYR2)i;y=ec{T9MabH(9qaV0+FZ_kKaVX|;Cwu7m5Qk60jxOeApJs{z z0+UF=g&I(jGP^|}_z9j3@}3feTe9AZ16jkIOcurK4NMvY2H4r`DF|d*T^qxe2W8AC z*}E@p3SP?odYOlpu!4%U`U+1jTbnSXjY7Wu>;nwnG;H_J*|3pe2Yz1{uUfD6oLxcY zTCa!eV{;vZEQN-bDvJqpA5gw3DWPfjcb^L`{Jyn#m5wgHJ8_y&@D=SPOBw`$;nB$>HMN1I&sNt$*!CqL-4G!FmSWl zV2?x__e(4w@ zag_0K?j|6Fmk!iAGeK@#qo8{0%eNa0=(>&1Bi7_Xr7VudG6D^g5=@8f3Q-}k{}Agj_`KW>d(gY)(aFXD z9X2mQ^Lm5AG==fK!IM;SFx|k7;4C}=j{+7ufzoGH*CEx)l&wMM?auw>@)3K_-JSar zpVf4;S4=h37fro+*mwj@6o`}2`4l%X@s<4x^y*|iPkTsFNpBamM_cnyOMwoV`8~Q4 z-*x^pbKka8S*Re2+PatPeO8+)9)16xWr4=7kfZq+;2jwIelMd*D)r|YtDMshs0r&A zJgJwNPdTJ7{y_8FGW(Xyzw}9kh>qQ-mcrrDBuDlDzmqs?L?!L^gb^P*oGtyCAD;N)HwBidU2ay=9HkwBWd6CT0f2*HN=7=w2Xr%8sg{id`7J}Vk?Xt1InMpDhM%- zJkb7@PBP#6`!qCv!5B&;%!j3?X)LX?-W_VYHAuLwVZS#)OUuX@n=47p>mk(E=yaqN zU+&l!MM-CC8w4r&(1u!=mnRBbDzG_Ip$~A<_>dR~(e?gv>vByvrEE4giSr7q%T}Us zNE;!X5fbVzdRUZcmRmg1`Xv&OC2OkiPYXul#l&(S8Yjq_dlkd3`J%J2t(O+gEW+zfM*^#y?@bq}XfiOL(RrjvkO{i&%b*R-%%4=G2F<96iDS>yEg_s37U@hQ(x zmL(u|1a%?!$SyT3oIh%DFVjH!Z8tqrzY@yAiqTB)i&G=|B9ikV9ACn5x#(3|Im%Yb zl!P$*m`aXB6!Jba!r_M;14Ud9l!?#k)zOE)vn)(T%_z=Mlnv=KBQ}!X2Ix24(w8D& zl*Z2lx0q7``SgBkcNVdqV9^~I+mFUw`D^+0r;`x(bdvw@F(V3Z7QNJ|2j8~68YGl~ z3oJ79$u6!jH4;vsey@aUkmNh_3Cv~PT&4Z05gGBVR>&tLx{2>Bb)`;nActr5gwMIn z=#9px_S`;E+Xk?+*x>uP`EhrO1EjC>5<;!l>gsC@r_8q$Bx$Fwr&-zA$5BkeN%&1A zd@04>lq^=8L{m`lXt!@|8M)kFOe0EKzqNMH2NSy>#ch=o7qjb4l8c3Xwz4XFDu054 zgNHKAJUp74?xFKzqocY^-`zl*tmVcn?6XIEd$tXnE{y`@&2>;2i;upt`7 zvul(`k!VOOIgyJyToC(7wX*2le0`iKJ9-?yI|5lw7czWw=Z$4%XXvITlGy8RN`fAi zV7vY9=L!YaJU>x=m{U?#LCHxm-{NA0k;iPEUTE*Sj7yv3QROO3kwU7 zIqL~~L~maomIfyqo8GS?Ov0{@8=ISbwHEUmi%!e$aWu5u4&Gn4Aq!w)C>j&%$Fy}U z*k50y(r+GV2{11^Z#Jni;odhmqntanW?qPT!>X`!e1yTFkKgg8LLx1zh9*2LND-HJ zD6Fk4BI?0R5W*s@+P_8DV$5Qvu5~g$$~qe|Ec`da=p3Rf)Rz24v0t8uRqkN?{poSV z=}=Q2q26usWQyb}_2v&3WGv+?HypM9u21e`R{z`lfE8QGvh(M>gD>2_gBwAUuEoWtk^SFsB0W0TCiuX zXrMC>-+fKpx5Rxc-32bor(GdarDNmc*|spD3s!9 znbTkPCI)GnnH9T3)R#{aODZen9bFSuAZKuCWIn3c^;RB<8m5Pl9{HewC(!YD5n0N5 zv;cppG=X>07VsSoDdZTNW~`M{r>#kK@kf!vvAcyTfN(ypGMXF%M;%j4;C(59FV|^9 zVFrFX^P`U2?h{L(oF{`>CkpAzeDrTI{_w$9r^EQur|%isyUa;RNrMTL-7E?U_m56E zTY@{udAYfXHc}hBe0=+RbvKRS_piH^B_*g*K9sWQnB%%2W78n_``M_D@Tgt;z=rtW zA$EJ|7Q{qFy}iD^2Iai?@ll5k_p^bqagU-GKPHtF4i{_)hUZyLuS}Ee-D3R77Bu*$&hF38*LKR zA?VKdC|K4e!D~*5$FX3aKKsKR@sH16vXX$g1jiF}RC`JV^teR8I%u^hrhOmxS$xyrw6s)T}fJG+%C6wA!vHFP9_n zIRA1zJK||1(pta7H2g^*7@v`CO~qa=AE(`3p>o@B8LF68IQF#KPS3|>iMFXn`0~J0 zX`VbL2h%pme-XR)zYkkcZNDSN8Da06gl=75ZdAcd_spBV1)LV%d}o8~M&(zz@mf(& zLReHZJZV9PcTriJ4wD~3hx7`&Q|VYP{%t7ln6fq(qqd7d)vqFEj(`a{u?d2KpIL_? z4R6XtQhkvoR8c^mF$2rOY%Yx^u;{yVE(j)4Svdi?IrQ9VDHh=~nE>i*K4&>VR4~4g zPD9Y)@So&4YPq$nO3L4M**{uroPON`=!S?ml=oc^_qRiI8JJ@N0GUZ;0?>bL#oy-6 z9wzbyHs@;kz44?fk|fA{VkLBa{U0tAWcfE817k@MdUnKaAbx(@78a#g)LwV%q)wZD zin6S6M4x|a&|pePtp^LW1VJs8Pxjv6wUKa5lZ9Jo?$eum4qwhQyy84)6 z?F(HUZrskZT~C5oP+~~t@J2V~+YJr$%b zI<=OQI9^2X3G~-?eG9!Z2-ls5mv@L^;_%Rto$F^9jghgd-Oz=S!QcmvwLt0+A%ZF{ zR(6~!)lqS+dTZUbYZVu-HJtQvj{Lh?C+B=AzO)s99K&^Q`jm0)6Iy25fk^w?y(!kG z=idVE?{fG|HioLgB$Tkj&Blf;*IHIuI;2=ysNto7s{ai*;j=>j2jTwr8GOHX4E}RD zq4&RPj@*`S-Sa*PrU}E@39kfSmPRk%x3hA8nSSGS8XbL#jA4}$tml81RzS2@Ps6M! zXWYGjt)i7ex%~>9>!zc^ROIdO{jf(b!?HjhAnh}TLmGgDWodbRb_j%r3RxIXgG$Bt zlGQJj*EeZ9P95ebNW#`Xzw2Cp8V|8i#QlgP%}dz1xW3&)W77O!yF>N<=%T$v%!}Yy zn9YCyW=>1v^&X^m31K$@CE7pJ}@DnN3nKQ!?IB-cKUGXRP-*ECSf=Q}34qZ#CS@ZPEN2>N(`$7|NWWM727D$1-Hf#P;L%QS06y zk+Hn6GDP6;&UYzMF*<34zrgqF#qIWxAeN8h*WtkyK?E$pg_%DX$k!*k(rR?prE-k*;fSzm^7E=BOW zK}94-Rb{Y`C1Cudysp|qPsIcs(NrIMFqWg2o4uMhc68+5iA}ftbiepM-px(0rZIu# zU?_s*Q@w$psv5)LV>V3T-JyI^b(!&NTN)ot0EYqPEK)AozlL@X8|5L7>P z+v(5(yIL!3UY2P^0D9b(MuwTOnraN~RT~!P92^6d&cLy31_iYusOSn@ z;ifZ;2!=-GnJvFa|BUT9Kd@~@^v^5a2kBk{?A!xTE2;_SP(ip9q@(Z`BmcSx{_zt0 z{Z|CRCs#5)$wvWq>sKI-QN)CH`;+=y#Xvg-)cat{p}szwgXyU$aBZ_io68j1t;1Bs zx2u41XTTSbSAa>`3fKTf<;>$E5$^s(7O$JtWP>kSV61A-)myR657`PaN0%Ka{DFYf zPrb(@l`6+M5s9UWuwq^VekUeB*`5!?q2Vbf@#WwC@LvpK9rwmE_6y+me0ef06&SO5 z9Y9i8=5XdmzS1$*Pk(@SZ=piI#!CR`vx=uccnXPjBvt9bI&jqgE-Kh!lygqp3d&`{S_%H~j3^`6EkeN&dhEQb+*CET!azo%<{QyWc zf>9NWu#>^0>zdc1pyrxo1%q!WI{O8A0`bpFEdbVgdpTQf0BovJaTpJNkq^E+8)X{1 zb=W(>mNVt;v3W&B{WZi8q8;A&cwS9GqF1jr78>j-v<#=1`%(F7YdR)Y1ecp%ZN5*u zT~mKXIuCX}M8~0|REbD7l2BXTwD$~+(i1aaWemU{|H)wBj~8^HeN2Kf-?~y^AcKQI z^E*|io$vfjq2&C{oj! zk+}b7W!50d1gwK_>dVL{Gl_v9XWNqokjZO^F^C!+53o!6 zeYu>EGtQyV?vFL9Jv5Xs1bv2|ROQE~s7FW~&`z?e>Fm_@jl-v21?Y%hF0_#%rf9Lt zM;YkMym^khi}YfcoN~tJjmjARG<;aPX04a!iqtype5*;D-k1rNb(pC%1e@wV&J95I z{eNFR$2e^nD?n8g;&#~E`?I>PZs3m|-PdJoZa!ElXZ-;TAic#fRo=@5yYQy-F-f>O z&7bz#E}M9EXxBpT%)$ZZujD?c5o%Yp*xkH>w9hO6xP2u}_x9uM{LaSxFa&5u1a9|p zcwCoA;dTo9FD4XZQBMsbgeWkt1~rQj2HGCiM~XLM&q8fCOq1`%4hA+Jo*PEWHHjN~ zn;q6+C`w+g{KOJ{xEYQG#L8XnV4cam~RlGC?=1zO&3D>nAkN5 z9C0G+p;E{WPR~xl_0bl#LnhOjZD!>8PdGaC`9^ORR;(vs<%)uZg=N)T0 z;cY#Znsi=w(b03uU!1xpSQ>&Md*!asX7cLzj0P#Kxb|{8aZ#$&jg8UcAd}zpEd?12+F2M_Gs^9#}tn=>g zF2nl)#gshnoCY1>OoUT{frX8`Ejmb^CGZ zNH$FUL2L>syazqRtOVuF!3kpRzQB-+yn&VaT@CO6n&*Ak*eP%62Rx?x$w^uU`uhzo z_9pX+{!z3eO%#dl9ZHyTOa8DqB&j8T93cp&6QIc1 zhWRvt-YrVP0d^fmr7{}^QsLfR&z`kMvGN00BCltF{r$Y4?ArwlDp;N!q-d(MxBnT< z|9U{-hUJ0?X`mA<#>L^c!@NOKwX?NFfLmHvSnwXOzCEZLD6Lzf10prtw8{p&5A$h7 zBL!mAD%b&nkS?_L2gc_SrQZNY=xDK}-qo7VzP)lr|CvrmfjNYLzm+#Y%GdNoOJJI2 z*#i;;NJUYP*Xz-hg?zFkbM>EzW8mz>(K-D5;?*{;qo+4SG=KDg-|-IBV=Xot={0QV zEJt5|4;M0(_bp-QiZmB#HM_KAasWSFe93rT}2E&2>!X*+1XSkEJ~cH8)=bo zMz_!dd3AMqp!32ONTuv1wHX;?8G4pWO|w>lsfP`)x&~P$m{%K6!&8t<7~i`kjE~w8 ztnXpZRY#qMq{MMq3>flZzfUIQto34F z?=FU;7V@!NDM^U>KL{Ksd&qoIbPA=pu21ysaFM+8AZTJB_pmCVx&i zfP(PO{(QAw&48)pk$ zWYtjP?K>1%?$b)ZG2=4gPYEoapXP9VeK=w6rKLWl)xQ@O_KR?->|N1sO&OMk#co;8 zlS$o=g}4Y>%~U z_eBI*+=`OvEvKcC*oo`uS$iUvFAKh&cX4s4w3z2`xmALJF5vW6uW`JzOp?0ynvq9!)`fEX5hpbe~5TStVfv%1IG$wcMo|BU7T zdH972i=rpk)Ue>b)G%hGVFAdL<_Oiskj4#OTh*~BYy(5_S_a1c7+bvYxUHPRb(5ft zf^~}|o<$Y-267&2?u=n3O*(&b2yv9CLtm+a(*k{IvwZH_f)CdASdUP!S#22&hh=je z!*lcNWiA&An=jJOTGseGkOz`$3yUq>mdgoqx`YlKJgmy?ja_YhJ+X(Vxoy%YAa2ny z31q0Q&AEk>ClZ8{UZStF*-DO9%GU$VA#OW&A^kfu3Bk07$?1_LM^;4}d$$8WnE{Bs z263sX1)w53wH#nK&6iD&W4*W9S?&C>SvzlemPqJdKrNHPvVF3ws$qsvvJbe&-iC&T zLOY{t-wZo&r5r+4RYxHk4K8O!g&jhAJ?FfA(SooHgQ?Gn z(q|D;Y&n_wqZxzGE(E^Y52QXHdO$GqW zB2#iwbQ*)pjcx=CN_q3T+n>6$1=W0^{tHl-l3O3}I_$;7#KrZG0dkfm4D8WTvzune z9HnGjuY0PFemKA?0w$YCpi_<;a8{eoR(5&LnUkmA-(EI`F$0E$8sbo*zr3I5$}?DY zKZLi5FgKp*k4s-%nv43l>;xQ)?H}(DlP?5YZTh72hQ8WRsIdAJv8xw&YDz_pg zYDeOO?m||U$olPyEsogDSzPb{lPo~#j0np9qvu)!Wj2vU+F_{cg?+YC<~ z6(!gFcI1r5gNL4?k=ZZs5Rh^5;J+>I+4HdQ0oS0uh%7kFGud-aN=>2w1X}r&R65K} zCZ^sPye`$K{NdbZ*vDcpaB7kw=we#}9<9e=&qKHjJ`*R1iCX>q_=zuDpEKkeic5Pb zv+(k)2ywNPL;^MK-c?EwQ{yhr&$P^=?9Jo-qZU4bR-mlzI;t`r0z?aUoZi8~cOT}m z#ln+BkYBuJxlQJ02tdh$pcx&ngzpVoq65^h@&S2s69 z0DH)5XqfvqKUqVd^H!2#{~vpA9ToN3^^Gfy2%-4vo?w z-Jqn@(A`LP*U;VFF!1|w&V9VkxsT8Nol}oa;ipRvgEpVHM<#EP(s=N`hWFcDEYCKy;k= zrlNx@=CW4{*++*ewA~9HzVqojMU8>f6AJ=}<5era3N{}8qkt#m*jLm|egd7gX^C0s z7DY(+&LLPfgPyJ_PrCL#8r8k`NcOycBS|1?2Pc|cI~C2v^x^7Y5s|{Wfc)&AbowvP zl+qZ&s-_ikucSiMx`-)ny*IZY6_jFs{ZRR_I-sHck@U^hp|>zU#nzAHYNTakNMvPY z0Rw(~AbajFS>hpk1xWLgKvqOjabOV`2EMcu1B3!6@%PsfgrT~$<6umo#$_vV`mp(hsF85t0#W;k&}EQGqf~YqNFLW2 zJA|SbzSMz-BArdvm@b)K^mYIhu@T>>gT;bef1@yiA?=IJe)S(n1ORbZ_mh_}OnxAT zsUsBdebzN8+RGcR6oiYZpO+2agqpq_b$jnV?}1IsF8b1KYepYtc1_1I7t)7ksqIO9 zc(OqDmwox4_Urf8b>uPY?-Nl}K{ulL#x)w%eazc zlEx0?i?$4asZ9>uWRH587h#bF)_jo%vX#KAT9K=U(Z$(JhmHu7ku4@Ijt*$%fE=mPbFRJQj3^npLB% zddID5#IahqJ7a%ZVZt6BDKkZ?ae_3C>9RLEnrcYn4A&1gb&;k#c*(IC6{St(cT>6f-8dXx2eIN~O z)A9UZP(OR_0k30jR{PL}%?T{c#==rN+s)>tSOBOTowLg;KPJYG_{a^1dLF;8pDZKt z08-a+?c=vu9m!05D?R-O?=R>lmWvQ^DWj|m;DWF`6B@Sc`G+$UK+u>lMWb5&JEBSP26uFW_1P6Zpk4S#^r5i#<$WqkO57B`uY!C^! z>-V&lH^KB$Zx3)a{7ckOwSA2$<<9;2oczegnmkoQlhm%z+3GtqP#O-}H?O_)c)D1n8!&F4%lV{opq*c}f5+|L=)Y23$g0fF0b z8~C)E0s?Q%=;8Yd`Vuz7yAgPA)K7tnzWiERqi}VeW@8Q1^(SZRTy)X|iml#!u;7-c z5Om#-z5J1_w7i`yU9?oTqecy=rOi9i=@EGy;m_Go8c?P3bvADzB7JEoyQ~*dLtq}r zJ!v_Oyi9aXUpw`R?qbga?9<_gTSOp+J-> z>vu64)efGnnUF9cPn1DYc?aBe$nnANOGZy2fr%h~hgG-b5P{x)iMjK@H~9vPRpk7A z7V3TAjQdv`H9in0bk{lJ;N^N;n8+vt=!h`V8*!b5WC1A!J0d~877NMVSszYY9LX{l zjW>B0b%-R1#hIiD3o*ZuJsp>%Q4*LkdU~4u2gQ+~{)dXA{X2ZqdC46}--Jg|X{5Oe z6~k;X@g+g@Nb@QH-oMM+(p3gAwA6nGWRu&M{hT&l_th0#_UGGi-v6PF*4sycDZ-oM zrW1AF`6f?4!=dN<9|rS3-G~kY5-tqJ+!+C`Ri^cR*LQxrqi~@ur`Nujp!8Nk!MUEm|L&O9jHvC@6eVt1%pqB`aRpUr1^e7g?s& zT!Flh9YnYaMgPXGLJ)XZrV!wkw57c$L?6jkd4ocydV|w|14QZWLudKcG4XQGo4Y;A z)pk;;rwAJ)>JGy~=MfdA_-XlQ$vGC+r2Fqf>pn>_CJ)6Kr4WUDeK}0QDEb&Xu)|01-OM10 z)Tli{5=za8%2;QtStnGi(=92f;l7bp%mlBz^ln0M-lgND5FkNaLu(B%A)Nnu2dfu= zssGMc{Owtc{5FQh-q~9F#{OnMDaR{}Z`<}WwNzE35$!Axc!KHP;})iS@uuNKy+fT4 zG8?gQ{frJh4WdrZheWT)-$g#rL2@YDHQpu(N24Bs5P#b)>2Z15BTZ1gbxx{%_mr+k z*2hXVpeQBaCEu}+q?GIzR0cq(B>ey!*FF^Fj}$1xEYDV)#^`)!rN_z#FnvWZGA z6YIjSRgG+2WTN~<@Yh&3XRadP-KAx&g4Z=EiagWpmn8sa%QKEps>~0^bua0jyz~{t zjwXQo;&fg$`Vcxlr=sLNi^(Hjwd|G>py#@I2hbZV=-1UY2!CS~O9WNV#t ze*8X)@{}UUDe3;A3t+X=tCh(|c($)gTFYY3HCj(!@FQ)9s%D(R6R8cYbsdSt3hjvJ zT-F(Tvc8fwDmTr0$R42M*a`%X%DM2YmjG-|U8(o!n&w+v@MBlNaKwOY6M0k?;R={2 zrBSg}pkzo{*aE*YNp%AMHv`gP0o;d#%k5wNpm`ri9;s{f)+0tEm!ffsR(Q9218%|j z@0Z$hKBSMxG-Z9W6!`pQ zG^s#=O-kqTe&enkSI>GMm=Q?3q|vmhDQ^(hr6d74gH>0r91;EdUxj%J6VZS7LF^K< zZA$j{_0m|fb?@Cnzz{>JTkQ{C%FSms#oI zRYQ3JFALG+*z*X!A>wiom1AN7DXwEpxS-d4tZmDZRO#X1&O8T#}^B zozNqLiWc#S1A&tapp8BO175XO$5Ra?bpJs1zj&au##9yM^3l5&Z_cLYg4?D}HJAf!nLgjD`RC01t`3QO5Q5tFQ$b(LQ^qWsviAS5=P@+L9IHx*U< z*39?eoK|Herv_!HCO}I$F(&O|LY#f38#M>3sedoR3Javpf>;UTfeQR4LmzIKe?P>v{2b7UfbQ zws&W`&SKz5fb9j+>Q^nZbvsaa_!nH;Ih)4IGnQ68Td!QnLA8OHiQBJIP3eir2HBOq zm1SbU{U&XhUT`QVnsH?9O(zZtvy~{0{V3} zA5cjKm^bug6hL3AENyaF)DU|Xx4dAcdPuYcAkjNZJp|1yBEx(=J7e^2_83X;Tcd4P z`Nv>8cbkfEdnTHTNX`=*hPmZh``+3T^e;A@8EQVzi{le`da%sP>}9cfy7avg|9zLG z7|$2hmiy=uEvc>!P1zv?V)bY0UILIE@!Eh>pedWxC6UXNloV)-_VQx1p}q0)<&?W6 zM7^=v+glMz3E$SlL=Q(Z$fOx5H7|d7^W5P}ZwS!eYPwpU%9e{Qbd6^NL~Daj-7X|82iSX zY%sSqynC|S6bam^DILg0a2S)H^LNYb26EyczU5=tGVTv{Q|NS|E?f`UA6NO>?0LsM zK%@i`h^swK*D_k?@1`)dtge98W4Lh?du}nlzBUk#u_#jMZxDpk{AkWh>2+?&&a0kB zJcsj_+V5R))Sv$)xcQsi^ts>SvYKw)fUYODGhEvFlwdtksSF-lDhOgOfIE3Km=utf z5Jp{`NYEw2*B+4rr#K<>e#Kr117L<-d>!cwJ`S_r67no!o*VB?+4u!8NNm9dc^TJle58lGy1eKhlo1z8HR`j z5BUv!_nv5HTba*JE4v0Z7_gdCVcV`ON-kV3gXDs-Tes{oyNmxj&e+Ac+*6S6*y{9KEUHqDQ?qO65Z>% zUbbi-6f$Az7t*B>|GrzH5tURRVche{28MWE`Ubt4LJmmLtWqReW^$vOT`zv9dC^=k zvet!vLNY?l_am~=(!Xc3ZhV?|D(!_7(11_V==|UJSC#6P$d=dVie)^RBVACk=Pi_y zaR$;}!V|0d)h91xNVZUbnEC=w|Lmm{fR0}e7)<{b^(>$W+V7~hcS_o2(;7~doM3k< zC6K76aEK|4iRF1`Y3RQ;T0gUig>*7?@sGBUiCe)3HaVa6%A9C;nEPXCB7ufTig4Hm z`#ACs1MEjZt!}j=nt4IpRMw~s!X1C zhMLMe?-=pWzIsS9hvHn{CM#ui2}-5qOtXNB0%`ell8vQFXqC)CbWbe7b=i?hYWefl z;~*esQ@xr)^WU)RUtq0p9|jQiaE5pJ+_=a2;QGksvzCM*?QYX|-!EodPZQNDQP=Wi zFGI4;kyOSd{VR`MR6+>lANPniddS*aS?i5{W#JE7?)WiLU&vXD)H%wQE^({Vz`_1U zLNxZBknOV;3lb8DpZ4Ri=6#W?#O6ck`_)6Z1RCyXdg*>NAd?ny)kL(;ZU-+R2~Du5 zb?-*Sjy!-bp!_YzJqW}s`9J<5w=f+Zd}U}0!#Mdpg7%Qs0npmzxHs6k^Pr{@rwk!% zFS^A7t+5gPsu3RX%%I@GO4YRyzD4>pQYSB4qYNc8uLzk<(WJ%1i|6yD6stj`)ZU!4 z4Cdm}$rt z7w=eMfNk0}cs*_NDDpt5|dkEvcDj6xPGKJ1acitqn$jRc~H1NYY#x7 znj0u2_6L0t7mgCN0hAtX*_8mk83vtb#B%By_yh>x$=tWy?~`DD4d&6FDYZ>7d)P+P zF&^Qg(uxegguUHxHHlvzvR!#MB+!ngL-=nPi_!;$lJ8N;xDyUf3|0H>vmyA$~LD(cj{wGpos6fW20sV`Tfl z^OdF2xE*uko77BRBG{VjU@37!x;`);Z}p844K($_A(Gk!Wg*gXBvB#1Y;b68)bA#M zFVeLiF6mL5$*sW?qOYB@$sM}H;Q_XNj;`n8XNtKA>-OQ(ybYRmRzaw2Vx>)mKw%n{ zzLL<}nWwHcv(@c&l+@z2=c~(7C+GbI>f`p6(~s)(978Vmw>s(4=G@09**KputdR1h ziP9g5(vW8fUmsYT=CzZDxs5Wl#n>{+(pjuq!Is1Fb_^Z0&Qm!Ba1l3&scQ~>>|X$U z0Q=Wdv3rE`Nf#Rc^@aSykv8Gq`@AzuAX(?bDGt0R?oM6E;?Q!f1H*c+<7Bt^Z44=0Z4yQUEMEmyHTXS|HFNUwC(rh zt6_K7?|ZGAa0@NCni<@vR~JO6)7ljT zb})7-L9n9E^2~x>z%KLwomkY$detHj>{p~kgYgXJn@|bHBD0Z$2rM(ylwz5QND~_2 zJCACaI+cp6DyU|pb!+EL4$gMSAY`6J-HF{xFlUQTk@eVQ-|O661(1+WiF2ALm$=BD z*snrAh)e5w#O*$m37CbawL5J2-+vDZuSE zpAY|ih2`1~kgC3H#xhz2XzehLnUPw`<%r=vb~*cY z#K0Ku12L#TY9N}lxu2)R)jnLRMIF9HX4?iW*?MKmYxQ|2w*<>N4FLKy!h*z2&7r|b z69tWv)NXC&zB=aJQ?Q{9)+osh@9jArJG*s(ZP0x+|CD`E}oPn0NoA(1&Mrcw3jK`Srj@K9= zEHzS?=;U;mKdMt`Ei_ZP+O||=caQL%x#km~B<@@GR)Fv}3S|?}^MIrV6&|UqrjcRE z@-HM%tsSz#d|RD_JJ3ins!|WhRBA3#R^68N-yZ zcj>hm)w!HagG*MfK*{n$2C+ia&j6?5-?h@H_|tZa3Az6Z5~j=1Yfq@;*YC`$IwFN+ z)OjwPID*~VqsbOv-&YwI1M;-o33&4hKSOXvgR+PR&z&g{in7%Y?E)%}?&t4&MWEGP z(0{C8-S%~{h&UFZd?v5lzjtRVtiEA*oydWaQLHTix#vm}VBf4IQIf6uVx|II4A~c> z;md6U$+CGT$C0eTsPeaZZNGN%k`SxRoxxQM8u;g&HkuA!)YL&%vHVO2Xq)OrpdR+f zJL7HNBm9eIKFH~}q{@|_%`*+Cv!}zANvm6@xBZ8Ze>mhxq-xKY=P-rCcG#88_jvk= zsTM=_pmSFvy$|+(^h)L(8$DL+84~1~mI0rXcC_!r0Mi~@k1Y(rIC%h@?eA%FA5K6a zUQOV=cl=EuJTP@$)Ai+}lteH%fKs-L_?071s}F;g#P=mACTLubFQ1OihQ46`R93g= zuH->0o4dRGs1jh2SyjH!m@%M@J4DQNFYUK98*+T*Tw6SKzX#6jbFyB#car#;UTLRM z_O3jl2O#7CMT8ndJ)@=G{`MmBk*`ssvI~bgv*3imTteMZTZl~0kjOC-|(Yq4w>0$K&H*xT{x27Bjrcm&a#o>Kz!X_h%&D z<>j`*K&1M(nY`|l6&-}sa?|6}H+o3eYMVxQc!I0izf{q?$qAov%9TD&vPz2gotYDY zol$Lr%7lZ4i>sQ-m%mYy62b)&i2LSPVCWpI=`(G_NE$M*Hwcv1spdN^Hv-z4N(N3{_Vcoc)|ty z!32y$Rz%Kn;C?PPCZ)h0spQqXsT|i0;h|MAIoZC$fQ5xKT}T8ALAXYCq3T*6ddUFO zpl@a(LK~xdD@-wWBWDL7^?p+BJ)adoSy5@3%IfEVz1!pYv}Cte8F8r^Ep1W@``WeiCrwBq7r*r1j@A?5n zk~UPb{B>pTuTBIiEQ~$jiV!SuCzliTgFU5N<#m_C5~b2{I5eQ0O&$xDwDHW)7u#N+ zHadpW4xvf4Z&^0#6{Du9wF=dy)hE~WTisU zYa`X7{`Qc{Dc{mYc|`BKm5?466(8vJ+%VRD<0%7+vS8xO$`I;_%GFlB)An>pp-sfa zqB7J)HDclIj7#T=nBw9^7hFYF`v?S7k08|ra4^uZAGNbjP7>rTSyR(JPz z2Q607n8)cQ%2s=^lJ}0YvbXmt?H1-YO&>ggiMyT+9m&_>N#)re#!Q^qcpfX^kSECk z;a~Jg)YjCZy{E)aF!1Mx%1_iwdo+}abvG% zy?-SC+g{_}mesm=3$nU#?n*H2%G`kxvK(w#-5+AI&%Jf$zY{3CT5ilEx!)?tguVti zsy4i9h8xnvWx-WPEKj4OCr^OV5RVm$OKa=;vuq;$Y`yg_^^OFM5-3g8+HhCp5!S8< z(XGLc{(PXRA9rNAr@rZG$iFkT^c4aQ5-hq9^jBD`ka;?;9hj7>6oQup{q zm+QVsv_aY%QbA8d3aVN~pMSA4C>5)$8q|TCqBpSeB@$WpeWw&rm?(4E^kJ%Rts%fw zihEA9!#N2l(8X#hjm9KPN&%S&Pw~d^5C2CB2 z(Y6MZ@udJ6kiBx60En1txkjL06sLiXMcKKgsjS~&+BTk*U;mOZQ#oIWquW^roi}V?U{H2?2eQxxW>~l$&8yj9c=Y9EOP(+W zo0Wz-AX-fBU7L@Z6b*Pq%Q&aK*4a*$gH)q}Jal;VS$t8kP`ZSA8)9;@ zu-gP(6De#QTr|l>K4yEyqxMq_y#f)NEX?t^(3Lp zh=$*sUPzc|p5&BOY{^S^A$z&K6fehZMth)YWgzwb6{XY)XEy{=P|{ji_=v{}2Eob3 zX&^Z{FE1yARpK^f&_anums4p0hEF@=edZ1sd%RVgk3O-v7kf~T-;5C+7`g1vXZYvy zyt~^8Bzykbat`$$A==-v&R>Mz-T$yj{zdyT%ClvOI~2>M{G+I)Q|Ex_!k6{zYKrR2 z$*m!!d#ySb?Fu`p?`I(9KPU)vr5O2?EZZ^2-GR`dS_Mv?|CPtVK2b}4%lQWk%X;uF zjTG5eXK^X{Sa_z3(ELO*YHf47aXTJ4B{lb(N{!{onEOEV4OB)B=Xa@o0aE~u02SNb zXps*CA=Ym+l3&V*2KOF{a)cq)Bb^s|W9)R0EoY>L^@?*AcUA0up2aVKvNO+|vhs8m zCbz>96VE#;2}uF}3gW6B`S#GAGOvm9CsYDfIksP+IrIPE#4)BMzTF92ax{#*WX&s*~sPR8Zx;>Kgi-2i9P+0$p zmVG)AY2)W)7R?=UYctEA^7NNO_+=$Q1r`QBnh>Zpl$KwyVj8odRmal5h_B22j zA%*=Gcq_@W-)G*v`4Xaww|e|hPB7vLXMeCp*67`ZOG>c}UgLI`r?WLx>5Xe%EE&%q z`DSZ;)Cb5qb)((QQWz6ka|-WF(_}{MTOO?91U%3AVKIZruy{mtaG7*$Z>*W9_gjvR zMcY|9_E%pf(rt$eHcyDj_{W%{Ux*M_3S~L-&aO%+Yg9M)V{pP9`mLaE?veI%qbRXF z1Hhc(hr6asXjplSJibcy2$NoydCVsHCxnAL2vB6;W|WcjqnY2bGXBV{6E`)`fwDlcf`i`v@ME`ITPV> zFFX^yJu2&-%z$*@--9ZzG;QaaC;E728IVycS@7={v9G^p<>z)r29a2QQvMpZJ{Rqu z6tReMoeUQt6Dy_S@_mU)=r4I@2qk)|;IZ^`*L~2CZpON6@xj@0larH)rSecJaH?QKLBG(O=vTA%7p<_XnHrx6_5t0fIb-Y^5|%ka| zo2C8540s>KA7GjW$=e=cS51-hj%fspJpz6aDE+O>Il7cyU>?jhb1GP@UgMT)E1QJ& znn8!8CV*djN{*zRM6@q9c9RNzXfpj(2+alkGi$M~8?s@fg^%%TtF0r_0i`(A6K^hZ*#FRolT0&s=r2 zR75R41qyrL0bO{L!7dt>FmzQJcQwft8Yib8dxxvio6RI3Q(HKW$)iFzUeJo17vJ@1 zfr+T4%AE8Zuy??RUd+*8zX#jJg4w~ZvD&+k0Ex0t$^s2jKMjK*CeWVveC?64j!4p; zpC5sQd8e+9F1}0eH8A=5<^AYg`%@`)3NLlfXGtD>cc^-{&D~%J?Qz;KoZp^2Jh+Pu)ZM<#b!bZIaNl$)W4{2}&VGLO ze?G7=A`ufe>wGEuFzPOQH<4V?YTMmryEDS&W2W0XrOVNP_!j<^Ih4ZFSk1#N*#}FYB$R#r}dtt{m(lT9Kgtvn>N9H zZ;HteXwF+Ch{YzZ8?G{BmB>PkDpPP$4dh#XA0LVMQM1hfA#wQ*1$ji!)noVUfESTt z(@!5MNXc4a+QK=vkRZbHDh1^PFN5A>nrs%@IlH{1F-46xXLpO8-(%@2^EJQlennqn zPq6;P8P?#)y7*>zh?-Gmwuv)@XWQML)U#fh>D}YJ7vPQOb)JB^AcI%U)+u#`{GmTz7Y0_5Of4A0oL}7Qd=JGA!8`%U*f7q*6k$BB#10-Gu!B!%bLG)Z_R^AtK#u zmGlchc2^-ir0q}gd>t=>R0I$Nz}$xp%$T2o>YKFhytKc!Ec-uiy)cp%W;F~+$tfN0 z1g1d=^xj%m>9=O-W?EQPE{LL>j9;I?>bU@Nvs6#E@BQ_0D^E=4|?nn&y|s!Dg9ko+cZImm|%n*2U@Fll!XXRhQ?3;7(As z461G$3*_AkV2}!Mvx26$2Xy<7EbT3nEV~dBN_)n4_ZzHbtSRZd~~W`uHD!nkICG2%@WEMg+GFnbPrbNKn+u6Q%Ok32vViqvhN}hd|BXU z_CKa9eg$>^kRL=UPs{MZFr2#D&e> z2N<+Bs-N0fEmhCs?pwEdCjW!uKNbGZNP}$!<-t(JF~FOTNXV9^i&**==>KjN&SY6E zE}ZIbF#iI1ei~skIpwfrJj;#5GaZ>IVnd9RWx4YiGn2M&s&LG??^sl?Y_>=Z-Dd8i z=P4NAr$@P1%C7UHcL~-e0YjO`k1x?1JB3{Ji&7n*r+-XexSG8GeQ4KbMz5E)!zIeaYS4Di&7m;bbqcAi)M&YE-lZWWHiGz+RktJz~IVp|l9S zzdEm(#&;?DMesXLHHMS+PCW4;7kcY;L+{}Fz#{^@D*nxhK}+cNP0@n?xSHb+Pbln! zJC+{Cu!S^b2r_OYKP97JG^Ok_IvCadvCgWeswO^27;y3s?aIaYlRMU!23zOhzu3h(sfHxi@h{`dj1DA*c5T;}Z zYi0V=_o8bI3FUW)#yAsJTQRV2A1<^I3A6LmOS2r;&v5S6Qa&iwUd@}~PS(}Fymzf2 zZ(F&mKDrQ3AnB6p{Ftn8?`UhwPdB6FQ6|wW7CDGN%*WdL3M~DHn|sEw+F_^ zJogR;_@C=`g!)z=E^JJv&t4iS110zZMBFe|lYfRB00xYy7f}C;3KTtN13OWE$P!>9 zM!voHj6edIe%7JuJ{V9YsbsaG{i0UsYPFSq=>;U`=$3?@LhXuI=`#Ig_?GS4xWY5Cu6(VrN^@Vywr}-!c_AyWz3lX}UeI=5Z z_?}f;(WCA$%gSsPqz1tU5c(ju*y>Mka&`sN^eo>9IYd5P@QhDUNNF#}aPaBf_x{YdX4x_~*lBB7U(S_%DGBND|cpZ9!q@Bl2)>Ll_ncq-}4Q;n7!5U@T2&JM=qRvMV?V532sivcYvXyZY)FXjle&I5{ zm%?VjnfCM2ZWT2(7jMB@>nGaaCL@NA9LMQ_=GGJX0pyQ*H5E8yz#A6FlenO)?zwyU4*Z9`nwW zW8mdBf`@6G#JPO?hxP^3Xi7!U+WRn?C&Q^(6Ki5L@mLx=_Oh++8r@Wxf_%78Gr{$^ z-Yz>4LE+5bwQ@pci{!kubew@Ubp_smKjr5sp74+FeSFY2D^Yjl!IcN*Ivo+JQMp=Q zDq8|(?3iynR>_!;z;wnqx@H^AE=gx;)^^t)+tjT(uTQUfL_ul~V?TO4uXVt-tZ2}H zGFJQX2 zfOt=reQQOi$5pM4GUpKFb_+BkWsH0KU)S{g>*CFS{aA>3*$keJFo#TU9HK2yxb6}% zny&iJVe&c~v)g<}leFOAf!NkWB7$e4AQUH>qs;bZThC&AT5=ysl6I9>*sycJYUaST z2kK`>uEpX#(Q#TI!!mQ(^`}0SjBaEY(wt}P)M^RZLi5_qI3IuXl;c>NK=eNZ*|kue z*c~5ElWmB*T0c!1uL2!I~=`Z+BB&Oi6RgC=ICtNbRN_j7k5G0_PwELJNbQ396#w& z>^49`+WtM%|Rn08j+^>K^i z&6IM3DZ?)PO+?i75`p7&_roREtF#RP$dvOySEj<{mWU%_Qx~@o&>0fv)1#B)8ah{f zSW%I|639d&(tya)NO>eSGbVJZl>sUd>f}XUK4lyUBh~n*6ZKv-|TSm2^bZfpw2-{B_6K1;|g2TDS~9 z_>QwEaMkW_7f1i)Klf@>PMtSJvFi%8;+~FCa4qes?y1 zt!c+C^@@J|j$v<9ZJu!#Z9d+4{YFGyUP1(jE^d8l)NXCrSe$IKq2eSKUFk@qri@j- zqjy@~P=A>38Zjo^b1yi3%LkSGHujrgbbD`2uz)eoJ=1mg>q{o{%)+=Ak(wX}m!c^Kve3o!+$5ynTPYD&p*7;pIO4#XXJg4bQJhwby99Fzd{e zhfZe_b(W=rvy-j})3T4`#0aqWl!;Dj{Hl*Oj4hXntzBn>dBDN7(M_BkV{^p6`rGGM zaB^)NW^{boJWk(ajN+T%L0D9D;v5JUUo`Y@M}Caq23ztvS#&M7fG$slg#@0S(>+Ag z0!mr`t#+?1LBxUGX4}9hOlEn8^L8bU#0ch%Y8JYPs8*ODp{&A4U+};BrE30t&vxI= zQcRQfR8-9HG-R4eU*_Vm9tEqqHy?k!T7p^}qO44G^4N2BBwejroUOPbY)t!$+h3jM zwBuhkXz+|H2_%u?pY4!OQIkI3WU1mQ>68zPQSoFh(JU9((&|2ZhD3@VXIjyNlCiF# zC|&WPFM~h-bfSbgaaOZx2m2f8xJx%FueHk_l!Hfz^#|R>RwWm<9YL>=9HeBj_?z6J z+_UWg-K!TShFbhTwgb+{-&zyRUbddGo`A8q{Ap(qb!G*}9WH-4eSiOo|F+Po;_ktS zGpzk6)?@AVvkE`5_QDOKi?G|Rr0=rT>^UN~Hb&dHa@*b7u0q;nm6mw6r(+4@O;x5# zOUDz#eT~5*Dn_VyD$KhR<8OHRNo&^a?u@$`=9l=R4VQ9xZH^Z!bZ2F&S#3QCq}^;U z?hT}a+L&0vK$-o;dPMdurcjckD-6pk4L-BbgCwCDR&}X6G`%0%4P+m?{mTpgejV?> zt^)qWYq(EtccWd@x$3B>Cvmlb>-9ZeK&(1CUS0URTV?cU*Ibrz#snl#OinE@F{b%) zM1|gt->H3{@XpB3q+Set|6-0`Z#Vy-tUl5AP=*Q% z(6jP!Sd9*y;le?(S|HcMts%2#mPePWLmkO+PX}|RT1=dKnnFp;_+>3Eq#NPI7P;)# zk()VXZ$?Wq38qBKGdD=rL+8w}{3P0?+zyg3R_fww8Qw7z3hxIfFOn7U|KoFf`M@W- zE3VAKM7y*i=@CV!D`NAZuF=Zn`Ai+{30Rw+nXWv4sDoFy$#8MWyTRkGy^+d3l)jw0}X_sFbzjS(qf+ zD)*KDy^*b2RM>C zyB0S)JQ-|^M`0-qL0mA~nm+d0Y%@7cw^*7)f@~O$s}VcgU%YUQVk~p zTOx%@Giy2s-4fJCgU>XNiEL00y*4mp4t~_&np<8mequ1E$}hfU)R+cR{o}&S|I_+j zrz3GZZGaUtUHVDzaVFmN0`0Z%TJ#OS+ZlQU*cVx&*ykLi5M|IHsa1N+6K3}cRPZ@G zd_10yKd#lDJHrbU(OAOOqsek%gC63&5enxEWP9@fDgIh|o~_UK&VAs*Vo@B&v2g=v?y#DI-4cn1MD z^n7p|6MGT?SCOwGBG5lShcL@mA*jQwbsg5OKBTS8JPNNk(>EM}=55%O8YJ7Ir0Zdl z#O@kuTV&EZ31!Xqt@lX+!u!hI&o^VuY!J2`#kZ4suCAY@)wy3b1D z?emg52eg#+XL%?%NTBae+!sk|lD)ch{^|NVH@A8aOSP`VLY#EzP;-;1afgrjJJyhq zTw}Ie8n~m4rKYa$SusMsc{z24Kwugl7M5=LtenRjnGj!0C(|a0W#Li<*Md}>lKytj zCtmh9n17Srul?B9a8yo=t#7Q?Q+}1@X+=_kA5WBfxlhbCBI~Z!o*Io`A9<$i+t(3) zF;%Bd9;XkEot3mtSI^MxXu^hVmQ}86U#=tplL@x0q1qXf&gM}{&O9~$jNpO*A{jvN3wcd{pi0o6bm_D%=_7m>3CT2 zl!^<$Z8^P`8dZnX?5y=gS>(GVoy`Mf<0#?2G37-paIv>FJWQKDXVWm_?_u17E*kpm zl+G1=T*FF*nJI7NLGi_QX$^^_I+MeX2oV;ss_$c>13M+9`^qg|K84*{snf6LTdA9O zIT_QiyS)?h910qt`e~~EXXp6aTV4|)#U>n=$x@m^l%Bo(j+2v@Ek#~wkRo8So5LaB zU7IbmU1;+%JN{A3q5c8{h(ATXfVz+5Ti_w>YG)1oSjkmI$hJ0_2Ul@C9q;k*&l-K- zXFFmKT;3cU`=ywxO;5Nu$Eu>VhH%l~aWPNj{vgXS&x5QG2wnDe{b@1Bt?pWWmg)M* z<#RsYmIsOTW=6;yZ;YO?ddt2BGZjShs(6|n@qgDA<`?FP;xpA)mph(`4v4+wz-)7H z@XV5ToX7OrhLAI;TfZ0L7`{%kQm6Rh*0n-P@khcBnA50(6KRo)&4(+N@lFHR4cdn!xv-sZ{jZ(8z z{UhV?oAYtUpFJ-u_YU0XnEzPBgMzE-?0)tc)$w9J{1F9l6fZ}vd&p?)-EYj;5MFy0 z!)Hsn>080tTdeR0y%_i0$Gu6-IlO&n=%8n-mDZOFKh zRVA11$@*0UG)O12J!B@@HLB1E86F_cBEa_QE?Kn;E3z`ZAT0u=!dg1!H>U-o_|#o3 zTpIMZ5;zdP8sktdWUyZO$T?=5Sxxvp;1yJ~TEqHtWb5-bWRYxDmTOH)D*8ZNAMFDE z3>Hxz>~1uc3QsY@4J&Gy;4eGt|72LctKNpO`a@SMU`#L`=*vI(KKFU7Q%FM0#R7ga z1vT`adc{9ECQ3^n_CVYI(*OP+qr5*B=B`Kxc;oP39Opl;=r5xD(+B-&(ZE|U;&0uq zbm!N%CH`mc|I;4=Oe;no^HR#onco(o|Gl2{k68eJtn45CO<*vgo5d^+3E4l5y8gX} zCkD5XY-P??`vC3x_pATt$-N#E_v^#*m#@74seAqRCrGQg-I`JqCO263l{}t^&+phnAoZx@9)_+arT&4xwb_!&2w-1gzk&V z*wm^tk;8+YT9%DLwRRLF$2(muEBa=9bPF7qQeEAhlb0T1dYBm{lHZjZAzTmGh0Fur z`+hQshsaWX$pflSPD^8d6rcXvA$6a}d#3bRlZfNt{ z{0^_Q1lTt*Te=PEr4rq=A4o=1PBwH7J|hiu^sus->(`kY z@%oa(F~ggXPWc6>y;fa*?uagCJQb{2WdqGjGbBZ5_D;0MaJy~w@|Btk{4vTW@!o~$@BoqMwDN#^TS{g+JC8ZmbZlp$H2vJc9QKVZ5>24T61VlPV zVi-Vb7`hqi+v7Q&8Ok+$82LA1>}MJmGPpJQu_?KPBKdkA#d@g&hEnMmc-!a3oHvWcG zCx4K|xGVY~op@r1#kk=W0cP=78e1mk@@BZ=Kj*N@Ysw-(g{!utBk@)-XJhTrQ;sPcsS|jRXdq~bt`sxM}Cb6>pziE_r^`M%v^nXFe0xp}f+?qW3O(78P zwc;T9;I{bRJSzv4G^W=%xRLXN%hLS9ez%5csvCme`z%UT}pPe zMeD1J;bz~gp;rWbG_5-U6|F^OB7=9U3R*3i^P?3%w&pN|b>01BF`5+C)Berf=uVc^ zz-Vs(^1Iyk_apA0^^}=!eRGz`1(us=-lh0I6gr%8ptAXTqdW8*fJ>sh0LHS+(=KXb zr|r(b4RFdKah;Xo^;*TJJvHpBx6SGcAMKxbpwa2M)f0GV5&fGrS$ryS%5|j4 zHS~Cr4Mi+cnO(}uULt0h-1y`3H^67;bweufQhu?7UrqGa>YeBvOm=8+@SW(b^sNJ< zH&UUuFHws*5rmz>jpAB^@g3QWG|71T6h^I!AY~26J`V+qXPJn{Rq&C`9Cc1C+ji)y zPvG*UDEAa3icgc}pGBDrL_k;^KjF=jnaSlvBY5rtohqrkURKbR6QRrMEB@^7hh6&7F$k5kH`=RSV? zjqNXE7bCTiT}e4w%%AQKP1tNLcs1Jn0kZWqiTz*&jQ70aNGPx>41H=hOSS9d=GbI$ zh16zvd>L)nwfo7UrT*1>I#%&*4)Ck z%gMEz7uID?M9&S#B3nf2dz8q4Gc9O!8b_f>sKFPf5hg$QU%coU){7oppu+>}0UQ8u z*;yh<$jlSpKD=&>v5?|! zkKeYAS}8rtZrAB!LOdVOPs%KK07GWdi4(VLZ6a27w)2y%gjx2+Z3at2Fs3Gcrft&d3&*QncY@@(i_$bdp+X&#f6icT9 zr2Qk->W2|mf$ zbVK_mZldL)-ezr?=E+`GoQB{rSu*?I!Cu+FX86Zfl-z+iU?2BqW**f7J`67(oB9~X zk%ZC%(7Kx32&ls2^^=1->tNI4UM3XUZiCyL07nM@+$QP9*X)pFc8HTrBmmFSP&&Lr z@Q~)S*d6n=Sm?tF+^H51SU@bKcp(({>qT4v0n+jj1tC1DW!uX6*Nap4#c3!IY)>^j zG;d@20kF6%srv4#3+Sz_t?kke;Jzr=0N=d;dfZZ7s-2&uHal4+D^JZ!G|1ah{4Y7_ zSzPyhn!gqy;-(qARiuX=*Invj=Xu4{3|RNT#tobrCJHMOw#NN}>jh>1Lw8WU8ko4w zO0o6Kj~nSA+VT+gvOA;F37-AUR7zZ+EKn;gT^H+-6eK!-3p^86EnBMp_m!r;1$1Ek z%!i(DKbE0{MCe(4obo|1N9nNj6)+JosN>@=71DanPe_S@$O6DYOjK~xuS@yg!fT#h zBLhy!bl1q=srd%AV%JrD7@MU<#%0R8VCnBcKk&_Rf&2G;&BOLTP@sB@e;Lovh_H|G zOWDik^zV8sVo@%T`Y|%bZw7U6+_nnN{S1<2#WRr>o3`~-bI!6(ro$s)1z$p$Q%3jy zGn*nnXiJ4I{UF=T!~&0}+Glf$m~fEz?~BEdW9c{XqNyf*D-$Wv|3kp0Bnk&$*(9d3 zbsjvTk3@m6ZuXuV9M<2lhIjR;>}4&qtq8x&YMeDe;4P2{{AeZrx0U|I)zs;+IN16q zmG;LY(#0FD81&&LXtM?fqOzzH1-clAWsQv7pmUdE={$cM7|BgNTkIA58`=K+D)24k zT4o5>OWr@Nr2qxm*E#7&4%xcG!t?Mw&ADw4d|u^0XsZy~&fo+%+*Nw-u~Z@fJI zE}rjM;H#u;VgFnvjC3LBJs~D|cDvMEKsbRCTB>ximR_0yD_}=C*-{?Wl@@kj+;s#3 zWs`9+sSDrSm0PXPy^T$Xsouv24JK84%p5JWN~_RxjK29Cu@|$D2d6+_BMIIOWd5m; zoZoFzmgz^=gw)HSja{DR#qCS-6Ku6ugVRxvb@ujKM8!x+oPgb36zH2JHK%VrXw?n0 zaZn{saSL8}HC|IKXP2Ani=YT&oumObGHh0(f&aeGCW9QR-PW}|o3l~s2H@*H4%ue} zWG!?-?){3{xKYiR;{=}DKRJI#kY9D|ee3%y51zOX@~L&$2+e`QphY3b!;s-tNw@F3 z29hMQV`nhi2&Wqo<+IcQoiQ?{*(Gu_);DtAdHyS=wa~7i!M@&zY3ACxoiERvOdK4Z zp2EeU-dlj1Mx?!@%i0A>NW?C8O%G!=i>dF*$I{oc>^m}kNLOt=W|zPqYu>xu{Hvkw zD@)tKFE!8kKwU4#d3B8FKYuAzpF}rYRAmGfGOFW^#l?M4Lp(@WJ?8R|DB$DT{vzmv z$Ehn@c(hgHn*ES4XW3^vG>Qk3EzYICv$n$IwY6iyBw$Qz5H~zzFH>J&l=JQH!ohb# z+&#OdntLF$n_={lq(wZbP8=Krra8jcDNE`}i~!f`Rj%rSt)zDZzq(H9XFO0GSO%NLi0N1oSuWcbv%Y4V?|_lMK5KYAitJrAd0P*hS-O|2cx02m6@HAky|bOoy$;*-Kc!&1yt@GVbV7#@$6hWP8z4GtaE^L5w!kra$%ZG3;*$AM&xkU{e#SprdRP$m@9OLo?8Sq)|z^E*ds;7 zg+IKRU@3Qgg%Q5@#Qo^)89#}{)hGUE=y3jiYjpY49_p7s(?+>`}n}l zRWanqIp06DZ{OnmKrQ9fB!Fz#Kp z&OOkv(w1f3D+{q|97-A7SXi##D4eL(bkb|El7}Z^B$nr(~?H!CL6K&0%B1$vamRwS^Jt9ov*##^O&*rH`(5Mg~nHYQm35sZG-&Z4hg(c zj}i1*b=#8a|Dso}uD$fBY(G5)_p!5Q2X+4tdl8ly-YR&3sN zXBK4z#oygstG+KLN?&e5y{KRPgbv#E5iF~1!g)OG`u|eg%Ra)}5?`}*Qvp)n%2MCs zquPD}l=S}i{Q{|@R&p~RZ^p;R8)d6f@XAsL!?DEZyOsVH8#x6JpsQEO3SNPA(0*W@ z^{c`BmFxrzO0IvV@(++hk%Ciyqx?8ftl)X8vjiG5jOB&$d26;ClP57o0&)1=gQ(D~ zw9)ZoiN1t$NC{t6*jkd@#-?V>xQf95J>_BV3X@o`%yiy>Zj=V6Qff8p<@M_Qvb<_4 z!AErQvD8PfXLk1KHD3?t`;_m|$L1DZkdnT^8k033c)?b-$ZCZ#gdL8`y>~6@3IM;7 zaM2IcFWbIf&wB!xt=xca-m|i1+W1>doyzjaj{+8cYH(5dJ^lDk<*s9Man4J-%yh$|4q?$Qbnbyo*t!}m|gTi zEnh8ET1g3{X|{|M-kL^O6$84sgZXoQjn`DnVyrQ;l|omm2p%7q)rufgAb~{+_=BcA7HPP!jzL zG0@|;BM44S(^LI^@mc#2g#6GMJCof?bafz3hjM zc9DFBl}_7Q1MY*!1_NkisAkAPQx9PHfwup6iZ_nw{3S)*LP0F^z;t*q zA-vs+RkqTC{E!p!bQ8hJe9H58)TU;OV0x*=FK3;aaaG;Xglxt7?&Wi?Q=g{oNy-s& z!Q>hE3%pVHMPsCAYK?gvH9=S^AzdI-?c%kyyd)48EM&jZ8>K5}g%qf+=&8G<5rixY z%fNMu6qYCI_psMmDVvxabdbXssCP*U(I-XeJ@k`jd83|RCVz|Wv>PJqY&v@Q!Svd?K8z~{qe{K|As^={)8m9NY!BB3%Wt$Th=k{u-w4v8Xo*WUp&w_(Mc^JKreQ60r_KSLP|?Q zQagOu?s|dM*ZlnK=xB_%t>Z^3MD!C`X^=K=+&5?VnKh>h;cXdgf&3K<$L@-Sro_D- zH)5{_1V~%t+^qSaS*nWmKDrlB(A;zz2br(%e zx=%P#DMB&{7F>_$>%LzoV?sB-UpZwAt$K%sr!uxoZpUmIuZ7b|{U&q@{6wrpTVQK& z$IJttorA*?90R@hxxlzKy|#8NUfO$WVbL?R{x@U-_^kC#)~;ea?Pc66dYK?&#z2Bi z+3ebd1kg64DK_^kHY@69w5t`O17jAe1fGHh`7Rj%WY+4@$3B4 zNEcWZL~xae>%iI8!_(VncnHW$c6JO>YSy;lrlxjO(Z4oy{;5rZlY+yTpxU;9HW3xvlr5Fx3^{;n_K&*`#-cp}FeOf?5 z!rrmOZC(|v8RRbNG=3F(#wHbq>KCcq@zS^K*&+XY`M*R7B}?Eg6s3?nvEqLy-Q!zq zt>bgj!sMK>vN{{d22M#tEpK(w`dF3knl7#DEFJ?WT6|+Y{#zcRzKEq&FlRYSj~OLA zxxc@lXJCMm_Ld9I3=a-|nd?eOg4z`o5G=HQeMZe8-2?@6h|^$<3TdGdz`qHcl<6u?qAHGmqQ6_&lD`4)GohF&dT#lcrK z9aeDp;9k~O1>gev7nSb({`a$2WGxzf7X1lL_x_lU>I|WSg`BCi%*_>194&w?nE)AWy%-ga5O8FnKOEF7C~nH!Tc& zh7}HP0DRRBvvV{YAXe`I*lrG{ph``!ctG-p=gJTWa=CU*z9je74^1`Ra%KFTDYqHV zv-{HaCdALTzE`aUfciGp`R(W;r!^fF(H>9Zez)`e(SPXH4ccCGHb&< zdE-JEgWc@Y9H2a|Us&~|K=hld@RgHwP<~;LxPG%LC??BNh<+3AJ8!v)P;}Aaf?TFI zV{TJTJ{haNH7r||kIlxsSdMWS=v`g6hlF{fIU(Xp{4uiek! zP|ewez7GN-R>@ik@o!sO@9f%T{s!{^>v4Hg>0S)ScV@^@33e-*T$QCk%!eCA@JT}k zN7`Je4wxI9t2y&1iUO=Ik__o6VX3WKLGDN0?9`3j zOYEY2>ra5VN!e@P(6fYqS?De|mO%@Xi*P3a-v*zjD2?d@$kFfIB?MHDgPzT2B7*DXZ# z)9!wCo>?|fB9G7J_AvJx+{vzG+{I2k3r?hZz|Cu1@kTE_=rL0>eHG7LLz--X z`8W49`1MJGvx`$s5peB}Dx*ZjcV*iqotb1!dS2B~*~Gwd2<{E@;iChrfpLP?Yi9-VhyBxO#n@Ep7eHoWcu3OLBfR5?rhI1W=f2 z|4~jJaE}=tk_%*ir&#X_0|>Hhiv>}O!t=U*zLMVqKwIZLG&X0+u7B%wZXW2t4FnyHQeWWm}p{!=gK$=%yw0+)Szc3n}P%c1=(VFjqi0-*;gjm z`b7T;)817COq_y(kpwWq(ZcX?bPV*wZ4noLaA>%Hb7wkT+@tZl{C2M@Fr`vAkHY*wJkr#%i&_m;|Ts^W_U zQjz+7`BK!Px1*q@kJ56GP0ceJu|&W0A{Ndl>WB#;Uibo*o3gv>fnIX5xr(HYaw*ugPS z%AFPNEoXnb1}-!MMP$QEFa#H%UxdnSSPGM>MLodg`g~wU?C>=|n=+QeFBPx1jsB-6 z@_%{#ENiN$ybOo~*4Mq8H{FolE#6Tdt)Ec{){0c<7xHeWU5h6Im`A;ccGwA(HKp)g z`eccwexFP&-B}i!rx0Hq^BY~QXN+@Xywt%w%JzDq&qtdg$W8)FfDNp?r+A7bl@TGa zcN)+2=2e3YE83q|C{8q0k4Bhu*f9Xg3dM^tTgVR4T#;91Gb466{vHw_>j`+J(t{$f zFZD0^%|AI0F0V_LSN;N)B)fwxZ&JK5mVIgsuMl&Sd!eQ({i*@@qx5p@dbLf0PXOH* z++&LMq|!q>t1=!(H<1<71lJNK7{fOamsbHG1MJUg&kPe_EUcw@4K3$ z@<5GHIC5pm?Sre65GMxH`}c2+vg6}`zIYN(6UR@YM*SjAJ-P3w5f#R`#&B_Va}^mC zeRsEgKHPN~CF&V4Hh^y0jLCvB2f{Ke$42MMlxx7OqOJ!I+DF0GMH~OdNj|5H1jP&4 zE-E$2bwV7Jy*#9}prGJ=ThHXLfiv|GZ+iXlJ{jjJwrPyODZ-b$mjYy)@H`zIN(Jf{ zx-LV++&z_dn8i7kbp?{2+qrevr;4(|AbW|vQxd^5^I5#r31yi;43UPAa!vLBte;iL z320$iH#x;=w@q7pHx8?50U>@a43uKZ*$`o1F5z<})my4KOTp{R%j zlV_XTb5JriUn&GvDr)Xgn(i}d;A8^{A$3L2Opia>D5b2~5Z+d~PYTqfHVUd}O1j8P z?{F})`#N4;A)g@!;E5VgFetwVW&s{BmKU8 z7B}7liHD;{)IPcGaGG5oJP?q|;{B_U(I8xS2x_19v{x}c*iP^Jme{T;#5XWkD=Hm% z{pMWh3cKV$f<%1hZpDPYr@)m92>qtpBUm#1K(6!DPm{;PPnK|PS{$<8aoR11c&lIl znLnIhxb%EGUZ+qD(Qq<`-pf{KjFI* zR54Z+4}J#9f5GQnMC0USYUlhK$?Dvkm93q@p`81rHxW})5A4q)5C{!N+~f@&IXO82 zQBmvi`~yXv$jC?m{^AQ3Q8l~+zEEg=S$VmoL6<9Nghm9wj-l{Yo%SsQb+WoH8sCI` zL;D1@{20VqWfY{{<-|8@MrOYHBj&>I*k%_-9={=u8*rDqCV$$w6d#$XwcBZ@zB;$V zPBoLz89itT3o#(--&WTiKQmwZN@C{B&v_>u{Z#dvcJ!gOJ$SQ=%^98}yNh&a%s}!y z)lU@+4%Is}ESm8`%Gvtv3>Gs|m*dhad$$|8WCIG|L1Mod#MS$O*2!M%S;>wQb^3n$ zG5#YtK7bAL+8MFVM=3CQ-4>USaI<48@88?2S{keDF}V2h_DnPLv5OtGn9F3q*6wZ= zPfvyH>6bEFX%v>ZpTvKx1wpT$xp{)`X5-zvU6~0zyuyaF&6QhvbfNCz7+1U1KY-@IhAz}}X!UOy+!TQh_)J)tIX|0}j5sNa^*_ji@vxJU}< zFqJ~VZ55ssLK%uJP$JY~f@^2I)nBj}*H4TOPAqtxatET}x-gqv^jVn| zQ}fwL4|JXB@U{rDtYXRp&c=1hfedKjD;KMv!`q6go;vZLY#D+9@SIp4tiCu~|M`|j zYWyP`A#pD3e7o$WGy~g^rve0XH4JQu@cjGL1E9mY`%Mto(T_l~re+3W_&!{Zi3ed> zAcX)`%Q_dGe;4LPpr z0MbOs?Lp1q_dcujx&;l#-ao39)Z2J9DyiuNi;J%(#(j^LK5h%9i%KZ4Cz${qjG!9T z!y5_JJ?-XUNP@dh^b~EECu>YLJd_ZRZ8?a_gouho7UmC`8Fjrg1l&K*wnzV{I>%r1 z+70CFhgOlFIf1M#(L(tGBQyyM$fyXDhI6TCm+SXsaiHI{g4`9dtdi;%Jh;K0D1=n_ z=fS+BtWi8~6_A(Ub664n{EUC92}+B=&G{ZBNv6u@MSe%#)h<&{u(pf8K;RX+#fXFV z_CFXivj2%O8)QPueZVqiU*4g=r80F*ZYOM-Vi_}&^B)Ot|BxWClm=LJ3~88}@~wKq zYx7Xm)nZ-;%a!@I$3g#G=+7Dr+<`1Vo<`{`xk~4G^U9^uI7+Eal6s50AiW~NZNUzR za@+2FuLL*j7t+u4Gu;03=kLNA4-e}SB_Q4OJ)k&AFE7`=^yY=I|3YtC2_47jn?J1J zKmT_X8kp&llobhD>Ob^2>9UUHqMh9IO6Of6Wnlq;pGXM~iUa3(^(5jf-Z1{H4~~OJ z!m~D);QR`dPb1ZCS=(L+54e5`;IPiUZu_q{nTD?+s7T}OU-mix9O(J>CcHk}7JLxM z8GApKnO+SXy(O$%``hyj0BR@9!NC>!Fy0Y&fW%89rPl2p``nVgdqw5?nwpV9qN0Wa zq7#olT$FsQPD4X81M2P)dw79wywyLP>@T+;c#5cQRY_)J%N4ku*IbBH>F5F9&SNg9 zKVQnlb;_mxV9YSbH%_!Mq5P-UzPob{O-rK%2QonV4ynE&(TVN=j~Ic=H6@s zg-wa4TQiyHjaqvLhj-D@G<3|&F>DIql&R=1*MI*AqIV6lKp+&+UVQl4Ej#==eFBxh zNc3XgwG+Qb$6P1ookT~pA9ot=8vLQYB;lYWd6r&Z4{c8Y+~q-qxr9%FNR@dTxmxX5 zrE}$+up;E)!%wB*biV}z(81q0yMT7sIAi51vhqWSMRNPr#CXWd{ry`j;T31sz`iz{ zF4u!(O>ielADgHYo&C-BSkxs0lO!NmbkSL3WRmdg9BC76*jKSO;FvS^C-OhqhR?3l zuI}Vn6a2wTQYEqSEv1t$>4LFM>vY!f#K0UV3v%B8=61;nC^R%o=Q{-hWm!SWL#+{0 z!6gqkx_e^%p;+19+D$WV`bcmoqwV*Yq!cS5gk2h^X{2cx|ENf1*$5BA4zpETaX7rFt)&A*y3 z31DfBWIN-8AI^cA@%9Zzz*=r<}W*HhnHFPA4d)zbe znx%f(@(|nJs-BCt=VS=`yVw^V*6VIGErWo>djoopSQ9;Tw5ym^7qu zKRJPhmn&9PxWpwQ1)7>QbxpWRv-A7#2!bVFZIY4>@A@}!4}n89hx6a4J9-Dawq~=! zz1FzT8xb6)ilqvaNVsE9{8J>W9}i^Y<|@_H*2d()hlkk>n%@|I zAf=>PK-;}7XE#ShRPS2E(2_*R?^d(X&V=+ZmP3k{=7GY}u!5ZW2_GfDbKa0oNb%E& zSrcyhbTotp@nG{vT1>!p_2EblP?B{Fr`=iuhKYZ2LEy;{&;>!ZU*r5}x!`gY*_$UU z;0M-TRyLb?O8lzsx(HAF{vhvs*P-?CK+g=H%&{t$VxP&%{CsiXqdrnXp619>TNREu znwd_U4b-QP#5qfpxb6d~_k3@DXVaJe*+s z`7Kti8xTLgb;v8g_owT)&Dq=A=T9O6198NBcJdZPlq^R*M9lse+9Gh{FD%3bStr8$ zxA(uh#^}#k(;(_4h7FesFDt@PlvI{HK&{pRbQ^-L12ON1$8H~WzPBelEcp2@FsnQY zz96nAz&Ye)t*}Z?*=iEsm3q;8hMyC72Bn6BtnbWj9+1DX5*%{1 z6VGjd3bo49v2<|AqFYu%nlZ-wbWD=fG`o$b5Pb*6*n<<`1p)AJIx{`2&Kpm8l0#-?IG-o$1$#$|B7Fx&rO^a`=JOI8 zn`?a}acVF+^?*=)qp-TL?ZFN7USIV^!t(92ckvdw;~M0#gBfIwXHDA_BMJ%=Ee9^l zH7=vMa2j-{os<_6jqR9lUNR@K+nt0sXq z!4-(F<=1-uU3UZdzeU>r^BE z%tVH7%3`F;mZUNv+MLV~a!)9F-|@kIxIvJ+k3_--B60aE7+)}@W72xArG+D~Kogaa zgk>9|I9vvv>-3}s8x>CUQu9Y5v;>pwhyio01WgjIAM_Xc;wnW(QQYcrX}g0~YoO4WSC(H zk}pRP8A+>cc!9b9;z0Px4jjq4^DG>@pCo=AYjH>ua%Gr6Idv~i2^22sj$t-C1In{6 zh(8WD>hL6VJu8%E{fJXW*pu!r+MU3my{*tevuS}EV?(K_Ff-_NUdnH(1_)~Cv3z0^ zuxu#zUA4CcY>i{P+f?6~?ANu`4!hc5E0@q2J2?@VNkL3TuX?TKgb|+irif0ag&82s zrNmWmI(#1q){p;~)T4-PC|9gitj1&xyIHf`yw&apxyzhz)#mvqc9Sr(V;QT_ix*SY z(}d%RY61wRc05E9W;DKctIsLldT-9I2uZlho1yP{#2v4vG?rNJnlji^VaxRxbf2C; zIu{;gX{>rFlxbG@AF?dhLp~?Es4PdFDO4%T}X06KArN@>C7e zM_gqv^L!R(x`)Vwh&E1+R~sVKPKMMhz2idOHux5s9)m45qrtlsLXoSh(np%rHqzIQ ziEIeWA$^^t`_UP&ht)I5T^ZrEYLRmkH|Wjmt>1YTx~Zkq+_)Cp6DAf|wc@dYD*d48 z>g(d$K53Mnb+gquvBAM|%fq?N{TS#ZZiB+_`UT1v()yYP7 zmMP8AR_-^)bBX8}8?UkftBKB0ME@k6@?c%mW>NJ#Z5R*x#f`j9w>x9~BE;QYR7J|7 zU{9`0!srLoMl2^bQBNRYj6WU_p7A8;iEsG(triJ}4l63I)WgQ&cFo^QYq4RsM5fL< z0E3yTz3;8~>K_<~*hI{f&%JEgjTMi_-(L0OUs%FUTa+2n^0()~0EdQ;y`1&30&i%0AQhWx5wInyjaC1RXx~K`I>}R$!{i445_i9HzM+c$9d;{u=+dM~ z7vAAXoagb7kF)!tz?+mtJs~Un%uz%5(4b;)yT+1rHh*DBg&-4!+T|1jr|W8OMB=jU zmf!Bw95k?=xSduTRA|WdAUijEL$W0Y2dU5{zw(4@x-KJ4)nHLB)2Up!vsJ#$()!a7 zsbd#=eZ~j=??rc1ptUxJVQJ!V!gL zPo0>*LIx}VwrDIke>}N>pH(Vec(VrZ>|7KHr%bv;;?(*)cj81Nq&+4rq!UV2@QEBm zb_uslQrH7aLb{oyML8J^*!t@;Zwie$Ny{U5#2$MYbQ^n_+ekYWsdxeEifi?I#{vmk z1kxGr8HzOjN9G1%H}bfWt=|mS0?~5V?Sy~Mt~bR*c2xc}t^dhU?FQ^Z(b(OiGjWqG z$odlk`}H0*<8u;v8mC=lTsH4yVX{;hmtRZB?p97zYkQB@Y)1FuT>0}S7qE){q|e!Ees)ZEDDS#^U7=a1o&g}K_W8yT`?E4P8Z0U z)RL#5a50}2V06-R+?7%jX1DgFEqS2=MLclI{^~jC$-T12J#gKJSrX)44yCc0VeZ zz)R zHRLOrZx$<8>>h!}R~^AHd1%iIg7w9tCZp3Hw5!(LUqj?NK2Gn@DtE>-c;nNyoK3`* z-R}oEA#TEUNU++?lyP?E0}QDu!Fa>tsi%j1gwDme>Coc@Q~%&CW8#G}T{|7PX}w3} zVKD7MzI=SSuD{SiEZ7cv!+ixO!*1f;Jk{4YpUKtuDzQ1*&d86RD7zhk{m~BLt6m2f zVeAn7{HMJ<;-@`3t9Az%nwL-O8djd!87NTE6FnjN=k_H%dqlh*Ltd9B9S5@*2fu&FA+%Oem^*S$N66+arV30V z46R0Cx%IL*S>t*cJ^OP9w+k*GzigdT2IBd{FTR9r*5}yM)C3p`Yk87XRk&|QIOV9% zcDWtr)|q#|C{%4^D1PMOSS6pHx8{d*^RTN| z7Ti9a(q=uK+*Du~+1ZHJe_-W)26I%zSN37iWnqAPQ#)Anhg{D<;Prr1Zy(8e(6<$IZ(-Ox*l6NN?6uC|dg4Wg68xBV+`o>ZAsE z-Un8WJaI;NXl4n2gt+-c5^t!$vP(OBIe@G+AxArIGx3CTvr2F=3bfj4T?H$C@VQl& z)_R!7r}m#2(W03{dBG-(%ORSsU+bo)g>`$;q;t6L?9ws9150+($@OpVYaJAIOSX&- z(6o;xfo*)jz@+$`m*CFgmE(wtW(%nQaBl};h1QVI`wkGK;1X=%40f#kpVsDIuRfj%OgUPzc3t{boOlQG=C$wb zMKo>Dn`G#Yeq3xUCD~Kx%o_#QQNQeaGKW(Xvxobe!#M}54W<=Nh{bH0*KM<7$m0rY zeO^Hd>Ah5kk&-JhIfHztVbim$LBAE#zYM?$_Eb1~FkxXS?Dccg+|<(>Ra_{q+cl(@#=-Eypw&uy>LA z1m6iU?qtc)b;so^-r{kg|7K2T9LrrEO#EI-J@md%u0wW|V9a~f7!hu V5L__u1L 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 diff --git a/components/atom/button/assets/screenshot.png b/components/atom/button/assets/screenshot.png deleted file mode 100644 index 4d284efeb6c43ab779f7c8b296eeac51f87cdf40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27509 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 Aga7~l diff --git a/components/atom/helpText/.npmignore b/components/atom/helpText/.npmignore index 83de8b2bf3..c84a79ff92 100644 --- a/components/atom/helpText/.npmignore +++ b/components/atom/helpText/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/atom/label/.npmignore b/components/atom/label/.npmignore index 83de8b2bf3..c84a79ff92 100644 --- a/components/atom/label/.npmignore +++ b/components/atom/label/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/atom/skeleton/.npmignore b/components/atom/skeleton/.npmignore index 83de8b2bf3..c84a79ff92 100644 --- a/components/atom/skeleton/.npmignore +++ b/components/atom/skeleton/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/atom/spinner/.npmignore b/components/atom/spinner/.npmignore index 83de8b2bf3..c84a79ff92 100644 --- a/components/atom/spinner/.npmignore +++ b/components/atom/spinner/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/atom/table/.npmignore b/components/atom/table/.npmignore index 83de8b2bf3..c84a79ff92 100644 --- a/components/atom/table/.npmignore +++ b/components/atom/table/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/atom/table/assets/preview.png b/components/atom/table/assets/preview.png deleted file mode 100644 index 9eec9f4d32aff6682ad110a4dcc3e76d4ca6ee43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38940 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

BP#KB+9$?#!qiY^VEEbb@d8ODILcB>anj(-| zb14uq0l;l6Z0Xuo1|PXc1JQiwn)P>nnrWsXh}iq%{SjK<7;#5}Ne^ZQkD@*t4X2>D z5u?>+J2<8J!ZDJ$TIau^Lbq(SZ5xPT5_P>|{pGd}t`GLY8f7>PN!b}(N_nJ6^#S^O zMkZKK0XDU7t?71AXyKNB4DY{e8|=cfMFQ^?v(O_G7d_o1$(wy)xAXfkpw{$PAqe-h zv!L-!Z4V{Cm-i3nRkudA5$<14OfGjvssY+2`NeC@$MHe{HsbqW;(9++Zh?jt>co?bDuI|7a?vE7*#EgOKjm?}~HxASI}6PkE*toik)JqUO*3^@3h<3bCa zXSXR1<0ug!_5L*8rgxPPY}W4C3!#=6tbVzsIHM+rEe*fLl4G4xF_&|sJwyo;pE7)9IZL|q3!%$CYc{1KNzl_p$& z54@H&Zki~*8`d}>Tjy8ofexRk|C*t1*Fxv!_oexZIHG_BpktCE-<^(;(b8>FLI>u) zS@=`+qrM)tdWJz8Lnk;_RWUuZm5J3e5#68fj^Hvflfx^~Fpz0TQpuYJ!wd+l}3 zJse&^I2m z8geg*npA8ast<1Hl!%VDDG2fCwN71YNVhD)d6Pr@^~z?$E>ZF05Wnx*i4X69!n~<> zOsTmgt@2oQk-WSoAnYE+hO_wAYvdDBg_46`>7B7J|mHtZ>;`y%XuokovVvaKMSt1K}Nj_)S%C0BUyjAZmQNo&3SY^%l_C z^!+$mu>l?0d^2$k)1`o`SipsYzzH7YT8jnR7TEBe+RW8F>U9(Z6LO$r=iM40jx`|h zcDU=nlRaUbo74l+hYVC(Fq!e2za8Z6M(|<*r+Z7E_p#p{J#AA*IWmS?l1RJ8GY;!< zZv=XC5%Y5yLJDG7fVuglZZDhL2IJ=?Oci>I|IUj80*8STUHn{Owv&L zqglPozWD)9=!L|2yFsCbgOrA0*PPRw%Z`V{)niK_! zC_bC4UfBaU*rS)S_!nW)m4$1-J~!ylzAP!XE0Yj56?Pl3Qn1k`frUDl_VDEYnB~$q zWzLLAG&wP&k<%?EQ&*wR>uaDG_}y=z+p6FDA_o-f&{;JUl2n^+x+4m-+(1iV+8b@) zGe;a6T&eC=z`=D1W2$#gPOC3Q2MLgCgR-oQ5oz-=rE~rD$@jEZ;yRe^OZYXP$YCe% zh3I28Mmyq|@shpRgjehwmL_p=c0YIrJC6uw#h1A0bVKzoNNZ?lhKImLc8e_&=JICK z#dCwio!smsir#+fvE}x(RZ^6$v0u%ZNij?M^13`mU{26Q1P>VGPvtO_Y;>(2p!0uX z{S=G$Em$mbDywt5HK>o+V7bbGJ5(SXi;QndPFeEpPX-GmHMX)P9#O)AM!GD|`nCriVA#3cr8fMs3MUlnYpvBgHfS z)PtnHUtB3j)KWbDj!vBd;2T46HPx6C33R!dP9vll(%z!~Q@(=sBM~}C&nM(H2oh|o zKgQ2jlEv1Q@SXyTQhcjElgx}){`fLQdRO4FV;wwIG9yB~*{<|`RRGm<^)uk=(lN6F z?|>rN>Szl64^xtTB)CX{PX<+5tZEJ%^wJ)M_3>=$l<Jun#SozY9yGxfA^}q7DddIxjZ-uQt!2HN1NaDY;}T_ z|1+cN4NoK$Yd-_NUSDqK*H;7B$X)P6fvb%Tbg#Keh9?vlB=`I0C(^b{@(ENA-n-qB ze>FzBxwMm9-Qk}cdPdyUQ~A~XhrVd)parHAHF+l4P-ydIif()Io1)&^g)vg-G$wb5 zQ=W*nmNktiOd^n}3ayE*r;d?r^gT>KfmN~ZZ`hxLt3=i^Q8zP_xFddZYO`&*7dv56 zJ}kEzP{r+|5=UGdlX?OSomd7%*32Pd74KT5=7oEtx9^l9!G`ttoceV&ADt1}F_46> zW#;_VbnadG_woKz1m2Uw=lt05hhR_lqWZK0);lcH35gxO-{r1AR&O+j4{%#k_$m|V z2`A>SC03q#=7uym6YP_(q&{`JvzVT5JT_o%q zgMXV+#=-|$@a`d|H5C_3JLk-PaW|M2Da@Hn{vf56JDqP*Z&hW?0h<{?%{-2~&Wn<# zQbkYDZJb%QrQsN9(ME7^*HMAeim;z;j1nnS2TnxHR#M?Lj?`Oiw?8F$KoU`LpNK=; zhdp2k+10B^FesZ$b|`CVnkbesetDHS#MCEyu{P$It2JXQ$fpi(+dcPSB~HC6^4;a~ zsl+YT+URhCp+c4v%9ze-wlQhx{t5aTVYX!ZGJ|p5pRb6#;L&05obMbm zzcuV8nV$SC-5n4>b5Se7 zfwLUwY~)XjX9c+_R+0K{b53Z6x+%JzLrwVP?JAsPL-H}*y-6aGR^+Au5$h4LPguw= zR%xeGi{|#kOUeLt#D5!FqmMDQzzht$bRiPKVlR^fg~t(5JrPEu{B1!oC zb3oD|%7G3de)nQ12(DvMGv6UAN0j-aQJ=V>!Y~pyO&)QRQS1@FDz@@^g_`mgWImUg z|Czup9p3ly$NOj`GizA?4ITmrzLeP(@*QNOO=LSyZG-XM9iiF6m_J^^t@lM z3PG0jd^t?MQaSjlo(iyhy9WNojp07|+Mh@mFzpHq?{q#+k#IB=r1f`P5P|8UxjSxx z=ut4HUBd%9$kyROc=jL--t4Dgd$bR;@l-e)o5Di_iOPr9nR6q91EXhp(a-2L>!@Rv z6cI+P-l4Q-d7Pesu15(cS@AYqUt5X6sJo6#3O>Uvq~s1}v{xvZ+@^0-e$09A`}qjD zZGcX@?0XR*ECO=tlMb|&5x}}2U3Tq$B+;rPfVh`RNU^uKdBhD?aum4X$)A$qqtCg@ z$HrEcooAdNexBAMsRdj!H|EHK$W=yc==dSyBiX9h;dL!dP4z4D@NZtM8w$$u*)#T4KP6XbkInuJSBx~aD5iI8m`Kl3&4$_ z4^RM9NE$~^1|kPAUP6Z%ZPf;!PhX8^fGmQHZwa;Y^9x#Qno$}n?D88L8gFc23WU-x z3i{JN^~#5B>+z^?jw0nWrgQICDcIc)xI8d{=eh5W6a4XUI3MT|F%O4%sv{~;j(!4Q z&z9#GU@XRkJc+y=lPU4C4atOJO$ldN6F)i1;FH0iM~e-=X#IP7{Jv;)9R!oL##pb= z!$+&%F3%7qp0|ugJ&t6xuj!60@*%$MVlXS+TJy}S9@gV@yAgj5DMzFC8g6s~=AVy( zM(^3WUNbD@X#*YeE&5*#8{L0smKOocM3AZ7cF-JQ!PGAdg<_ocYm`Y<;ngZQCLy}u z;lg2C`FH)P?3Ezc)Pymu9{s{y?44a0cuN9V>TVF7wm&!3IxbQ($kGSG=nL`U2*hQFnX?EoBU1-1;u44_WN9C(dAkLZfUHf^Buj zy8gx#`o2%48eTH+o?1{1f0&`~el4Tq<03!wQZlTcHzAMnhDgbzB*M@&Ym2eN3o05NaEK+r{0s&004}!g~#p? zbt#B`fP2hwgY3a54}}_Ci3FkA)@FYVjVTUF{-5&s3CQ5UuV diff --git a/components/atom/validationText/.npmignore b/components/atom/validationText/.npmignore index 83de8b2bf3..c84a79ff92 100644 --- a/components/atom/validationText/.npmignore +++ b/components/atom/validationText/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/molecule/collapsible/.npmignore b/components/molecule/collapsible/.npmignore index 83de8b2bf3..c84a79ff92 100755 --- a/components/molecule/collapsible/.npmignore +++ b/components/molecule/collapsible/.npmignore @@ -1,4 +1,3 @@ -assets demo src test diff --git a/components/molecule/drawer/assets/drawer-preview.png b/components/molecule/drawer/assets/drawer-preview.png deleted file mode 100644 index 5ccabec822e7305c4a3fb88459122eff0cce66a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148774 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 cH#Nt9BRAUa)L`~I;Lms8IDDP8 Date: Wed, 19 Oct 2022 09:24:12 +0530 Subject: [PATCH 205/243] refactor(components/molecule/selectPopover): Add missing dependency of placement to UseEffect of the Based on placement, popover class is modified. Hence the component needs to be reloaded whenever placement changes. ISSUES CLOSED: #2404 --- .../molecule/selectPopover/src/index.js | 56 +++++++++---------- .../molecule/selectPopover/test/index.test.js | 52 +++++++++++++++++ 2 files changed, 77 insertions(+), 31 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 3ee317482f..6ef6741d96 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -52,51 +52,45 @@ function MoleculeSelectPopover({ const selectRef = useRef() const contentWrapperRef = useRef() - const getPopoverClassName = () => { - const {left, right} = - contentWrapperRef.current?.getBoundingClientRect() || {} - const outFromTheLeftSide = left < 0 - const outFromTheRightSide = - right > (window.innerWidth || document.documentElement.clientWidth) - - if (outFromTheRightSide) { - return cx(`${popoverBaseClass}`, `${popoverBaseClass}--left`) - } else if (outFromTheLeftSide) { - return cx(`${popoverBaseClass}`, `${popoverBaseClass}--right`) - } - - return popoverClassName - } - useEffect(() => { /** * Only run open events: * - After first render * - When isOpen actually changes + * - When placement changes **/ if (typeof previousIsOpen === 'undefined' || isOpen === previousIsOpen) { return } - if ( - isOpen && - [PLACEMENTS.AUTO_END, PLACEMENTS.AUTO_START].includes(placement) - ) { - setPopoverClassName(getPopoverClassName()) - } - - const openEvent = isOpen ? onOpen : onClose - openEvent() - }, [isOpen, onClose, onOpen, previousIsOpen, getPopoverClassName]) + const getPopoverClassName = () => { + if ( + isOpen && + [PLACEMENTS.AUTO_END, PLACEMENTS.AUTO_START].includes(placement) + ) { + const {left, right} = + contentWrapperRef.current?.getBoundingClientRect() || {} + const outFromTheLeftSide = left < 0 + const outFromTheRightSide = + right > (window.innerWidth || document.documentElement.clientWidth) + + if (outFromTheRightSide) { + return cx(`${popoverBaseClass}`, `${popoverBaseClass}--left`) + } else if (outFromTheLeftSide) { + return cx(`${popoverBaseClass}`, `${popoverBaseClass}--right`) + } + } - useEffect(() => { - setPopoverClassName( - cx( + return cx( `${popoverBaseClass}`, `${popoverBaseClass}--${getPlacement(placement)}` ) - ) - }, [placement]) + } + + setPopoverClassName(getPopoverClassName()) + const openEvent = isOpen ? onOpen : onClose + openEvent() + }, [isOpen, onClose, onOpen, previousIsOpen, placement]) const selectClassName = cx( `${BASE_CLASS}-select`, diff --git a/components/molecule/selectPopover/test/index.test.js b/components/molecule/selectPopover/test/index.test.js index a9998682dc..a02caf47d7 100644 --- a/components/molecule/selectPopover/test/index.test.js +++ b/components/molecule/selectPopover/test/index.test.js @@ -10,7 +10,10 @@ import ReactDOM from 'react-dom' import chai, {expect} from 'chai' import chaiDOM from 'chai-dom' +import {fireEvent} from '@testing-library/react' + import json from '../package.json' +import {PLACEMENTS} from '../src/config.js' import * as pkg from '../src/index.js' chai.use(chaiDOM) @@ -172,4 +175,53 @@ describe(json.name, () => { }) }) }) + + describe('should render appropriate popoverclass for placement', () => { + it('should render appropriate popoverclass for Auto start placement', () => { + // Given + const props = { + acceptButtonText: 'acceptButtonText', + cancelButtonText: 'cancelButtonText', + iconArrowDown: () => , + selectText: 'selectText', + children: 'children', + placement: PLACEMENTS.AUTO_START + } + + // When + const {container} = setup(props) + + // Then + const select = container.querySelector( + '[class="sui-MoleculeSelectPopover-selectIcon"]' + ) + fireEvent.click(select) + expect(container.innerHTML).to.include( + 'sui-MoleculeSelectPopover-popover--left' + ) + }) + it('should render appropriate popoverclass for Auto end placement', () => { + // Given + const props = { + acceptButtonText: 'acceptButtonText', + cancelButtonText: 'cancelButtonText', + iconArrowDown: () => , + selectText: 'selectText', + children: 'children', + placement: PLACEMENTS.AUTO_END + } + + // When + const {container} = setup(props) + + // Then + const select = container.querySelector( + '[class="sui-MoleculeSelectPopover-selectIcon"]' + ) + fireEvent.click(select) + expect(container.innerHTML).to.include( + 'sui-MoleculeSelectPopover-popover--right' + ) + }) + }) }) From 64ae61cbb7e91e598ef595d0ed4e44598be30e03 Mon Sep 17 00:00:00 2001 From: arnau-rius Date: Wed, 19 Oct 2022 09:30:37 +0200 Subject: [PATCH 206/243] chore(Root): confirm flag is deprecated, use --yes flag instead --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index cf01b32230..c91fed446e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -236,7 +236,7 @@ jobs: id: deploy run: | npm i -g vercel --no-save --no-fund --no-audit --no-scripts - DEPLOYMENT_URL=$(vercel --token $VERCEL_TOKEN --confirm $VERCEL_PARAMS) + DEPLOYMENT_URL=$(vercel --token $VERCEL_TOKEN --yes $VERCEL_PARAMS) echo "::set-output name=url::$(echo $DEPLOYMENT_URL)" env: VERCEL_PARAMS: ${{ github.event_name != 'pull_request' && '--prod' || ''}} From dd7ffafc4ee8e2d02ce461f2cbd8783e87e5788a Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 19 Oct 2022 08:19:57 +0000 Subject: [PATCH 207/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2da859d082..045e28dbd8 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.95%25-orange) -![branches](https://shields.io/badge/branches-57.84%25-AA0000) -![functions](https://shields.io/badge/functions-59.36%25-AA0000) -![lines](https://shields.io/badge/lines-73.75%25-orange) +![statements](https://shields.io/badge/statements-72.26%25-orange) +![branches](https://shields.io/badge/branches-58.37%25-AA0000) +![functions](https://shields.io/badge/functions-59.68%25-AA0000) +![lines](https://shields.io/badge/lines-74.08%25-orange) ## ✨ Features From 0a3f97ba6761e3a84c180467ffb3d89d970c6d69 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 19 Oct 2022 08:20:54 +0000 Subject: [PATCH 208/243] release(components/molecule/selectPopover): v1.34.0 [skip ci] --- components/molecule/selectPopover/CHANGELOG.md | 4 ++++ components/molecule/selectPopover/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/selectPopover/CHANGELOG.md b/components/molecule/selectPopover/CHANGELOG.md index e944af8cb0..1febc9ac8c 100644 --- a/components/molecule/selectPopover/CHANGELOG.md +++ b/components/molecule/selectPopover/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.34.0 (2022-10-19) + + + # 1.33.0 (2022-08-25) diff --git a/components/molecule/selectPopover/package.json b/components/molecule/selectPopover/package.json index cb196d2e44..376398047c 100644 --- a/components/molecule/selectPopover/package.json +++ b/components/molecule/selectPopover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select-popover", - "version": "1.33.0", + "version": "1.34.0", "description": "", "main": "lib/index.js", "scripts": { From 448b1ca0fb3b598e5b28c34510001fd7fe3d2b59 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Wed, 19 Oct 2022 17:10:52 +0200 Subject: [PATCH 209/243] refactor(components/molecule/radioButtonGroup): replace cloneElement for injector --- .../{ => articles}/ArticleAtomRadioButton.js | 10 ++- .../demo/{ => articles}/ArticleChangeProps.js | 2 +- .../ArticleMoleculeRadioButtonField.js | 4 +- .../demo/{ => articles}/ArticleWithIcons.js | 2 +- .../molecule/radioButtonGroup/demo/index.js | 8 +-- .../molecule/radioButtonGroup/package.json | 3 +- .../molecule/radioButtonGroup/src/index.js | 67 ++++++++----------- 7 files changed, 42 insertions(+), 54 deletions(-) rename components/molecule/radioButtonGroup/demo/{ => articles}/ArticleAtomRadioButton.js (81%) rename components/molecule/radioButtonGroup/demo/{ => articles}/ArticleChangeProps.js (96%) rename components/molecule/radioButtonGroup/demo/{ => articles}/ArticleMoleculeRadioButtonField.js (93%) rename components/molecule/radioButtonGroup/demo/{ => articles}/ArticleWithIcons.js (82%) diff --git a/components/molecule/radioButtonGroup/demo/ArticleAtomRadioButton.js b/components/molecule/radioButtonGroup/demo/articles/ArticleAtomRadioButton.js similarity index 81% rename from components/molecule/radioButtonGroup/demo/ArticleAtomRadioButton.js rename to components/molecule/radioButtonGroup/demo/articles/ArticleAtomRadioButton.js index bfd51d9882..77bcea377f 100644 --- a/components/molecule/radioButtonGroup/demo/ArticleAtomRadioButton.js +++ b/components/molecule/radioButtonGroup/demo/articles/ArticleAtomRadioButton.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import {Article, H2, Paragraph} from '@s-ui/documentation-library' import AtomRadioButton from '@s-ui/react-atom-radio-button' -import MoleculeRadioButtonGroup from '../src/index.js' +import MoleculeRadioButtonGroup from '../../src/index.js' const ArticleAtomRadioButton = ({className}) => { return ( @@ -15,14 +15,12 @@ const ArticleAtomRadioButton = ({className}) => {
{ - // eslint-disable-next-line no-console - console.log({[name]: value}) - }} + onChange={ + (ev, {name, value}) => console.log({[name]: value}) // eslint-disable-line no-console + } name="favorite-beatle" value="john" > -
diff --git a/components/molecule/radioButtonGroup/demo/ArticleChangeProps.js b/components/molecule/radioButtonGroup/demo/articles/ArticleChangeProps.js similarity index 96% rename from components/molecule/radioButtonGroup/demo/ArticleChangeProps.js rename to components/molecule/radioButtonGroup/demo/articles/ArticleChangeProps.js index 1c63550436..f40f9bd2c9 100644 --- a/components/molecule/radioButtonGroup/demo/ArticleChangeProps.js +++ b/components/molecule/radioButtonGroup/demo/articles/ArticleChangeProps.js @@ -5,7 +5,7 @@ import PropTypes from 'prop-types' import {Article, H2, Paragraph} from '@s-ui/documentation-library' import MoleculeRadioButtonField from '@s-ui/react-molecule-radio-button-field' -import MoleculeRadioButtonGroup from '../src/index.js' +import MoleculeRadioButtonGroup from '../../src/index.js' const ArticleChangeProps = ({className}) => { const [value, setValue] = useState('john') diff --git a/components/molecule/radioButtonGroup/demo/ArticleMoleculeRadioButtonField.js b/components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js similarity index 93% rename from components/molecule/radioButtonGroup/demo/ArticleMoleculeRadioButtonField.js rename to components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js index 05e5072e8d..74a6752c0d 100644 --- a/components/molecule/radioButtonGroup/demo/ArticleMoleculeRadioButtonField.js +++ b/components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js @@ -3,8 +3,8 @@ import PropTypes from 'prop-types' import {Article, H2, Paragraph} from '@s-ui/documentation-library' import MoleculeRadioButtonField from '@s-ui/react-molecule-radio-button-field' -import MoleculeRadioButtonGroup from '../src/index.js' -import CustomLabel from './components/CustomLabel.js' +import MoleculeRadioButtonGroup from '../../src/index.js' +import CustomLabel from '../components/CustomLabel.js' const ArticleMoleculeRadioButtonField = ({className}) => { return ( diff --git a/components/molecule/radioButtonGroup/demo/ArticleWithIcons.js b/components/molecule/radioButtonGroup/demo/articles/ArticleWithIcons.js similarity index 82% rename from components/molecule/radioButtonGroup/demo/ArticleWithIcons.js rename to components/molecule/radioButtonGroup/demo/articles/ArticleWithIcons.js index 526dd798ea..daa9013803 100644 --- a/components/molecule/radioButtonGroup/demo/ArticleWithIcons.js +++ b/components/molecule/radioButtonGroup/demo/articles/ArticleWithIcons.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types' import {Article, H2} from '@s-ui/documentation-library' -import RadioButtonGroupIcons from './components/radioButtonGroupIcons.js' +import RadioButtonGroupIcons from '../components/radioButtonGroupIcons.js' const ArticleWithIcons = ({className}) => { return ( diff --git a/components/molecule/radioButtonGroup/demo/index.js b/components/molecule/radioButtonGroup/demo/index.js index 756954e19e..7f1ee379ae 100644 --- a/components/molecule/radioButtonGroup/demo/index.js +++ b/components/molecule/radioButtonGroup/demo/index.js @@ -2,10 +2,10 @@ import {H1, H2, Paragraph} from '@s-ui/documentation-library' -import ArticleAtomRadioButton from './ArticleAtomRadioButton.js' -import ArticleChangeProps from './ArticleChangeProps.js' -import ArticleMoleculeRadioButtonField from './ArticleMoleculeRadioButtonField.js' -import ArticleWithIcons from './ArticleWithIcons.js' +import ArticleAtomRadioButton from './articles/ArticleAtomRadioButton.js' +import ArticleChangeProps from './articles/ArticleChangeProps.js' +import ArticleMoleculeRadioButtonField from './articles/ArticleMoleculeRadioButtonField.js' +import ArticleWithIcons from './articles/ArticleWithIcons.js' import './index.scss' diff --git a/components/molecule/radioButtonGroup/package.json b/components/molecule/radioButtonGroup/package.json index e9927bd472..9089843d68 100644 --- a/components/molecule/radioButtonGroup/package.json +++ b/components/molecule/radioButtonGroup/package.json @@ -9,7 +9,8 @@ "build:styles": "cpx './src/**/*.scss' ./lib" }, "dependencies": { - "@s-ui/component-dependencies": "1" + "@s-ui/component-dependencies": "1", + "@s-ui/react-primitive-injector": "1" }, "keywords": [], "author": "", diff --git a/components/molecule/radioButtonGroup/src/index.js b/components/molecule/radioButtonGroup/src/index.js index c39f4e56f7..c3e4e050f4 100644 --- a/components/molecule/radioButtonGroup/src/index.js +++ b/components/molecule/radioButtonGroup/src/index.js @@ -1,54 +1,46 @@ -import {Children, cloneElement, useEffect, useState} from 'react' - import PropTypes from 'prop-types' +import useControlledState from '@s-ui/react-hooks/lib/useControlledState' +import Injector, {combineProps} from '@s-ui/react-primitive-injector' + import {BASE_CLASS} from './settings.js' const MoleculeRadioButtonGroup = ({ id, - value: initValue, - onChange: onChangeFromProps, + value, + onChange, children, name, ...props }) => { - const [value, setValue] = useState(initValue) - - useEffect(() => { - setValue(initValue) - }, [initValue]) - - const handleChangeGroup = (e, {name, value: innerValue}) => { - setValue(innerValue) - typeof onChangeFromProps === 'function' && - onChangeFromProps(e, {name, value: innerValue}) + const [innerValue, setInnerValue] = useControlledState(value) + const handleChangeGroup = (e, {name, value}) => { + setInnerValue(value, true) + typeof onChange === 'function' && onChange(e, {name, value}) } - - const extendedChildren = Children.toArray(children) - .filter(Boolean) - .map((child, index) => { - const { - props: {value: childValue} - } = child - const checked = value === childValue - const onChange = handleChangeGroup - return cloneElement(child, { - ...props, - checked, - onChange, - name - }) - }) - - return

+ return ( +
+ { + return combineProps( + { + checked: ownProps.value === innerValue, + onChange: handleChangeGroup, + name, + props + }, + ownProps + ) + }} + > + {children} + +
+ ) } MoleculeRadioButtonGroup.displayName = 'MoleculeRadioButtonGroup' -MoleculeRadioButtonGroup.defaultProps = { - checked: false -} - MoleculeRadioButtonGroup.propTypes = { /* children */ children: PropTypes.any, @@ -62,9 +54,6 @@ MoleculeRadioButtonGroup.propTypes = { /* This Boolean attribute prevents the user from interacting with the input */ disabled: PropTypes.bool, - /* Mark the input as selected */ - checked: PropTypes.bool, - /* onChange callback */ onChange: PropTypes.func, From 78670a407c8a59ccd3029d25a03c45d883ef4829 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 19 Oct 2022 15:37:50 +0000 Subject: [PATCH 210/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 045e28dbd8..481f18e030 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.26%25-orange) +![statements](https://shields.io/badge/statements-72.29%25-orange) ![branches](https://shields.io/badge/branches-58.37%25-AA0000) -![functions](https://shields.io/badge/functions-59.68%25-AA0000) -![lines](https://shields.io/badge/lines-74.08%25-orange) +![functions](https://shields.io/badge/functions-59.63%25-AA0000) +![lines](https://shields.io/badge/lines-74.12%25-orange) ## ✨ Features From 419a0073c5b71bda6b9ac336667043def1530149 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 19 Oct 2022 15:38:58 +0000 Subject: [PATCH 211/243] release(components/molecule/radioButtonGroup): v1.10.0 [skip ci] --- components/molecule/radioButtonGroup/CHANGELOG.md | 4 ++++ components/molecule/radioButtonGroup/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/molecule/radioButtonGroup/CHANGELOG.md b/components/molecule/radioButtonGroup/CHANGELOG.md index 0220580ba9..8cb4e0b5ca 100644 --- a/components/molecule/radioButtonGroup/CHANGELOG.md +++ b/components/molecule/radioButtonGroup/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 1.10.0 (2022-10-19) + + + # 1.9.0 (2022-06-23) diff --git a/components/molecule/radioButtonGroup/package.json b/components/molecule/radioButtonGroup/package.json index 9089843d68..e97408ce65 100644 --- a/components/molecule/radioButtonGroup/package.json +++ b/components/molecule/radioButtonGroup/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-radio-button-group", - "version": "1.9.0", + "version": "1.10.0", "description": "", "main": "lib/index.js", "scripts": { From 363d3c442938db3d9187d2d454cb9e57dda9a081 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 20 Oct 2022 11:58:49 +0000 Subject: [PATCH 212/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 481f18e030..e03d5c1828 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.29%25-orange) -![branches](https://shields.io/badge/branches-58.37%25-AA0000) +![statements](https://shields.io/badge/statements-72.32%25-orange) +![branches](https://shields.io/badge/branches-58.39%25-AA0000) ![functions](https://shields.io/badge/functions-59.63%25-AA0000) -![lines](https://shields.io/badge/lines-74.12%25-orange) +![lines](https://shields.io/badge/lines-74.15%25-orange) ## ✨ Features From 71b22af383eebd6b50c7e9eb31c60a3d129165e3 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Thu, 20 Oct 2022 11:59:44 +0000 Subject: [PATCH 213/243] release(components/molecule/selectPopover): v1.35.0 [skip ci] --- components/molecule/selectPopover/CHANGELOG.md | 15 +++++++++++++++ components/molecule/selectPopover/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/components/molecule/selectPopover/CHANGELOG.md b/components/molecule/selectPopover/CHANGELOG.md index 1febc9ac8c..0481a416c1 100644 --- a/components/molecule/selectPopover/CHANGELOG.md +++ b/components/molecule/selectPopover/CHANGELOG.md @@ -1,8 +1,23 @@ # CHANGELOG +# 1.35.0 (2022-10-20) + + + # 1.34.0 (2022-10-19) +### Features + +* **components/molecule/selectPopover:** add overlay as react portal ([d7a504f](https://github.com/SUI-Components/sui-components/commit/d7a504f3d456deb0d0141432aaf3093b94fff70f)) +* **components/molecule/selectPopover:** improve overlay position ([8b3d146](https://github.com/SUI-Components/sui-components/commit/8b3d1467082797599ef562a425b9a66521015ad0)) +* **components/molecule/selectPopover:** overlayContentRef default value ([4c56ed7](https://github.com/SUI-Components/sui-components/commit/4c56ed77515511715cccb6318b46e4fef110437a)) +* **components/molecule/selectPopover:** remove unnecessary class ([d52489f](https://github.com/SUI-Components/sui-components/commit/d52489facc557cb481234347340a5998fea1f3f0)) +* **components/molecule/selectPopover:** show overlay from selected type ([6a8beb8](https://github.com/SUI-Components/sui-components/commit/6a8beb8860f8bb39df0716f3c5cd7736557ae78a)) +* **components/molecule/selectPopover:** show portal node only if select popover is open ([bc6e613](https://github.com/SUI-Components/sui-components/commit/bc6e613fc29b51ed9f09118ab3b25eda2913aef0)) +* **components/molecule/selectPopover:** update isOpen behavior ([a903d46](https://github.com/SUI-Components/sui-components/commit/a903d46848e6cc7515a9d20aeee5906299fac52c)) + + # 1.33.0 (2022-08-25) diff --git a/components/molecule/selectPopover/package.json b/components/molecule/selectPopover/package.json index 387d5f0cb5..524efa4427 100644 --- a/components/molecule/selectPopover/package.json +++ b/components/molecule/selectPopover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select-popover", - "version": "1.34.0", + "version": "1.35.0", "description": "", "main": "lib/index.js", "scripts": { From d8f65c5011b4df4921044832122ce6d1967674fe Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Thu, 20 Oct 2022 16:43:43 +0200 Subject: [PATCH 214/243] feat(components/molecule/selectPopover): improve overlay outside click --- components/molecule/selectPopover/src/styles/index.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index 74d8fad013..8aafeeb087 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -111,7 +111,6 @@ $base-class: '.sui-MoleculeSelectPopover '; height: 100%; left: 0; opacity: $op-select-popover-initial-overlay; - pointer-events: none; position: absolute; top: 0; transition: opacity 0.25s ease-in; From 3818bd8deee9d910933d5c781e296a90cf2d9732 Mon Sep 17 00:00:00 2001 From: andresin87 Date: Fri, 21 Oct 2022 08:26:21 +0200 Subject: [PATCH 215/243] fix(components/hook/usePortal): usePortal become SSR friendly --- components/hook/usePortal/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/hook/usePortal/src/index.js b/components/hook/usePortal/src/index.js index 4b55fa0728..f66394750c 100644 --- a/components/hook/usePortal/src/index.js +++ b/components/hook/usePortal/src/index.js @@ -21,7 +21,7 @@ import {BASE_CLASS, DEFAULT_IS_OPEN} from './settings.js' const usePortal = ({ isOpen: defaultIsOpen = DEFAULT_IS_OPEN, - target = document.body, + target, onOpen, onClose, onToggle, @@ -202,7 +202,7 @@ const usePortal = ({ > {children} , - target + target || document.body ) : null } From b135cd035962984224e5dc87930e90958881073c Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 21 Oct 2022 06:39:34 +0000 Subject: [PATCH 216/243] chore(Root): Update coverage badges --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e03d5c1828..7185336653 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage ![statements](https://shields.io/badge/statements-72.32%25-orange) -![branches](https://shields.io/badge/branches-58.39%25-AA0000) +![branches](https://shields.io/badge/branches-58.41%25-AA0000) ![functions](https://shields.io/badge/functions-59.63%25-AA0000) ![lines](https://shields.io/badge/lines-74.15%25-orange) From c17df97bfefc472b1542b43aa1cc25d4eb380e08 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 21 Oct 2022 06:40:50 +0000 Subject: [PATCH 217/243] release(components/hook/usePortal): v1.3.0 [skip ci] --- components/hook/usePortal/CHANGELOG.md | 9 +++++++++ components/hook/usePortal/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/hook/usePortal/CHANGELOG.md b/components/hook/usePortal/CHANGELOG.md index 7dd3992ae0..8545e247af 100644 --- a/components/hook/usePortal/CHANGELOG.md +++ b/components/hook/usePortal/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.3.0 (2022-10-21) + + +### Bug Fixes + +* **components/hook/usePortal:** usePortal become SSR friendly ([3818bd8](https://github.com/SUI-Components/sui-components/commit/3818bd8deee9d910933d5c781e296a90cf2d9732)) + + + # 1.2.0 (2022-10-18) diff --git a/components/hook/usePortal/package.json b/components/hook/usePortal/package.json index 6be2a87edc..5d8276f295 100644 --- a/components/hook/usePortal/package.json +++ b/components/hook/usePortal/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-hook-use-portal", - "version": "1.2.0", + "version": "1.3.0", "description": "", "main": "lib/index.js", "scripts": { From a8cacdab03bfaea2bdafc16a003d0a958e5fe5e9 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Fri, 21 Oct 2022 08:46:43 +0200 Subject: [PATCH 218/243] docs(components/molecule/avatar): update fallbackColor docs --- .../molecule/avatar/demo/ArticleImage.js | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/components/molecule/avatar/demo/ArticleImage.js b/components/molecule/avatar/demo/ArticleImage.js index 2592fc9ed0..dcba574b83 100644 --- a/components/molecule/avatar/demo/ArticleImage.js +++ b/components/molecule/avatar/demo/ArticleImage.js @@ -22,6 +22,7 @@ const ArticleImage = ({className}) => { ) const [brokenSrc, setBrokenSrc] = useState('https://brokenimagesrc') const [name, setName] = useState('John Doe') + const [fallbackColor, setFallbackColor] = useState('#87bc45') const [fallbackIcon, setFallbackIcon] = useState() return (
@@ -140,6 +141,47 @@ const ArticleImage = ({className}) => { ) : undefined } /> +

Fallback Color

+ + If the provided image fails on loading and the{' '} + fallbackColor property is passed, the background color of + the avatar will be colored with same background color as you passed. + + { + setBrokenSrc(event.target.value) + }} + placeholder="image" + fullWidth + /> +
+
+ { + setFallbackColor(event.target.value) + }} + placeholder="image" + fullWidth + /> +
+
+ + + + ) : undefined + } + />
) } From 1ac2dccea4b5a269045a46655137cd0c4d135e2e Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Fri, 21 Oct 2022 08:55:28 +0200 Subject: [PATCH 219/243] docs(components/molecule/avatar): add name field on fallback color demo --- components/molecule/avatar/demo/ArticleImage.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/components/molecule/avatar/demo/ArticleImage.js b/components/molecule/avatar/demo/ArticleImage.js index dcba574b83..5ba78a5ffd 100644 --- a/components/molecule/avatar/demo/ArticleImage.js +++ b/components/molecule/avatar/demo/ArticleImage.js @@ -22,6 +22,7 @@ const ArticleImage = ({className}) => { ) const [brokenSrc, setBrokenSrc] = useState('https://brokenimagesrc') const [name, setName] = useState('John Doe') + const [fallbackColorName, setFallbackColorName] = useState('John Doe') const [fallbackColor, setFallbackColor] = useState('#87bc45') const [fallbackIcon, setFallbackIcon] = useState() return ( @@ -157,6 +158,16 @@ const ArticleImage = ({className}) => { />

+ { + setFallbackColorName(event.target.value) + }} + placeholder="image" + fullWidth + /> +
+
{ @@ -169,7 +180,7 @@ const ArticleImage = ({className}) => {
Date: Fri, 21 Oct 2022 10:36:31 +0200 Subject: [PATCH 220/243] docs(components/atom/panel): update overlay demo --- components/atom/panel/demo/PanelAsImage/ArticleOverlay.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js b/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js index 42a9a57994..a1fe492e35 100644 --- a/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js +++ b/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js @@ -20,14 +20,14 @@ const ArticleOverlay = ({className}) => { {Object.keys(atomPanelAlpha).map((alpha, index) => (
-
+
{color} {alpha} From 51f6e7dbc73738d986fe0c3064a250fba08270ed Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Fri, 21 Oct 2022 10:41:15 +0200 Subject: [PATCH 221/243] docs(components/atom/panel): improve demo panel's size --- .../demo/PanelAsImage/ArticleHorizontallyCropped.js | 12 ++++++------ .../atom/panel/demo/PanelAsImage/ArticleOverlay.js | 2 +- .../panel/demo/PanelAsImage/ArticlePlaceholder.js | 6 +++--- .../demo/PanelAsImage/ArticleVerticallyCropped.js | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/components/atom/panel/demo/PanelAsImage/ArticleHorizontallyCropped.js b/components/atom/panel/demo/PanelAsImage/ArticleHorizontallyCropped.js index 5390a29883..5c58dad6d6 100644 --- a/components/atom/panel/demo/PanelAsImage/ArticleHorizontallyCropped.js +++ b/components/atom/panel/demo/PanelAsImage/ArticleHorizontallyCropped.js @@ -20,30 +20,30 @@ const ArticleHorizontallyCropped = ({className}) => {
Original
-
+
-
+
Align to the left
-
+
-
+
Centered
-
+
-
+
Align to the right
diff --git a/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js b/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js index a1fe492e35..37629ffe87 100644 --- a/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js +++ b/components/atom/panel/demo/PanelAsImage/ArticleOverlay.js @@ -23,7 +23,7 @@ const ArticleOverlay = ({className}) => { style={Object.assign({}, flexItem, {width: '100px'})} > diff --git a/components/atom/panel/demo/PanelAsImage/ArticlePlaceholder.js b/components/atom/panel/demo/PanelAsImage/ArticlePlaceholder.js index e643cc4602..f0fb401775 100644 --- a/components/atom/panel/demo/PanelAsImage/ArticlePlaceholder.js +++ b/components/atom/panel/demo/PanelAsImage/ArticlePlaceholder.js @@ -13,12 +13,12 @@ const ArticlePlaceholder = ({className}) => { This is the structure for the placeholder
-
+
-
+
diff --git a/components/atom/panel/demo/PanelAsImage/ArticleVerticallyCropped.js b/components/atom/panel/demo/PanelAsImage/ArticleVerticallyCropped.js index 6e3eb89b3e..3379001fd0 100644 --- a/components/atom/panel/demo/PanelAsImage/ArticleVerticallyCropped.js +++ b/components/atom/panel/demo/PanelAsImage/ArticleVerticallyCropped.js @@ -28,30 +28,30 @@ const ArticleVerticallyCropped = ({className}) => {
Original
-
+
-
+
Top
-
+
-
+
Center
-
+
-
+
Bottom
From 41cd1ee74804f42ac1ac3a10e3656c6b6f3e6314 Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Fri, 21 Oct 2022 11:53:06 +0200 Subject: [PATCH 222/243] feat(components/molecule/selectPopover): disable pointer events only when overlay is open --- components/molecule/selectPopover/src/styles/index.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index 8aafeeb087..ebe7889217 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -119,6 +119,7 @@ $base-class: '.sui-MoleculeSelectPopover '; &.is-open { $op: map-get($type, op); opacity: $op; + pointer-events: none; } } } From 9f131176ebb6dfe836209fb69bf50dcef48b36da Mon Sep 17 00:00:00 2001 From: andresin87 Date: Fri, 21 Oct 2022 12:02:16 +0200 Subject: [PATCH 223/243] docs(components/molecule/radioButtonGroup/demo): add custom label tooltiped to the demo --- .../demo/articles/ArticleMoleculeRadioButtonField.js | 4 ++-- .../radioButtonGroup/demo/components/CustomLabel.js | 8 ++++++-- components/molecule/radioButtonGroup/demo/package.json | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js b/components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js index 74a6752c0d..67728e6c89 100644 --- a/components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js +++ b/components/molecule/radioButtonGroup/demo/articles/ArticleMoleculeRadioButtonField.js @@ -38,13 +38,13 @@ const ArticleMoleculeRadioButtonField = ({className}) => { } helpText="George Harrison" /> } helpText="Ringo Star" disabled /> diff --git a/components/molecule/radioButtonGroup/demo/components/CustomLabel.js b/components/molecule/radioButtonGroup/demo/components/CustomLabel.js index bdc2d20567..1cfbf51603 100644 --- a/components/molecule/radioButtonGroup/demo/components/CustomLabel.js +++ b/components/molecule/radioButtonGroup/demo/components/CustomLabel.js @@ -1,8 +1,9 @@ import PropTypes from 'prop-types' import AtomLabel from '@s-ui/react-atom-label' +import AtomTooltip from '@s-ui/react-atom-tooltip' -const CustomLabel = ({text, type, name, onClickLabel}) => ( +const CustomLabel = ({text, type, name, onClickLabel, ...props}) => ( <> ( inline="left" onClick={onClickLabel} type={type} + {...props} /> - I am out of the label + + I am out of the label + ) diff --git a/components/molecule/radioButtonGroup/demo/package.json b/components/molecule/radioButtonGroup/demo/package.json index bec52b0a78..de0b71369f 100644 --- a/components/molecule/radioButtonGroup/demo/package.json +++ b/components/molecule/radioButtonGroup/demo/package.json @@ -11,9 +11,9 @@ "author": "", "license": "ISC", "dependencies": { - "@s-ui/hoc": "1", "@s-ui/react-atom-label": "1", "@s-ui/react-atom-radio-button": "1", + "@s-ui/react-atom-tooltip": "2", "@s-ui/react-molecule-radio-button-field": "1" } } From 5658290b54f23239b1c98b369b648ca7d6ac3e06 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 21 Oct 2022 11:06:57 +0000 Subject: [PATCH 224/243] release(components/molecule/selectPopover): v1.36.0 [skip ci] --- components/molecule/selectPopover/CHANGELOG.md | 10 ++++++++++ components/molecule/selectPopover/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/molecule/selectPopover/CHANGELOG.md b/components/molecule/selectPopover/CHANGELOG.md index 0481a416c1..1b0843da06 100644 --- a/components/molecule/selectPopover/CHANGELOG.md +++ b/components/molecule/selectPopover/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +# 1.36.0 (2022-10-21) + + +### Features + +* **components/molecule/selectPopover:** disable pointer events only when overlay is open ([41cd1ee](https://github.com/SUI-Components/sui-components/commit/41cd1ee74804f42ac1ac3a10e3656c6b6f3e6314)) +* **components/molecule/selectPopover:** improve overlay outside click ([d8f65c5](https://github.com/SUI-Components/sui-components/commit/d8f65c5011b4df4921044832122ce6d1967674fe)) + + + # 1.35.0 (2022-10-20) diff --git a/components/molecule/selectPopover/package.json b/components/molecule/selectPopover/package.json index 524efa4427..faca873f56 100644 --- a/components/molecule/selectPopover/package.json +++ b/components/molecule/selectPopover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select-popover", - "version": "1.35.0", + "version": "1.36.0", "description": "", "main": "lib/index.js", "scripts": { From 65d605eae9bb19694af94510a7364aeabf641f9f Mon Sep 17 00:00:00 2001 From: sui-bot Date: Fri, 21 Oct 2022 11:20:30 +0000 Subject: [PATCH 225/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7185336653..562d99d815 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.32%25-orange) -![branches](https://shields.io/badge/branches-58.41%25-AA0000) -![functions](https://shields.io/badge/functions-59.63%25-AA0000) -![lines](https://shields.io/badge/lines-74.15%25-orange) +![statements](https://shields.io/badge/statements-71.86%25-orange) +![branches](https://shields.io/badge/branches-57.99%25-AA0000) +![functions](https://shields.io/badge/functions-59.01%25-AA0000) +![lines](https://shields.io/badge/lines-73.69%25-orange) ## ✨ Features From 24d80d589e2611d4bcd57604d5e42a0109af7f78 Mon Sep 17 00:00:00 2001 From: Oriol Puig Date: Fri, 21 Oct 2022 15:23:51 +0200 Subject: [PATCH 226/243] docs(components/molecule/autosuggest): restyle demos --- .../demo/ArticleArrayObjects/index.js | 109 +++++ .../components/ComboCountries.js | 6 +- .../demo/ArticleDependantSelection/index.js | 19 + .../demo/ArticleIsOpenProp/index.js | 46 +++ .../demo/ArticleMultipleSelection/index.js | 56 +++ .../demo/ArticleSingleSelection/index.js | 137 +++++++ .../components/AutosuggestSingleFromAjax.js | 32 -- components/molecule/autosuggest/demo/index.js | 383 ++---------------- .../molecule/autosuggest/demo/index.scss | 19 - 9 files changed, 396 insertions(+), 411 deletions(-) create mode 100644 components/molecule/autosuggest/demo/ArticleArrayObjects/index.js rename components/molecule/autosuggest/demo/{ => ArticleDependantSelection}/components/ComboCountries.js (93%) create mode 100644 components/molecule/autosuggest/demo/ArticleDependantSelection/index.js create mode 100644 components/molecule/autosuggest/demo/ArticleIsOpenProp/index.js create mode 100644 components/molecule/autosuggest/demo/ArticleMultipleSelection/index.js create mode 100644 components/molecule/autosuggest/demo/ArticleSingleSelection/index.js delete mode 100644 components/molecule/autosuggest/demo/components/AutosuggestSingleFromAjax.js diff --git a/components/molecule/autosuggest/demo/ArticleArrayObjects/index.js b/components/molecule/autosuggest/demo/ArticleArrayObjects/index.js new file mode 100644 index 0000000000..ab2b255409 --- /dev/null +++ b/components/molecule/autosuggest/demo/ArticleArrayObjects/index.js @@ -0,0 +1,109 @@ +/* eslint-disable no-console */ +import {useState} from 'react' + +import {Article, Code, H2, H3, Paragraph} from '@s-ui/documentation-library' +import MoleculeAutosuggestField from '@s-ui/react-molecule-autosuggest-field' +import MoleculeAutosuggestOption from '@s-ui/react-molecule-dropdown-option' + +import {MoleculeAutosuggestWithStateTags, options} from '../config.js' +import {iconClose} from '../Icons/index.js' + +const ArticleArrayObjects = () => { + const [tags, setTags] = useState([{key: 1, label: 'Label'}]) + const [value, setValue] = useState() + const [singleValue, setSingleValue] = useState() + + return ( +
+

Autosuggest with array objects

+ + This implementation allows you to use Autosuggest with an + array of objects. To check the selected values in the dropdown, it will + use a deep comparison. Changing the tags in onChangeTags{' '} + method returns an array of objects. If the tag is new, you will see a + string inside the array of objects. + +

Single selection

+ { + console.log('onChange', value) + setSingleValue(value) + }} + onChangeTags={(_, {tags, ...args}) => + console.log('onChangeTags', {tags, ...args}) + } + onClear={() => { + console.log('Clear pressed') + setSingleValue(undefined) + }} + onEnter={() => console.log('onEnter')} + onSelect={(_, {value}) => { + setSingleValue(value.label) + console.log('onSelect', value) + }} + placeholder="Selecciona el value a asignar al campo" + > + {options.map(({key, label}, index) => ( + + {label} + + ))} + +

Multiselection

+ { + console.log('onChange', value) + setValue(value) + }} + onChangeTags={(_, {tags, ...args}) => { + setTags(tags) + setValue('') + console.log('onChangeTags', {tags, ...args}) + }} + onClear={() => { + console.log('Clear pressed') + setTags([]) + }} + onEnter={() => console.log('onEnter')} + onSelect={(_, {tags}) => { + console.log('onSelect', tags) + }} + placeholder="Selecciona las etiquetas a asignar al contacto" + tags={tags} + > + {options.map(({key, label}) => ( + + {label} + + ))} + +

with autoFocus

+ + console.log('onChangeTags', {tags, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconCloseTag={iconClose} + iconClear={iconClose} + multiselection + /> +
+ ) +} + +ArticleArrayObjects.propTypes = {} + +export default ArticleArrayObjects diff --git a/components/molecule/autosuggest/demo/components/ComboCountries.js b/components/molecule/autosuggest/demo/ArticleDependantSelection/components/ComboCountries.js similarity index 93% rename from components/molecule/autosuggest/demo/components/ComboCountries.js rename to components/molecule/autosuggest/demo/ArticleDependantSelection/components/ComboCountries.js index f51f8bc34a..db3505279e 100644 --- a/components/molecule/autosuggest/demo/components/ComboCountries.js +++ b/components/molecule/autosuggest/demo/ArticleDependantSelection/components/ComboCountries.js @@ -8,9 +8,9 @@ import {withStateValue} from '@s-ui/hoc' import MoleculeDropdownOption from '@s-ui/react-molecule-dropdown-option' import MoleculeSelect from '@s-ui/react-molecule-select' -import regions from '../data/regions.json' -import {iconArrowDown} from '../Icons/index.js' -import {filterOptionsCodeValue} from '../services/index.js' +import regions from '../../data/regions.json' +import {iconArrowDown} from '../../Icons/index.js' +import {filterOptionsCodeValue} from '../../services/index.js' const MoleculeSelectWithState = withStateValue(MoleculeSelect) const MoleculeAutosuggestWithState = withStateValue(MoleculeAutosuggest) diff --git a/components/molecule/autosuggest/demo/ArticleDependantSelection/index.js b/components/molecule/autosuggest/demo/ArticleDependantSelection/index.js new file mode 100644 index 0000000000..d1180fbd4f --- /dev/null +++ b/components/molecule/autosuggest/demo/ArticleDependantSelection/index.js @@ -0,0 +1,19 @@ +/* eslint-disable no-console */ + +import {Article, H2, H3} from '@s-ui/documentation-library' + +import ComboCountries from './components/ComboCountries.js' + +const ArticleDependantSelection = () => { + return ( +
+

Dependant Selection

+

With Placeholder

+ +
+ ) +} + +ArticleDependantSelection.propTypes = {} + +export default ArticleDependantSelection diff --git a/components/molecule/autosuggest/demo/ArticleIsOpenProp/index.js b/components/molecule/autosuggest/demo/ArticleIsOpenProp/index.js new file mode 100644 index 0000000000..e313f6d6ea --- /dev/null +++ b/components/molecule/autosuggest/demo/ArticleIsOpenProp/index.js @@ -0,0 +1,46 @@ +/* eslint-disable no-console */ + +import {Article, Code, H2, H3, Paragraph} from '@s-ui/documentation-library' +import MoleculeAutosuggestOption from '@s-ui/react-molecule-dropdown-option' + +import {MoleculeAutosuggestWithStateTagsLabels, options} from '../config.js' +import {iconClose} from '../Icons/index.js' + +const ArticleIsOpenProp = () => { + return ( +
+

Autosuggest list is open

+

With preselected Value

+ + The isOpen property allows you to open the Suggestions List + by default + + console.log('onChange')} + onChangeTags={(_, {tags, ...args}) => + console.log('onChangeTags', {tags, ...args}) + } + onClear={() => console.log('Clear pressed')} + onEnter={() => console.log('onEnter')} + onSelect={() => console.log('onSelect')} + placeholder="Selecciona las etiquetas a asignar al contacto" + tags={['Mola']} + > + {options.map(({key, label}) => ( + + {label} + + ))} + +
+ ) +} + +ArticleIsOpenProp.propTypes = {} + +export default ArticleIsOpenProp diff --git a/components/molecule/autosuggest/demo/ArticleMultipleSelection/index.js b/components/molecule/autosuggest/demo/ArticleMultipleSelection/index.js new file mode 100644 index 0000000000..2d18b5b5ec --- /dev/null +++ b/components/molecule/autosuggest/demo/ArticleMultipleSelection/index.js @@ -0,0 +1,56 @@ +/* eslint-disable no-console */ +import {Article, Code, H2, H3, Paragraph} from '@s-ui/documentation-library' + +import {MoleculeAutosuggestWithStateTags} from '../config.js' +import {iconClose} from '../Icons/index.js' + +const ArticleMultipleSelection = () => { + return ( +
+

Multiple Selection

+ + This component allows you to add new options (such as tags) even if they + are not available among the available options of{' '} + DropdownList + +

with Placeholder

+ + console.log('onChangeTags', {tags, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconCloseTag={iconClose} + iconClear={iconClose} + multiselection + /> +

With preselected Value

+ + console.log('onChangeTags', {tags, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconCloseTag={iconClose} + iconClear={iconClose} + multiselection + /> +

Disabled

+ + console.log('onChangeTags', {tags, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconCloseTag={iconClose} + iconClear={iconClose} + multiselection + disabled + /> +
+ ) +} + +ArticleMultipleSelection.propTypes = {} + +export default ArticleMultipleSelection diff --git a/components/molecule/autosuggest/demo/ArticleSingleSelection/index.js b/components/molecule/autosuggest/demo/ArticleSingleSelection/index.js new file mode 100644 index 0000000000..8519cbf360 --- /dev/null +++ b/components/molecule/autosuggest/demo/ArticleSingleSelection/index.js @@ -0,0 +1,137 @@ +/* eslint-disable no-console */ + +import {MoleculeAutosuggestStates} from 'components/molecule/autosuggest/src/index.js' + +import {Article, H2, H3} from '@s-ui/documentation-library' +import AtomButton from '@s-ui/react-atom-button' + +import {MoleculeAutosuggestWithState} from '../config.js' +import { + iconAlert, + iconClose, + iconError, + iconInfo, + iconSearch +} from '../Icons/index.js' + +const ArticleSingleSelection = () => { + return ( +
+

Single Selection

+

with Placeholder

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => { + console.log('onEnter', {value, ...args}, _.target) + }} + onClear={() => console.log('Clear pressed')} + iconClear={iconClose} + /> +

with preselected Value

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconClear={iconClose} + /> +

disabled

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconClear={iconClose} + disabled + /> +

Whit autocomplete "off"

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconClear={iconClose} + autoComplete="off" + /> +

With no clear icon

+ console.log(value)} + /> +

With no clear icon

+ console.log(value)} + /> +

with Success State

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + onClear={() => console.log('Clear pressed')} + state={MoleculeAutosuggestStates.SUCCESS} + iconClear={iconClose} + rightIcon={iconInfo} + /> +

with Error State

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + onClear={() => console.log('Clear pressed')} + state={MoleculeAutosuggestStates.ERROR} + iconClear={iconClose} + rightIcon={iconError} + /> +

with Alert State

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + state={MoleculeAutosuggestStates.ALERT} + onClear={() => console.log('Clear pressed')} + iconClear={iconClose} + rightIcon={iconAlert} + /> +

with submit button

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + rightButton={Submit} + /> +

with Shape

+ console.log({value, ...args})} + onEnter={(_, {value, ...args} = {}) => + console.log('onEnter', {value, ...args}) + } + onClear={() => console.log('Clear pressed')} + iconClear={iconClose} + shape="circle" + /> +
+ ) +} + +ArticleSingleSelection.propTypes = {} + +export default ArticleSingleSelection diff --git a/components/molecule/autosuggest/demo/components/AutosuggestSingleFromAjax.js b/components/molecule/autosuggest/demo/components/AutosuggestSingleFromAjax.js deleted file mode 100644 index 570bd7ff4b..0000000000 --- a/components/molecule/autosuggest/demo/components/AutosuggestSingleFromAjax.js +++ /dev/null @@ -1,32 +0,0 @@ -import {Component} from 'react' - -import MoleculeAutosuggest from 'components/molecule/autosuggest/src' - -import MoleculeAutosuggestOption from '@s-ui/react-molecule-dropdown-option' - -import {getAsyncCountriesFromQuery} from '../services/index.js' - -export default class AutosuggestSingleWithAsyncOptions extends Component { - state = {value: '', options: []} - - onChange = async (e, {value}) => { - this.setState({value}) - const options = await getAsyncCountriesFromQuery({query: value}) - this.setState({options}) - } - - render() { - const {options, value} = this.state - const {onChange, props} = this - - return ( - - {options.map((option, i) => ( - - {option} - - ))} - - ) - } -} diff --git a/components/molecule/autosuggest/demo/index.js b/components/molecule/autosuggest/demo/index.js index 3bf122450b..92ba3950ea 100644 --- a/components/molecule/autosuggest/demo/index.js +++ b/components/molecule/autosuggest/demo/index.js @@ -1,364 +1,33 @@ -/* eslint-disable react/prop-types, no-unused-vars, no-console */ -import {useState} from 'react' +import {Code, H1, Paragraph} from '@s-ui/documentation-library' -import {MoleculeAutosuggestStates} from 'components/molecule/autosuggest/src/index.js' - -import SuiButton from '@s-ui/react-atom-button' -import MoleculeAutosuggestField from '@s-ui/react-molecule-autosuggest-field' -import MoleculeAutosuggestOption from '@s-ui/react-molecule-dropdown-option' - -import ComboCountries from './components/ComboCountries.js' -import { - iconAlert, - iconClose, - iconError, - iconInfo, - iconSearch -} from './Icons/index.js' -import { - CLASS_DEMO_SECTION, - MoleculeAutosuggestWithState, - MoleculeAutosuggestWithStateTags, - MoleculeAutosuggestWithStateTagsLabels, - options -} from './config.js' +import ArticleArrayObjects from './ArticleArrayObjects/index.js' +import ArticleDependantSelection from './ArticleDependantSelection/index.js' +import ArticleIsOpenProp from './ArticleIsOpenProp/index.js' +import ArticleMultipleSelection from './ArticleMultipleSelection/index.js' +import ArticleSingleSelection from './ArticleSingleSelection/index.js' import './index.scss' -const Demo = () => { - const [tags, setTags] = useState([{key: 1, label: 'Label'}]) - const [value, setValue] = useState() - const [singleValue, setSingleValue] = useState() - return ( -
-
-

Autosuggest

-

- El componente Autosuggest solo se usará cuando se pueda - escribir en el input (lo que generará una búsqueda en las - opciones del DropdownList) -

-

- En esta demo sólo se utiliza el tamaño por defecto del - DropdownList y las opciones básicas del - DropdownOption. Recuerda que en dichos componentes - existen más posibilidades si son necesarias -

-

Single Selection

- -
-

with Placeholder

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => { - console.log('onEnter', {value, ...args}, _.target) - }} - onClear={() => console.log('Clear pressed')} - iconClear={iconClose} - /> -
- -
-

with preselected Value

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconClear={iconClose} - /> -
- -
-

disabled

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconClear={iconClose} - disabled - /> -
- -
-

Whit autocomplete "off"

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconClear={iconClose} - autoComplete="off" - /> -
- -
-

With no clear icon

- console.log(value)} - /> -
- -
-

with Success State

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - onClear={() => console.log('Clear pressed')} - state={MoleculeAutosuggestStates.SUCCESS} - iconClear={iconClose} - rightIcon={iconInfo} - /> -
- -
-

with Error State

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - onClear={() => console.log('Clear pressed')} - state={MoleculeAutosuggestStates.ERROR} - iconClear={iconClose} - rightIcon={iconError} - /> -
- -
-

with Alert State

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - state={MoleculeAutosuggestStates.ALERT} - onClear={() => console.log('Clear pressed')} - iconClear={iconClose} - rightIcon={iconAlert} - /> -
- -
-

with submit button

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - rightButton={Submit} - /> -
- -
-

with Shape

- console.log({value, ...args})} - onEnter={(_, {value, ...args} = {}) => - console.log('onEnter', {value, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconClear={iconClose} - shape="circle" - /> -
- -

Multiple Selection

-

- Este componente permite añadir nuevas opciones (como tags) aunque no - esten disponibles entre las opciones disponibles del - DropdownList -

- -
-

with Placeholder

- - console.log('onChangeTags', {tags, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconCloseTag={iconClose} - iconClear={iconClose} - multiselection - /> -
- -
-

With preselected Value

- - console.log('onChangeTags', {tags, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconCloseTag={iconClose} - iconClear={iconClose} - multiselection - /> -
- -
-

Disabled

- - console.log('onChangeTags', {tags, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconCloseTag={iconClose} - iconClear={iconClose} - multiselection - disabled - /> -
- -

Dependant Selection

-
-

With Placeholder

- -
- -

Autosuggest list is open

-
-

With preselected Value

- console.log('onChange')} - onChangeTags={(_, {tags, ...args}) => - console.log('onChangeTags', {tags, ...args}) - } - onClear={() => console.log('Clear pressed')} - onEnter={() => console.log('onEnter')} - onSelect={() => console.log('onSelect')} - placeholder="Selecciona las etiquetas a asignar al contacto" - tags={['Mola']} - > - {options.map(({key, label}) => ( - - {label} - - ))} - -
- -

Autosuggest with array objects

-
-

- Esta implementación permite usar el Autosuggest con un array de - objetos. Para la comproación de los valores seleccionados en el - dropdown utilizará una deep comparison. Al cambiar las etiquetas en - onChangeTags devuelve un array de objetos. Si la etiqueta es nueva - lo que vuelca en el array de tags seleccionados es un string. -

- -

Single selection

- { - console.log('onChange', value) - setSingleValue(value) - }} - onChangeTags={(_, {tags, ...args}) => - console.log('onChangeTags', {tags, ...args}) - } - onClear={() => { - console.log('Clear pressed') - setSingleValue(undefined) - }} - onEnter={() => console.log('onEnter')} - onSelect={(_, {value}) => { - setSingleValue(value.label) - console.log('onSelect', value) - }} - placeholder="Selecciona el value a asignar al campo" - > - {options.map(({key, label}, index) => ( - - {label} - - ))} - - -

Multiselection

- { - console.log('onChange', value) - setValue(value) - }} - onChangeTags={(_, {tags, ...args}) => { - setTags(tags) - setValue('') - console.log('onChangeTags', {tags, ...args}) - }} - onClear={() => { - console.log('Clear pressed') - setTags([]) - }} - onEnter={() => console.log('onEnter')} - onSelect={(_, {tags}) => { - console.log('onSelect', tags) - }} - placeholder="Selecciona las etiquetas a asignar al contacto" - tags={tags} - > - {options.map(({key, label}) => ( - - {label} - - ))} - - -
-

with autoFocus

- - console.log('onChangeTags', {tags, ...args}) - } - onClear={() => console.log('Clear pressed')} - iconCloseTag={iconClose} - iconClear={iconClose} - multiselection - /> -
-
-
+const Demo = () => ( +
+
+

Autosuggest

+ + This component should only be used when the input is writable (resulting + in a search of the DropdownList options) + + + In this demo, we only use the default size of DropdownList{' '} + and basic options of DropdownOption components. Keep in + mind, those two components has more possibilities if you need it. + + + + + +
- ) -} +
+) export default Demo diff --git a/components/molecule/autosuggest/demo/index.scss b/components/molecule/autosuggest/demo/index.scss index 21dea0eb15..b4e6c258a9 100644 --- a/components/molecule/autosuggest/demo/index.scss +++ b/components/molecule/autosuggest/demo/index.scss @@ -5,22 +5,3 @@ @import '~@s-ui/react-atom-button/lib/index'; @import '../src/index'; - -.DemoMoleculeAutosuggest { - margin-bottom: 500px; - padding: 20px; - - &-list { - background: white; - width: 300px; - } - - &-section { - margin: 10px; - } - - pre { - padding: 16px; - width: 300px; - } -} From 7947d3ebc3d6a76c6c1e237c719a5a9d56e9be2c Mon Sep 17 00:00:00 2001 From: slim Date: Sat, 22 Oct 2022 19:00:38 +0100 Subject: [PATCH 227/243] refactor(components/hook/usePortal/demo): remove unnecessary dependency * remove unused dependency from hook. ISSUES CLOSED: #2408 --- .../hook/usePortal/demo/articles/ArticleCustom/useTooltip.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/hook/usePortal/demo/articles/ArticleCustom/useTooltip.js b/components/hook/usePortal/demo/articles/ArticleCustom/useTooltip.js index e752f29b0e..d8540acc8b 100644 --- a/components/hook/usePortal/demo/articles/ArticleCustom/useTooltip.js +++ b/components/hook/usePortal/demo/articles/ArticleCustom/useTooltip.js @@ -14,7 +14,6 @@ const useTooltip = ({isOpen, ...config} = {}) => { portalRef, open, close, - isOpen: isOpened, triggerRef } = usePortal({ onMouseEnter: event => open(event), @@ -46,7 +45,7 @@ const useTooltip = ({isOpen, ...config} = {}) => { ) }, - [isOpened, styles, attributes] + [styles, attributes] ) return [ From bbb8e0c573fa85233ee932477130841bcb1d4ed2 Mon Sep 17 00:00:00 2001 From: Nacho Torrella Date: Mon, 24 Oct 2022 08:58:51 +0200 Subject: [PATCH 228/243] feat(components/molecule/selectPopover): improve overlay behavior --- components/molecule/selectPopover/src/index.js | 5 ++--- components/molecule/selectPopover/src/styles/index.scss | 9 +-------- .../molecule/selectPopover/src/styles/settings.scss | 9 +++------ 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/components/molecule/selectPopover/src/index.js b/components/molecule/selectPopover/src/index.js index 044f1fca04..25fbffa353 100644 --- a/components/molecule/selectPopover/src/index.js +++ b/components/molecule/selectPopover/src/index.js @@ -274,8 +274,7 @@ function MoleculeSelectPopover({ const overlayClassNames = cx( `${BASE_CLASS}-overlay`, - `${BASE_CLASS}-overlay--${overlayType}`, - {'is-open': isOpen} + `${BASE_CLASS}-overlay--${overlayType}` ) return ( @@ -285,7 +284,7 @@ function MoleculeSelectPopover({ {renderContentWrapper()}
{hasOverlay && ( - +
)} diff --git a/components/molecule/selectPopover/src/styles/index.scss b/components/molecule/selectPopover/src/styles/index.scss index ebe7889217..d5c2ea33be 100644 --- a/components/molecule/selectPopover/src/styles/index.scss +++ b/components/molecule/selectPopover/src/styles/index.scss @@ -110,17 +110,10 @@ $base-class: '.sui-MoleculeSelectPopover '; content: ''; height: 100%; left: 0; - opacity: $op-select-popover-initial-overlay; + opacity: $op-select-popover-overlay; position: absolute; top: 0; - transition: opacity 0.25s ease-in; width: 100%; - - &.is-open { - $op: map-get($type, op); - opacity: $op; - pointer-events: none; - } } } } diff --git a/components/molecule/selectPopover/src/styles/settings.scss b/components/molecule/selectPopover/src/styles/settings.scss index 935e6ed5ed..1fd2070e35 100644 --- a/components/molecule/selectPopover/src/styles/settings.scss +++ b/components/molecule/selectPopover/src/styles/settings.scss @@ -22,18 +22,15 @@ $op-select-popover: 0.4 !default; $z-select-popover-select-popover: $z-tooltips !default; -$op-select-popover-initial-overlay: 0 !default; -$op-select-popover-finish-overlay: 0.6 !default; +$op-select-popover-overlay: 0.6 !default; $bgc-select-popover-dark-overlay: $c-black !default; $bgc-select-popover-light-overlay: $c-white !default; $molecule-select-popover-overlay-types: ( dark: ( - bgc: $bgc-select-popover-dark-overlay, - op: $op-select-popover-finish-overlay + bgc: $bgc-select-popover-dark-overlay ), light: ( - bgc: $bgc-select-popover-light-overlay, - op: $op-select-popover-finish-overlay + bgc: $bgc-select-popover-light-overlay ) ) !default; From b940cc8fd24a1691fd9a0077215f96bcc9d331d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s?= Date: Mon, 24 Oct 2022 09:09:12 +0200 Subject: [PATCH 229/243] docs(chore): space the demo articles --- components/molecule/autosuggest/demo/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/molecule/autosuggest/demo/index.js b/components/molecule/autosuggest/demo/index.js index 92ba3950ea..ca38fcc292 100644 --- a/components/molecule/autosuggest/demo/index.js +++ b/components/molecule/autosuggest/demo/index.js @@ -22,9 +22,13 @@ const Demo = () => ( mind, those two components has more possibilities if you need it. +
+
+
+
From 91ff561853800ef6642094b16efc91f26373b720 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Mon, 24 Oct 2022 08:37:09 +0000 Subject: [PATCH 230/243] release(components/molecule/selectPopover): v1.37.0 [skip ci] --- components/molecule/selectPopover/CHANGELOG.md | 9 +++++++++ components/molecule/selectPopover/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/molecule/selectPopover/CHANGELOG.md b/components/molecule/selectPopover/CHANGELOG.md index 1b0843da06..5d32c6f4ea 100644 --- a/components/molecule/selectPopover/CHANGELOG.md +++ b/components/molecule/selectPopover/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 1.37.0 (2022-10-24) + + +### Features + +* **components/molecule/selectPopover:** improve overlay behavior ([bbb8e0c](https://github.com/SUI-Components/sui-components/commit/bbb8e0c573fa85233ee932477130841bcb1d4ed2)) + + + # 1.36.0 (2022-10-21) diff --git a/components/molecule/selectPopover/package.json b/components/molecule/selectPopover/package.json index faca873f56..02fcdac28f 100644 --- a/components/molecule/selectPopover/package.json +++ b/components/molecule/selectPopover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-molecule-select-popover", - "version": "1.36.0", + "version": "1.37.0", "description": "", "main": "lib/index.js", "scripts": { From 28b8cd27c35db3f7d9efb3310254076c796634ad Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 25 Oct 2022 11:51:31 +0200 Subject: [PATCH 231/243] fix(components/atom/popover): arrow border color inherit from custom type --- components/atom/popover/src/styles/index.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/src/styles/index.scss b/components/atom/popover/src/styles/index.scss index c077193dc0..1daa189bf8 100644 --- a/components/atom/popover/src/styles/index.scss +++ b/components/atom/popover/src/styles/index.scss @@ -83,7 +83,8 @@ $class-arrow: '#{$base-class}-arrow'; } @each $type-key, $type-value in $popover-type { - &--type-#{$type-key}::after { + &--type-#{$type-key}::after, + &--type-#{$type-key}::before { border-bottom-color: map-get($type-value, bgc); } } From 4099bf83b594a9dc4f20db4e8ef59257059db60d Mon Sep 17 00:00:00 2001 From: andresin87 Date: Tue, 25 Oct 2022 11:51:31 +0200 Subject: [PATCH 232/243] fix(components/atom/popover): arrow border color inherit from custom type --- components/atom/popover/src/styles/index.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/src/styles/index.scss b/components/atom/popover/src/styles/index.scss index c077193dc0..1daa189bf8 100644 --- a/components/atom/popover/src/styles/index.scss +++ b/components/atom/popover/src/styles/index.scss @@ -83,7 +83,8 @@ $class-arrow: '#{$base-class}-arrow'; } @each $type-key, $type-value in $popover-type { - &--type-#{$type-key}::after { + &--type-#{$type-key}::after, + &--type-#{$type-key}::before { border-bottom-color: map-get($type-value, bgc); } } From 2ac4f6e944b73257ac57c47c2a09a696b5f4ae98 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 25 Oct 2022 09:57:09 +0000 Subject: [PATCH 233/243] release(components/atom/popover): v3.16.0 [skip ci] --- components/atom/popover/CHANGELOG.md | 9 +++++++++ components/atom/popover/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/CHANGELOG.md b/components/atom/popover/CHANGELOG.md index e4a6bbd01b..a64038fa3d 100644 --- a/components/atom/popover/CHANGELOG.md +++ b/components/atom/popover/CHANGELOG.md @@ -1,5 +1,14 @@ # CHANGELOG +# 3.16.0 (2022-10-25) + + +### Bug Fixes + +* **components/atom/popover:** arrow border color inherit from custom type ([4099bf8](https://github.com/SUI-Components/sui-components/commit/4099bf83b594a9dc4f20db4e8ef59257059db60d)) + + + # 3.15.0 (2022-10-18) diff --git a/components/atom/popover/package.json b/components/atom/popover/package.json index fa23982b8f..15990ffc4c 100644 --- a/components/atom/popover/package.json +++ b/components/atom/popover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-popover", - "version": "3.15.0", + "version": "3.16.0", "description": "", "main": "lib/index.js", "scripts": { From e68140498a11bb29361c92bf73e8849e1727c118 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Tue, 25 Oct 2022 10:01:56 +0000 Subject: [PATCH 234/243] release(components/atom/popover): v3.17.0 [skip ci] --- components/atom/popover/CHANGELOG.md | 4 ++++ components/atom/popover/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/atom/popover/CHANGELOG.md b/components/atom/popover/CHANGELOG.md index a64038fa3d..9a7324af41 100644 --- a/components/atom/popover/CHANGELOG.md +++ b/components/atom/popover/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +# 3.17.0 (2022-10-25) + + + # 3.16.0 (2022-10-25) diff --git a/components/atom/popover/package.json b/components/atom/popover/package.json index 15990ffc4c..b7d639afc3 100644 --- a/components/atom/popover/package.json +++ b/components/atom/popover/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-popover", - "version": "3.16.0", + "version": "3.17.0", "description": "", "main": "lib/index.js", "scripts": { From 2e766ac76f541ace7ba857ed2712537ee1fd3a92 Mon Sep 17 00:00:00 2001 From: Javier Auso Date: Tue, 25 Oct 2022 17:15:22 +0200 Subject: [PATCH 235/243] feat(components/atom/slider): add fullWidth prop --- .../slider/demo/ArticleSliderFullWidth.js | 33 +++++++++++++++++++ components/atom/slider/demo/index.js | 3 ++ components/atom/slider/src/index.js | 27 ++++++++------- components/atom/slider/src/markerFactory.js | 25 ++++++++++++-- components/atom/slider/src/settings.js | 4 ++- components/atom/slider/src/styles/index.scss | 6 ++++ .../atom/slider/src/styles/settings.scss | 2 ++ 7 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 components/atom/slider/demo/ArticleSliderFullWidth.js diff --git a/components/atom/slider/demo/ArticleSliderFullWidth.js b/components/atom/slider/demo/ArticleSliderFullWidth.js new file mode 100644 index 0000000000..6a857d01f0 --- /dev/null +++ b/components/atom/slider/demo/ArticleSliderFullWidth.js @@ -0,0 +1,33 @@ +import {useState} from 'react' + +import PropTypes from 'prop-types' + +import {Article, Code, H2, Paragraph} from '@s-ui/documentation-library' + +import AtomSlider from '../src/index.js' + +const ArticleSliderFullWidth = ({className}) => { + const [, setUncontrolledState] = useState(50) + return ( +
+

Full Width

+ + The fullWidth prop render the slider until box border. + + { + setUncontrolledState(value) + console.log(event, {value}) // eslint-disable-line no-console + }} + /> +
+ ) +} + +ArticleSliderFullWidth.propTypes = { + className: PropTypes.string +} + +export default ArticleSliderFullWidth diff --git a/components/atom/slider/demo/index.js b/components/atom/slider/demo/index.js index d38748836d..97bc185e0a 100644 --- a/components/atom/slider/demo/index.js +++ b/components/atom/slider/demo/index.js @@ -8,6 +8,7 @@ import ArticleRangeSteps from './ArticleRangeSteps.js' import ArticleSliderControlledState from './ArticleSliderControlledState.js' import ArticleSliderDefault from './ArticleSliderDefault.js' import ArticleSliderDisabled from './ArticleSliderDisabled.js' +import ArticleSliderFullWidth from './ArticleSliderFullWidth.js' import ArticleSliderHideMarks from './ArticleSliderHideMarks.js' import ArticleSliderInvertColors from './ArticleSliderInvertColors.js' import ArticleSliderMarks from './ArticleSliderMarks.js' @@ -42,6 +43,8 @@ const Demo = () => {
+
+

Range

Component that works as an input that provides a slider a set of two diff --git a/components/atom/slider/src/index.js b/components/atom/slider/src/index.js index 4eaeebfead..f7850c3db9 100644 --- a/components/atom/slider/src/index.js +++ b/components/atom/slider/src/index.js @@ -8,6 +8,7 @@ import markerFactory from './markerFactory.js' import { BASE_CLASS, CLASS_DISABLED, + CLASS_FULLWIDTH, CLASS_INVERSE, Label, Range, @@ -29,7 +30,8 @@ const AtomSlider = ({ hideMarks = false, hideTooltip = false, defaultValue, - invertColors + invertColors, + fullWidth }) => { let initialStateValue const refAtomSlider = useRef() @@ -82,24 +84,24 @@ const AtomSlider = ({ onChange: handleChange, onAfterChange: handleAfterChange, disabled, - marks: hideMarks ? {} : markerFactory({step, min, max, marks}), + marks: hideMarks ? {} : markerFactory({step, min, max, marks, fullWidth}), max, min, step, value: internalValue } + const computedClassName = cx( + BASE_CLASS, + {[CLASS_DISABLED]: disabled}, + {[CLASS_INVERSE]: invertColors}, + {[CLASS_FULLWIDTH]: fullWidth} + ) + // Determine the type of the slider according to the range prop const Type = range ? Range : Slider return ( -
+
{valueLabel && customProps.handle ? ( <>
- - - - + + + +
) } @@ -201,32 +204,385 @@ describe(json.name, () => { }) describe('fire events', () => { - it.skip('should fire onClose when it is triggered', () => { - // Given - // const spyOnClose = sinon.spy() - // const props = {children: 'portal-content', onClose: spyOnClose} - // When - // const {container, rerender, getByTestId, getByText} = setup(props) - // rerender() - // const portalContainerElement = getByTestId('portal-test-container') - // const portalContainerOriginElement = getByTestId( - // 'portal-test-container-origin' - // ) - // const portalContainerTargetElement = getByTestId( - // 'portal-test-container-target' - // ) - // Then - // expect(portalContainerElement.innerHTML).to.be.a('string') - // expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) - // - // expect(portalContainerOriginElement.innerHTML).to.be.a('string') - // expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) - // - // expect(portalContainerTargetElement.innerHTML).to.be.a('string') - // expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) - // And - // When - // fireEvent.click(getByText(props.children)) + describe('close', () => { + it('should close portal when it is fired', () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + onClose: spyOnClose, + onOpen: spyOnOpen + } + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(CLOSE)) + + // Then + sinon.assert.callCount(spyOnClose, 1) + sinon.assert.calledWith(spyOnClose, sinon.match.truthy) + sinon.assert.callCount(spyOnOpen, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + + it('should close portal when it is fired and has isOpen: true configured', () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + isOpen: true, + onClose: spyOnClose, + onOpen: spyOnOpen + } + + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(CLOSE)) + + // Then + sinon.assert.callCount(spyOnClose, 1) + sinon.assert.calledWith(spyOnClose, sinon.match.truthy) + sinon.assert.callCount(spyOnOpen, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + + it('should close portal when it is fired and has isOpen: false configured', () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + isOpen: false, + onClose: spyOnClose, + onOpen: spyOnOpen + } + + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(CLOSE)) + + // Then + sinon.assert.callCount(spyOnClose, 1) + sinon.assert.calledWith(spyOnClose, sinon.match.truthy) + sinon.assert.callCount(spyOnOpen, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + }) + + describe('open', () => { + it('should open portal when it is fired', async () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + onClose: spyOnClose, + onOpen: spyOnOpen + } + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(OPEN)) + + // Then + sinon.assert.callCount(spyOnOpen, 0) + await waitFor(() => + expect(sinon.assert.callCount(spyOnOpen, 1), {interval: 100}) + ) + sinon.assert.calledWith(spyOnOpen, sinon.match.truthy) + sinon.assert.callCount(spyOnClose, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + }) + + it('should open portal when it is fired and has isOpen: true configured', async () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + isOpen: true, + onClose: spyOnClose, + onOpen: spyOnOpen + } + + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(OPEN)) + + // Then + sinon.assert.callCount(spyOnOpen, 0) + await waitFor(() => + expect(sinon.assert.callCount(spyOnOpen, 1), {interval: 100}) + ) + sinon.assert.calledWith(spyOnOpen, sinon.match.truthy) + sinon.assert.callCount(spyOnClose, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + }) + + it('should open portal when it is fired and has isOpen: false configured', async () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + isOpen: false, + onClose: spyOnClose, + onOpen: spyOnOpen + } + + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(OPEN)) + + // Then + sinon.assert.callCount(spyOnOpen, 0) + await waitFor(() => + expect(sinon.assert.callCount(spyOnOpen, 1), {interval: 100}) + ) + sinon.assert.calledWith(spyOnOpen, sinon.match.truthy) + sinon.assert.callCount(spyOnClose, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + }) + }) + + describe('toggle', () => { + it('should toggle portal when it is fired', () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + onClose: spyOnClose, + onOpen: spyOnOpen + } + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(TOGGLE)) + + // Then + sinon.assert.callCount(spyOnClose, 1) + sinon.assert.calledWith(spyOnClose, sinon.match.truthy) + sinon.assert.callCount(spyOnOpen, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + + it('should toggle portal when it is fired and has isOpen: true configured', () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + isOpen: true, + onClose: spyOnClose, + onOpen: spyOnOpen + } + + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(TOGGLE)) + + // Then + sinon.assert.callCount(spyOnClose, 1) + sinon.assert.calledWith(spyOnClose, sinon.match.truthy) + sinon.assert.callCount(spyOnOpen, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + }) + + it('should toggle portal when it is fired and has isOpen: false configured', async () => { + // Given + const spyOnClose = sinon.spy() + const spyOnOpen = sinon.spy() + const props = { + children: 'portal-content', + isOpen: false, + onClose: spyOnClose, + onOpen: spyOnOpen + } + + // When + const {getByTestId, getByText} = setup(props) + const portalContainerElement = getByTestId('portal-test-container') + const portalContainerOriginElement = getByTestId( + 'portal-test-container-origin' + ) + const portalContainerTargetElement = getByTestId( + 'portal-test-container-target' + ) + // Then + expect(portalContainerElement.innerHTML).to.be.a('string') + expect(portalContainerElement.innerHTML).to.not.have.lengthOf(0) + + expect(portalContainerOriginElement.innerHTML).to.be.a('string') + expect(portalContainerOriginElement.innerHTML).to.have.lengthOf(0) + + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.have.lengthOf(0) + // And + // When + fireEvent.click(getByText(TOGGLE)) + + // Then + sinon.assert.callCount(spyOnOpen, 0) + await waitFor(() => + expect(sinon.assert.callCount(spyOnOpen, 1), {interval: 100}) + ) + sinon.assert.calledWith(spyOnOpen, sinon.match.truthy) + sinon.assert.callCount(spyOnClose, 0) + expect(portalContainerTargetElement.innerHTML).to.be.a('string') + expect(portalContainerTargetElement.innerHTML).to.not.have.lengthOf(0) + }) }) }) }) From 3473272a6b95d6d493fb2d301902f7f5f12110fa Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 26 Oct 2022 07:47:28 +0000 Subject: [PATCH 240/243] chore(Root): Update coverage badges --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 562d99d815..fbdb1ab9de 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-71.86%25-orange) -![branches](https://shields.io/badge/branches-57.99%25-AA0000) -![functions](https://shields.io/badge/functions-59.01%25-AA0000) -![lines](https://shields.io/badge/lines-73.69%25-orange) +![statements](https://shields.io/badge/statements-72.32%25-orange) +![branches](https://shields.io/badge/branches-58.52%25-AA0000) +![functions](https://shields.io/badge/functions-59.5%25-AA0000) +![lines](https://shields.io/badge/lines-74.06%25-orange) ## ✨ Features From 62f8fc0e774d2fc5ef4e23b4d0903b474078f499 Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 26 Oct 2022 08:33:10 +0000 Subject: [PATCH 241/243] chore(Root): Update coverage badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fbdb1ab9de..226b8d42fa 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ SUI Components is an Open-Source, high quality library of React components that ## 🧪 Test Coverage -![statements](https://shields.io/badge/statements-72.32%25-orange) +![statements](https://shields.io/badge/statements-72.25%25-orange) ![branches](https://shields.io/badge/branches-58.52%25-AA0000) -![functions](https://shields.io/badge/functions-59.5%25-AA0000) -![lines](https://shields.io/badge/lines-74.06%25-orange) +![functions](https://shields.io/badge/functions-59.43%25-AA0000) +![lines](https://shields.io/badge/lines-73.98%25-orange) ## ✨ Features From fe4f09d7778bfa4f43590a2feb591c364a5fad6c Mon Sep 17 00:00:00 2001 From: sui-bot Date: Wed, 26 Oct 2022 08:34:09 +0000 Subject: [PATCH 242/243] release(components/atom/slider): v1.31.0 [skip ci] --- components/atom/slider/CHANGELOG.md | 11 +++++++++++ components/atom/slider/package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/components/atom/slider/CHANGELOG.md b/components/atom/slider/CHANGELOG.md index 858af22095..9be89c266a 100644 --- a/components/atom/slider/CHANGELOG.md +++ b/components/atom/slider/CHANGELOG.md @@ -1,5 +1,16 @@ # CHANGELOG +# 1.31.0 (2022-10-26) + + +### Features + +* **components/atom/slider:** add fullWidth prop ([2e766ac](https://github.com/SUI-Components/sui-components/commit/2e766ac76f541ace7ba857ed2712537ee1fd3a92)) +* **components/atom/slider:** remove console ([d069a1d](https://github.com/SUI-Components/sui-components/commit/d069a1df550410204ad9e0c487da1ea13e364a9b)) +* **components/atom/slider:** rename to isFullWidth ([4240527](https://github.com/SUI-Components/sui-components/commit/4240527a974518ffef3d76ee7d7a2be3fbfc7492)) + + + # 1.30.0 (2022-10-01) diff --git a/components/atom/slider/package.json b/components/atom/slider/package.json index b05be9a37f..d4a53b08ef 100644 --- a/components/atom/slider/package.json +++ b/components/atom/slider/package.json @@ -1,6 +1,6 @@ { "name": "@s-ui/react-atom-slider", - "version": "1.30.0", + "version": "1.31.0", "description": "", "main": "lib/index.js", "scripts": { From ae8e604e3155ff5135d240242b5b9f709a8583e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Alvarez=20Sordo?= Date: Wed, 26 Oct 2022 11:22:49 +0200 Subject: [PATCH 243/243] fix(components/molecule/radioButtonGroup): props not being passed --- components/molecule/radioButtonGroup/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/molecule/radioButtonGroup/src/index.js b/components/molecule/radioButtonGroup/src/index.js index c3e4e050f4..8cee241a08 100644 --- a/components/molecule/radioButtonGroup/src/index.js +++ b/components/molecule/radioButtonGroup/src/index.js @@ -27,7 +27,7 @@ const MoleculeRadioButtonGroup = ({ checked: ownProps.value === innerValue, onChange: handleChangeGroup, name, - props + ...props }, ownProps )