{ "version": 3, "sources": ["../../../../../../node_modules/@contentful/rich-text-types/src/blocks.ts", "../../../../../../node_modules/@contentful/rich-text-types/src/inlines.ts", "../../../../../../node_modules/@contentful/rich-text-types/src/marks.ts", "../../../../../../node_modules/@contentful/rich-text-types/src/schemaConstraints.ts", "../../../../../../node_modules/@contentful/rich-text-types/dist/types.js", "../../../../../../node_modules/@contentful/rich-text-types/dist/nodeTypes.js", "../../../../../../node_modules/@contentful/rich-text-types/src/emptyDocument.ts", "../../../../../../node_modules/@contentful/rich-text-types/src/helpers.ts", "../../../../../../node_modules/@contentful/rich-text-types/src/schemas/index.ts", "../../../../../../node_modules/@contentful/rich-text-types/src/index.ts", "../../../../../../internal/esbuild/entrypoints/modern/classic/discover.ts", "sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=f5085417-2e2d-4674-9dde-02995b019f7c", "../../../../../../internal/esbuild/entrypoints/modern/classic/discover.ts", "../../src/modern/features/discover/index.tsx", "../../src/modern/components/Menu/Sausage/index.js", "../../src/modern/components/Menu/Sausage/item.js", "../../src/modern/components/Menu/Sausage/list.js", "../../src/modern/features/discover/utils/data.ts", "../../src/modern/features/discover/hooks/usePartnersOperation.ts", "../../src/modern/features/discover/UFE.ts", "../../src/modern/features/discover/components/Partners.tsx", "../../../../../../owl-nest/common/rich-text/src/RichText.tsx", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/index.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/blocks.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/inlines.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/marks.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/schemaConstraints.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/types.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/nodeTypes.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/emptyDocument.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/helpers.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/index.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/assert.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/errors.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/node.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/path.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/text.mjs", "../../../../../../node_modules/@contentful/rich-text-react-renderer/src/util/appendKeyToValidElement.ts", "../../../../../../node_modules/@contentful/rich-text-react-renderer/src/util/nodeListToReactComponents.tsx", "../../../../../../node_modules/@contentful/rich-text-react-renderer/src/index.tsx", "../../src/modern/features/discover/views/SearchSection.tsx", "../../src/modern/features/discover/hooks/useSearch.ts", "../../src/modern/features/discover/utils/filters.ts", "../../src/modern/features/discover/components/searchbar/index.tsx", "../../src/modern/features/discover/components/searchbar/AutosizeInput.tsx", "../../src/modern/features/discover/components/filtersbar/index.tsx", "../../src/modern/features/discover/components/filtersbar/MobileFiltersList.tsx", "../../src/modern/features/discover/components/filtersbar/HorizontalScroller.tsx", "../../src/modern/features/discover/components/filtersbar/styles.ts", "../../src/modern/features/discover/components/filtersbar/DesktopFiltersList.tsx", "../../src/modern/features/discover/components/filtersbar/FilterOptionsList.tsx", "../../src/modern/features/discover/components/noresults/index.tsx", "../../src/modern/features/discover/components/results/index.tsx"], "sourcesContent": ["/**\n * Map of all Contentful block types. Blocks contain inline or block nodes.\n */\nexport enum BLOCKS {\n DOCUMENT = 'document',\n PARAGRAPH = 'paragraph',\n\n HEADING_1 = 'heading-1',\n HEADING_2 = 'heading-2',\n HEADING_3 = 'heading-3',\n HEADING_4 = 'heading-4',\n HEADING_5 = 'heading-5',\n HEADING_6 = 'heading-6',\n\n OL_LIST = 'ordered-list',\n UL_LIST = 'unordered-list',\n LIST_ITEM = 'list-item',\n\n HR = 'hr',\n QUOTE = 'blockquote',\n\n EMBEDDED_ENTRY = 'embedded-entry-block',\n EMBEDDED_ASSET = 'embedded-asset-block',\n EMBEDDED_RESOURCE = 'embedded-resource-block',\n\n TABLE = 'table',\n TABLE_ROW = 'table-row',\n TABLE_CELL = 'table-cell',\n TABLE_HEADER_CELL = 'table-header-cell',\n}\n", "/**\n * Map of all Contentful inline types. Inline contain inline or text nodes.\n *\n * @note This should be kept in alphabetical order since the\n * [validation package](https://github.com/contentful/content-stack/tree/master/packages/validation)\n * relies on the values being in a predictable order.\n */\nexport enum INLINES {\n ASSET_HYPERLINK = 'asset-hyperlink',\n EMBEDDED_ENTRY = 'embedded-entry-inline',\n EMBEDDED_RESOURCE = 'embedded-resource-inline',\n ENTRY_HYPERLINK = 'entry-hyperlink',\n HYPERLINK = 'hyperlink',\n RESOURCE_HYPERLINK = 'resource-hyperlink',\n}\n", "/**\n * Map of all Contentful marks.\n */\nexport enum MARKS {\n BOLD = 'bold',\n ITALIC = 'italic',\n UNDERLINE = 'underline',\n CODE = 'code',\n SUPERSCRIPT = 'superscript',\n SUBSCRIPT = 'subscript',\n STRIKETHROUGH = 'strikethrough',\n}\n", "import { BLOCKS } from './blocks';\nimport { INLINES } from './inlines';\nimport { MARKS } from './marks';\n\nexport type TopLevelBlockEnum =\n | BLOCKS.PARAGRAPH\n | BLOCKS.HEADING_1\n | BLOCKS.HEADING_2\n | BLOCKS.HEADING_3\n | BLOCKS.HEADING_4\n | BLOCKS.HEADING_5\n | BLOCKS.HEADING_6\n | BLOCKS.OL_LIST\n | BLOCKS.UL_LIST\n | BLOCKS.HR\n | BLOCKS.QUOTE\n | BLOCKS.EMBEDDED_ENTRY\n | BLOCKS.EMBEDDED_ASSET\n | BLOCKS.EMBEDDED_RESOURCE\n | BLOCKS.TABLE;\n\n/**\n * Array of all top level block types.\n * Only these block types can be the direct children of the document.\n */\nexport const TOP_LEVEL_BLOCKS: TopLevelBlockEnum[] = [\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE,\n BLOCKS.TABLE,\n];\n\nexport type ListItemBlockEnum =\n | BLOCKS.PARAGRAPH\n | BLOCKS.HEADING_1\n | BLOCKS.HEADING_2\n | BLOCKS.HEADING_3\n | BLOCKS.HEADING_4\n | BLOCKS.HEADING_5\n | BLOCKS.HEADING_6\n | BLOCKS.OL_LIST\n | BLOCKS.UL_LIST\n | BLOCKS.HR\n | BLOCKS.QUOTE\n | BLOCKS.EMBEDDED_ENTRY\n | BLOCKS.EMBEDDED_ASSET\n | BLOCKS.EMBEDDED_RESOURCE;\n\n/**\n * Array of all allowed block types inside list items\n */\nexport const LIST_ITEM_BLOCKS: TopLevelBlockEnum[] = [\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE,\n];\n\nexport const TABLE_BLOCKS = [\n BLOCKS.TABLE,\n BLOCKS.TABLE_ROW,\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL,\n];\n\n/**\n * Array of all void block types\n */\nexport const VOID_BLOCKS = [\n BLOCKS.HR,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE,\n];\n\n/**\n * Dictionary of all container block types, and the set block types they accept as children.\n *\n * Note: This does not include `[BLOCKS.DOCUMENT]: TOP_LEVEL_BLOCKS`\n */\nexport const CONTAINERS = {\n [BLOCKS.OL_LIST]: [BLOCKS.LIST_ITEM],\n [BLOCKS.UL_LIST]: [BLOCKS.LIST_ITEM],\n [BLOCKS.LIST_ITEM]: LIST_ITEM_BLOCKS,\n [BLOCKS.QUOTE]: [BLOCKS.PARAGRAPH],\n [BLOCKS.TABLE]: [BLOCKS.TABLE_ROW],\n [BLOCKS.TABLE_ROW]: [BLOCKS.TABLE_CELL, BLOCKS.TABLE_HEADER_CELL],\n [BLOCKS.TABLE_CELL]: [BLOCKS.PARAGRAPH, BLOCKS.UL_LIST, BLOCKS.OL_LIST],\n [BLOCKS.TABLE_HEADER_CELL]: [BLOCKS.PARAGRAPH],\n};\n\n/**\n * Array of all heading levels\n */\nexport const HEADINGS = [\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n];\n\n/**\n * Array of all block types that may contain text and inline nodes.\n */\nexport const TEXT_CONTAINERS = [BLOCKS.PARAGRAPH, ...HEADINGS];\n\n/**\n * Node types before `tables` release.\n */\nexport const V1_NODE_TYPES = [\n BLOCKS.DOCUMENT,\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.LIST_ITEM,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n INLINES.HYPERLINK,\n INLINES.ENTRY_HYPERLINK,\n INLINES.ASSET_HYPERLINK,\n INLINES.EMBEDDED_ENTRY,\n 'text',\n];\n\n/**\n * Marks before `superscript` & `subscript` release.\n */\nexport const V1_MARKS = [MARKS.BOLD, MARKS.CODE, MARKS.ITALIC, MARKS.UNDERLINE];\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=nodeTypes.js.map", "import { BLOCKS } from './blocks';\nimport { Document } from './types';\n\n/**\n * A rich text document considered to be empty.\n * Any other document structure than this is not considered empty.\n */\nexport const EMPTY_DOCUMENT: Document = {\n nodeType: BLOCKS.DOCUMENT,\n data: {},\n content: [\n {\n nodeType: BLOCKS.PARAGRAPH,\n data: {},\n content: [\n {\n nodeType: 'text',\n value: '',\n marks: [],\n data: {},\n },\n ],\n },\n ],\n};\n", "import { BLOCKS } from './blocks';\nimport { INLINES } from './inlines';\nimport { Block, Inline, Node, Text } from './types';\n\n/**\n * Tiny replacement for Object.values(object).includes(key) to\n * avoid including CoreJS polyfills\n */\nfunction hasValue(obj: Record, value: unknown) {\n for (const key of Object.keys(obj)) {\n if (value === obj[key]) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Checks if the node is an instance of Inline.\n */\nexport function isInline(node: Node): node is Inline {\n return hasValue(INLINES, node.nodeType);\n}\n\n/**\n * Checks if the node is an instance of Block.\n */\nexport function isBlock(node: Node): node is Block {\n return hasValue(BLOCKS, node.nodeType);\n}\n\n/**\n * Checks if the node is an instance of Text.\n */\nexport function isText(node: Node): node is Text {\n return node.nodeType === 'text';\n}\n", "export declare type PrimitiveType = number | boolean | string | null;\nexport declare type Definition = {\n $ref?: string;\n $schema?: string;\n $id?: string;\n description?: string;\n allOf?: Definition[];\n oneOf?: Definition[];\n anyOf?: Definition[];\n title?: string;\n type?: string | string[];\n definitions?: {\n [key: string]: any;\n };\n format?: string;\n items?: Definition | Definition[];\n minItems?: number;\n additionalItems?:\n | {\n anyOf: Definition[];\n }\n | Definition;\n enum?: PrimitiveType[] | Definition[];\n default?: PrimitiveType | Record;\n additionalProperties?: Definition | boolean;\n required?: string[];\n propertyOrder?: string[];\n properties?: {\n [key: string]: any;\n };\n defaultProperties?: string[];\n patternProperties?: {\n [pattern: string]: Definition;\n };\n typeof?: 'function';\n};\n\nexport function getSchemaWithNodeType(nodeType: string): Definition {\n try {\n return require(`./generated/${nodeType}.json`);\n } catch (error) {\n throw new Error(`Schema for nodeType \"${nodeType}\" was not found.`);\n }\n}\n", "export { BLOCKS } from './blocks';\nexport { INLINES } from './inlines';\nexport { MARKS } from './marks';\n\nexport * from './schemaConstraints';\n\nexport * from './types';\nexport * from './nodeTypes';\n\nexport { EMPTY_DOCUMENT } from './emptyDocument';\n\nimport * as helpers from './helpers';\nexport { helpers };\n\nexport { getSchemaWithNodeType } from './schemas';\n", "\n import \"_sentry-debug-id-injection-stub\";\n import * as OriginalModule from \"./internal/esbuild/entrypoints/modern/classic/discover.ts\";\n export default OriginalModule.default;\n export * from \"./internal/esbuild/entrypoints/modern/classic/discover.ts\";", "!function(){try{var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\"e6b56db6-2012-4494-8c4d-e29071060269\",e._sentryDebugIdIdentifier=\"sentry-dbid-e6b56db6-2012-4494-8c4d-e29071060269\");}catch(e){}}();", "import '../../../../../src/ulule/static/site/src/modern/features/init/index.js'\nimport '../../../../../src/ulule/static/site/src/modern/features/discover/index.js'\n", "import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\nimport { styled } from 'next-yak'\n\nimport * as env from '@owl-nest/config'\nimport * as logger from '@owl-nest/logger'\nimport * as services from '@owl-nest/services'\n\nimport SausageMenu from '$components/Menu/Sausage'\n\nimport { processData } from './utils/data'\nimport { usePartnersOperation } from './hooks/usePartnersOperation'\nimport * as UFE from './UFE'\nimport { Partners } from './components/Partners'\nimport SearchSection from './views/SearchSection'\n\nfunction renderApp() {\n logger.setTag('feature', 'discover')\n\n const language = env.getUserLocale()\n\n if (process.env.NODE_ENV !== 'production') {\n console.log(`React is renderering app for language=${language}`)\n }\n\n // Process JSON data before give it to React app\n const data = processData(UFE.DISCOVER_DATA)\n\n // Render app\n const container = document.getElementById('react-app-root')\n const root = ReactDOM.createRoot(container as HTMLElement)\n root.render()\n}\n\n// Initialize application\nwindow.addEventListener('js:location:loaded', async () => {\n renderApp()\n})\n\nfunction App({ data }: { data: any }) {\n const auth = services.user.useAuth()\n\n const { partnersOperations } = usePartnersOperation()\n\n const onGoingPartnersOperations =\n partnersOperations.filter(\n (predicate) => predicate.status === services.partnersOperation.PartnerOperationStatus.ONGOING,\n ) ?? ([] as services.partnersOperation.OngoingPartnersOperation[])\n\n // HACK: double spinner here (with the one in the template /frontend/src/ulule/templates/ulule/presale/index/discover.html#L34-L35)\n // because we need to initialize the auth to know whether the user is logged in or not\n // to get the correct extra fields on the initial render of SearchSection\n if (auth.type === 'initial') {\n return (\n \n
\n
\n
\n
\n
\n
\n )\n }\n\n return (\n <>\n \n\n
\n \n
\n\n {onGoingPartnersOperations.length > 0 && }\n \n )\n}\n\nconst Wrapper = styled.div`\n justify-content: center;\n align-items: center;\n display: flex;\n height: 50vh;\n`\n", "import React from 'react'\nimport MediaQuery from 'react-responsive'\nimport { styled } from 'next-yak'\n\nimport { SausageItem } from './item'\nimport { SausageList } from './list'\n\nconst SausageWrapper = styled.div`\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n height: 75px;\n border-top: 1px solid #e0e0e0;\n border-bottom: 1px solid #e0e0e0;\n align-items: center;\n display: flex;\n padding: 0;\n background-color: #faf8f5;\n\n @media (max-width: 768px) {\n width: 100%;\n overflow-x: scroll;\n }\n`\n\nclass Sausage extends React.Component {\n wrapperRef = React.createRef()\n\n constructor(props) {\n super(props)\n\n this.state = {\n hover: false,\n }\n }\n\n componentDidMount() {\n const body = this.wrapperRef.current\n const list = body.firstChild\n const listSize = list.getBoundingClientRect()\n this.setState({\n width: listSize.width,\n })\n }\n\n handleHover = (hoverState) => {\n this.setState({\n hover: hoverState,\n })\n }\n\n render() {\n const { items } = this.props\n const { width, hover } = this.state\n return (\n this.handleHover(false)}\n onMouseOver={() => this.handleHover(true)}\n ref={this.wrapperRef}\n width={width}\n >\n \n {items &&\n items.length &&\n items.map((element, key) => {\n return \n })}\n \n \n \n {items &&\n items.length &&\n items.map((element, key) => {\n return \n })}\n \n \n \n )\n }\n}\n\nexport default Sausage\n", "import React from 'react'\nimport { styled } from 'next-yak'\n\nimport { RegularText, COLORS } from '@ulule/owl-kit-components'\n\nconst SausageItemWrapper = styled.li`\n margin-left: 17px;\n margin-right: 17px;\n`\n\nconst SausageItemText = styled(RegularText)`\n font-size: 13px;\n font-weight: bold;\n color: ${COLORS.PRIMARY_BLUE_500};\n text-transform: uppercase;\n\n &:hover {\n color: ${COLORS.TEXT_LINK_HOVER};\n }\n`\n\nexport const SausageItem = ({ element }) => (\n \n \n {element && element.name}\n \n \n)\n", "import React from 'react'\nimport { styled, keyframes } from 'next-yak'\nimport { withPrivatePublicMap } from '@owl-nest/yak/extra-runtime'\n\nconst anim = keyframes`\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n`\n\nconst PrivateSausageList = styled.ul`\n list-style: none;\n display: inline-flex;\n animation: ${anim} 140s linear infinite;\n animation-play-state: ${(props) => (props.$isHover ? 'paused' : 'running')};\n padding: 0;\n @media (max-width: 768px) {\n animation-play-state: paused;\n }\n`\n\nexport const SausageList = withPrivatePublicMap(\n PrivateSausageList,\n ({ isHover, ...props }) => ({\n ...props,\n $isHover: isHover,\n }),\n true,\n)\n", "export function processData(json: any) {\n // TODO: Temporarily hide filters cities and regions for all countries (until it works)\n const processedJson = { ...json, filters: json.filters.filter((f) => f.name !== 'regions' && f.name !== 'cities') }\n\n return processedJson\n}\n", "import * as React from 'react'\n\nimport * as services from '@owl-nest/services'\nimport * as contentful from '@owl-nest/contentful'\nimport { rawRequester, GraphQLClient } from '@owl-nest/graphql'\nimport * as env from '@owl-nest/config'\nimport * as api from '@owl-nest/api-client/latest'\n\nexport function usePartnersOperation() {\n const language = env.getUserLocale()\n const locale = language === 'fr' || language === 'en' ? api.LOCALES[language] : 'fr-FR'\n\n const request = React.useMemo(() => {\n const environnement = env.CONTENTFUL_ENVIRONMENT ?? 'master'\n const space = env.CONTENTFUL_SPACE_ID\n const accessToken = env.CONTENTFUL_DELIVERY_TOKEN_MASTER\n\n const client = rawRequester(\n new GraphQLClient(\n `https://graphql.contentful.com/content/v1/spaces/${space}/environments/${environnement}?access_token=${accessToken}`,\n ),\n )\n\n return contentful.requester(client)\n }, [])\n\n const { response } = services.partnersOperation.usePartnersOperationCollection({\n params: { locale: locale },\n request,\n })\n\n const partnersOperations = response.data?.partnersOperationCollection?.items ?? []\n\n return {\n partnersOperations,\n }\n}\n", "import * as env from '@owl-nest/config'\n\ntype Illustration = {\n x1: string\n x2: string\n x3: string\n}\n\ntype Window = {\n UFE: {\n urls: { [any: string]: string }\n assets: {\n modalRemindMe: Illustration\n }\n }\n DISCOVER_DATA: {\n categories: {\n absolute_url: string\n id: number\n name: string\n slug: string\n }[]\n filters: {\n label: string\n name: string\n options: {\n id?: number\n label: string\n value: string\n }[]\n position: number\n }[]\n partners: any[]\n sorting: {\n label: string\n value: string\n }[]\n tags: {\n absolute_url: string\n id: number\n slug: string\n name: string\n }[]\n }\n DISCOVER_ASSETS: {\n noResults: Illustration\n }\n}\n\nconst windowLens = env.lens()\n\nexport const DEFAULT_ASSETS = windowLens.get('UFE').get('assets').value(globalThis)\nexport const ASSETS = windowLens.get('DISCOVER_ASSETS').value(globalThis)\nexport const DISCOVER_DATA = windowLens.get('DISCOVER_DATA').value(globalThis)\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { RichText } from '@owl-nest/rich-text'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as services from '@owl-nest/services'\nimport * as shadow from '@owl-nest/shadow'\nimport * as plume from '@ulule/owl-kit-components/next'\n\ntype PartnersProps = {\n partners: services.partnersOperation.OngoingPartnersOperation[]\n}\n\nexport function Partners({ partners }: PartnersProps): React.ReactElement {\n if (partners.length === 0) {\n return <>\n }\n\n return (\n \n \n \n {tc('[highlight: Partners] for your creative projects', {\n highlight: ,\n })}\n \n \n\n \n \n {partners.map((partnerOperation, index) => {\n return \n })}\n \n \n {t('See all calls for proposals')}\n \n )\n}\n\nfunction PartnerOperationCardWithTracking({\n partnerOperation,\n}: {\n partnerOperation: services.partnersOperation.OngoingPartnersOperation\n}): React.ReactElement {\n const partnerOperationRef = React.useRef(null)\n\n shadow.usePartnershipTracker(partnerOperation.partnerUserId ?? undefined, partnerOperationRef, {\n click: {\n enabled: false,\n },\n eventPosition: `homepage-partner-${partnerOperation.partnerUserId}`,\n ignoreLocationChange: true,\n impression: {\n enabled: true,\n once: true,\n },\n })\n\n return (\n
  • \n \n ) : null,\n keyTitle: 'À la clé',\n keyList: partnerOperation.keyList ? (\n \n ) : null,\n buttonMore: 'En savoir plus',\n link: 'Voir les projets participants',\n }}\n pictureUrl={partnerOperation.cover?.url}\n pictureSrcSet={`${partnerOperation.cover?.url} 1x, ${partnerOperation.cover?.url_2x} 2x, ${partnerOperation.cover?.url_3x} 3x`}\n isOngoing={partnerOperation.status === services.partnersOperation.PartnerOperationStatus.ONGOING}\n buttonUrl={partnerOperation.urlMore}\n linkUrl={partnerOperation.urlProjectList ?? undefined}\n />\n
  • \n )\n}\n\nconst CenteredCTA = styled(plume.ButtonAsLink)`\n display: block;\n margin: 40px auto 0;\n text-align: center;\n width: fit-content;\n`\n\nconst List = styled.ul`\n list-style: none;\n padding: 0 16px;\n white-space: nowrap;\n\n ${plume.PartnerOperationCard} {\n height: 100%;\n height: -webkit-fill-available;\n min-height: 250px;\n width: 100%;\n max-width: 70vw;\n\n @media screen and ${plume.BREAKPOINTS.MOBILE_L} {\n max-width: 60vw;\n }\n }\n\n ${plume.SlidingCarousel} {\n gap: 8px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.SlidingCarousel} {\n display: grid;\n gap: 20px;\n grid-template-columns: repeat(6, 320px);\n padding: 0;\n width: 100%;\n }\n\n ${plume.PartnerOperationCard} {\n min-height: 250px;\n }\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n ${plume.SlidingCarousel} {\n grid-template-rows: auto auto;\n gap: 33px;\n }\n }\n`\n\nconst Wrapper = styled.div`\n box-sizing: border-box;\n margin-bottom: 40px;\n margin: 0 12px;\n max-width: 1080px;\n padding-bottom: 1.5384615385rem;\n padding-top: 3.0769230769rem;\n overflow: hidden;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n overflow: visible;\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n margin: 0 auto;\n }\n`\n\nconst TitleGroup = styled.header`\n margin: 0 16px 36px;\n max-width: 1330px;\n width: 89%;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin: 0 16px 36px;\n }\n`\n\nconst SectionTitle = styled(plume.styles.heading.L).attrs({ asDesktop: 'XL' })``\n", "import * as React from 'react'\nimport {\n documentToReactComponents,\n type RenderMark,\n type RenderNode,\n type Options,\n} from '@contentful/rich-text-react-renderer'\nimport * as richtext from '@contentful/rich-text-types'\n\nimport * as contentful from '@owl-nest/contentful'\n\nexport type RichTextProps = {\n document: richtext.Document\n links?: {\n assets?: {\n block: contentful.Asset[]\n }\n entries?: {\n block: ENTRY[]\n }\n }\n renderEntry?: (entry: ENTRY) => React.ReactNode\n renderMark?: {\n Bold?: React.ComponentType<{ children: React.ReactNode }>\n Italic?: React.ComponentType<{ children: React.ReactNode }>\n Underline?: React.ComponentType<{ children: React.ReactNode }>\n }\n renderNode?: {\n Paragraph?: React.ComponentType<{ children: React.ReactNode }>\n Title1?: React.ComponentType<{ children: React.ReactNode }>\n Title2?: React.ComponentType<{ children: React.ReactNode }>\n Title3?: React.ComponentType<{ children: React.ReactNode }>\n Title4?: React.ComponentType<{ children: React.ReactNode }>\n Title5?: React.ComponentType<{ children: React.ReactNode }>\n Title6?: React.ComponentType<{ children: React.ReactNode }>\n UnorderedList?: React.ComponentType<{ children: React.ReactNode }>\n OrderedList?: React.ComponentType<{ children: React.ReactNode }>\n ListItem?: React.ComponentType<{ children: React.ReactNode }>\n BlockQuote?: React.ComponentType<{ children: React.ReactNode }>\n Table?: React.ComponentType<{ children: React.ReactNode }>\n TableCell?: React.ComponentType<{ children: React.ReactNode }>\n TableHeaderCell?: React.ComponentType<{ children: React.ReactNode }>\n TableRow?: React.ComponentType<{ children: React.ReactNode }>\n Hyperlink?: (props: { uri: string; children: React.ReactNode }) => React.ReactElement\n EmbeddedAsset?: (props: { asset: contentful.Asset }) => React.ReactElement\n }\n}\n\nexport function RichText({\n document,\n links,\n renderEntry,\n renderMark,\n renderNode,\n}: RichTextProps): React.ReactElement> {\n const blockAssetMap = new Map()\n const blockEntryMap = new Map()\n\n for (const asset of links?.assets?.block || []) {\n blockAssetMap.set(asset.sys.id, asset)\n }\n for (const entry of links?.entries?.block || []) {\n blockEntryMap.set(entry.sys.id, entry)\n }\n\n const richTextOptions = React.useMemo(\n () => ({\n renderMark: {\n [richtext.MARKS.BOLD]: makeRenderMark(renderMark?.Bold),\n [richtext.MARKS.ITALIC]: makeRenderMark(renderMark?.Italic),\n [richtext.MARKS.UNDERLINE]: makeRenderMark(renderMark?.Underline),\n },\n renderNode: {\n [richtext.BLOCKS.PARAGRAPH]: makeRenderNode(renderNode?.Paragraph),\n [richtext.BLOCKS.HEADING_1]: makeRenderNode(renderNode?.Title1),\n [richtext.BLOCKS.HEADING_2]: makeRenderNode(renderNode?.Title2),\n [richtext.BLOCKS.HEADING_3]: makeRenderNode(renderNode?.Title3),\n [richtext.BLOCKS.HEADING_4]: makeRenderNode(renderNode?.Title4),\n [richtext.BLOCKS.HEADING_5]: makeRenderNode(renderNode?.Title5),\n [richtext.BLOCKS.HEADING_6]: makeRenderNode(renderNode?.Title6),\n [richtext.BLOCKS.UL_LIST]: makeRenderNode(renderNode?.UnorderedList),\n [richtext.BLOCKS.OL_LIST]: makeRenderNode(renderNode?.OrderedList),\n [richtext.BLOCKS.LIST_ITEM]: makeRenderNode(renderNode?.ListItem),\n [richtext.BLOCKS.QUOTE]: makeRenderNode(renderNode?.BlockQuote),\n [richtext.BLOCKS.TABLE]: makeRenderNode(renderNode?.Table),\n [richtext.BLOCKS.TABLE_CELL]: makeRenderNode(renderNode?.TableCell),\n [richtext.BLOCKS.TABLE_HEADER_CELL]: makeRenderNode(renderNode?.TableHeaderCell),\n [richtext.BLOCKS.TABLE_ROW]: makeRenderNode(renderNode?.TableRow),\n [richtext.INLINES.HYPERLINK]: (node, children) => {\n const Hyperlink = renderNode?.Hyperlink\n if (!Hyperlink) {\n return <>\n }\n return {children}\n },\n [richtext.BLOCKS.EMBEDDED_ASSET]: (node) => {\n const asset = blockAssetMap.get(node.data.target.sys.id)\n\n const EmbeddedAsset = renderNode?.EmbeddedAsset\n\n if (asset === undefined || EmbeddedAsset === undefined) {\n return <>\n }\n\n if (EmbeddedAsset) {\n return \n }\n },\n [richtext.BLOCKS.EMBEDDED_ENTRY]: (node) => {\n const entry = blockEntryMap.get(node.data.target.sys.id)\n if (entry === undefined || renderEntry === undefined) {\n return <>\n }\n return renderEntry(entry)\n },\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n )\n\n return <>{documentToReactComponents(document, richTextOptions)}\n}\n\nfunction makeRenderMark(Component?: React.ComponentType<{ children: React.ReactNode }>): RenderMark[string] {\n // eslint-disable-next-line react/display-name\n return (text) => {\n if (!Component) {\n return <>\n }\n return {text}\n }\n}\n\nfunction makeRenderNode(Component?: React.ComponentType<{ children: React.ReactNode }>): RenderNode[string] {\n // eslint-disable-next-line react/display-name\n return (node, children) => {\n if (!Component) {\n return <>\n }\n return {children}\n }\n}\n", "export { BLOCKS } from './blocks.mjs';\nexport { INLINES } from './inlines.mjs';\nexport { MARKS } from './marks.mjs';\nexport * from './schemaConstraints.mjs';\nexport * from './types.mjs';\nexport * from './nodeTypes.mjs';\nexport { EMPTY_DOCUMENT } from './emptyDocument.mjs';\nimport * as helpers from './helpers.mjs';\nexport { helpers };\nexport { validateRichTextDocument } from './validator/index.mjs';\n", "export var BLOCKS = /*#__PURE__*/ function(BLOCKS) {\n BLOCKS[\"DOCUMENT\"] = \"document\";\n BLOCKS[\"PARAGRAPH\"] = \"paragraph\";\n BLOCKS[\"HEADING_1\"] = \"heading-1\";\n BLOCKS[\"HEADING_2\"] = \"heading-2\";\n BLOCKS[\"HEADING_3\"] = \"heading-3\";\n BLOCKS[\"HEADING_4\"] = \"heading-4\";\n BLOCKS[\"HEADING_5\"] = \"heading-5\";\n BLOCKS[\"HEADING_6\"] = \"heading-6\";\n BLOCKS[\"OL_LIST\"] = \"ordered-list\";\n BLOCKS[\"UL_LIST\"] = \"unordered-list\";\n BLOCKS[\"LIST_ITEM\"] = \"list-item\";\n BLOCKS[\"HR\"] = \"hr\";\n BLOCKS[\"QUOTE\"] = \"blockquote\";\n BLOCKS[\"EMBEDDED_ENTRY\"] = \"embedded-entry-block\";\n BLOCKS[\"EMBEDDED_ASSET\"] = \"embedded-asset-block\";\n BLOCKS[\"EMBEDDED_RESOURCE\"] = \"embedded-resource-block\";\n BLOCKS[\"TABLE\"] = \"table\";\n BLOCKS[\"TABLE_ROW\"] = \"table-row\";\n BLOCKS[\"TABLE_CELL\"] = \"table-cell\";\n BLOCKS[\"TABLE_HEADER_CELL\"] = \"table-header-cell\";\n return BLOCKS;\n}({});\n", "export var INLINES = /*#__PURE__*/ function(INLINES) {\n INLINES[\"ASSET_HYPERLINK\"] = \"asset-hyperlink\";\n INLINES[\"EMBEDDED_ENTRY\"] = \"embedded-entry-inline\";\n INLINES[\"EMBEDDED_RESOURCE\"] = \"embedded-resource-inline\";\n INLINES[\"ENTRY_HYPERLINK\"] = \"entry-hyperlink\";\n INLINES[\"HYPERLINK\"] = \"hyperlink\";\n INLINES[\"RESOURCE_HYPERLINK\"] = \"resource-hyperlink\";\n return INLINES;\n}({});\n", "export var MARKS = /*#__PURE__*/ function(MARKS) {\n MARKS[\"BOLD\"] = \"bold\";\n MARKS[\"ITALIC\"] = \"italic\";\n MARKS[\"UNDERLINE\"] = \"underline\";\n MARKS[\"CODE\"] = \"code\";\n MARKS[\"SUPERSCRIPT\"] = \"superscript\";\n MARKS[\"SUBSCRIPT\"] = \"subscript\";\n MARKS[\"STRIKETHROUGH\"] = \"strikethrough\";\n return MARKS;\n}({});\n", "import { BLOCKS } from './blocks.mjs';\nimport { INLINES } from './inlines.mjs';\nimport { MARKS } from './marks.mjs';\nexport const TOP_LEVEL_BLOCKS = [\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE,\n BLOCKS.TABLE\n];\nexport const LIST_ITEM_BLOCKS = [\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE\n];\nexport const TABLE_BLOCKS = [\n BLOCKS.TABLE,\n BLOCKS.TABLE_ROW,\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL\n];\nexport const VOID_BLOCKS = [\n BLOCKS.HR,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE\n];\nexport const CONTAINERS = {\n [BLOCKS.OL_LIST]: [\n BLOCKS.LIST_ITEM\n ],\n [BLOCKS.UL_LIST]: [\n BLOCKS.LIST_ITEM\n ],\n [BLOCKS.LIST_ITEM]: LIST_ITEM_BLOCKS,\n [BLOCKS.QUOTE]: [\n BLOCKS.PARAGRAPH\n ],\n [BLOCKS.TABLE]: [\n BLOCKS.TABLE_ROW\n ],\n [BLOCKS.TABLE_ROW]: [\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL\n ],\n [BLOCKS.TABLE_CELL]: [\n BLOCKS.PARAGRAPH,\n BLOCKS.UL_LIST,\n BLOCKS.OL_LIST\n ],\n [BLOCKS.TABLE_HEADER_CELL]: [\n BLOCKS.PARAGRAPH\n ]\n};\nexport const HEADINGS = [\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6\n];\nexport const TEXT_CONTAINERS = [\n BLOCKS.PARAGRAPH,\n ...HEADINGS\n];\nexport const V1_NODE_TYPES = [\n BLOCKS.DOCUMENT,\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.LIST_ITEM,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n INLINES.HYPERLINK,\n INLINES.ENTRY_HYPERLINK,\n INLINES.ASSET_HYPERLINK,\n INLINES.EMBEDDED_ENTRY,\n 'text'\n];\nexport const V1_MARKS = [\n MARKS.BOLD,\n MARKS.CODE,\n MARKS.ITALIC,\n MARKS.UNDERLINE\n];\n", "export { };\n", "export { };\n", "import { BLOCKS } from './blocks.mjs';\nexport const EMPTY_DOCUMENT = {\n nodeType: BLOCKS.DOCUMENT,\n data: {},\n content: [\n {\n nodeType: BLOCKS.PARAGRAPH,\n data: {},\n content: [\n {\n nodeType: 'text',\n value: '',\n marks: [],\n data: {}\n }\n ]\n }\n ]\n};\n", "import { BLOCKS } from './blocks.mjs';\nimport { INLINES } from './inlines.mjs';\nfunction hasValue(obj, value) {\n for (const key of Object.keys(obj)){\n if (value === obj[key]) {\n return true;\n }\n }\n return false;\n}\nexport function isInline(node) {\n return hasValue(INLINES, node.nodeType);\n}\nexport function isBlock(node) {\n return hasValue(BLOCKS, node.nodeType);\n}\nexport function isText(node) {\n return node.nodeType === 'text';\n}\nexport function isEmptyParagraph(node) {\n if (node.nodeType !== BLOCKS.PARAGRAPH) {\n return false;\n }\n if (node.content.length !== 1) {\n return false;\n }\n const textNode = node.content[0];\n return textNode.nodeType === 'text' && textNode.value === '';\n}\nfunction isValidDocument(document) {\n return document != null && typeof document === 'object' && 'content' in document && Array.isArray(document.content);\n}\nconst MIN_NODES_FOR_STRIPPING = 2;\nexport function stripEmptyTrailingParagraphFromDocument(document) {\n if (!isValidDocument(document) || document.content.length < MIN_NODES_FOR_STRIPPING) {\n return document;\n }\n const lastNode = document.content[document.content.length - 1];\n if (isEmptyParagraph(lastNode)) {\n return {\n ...document,\n content: document.content.slice(0, -1)\n };\n }\n return document;\n}\n", "import { BLOCKS } from '../blocks.mjs';\nimport { INLINES } from '../inlines.mjs';\nimport { CONTAINERS, LIST_ITEM_BLOCKS, TOP_LEVEL_BLOCKS } from '../schemaConstraints.mjs';\nimport { ObjectAssertion } from './assert.mjs';\nimport { HyperLinkAssertion, assert, assertLink, VOID_CONTENT } from './node.mjs';\nimport { Path } from './path.mjs';\nimport { assertText } from './text.mjs';\nconst assertInlineOrText = assert([\n ...Object.values(INLINES),\n 'text'\n].sort());\nconst assertList = assert([\n BLOCKS.LIST_ITEM\n]);\nconst assertVoidEntryLink = assertLink('Entry', VOID_CONTENT);\nconst assertTableCell = assert(()=>({\n nodeTypes: [\n BLOCKS.PARAGRAPH\n ],\n min: 1\n }), (data, path)=>{\n const $ = new ObjectAssertion(data, path);\n $.noAdditionalProperties([\n 'colspan',\n 'rowspan'\n ]);\n $.number('colspan', true);\n $.number('rowspan', true);\n return $.errors;\n});\nconst nodeValidator = {\n [BLOCKS.DOCUMENT]: assert(TOP_LEVEL_BLOCKS),\n [BLOCKS.PARAGRAPH]: assertInlineOrText,\n [BLOCKS.HEADING_1]: assertInlineOrText,\n [BLOCKS.HEADING_2]: assertInlineOrText,\n [BLOCKS.HEADING_3]: assertInlineOrText,\n [BLOCKS.HEADING_4]: assertInlineOrText,\n [BLOCKS.HEADING_5]: assertInlineOrText,\n [BLOCKS.HEADING_6]: assertInlineOrText,\n [BLOCKS.QUOTE]: assert(CONTAINERS[BLOCKS.QUOTE]),\n [BLOCKS.EMBEDDED_ENTRY]: assertVoidEntryLink,\n [BLOCKS.EMBEDDED_ASSET]: assertLink('Asset', VOID_CONTENT),\n [BLOCKS.EMBEDDED_RESOURCE]: assertLink('Contentful:Entry', VOID_CONTENT),\n [BLOCKS.HR]: assert(VOID_CONTENT),\n [BLOCKS.OL_LIST]: assertList,\n [BLOCKS.UL_LIST]: assertList,\n [BLOCKS.LIST_ITEM]: assert([\n ...LIST_ITEM_BLOCKS\n ].sort()),\n [BLOCKS.TABLE]: assert(()=>({\n nodeTypes: [\n BLOCKS.TABLE_ROW\n ],\n min: 1\n })),\n [BLOCKS.TABLE_ROW]: assert(()=>({\n nodeTypes: [\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL\n ],\n min: 1\n })),\n [BLOCKS.TABLE_CELL]: assertTableCell,\n [BLOCKS.TABLE_HEADER_CELL]: assertTableCell,\n [INLINES.HYPERLINK]: new HyperLinkAssertion(),\n [INLINES.EMBEDDED_ENTRY]: assertVoidEntryLink,\n [INLINES.EMBEDDED_RESOURCE]: assertLink('Contentful:Entry', VOID_CONTENT),\n [INLINES.ENTRY_HYPERLINK]: assertLink('Entry', [\n 'text'\n ]),\n [INLINES.ASSET_HYPERLINK]: assertLink('Asset', [\n 'text'\n ]),\n [INLINES.RESOURCE_HYPERLINK]: assertLink('Contentful:Entry', [\n 'text'\n ])\n};\nfunction validateNode(node, path) {\n if (node.nodeType === 'text') {\n return assertText(node, path);\n }\n const errors = nodeValidator[node.nodeType].assert(node, path);\n if (errors.length > 0) {\n return errors;\n }\n const $ = new ObjectAssertion(node, path);\n $.each('content', (item, path)=>{\n return validateNode(item, path);\n });\n return $.errors;\n}\nexport const validateRichTextDocument = (document)=>{\n const path = new Path();\n const $ = new ObjectAssertion(document, path);\n if ($.object()) {\n $.enum('nodeType', [\n BLOCKS.DOCUMENT\n ]);\n }\n if ($.errors.length > 0) {\n return $.errors;\n }\n return validateNode(document, path);\n};\n", "import { maxSizeError, typeMismatchError, enumError, unknownPropertyError, requiredPropertyError, minSizeError } from './errors.mjs';\nexport class ObjectAssertion {\n obj;\n path;\n _errors = [];\n constructor(obj, path){\n this.obj = obj;\n this.path = path;\n }\n catch = (...errors)=>{\n this._errors.push(...errors);\n };\n get errors() {\n const serializeError = (error)=>JSON.stringify({\n details: error.details,\n path: error.path\n });\n return this._errors.filter((error, index)=>this._errors.findIndex((step)=>serializeError(error) === serializeError(step)) === index);\n }\n exists = (key)=>{\n if (key in this.obj) {\n return true;\n }\n this.catch(requiredPropertyError({\n property: key,\n path: this.path.of(key)\n }));\n return false;\n };\n object = (key)=>{\n const value = key ? this.obj[key] : this.obj;\n if (key) {\n if (!this.exists(key)) {\n return false;\n }\n }\n if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n return true;\n }\n const path = key ? this.path.of(key) : this.path;\n const property = key ?? this.path.last() ?? 'value';\n this.catch(typeMismatchError({\n typeName: 'Object',\n property,\n path,\n value\n }));\n return false;\n };\n string = (key)=>{\n const value = this.obj[key];\n if (key && !this.exists(key)) {\n return false;\n }\n if (typeof value === 'string') {\n return true;\n }\n this.catch(typeMismatchError({\n typeName: 'String',\n property: key,\n path: this.path.of(key),\n value\n }));\n return false;\n };\n number = (key, optional)=>{\n const value = this.obj[key];\n if (optional && !(key in this.obj)) {\n return true;\n }\n if (!this.exists(key)) {\n return false;\n }\n if (typeof value === 'number' && !Number.isNaN(value)) {\n return true;\n }\n this.catch(typeMismatchError({\n typeName: 'Number',\n property: key,\n path: this.path.of(key),\n value\n }));\n return false;\n };\n array = (key)=>{\n const value = this.obj[key];\n if (key && !this.exists(key)) {\n return false;\n }\n if (Array.isArray(value)) {\n return true;\n }\n this.catch(typeMismatchError({\n typeName: 'Array',\n property: key,\n path: this.path.of(key),\n value\n }));\n return false;\n };\n enum = (key, expected)=>{\n const value = this.obj[key];\n if (typeof value === 'string' && expected.includes(value)) {\n return true;\n }\n this.catch(enumError({\n expected,\n value,\n path: this.path.of(key)\n }));\n return false;\n };\n empty = (key)=>{\n if (!this.array(key)) {\n return false;\n }\n const value = this.obj[key];\n if (value.length === 0) {\n return true;\n }\n this.catch(maxSizeError({\n max: 0,\n value,\n path: this.path.of(key)\n }));\n return false;\n };\n minLength = (key, min)=>{\n if (!this.array(key)) {\n return false;\n }\n const value = this.obj[key];\n if (value.length >= min) {\n return true;\n }\n this.catch(minSizeError({\n min,\n value,\n path: this.path.of(key)\n }));\n return false;\n };\n noAdditionalProperties = (properties)=>{\n const unknowns = Object.keys(this.obj).sort().filter((key)=>!properties.includes(key));\n unknowns.forEach((property)=>this.catch(unknownPropertyError({\n property,\n path: this.path.of(property)\n })));\n return unknowns.length === 0;\n };\n each = (key, assert)=>{\n if (!this.array(key)) {\n return;\n }\n const value = this.obj[key];\n let foundErrors = false;\n value.forEach((item, index)=>{\n if (foundErrors) {\n return;\n }\n const errors = assert(item, this.path.of(key).of(index));\n if (errors.length > 0) {\n foundErrors = true;\n }\n this.catch(...errors);\n });\n };\n}\n", "export const typeMismatchError = ({ path, property, typeName, value })=>{\n return {\n details: `The type of \"${property}\" is incorrect, expected type: ${typeName}`,\n name: 'type',\n path: path.toArray(),\n type: typeName,\n value\n };\n};\nexport const minSizeError = ({ min, value, path })=>{\n return {\n name: 'size',\n min,\n path: path.toArray(),\n details: `Size must be at least ${min}`,\n value\n };\n};\nexport const maxSizeError = ({ max, value, path })=>{\n return {\n name: 'size',\n max,\n path: path.toArray(),\n details: `Size must be at most ${max}`,\n value\n };\n};\nexport const enumError = ({ expected, value, path })=>{\n return {\n details: `Value must be one of expected values`,\n name: 'in',\n expected: [\n ...expected\n ].sort(),\n path: path.toArray(),\n value\n };\n};\nexport const unknownPropertyError = ({ property, path })=>{\n return {\n details: `The property \"${property}\" is not expected`,\n name: 'unexpected',\n path: path.toArray()\n };\n};\nexport const requiredPropertyError = ({ property, path })=>{\n return {\n details: `The property \"${property}\" is required here`,\n name: 'required',\n path: path.toArray()\n };\n};\n", "import { ObjectAssertion } from './assert.mjs';\nexport const VOID_CONTENT = [];\nexport class NodeAssertion {\n contentRule;\n validateData;\n constructor(contentRule, validateData){\n this.contentRule = contentRule;\n this.validateData = validateData;\n }\n assert(node, path) {\n const $ = new ObjectAssertion(node, path);\n if (!$.object()) {\n return $.errors;\n }\n $.noAdditionalProperties([\n 'nodeType',\n 'data',\n 'content'\n ]);\n const { nodeTypes, min = 0 } = Array.isArray(this.contentRule) ? {\n nodeTypes: this.contentRule\n } : this.contentRule(node, path);\n if (nodeTypes.length === 0 && min > 0) {\n throw new Error(`Invalid content rule. Cannot have enforce a 'min' of ${min} with no nodeTypes`);\n }\n $.minLength('content', min);\n if (nodeTypes.length === 0) {\n $.empty('content');\n } else {\n $.each('content', (item, path)=>{\n const item$ = new ObjectAssertion(item, path);\n if (!item$.object()) {\n return item$.errors;\n }\n item$.enum('nodeType', nodeTypes);\n return item$.errors;\n });\n }\n if ($.object('data')) {\n const dataErrors = this.validateData?.(node.data, path.of('data')) ?? [];\n $.catch(...dataErrors);\n }\n return $.errors;\n }\n}\nexport class EntityLinkAssertion extends NodeAssertion {\n linkType;\n type;\n constructor(linkType, contentNodeTypes){\n super(contentNodeTypes, (data, path)=>this.assertLink(data, path)), this.linkType = linkType;\n this.type = this.linkType.startsWith('Contentful:') ? 'ResourceLink' : 'Link';\n }\n assertLink = (data, path)=>{\n const $ = new ObjectAssertion(data, path);\n if ($.object('target')) {\n const sys$ = new ObjectAssertion(data.target.sys, path.of('target').of('sys'));\n if (sys$.object()) {\n sys$.enum('type', [\n this.type\n ]);\n sys$.enum('linkType', [\n this.linkType\n ]);\n if (this.type === 'Link') {\n sys$.string('id');\n sys$.noAdditionalProperties([\n 'type',\n 'linkType',\n 'id'\n ]);\n } else if (this.type === 'ResourceLink') {\n sys$.string('urn');\n sys$.noAdditionalProperties([\n 'type',\n 'linkType',\n 'urn'\n ]);\n }\n }\n $.catch(...sys$.errors);\n }\n $.noAdditionalProperties([\n 'target'\n ]);\n return $.errors;\n };\n}\nexport class HyperLinkAssertion extends NodeAssertion {\n constructor(){\n super([\n 'text'\n ], (data, path)=>this.assertLink(data, path));\n }\n assertLink = (data, path)=>{\n const $ = new ObjectAssertion(data, path);\n $.string('uri');\n $.noAdditionalProperties([\n 'uri'\n ]);\n return $.errors;\n };\n}\nexport const assert = (contentRule, validateData)=>{\n return new NodeAssertion(contentRule, validateData);\n};\nexport const assertLink = (linkType, contentRule)=>{\n return new EntityLinkAssertion(linkType, contentRule);\n};\n", "export class Path {\n path;\n constructor(path = []){\n this.path = path;\n }\n of = (element)=>{\n return new Path([\n ...this.path,\n element\n ]);\n };\n isRoot = ()=>{\n return this.path.length === 0;\n };\n last = ()=>{\n return this.path[this.path.length - 1];\n };\n toArray = ()=>{\n return this.path;\n };\n}\n", "import { ObjectAssertion } from './assert.mjs';\nexport function assertText(text, path) {\n const $ = new ObjectAssertion(text, path);\n if (!$.object()) {\n return $.errors;\n }\n $.noAdditionalProperties([\n 'nodeType',\n 'data',\n 'value',\n 'marks'\n ]);\n $.object('data');\n $.each('marks', (mark, path)=>{\n const mark$ = new ObjectAssertion(mark, path);\n if (!mark$.object()) {\n return mark$.errors;\n }\n mark$.string('type');\n return mark$.errors;\n });\n $.string('value');\n return $.errors;\n}\n", "import { cloneElement, isValidElement, ReactNode } from 'react';\n\nexport function appendKeyToValidElement(element: ReactNode, key: number): ReactNode {\n if (isValidElement(element) && element.key === null) {\n return cloneElement(element, { key });\n }\n return element;\n}\n", "import React, { ReactNode } from 'react';\n\nimport { helpers, Mark } from '@contentful/rich-text-types';\n\nimport { CommonNode, Options } from '..';\n\nimport { appendKeyToValidElement } from './appendKeyToValidElement';\n\nexport function nodeListToReactComponents(nodes: CommonNode[], options: Options): ReactNode {\n return nodes.map((node: CommonNode, index: number): ReactNode => {\n return appendKeyToValidElement(nodeToReactComponent(node, options), index);\n });\n}\n\nexport function nodeToReactComponent(node: CommonNode, options: Options): ReactNode {\n const { renderNode, renderMark, renderText, preserveWhitespace } = options;\n\n if (helpers.isText(node)) {\n let nodeValue: ReactNode = renderText ? renderText(node.value) : node.value;\n\n // Preserving whitespace is only supported with the default transformations.\n if (preserveWhitespace && !renderText) {\n // Preserve multiple spaces.\n nodeValue = (nodeValue as string).replace(/ {2,}/g, (match) => '\\u00A0'.repeat(match.length));\n\n // Preserve line breaks.\n const lines = (nodeValue as string).split('\\n');\n const jsxLines: (string | React.JSX.Element)[] = [];\n\n lines.forEach((line, index) => {\n jsxLines.push(line);\n if (index !== lines.length - 1) {\n jsxLines.push(
    );\n }\n });\n nodeValue = jsxLines;\n }\n\n return node.marks.reduce((value: ReactNode, mark: Mark): ReactNode => {\n if (!renderMark[mark.type]) {\n return value;\n }\n return renderMark[mark.type](value);\n }, nodeValue);\n } else {\n const children: ReactNode = nodeListToReactComponents(node.content, options);\n if (!node.nodeType || !renderNode[node.nodeType]) {\n return <>{children};\n }\n return renderNode[node.nodeType](node, children);\n }\n}\n", "import React, { ReactNode } from 'react';\n\nimport {\n Block,\n BLOCKS,\n Document,\n Inline,\n INLINES,\n MARKS,\n Text,\n helpers,\n} from '@contentful/rich-text-types';\n\nimport { nodeToReactComponent } from './util/nodeListToReactComponents';\n\nconst defaultNodeRenderers: RenderNode = {\n [BLOCKS.DOCUMENT]: (node, children) => children,\n [BLOCKS.PARAGRAPH]: (node, children) =>

    {children}

    ,\n [BLOCKS.HEADING_1]: (node, children) =>

    {children}

    ,\n [BLOCKS.HEADING_2]: (node, children) =>

    {children}

    ,\n [BLOCKS.HEADING_3]: (node, children) =>

    {children}

    ,\n [BLOCKS.HEADING_4]: (node, children) =>

    {children}

    ,\n [BLOCKS.HEADING_5]: (node, children) =>
    {children}
    ,\n [BLOCKS.HEADING_6]: (node, children) =>
    {children}
    ,\n [BLOCKS.EMBEDDED_ENTRY]: (node, children) =>
    {children}
    ,\n [BLOCKS.EMBEDDED_RESOURCE]: (node, children) =>
    {children}
    ,\n [BLOCKS.UL_LIST]: (node, children) =>
      {children}
    ,\n [BLOCKS.OL_LIST]: (node, children) =>
      {children}
    ,\n [BLOCKS.LIST_ITEM]: (node, children) =>
  • {children}
  • ,\n [BLOCKS.QUOTE]: (node, children) =>
    {children}
    ,\n [BLOCKS.HR]: () =>
    ,\n [BLOCKS.TABLE]: (node, children) => (\n \n {children}\n
    \n ),\n [BLOCKS.TABLE_ROW]: (node, children) => {children},\n [BLOCKS.TABLE_HEADER_CELL]: (node, children) => {children},\n [BLOCKS.TABLE_CELL]: (node, children) => {children},\n [INLINES.ASSET_HYPERLINK]: (node) => defaultInline(INLINES.ASSET_HYPERLINK, node as Inline),\n [INLINES.ENTRY_HYPERLINK]: (node) => defaultInline(INLINES.ENTRY_HYPERLINK, node as Inline),\n [INLINES.RESOURCE_HYPERLINK]: (node) =>\n defaultInlineResource(INLINES.RESOURCE_HYPERLINK, node as Inline),\n [INLINES.EMBEDDED_ENTRY]: (node) => defaultInline(INLINES.EMBEDDED_ENTRY, node as Inline),\n [INLINES.EMBEDDED_RESOURCE]: (node, _children) =>\n defaultInlineResource(INLINES.EMBEDDED_RESOURCE, node as Inline),\n [INLINES.HYPERLINK]: (node, children) => {children},\n};\n\nconst defaultMarkRenderers: RenderMark = {\n [MARKS.BOLD]: (text) => {text},\n [MARKS.ITALIC]: (text) => {text},\n [MARKS.UNDERLINE]: (text) => {text},\n [MARKS.CODE]: (text) => {text},\n [MARKS.SUPERSCRIPT]: (text) => {text},\n [MARKS.SUBSCRIPT]: (text) => {text},\n [MARKS.STRIKETHROUGH]: (text) => {text},\n};\n\nfunction defaultInline(type: string, node: Inline): ReactNode {\n return (\n \n type: {node.nodeType} id: {node.data.target.sys.id}\n \n );\n}\n\nfunction defaultInlineResource(type: string, node: Inline) {\n return (\n \n type: {node.nodeType} urn: {node.data.target.sys.urn}\n \n );\n}\n\nexport type CommonNode = Text | Block | Inline;\n\nexport interface NodeRenderer {\n (node: Block | Inline, children: ReactNode): ReactNode;\n}\n\nexport interface RenderNode {\n [k: string]: NodeRenderer;\n}\n\nexport interface RenderMark {\n [k: string]: (text: ReactNode) => ReactNode;\n}\n\nexport interface RenderText {\n (text: string): ReactNode;\n}\n\nexport interface Options {\n /**\n * Node renderers\n */\n renderNode?: RenderNode;\n /**\n * Mark renderers\n */\n renderMark?: RenderMark;\n /**\n * Text renderer\n */\n renderText?: RenderText;\n /**\n * Keep line breaks and multiple spaces\n */\n preserveWhitespace?: boolean;\n /**\n * Strip empty trailing paragraph from the document\n */\n stripEmptyTrailingParagraph?: boolean;\n}\n\n/**\n * Serialize a Contentful Rich Text `document` to React tree\n */\nexport function documentToReactComponents(\n richTextDocument: Document,\n options: Options = {},\n): ReactNode {\n if (!richTextDocument) {\n return null;\n }\n\n // Strip empty trailing paragraph if enabled\n let processedDocument = richTextDocument;\n if (options.stripEmptyTrailingParagraph) {\n processedDocument = helpers.stripEmptyTrailingParagraphFromDocument(richTextDocument);\n }\n\n return nodeToReactComponent(processedDocument, {\n renderNode: {\n ...defaultNodeRenderers,\n ...options.renderNode,\n },\n renderMark: {\n ...defaultMarkRenderers,\n ...options.renderMark,\n },\n renderText: options.renderText,\n preserveWhitespace: options.preserveWhitespace,\n });\n}\n", "import * as React from 'react'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\n\nimport { useSearch } from '../hooks/useSearch'\nimport { type Filter, type FilterOption } from '../utils/filters'\n\nimport SearchBar from '../components/searchbar'\nimport FiltersBar from '../components/filtersbar/index'\nimport NoResults from '../components/noresults'\nimport Results from '../components/results'\n\ntype SortingOption = {\n value: string\n label: string\n}\n\ntype FilterBarFilter = {\n label: string\n name: string\n options: Array<{ value: string; label: string }>\n}\n\ntype SearchSectionProps = {\n filters: Filter[]\n sorting: SortingOption[]\n modalImg: {\n '1x': string | undefined\n '2x': string | undefined\n '3x': string | undefined\n }\n tags?: FilterOption[]\n}\n\nfunction SearchSection({ filters, sorting, modalImg, tags }: SearchSectionProps): React.ReactElement {\n const currentLanguage = env.getUserLocale()\n\n const {\n state,\n updateFilter,\n updateSorting,\n handleSearchUpdate,\n onSearchReset,\n onSearchSubmit,\n handleLoadMore,\n handleLoadPrevious,\n handleCloseError,\n } = useSearch({\n filters,\n sorting,\n tags,\n currentLanguage,\n })\n\n return (\n <>\n handleSearchUpdate(value)}\n onSubmit={(event: React.FormEvent) => onSearchSubmit(event)}\n onReset={onSearchReset}\n />\n\n {state.error && (\n handleCloseError()} closable wrapWithCopy>\n {state.error.message}\n \n )}\n\n
    \n updateFilter(name as keyof typeof state.currentFilters, value)}\n />\n
    \n\n {!state.isFetching && state.meta.totalCount === 0 ? (\n \n ) : (\n 0}\n canLoadMore={state.meta.next !== null}\n isFetchingPrevious={state.isFetchingPrevious}\n errorFetchingPrevious={state.errorFetchingPrevious}\n handleLoadPrevious={handleLoadPrevious}\n isFetching={state.isFetching}\n isFetchingMore={state.isFetchingMore}\n errorFetchingMore={state.errorFetchingMore}\n resultsCount={state.meta.totalCount}\n sorting={sorting}\n currentSorting={state.currentSorting}\n updateSorting={updateSorting}\n handleLoadMore={handleLoadMore}\n results={state.results}\n modalImg={modalImg}\n />\n )}\n \n )\n}\n\nexport default SearchSection\n", "import * as React from 'react'\nimport { parse, stringify } from 'qs'\n\nimport * as api from '@owl-nest/api-client/next'\nimport * as services from '@owl-nest/services'\n\nimport { fetchSearchProjects, fetchSearchMoreProjects } from '../services'\nimport { getFilterByName, type FilterOption, type Filter } from '../utils/filters'\n\nconst SEARCH_API_FILTERS = {\n categories: {\n defaultValue: 'all',\n qualifier: 'tag_id',\n valueAttribute: 'id',\n },\n statuses: {\n defaultValue: 'all',\n qualifier: 'status',\n valueAttribute: 'value',\n },\n languages: {\n defaultValue: 'all',\n qualifier: 'lang',\n valueAttribute: 'value',\n },\n countries: {\n defaultValue: 'all',\n qualifier: 'country',\n valueAttribute: 'value',\n },\n regions: {\n defaultValue: 'all',\n qualifier: 'region_id',\n valueAttribute: 'id',\n },\n cities: {\n defaultValue: 'all',\n qualifier: 'city_id',\n valueAttribute: 'id',\n },\n}\n\nconst DEFAULT_SORTING = 'popular'\nconst DEFAULT_OFFSET = 0\nconst DEFAULT_LIMIT = 60\nconst DEFAULT_SORT_LIMIT = 16\n\ntype SortingOption = {\n value: string\n label: string\n}\n\ntype Meta = {\n offset: number\n start: number\n limit: number\n totalCount: number\n next: string | null\n previous: string | null\n}\n\ntype CurrentFilters = {\n categories: string[]\n countries: string[]\n regions: string[]\n cities: string[]\n statuses: string[]\n languages: string[]\n}\n\ntype ErrorState = {\n level: string\n message: string\n}\n\ntype SearchState = {\n currentFilters: CurrentFilters\n currentSearch: string\n currentSearchInput: string\n currentSorting: string\n error: ErrorState | null\n errorFetchingMore: boolean\n errorFetchingPrevious: boolean\n isFetching: boolean\n isFetchingMore: boolean\n isFetchingPrevious: boolean\n meta: Meta\n quantityFetched?: number\n results: api.Project[]\n savedResults: api.Project[] | null\n resetSearch: boolean\n}\n\ntype UseSearchProps = {\n currentLanguage?: string\n filters: Filter[]\n sorting: SortingOption[]\n tags?: FilterOption[]\n}\n\ntype UseSearchReturn = {\n state: SearchState\n updateFilter: (filterName: keyof CurrentFilters, optionValue: string) => void\n updateSorting: (value: string) => void\n handleSearchUpdate: (value: string) => void\n onSearchChange: (event: React.ChangeEvent) => void\n onSearchReset: () => void\n onSearchSubmit: (event: React.FormEvent) => void\n handleLoadMore: () => void\n handleLoadPrevious: () => void\n handleCloseError: () => void\n}\n\nexport function useSearch({\n filters,\n sorting: _sorting,\n tags,\n currentLanguage = 'fr',\n}: UseSearchProps): UseSearchReturn {\n const auth = services.user.useAuth()\n const isAuthenticated = auth.type === 'loggedin'\n\n const [state, setState] = React.useState(() => ({\n results: [],\n savedResults: null,\n meta: {\n offset: DEFAULT_OFFSET,\n start: DEFAULT_OFFSET,\n limit: DEFAULT_LIMIT,\n totalCount: 0,\n next: null,\n previous: null,\n },\n isFetching: true,\n isFetchingMore: false,\n isFetchingPrevious: false,\n error: null,\n errorFetchingMore: false,\n errorFetchingPrevious: false,\n currentFilters: {\n categories: ['all'],\n countries: ['all'],\n regions: ['all'],\n cities: ['all'],\n statuses: ['currently'],\n languages: ['all'],\n },\n currentSearch: '',\n currentSearchInput: '',\n currentSorting: DEFAULT_SORTING,\n resetSearch: false,\n ...getInitialStateFromUrl(),\n }))\n\n const memoizedResults = React.useMemo(() => state.results, [state.results])\n const memoizedMeta = React.useMemo(() => state.meta, [state.meta])\n const memoizedCurrentFilters = React.useMemo(() => state.currentFilters, [state.currentFilters])\n\n React.useEffect(() => {\n requestResults()\n }, [])\n\n React.useEffect(() => {\n if (state.currentFilters || state.currentSorting) {\n requestResults()\n }\n }, [state.currentFilters, state.currentSorting])\n\n React.useEffect(() => {\n if (state.resetSearch === true) {\n requestResults()\n setState((prevState) => ({ ...prevState, resetSearch: false }))\n }\n }, [state.resetSearch])\n\n return {\n state: {\n ...state,\n results: memoizedResults,\n meta: memoizedMeta,\n currentFilters: memoizedCurrentFilters,\n },\n updateFilter,\n updateSorting,\n handleSearchUpdate,\n onSearchChange,\n onSearchReset,\n onSearchSubmit,\n handleLoadMore,\n handleLoadPrevious,\n handleCloseError,\n }\n\n function parseQualifiers(): Record {\n const input: Record = {\n sort: state.currentSorting,\n }\n\n Object.keys(state.currentFilters).forEach((key) => {\n if (\n state.currentFilters[key as keyof CurrentFilters] &&\n state.currentFilters[key as keyof CurrentFilters].length > 0 &&\n SEARCH_API_FILTERS[key as keyof typeof SEARCH_API_FILTERS] &&\n state.currentFilters[key as keyof CurrentFilters][0] !==\n SEARCH_API_FILTERS[key as keyof typeof SEARCH_API_FILTERS].defaultValue\n ) {\n const qualifierEntry = SEARCH_API_FILTERS[key as keyof typeof SEARCH_API_FILTERS]\n const filter = getFilterByName(filters, key)\n\n const currentFilters = state.currentFilters[key as keyof CurrentFilters].map((currentValue) => {\n filter?.options.forEach((option: FilterOption) => {\n if (currentValue === option.value) {\n currentValue = option[qualifierEntry.valueAttribute as keyof FilterOption] as string\n }\n })\n return currentValue\n })\n\n input[qualifierEntry.qualifier] = currentFilters\n }\n })\n\n if (input.tag_id && tags) {\n input.tag_id = (input.tag_id as string[]).map((currentValue: string) => {\n tags.forEach((tag) => {\n if (currentValue === tag.slug) {\n currentValue = tag.id?.toString() || currentValue\n }\n })\n return currentValue\n })\n }\n\n input['quality_score__not'] = 'X'\n return input\n }\n\n function handleFetchingError(error: unknown, isFetchingMore = false, isFetchingPrevious = false): void {\n const errorProps = {\n level: 'alert',\n message:\n 'Oops... an error occured. Please refresh the page to retry. If the error persist, please contact support.',\n ...(error as Record),\n }\n\n setState((prevState) => ({\n ...prevState,\n isFetching: false,\n isFetchingMore: false,\n isFetchingPrevious: false,\n error: errorProps,\n errorFetchingMore: isFetchingMore && !isFetchingPrevious,\n errorFetchingPrevious: isFetchingPrevious,\n }))\n }\n\n function handleFetchingSuccess(\n results: api.Project[],\n meta: unknown,\n isFetchingMore = false,\n isFetchingPrevious = false,\n ): void {\n setState((prevState) => ({\n ...prevState,\n isFetching: false,\n isFetchingMore: false,\n isFetchingPrevious: false,\n results: results\n ? isFetchingMore\n ? isFetchingPrevious\n ? [...results, ...prevState.results]\n : [...prevState.results, ...results]\n : results\n : [],\n meta: {\n ...prevState.meta,\n ...(meta as Record),\n totalCount: (meta as { total_count: number }).total_count,\n },\n }))\n }\n\n function handleFetchingPending(\n quantityFetched = DEFAULT_LIMIT,\n isFetchingMore = false,\n isFetchingPrevious = false,\n ): void {\n setState((prevState) => ({\n ...prevState,\n results: isFetchingMore ? prevState.results : [],\n quantityFetched,\n isFetching: !isFetchingMore,\n isFetchingMore: isFetchingMore && !isFetchingPrevious,\n isFetchingPrevious,\n }))\n }\n\n async function requestResults(): Promise {\n handleFetchingPending()\n\n try {\n const qualifiers = parseQualifiers()\n const params = {\n lang: currentLanguage,\n offset: state.meta.offset,\n limit: state.meta.limit,\n }\n\n const response = await fetchSearchProjects(state.currentSearchInput, qualifiers, params, isAuthenticated)\n handleFetchingSuccess(response.projects, response.meta)\n } catch (error) {\n handleFetchingError(error)\n }\n }\n\n async function requestMoreResults(): Promise {\n const quantity = Math.min(state.meta.totalCount - state.meta.offset - state.meta.limit, state.meta.limit)\n\n handleFetchingPending(quantity, true)\n\n try {\n const response = await fetchSearchMoreProjects(state.meta.next || '', isAuthenticated)\n\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href)\n const next = new URLSearchParams(state.meta.next || '')\n url.searchParams.set('offset', next.get('offset') || '0')\n window.history.replaceState(window.history.state, document.title, url.href)\n }\n\n handleFetchingSuccess(response.projects, response.meta, true)\n } catch (error) {\n handleFetchingError(error)\n }\n }\n\n async function requestPreviousResults(): Promise {\n const totalCount = state.meta.totalCount\n const previous = state.meta.start - state.meta.limit\n const quantity = state.meta.start - Math.max(previous, 0)\n\n handleFetchingPending(quantity, true, true)\n\n try {\n const search = new URLSearchParams(state.meta.next || '')\n search.set('offset', Math.max(previous, 0).toString())\n search.set('limit', quantity.toString())\n\n const response = await fetchSearchMoreProjects(`?${search.toString()}`, isAuthenticated)\n\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href)\n url.searchParams.set('offset', Math.max(previous, 0).toString())\n window.history.replaceState(window.history.state, document.title, url.href)\n }\n\n handleFetchingSuccess(response.projects, { total_count: totalCount, start: previous }, true, true)\n } catch (error) {\n handleFetchingError(error)\n }\n }\n\n function updateFilter(filterName: keyof CurrentFilters, optionValue: string): void {\n setState((prevState) => ({\n ...prevState,\n currentFilters: {\n ...prevState.currentFilters,\n [filterName]: [optionValue],\n },\n meta: {\n ...prevState.meta,\n offset: DEFAULT_OFFSET,\n limit: DEFAULT_SORT_LIMIT,\n totalCount: 0,\n next: null,\n previous: null,\n },\n }))\n\n setQueryParam(filterName, optionValue)\n setQueryParam('offset', 0)\n }\n\n function updateSorting(value: string): void {\n setState((prevState) => ({\n ...prevState,\n currentSorting: value,\n meta: { ...prevState.meta, offset: DEFAULT_OFFSET, limit: DEFAULT_SORT_LIMIT },\n }))\n setQueryParam('sorting', value)\n }\n\n function handleSearchUpdate(value: string): void {\n setState((prevState) => ({ ...prevState, currentSearchInput: value }))\n }\n\n function onSearchChange(event: React.ChangeEvent): void {\n const value = event.target?.value || ''\n handleSearchUpdate(value)\n }\n\n function onSearchReset(): void {\n setQueryParam('search', undefined, true)\n\n setState((prevState) => ({\n ...prevState,\n currentSearch: '',\n currentSearchInput: '',\n resetSearch: true,\n meta: { ...prevState.meta, offset: DEFAULT_OFFSET, limit: DEFAULT_LIMIT },\n }))\n }\n\n function onSearchSubmit(event: React.FormEvent): void {\n event.preventDefault()\n\n if (state.currentSearchInput !== state.currentSearch) {\n const value = state.currentSearchInput || undefined\n setQueryParam('search', value, true)\n\n const newState = getInitialState({}, state.currentSearchInput, undefined, { offset: DEFAULT_OFFSET })\n setState((prevState) => ({ ...prevState, ...newState }))\n }\n }\n\n function handleLoadMore(): void {\n requestMoreResults()\n }\n\n function handleLoadPrevious(): void {\n requestPreviousResults()\n }\n\n function handleCloseError(): void {\n setState((prevState) => ({ ...prevState, error: null }))\n }\n}\n\nfunction getInitialState(filters = {}, search = '', sorting = DEFAULT_SORTING, meta = {}): Partial {\n return {\n meta: {\n offset: DEFAULT_OFFSET,\n start: DEFAULT_OFFSET,\n limit: DEFAULT_LIMIT,\n totalCount: 0,\n next: null,\n previous: null,\n ...meta,\n },\n currentFilters: {\n categories: ['all'],\n countries: ['all'],\n regions: ['all'],\n cities: ['all'],\n statuses: [search ? 'all' : 'currently'],\n languages: ['all'],\n ...filters,\n },\n currentSearch: search,\n currentSearchInput: search,\n currentSorting: sorting,\n }\n}\n\nfunction parseQueryString(queryParams: string): Record {\n const parameters = parse(queryParams, { ignoreQueryPrefix: true })\n const normalizedParameters: Record = {}\n\n Object.keys(parameters).forEach((key) => {\n if (Array.isArray(parameters[key]) || key === 'offset') {\n normalizedParameters[key] = parameters[key]\n } else {\n normalizedParameters[key] = [parameters[key]]\n }\n })\n\n return normalizedParameters\n}\n\ntype QueryStringParams = {\n sorting: string[] | undefined\n search: string[] | undefined\n offset: string | undefined\n limit: string | undefined\n [key: string]: string[] | string | undefined\n}\n\nfunction getInitialStateFromUrl(): Partial {\n if (typeof window !== 'undefined' && window.location) {\n const { sorting, search, offset, limit, ...filters } = parseQueryString(window.location.search) as QueryStringParams\n const searchValue = (search && search.length > 0 && search[search.length - 1]) || ''\n const sortingValue = (sorting && sorting.length > 0 && sorting[sorting.length - 1]) || DEFAULT_SORTING\n const start = Number(offset) || DEFAULT_OFFSET\n return getInitialState(filters, searchValue, sortingValue, { offset, limit, start })\n }\n\n return getInitialState()\n}\n\nfunction setQueryParam(name: string, value: unknown, reset = false): void {\n if (typeof window === 'undefined') return\n\n const currentQueryParams = reset ? '' : window.location.search\n const parsed = parse(currentQueryParams, { ignoreQueryPrefix: true })\n parsed[name] = value as string\n const stringified = stringify(parsed)\n const character = stringified.length > 0 ? '?' : ''\n window.history.replaceState(null, '', `${window.location.pathname}${character}${stringified}`)\n}\n", "export type FilterOption = {\n id?: number\n value: string\n slug?: string\n}\n\nexport type Filter = {\n name: string\n label: string\n options: FilterOption[]\n}\n\nexport function getFilterByName(filters: Filter[], name: string): Filter | undefined {\n return filters.find((filter) => filter.name === name)\n}\n\nexport function getOptionByValue(options: FilterOption[], value: string): FilterOption | undefined {\n return options.find((option) => option.value === value)\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport AutosizeInput from './AutosizeInput'\n\ntype SearchBarProps = {\n value: string\n onChange: (value: string) => void\n onSubmit: (event: React.FormEvent) => void\n onReset: () => void\n}\n\nfunction SearchBar({ value, onChange, onSubmit, onReset }: SearchBarProps): React.ReactElement {\n const inputRef = React.useRef(null)\n\n React.useEffect(() => {\n if (!value) {\n autoFocus()\n }\n }, [value])\n\n return (\n \n {!value.length && (\n \n \n \n )}\n\n (inputRef.current = el)}\n onChange={(event) => {\n onChange(event.target.value)\n }}\n placeholder={t('Search')}\n value={value}\n />\n\n {value.length > 0 && (\n \n \n \n )}\n \n )\n\n function autoFocus(): void {\n inputRef.current?.focus()\n }\n}\n\nexport default SearchBar\n\nexport const SearchBarWrapper = styled.form`\n background-color: ${plume.COLORS.PRIMARY_BLUE_500};\n color: white;\n display: flex;\n width: 100%;\n height: 87px;\n align-items: center;\n justify-content: center;\n`\n\nexport const SearchLabel = styled.label`\n margin-right: 10px;\n\n svg {\n top: 4px;\n }\n`\n\nexport const ResetButton = styled.span`\n display: inline-flex;\n margin-left: 10px;\n color: ${plume.COLORS.TEXT_PRIMARY};\n cursor: pointer;\n\n &:hover {\n color: ${plume.COLORS.PRIMARY_GREY_000};\n }\n`\n", "/**\n * NOTE: this component is inspired from https://github.com/JedWatson/react-input-autosize\n * It is not in npm dependencies to be able to maintain and change it like we want\n */\n\nimport * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nconst sizerStyle: React.CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre',\n}\n\nconst INPUT_PROPS_BLACKLIST = [\n 'extraWidth',\n 'injectStyles',\n 'inputClassName',\n 'inputRef',\n 'minWidth',\n 'onAutosize',\n 'placeholderIsMinWidth',\n]\n\nconst cleanInputProps = (inputProps: Record): Record => {\n INPUT_PROPS_BLACKLIST.forEach((field) => delete inputProps[field])\n return inputProps\n}\n\nconst copyStyles = (styles: CSSStyleDeclaration, node: HTMLElement): void => {\n node.style.fontSize = styles.fontSize || ''\n node.style.fontFamily = styles.fontFamily || ''\n node.style.fontWeight = styles.fontWeight || ''\n node.style.fontStyle = styles.fontStyle || ''\n node.style.letterSpacing = styles.letterSpacing || ''\n node.style.textTransform = styles.textTransform || ''\n}\n\nconst isIE =\n typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false\n\nconst generateId = (): string | undefined => {\n // we only need an auto-generated ID for stylesheet injection, which is only\n // used for IE. so if the browser is not IE, this should return undefined.\n return isIE ? '_' + Math.random().toString(36).substring(2, 12) : undefined\n}\n\ntype AutosizeInputProps = {\n className?: string\n defaultValue?: string\n extraWidth?: number | string\n id?: string\n injectStyles?: boolean\n inputClassName?: string\n inputRef?: (el: HTMLInputElement | null) => void\n inputStyle?: React.CSSProperties\n minWidth?: number | string\n onAutosize?: (newWidth: number) => void\n onChange?: (event: React.ChangeEvent) => void\n placeholder?: string\n placeholderIsMinWidth?: boolean\n style?: React.CSSProperties\n value?: string\n type?: string\n}\n\ntype AutosizeInputRef = {\n getInput: () => HTMLInputElement | null\n focus: () => void\n blur: () => void\n select: () => void\n}\n\nconst AutosizeInput = React.forwardRef(\n (\n {\n className,\n defaultValue,\n extraWidth,\n id,\n injectStyles = true,\n inputClassName,\n inputRef,\n inputStyle,\n minWidth = 1,\n onAutosize,\n onChange,\n placeholder,\n placeholderIsMinWidth,\n value,\n type,\n ...otherProps\n },\n ref,\n ) => {\n const [inputWidth, setInputWidth] = React.useState(Number(minWidth))\n const [inputId, setInputId] = React.useState(id || generateId())\n\n const inputElementRef = React.useRef(null)\n const placeHolderSizerRef = React.useRef(null)\n const sizerRef = React.useRef(null)\n const mountedRef = React.useRef(true)\n\n // Expose methods to parent component via ref\n React.useImperativeHandle(ref, () => ({\n getInput: () => inputElementRef.current,\n focus: () => inputElementRef.current?.focus(),\n blur: () => inputElementRef.current?.blur(),\n select: () => inputElementRef.current?.select(),\n }))\n\n // Handle inputRef callback\n const handleInputRef = React.useCallback(\n (el: HTMLInputElement | null) => {\n inputElementRef.current = el\n if (typeof inputRef === 'function') {\n inputRef(el)\n }\n },\n [inputRef],\n )\n\n const copyInputStyles = React.useCallback(() => {\n if (!mountedRef.current || !window.getComputedStyle) {\n return\n }\n\n const inputStyles = inputElementRef.current && window.getComputedStyle(inputElementRef.current)\n\n if (!inputStyles) {\n return\n }\n\n if (sizerRef.current) {\n copyStyles(inputStyles, sizerRef.current)\n }\n\n if (placeHolderSizerRef.current) {\n copyStyles(inputStyles, placeHolderSizerRef.current)\n }\n }, [])\n\n const updateInputWidth = React.useCallback(() => {\n if (!mountedRef.current || !sizerRef.current || typeof sizerRef.current.scrollWidth === 'undefined') {\n return\n }\n\n let newInputWidth: number\n\n if (placeholder && (!value || (value && placeholderIsMinWidth))) {\n const sizerWidth = sizerRef.current.scrollWidth\n const placeholderWidth = placeHolderSizerRef.current?.scrollWidth || 0\n newInputWidth = Math.max(sizerWidth, placeholderWidth) + 2\n } else {\n newInputWidth = sizerRef.current.scrollWidth + 2\n }\n\n // add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n const extraWidthValue = type === 'number' && extraWidth === undefined ? 16 : parseInt(String(extraWidth)) || 0\n newInputWidth += extraWidthValue\n\n if (newInputWidth < Number(minWidth)) {\n newInputWidth = Number(minWidth)\n }\n\n if (newInputWidth !== inputWidth) {\n setInputWidth(newInputWidth)\n }\n }, [placeholder, value, placeholderIsMinWidth, extraWidth, type, minWidth, inputWidth])\n\n React.useEffect(() => {\n mountedRef.current = true\n copyInputStyles()\n updateInputWidth()\n\n return () => {\n mountedRef.current = false\n }\n }, [copyInputStyles, updateInputWidth])\n\n React.useEffect(() => {\n if (id !== undefined) {\n setInputId(id || generateId())\n }\n }, [id])\n\n React.useEffect(() => {\n if (typeof onAutosize === 'function') {\n onAutosize(inputWidth)\n }\n }, [inputWidth, onAutosize])\n\n React.useEffect(() => {\n updateInputWidth()\n }, [value, placeholder, updateInputWidth])\n\n const renderStyles = React.useCallback(() => {\n // this method injects styles to hide IE's clear indicator, which messes\n // with input size detection. the stylesheet is only injected when the\n // browser is IE, and can also be disabled by the `injectStyles` prop.\n return isIE && injectStyles ? (\n \n ) : null\n }, [inputId, injectStyles])\n\n const sizerValue = [defaultValue, value, ''].reduce((previousValue, currentValue) => {\n if (previousValue !== null && previousValue !== undefined) {\n return previousValue\n }\n return currentValue\n })\n\n const finalInputStyle: React.CSSProperties = {\n boxSizing: 'content-box',\n width: `${inputWidth}px`,\n ...inputStyle,\n }\n\n const inputProps = { ...otherProps } as Record\n cleanInputProps(inputProps)\n inputProps.className = inputClassName\n inputProps.id = inputId\n inputProps.style = finalInputStyle\n\n // ensure placeholder and type are forwarded to the actual input element\n if (placeholder !== undefined) {\n ;(inputProps as Record).placeholder = placeholder\n }\n if (type !== undefined) {\n ;(inputProps as Record).type = type\n }\n\n return (\n \n {renderStyles()}\n \n
    \n {sizerValue}\n
    \n {placeholder ? (\n
    \n {placeholder}\n
    \n ) : null}\n
    \n )\n },\n)\n\nAutosizeInput.displayName = 'AutosizeInput'\n\nexport default AutosizeInput\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n\n input {\n border: none;\n background: transparent;\n color: ${plume.COLORS.PRIMARY_GREY_000};\n font-family: ${plume.FONTS.PRIMARY_FONT};\n font-size: 28px;\n font-weight: 400;\n max-width: 1060px;\n }\n\n > input::placeholder {\n color: rgba(255, 255, 255, 0.5);\n }\n`\n", "import * as React from 'react'\n\nimport MobileFiltersList from './MobileFiltersList'\nimport DesktopFiltersList from './DesktopFiltersList'\nimport { Filter } from '../../utils/filters'\n\ntype CurrentFilters = {\n [key: string]: string[]\n}\n\ntype FiltersBarProps = {\n currentFilters: CurrentFilters\n filters: Filter[]\n updateFilter: (name: string, value: string) => void\n}\n\nfunction FiltersBar({ filters, currentFilters, updateFilter }: FiltersBarProps): React.ReactElement | null {\n if (!filters || !filters.length) {\n return null\n }\n\n return (\n <>\n handleFilterUpdate(event)}\n />\n \n \n )\n\n function handleFilterUpdate(event): void {\n const filterName = event.target && event.target.name\n const optionValue = event.target && event.target.value\n updateFilter(filterName, optionValue)\n }\n}\n\nexport default FiltersBar\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { DropdownFilter } from '@ulule/owl-kit-components'\n\nimport HorizontalScroller from './HorizontalScroller'\nimport * as S from './styles'\nimport { Filter } from '../../utils/filters'\n\ntype MobileFiltersListProps = {\n filters: Filter[]\n currentFilters: { [key: string]: string[] }\n onUpdateFilter: (event: React.MouseEvent) => void\n}\n\nfunction MobileFiltersList({ filters, currentFilters, onUpdateFilter }: MobileFiltersListProps): React.ReactElement {\n return (\n \n \n \n {filters.map(({ name, label, options }, index) => (\n \n \n \n ))}\n \n \n \n )\n}\n\nexport default MobileFiltersList\n\nconst OnlyMobile = styled.div`\n display: block;\n\n @media screen and (min-width: 1020px) {\n display: none;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nfunction HorizontalScroller({ children }: { children: React.ReactNode }): React.ReactElement {\n const [lowerBound, setLowerBound] = React.useState(false)\n const [higherBound, setHigherBound] = React.useState(false)\n\n React.useEffect(() => {\n onScrollChange()\n }, [])\n\n const scroller = React.useRef(null)\n\n return (\n \n \n {children}\n \n \n )\n\n function isLowerBoundScrolling(): boolean {\n if (!scroller.current) {\n return false\n }\n\n return scroller.current.scrollLeft === 0\n }\n\n function isHigherBoundScrolling(): boolean {\n if (!scroller.current) {\n return false\n }\n\n const clientWidth = scroller.current.clientWidth\n const scrollLeft = scroller.current.scrollLeft\n const scrollWidth = scroller.current.scrollWidth\n\n return clientWidth + scrollLeft >= scrollWidth\n }\n\n function onScrollChange(): void {\n setLowerBound(isLowerBoundScrolling())\n setHigherBound(isHigherBoundScrolling())\n }\n}\n\nexport default HorizontalScroller\n\nexport const HorizontalScrollerContainer = styled.div<{ $lowerBound: boolean; $higherBound: boolean }>`\n width: 100%;\n overflow: hidden;\n\n &::before,\n &::after {\n content: '';\n height: 100%;\n pointer-events: none;\n position: absolute;\n top: 0;\n transition: opacity 250ms ease-in-out;\n width: 100px;\n z-index: 2;\n }\n\n &::before {\n left: 0;\n opacity: ${(props) => (props.$lowerBound ? 0 : 1)};\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 18%,\n rgba(255, 255, 255, 0.85) 34%,\n rgba(255, 255, 255, 0) 100%\n );\n }\n\n &::after {\n right: 0;\n opacity: ${(props) => (props.$higherBound ? 0 : 1)};\n background: linear-gradient(\n -90deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 18%,\n rgba(255, 255, 255, 0.85) 34%,\n rgba(255, 255, 255, 0) 100%\n );\n }\n`\n\nexport const Track = styled.div`\n overflow-x: scroll;\n overflow-y: hidden;\n`\n", "import { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nexport const MobileFiltersBarContainer = styled.div`\n overflow: hidden;\n padding: 10px 0;\n width: 100%;\n`\n\nexport const DesktopFiltersBarContainer = styled.div`\n align-items: flex-start;\n display: flex;\n flex-flow: row nowrap;\n font-weight: 300;\n justify-content: flex-start;\n margin: 0 auto;\n max-width: 1060px;\n padding: 20px 0;\n position: relative;\n`\n\nexport const FiltersListWrapper = styled.div`\n display: flex;\n flex-flow: column nowrap;\n position: relative;\n width: 100%;\n`\n\nexport const FilterItem = styled.li<{ $hidden?: boolean }>`\n display: ${(props) => (props.$hidden ? 'none' : 'flex')};\n`\n\nexport const FiltersList = styled.ul<{ $wrapped?: boolean }>`\n align-items: center;\n display: flex;\n flex-flow: ${(props) => (props.$wrapped ? 'row nowrap' : 'row wrap')};\n justify-content: flex-start;\n list-style-type: none;\n margin: -5px;\n padding: 20px 0;\n\n ${FilterItem} {\n flex: 0 0 auto;\n padding: 5px;\n\n &:first-child {\n padding-left: ${(props) => (props.$wrapped ? '20px' : '5px')};\n }\n\n &:last-child {\n padding-right: ${(props) => (props.$wrapped ? '20px' : '5px')};\n }\n }\n`\n\nexport const FilterOptionItemWrapper = styled.li<{ $selected?: boolean }>`\n align-items: center;\n color: ${(props) => (props.$selected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.TEXT_PRIMARY)};\n cursor: ${(props) => (props.$selected ? 'default' : 'pointer')};\n display: flex;\n font-size: 13px;\n font-weight: 500;\n pointer-events: ${(props) => (props.$selected ? 'none' : 'auto')};\n\n &:hover {\n color: ${(props) => (props.$selected ? 'inherit' : plume.COLORS.PRIMARY_BLUE_500)};\n }\n`\n\nexport const ToggleFiltersButton = styled.span``\n\nfunction getHeightPropList(nbItems: number): string {\n if (nbItems <= 8) {\n return '60px'\n } else if (nbItems >= 20) {\n return '240px'\n } else {\n return '120px'\n }\n}\n\nfunction getFlexPropItem(nbItems: number): string {\n if (nbItems <= 8) {\n return '0 1 50%'\n } else if (nbItems >= 20) {\n return '0 1 12.5%'\n } else {\n return '0 1 25%'\n }\n}\n\nexport const FilterOptionsListWrapper = styled.ul<{ children: React.ReactNode[] }>`\n align-content: flex-start;\n align-items: flex-start;\n display: flex;\n flex-flow: column wrap;\n height: ${(props) => getHeightPropList(props.children.length)};\n list-style-type: none;\n margin: 20px -10px;\n padding: 0;\n width: 100%;\n\n ${FilterOptionItemWrapper} {\n flex: ${(props) => getFlexPropItem(props.children.length)};\n min-width: 180px;\n padding: 0 10px;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components'\n\nimport { getFilterByName } from '../../utils/filters'\nimport FilterOptionsList from './FilterOptionsList'\nimport * as S from './styles'\nimport { Filter } from '../../utils/filters'\n\nconst NB_MAX_FILTERS = 3\n\ntype DesktopFiltersListProps = {\n filters: Filter[]\n currentFilters: {\n [key: string]: string[]\n }\n onUpdateFilter: (name: string, value: string) => void\n}\n\nfunction DesktopFiltersList({ filters, currentFilters, onUpdateFilter }: DesktopFiltersListProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = React.useState(false)\n const [expandedFilter, setExpandedFilter] = React.useState(null)\n\n return (\n \n \n \n \n {filters.map((filter, index) => {\n const { name, label, options } = filter\n if (filters.length > NB_MAX_FILTERS + 1 && index >= NB_MAX_FILTERS && !isExpanded) {\n return null\n }\n\n return (\n \n handleClickFilter(event, name)}\n autosize\n />\n \n )\n })}\n {filters.length > NB_MAX_FILTERS + 1 && (\n \n \n {isExpanded ? t('Less filters') : t('More filters')}\n \n \n )}\n \n {expandedFilter && (\n \n )}\n \n \n \n )\n\n function toggleExpanded(): void {\n setIsExpanded(!isExpanded)\n setExpandedFilter(null)\n }\n\n function handleClickFilter(event: React.MouseEvent, filterName: string): void {\n event.preventDefault()\n\n if (expandedFilter && expandedFilter.name === filterName) {\n setExpandedFilter(null)\n } else {\n const nextExpandedFilter = getFilterByName(filters, filterName) as Filter | null\n setExpandedFilter(nextExpandedFilter)\n }\n }\n\n function handleClickOption(event: React.MouseEvent): void {\n event.preventDefault()\n\n const target = event.currentTarget as HTMLElement\n const filterName = target.dataset.filter\n const optionValue = target.dataset.value\n\n if (filterName && optionValue) {\n onUpdateFilter(filterName, optionValue)\n setExpandedFilter(null)\n }\n }\n}\n\nexport default DesktopFiltersList\n\nconst OnlyDesktop = styled.div`\n display: none;\n\n @media screen and (min-width: 1020px) {\n display: block;\n }\n`\n", "import * as React from 'react'\n\nimport * as S from './styles'\n\ntype FilterOptionsListProps = {\n filterName: string\n onClickItem: (event: React.MouseEvent) => void\n options: {\n label: string\n value: string\n }[]\n selectedValue?: string\n}\n\nfunction FilterOptionsList({\n filterName,\n onClickItem,\n options,\n selectedValue,\n}: FilterOptionsListProps): React.ReactElement | null {\n if (!options.length) {\n return null\n }\n\n return (\n \n {options.map((option, index) => (\n \n {option.label}\n \n ))}\n \n )\n}\n\nexport default FilterOptionsList\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as UFE from '../../UFE'\n\nfunction NoResults(): React.ReactElement {\n const noResultsImg = UFE?.ASSETS?.noResults?.['x1'] ?? ''\n const noResultsImgx2 = UFE?.ASSETS?.noResults?.['x2'] ?? ''\n const noResultsImgx3 = UFE?.ASSETS?.noResults?.['x3'] ?? ''\n\n return (\n \n {t('No\n\n \n {tc('[strong: No results]. We invite you to change your search criteria.', { strong: })}\n \n {t('Some suggestions:')}\n\n \n
  • \n \n {t('Projects ending soon')}\n \n
  • \n
  • \n \n {t('Popular projects')}\n \n
  • \n
  • \n \n \n {t('Reinitialize filters')}\n \n
  • \n
    \n
    \n )\n}\n\nexport default NoResults\n\nconst NoResultsContainer = styled.div`\n border-bottom: 1px solid ${plume.COLORS.PRIMARY_GREY_500};\n margin: 0 auto;\n padding: 20px;\n text-align: center;\n\n strong {\n font-weight: 500;\n }\n`\n\nconst ActionsList = styled.ol`\n list-style-type: none;\n margin: 20px auto;\n padding: 0;\n width: fit-content;\n\n > li {\n width: 100%;\n margin: 10px auto;\n }\n`\n\nconst SuggestionLink = styled(plume.Link)`\n align-items: center;\n display: inline-flex;\n height: 50px;\n\n > div:first-child {\n color: ${plume.COLORS.PRIMARY_GREY_500};\n margin-right: 5px;\n transform: rotate(-180deg);\n transition: transform 200ms ease-out;\n }\n\n &:hover {\n > div:first-child {\n transition: transform 400ms ease-in;\n transform: rotate(180deg);\n }\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as services from '@owl-nest/services'\n\nimport SortingBar from '../sortingbar'\nimport ProjectsList from '$components/ProjectsList/ProjectsList'\n\ntype ResultsProps = {\n quantityFetched: number\n canLoadPrevious: boolean\n canLoadMore: boolean\n handleLoadPrevious: () => void\n isFetchingPrevious: boolean\n errorFetchingPrevious: boolean\n isFetching: boolean\n isFetchingMore: boolean\n errorFetchingMore: boolean\n resultsCount: number\n sorting: { value: string; label: string }[]\n currentSorting: string\n updateSorting: (sorting: string) => void\n handleLoadMore: () => void\n results: api.Project[]\n modalImg: {\n '1x': string | undefined\n '2x': string | undefined\n '3x': string | undefined\n }\n}\n\nfunction Results({\n quantityFetched,\n canLoadPrevious,\n canLoadMore,\n handleLoadPrevious,\n isFetchingPrevious,\n errorFetchingPrevious,\n isFetching,\n isFetchingMore,\n errorFetchingMore,\n resultsCount,\n sorting,\n currentSorting,\n updateSorting,\n handleLoadMore,\n results,\n modalImg,\n}: ResultsProps): React.ReactElement {\n const currentLanguage = env.getUserLocale()\n const currentCurrency = env.getUserCurrency()\n const rates = env.CURRENCIES_RATES\n const urls = {\n signin: env.SIGNIN_URL,\n signout: env.SIGNOUT_URL,\n signup: env.SIGNUP_URL,\n discover: env.DISCOVER_URL,\n discoverLandingPage: env.DISCOVER_LANDING_URL,\n home: env.HOMEPAGE_URL,\n proposal: env.PROPOSAL_URL,\n channels: env.CHANNELS_URL,\n discussions: env.DISCUSSIONS_URL,\n }\n const auth = services.user.useAuth()\n const isAuthenticated = auth.type === 'loggedin'\n\n return (\n \n
    \n
    \n
    \n \n
    \n\n {canLoadPrevious && (\n
    \n \n {errorFetchingPrevious ? t('Retry') : t('Load previous projects')}\n \n
    \n )}\n\n
    \n \n
    \n\n {canLoadMore && (\n
    \n \n {errorFetchingMore ? t('Retry') : t('More projects')}\n \n
    \n )}\n
    \n
    \n
    \n )\n}\n\nexport default Results\n\nconst Wrapper = styled.div`\n header {\n position: relative;\n z-index: 2;\n }\n`\n"], "mappings": "uhDAGA,IAAYA,IAAZ,SAAYA,EAAM,CAChBA,EAAA,SAAA,WACAA,EAAA,UAAA,YAEAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YAEAA,EAAA,QAAA,eACAA,EAAA,QAAA,iBACAA,EAAA,UAAA,YAEAA,EAAA,GAAA,KACAA,EAAA,MAAA,aAEAA,EAAA,eAAA,uBACAA,EAAA,eAAA,uBACAA,EAAA,kBAAA,0BAEAA,EAAA,MAAA,QACAA,EAAA,UAAA,YACAA,EAAA,WAAA,aACAA,EAAA,kBAAA,mBACF,GA1BYA,KAAMC,GAAA,OAAND,GAAM,CAAA,EAAA,2GCIlB,IAAYE,IAAZ,SAAYA,EAAO,CACjBA,EAAA,gBAAA,kBACAA,EAAA,eAAA,wBACAA,EAAA,kBAAA,2BACAA,EAAA,gBAAA,kBACAA,EAAA,UAAA,YACAA,EAAA,mBAAA,oBACF,GAPYA,KAAOC,GAAA,QAAPD,GAAO,CAAA,EAAA,yGCJnB,IAAYE,IAAZ,SAAYA,EAAK,CACfA,EAAA,KAAA,OACAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,KAAA,OACAA,EAAA,YAAA,cACAA,EAAA,UAAA,YACAA,EAAA,cAAA,eACF,GARYA,KAAKC,GAAA,MAALD,GAAK,CAAA,EAAA,ucCHjB,IAAAE,EAAA,KACAC,GAAA,KACAC,GAAA,KAuBaC,EAAA,iBAAwC,CACnDH,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,OAAO,GACPA,EAAA,OAAO,MACPA,EAAA,OAAO,eACPA,EAAA,OAAO,eACPA,EAAA,OAAO,kBACPA,EAAA,OAAO,OAsBIG,EAAA,iBAAwC,CACnDH,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,OAAO,GACPA,EAAA,OAAO,MACPA,EAAA,OAAO,eACPA,EAAA,OAAO,eACPA,EAAA,OAAO,mBAGIG,EAAA,aAAe,CAC1BH,EAAA,OAAO,MACPA,EAAA,OAAO,UACPA,EAAA,OAAO,WACPA,EAAA,OAAO,mBAMIG,EAAA,YAAc,CACzBH,EAAA,OAAO,GACPA,EAAA,OAAO,eACPA,EAAA,OAAO,eACPA,EAAA,OAAO,mBAQIG,EAAA,YAAUC,EAAA,CAAA,EACrBA,EAACJ,EAAA,OAAO,OAAO,EAAG,CAACA,EAAA,OAAO,SAAS,EACnCI,EAACJ,EAAA,OAAO,OAAO,EAAG,CAACA,EAAA,OAAO,SAAS,EACnCI,EAACJ,EAAA,OAAO,SAAS,EAAGG,EAAA,iBACpBC,EAACJ,EAAA,OAAO,KAAK,EAAG,CAACA,EAAA,OAAO,SAAS,EACjCI,EAACJ,EAAA,OAAO,KAAK,EAAG,CAACA,EAAA,OAAO,SAAS,EACjCI,EAACJ,EAAA,OAAO,SAAS,EAAG,CAACA,EAAA,OAAO,WAAYA,EAAA,OAAO,iBAAiB,EAChEI,EAACJ,EAAA,OAAO,UAAU,EAAG,CAACA,EAAA,OAAO,UAAWA,EAAA,OAAO,QAASA,EAAA,OAAO,OAAO,EACtEI,EAACJ,EAAA,OAAO,iBAAiB,EAAG,CAACA,EAAA,OAAO,SAAS,KAMlCG,EAAA,SAAW,CACtBH,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,WAMIG,EAAA,gBAAeE,GAAA,CAAIL,EAAA,OAAO,SAAS,EAAKG,EAAA,SAAQ,EAAA,EAKhDA,EAAA,cAAgB,CAC3BH,EAAA,OAAO,SACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,UACPA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,OAAO,UACPA,EAAA,OAAO,GACPA,EAAA,OAAO,MACPA,EAAA,OAAO,eACPA,EAAA,OAAO,eACPC,GAAA,QAAQ,UACRA,GAAA,QAAQ,gBACRA,GAAA,QAAQ,gBACRA,GAAA,QAAQ,eACR,QAMWE,EAAA,SAAW,CAACD,GAAA,MAAM,KAAMA,GAAA,MAAM,KAAMA,GAAA,MAAM,OAAQA,GAAA,MAAM,SAAS,IC9J9E,IAAAI,GAAAC,EAAAC,IAAA,cAAAC,IAAAC,IACA,OAAO,eAAeF,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,ICD5D,IAAAG,GAAAC,EAAAC,IAAA,cAAAC,IAAAC,IACA,OAAO,eAAeF,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,kHCD5D,IAAAG,GAAA,KAOaC,GAAA,eAA2B,CACtC,SAAUD,GAAA,OAAO,SACjB,KAAM,CAAA,EACN,QAAS,CACP,CACE,SAAUA,GAAA,OAAO,UACjB,KAAM,CAAA,EACN,QAAS,CACP,CACE,SAAU,OACV,MAAO,GACP,MAAO,CAAA,EACP,KAAM,CAAA,8FCEhBE,GAAA,SAAAC,GAOAD,GAAA,QAAAE,GAOAF,GAAA,OAAAG,GAnCA,IAAAC,GAAA,KACAC,GAAA,KAOA,SAASC,GAASC,EAA8BC,EAAc,CAC5D,QAAkBC,EAAA,EAAAC,EAAA,OAAO,KAAKH,CAAG,EAAfE,EAAAC,EAAA,OAAAD,IAAkB,CAA/B,IAAME,EAAGD,EAAAD,CAAA,EACZ,GAAID,IAAUD,EAAII,CAAG,EACnB,MAAO,EAEX,CAEA,MAAO,EACT,CAKA,SAAgBV,GAASW,EAAU,CACjC,OAAON,GAASD,GAAA,QAASO,EAAK,QAAQ,CACxC,CAKA,SAAgBV,GAAQU,EAAU,CAChC,OAAON,GAASF,GAAA,OAAQQ,EAAK,QAAQ,CACvC,CAKA,SAAgBT,GAAOS,EAAU,CAC/B,OAAOA,EAAK,WAAa,MAC3B,yFCAAC,GAAA,sBAAAC,GAAA,SAAgBA,GAAsBC,EAAgB,CACpD,GAAI,CACF,OAAOC,GAAQ,eAAA,OAAeD,EAAQ,OAAA,CAAO,CAC/C,MAAgB,CACd,MAAM,IAAI,MAAM,wBAAA,OAAwBA,EAAQ,kBAAA,CAAkB,CACpE,CACF,w6BC3CA,IAAAE,GAAA,KAAS,OAAA,eAAAC,EAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,MAAM,CAAA,CAAA,EACf,IAAAE,GAAA,KAAS,OAAA,eAAAD,EAAA,UAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,OAAO,CAAA,CAAA,EAChB,IAAAC,GAAA,KAAS,OAAA,eAAAF,EAAA,QAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,KAAK,CAAA,CAAA,EAEdC,GAAA,KAAAH,CAAA,EAEAG,GAAA,KAAAH,CAAA,EACAG,GAAA,KAAAH,CAAA,EAEA,IAAAI,GAAA,KAAS,OAAA,eAAAJ,EAAA,iBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAI,GAAA,cAAc,CAAA,CAAA,EAEvB,IAAAC,GAAAC,GAAA,IAAA,EACSN,EAAA,QAAAK,GAET,IAAAE,GAAA,KAAS,OAAA,eAAAP,EAAA,wBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAO,GAAA,qBAAqB,CAAA,CAAA,ICd9BC,IAAAC,ICAAC,IAAAC,KAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAe,OAAO,OAApB,IAA2B,OAAoB,OAAO,OAApB,IAA2B,OAAoB,OAAO,WAApB,IAA+B,WAAwB,OAAO,KAApB,IAAyB,KAAK,CAAC,EAAMC,EAAG,IAAI,EAAE,QAAO,MAAMA,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,EAAE,gBAAgBA,CAAC,EAAE,uCAAuC,EAAE,yBAAyB,mDAAoD,MAAS,CAAC,CAAC,GAAE,ECAnYC,IAAAC,ICAAC,IAAAC,IAAA,IAAAC,EAAuB,SACvBC,GAA0B,UCD1BC,IAAAC,IAAA,IAAAC,GAAkB,SCAlBC,IAAAC,IAAA,IAAAC,GAAkB,SAKlB,IAAMC,GAAqBC,OAAAA,OAAAA,GAAAA,SAAAA,EAAAA,oCAKrBC,GAAkBD,OAAAA,OAAAA,GAAOE,EAAAA,EAAAA,UAAAA,EAAAA,iCAWlBC,GAAc,CAAC,CAAEC,QAAAA,CAAO,IACnC,GAAAC,QAAA,cAACN,GAAAA,KACC,GAAAM,QAAA,cAACC,IAAAA,CAAEC,KAAMH,GAAWA,EAAQI,cAC1B,GAAAH,QAAA,cAACJ,GAAAA,KAAiBG,GAAWA,EAAQK,IAAI,CAAA,CAAA,ECxB/CC,IAAAC,IAaA,IAAMC,GAAqBC,OAAAA,OAAAA,GAAAA,WAAAA,qBAIAC,GAAWA,EAAMC,SAAW,SAAW,iDAOrDC,GAAcC,GACzBL,GACA,CAAC,CAAEM,QAAAA,EAAS,GAAGJ,CAAAA,KAAa,CAC1B,GAAGA,EACHC,SAAUG,CACZ,GACA,EAAA,EFvBF,IAAMC,GAAiBC,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,gCAkBjBC,GAAN,cAAsBC,GAAAA,QAAMC,SAAS,CAGnC,YAAYC,EAAO,CACjB,MAAMA,CAAAA,EAAAA,KAHRC,WAAaH,GAAAA,QAAMI,UAAS,EAAA,KAmB5BC,YAAeC,GAAAA,CACb,KAAKC,SAAS,CACZC,MAAOF,CACT,CAAA,CACF,EAlBE,KAAKG,MAAQ,CACXD,MAAO,EACT,CACF,CAEAE,mBAAoB,CAGlB,IAAMC,EAFO,KAAKR,WAAWS,QACXC,WACIC,sBAAqB,EAC3C,KAAKP,SAAS,CACZQ,MAAOJ,EAASI,KAClB,CAAA,CACF,CAQAC,QAAS,CACP,GAAM,CAAEC,MAAAA,CAAK,EAAK,KAAKf,MACjB,CAAEa,MAAAA,EAAOP,MAAAA,CAAK,EAAK,KAAKC,MAC9B,OACE,GAAAT,QAAA,cAACH,GAAAA,CACCqB,WAAY,IAAM,KAAKb,YAAY,EAAA,EACnCc,YAAa,IAAM,KAAKd,YAAY,EAAA,EACpCe,IAAK,KAAKjB,WACVY,MAAOA,GAEP,GAAAf,QAAA,cAACqB,GAAAA,CAAYC,QAASd,GACnBS,GACCA,EAAMM,QACNN,EAAMO,IAAI,CAACC,EAASC,IACX,GAAA1B,QAAA,cAAC2B,GAAAA,CAAYD,IAAKA,EAAKD,QAASA,GACzC,CAAA,EAEJ,GAAAzB,QAAA,cAAC4B,GAAAA,CAAWC,SAAU,KACpB,GAAA7B,QAAA,cAACqB,GAAAA,CAAYC,QAAS,KAAKb,MAAMD,OAC9BS,GACCA,EAAMM,QACNN,EAAMO,IAAI,CAACC,EAASC,IACX,GAAA1B,QAAA,cAAC2B,GAAAA,CAAYD,IAAKA,EAAKD,QAASA,GACzC,CAAA,CAAA,CAAA,CAKZ,CACF,EAEAK,GAAe/B,GGlFfgC,IAAAC,IAAO,SAASC,GAAYC,EAAW,CAIrC,MAFsB,CAAE,GAAGA,EAAM,QAASA,EAAK,QAAQ,OAAQC,GAAMA,EAAE,OAAS,WAAaA,EAAE,OAAS,QAAQ,CAAE,CAGpH,CCLAC,IAAAC,IAAA,IAAAC,GAAuB,SAQhB,SAASC,IAAuB,CACrC,IAAMC,EAAeC,GAAc,EAC7BC,EAASF,IAAa,MAAQA,IAAa,KAAWG,GAAQH,CAAQ,EAAI,QAE1EI,EAAgB,WAAQ,IAAM,CAClC,IAAMC,EAAoBC,IAA0B,SAC9CC,EAAYC,GACZC,EAAkBC,GAElBC,EAASC,GACb,IAAIC,GACF,oDAAoDN,CAAK,iBAAiBF,CAAa,iBAAiBI,CAAW,EACrH,CACF,EAEA,OAAkBK,GAAUH,CAAM,CACpC,EAAG,CAAC,CAAC,EAEC,CAAE,SAAAI,CAAS,EAAaC,GAAkB,+BAA+B,CAC7E,OAAQ,CAAE,OAAQd,CAAO,EACzB,QAAAE,CACF,CAAC,EAID,MAAO,CACL,mBAHyBW,EAAS,MAAM,6BAA6B,OAAS,CAAC,CAIjF,CACF,CCpCA,IAAAE,GAAA,GAAAC,GAAAD,GAAA,YAAAE,GAAA,mBAAAC,GAAA,kBAAAC,KAAAC,IAAAC,IAiDA,IAAMC,GAAiBC,GAAa,EAEvBC,GAAiBF,GAAW,IAAI,KAAK,EAAE,IAAI,QAAQ,EAAE,MAAM,UAAU,EACrEG,GAASH,GAAW,IAAI,iBAAiB,EAAE,MAAM,UAAU,EAC3DI,GAAgBJ,GAAW,IAAI,eAAe,EAAE,MAAM,UAAU,ECrD7EK,IAAAC,IAAA,IAAAC,EAAuB,SCAvBC,IAAAC,IAAA,IAAAC,EAAuB,O,qBCAvBC,IAAAC,ICAAC,IAAAC,IAAO,IAAIC,GAAuB,SAASA,EAAQ,CAC/C,OAAAA,EAAO,SAAc,WACrBA,EAAO,UAAe,YACtBA,EAAO,UAAe,YACtBA,EAAO,UAAe,YACtBA,EAAO,UAAe,YACtBA,EAAO,UAAe,YACtBA,EAAO,UAAe,YACtBA,EAAO,UAAe,YACtBA,EAAO,QAAa,eACpBA,EAAO,QAAa,iBACpBA,EAAO,UAAe,YACtBA,EAAO,GAAQ,KACfA,EAAO,MAAW,aAClBA,EAAO,eAAoB,uBAC3BA,EAAO,eAAoB,uBAC3BA,EAAO,kBAAuB,0BAC9BA,EAAO,MAAW,QAClBA,EAAO,UAAe,YACtBA,EAAO,WAAgB,aACvBA,EAAO,kBAAuB,oBACvBA,CACX,GAAE,CAAC,CAAC,ECtBJC,IAAAC,IAAO,IAAIC,GAAwB,SAASA,EAAS,CACjD,OAAAA,EAAQ,gBAAqB,kBAC7BA,EAAQ,eAAoB,wBAC5BA,EAAQ,kBAAuB,2BAC/BA,EAAQ,gBAAqB,kBAC7BA,EAAQ,UAAe,YACvBA,EAAQ,mBAAwB,qBACzBA,CACX,GAAE,CAAC,CAAC,ECRJC,IAAAC,IAAO,IAAIC,GAAsB,SAASA,EAAO,CAC7C,OAAAA,EAAM,KAAU,OAChBA,EAAM,OAAY,SAClBA,EAAM,UAAe,YACrBA,EAAM,KAAU,OAChBA,EAAM,YAAiB,cACvBA,EAAM,UAAe,YACrBA,EAAM,cAAmB,gBAClBA,CACX,GAAE,CAAC,CAAC,ECTJC,IAAAC,IAGO,IAAMC,GAAmB,CAC5BC,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,QACPA,EAAO,QACPA,EAAO,GACPA,EAAO,MACPA,EAAO,eACPA,EAAO,eACPA,EAAO,kBACPA,EAAO,KACX,EACaC,GAAmB,CAC5BD,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,QACPA,EAAO,QACPA,EAAO,GACPA,EAAO,MACPA,EAAO,eACPA,EAAO,eACPA,EAAO,iBACX,EACaE,GAAe,CACxBF,EAAO,MACPA,EAAO,UACPA,EAAO,WACPA,EAAO,iBACX,EACaG,GAAc,CACvBH,EAAO,GACPA,EAAO,eACPA,EAAO,eACPA,EAAO,iBACX,EACaI,GAAa,CACtB,CAACJ,EAAO,OAAO,EAAG,CACdA,EAAO,SACX,EACA,CAACA,EAAO,OAAO,EAAG,CACdA,EAAO,SACX,EACA,CAACA,EAAO,SAAS,EAAGC,GACpB,CAACD,EAAO,KAAK,EAAG,CACZA,EAAO,SACX,EACA,CAACA,EAAO,KAAK,EAAG,CACZA,EAAO,SACX,EACA,CAACA,EAAO,SAAS,EAAG,CAChBA,EAAO,WACPA,EAAO,iBACX,EACA,CAACA,EAAO,UAAU,EAAG,CACjBA,EAAO,UACPA,EAAO,QACPA,EAAO,OACX,EACA,CAACA,EAAO,iBAAiB,EAAG,CACxBA,EAAO,SACX,CACJ,EACaK,GAAW,CACpBL,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,SACX,EACaM,GAAkB,CAC3BN,EAAO,UACP,GAAGK,EACP,EACaE,GAAgB,CACzBP,EAAO,SACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,UACPA,EAAO,QACPA,EAAO,QACPA,EAAO,UACPA,EAAO,GACPA,EAAO,MACPA,EAAO,eACPA,EAAO,eACPQ,EAAQ,UACRA,EAAQ,gBACRA,EAAQ,gBACRA,EAAQ,eACR,MACJ,EACaC,GAAW,CACpBC,EAAM,KACNA,EAAM,KACNA,EAAM,OACNA,EAAM,SACV,EClHAC,IAAAC,ICAAC,IAAAC,ICAAC,IAAAC,IACO,IAAMC,GAAiB,CAC1B,SAAUC,EAAO,SACjB,KAAM,CAAC,EACP,QAAS,CACL,CACI,SAAUA,EAAO,UACjB,KAAM,CAAC,EACP,QAAS,CACL,CACI,SAAU,OACV,MAAO,GACP,MAAO,CAAC,EACR,KAAM,CAAC,CACX,CACJ,CACJ,CACJ,CACJ,EClBA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,aAAAE,GAAA,qBAAAC,GAAA,aAAAC,GAAA,WAAAC,GAAA,4CAAAC,KAAAC,IAAAC,IAEA,SAASC,GAASC,EAAKC,EAAO,CAC1B,QAAWC,KAAO,OAAO,KAAKF,CAAG,EAC7B,GAAIC,IAAUD,EAAIE,CAAG,EACjB,MAAO,GAGf,MAAO,EACX,CACO,SAASC,GAASC,EAAM,CAC3B,OAAOL,GAASM,EAASD,EAAK,QAAQ,CAC1C,CACO,SAASE,GAAQF,EAAM,CAC1B,OAAOL,GAASQ,EAAQH,EAAK,QAAQ,CACzC,CACO,SAASI,GAAOJ,EAAM,CACzB,OAAOA,EAAK,WAAa,MAC7B,CACO,SAASK,GAAiBL,EAAM,CAInC,GAHIA,EAAK,WAAaG,EAAO,WAGzBH,EAAK,QAAQ,SAAW,EACxB,MAAO,GAEX,IAAMM,EAAWN,EAAK,QAAQ,CAAC,EAC/B,OAAOM,EAAS,WAAa,QAAUA,EAAS,QAAU,EAC9D,CACA,SAASC,GAAgBC,EAAU,CAC/B,OAAOA,GAAY,MAAQ,OAAOA,GAAa,UAAY,YAAaA,GAAY,MAAM,QAAQA,EAAS,OAAO,CACtH,CACA,IAAMC,GAA0B,EACzB,SAASC,GAAwCF,EAAU,CAC9D,GAAI,CAACD,GAAgBC,CAAQ,GAAKA,EAAS,QAAQ,OAASC,GACxD,OAAOD,EAEX,IAAMG,EAAWH,EAAS,QAAQA,EAAS,QAAQ,OAAS,CAAC,EAC7D,OAAIH,GAAiBM,CAAQ,EAClB,CACH,GAAGH,EACH,QAASA,EAAS,QAAQ,MAAM,EAAG,EAAE,CACzC,EAEGA,CACX,CC7CAI,IAAAC,ICAAC,IAAAC,ICAAC,IAAAC,IAAO,IAAMC,GAAoB,CAAC,CAAE,KAAAC,EAAM,SAAAC,EAAU,SAAAC,EAAU,MAAAC,CAAM,KACzD,CACH,QAAS,gBAAgBF,CAAQ,kCAAkCC,CAAQ,GAC3E,KAAM,OACN,KAAMF,EAAK,QAAQ,EACnB,KAAME,EACN,MAAAC,CACJ,GAESC,GAAe,CAAC,CAAE,IAAAC,EAAK,MAAAF,EAAO,KAAAH,CAAK,KACrC,CACH,KAAM,OACN,IAAAK,EACA,KAAML,EAAK,QAAQ,EACnB,QAAS,yBAAyBK,CAAG,GACrC,MAAAF,CACJ,GAESG,GAAe,CAAC,CAAE,IAAAC,EAAK,MAAAJ,EAAO,KAAAH,CAAK,KACrC,CACH,KAAM,OACN,IAAAO,EACA,KAAMP,EAAK,QAAQ,EACnB,QAAS,wBAAwBO,CAAG,GACpC,MAAAJ,CACJ,GAESK,GAAY,CAAC,CAAE,SAAAC,EAAU,MAAAN,EAAO,KAAAH,CAAK,KACvC,CACH,QAAS,uCACT,KAAM,KACN,SAAU,CACN,GAAGS,CACP,EAAE,KAAK,EACP,KAAMT,EAAK,QAAQ,EACnB,MAAAG,CACJ,GAESO,GAAuB,CAAC,CAAE,SAAAT,EAAU,KAAAD,CAAK,KAC3C,CACH,QAAS,iBAAiBC,CAAQ,oBAClC,KAAM,aACN,KAAMD,EAAK,QAAQ,CACvB,GAESW,GAAwB,CAAC,CAAE,SAAAV,EAAU,KAAAD,CAAK,KAC5C,CACH,QAAS,iBAAiBC,CAAQ,qBAClC,KAAM,WACN,KAAMD,EAAK,QAAQ,CACvB,GDjDG,IAAMY,EAAN,KAAsB,CACzB,IACA,KACA,QAAU,CAAC,EACX,YAAYC,EAAKC,EAAK,CAClB,KAAK,IAAMD,EACX,KAAK,KAAOC,CAChB,CACA,MAAQ,IAAIC,IAAS,CACjB,KAAK,QAAQ,KAAK,GAAGA,CAAM,CAC/B,EACA,IAAI,QAAS,CACT,IAAMC,EAAkBC,GAAQ,KAAK,UAAU,CACvC,QAASA,EAAM,QACf,KAAMA,EAAM,IAChB,CAAC,EACL,OAAO,KAAK,QAAQ,OAAO,CAACA,EAAOC,IAAQ,KAAK,QAAQ,UAAWC,GAAOH,EAAeC,CAAK,IAAMD,EAAeG,CAAI,CAAC,IAAMD,CAAK,CACvI,CACA,OAAUE,GACFA,KAAO,KAAK,IACL,IAEX,KAAK,MAAMC,GAAsB,CAC7B,SAAUD,EACV,KAAM,KAAK,KAAK,GAAGA,CAAG,CAC1B,CAAC,CAAC,EACK,IAEX,OAAUA,GAAM,CACZ,IAAME,EAAQF,EAAM,KAAK,IAAIA,CAAG,EAAI,KAAK,IACzC,GAAIA,GACI,CAAC,KAAK,OAAOA,CAAG,EAChB,MAAO,GAGf,GAAI,OAAOE,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,GAAKA,IAAU,KAChE,MAAO,GAEX,IAAMR,EAAOM,EAAM,KAAK,KAAK,GAAGA,CAAG,EAAI,KAAK,KACtCG,EAAWH,GAAO,KAAK,KAAK,KAAK,GAAK,QAC5C,YAAK,MAAMI,GAAkB,CACzB,SAAU,SACV,SAAAD,EACA,KAAAT,EACA,MAAAQ,CACJ,CAAC,CAAC,EACK,EACX,EACA,OAAUF,GAAM,CACZ,IAAME,EAAQ,KAAK,IAAIF,CAAG,EAC1B,OAAIA,GAAO,CAAC,KAAK,OAAOA,CAAG,EAChB,GAEP,OAAOE,GAAU,SACV,IAEX,KAAK,MAAME,GAAkB,CACzB,SAAU,SACV,SAAUJ,EACV,KAAM,KAAK,KAAK,GAAGA,CAAG,EACtB,MAAAE,CACJ,CAAC,CAAC,EACK,GACX,EACA,OAAS,CAACF,EAAKK,IAAW,CACtB,IAAMH,EAAQ,KAAK,IAAIF,CAAG,EAC1B,OAAIK,GAAY,EAAEL,KAAO,KAAK,KACnB,GAEN,KAAK,OAAOA,CAAG,EAGhB,OAAOE,GAAU,UAAY,CAAC,OAAO,MAAMA,CAAK,EACzC,IAEX,KAAK,MAAME,GAAkB,CACzB,SAAU,SACV,SAAUJ,EACV,KAAM,KAAK,KAAK,GAAGA,CAAG,EACtB,MAAAE,CACJ,CAAC,CAAC,EACK,IAXI,EAYf,EACA,MAASF,GAAM,CACX,IAAME,EAAQ,KAAK,IAAIF,CAAG,EAC1B,OAAIA,GAAO,CAAC,KAAK,OAAOA,CAAG,EAChB,GAEP,MAAM,QAAQE,CAAK,EACZ,IAEX,KAAK,MAAME,GAAkB,CACzB,SAAU,QACV,SAAUJ,EACV,KAAM,KAAK,KAAK,GAAGA,CAAG,EACtB,MAAAE,CACJ,CAAC,CAAC,EACK,GACX,EACA,KAAO,CAACF,EAAKM,IAAW,CACpB,IAAMJ,EAAQ,KAAK,IAAIF,CAAG,EAC1B,OAAI,OAAOE,GAAU,UAAYI,EAAS,SAASJ,CAAK,EAC7C,IAEX,KAAK,MAAMK,GAAU,CACjB,SAAAD,EACA,MAAAJ,EACA,KAAM,KAAK,KAAK,GAAGF,CAAG,CAC1B,CAAC,CAAC,EACK,GACX,EACA,MAASA,GAAM,CACX,GAAI,CAAC,KAAK,MAAMA,CAAG,EACf,MAAO,GAEX,IAAME,EAAQ,KAAK,IAAIF,CAAG,EAC1B,OAAIE,EAAM,SAAW,EACV,IAEX,KAAK,MAAMM,GAAa,CACpB,IAAK,EACL,MAAAN,EACA,KAAM,KAAK,KAAK,GAAGF,CAAG,CAC1B,CAAC,CAAC,EACK,GACX,EACA,UAAY,CAACA,EAAKS,IAAM,CACpB,GAAI,CAAC,KAAK,MAAMT,CAAG,EACf,MAAO,GAEX,IAAME,EAAQ,KAAK,IAAIF,CAAG,EAC1B,OAAIE,EAAM,QAAUO,EACT,IAEX,KAAK,MAAMC,GAAa,CACpB,IAAAD,EACA,MAAAP,EACA,KAAM,KAAK,KAAK,GAAGF,CAAG,CAC1B,CAAC,CAAC,EACK,GACX,EACA,uBAA0BW,GAAa,CACnC,IAAMC,EAAW,OAAO,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,OAAQZ,GAAM,CAACW,EAAW,SAASX,CAAG,CAAC,EACrF,OAAAY,EAAS,QAAST,GAAW,KAAK,MAAMU,GAAqB,CACrD,SAAAV,EACA,KAAM,KAAK,KAAK,GAAGA,CAAQ,CAC/B,CAAC,CAAC,CAAC,EACAS,EAAS,SAAW,CAC/B,EACA,KAAO,CAACZ,EAAKc,IAAS,CAClB,GAAI,CAAC,KAAK,MAAMd,CAAG,EACf,OAEJ,IAAME,EAAQ,KAAK,IAAIF,CAAG,EACtBe,EAAc,GAClBb,EAAM,QAAQ,CAACc,EAAMlB,IAAQ,CACzB,GAAIiB,EACA,OAEJ,IAAMpB,EAASmB,EAAOE,EAAM,KAAK,KAAK,GAAGhB,CAAG,EAAE,GAAGF,CAAK,CAAC,EACnDH,EAAO,OAAS,IAChBoB,EAAc,IAElB,KAAK,MAAM,GAAGpB,CAAM,CACxB,CAAC,CACL,CACJ,EEvKAsB,IAAAC,IACO,IAAMC,GAAe,CAAC,EAChBC,GAAN,KAAoB,CACvB,YACA,aACA,YAAYC,EAAaC,EAAa,CAClC,KAAK,YAAcD,EACnB,KAAK,aAAeC,CACxB,CACA,OAAOC,EAAMC,EAAM,CACf,IAAMC,EAAI,IAAIC,EAAgBH,EAAMC,CAAI,EACxC,GAAI,CAACC,EAAE,OAAO,EACV,OAAOA,EAAE,OAEbA,EAAE,uBAAuB,CACrB,WACA,OACA,SACJ,CAAC,EACD,GAAM,CAAE,UAAAE,EAAW,IAAAC,EAAM,CAAE,EAAI,MAAM,QAAQ,KAAK,WAAW,EAAI,CAC7D,UAAW,KAAK,WACpB,EAAI,KAAK,YAAYL,EAAMC,CAAI,EAC/B,GAAIG,EAAU,SAAW,GAAKC,EAAM,EAChC,MAAM,IAAI,MAAM,wDAAwDA,CAAG,oBAAoB,EAenG,GAbAH,EAAE,UAAU,UAAWG,CAAG,EACtBD,EAAU,SAAW,EACrBF,EAAE,MAAM,SAAS,EAEjBA,EAAE,KAAK,UAAW,CAACI,EAAML,IAAO,CAC5B,IAAMM,EAAQ,IAAIJ,EAAgBG,EAAML,CAAI,EAC5C,OAAKM,EAAM,OAAO,GAGlBA,EAAM,KAAK,WAAYH,CAAS,EACzBG,EAAM,MACjB,CAAC,EAEDL,EAAE,OAAO,MAAM,EAAG,CAClB,IAAMM,EAAa,KAAK,eAAeR,EAAK,KAAMC,EAAK,GAAG,MAAM,CAAC,GAAK,CAAC,EACvEC,EAAE,MAAM,GAAGM,CAAU,CACzB,CACA,OAAON,EAAE,MACb,CACJ,EACaO,GAAN,cAAkCZ,EAAc,CACnD,SACA,KACA,YAAYa,EAAUC,EAAiB,CACnC,MAAMA,EAAkB,CAACC,EAAMX,IAAO,KAAK,WAAWW,EAAMX,CAAI,CAAC,EAAG,KAAK,SAAWS,EACpF,KAAK,KAAO,KAAK,SAAS,WAAW,aAAa,EAAI,eAAiB,MAC3E,CACA,WAAa,CAACE,EAAMX,IAAO,CACvB,IAAMC,EAAI,IAAIC,EAAgBS,EAAMX,CAAI,EACxC,GAAIC,EAAE,OAAO,QAAQ,EAAG,CACpB,IAAMW,EAAO,IAAIV,EAAgBS,EAAK,OAAO,IAAKX,EAAK,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,EACzEY,EAAK,OAAO,IACZA,EAAK,KAAK,OAAQ,CACd,KAAK,IACT,CAAC,EACDA,EAAK,KAAK,WAAY,CAClB,KAAK,QACT,CAAC,EACG,KAAK,OAAS,QACdA,EAAK,OAAO,IAAI,EAChBA,EAAK,uBAAuB,CACxB,OACA,WACA,IACJ,CAAC,GACM,KAAK,OAAS,iBACrBA,EAAK,OAAO,KAAK,EACjBA,EAAK,uBAAuB,CACxB,OACA,WACA,KACJ,CAAC,IAGTX,EAAE,MAAM,GAAGW,EAAK,MAAM,CAC1B,CACA,OAAAX,EAAE,uBAAuB,CACrB,QACJ,CAAC,EACMA,EAAE,MACb,CACJ,EACaY,GAAN,cAAiCjB,EAAc,CAClD,aAAa,CACT,MAAM,CACF,MACJ,EAAG,CAACe,EAAMX,IAAO,KAAK,WAAWW,EAAMX,CAAI,CAAC,CAChD,CACA,WAAa,CAACW,EAAMX,IAAO,CACvB,IAAMC,EAAI,IAAIC,EAAgBS,EAAMX,CAAI,EACxC,OAAAC,EAAE,OAAO,KAAK,EACdA,EAAE,uBAAuB,CACrB,KACJ,CAAC,EACMA,EAAE,MACb,CACJ,EACaa,EAAS,CAACjB,EAAaC,IACzB,IAAIF,GAAcC,EAAaC,CAAY,EAEzCiB,GAAa,CAACN,EAAUZ,IAC1B,IAAIW,GAAoBC,EAAUZ,CAAW,EC1GxDmB,IAAAC,ICAAC,IAAAC,ILOA,IAAMC,GAAqBC,EAAO,CAC9B,GAAG,OAAO,OAAOC,CAAO,EACxB,MACJ,EAAE,KAAK,CAAC,EACFC,GAAaF,EAAO,CACtBG,EAAO,SACX,CAAC,EACKC,GAAsBC,GAAW,QAASC,EAAY,EACtDC,GAAkBP,EAAO,KAAK,CAC5B,UAAW,CACPG,EAAO,SACX,EACA,IAAK,CACT,GAAI,CAACK,EAAMC,IAAO,CAClB,IAAMC,EAAI,IAAIC,EAAgBH,EAAMC,CAAI,EACxC,OAAAC,EAAE,uBAAuB,CACrB,UACA,SACJ,CAAC,EACDA,EAAE,OAAO,UAAW,EAAI,EACxBA,EAAE,OAAO,UAAW,EAAI,EACjBA,EAAE,MACb,CAAC,EACKE,GAAgB,CAClB,CAACT,EAAO,QAAQ,EAAGH,EAAOa,EAAgB,EAC1C,CAACV,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,SAAS,EAAGJ,GACpB,CAACI,EAAO,KAAK,EAAGH,EAAOc,GAAWX,EAAO,KAAK,CAAC,EAC/C,CAACA,EAAO,cAAc,EAAGC,GACzB,CAACD,EAAO,cAAc,EAAGE,GAAW,QAASC,EAAY,EACzD,CAACH,EAAO,iBAAiB,EAAGE,GAAW,mBAAoBC,EAAY,EACvE,CAACH,EAAO,EAAE,EAAGH,EAAOM,EAAY,EAChC,CAACH,EAAO,OAAO,EAAGD,GAClB,CAACC,EAAO,OAAO,EAAGD,GAClB,CAACC,EAAO,SAAS,EAAGH,EAAO,CACvB,GAAGe,EACP,EAAE,KAAK,CAAC,EACR,CAACZ,EAAO,KAAK,EAAGH,EAAO,KAAK,CACpB,UAAW,CACPG,EAAO,SACX,EACA,IAAK,CACT,EAAE,EACN,CAACA,EAAO,SAAS,EAAGH,EAAO,KAAK,CACxB,UAAW,CACPG,EAAO,WACPA,EAAO,iBACX,EACA,IAAK,CACT,EAAE,EACN,CAACA,EAAO,UAAU,EAAGI,GACrB,CAACJ,EAAO,iBAAiB,EAAGI,GAC5B,CAACN,EAAQ,SAAS,EAAG,IAAIe,GACzB,CAACf,EAAQ,cAAc,EAAGG,GAC1B,CAACH,EAAQ,iBAAiB,EAAGI,GAAW,mBAAoBC,EAAY,EACxE,CAACL,EAAQ,eAAe,EAAGI,GAAW,QAAS,CAC3C,MACJ,CAAC,EACD,CAACJ,EAAQ,eAAe,EAAGI,GAAW,QAAS,CAC3C,MACJ,CAAC,EACD,CAACJ,EAAQ,kBAAkB,EAAGI,GAAW,mBAAoB,CACzD,MACJ,CAAC,CACL,EM1EO,SAASY,GAAwBC,EAAoBC,EAAW,CACrE,SAAIC,kBAAeF,CAAAA,GAAYA,EAAQC,MAAQ,QACtCE,gBAAaH,EAAS,CAAEC,IAAAA,CAAI,CAAA,EAE9BD,CACT,CCCO,SAASI,GAA0BC,EAAqBC,EAAgB,CAC7E,OAAOD,EAAME,IAAI,CAACC,EAAkBC,IAC3BV,GAAwBW,GAAqBF,EAAMF,CAAAA,EAAUG,CAAAA,CACtE,CACF,CAEO,SAASC,GAAqBF,EAAkBF,EAAgB,CACrE,GAAM,CAAEK,WAAAA,EAAYC,WAAAA,EAAYC,WAAAA,EAAYC,mBAAAA,CAAkB,EAAKR,EAEnE,GAAIS,GAAQC,OAAOR,CAAAA,EAAO,CACxB,IAAIS,EAAuBJ,EAAaA,EAAWL,EAAKU,KAAK,EAAIV,EAAKU,MAGtE,GAAIJ,GAAsB,CAACD,EAAY,CAErCI,EAAaA,EAAqBE,QAAQ,SAAWC,GAAU,OAASC,OAAOD,EAAME,MAAM,CAAA,EAG3F,IAAMC,EAASN,EAAqBO,MAAM;CAAA,EACpCC,EAA2C,CAAA,EAEjDF,EAAMG,QAAQ,CAACC,EAAMlB,IAAAA,CACnBgB,EAASG,KAAKD,CAAAA,EACVlB,IAAUc,EAAMD,OAAS,GAC3BG,EAASG,KAAK,EAAAC,QAAA,cAACC,KAAAA,IAAAA,CAAAA,CAEnB,CAAA,EACAb,EAAYQ,CACd,CAEA,OAAOjB,EAAKuB,MAAMC,OAAO,CAACd,EAAkBe,IACrCrB,EAAWqB,EAAKC,IAAI,EAGlBtB,EAAWqB,EAAKC,IAAI,EAAEhB,CAAAA,EAFpBA,EAGRD,CAAAA,CACL,KAAO,CACL,IAAMkB,EAAsB/B,GAA0BI,EAAK4B,QAAS9B,CAAAA,EACpE,MAAI,CAACE,EAAK6B,UAAY,CAAC1B,EAAWH,EAAK6B,QAAQ,EACtC,EAAAR,QAAA,cAAA,EAAAA,QAAA,SAAA,KAAGM,CAAAA,EAELxB,EAAWH,EAAK6B,QAAQ,EAAE7B,EAAM2B,CAAAA,CACzC,CACF,CCpCA,IAAMG,GAAmC,CACvC,CAACC,EAAOC,QAAQ,EAAG,CAAChC,EAAM2B,IAAaA,EACvC,CAACI,EAAOE,SAAS,EAAG,CAACjC,EAAM2B,IAAa,EAAAN,QAAA,cAACa,IAAAA,KAAGP,CAAAA,EAC5C,CAACI,EAAOI,SAAS,EAAG,CAACnC,EAAM2B,IAAa,EAAAN,QAAA,cAACe,KAAAA,KAAIT,CAAAA,EAC7C,CAACI,EAAOM,SAAS,EAAG,CAACrC,EAAM2B,IAAa,EAAAN,QAAA,cAACiB,KAAAA,KAAIX,CAAAA,EAC7C,CAACI,EAAOQ,SAAS,EAAG,CAACvC,EAAM2B,IAAa,EAAAN,QAAA,cAACmB,KAAAA,KAAIb,CAAAA,EAC7C,CAACI,EAAOU,SAAS,EAAG,CAACzC,EAAM2B,IAAa,EAAAN,QAAA,cAACqB,KAAAA,KAAIf,CAAAA,EAC7C,CAACI,EAAOY,SAAS,EAAG,CAAC3C,EAAM2B,IAAa,EAAAN,QAAA,cAACuB,KAAAA,KAAIjB,CAAAA,EAC7C,CAACI,EAAOc,SAAS,EAAG,CAAC7C,EAAM2B,IAAa,EAAAN,QAAA,cAACyB,KAAAA,KAAInB,CAAAA,EAC7C,CAACI,EAAOgB,cAAc,EAAG,CAAC/C,EAAM2B,IAAa,EAAAN,QAAA,cAAC2B,MAAAA,KAAKrB,CAAAA,EACnD,CAACI,EAAOkB,iBAAiB,EAAG,CAACjD,EAAM2B,IAAa,EAAAN,QAAA,cAAC2B,MAAAA,KAAKrB,CAAAA,EACtD,CAACI,EAAOmB,OAAO,EAAG,CAAClD,EAAM2B,IAAa,EAAAN,QAAA,cAAC8B,KAAAA,KAAIxB,CAAAA,EAC3C,CAACI,EAAOqB,OAAO,EAAG,CAACpD,EAAM2B,IAAa,EAAAN,QAAA,cAACgC,KAAAA,KAAI1B,CAAAA,EAC3C,CAACI,EAAOuB,SAAS,EAAG,CAACtD,EAAM2B,IAAa,EAAAN,QAAA,cAACkC,KAAAA,KAAI5B,CAAAA,EAC7C,CAACI,EAAOyB,KAAK,EAAG,CAACxD,EAAM2B,IAAa,EAAAN,QAAA,cAACoC,aAAAA,KAAY9B,CAAAA,EACjD,CAACI,EAAO2B,EAAE,EAAG,IAAM,EAAArC,QAAA,cAACsC,KAAAA,IAAAA,EACpB,CAAC5B,EAAO6B,KAAK,EAAG,CAAC5D,EAAM2B,IACrB,EAAAN,QAAA,cAACwC,QAAAA,KACC,EAAAxC,QAAA,cAACyC,QAAAA,KAAOnC,CAAAA,CAAAA,EAGZ,CAACI,EAAOgC,SAAS,EAAG,CAAC/D,EAAM2B,IAAa,EAAAN,QAAA,cAAC2C,KAAAA,KAAIrC,CAAAA,EAC7C,CAACI,EAAOkC,iBAAiB,EAAG,CAACjE,EAAM2B,IAAa,EAAAN,QAAA,cAAC6C,KAAAA,KAAIvC,CAAAA,EACrD,CAACI,EAAOoC,UAAU,EAAG,CAACnE,EAAM2B,IAAa,EAAAN,QAAA,cAAC+C,KAAAA,KAAIzC,CAAAA,EAC9C,CAAC0C,EAAQC,eAAe,EAAItE,GAASuE,GAAcF,EAAQC,gBAAiBtE,CAAAA,EAC5E,CAACqE,EAAQG,eAAe,EAAIxE,GAASuE,GAAcF,EAAQG,gBAAiBxE,CAAAA,EAC5E,CAACqE,EAAQI,kBAAkB,EAAIzE,GAC7B0E,GAAsBL,EAAQI,mBAAoBzE,CAAAA,EACpD,CAACqE,EAAQtB,cAAc,EAAI/C,GAASuE,GAAcF,EAAQtB,eAAgB/C,CAAAA,EAC1E,CAACqE,EAAQpB,iBAAiB,EAAG,CAACjD,EAAM2E,IAClCD,GAAsBL,EAAQpB,kBAAmBjD,CAAAA,EACnD,CAACqE,EAAQO,SAAS,EAAG,CAAC5E,EAAM2B,IAAa,EAAAN,QAAA,cAACwD,IAAAA,CAAEC,KAAM9E,EAAK+E,KAAKC,GAAMrD,EAAAA,CAAAA,CACpE,EAEMsD,GAAmC,CACvC,CAACC,EAAMC,IAAI,EAAIC,GAAS,EAAA/D,QAAA,cAACgE,IAAAA,KAAGD,CAAAA,EAC5B,CAACF,EAAMI,MAAM,EAAIF,GAAS,EAAA/D,QAAA,cAACkE,IAAAA,KAAGH,CAAAA,EAC9B,CAACF,EAAMM,SAAS,EAAIJ,GAAS,EAAA/D,QAAA,cAACoE,IAAAA,KAAGL,CAAAA,EACjC,CAACF,EAAMQ,IAAI,EAAIN,GAAS,EAAA/D,QAAA,cAACsE,OAAAA,KAAMP,CAAAA,EAC/B,CAACF,EAAMU,WAAW,EAAIR,GAAS,EAAA/D,QAAA,cAACwE,MAAAA,KAAKT,CAAAA,EACrC,CAACF,EAAMY,SAAS,EAAIV,GAAS,EAAA/D,QAAA,cAAC0E,MAAAA,KAAKX,CAAAA,EACnC,CAACF,EAAMc,aAAa,EAAIZ,GAAS,EAAA/D,QAAA,cAAC4E,IAAAA,KAAGb,CAAAA,CACvC,EAEA,SAASb,GAAc7C,EAAc1B,EAAY,CAC/C,OACE,EAAAqB,QAAA,cAAC6E,OAAAA,CAAKzG,IAAKO,EAAK+E,KAAKoB,OAAOC,IAAIC,IAAI,SAC3BrG,EAAK6B,SAAS,QAAM7B,EAAK+E,KAAKoB,OAAOC,IAAIC,EAAE,CAGxD,CAEA,SAAS3B,GAAsBhD,EAAc1B,EAAY,CACvD,OACE,EAAAqB,QAAA,cAAC6E,OAAAA,CAAKzG,IAAKO,EAAK+E,KAAKoB,OAAOC,IAAIE,KAAK,SAC5BtG,EAAK6B,SAAS,SAAO7B,EAAK+E,KAAKoB,OAAOC,IAAIE,GAAG,CAG1D,CA8CO,SAASC,GACdC,EACA1G,EAAmB,CAAA,EAAE,CAErB,GAAI,CAAC0G,EACH,OAAO,KAIT,IAAIC,EAAoBD,EACxB,OAAI1G,EAAQ4G,8BACVD,EAAoBlG,GAAQoG,wCAAwCH,CAAAA,GAG/DtG,GAAqBuG,EAAmB,CAC7CtG,WAAY,CACV,GAAG2B,GACH,GAAGhC,EAAQK,UACb,EACAC,WAAY,CACV,GAAG6E,GACH,GAAGnF,EAAQM,UACb,EACAC,WAAYP,EAAQO,WACpBC,mBAAoBR,EAAQQ,kBAC9B,CAAA,CACF,ClB1IA,IAAAsG,EAA0B,QAyCnB,SAASC,GAAgD,CAC9D,SAAAC,EACA,MAAAC,EACA,YAAAC,EACA,WAAAC,EACA,WAAAC,CACF,EAAmE,CACjE,IAAMC,EAAgB,IAAI,IACpBC,EAAgB,IAAI,IAE1B,QAAWC,KAASN,GAAO,QAAQ,OAAS,CAAC,EAC3CI,EAAc,IAAIE,EAAM,IAAI,GAAIA,CAAK,EAEvC,QAAWC,KAASP,GAAO,SAAS,OAAS,CAAC,EAC5CK,EAAc,IAAIE,EAAM,IAAI,GAAIA,CAAK,EAGvC,IAAMC,EAAwB,UAC5B,KAAO,CACL,WAAY,CACV,CAAU,QAAM,IAAI,EAAGC,GAAeP,GAAY,IAAI,EACtD,CAAU,QAAM,MAAM,EAAGO,GAAeP,GAAY,MAAM,EAC1D,CAAU,QAAM,SAAS,EAAGO,GAAeP,GAAY,SAAS,CAClE,EACA,WAAY,CACV,CAAU,SAAO,SAAS,EAAGQ,EAAeP,GAAY,SAAS,EACjE,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,MAAM,EAC9D,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,MAAM,EAC9D,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,MAAM,EAC9D,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,MAAM,EAC9D,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,MAAM,EAC9D,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,MAAM,EAC9D,CAAU,SAAO,OAAO,EAAGO,EAAeP,GAAY,aAAa,EACnE,CAAU,SAAO,OAAO,EAAGO,EAAeP,GAAY,WAAW,EACjE,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,QAAQ,EAChE,CAAU,SAAO,KAAK,EAAGO,EAAeP,GAAY,UAAU,EAC9D,CAAU,SAAO,KAAK,EAAGO,EAAeP,GAAY,KAAK,EACzD,CAAU,SAAO,UAAU,EAAGO,EAAeP,GAAY,SAAS,EAClE,CAAU,SAAO,iBAAiB,EAAGO,EAAeP,GAAY,eAAe,EAC/E,CAAU,SAAO,SAAS,EAAGO,EAAeP,GAAY,QAAQ,EAChE,CAAU,UAAQ,SAAS,EAAG,CAACQ,EAAMC,IAAa,CAChD,IAAMC,EAAYV,GAAY,UAC9B,OAAKU,EAGE,gBAACA,EAAA,CAAU,IAAKF,EAAK,KAAK,KAAMC,CAAS,EAFvC,+BAAE,CAGb,EACA,CAAU,SAAO,cAAc,EAAID,GAAS,CAC1C,IAAML,EAAQF,EAAc,IAAIO,EAAK,KAAK,OAAO,IAAI,EAAE,EAEjDG,EAAgBX,GAAY,cAElC,GAAIG,IAAU,QAAaQ,IAAkB,OAC3C,OAAO,+BAAE,EAGX,GAAIA,EACF,OAAO,gBAACA,EAAA,CAAc,MAAOR,EAAO,CAExC,EACA,CAAU,SAAO,cAAc,EAAIK,GAAS,CAC1C,IAAMJ,EAAQF,EAAc,IAAIM,EAAK,KAAK,OAAO,IAAI,EAAE,EACvD,OAAIJ,IAAU,QAAaN,IAAgB,OAClC,+BAAE,EAEJA,EAAYM,CAAK,CAC1B,CACF,CACF,GAEA,CAAC,CACH,EAEA,OAAO,gCAAGQ,GAA0BhB,EAAUS,CAAe,CAAE,CACjE,CAEA,SAASC,GAAeO,EAAoF,CAE1G,OAAQC,GACDD,EAGE,gBAACA,EAAA,KAAWC,CAAK,EAFf,+BAAE,CAIf,CAEA,SAASP,EAAeM,EAAoF,CAE1G,MAAO,CAACL,EAAMC,IACPI,EAGE,gBAACA,EAAA,KAAWJ,CAAS,EAFnB,+BAAE,CAIf,CDhIO,SAASM,GAAS,CAAEC,SAAAA,CAAQ,EAAiB,CAClD,OAAIA,EAASC,SAAW,EACf,gBAAA,WAAA,IAAA,EAIP,gBAACC,GAAAA,KACC,gBAACC,GAAAA,KACC,gBAACC,GAAAA,KACEC,GAAG,mDAAoD,CACtDC,UAAW,gBAAOC,GAAgB,CAACC,MAAM,QAC3C,CAAA,CAAA,CAAA,EAIJ,gBAACC,GAAAA,KACC,gBAAOC,GAAe,KACnBV,EAASW,IAAI,CAACC,EAAkBC,IACxB,gBAACC,GAAAA,CAAiCC,IAAKF,EAAOD,iBAAkBA,GACzE,CAAA,CAAA,EAGJ,gBAACI,GAAAA,CAAYC,KAAK,0BAA0BC,EAAE,6BAAA,CAAA,CAAA,CAGpD,CAEA,SAASJ,GAAiC,CACxCF,iBAAAA,CAAgB,EAGjB,CACC,IAAMO,EAA4BC,SAAO,IAAA,EAEzCC,OAAOC,GAAsBV,EAAiBW,eAAiBC,OAAWL,EAAqB,CAC7FM,MAAO,CACLC,QAAS,EACX,EACAC,cAAe,oBAAoBf,EAAiBW,aAAa,GACjEK,qBAAsB,GACtBC,WAAY,CACVH,QAAS,GACTI,KAAM,EACR,CACF,CAAA,EAGE,gBAACC,KAAAA,CAAGC,IAAKb,GACP,gBAAOc,GAAoB,CACzBC,QAAAA,GACAC,YAAa,CACXC,OAAQxB,EAAiBwB,OACzBC,YAAazB,EAAiByB,YAC5B,gBAACC,GAAAA,CACCC,SAAU3B,EAAiByB,aAAaG,KACxCC,WAAY,CAAEC,UAAiBC,GAAOC,KAAKC,EAAEC,OAAQ,IAErD,KACJC,SAAU,iBACVC,QAASpC,EAAiBoC,QACxB,gBAACV,GAAAA,CACCC,SAAU3B,EAAiBoC,QAAQR,KACnCC,WAAY,CAAEC,UAAiBC,GAAOC,KAAKC,EAAEC,OAAQ,IAErD,KACJG,WAAY,iBACZC,KAAM,+BACR,EACAC,WAAYvC,EAAiBwC,OAAOC,IACpCC,cAAe,GAAG1C,EAAiBwC,OAAOC,GAAAA,QAAWzC,EAAiBwC,OAAOG,MAAAA,QAAc3C,EAAiBwC,OAAOI,MAAAA,MACnHC,UAAW7C,EAAiBwB,SAAoBsB,GAAkBC,uBAAuBC,QACzFC,UAAWjD,EAAiBkD,QAC5BC,QAASnD,EAAiBoD,gBAAkBxC,SAIpD,CAEA,IAAMR,GAAciD,OAAAA,OAAAA,GAAaC,EAAY,EAAA,SAAA,EAAA,6BAOvCzD,GAAOwD,OAAAA,OAAAA,GAAAA,UAAAA,EAAAA,sBA2CP/D,GAAU+D,OAAAA,OAAAA,EAAAA,UAAAA,EAAAA,yBAkBV9D,GAAa8D,OAAAA,OAAAA,GAAAA,UAAAA,EAAAA,4BAUb7D,GAAe6D,OAAAA,OAAAA,GAAatB,GAAOwB,QAAQC,CAAC,EAAEC,MAAM,CAAEC,UAAW,IAAK,CAAA,EAAA,EAAA,8BoB1K5EC,IAAAC,IAAA,IAAAC,GAAuB,SCAvBC,IAAAC,IAAA,IAAAC,EAAuB,SACvBC,GAAiC,UCDjCC,IAAAC,IAYO,SAASC,GAAgBC,EAAmBC,EAAkC,CACnF,OAAOD,EAAQ,KAAME,GAAWA,EAAO,OAASD,CAAI,CACtD,CDLA,IAAME,GAAqB,CACzB,WAAY,CACV,aAAc,MACd,UAAW,SACX,eAAgB,IAClB,EACA,SAAU,CACR,aAAc,MACd,UAAW,SACX,eAAgB,OAClB,EACA,UAAW,CACT,aAAc,MACd,UAAW,OACX,eAAgB,OAClB,EACA,UAAW,CACT,aAAc,MACd,UAAW,UACX,eAAgB,OAClB,EACA,QAAS,CACP,aAAc,MACd,UAAW,YACX,eAAgB,IAClB,EACA,OAAQ,CACN,aAAc,MACd,UAAW,UACX,eAAgB,IAClB,CACF,EAEMC,GAAkB,UAClBC,GAAiB,EACjBC,GAAgB,GAChBC,GAAqB,GAoEpB,SAASC,GAAU,CACxB,QAAAC,EACA,QAASC,EACT,KAAAC,EACA,gBAAAC,EAAkB,IACpB,EAAoC,CAElC,IAAMC,EADgBC,GAAK,QAAQ,EACN,OAAS,WAEhC,CAACC,EAAOC,CAAQ,EAAU,WAAsB,KAAO,CAC3D,QAAS,CAAC,EACV,aAAc,KACd,KAAM,CACJ,OAAQX,GACR,MAAOA,GACP,MAAOC,GACP,WAAY,EACZ,KAAM,KACN,SAAU,IACZ,EACA,WAAY,GACZ,eAAgB,GAChB,mBAAoB,GACpB,MAAO,KACP,kBAAmB,GACnB,sBAAuB,GACvB,eAAgB,CACd,WAAY,CAAC,KAAK,EAClB,UAAW,CAAC,KAAK,EACjB,QAAS,CAAC,KAAK,EACf,OAAQ,CAAC,KAAK,EACd,SAAU,CAAC,WAAW,EACtB,UAAW,CAAC,KAAK,CACnB,EACA,cAAe,GACf,mBAAoB,GACpB,eAAgBF,GAChB,YAAa,GACb,GAAGa,GAAuB,CAC5B,EAAE,EAEIC,EAAwB,UAAQ,IAAMH,EAAM,QAAS,CAACA,EAAM,OAAO,CAAC,EACpEI,EAAqB,UAAQ,IAAMJ,EAAM,KAAM,CAACA,EAAM,IAAI,CAAC,EAC3DK,EAA+B,UAAQ,IAAML,EAAM,eAAgB,CAACA,EAAM,cAAc,CAAC,EAE/F,OAAM,YAAU,IAAM,CACpBM,EAAe,CACjB,EAAG,CAAC,CAAC,EAEC,YAAU,IAAM,EAChBN,EAAM,gBAAkBA,EAAM,iBAChCM,EAAe,CAEnB,EAAG,CAACN,EAAM,eAAgBA,EAAM,cAAc,CAAC,EAEzC,YAAU,IAAM,CAChBA,EAAM,cAAgB,KACxBM,EAAe,EACfL,EAAUM,IAAe,CAAE,GAAGA,EAAW,YAAa,EAAM,EAAE,EAElE,EAAG,CAACP,EAAM,WAAW,CAAC,EAEf,CACL,MAAO,CACL,GAAGA,EACH,QAASG,EACT,KAAMC,EACN,eAAgBC,CAClB,EACA,aAAAG,GACA,cAAAC,GACA,mBAAAC,GACA,eAAAC,EACA,cAAAC,GACA,eAAAC,GACA,eAAAC,GACA,mBAAAC,GACA,iBAAAC,EACF,EAEA,SAASC,GAAqD,CAC5D,IAAMC,EAA2C,CAC/C,KAAMlB,EAAM,cACd,EAEA,cAAO,KAAKA,EAAM,cAAc,EAAE,QAASmB,GAAQ,CACjD,GACEnB,EAAM,eAAemB,CAA2B,GAChDnB,EAAM,eAAemB,CAA2B,EAAE,OAAS,GAC3D/B,GAAmB+B,CAAsC,GACzDnB,EAAM,eAAemB,CAA2B,EAAE,CAAC,IACjD/B,GAAmB+B,CAAsC,EAAE,aAC7D,CACA,IAAMC,EAAiBhC,GAAmB+B,CAAsC,EAC1EE,EAASC,GAAgB5B,EAASyB,CAAG,EAErCI,EAAiBvB,EAAM,eAAemB,CAA2B,EAAE,IAAKK,IAC5EH,GAAQ,QAAQ,QAASI,IAAyB,CAC5CD,IAAiBC,GAAO,QAC1BD,EAAeC,GAAOL,EAAe,cAAoC,EAE7E,CAAC,EACMI,EACR,EAEDN,EAAME,EAAe,SAAS,EAAIG,CACpC,CACF,CAAC,EAEGL,EAAM,QAAUtB,IAClBsB,EAAM,OAAUA,EAAM,OAAoB,IAAKM,IAC7C5B,EAAK,QAAS8B,GAAQ,CAChBF,IAAiBE,EAAI,OACvBF,EAAeE,EAAI,IAAI,SAAS,GAAKF,EAEzC,CAAC,EACMA,EACR,GAGHN,EAAM,mBAAwB,IACvBA,CACT,CAEA,SAASS,EAAoBC,EAAgBC,EAAiB,GAAOC,EAAqB,GAAa,CACrG,IAAMC,EAAa,CACjB,MAAO,QACP,QACE,4GACF,GAAIH,CACN,EAEA3B,EAAUM,IAAe,CACvB,GAAGA,EACH,WAAY,GACZ,eAAgB,GAChB,mBAAoB,GACpB,MAAOwB,EACP,kBAAmBF,GAAkB,CAACC,EACtC,sBAAuBA,CACzB,EAAE,CACJ,CAEA,SAASE,EACPC,EACAC,EACAL,EAAiB,GACjBC,EAAqB,GACf,CACN7B,EAAUM,IAAe,CACvB,GAAGA,EACH,WAAY,GACZ,eAAgB,GAChB,mBAAoB,GACpB,QAAS0B,EACLJ,EACEC,EACE,CAAC,GAAGG,EAAS,GAAG1B,EAAU,OAAO,EACjC,CAAC,GAAGA,EAAU,QAAS,GAAG0B,CAAO,EACnCA,EACF,CAAC,EACL,KAAM,CACJ,GAAG1B,EAAU,KACb,GAAI2B,EACJ,WAAaA,EAAiC,WAChD,CACF,EAAE,CACJ,CAEA,SAASC,EACPC,EAAkB7C,GAClBsC,EAAiB,GACjBC,EAAqB,GACf,CACN7B,EAAUM,IAAe,CACvB,GAAGA,EACH,QAASsB,EAAiBtB,EAAU,QAAU,CAAC,EAC/C,gBAAA6B,EACA,WAAY,CAACP,EACb,eAAgBA,GAAkB,CAACC,EACnC,mBAAAA,CACF,EAAE,CACJ,CAEA,eAAexB,GAAgC,CAC7C6B,EAAsB,EAEtB,GAAI,CACF,IAAME,EAAapB,EAAgB,EAC7BqB,EAAS,CACb,KAAMzC,EACN,OAAQG,EAAM,KAAK,OACnB,MAAOA,EAAM,KAAK,KACpB,EAEMuC,EAAW,MAAMC,GAAoBxC,EAAM,mBAAoBqC,EAAYC,EAAQxC,CAAe,EACxGkC,EAAsBO,EAAS,SAAUA,EAAS,IAAI,CACxD,OAASX,EAAO,CACdD,EAAoBC,CAAK,CAC3B,CACF,CAEA,eAAea,IAAoC,CACjD,IAAMC,EAAW,KAAK,IAAI1C,EAAM,KAAK,WAAaA,EAAM,KAAK,OAASA,EAAM,KAAK,MAAOA,EAAM,KAAK,KAAK,EAExGmC,EAAsBO,EAAU,EAAI,EAEpC,GAAI,CACF,IAAMH,EAAW,MAAMI,GAAwB3C,EAAM,KAAK,MAAQ,GAAIF,CAAe,EAErF,GAAI,OAAO,OAAW,IAAa,CACjC,IAAM8C,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EAClCC,EAAO,IAAI,gBAAgB7C,EAAM,KAAK,MAAQ,EAAE,EACtD4C,EAAI,aAAa,IAAI,SAAUC,EAAK,IAAI,QAAQ,GAAK,GAAG,EACxD,OAAO,QAAQ,aAAa,OAAO,QAAQ,MAAO,SAAS,MAAOD,EAAI,IAAI,CAC5E,CAEAZ,EAAsBO,EAAS,SAAUA,EAAS,KAAM,EAAI,CAC9D,OAASX,EAAO,CACdD,EAAoBC,CAAK,CAC3B,CACF,CAEA,eAAekB,IAAwC,CACrD,IAAMC,EAAa/C,EAAM,KAAK,WACxBgD,EAAWhD,EAAM,KAAK,MAAQA,EAAM,KAAK,MACzC0C,EAAW1C,EAAM,KAAK,MAAQ,KAAK,IAAIgD,EAAU,CAAC,EAExDb,EAAsBO,EAAU,GAAM,EAAI,EAE1C,GAAI,CACF,IAAMO,EAAS,IAAI,gBAAgBjD,EAAM,KAAK,MAAQ,EAAE,EACxDiD,EAAO,IAAI,SAAU,KAAK,IAAID,EAAU,CAAC,EAAE,SAAS,CAAC,EACrDC,EAAO,IAAI,QAASP,EAAS,SAAS,CAAC,EAEvC,IAAMH,EAAW,MAAMI,GAAwB,IAAIM,EAAO,SAAS,CAAC,GAAInD,CAAe,EAEvF,GAAI,OAAO,OAAW,IAAa,CACjC,IAAM8C,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EACxCA,EAAI,aAAa,IAAI,SAAU,KAAK,IAAII,EAAU,CAAC,EAAE,SAAS,CAAC,EAC/D,OAAO,QAAQ,aAAa,OAAO,QAAQ,MAAO,SAAS,MAAOJ,EAAI,IAAI,CAC5E,CAEAZ,EAAsBO,EAAS,SAAU,CAAE,YAAaQ,EAAY,MAAOC,CAAS,EAAG,GAAM,EAAI,CACnG,OAASpB,EAAO,CACdD,EAAoBC,CAAK,CAC3B,CACF,CAEA,SAASpB,GAAa0C,EAAkCC,EAA2B,CACjFlD,EAAUM,IAAe,CACvB,GAAGA,EACH,eAAgB,CACd,GAAGA,EAAU,eACb,CAAC2C,CAAU,EAAG,CAACC,CAAW,CAC5B,EACA,KAAM,CACJ,GAAG5C,EAAU,KACb,OAAQjB,GACR,MAAOE,GACP,WAAY,EACZ,KAAM,KACN,SAAU,IACZ,CACF,EAAE,EAEF4D,GAAcF,EAAYC,CAAW,EACrCC,GAAc,SAAU,CAAC,CAC3B,CAEA,SAAS3C,GAAc4C,EAAqB,CAC1CpD,EAAUM,IAAe,CACvB,GAAGA,EACH,eAAgB8C,EAChB,KAAM,CAAE,GAAG9C,EAAU,KAAM,OAAQjB,GAAgB,MAAOE,EAAmB,CAC/E,EAAE,EACF4D,GAAc,UAAWC,CAAK,CAChC,CAEA,SAAS3C,GAAmB2C,EAAqB,CAC/CpD,EAAUM,IAAe,CAAE,GAAGA,EAAW,mBAAoB8C,CAAM,EAAE,CACvE,CAEA,SAAS1C,EAAe2C,EAAkD,CACxE,IAAMD,EAAQC,EAAM,QAAQ,OAAS,GACrC5C,GAAmB2C,CAAK,CAC1B,CAEA,SAASzC,IAAsB,CAC7BwC,GAAc,SAAU,OAAW,EAAI,EAEvCnD,EAAUM,IAAe,CACvB,GAAGA,EACH,cAAe,GACf,mBAAoB,GACpB,YAAa,GACb,KAAM,CAAE,GAAGA,EAAU,KAAM,OAAQjB,GAAgB,MAAOC,EAAc,CAC1E,EAAE,CACJ,CAEA,SAASsB,GAAeyC,EAA8B,CAGpD,GAFAA,EAAM,eAAe,EAEjBtD,EAAM,qBAAuBA,EAAM,cAAe,CACpD,IAAMqD,EAAQrD,EAAM,oBAAsB,OAC1CoD,GAAc,SAAUC,EAAO,EAAI,EAEnC,IAAME,EAAWC,GAAgB,CAAC,EAAGxD,EAAM,mBAAoB,OAAW,CAAE,OAAQV,EAAe,CAAC,EACpGW,EAAUM,IAAe,CAAE,GAAGA,EAAW,GAAGgD,CAAS,EAAE,CACzD,CACF,CAEA,SAASzC,IAAuB,CAC9B2B,GAAmB,CACrB,CAEA,SAAS1B,IAA2B,CAClC+B,GAAuB,CACzB,CAEA,SAAS9B,IAAyB,CAChCf,EAAUM,IAAe,CAAE,GAAGA,EAAW,MAAO,IAAK,EAAE,CACzD,CACF,CAEA,SAASiD,GAAgB9D,EAAU,CAAC,EAAGuD,EAAS,GAAIQ,EAAUpE,GAAiB6C,EAAO,CAAC,EAAyB,CAC9G,MAAO,CACL,KAAM,CACJ,OAAQ5C,GACR,MAAOA,GACP,MAAOC,GACP,WAAY,EACZ,KAAM,KACN,SAAU,KACV,GAAG2C,CACL,EACA,eAAgB,CACd,WAAY,CAAC,KAAK,EAClB,UAAW,CAAC,KAAK,EACjB,QAAS,CAAC,KAAK,EACf,OAAQ,CAAC,KAAK,EACd,SAAU,CAACe,EAAS,MAAQ,WAAW,EACvC,UAAW,CAAC,KAAK,EACjB,GAAGvD,CACL,EACA,cAAeuD,EACf,mBAAoBA,EACpB,eAAgBQ,CAClB,CACF,CAEA,SAASC,GAAiBC,EAA8C,CACtE,IAAMC,KAAa,UAAMD,EAAa,CAAE,kBAAmB,EAAK,CAAC,EAC3DE,EAAgD,CAAC,EAEvD,cAAO,KAAKD,CAAU,EAAE,QAASzC,GAAQ,CACnC,MAAM,QAAQyC,EAAWzC,CAAG,CAAC,GAAKA,IAAQ,SAC5C0C,EAAqB1C,CAAG,EAAIyC,EAAWzC,CAAG,EAE1C0C,EAAqB1C,CAAG,EAAI,CAACyC,EAAWzC,CAAG,CAAC,CAEhD,CAAC,EAEM0C,CACT,CAUA,SAAS3D,IAA+C,CACtD,GAAI,OAAO,OAAW,KAAe,OAAO,SAAU,CACpD,GAAM,CAAE,QAAAuD,EAAS,OAAAR,EAAQ,OAAAa,EAAQ,MAAAC,EAAO,GAAGrE,CAAQ,EAAIgE,GAAiB,OAAO,SAAS,MAAM,EACxFM,EAAef,GAAUA,EAAO,OAAS,GAAKA,EAAOA,EAAO,OAAS,CAAC,GAAM,GAC5EgB,EAAgBR,GAAWA,EAAQ,OAAS,GAAKA,EAAQA,EAAQ,OAAS,CAAC,GAAMpE,GACjF6E,EAAQ,OAAOJ,CAAM,GAAKxE,GAChC,OAAOkE,GAAgB9D,EAASsE,EAAaC,EAAc,CAAE,OAAAH,EAAQ,MAAAC,EAAO,MAAAG,CAAM,CAAC,CACrF,CAEA,OAAOV,GAAgB,CACzB,CAEA,SAASJ,GAAce,EAAcd,EAAgBe,EAAQ,GAAa,CACxE,GAAI,OAAO,OAAW,IAAa,OAEnC,IAAMC,EAAqBD,EAAQ,GAAK,OAAO,SAAS,OAClDE,KAAS,UAAMD,EAAoB,CAAE,kBAAmB,EAAK,CAAC,EACpEC,EAAOH,CAAI,EAAId,EACf,IAAMkB,KAAc,cAAUD,CAAM,EAC9BE,EAAYD,EAAY,OAAS,EAAI,IAAM,GACjD,OAAO,QAAQ,aAAa,KAAM,GAAI,GAAG,OAAO,SAAS,QAAQ,GAAGC,CAAS,GAAGD,CAAW,EAAE,CAC/F,CE5fAE,IAAAC,IAAA,IAAAC,EAAuB,SCAvBC,IAAAC,IAKA,IAAAC,EAAuB,SAKvB,IAAMC,GAAkC,CACtCC,SAAU,WACVC,IAAK,EACLC,KAAM,EACNC,WAAY,SACZC,OAAQ,EACRC,SAAU,SACVC,WAAY,KACd,EAEMC,GAAwB,CAC5B,aACA,eACA,iBACA,WACA,WACA,aACA,yBAGIC,GAAmBC,IACvBF,GAAsBG,QAASC,GAAU,OAAOF,EAAWE,CAAAA,CAAM,EAC1DF,GAGHG,GAAa,CAACC,EAA6BC,IAAAA,CAC/CA,EAAKC,MAAMC,SAAWH,EAAOG,UAAY,GACzCF,EAAKC,MAAME,WAAaJ,EAAOI,YAAc,GAC7CH,EAAKC,MAAMG,WAAaL,EAAOK,YAAc,GAC7CJ,EAAKC,MAAMI,UAAYN,EAAOM,WAAa,GAC3CL,EAAKC,MAAMK,cAAgBP,EAAOO,eAAiB,GACnDN,EAAKC,MAAMM,cAAgBR,EAAOQ,eAAiB,EACrD,EAEMC,GACJ,OAAOC,OAAW,KAAeA,OAAOC,UAAY,yBAAyBC,KAAKF,OAAOC,UAAUE,SAAS,EAAI,GAE5GC,GAAa,IAGVL,GAAO,IAAMM,KAAKC,OAAM,EAAGC,SAAS,EAAA,EAAIC,UAAU,EAAG,EAAA,EAAMC,OA6B9DC,GAAsBC,aAC1B,CACE,CACEC,UAAAA,EACAC,aAAAA,EACAC,WAAAA,EACAC,GAAAA,EACAC,aAAAA,EAAe,GACfC,eAAAA,EACAC,SAAAA,EACAC,WAAAA,EACAC,SAAAA,EAAW,EACXC,WAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,sBAAAA,EACAC,MAAAA,EACAC,KAAAA,EACA,GAAGC,CAAAA,EAELC,KAAAA,CAEA,GAAM,CAACC,GAAYC,EAAAA,EAAuBC,WAAiBC,OAAOZ,CAAAA,CAAAA,EAC5D,CAACa,GAASC,EAAAA,EAAoBH,WAA6BhB,GAAMX,GAAAA,CAAAA,EAEjE+B,EAAwBC,SAAyB,IAAA,EACjDC,GAA4BD,SAAuB,IAAA,EACnDE,GAAiBF,SAAuB,IAAA,EACxCG,GAAmBH,SAAO,EAAA,EAG1BI,sBAAoBZ,GAAK,KAAO,CACpCa,SAAU,IAAMN,EAAgBO,QAChCC,MAAO,IAAMR,EAAgBO,SAASC,MAAAA,EACtCC,KAAM,IAAMT,EAAgBO,SAASE,KAAAA,EACrCC,OAAQ,IAAMV,EAAgBO,SAASG,OAAAA,CACzC,EAAA,EAGA,IAAMC,GAAuBC,cAC1BC,GAAAA,CACCb,EAAgBO,QAAUM,EACtB,OAAO9B,GAAa,YACtBA,EAAS8B,CAAAA,CAEb,EACA,CAAC9B,EAAS,EAGN+B,GAAwBF,cAAY,IAAA,CACxC,GAAI,CAACR,GAAWG,SAAW,CAAC1C,OAAOkD,iBACjC,OAGF,IAAMC,EAAchB,EAAgBO,SAAW1C,OAAOkD,iBAAiBf,EAAgBO,OAAO,EAEzFS,IAIDb,GAASI,SACXrD,GAAW8D,EAAab,GAASI,OAAO,EAGtCL,GAAoBK,SACtBrD,GAAW8D,EAAad,GAAoBK,OAAO,EAEvD,EAAG,CAAA,CAAE,EAECU,EAAyBL,cAAY,IAAA,CACzC,GAAI,CAACR,GAAWG,SAAW,CAACJ,GAASI,SAAW,OAAOJ,GAASI,QAAQW,YAAgB,IACtF,OAGF,IAAIC,EAEJ,GAAI/B,IAAgB,CAACE,GAAUA,GAASD,GAAyB,CAC/D,IAAM+B,GAAajB,GAASI,QAAQW,YAC9BG,GAAmBnB,GAAoBK,SAASW,aAAe,EACrEC,EAAgBjD,KAAKoD,IAAIF,GAAYC,EAAAA,EAAoB,CAC3D,MACEF,EAAgBhB,GAASI,QAAQW,YAAc,EAIjD,IAAMK,GAAkBhC,IAAS,UAAYZ,IAAeL,OAAY,GAAKkD,SAASC,OAAO9C,CAAAA,CAAAA,GAAgB,EAC7GwC,GAAiBI,GAEbJ,EAAgBtB,OAAOZ,CAAAA,IACzBkC,EAAgBtB,OAAOZ,CAAAA,GAGrBkC,IAAkBzB,IACpBC,GAAcwB,CAAAA,CAElB,EAAG,CAAC/B,EAAaE,EAAOD,EAAuBV,EAAYY,EAAMN,EAAUS,GAAW,EAEhFgC,YAAU,KACdtB,GAAWG,QAAU,GACrBO,GAAAA,EACAG,EAAAA,EAEO,IAAA,CACLb,GAAWG,QAAU,EACvB,GACC,CAACO,GAAiBG,EAAiB,EAEhCS,YAAU,IAAA,CACV9C,IAAON,QACTyB,GAAWnB,GAAMX,GAAAA,CAAAA,CAErB,EAAG,CAACW,EAAG,EAED8C,YAAU,IAAA,CACV,OAAOxC,GAAe,YACxBA,EAAWQ,EAAAA,CAEf,EAAG,CAACA,GAAYR,EAAW,EAErBwC,YAAU,IAAA,CACdT,EAAAA,CACF,EAAG,CAAC3B,EAAOF,EAAa6B,EAAiB,EAEzC,IAAMU,EAAqBf,cAAY,IAI9BhD,IAAQiB,EACb,gBAACxB,QAAAA,CACCuE,wBAAyB,CACvBC,OAAQ,SAAS/B,EAAAA,8BACnB,IAEA,KACH,CAACA,GAASjB,EAAa,EAEpBiD,EAAa,CAACpD,EAAcY,EAAO,IAAIyC,OAAO,CAACC,EAAeC,KAC9DD,GAGGC,EACT,EAEMC,EAAuC,CAC3CC,UAAW,cACXC,MAAO,GAAG1C,EAAAA,KACV,GAAGV,CACL,EAEMjC,EAAa,CAAE,GAAGyC,CAAW,EACnC1C,OAAAA,GAAgBC,CAAAA,EAChBA,EAAW0B,UAAYK,EACvB/B,EAAW6B,GAAKkB,GAChB/C,EAAWM,MAAQ6E,EAGf9C,IAAgBd,SAChBvB,EAAuCqC,YAAcA,GAErDG,IAASjB,SACTvB,EAAuCwC,KAAOA,GAIhD,gBAAC8C,GAAAA,CAAQ5D,UAAWA,GACjBkD,EAAAA,EACD,gBAACW,QAAAA,CAAO,GAAGvF,EAAYuC,MAAOA,EAAOG,IAAKkB,GAAgBxB,SAAUA,IACpE,gBAACoD,MAAAA,CAAI9C,IAAKU,GAAU9C,MAAOhB,IACxByF,CAAAA,EAEF1C,EACC,gBAACmD,MAAAA,CAAI9C,IAAKS,GAAqB7C,MAAOhB,IACnC+C,CAAAA,EAED,IAAA,CAGV,CAAA,EAGFb,GAAciE,YAAc,gBAE5B,IAAAC,GAAelE,GAET8D,GAAUK,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,yBDxPhB,SAASC,GAAU,CAAEC,MAAAA,EAAOC,SAAAA,EAAUC,SAAAA,EAAUC,QAAAA,CAAO,EAAkB,CACvE,IAAMC,EAAiBC,SAAyB,IAAA,EAEhDC,OAAMC,YAAU,IAAA,CACTP,GACHQ,EAAAA,CAEJ,EAAG,CAACR,EAAM,EAGR,gBAACS,GAAAA,CAAiBP,SAAUA,GACzB,CAACF,EAAMU,QACN,gBAACC,GAAAA,CAAYC,QAAQ,sBACnB,gBAAOC,GAAOC,OAAOC,OAAM,CAACC,KAAM,MAItC,gBAACC,GAAAA,CACCC,GAAG,qBACHd,SAAWe,GAAQf,EAASgB,QAAUD,EACtClB,SAAWoB,GAAAA,CACTpB,EAASoB,EAAMC,OAAOtB,KAAK,CAC7B,EACAuB,YAAaC,EAAE,QAAA,EACfxB,MAAOA,IAGRA,EAAMU,OAAS,GACd,gBAACe,GAAAA,CAAYC,QAASvB,GACpB,gBAAOU,GAAOC,OAAOa,MAAK,CAACX,KAAM,GAAIY,MAAOJ,EAAE,cAAA,MAMtD,SAAShB,GAAAA,CACPJ,EAASgB,SAASS,MAAAA,CACpB,CACF,CAEA,IAAAC,GAAe/B,GAEFU,GAAmBsB,OAAAA,OAAAA,GAAAA,SAAAA,EAAAA,kCAUnBpB,GAAcoB,OAAAA,OAAAA,GAAAA,UAAAA,EAAAA,6BAQdN,GAAcM,OAAAA,OAAAA,GAAAA,UAAAA,EAAAA,6BE3E3BC,IAAAC,IAAA,IAAAC,GAAuB,SCAvBC,IAAAC,IAAA,IAAAC,GAAuB,SCAvBC,IAAAC,IAAA,IAAAC,EAAuB,SAGvB,SAASC,GAAmB,CAAEC,SAAAA,CAAQ,EAAiC,CACrE,GAAM,CAACC,EAAYC,CAAAA,EAAuBC,WAAS,EAAA,EAC7C,CAACC,EAAaC,CAAAA,EAAwBF,WAAS,EAAA,EAE/CG,YAAU,IAAA,CACdC,EAAAA,CACF,EAAG,CAAA,CAAE,EAEL,IAAMC,EAAiBC,SAAuB,IAAA,EAE9C,OACE,gBAACC,GAAAA,CAA4BC,YAAaV,EAAYW,aAAcR,GAClE,gBAACS,GAAAA,CAAMC,IAAKN,EAAUO,SAAUR,GAC7BP,CAAAA,CAAAA,EAKP,SAASgB,GAAAA,CACP,OAAKR,EAASS,QAIPT,EAASS,QAAQC,aAAe,EAH9B,EAIX,CAEA,SAASC,GAAAA,CACP,GAAI,CAACX,EAASS,QACZ,MAAO,GAGT,IAAMG,EAAcZ,EAASS,QAAQG,YAC/BF,EAAaV,EAASS,QAAQC,WAC9BG,EAAcb,EAASS,QAAQI,YAErC,OAAOD,EAAcF,GAAcG,CACrC,CAEA,SAASd,GAAAA,CACPL,EAAcc,EAAAA,CAAAA,EACdX,EAAec,EAAAA,CAAAA,CACjB,CACF,CAEA,IAAAG,GAAevB,GAEFW,GAA8Ba,OAAAA,OAAAA,EAAAA,UAAAA,qBAkB3BC,GAAWA,EAAMb,YAAc,EAAI,eAYnCa,GAAWA,EAAMZ,aAAe,EAAI,kDAWvCC,GAAQU,OAAAA,OAAAA,EAAAA,UAAAA,EAAAA,uBC1FrBE,IAAAC,IAUO,IAAMC,GAA6BC,OAAAA,OAAAA,EAAAA,UAAAA,EAAAA,4CAY7BC,GAAqBD,OAAAA,OAAAA,EAAAA,UAAAA,EAAAA,oCAOrBE,GAAaF,OAAAA,OAAAA,GAAAA,WAAAA,qBACZG,GAAWA,EAAMC,QAAU,OAAS,sCAGrCC,GAAcL,OAAAA,OAAAA,GAAAA,WAAAA,qBAGXG,GAAWA,EAAMG,SAAW,aAAe,wBAWpCH,GAAWA,EAAMG,SAAW,OAAS,mBAIpCH,GAAWA,EAAMG,SAAW,OAAS,sCAKhDC,GAA0BP,OAAAA,OAAAA,GAAAA,WAAAA,qBAE3BG,GAAWA,EAAMK,UAAkBC,GAAOC,iBAAyBD,GAAOE,0BACzER,GAAWA,EAAMK,UAAY,UAAY,uBAIjCL,GAAWA,EAAMK,UAAY,OAAS,oBAG7CL,GAAWA,EAAMK,UAAY,UAAkBC,GAAOC,6DAMpE,SAASE,GAAkBC,EAAe,CACxC,OAAIA,GAAW,EACN,OACEA,GAAW,GACb,QAEA,OAEX,CAEA,SAASC,GAAgBD,EAAe,CACtC,OAAIA,GAAW,EACN,UACEA,GAAW,GACb,YAEA,SAEX,CAEO,IAAME,GAA2BC,OAAAA,OAAAA,GAAAA,WAAAA,qBAK3BC,GAAUL,GAAkBK,EAAMC,SAASC,MAAM,eAOjDF,GAAUH,GAAgBG,EAAMC,SAASC,MAAM,+CFzF5D,SAASC,GAAkB,CAAEC,QAAAA,EAASC,eAAAA,EAAgBC,eAAAA,CAAc,EAA0B,CAC5F,OACE,iBAACC,GAAAA,KACC,iBAACC,GAAAA,KACC,iBAAGC,GAAW,CAACC,SAAAA,IACZN,EAAQO,IAAI,CAAC,CAAEC,KAAAA,EAAMC,MAAAA,EAAOC,QAAAA,CAAO,EAAIC,IACtC,iBAAGC,GAAU,CAACC,IAAKF,GACjB,iBAACG,GAAAA,CACCL,MAAOA,EACPD,KAAMA,EACNO,SAAUb,EACVQ,QAASA,EACTM,WAAAA,GACAC,MAAOhB,EAAeO,CAAAA,EAAM,CAAA,QAQ5C,CAEA,IAAAU,GAAenB,GAETI,GAAagB,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,4BGxCnBC,IAAAC,IAAA,IAAAC,EAAuB,SCAvBC,IAAAC,IAAA,IAAAC,GAAuB,SAcvB,SAASC,GAAkB,CACzB,WAAAC,EACA,YAAAC,EACA,QAAAC,EACA,cAAAC,CACF,EAAsD,CACpD,OAAKD,EAAQ,OAKX,iBAAGE,GAAF,KACEF,EAAQ,IAAI,CAACG,EAAQC,IACpB,iBAAGC,GAAF,CACC,IAAKD,EACL,UAAWD,EAAO,QAAUF,EAC5B,cAAaH,EACb,aAAYK,EAAO,MACnB,QAASJ,GAERI,EAAO,KACV,CACD,CACH,EAhBO,IAkBX,CAEA,IAAOG,GAAQT,GD9Bf,IAAMU,GAAiB,EAUvB,SAASC,GAAmB,CAAEC,QAAAA,EAASC,eAAAA,EAAgBC,eAAAA,CAAc,EAA2B,CAC9F,GAAM,CAACC,EAAYC,CAAAA,EAAuBC,WAAS,EAAA,EAC7C,CAACC,EAAgBC,CAAAA,EAA2BF,WAAwB,IAAA,EAE1E,OACE,gBAACG,GAAAA,KACC,gBAAGC,GAA0B,KAC3B,gBAAGC,GAAkB,KACnB,gBAAGC,GAAW,KACXX,EAAQY,IAAI,CAACC,EAAQC,IAAAA,CACpB,GAAM,CAAEC,KAAAA,EAAMC,MAAAA,EAAOC,QAAAA,CAAO,EAAKJ,EACjC,OAAIb,EAAQkB,OAASpB,GAAiB,GAAKgB,GAAShB,IAAkB,CAACK,EAC9D,KAIP,gBAAGgB,GAAU,CAACC,IAAKN,GACjB,gBAAOO,GAAc,CACnBN,KAAMA,EACNC,MAAOA,EACPM,MAAOrB,EAAec,CAAAA,GAASd,EAAec,CAAAA,EAAM,CAAA,EACpDE,QAASA,EACTM,QAAS,CAAC,CAACjB,GAAkBA,EAAeS,OAASA,EACrDS,QAAUC,GAA4BC,EAAkBD,EAAOV,CAAAA,EAC/DY,SAAAA,KAIR,CAAA,EACC3B,EAAQkB,OAASpB,GAAiB,GACjC,gBAAGqB,GAAU,KACX,gBAAOS,GAAa,CAACJ,QAASK,GAC3B1B,EAAa2B,EAAE,cAAA,EAAkBA,EAAE,cAAA,CAAA,CAAA,CAAA,EAK3CxB,GACC,gBAACyB,GAAAA,CACCC,WAAY1B,EAAeS,KAC3BE,QAASX,EAAeW,QACxBgB,YAAaC,EACbC,cAAelC,EAAeK,EAAeS,IAAI,GAAKd,EAAeK,EAAeS,IAAI,EAAE,CAAA,OAQtG,SAASc,GAAAA,CACPzB,EAAc,CAACD,CAAAA,EACfI,EAAkB,IAAA,CACpB,CAEA,SAASmB,EAAkBD,EAAyBO,EAAkB,CAGpE,GAFAP,EAAMW,eAAc,EAEhB9B,GAAkBA,EAAeS,OAASiB,EAC5CzB,EAAkB,IAAA,MACb,CACL,IAAM8B,EAAqBC,GAAgBtC,EAASgC,CAAAA,EACpDzB,EAAkB8B,CAAAA,CACpB,CACF,CAEA,SAASH,EAAkBT,EAAoC,CAC7DA,EAAMW,eAAc,EAEpB,IAAMG,EAASd,EAAMe,cACfR,EAAaO,EAAOE,QAAQ5B,OAC5B6B,EAAcH,EAAOE,QAAQnB,MAE/BU,GAAcU,IAChBxC,EAAe8B,EAAYU,CAAAA,EAC3BnC,EAAkB,IAAA,EAEtB,CACF,CAEA,IAAAoC,GAAe5C,GAETS,GAAcoC,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,6BJvFpB,SAASC,GAAW,CAAE,QAAAC,EAAS,eAAAC,EAAgB,aAAAC,CAAa,EAA+C,CACzG,GAAI,CAACF,GAAW,CAACA,EAAQ,OACvB,OAAO,KAGT,OACE,kCACE,iBAACG,GAAA,CACC,QAASH,EACT,eAAgBC,EAChB,eAAiBG,GAAUC,EAAmBD,CAAK,EACrD,EACA,iBAACE,GAAA,CAAmB,QAASN,EAAS,eAAgBC,EAAgB,eAAgBC,EAAc,CACtG,EAGF,SAASG,EAAmBD,EAAa,CACvC,IAAMG,EAAaH,EAAM,QAAUA,EAAM,OAAO,KAC1CI,EAAcJ,EAAM,QAAUA,EAAM,OAAO,MACjDF,EAAaK,EAAYC,CAAW,CACtC,CACF,CAEA,IAAOC,GAAQV,GMvCfW,IAAAC,IAAA,IAAAC,EAAuB,SAQvB,SAASC,IAAAA,CACP,IAAMC,EAAeC,IAAKC,QAAQC,WAAY,IAAS,GACjDC,EAAiBH,IAAKC,QAAQC,WAAY,IAAS,GACnDE,EAAiBJ,IAAKC,QAAQC,WAAY,IAAS,GAEzD,OACE,gBAACG,GAAAA,KACC,gBAACC,MAAAA,CAAIC,IAAKR,EAAcS,OAAQ,GAAGL,CAAAA,QAAsBC,CAAAA,MAAqBK,IAAKC,EAAE,YAAA,IAErF,gBAAOC,GAAOC,KAAKC,EAAEC,MAAK,KACvBC,GAAG,sEAAuE,CAAEC,OAAQ,gBAACA,SAAAA,IAAAA,CAAU,CAAA,CAAA,EAElG,gBAAOL,GAAOC,KAAKC,EAAEC,MAAK,KAAEJ,EAAE,mBAAA,CAAA,EAE9B,gBAACO,GAAAA,KACC,gBAACC,KAAAA,KACC,gBAAOC,GAAY,CAACC,KAAK,YAAYC,KAAM,iCACxCX,EAAE,sBAAA,CAAA,CAAA,EAGP,gBAACQ,KAAAA,KACC,gBAAOC,GAAY,CAACC,KAAK,YAAYC,KAAM,6BACxCX,EAAE,kBAAA,CAAA,CAAA,EAGP,gBAACQ,KAAAA,KACC,gBAACI,GAAAA,CAAeC,SAAAA,GAASF,KAAM,aAC7B,gBAAOG,GAAOC,OAAOC,QAAO,CAACC,KAAM,KAClCjB,EAAE,sBAAA,CAAA,CAAA,CAAA,CAAA,CAMf,CAEA,IAAAkB,GAAe9B,GAETO,GAAqBwB,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,oCAWrBZ,GAAcY,OAAAA,OAAAA,GAAAA,UAAAA,EAAAA,6BAYdP,GAAiBO,OAAAA,OAAAA,GAAaC,EAAI,EAAA,UAAA,EAAA,gCCrExCC,IAAAC,IAAA,IAAAC,EAAuB,SAmCvB,SAASC,GAAQ,CACfC,gBAAAA,EACAC,gBAAAA,EACAC,YAAAA,EACAC,mBAAAA,EACAC,mBAAAA,EACAC,sBAAAA,EACAC,WAAAA,EACAC,eAAAA,EACAC,kBAAAA,EACAC,aAAAA,EACAC,QAAAA,EACAC,eAAAA,EACAC,cAAAA,EACAC,eAAAA,EACAC,QAAAA,EACAC,SAAAA,CAAQ,EACK,CACb,IAAMC,GAAsBC,GAAa,EACnCC,GAAsBC,GAAe,EACrCC,GAAYC,GACZC,GAAO,CACXC,OAAYC,GACZC,QAAaC,GACbC,OAAYC,GACZC,SAAcC,GACdC,oBAAyBC,GACzBC,KAAUC,GACVC,SAAcC,GACdC,SAAcC,GACdC,YAAiBC,EACnB,EAEMC,EADgBC,GAAKC,QAAO,EACLC,OAAS,WAEtC,OACE,gBAACC,GAAAA,KACC,gBAACC,MAAAA,CAAIC,UAAU,wBACb,gBAACD,MAAAA,CAAIC,UAAU,+BACb,gBAACC,SAAAA,CAAOD,UAAU,mBAChB,gBAACE,GAAAA,CACCC,QAAQ,WACRC,MAAO1C,EACPC,QAASA,EACTC,eAAgBA,EAChBC,cAAeA,KAIlBX,GACC,gBAAC6C,MAAAA,CAAIC,UAAU,mBACb,gBAAOK,GAAM,CACXC,QAAS9C,GAAkBH,EAC3BkD,MAAOjD,EACPkD,QAASpD,EACTqD,KAAK,aAEJnD,EAAwBoD,EAAE,OAAA,EAAWA,EAAE,wBAAA,CAAA,CAAA,EAK9C,gBAACX,MAAAA,CAAIC,UAAU,iBACb,gBAACW,GAAAA,CACCC,mBAAoB,CAAEf,KAAM,WAAYgB,MAAO,UAAW,EAC1DC,SAAU/C,EACVE,gBAAiBA,GACjBE,gBAAiBA,GACjBE,MAAOA,GACPE,KAAMA,GACNmB,gBAAiBA,EACjBqB,eACExD,GAAcC,EAAiBP,EAAkBI,EAAqB,CAACJ,EAAkB,EAE3Fe,SAAUA,KAIbb,GACC,gBAAC4C,MAAAA,CAAIC,UAAU,mBACb,gBAAOK,GAAM,CACXI,KAAK,YACLH,QAAS9C,GAAkBH,EAC3BkD,MAAO9C,EACP+C,QAAS1C,GAERL,EAAoBiD,EAAE,OAAA,EAAWA,EAAE,eAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAQpD,CAEA,IAAAM,GAAehE,GAET8C,GAAUmB,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,yBZlGhB,SAASC,GAAc,CAAE,QAAAC,EAAS,QAAAC,EAAS,SAAAC,EAAU,KAAAC,CAAK,EAA2C,CACnG,IAAMC,EAAsBC,GAAc,EAEpC,CACJ,MAAAC,EACA,aAAAC,EACA,cAAAC,EACA,mBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,iBAAAC,CACF,EAAIC,GAAU,CACZ,QAAAf,EACA,QAAAC,EACA,KAAAE,EACA,gBAAAC,CACF,CAAC,EAED,OACE,kCACE,iBAACY,GAAA,CACC,MAAOV,EAAM,mBACb,SAAWW,GAAkBR,EAAmBQ,CAAK,EACrD,SAAWC,GAA2BP,EAAeO,CAAK,EAC1D,QAASR,EACX,EAECJ,EAAM,OACL,iBAAOa,GAAN,CAAa,KAAM,QAAS,QAAS,IAAML,EAAiB,EAAG,SAAQ,GAAC,aAAY,IAClFR,EAAM,MAAM,OACf,EAGF,iBAAC,OAAI,UAAU,iCACb,iBAACc,GAAA,CACC,QAASpB,EACT,eAAgBM,EAAM,eACtB,aAAc,CAACe,EAAcJ,IAAkBV,EAAac,EAA2CJ,CAAK,EAC9G,CACF,EAEC,CAACX,EAAM,YAAcA,EAAM,KAAK,aAAe,EAC9C,iBAACgB,GAAA,IAAU,EAEX,iBAACC,GAAA,CACC,gBAAiBjB,EAAM,iBAAmB,EAC1C,gBAAiBA,EAAM,KAAK,MAAQ,EACpC,YAAaA,EAAM,KAAK,OAAS,KACjC,mBAAoBA,EAAM,mBAC1B,sBAAuBA,EAAM,sBAC7B,mBAAoBO,EACpB,WAAYP,EAAM,WAClB,eAAgBA,EAAM,eACtB,kBAAmBA,EAAM,kBACzB,aAAcA,EAAM,KAAK,WACzB,QAASL,EACT,eAAgBK,EAAM,eACtB,cAAeE,EACf,eAAgBI,EAChB,QAASN,EAAM,QACf,SAAUJ,EACZ,CAEJ,CAEJ,CAEA,IAAOsB,GAAQzB,G3BxFf,SAAS0B,IAAAA,CACAC,GAAO,UAAW,UAAA,EAEzB,IAAMC,EAAeC,GAAa,EAO5BC,EAAOC,GAAgBC,EAAa,EAGpCC,EAAYC,SAASC,eAAe,gBAAA,EACpBC,cAAWH,CAAAA,EAC5BI,OAAO,gBAACC,GAAAA,CAAIR,KAAMA,IACzB,CAGAS,OAAOC,iBAAiB,qBAAsB,SAAA,CAC5Cd,GAAAA,CACF,CAAA,EAEA,SAASY,GAAI,CAAER,KAAAA,CAAI,EAAiB,CAClC,IAAMW,EAAgBC,GAAKC,QAAO,EAE5B,CAAEC,mBAAAA,CAAkB,EAAKC,GAAAA,EAEzBC,EACJF,EAAmBG,OAChBC,GAAcA,EAAUC,SAAoBC,GAAkBC,uBAAuBC,OAAO,GACzF,CAAA,EAKR,OAAIX,EAAKY,OAAS,UAEd,gBAACC,GAAAA,KACC,gBAACC,MAAAA,CAAIC,UAAU,aACb,gBAACD,MAAAA,CAAIC,UAAU,uBACf,gBAACD,MAAAA,CAAIC,UAAU,uBACf,gBAACD,MAAAA,CAAIC,UAAU,yBAOrB,gBAAA,WAAA,KACE,gBAACC,GAAAA,CACCC,QAAS5B,EAAK4B,QACdC,QAAS7B,EAAK6B,QACdC,SAAcC,GAAeC,gBAG/B,gBAACP,MAAAA,CAAIC,UAAU,iBACb,gBAACO,GAAAA,CAAYC,MAAOlC,EAAKmC,cAG1BnB,EAA0BoB,OAAS,GAAK,gBAACC,GAAAA,CAASC,SAAUtB,IAGnE,CAEA,IAAMQ,GAAUe,OAAAA,OAAAA,EAAAA,SAAAA,EAAAA,yBH9EF,IAAOC,GAAuB", "names": ["BLOCKS", "exports", "INLINES", "exports", "MARKS", "exports", "blocks_1", "inlines_1", "marks_1", "exports", "_a", "__spreadArray", "require_types", "__commonJSMin", "exports", "init_define_process_env", "init_sentry_injection_stub", "require_nodeTypes", "__commonJSMin", "exports", "init_define_process_env", "init_sentry_injection_stub", "blocks_1", "exports", "exports", "isInline", "isBlock", "isText", "blocks_1", "inlines_1", "hasValue", "obj", "value", "_i", "_a", "key", "node", "exports", "getSchemaWithNodeType", "nodeType", "__require", "blocks_1", "exports", "inlines_1", "marks_1", "__exportStar", "emptyDocument_1", "helpers", "__importStar", "schemas_1", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "n", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "React", "ReactDOM", "init_define_process_env", "init_sentry_injection_stub", "import_react", "init_define_process_env", "init_sentry_injection_stub", "import_react", "SausageItemWrapper", "styled", "SausageItemText", "RegularText", "SausageItem", "element", "React", "a", "href", "absolute_url", "name", "init_define_process_env", "init_sentry_injection_stub", "PrivateSausageList", "styled", "props", "$isHover", "SausageList", "withPrivatePublicMap", "isHover", "SausageWrapper", "styled", "Sausage", "React", "Component", "props", "wrapperRef", "createRef", "handleHover", "hoverState", "setState", "hover", "state", "componentDidMount", "listSize", "current", "firstChild", "getBoundingClientRect", "width", "render", "items", "onMouseOut", "onMouseOver", "ref", "SausageList", "isHover", "length", "map", "element", "key", "SausageItem", "MediaQuery", "minWidth", "Sausage_default", "init_define_process_env", "init_sentry_injection_stub", "processData", "json", "f", "init_define_process_env", "init_sentry_injection_stub", "React", "usePartnersOperation", "language", "getUserLocale", "locale", "LOCALES", "request", "environnement", "CONTENTFUL_ENVIRONMENT", "space", "CONTENTFUL_SPACE_ID", "accessToken", "CONTENTFUL_DELIVERY_TOKEN_MASTER", "client", "rawRequester", "GraphQLClient", "requester", "response", "partnersOperation_exports", "UFE_exports", "__export", "ASSETS", "DEFAULT_ASSETS", "DISCOVER_DATA", "init_define_process_env", "init_sentry_injection_stub", "windowLens", "lens", "DEFAULT_ASSETS", "ASSETS", "DISCOVER_DATA", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "BLOCKS", "init_define_process_env", "init_sentry_injection_stub", "INLINES", "init_define_process_env", "init_sentry_injection_stub", "MARKS", "init_define_process_env", "init_sentry_injection_stub", "TOP_LEVEL_BLOCKS", "BLOCKS", "LIST_ITEM_BLOCKS", "TABLE_BLOCKS", "VOID_BLOCKS", "CONTAINERS", "HEADINGS", "TEXT_CONTAINERS", "V1_NODE_TYPES", "INLINES", "V1_MARKS", "MARKS", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "EMPTY_DOCUMENT", "BLOCKS", "helpers_exports", "__export", "isBlock", "isEmptyParagraph", "isInline", "isText", "stripEmptyTrailingParagraphFromDocument", "init_define_process_env", "init_sentry_injection_stub", "hasValue", "obj", "value", "key", "isInline", "node", "INLINES", "isBlock", "BLOCKS", "isText", "isEmptyParagraph", "textNode", "isValidDocument", "document", "MIN_NODES_FOR_STRIPPING", "stripEmptyTrailingParagraphFromDocument", "lastNode", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "typeMismatchError", "path", "property", "typeName", "value", "minSizeError", "min", "maxSizeError", "max", "enumError", "expected", "unknownPropertyError", "requiredPropertyError", "ObjectAssertion", "obj", "path", "errors", "serializeError", "error", "index", "step", "key", "requiredPropertyError", "value", "property", "typeMismatchError", "optional", "expected", "enumError", "maxSizeError", "min", "minSizeError", "properties", "unknowns", "unknownPropertyError", "assert", "foundErrors", "item", "init_define_process_env", "init_sentry_injection_stub", "VOID_CONTENT", "NodeAssertion", "contentRule", "validateData", "node", "path", "$", "ObjectAssertion", "nodeTypes", "min", "item", "item$", "dataErrors", "EntityLinkAssertion", "linkType", "contentNodeTypes", "data", "sys$", "HyperLinkAssertion", "assert", "assertLink", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "assertInlineOrText", "assert", "INLINES", "assertList", "BLOCKS", "assertVoidEntryLink", "assertLink", "VOID_CONTENT", "assertTableCell", "data", "path", "$", "ObjectAssertion", "nodeValidator", "TOP_LEVEL_BLOCKS", "CONTAINERS", "LIST_ITEM_BLOCKS", "HyperLinkAssertion", "appendKeyToValidElement", "element", "key", "isValidElement", "cloneElement", "nodeListToReactComponents", "nodes", "options", "map", "node", "index", "nodeToReactComponent", "renderNode", "renderMark", "renderText", "preserveWhitespace", "helpers", "isText", "nodeValue", "value", "replace", "match", "repeat", "length", "lines", "split", "jsxLines", "forEach", "line", "push", "React", "br", "marks", "reduce", "mark", "type", "children", "content", "nodeType", "defaultNodeRenderers", "BLOCKS", "DOCUMENT", "PARAGRAPH", "p", "HEADING_1", "h1", "HEADING_2", "h2", "HEADING_3", "h3", "HEADING_4", "h4", "HEADING_5", "h5", "HEADING_6", "h6", "EMBEDDED_ENTRY", "div", "EMBEDDED_RESOURCE", "UL_LIST", "ul", "OL_LIST", "ol", "LIST_ITEM", "li", "QUOTE", "blockquote", "HR", "hr", "TABLE", "table", "tbody", "TABLE_ROW", "tr", "TABLE_HEADER_CELL", "th", "TABLE_CELL", "td", "INLINES", "ASSET_HYPERLINK", "defaultInline", "ENTRY_HYPERLINK", "RESOURCE_HYPERLINK", "defaultInlineResource", "_children", "HYPERLINK", "a", "href", "data", "uri", "defaultMarkRenderers", "MARKS", "BOLD", "text", "b", "ITALIC", "i", "UNDERLINE", "u", "CODE", "code", "SUPERSCRIPT", "sup", "SUBSCRIPT", "sub", "STRIKETHROUGH", "s", "span", "target", "sys", "id", "urn", "documentToReactComponents", "richTextDocument", "processedDocument", "stripEmptyTrailingParagraph", "stripEmptyTrailingParagraphFromDocument", "richtext", "RichText", "document", "links", "renderEntry", "renderMark", "renderNode", "blockAssetMap", "blockEntryMap", "asset", "entry", "richTextOptions", "makeRenderMark", "makeRenderNode", "node", "children", "Hyperlink", "EmbeddedAsset", "documentToReactComponents", "Component", "text", "Partners", "partners", "length", "Wrapper", "TitleGroup", "SectionTitle", "tc", "highlight", "HighlightedTitle", "color", "List", "SlidingCarousel", "map", "partnerOperation", "index", "PartnerOperationCardWithTracking", "key", "CenteredCTA", "href", "t", "partnerOperationRef", "useRef", "shadow", "usePartnershipTracker", "partnerUserId", "undefined", "click", "enabled", "eventPosition", "ignoreLocationChange", "impression", "once", "li", "ref", "PartnerOperationCard", "compact", "translation", "status", "description", "RichText", "document", "json", "renderNode", "Paragraph", "styles", "copy", "S", "regular", "keyTitle", "keyList", "buttonMore", "link", "pictureUrl", "cover", "url", "pictureSrcSet", "url_2x", "url_3x", "isOngoing", "partnersOperation", "PartnerOperationStatus", "ONGOING", "buttonUrl", "urlMore", "linkUrl", "urlProjectList", "styled", "ButtonAsLink", "heading", "L", "attrs", "asDesktop", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "import_qs", "init_define_process_env", "init_sentry_injection_stub", "getFilterByName", "filters", "name", "filter", "SEARCH_API_FILTERS", "DEFAULT_SORTING", "DEFAULT_OFFSET", "DEFAULT_LIMIT", "DEFAULT_SORT_LIMIT", "useSearch", "filters", "_sorting", "tags", "currentLanguage", "isAuthenticated", "user_exports", "state", "setState", "getInitialStateFromUrl", "memoizedResults", "memoizedMeta", "memoizedCurrentFilters", "requestResults", "prevState", "updateFilter", "updateSorting", "handleSearchUpdate", "onSearchChange", "onSearchReset", "onSearchSubmit", "handleLoadMore", "handleLoadPrevious", "handleCloseError", "parseQualifiers", "input", "key", "qualifierEntry", "filter", "getFilterByName", "currentFilters", "currentValue", "option", "tag", "handleFetchingError", "error", "isFetchingMore", "isFetchingPrevious", "errorProps", "handleFetchingSuccess", "results", "meta", "handleFetchingPending", "quantityFetched", "qualifiers", "params", "response", "fetchSearchProjects", "requestMoreResults", "quantity", "fetchSearchMoreProjects", "url", "next", "requestPreviousResults", "totalCount", "previous", "search", "filterName", "optionValue", "setQueryParam", "value", "event", "newState", "getInitialState", "sorting", "parseQueryString", "queryParams", "parameters", "normalizedParameters", "offset", "limit", "searchValue", "sortingValue", "start", "name", "reset", "currentQueryParams", "parsed", "stringified", "character", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "sizerStyle", "position", "top", "left", "visibility", "height", "overflow", "whiteSpace", "INPUT_PROPS_BLACKLIST", "cleanInputProps", "inputProps", "forEach", "field", "copyStyles", "styles", "node", "style", "fontSize", "fontFamily", "fontWeight", "fontStyle", "letterSpacing", "textTransform", "isIE", "window", "navigator", "test", "userAgent", "generateId", "Math", "random", "toString", "substring", "undefined", "AutosizeInput", "forwardRef", "className", "defaultValue", "extraWidth", "id", "injectStyles", "inputClassName", "inputRef", "inputStyle", "minWidth", "onAutosize", "onChange", "placeholder", "placeholderIsMinWidth", "value", "type", "otherProps", "ref", "inputWidth", "setInputWidth", "useState", "Number", "inputId", "setInputId", "inputElementRef", "useRef", "placeHolderSizerRef", "sizerRef", "mountedRef", "useImperativeHandle", "getInput", "current", "focus", "blur", "select", "handleInputRef", "useCallback", "el", "copyInputStyles", "getComputedStyle", "inputStyles", "updateInputWidth", "scrollWidth", "newInputWidth", "sizerWidth", "placeholderWidth", "max", "extraWidthValue", "parseInt", "String", "useEffect", "renderStyles", "dangerouslySetInnerHTML", "__html", "sizerValue", "reduce", "previousValue", "currentValue", "finalInputStyle", "boxSizing", "width", "Wrapper", "input", "div", "displayName", "AutosizeInput_default", "styled", "SearchBar", "value", "onChange", "onSubmit", "onReset", "inputRef", "useRef", "React", "useEffect", "autoFocus", "SearchBarWrapper", "length", "SearchLabel", "htmlFor", "glyphs", "stroke", "Search", "size", "AutosizeInput", "id", "el", "current", "event", "target", "placeholder", "t", "ResetButton", "onClick", "Close", "title", "focus", "searchbar_default", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "HorizontalScroller", "children", "lowerBound", "setLowerBound", "useState", "higherBound", "setHigherBound", "useEffect", "onScrollChange", "scroller", "useRef", "HorizontalScrollerContainer", "$lowerBound", "$higherBound", "Track", "ref", "onScroll", "isLowerBoundScrolling", "current", "scrollLeft", "isHigherBoundScrolling", "clientWidth", "scrollWidth", "HorizontalScroller_default", "styled", "props", "init_define_process_env", "init_sentry_injection_stub", "DesktopFiltersBarContainer", "styled", "FiltersListWrapper", "FilterItem", "props", "$hidden", "FiltersList", "$wrapped", "FilterOptionItemWrapper", "$selected", "COLORS", "PRIMARY_BLUE_500", "TEXT_PRIMARY", "getHeightPropList", "nbItems", "getFlexPropItem", "FilterOptionsListWrapper", "styled", "props", "children", "length", "MobileFiltersList", "filters", "currentFilters", "onUpdateFilter", "OnlyMobile", "HorizontalScroller", "FiltersList", "$wrapped", "map", "name", "label", "options", "index", "FilterItem", "key", "DropdownFilter", "onChange", "useDefault", "value", "MobileFiltersList_default", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "FilterOptionsList", "filterName", "onClickItem", "options", "selectedValue", "FilterOptionsListWrapper", "option", "index", "FilterOptionItemWrapper", "FilterOptionsList_default", "NB_MAX_FILTERS", "DesktopFiltersList", "filters", "currentFilters", "onUpdateFilter", "isExpanded", "setIsExpanded", "useState", "expandedFilter", "setExpandedFilter", "OnlyDesktop", "DesktopFiltersBarContainer", "FiltersListWrapper", "FiltersList", "map", "filter", "index", "name", "label", "options", "length", "FilterItem", "key", "DropdownFilter", "value", "focused", "onClick", "event", "handleClickFilter", "autosize", "SecondaryLink", "toggleExpanded", "t", "FilterOptionsList", "filterName", "onClickItem", "handleClickOption", "selectedValue", "preventDefault", "nextExpandedFilter", "getFilterByName", "target", "currentTarget", "dataset", "optionValue", "DesktopFiltersList_default", "styled", "FiltersBar", "filters", "currentFilters", "updateFilter", "MobileFiltersList_default", "event", "handleFilterUpdate", "DesktopFiltersList_default", "filterName", "optionValue", "filtersbar_default", "init_define_process_env", "init_sentry_injection_stub", "React", "NoResults", "noResultsImg", "UFE", "ASSETS", "noResults", "noResultsImgx2", "noResultsImgx3", "NoResultsContainer", "img", "src", "srcSet", "alt", "t", "styles", "copy", "M", "light", "tc", "strong", "ActionsList", "li", "ButtonAsLink", "kind", "href", "SuggestionLink", "withIcon", "glyphs", "stroke", "Refresh", "size", "noresults_default", "styled", "Link", "init_define_process_env", "init_sentry_injection_stub", "React", "Results", "quantityFetched", "canLoadPrevious", "canLoadMore", "handleLoadPrevious", "isFetchingPrevious", "errorFetchingPrevious", "isFetching", "isFetchingMore", "errorFetchingMore", "resultsCount", "sorting", "currentSorting", "updateSorting", "handleLoadMore", "results", "modalImg", "currentLanguage", "getUserLocale", "currentCurrency", "getUserCurrency", "rates", "CURRENCIES_RATES", "urls", "signin", "SIGNIN_URL", "signout", "SIGNOUT_URL", "signup", "SIGNUP_URL", "discover", "DISCOVER_URL", "discoverLandingPage", "DISCOVER_LANDING_URL", "home", "HOMEPAGE_URL", "proposal", "PROPOSAL_URL", "channels", "CHANNELS_URL", "discussions", "DISCUSSIONS_URL", "isAuthenticated", "user", "useAuth", "type", "Wrapper", "div", "className", "header", "SortingBar", "context", "count", "Button", "loading", "error", "onClick", "kind", "t", "ProjectsList", "dataUTMPageContext", "value", "projects", "nbPlaceholders", "results_default", "styled", "SearchSection", "filters", "sorting", "modalImg", "tags", "currentLanguage", "getUserLocale", "state", "updateFilter", "updateSorting", "handleSearchUpdate", "onSearchReset", "onSearchSubmit", "handleLoadMore", "handleLoadPrevious", "handleCloseError", "useSearch", "searchbar_default", "value", "event", "Banner", "filtersbar_default", "name", "noresults_default", "results_default", "SearchSection_default", "renderApp", "setTag", "language", "getUserLocale", "data", "processData", "DISCOVER_DATA", "container", "document", "getElementById", "createRoot", "render", "App", "window", "addEventListener", "auth", "user", "useAuth", "partnersOperations", "usePartnersOperation", "onGoingPartnersOperations", "filter", "predicate", "status", "partnersOperation", "PartnerOperationStatus", "ONGOING", "type", "Wrapper", "div", "className", "SearchSection", "filters", "sorting", "modalImg", "DEFAULT_ASSETS", "modalRemindMe", "SausageMenu", "items", "categories", "length", "Partners", "partners", "styled", "discover_default"] }