diff --git a/examples/react/getting-started/src/App.tsx b/examples/react/getting-started/src/App.tsx index ac1d9f2fda6..c3d26e639db 100644 --- a/examples/react/getting-started/src/App.tsx +++ b/examples/react/getting-started/src/App.tsx @@ -1,5 +1,4 @@ import { liteClient as algoliasearch } from 'algoliasearch/lite'; -import { Hit } from 'instantsearch.js'; import React from 'react'; import { Configure, @@ -12,12 +11,15 @@ import { TrendingItems, Carousel, Chat, + ChatPageSuggestions, FilterSuggestions, CurrentRefinements, } from 'react-instantsearch'; import { Panel } from './Panel'; +import type { Hit } from 'instantsearch.js'; + import 'instantsearch.css/themes/satellite.css'; import './App.css'; @@ -76,6 +78,12 @@ export function App() { headerComponent={false} /> + + +
diff --git a/examples/react/getting-started/vite.config.mjs b/examples/react/getting-started/vite.config.mjs index c6a2b08fad7..387667c07a4 100644 --- a/examples/react/getting-started/vite.config.mjs +++ b/examples/react/getting-started/vite.config.mjs @@ -4,8 +4,83 @@ import react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; import commonjs from 'vite-plugin-commonjs'; +// Mocks the agent-studio response shape `connectChatPageSuggestions` parses +// (`data.parts[1].text` = JSON-stringified string array). Reactive to query +// and first-hit category so refinements visibly drive the pills. +function chatPageSuggestionsMockPlugin() { + return { + name: 'chat-page-suggestions-mock', + configureServer(server) { + server.middlewares.use('/api/chat-page-suggestions', async (req, res, next) => { + if (req.method !== 'POST') { + next(); + return; + } + // Tune via `?delay=N` (ms). Default 800ms so the loading skeleton is + // clearly visible on every refetch (initial mount + each refinement + // change). + const url = new URL(req.url ?? '', 'http://localhost'); + const delayParam = Number(url.searchParams.get('delay')); + const delayMs = + Number.isFinite(delayParam) && delayParam >= 0 ? delayParam : 800; + const chunks = []; + for await (const chunk of req) chunks.push(chunk); + const raw = Buffer.concat(chunks).toString('utf8'); + let input = {}; + try { + const body = JSON.parse(raw); + const text = body?.messages?.[0]?.parts?.[0]?.text; + if (typeof text === 'string') input = JSON.parse(text); + } catch { + // ignore — fall through with empty input + } + const query = (input.query || '').trim(); + const category = input.hitsSample?.[0]?.categories?.[0]; + const max = Math.max(1, Math.min(input.maxSuggestions ?? 4, 8)); + + const pool = []; + if (query) { + pool.push( + `Compare the top ${query} options`, + `What should I look for in a ${query}?`, + `Recommend a ${query} under $500`, + `Show me bestsellers for "${query}"` + ); + } + if (category) { + pool.push( + `What's new in ${category}?`, + `Top-rated ${category} this month`, + `Help me choose a ${category}` + ); + } + pool.push( + 'Help me find what I need', + 'What are people buying right now?', + 'Suggest something for a gift' + ); + const suggestions = Array.from(new Set(pool)).slice(0, max); + + await new Promise((resolve) => setTimeout(resolve, delayMs)); + + res.setHeader('Content-Type', 'application/json'); + res.end( + JSON.stringify({ + id: `dummy-${Date.now()}`, + role: 'assistant', + parts: [ + { type: 'reasoning', text: 'mocked' }, + { type: 'text', text: JSON.stringify(suggestions) }, + ], + }) + ); + }); + }, + }; +} + export default defineConfig({ - plugins: [commonjs(), react()], + plugins: [commonjs(), react(), chatPageSuggestionsMockPlugin()], build: { commonjsOptions: { requireReturnsDefault: 'preferred', diff --git a/examples/react/next-app-router/app/Search.tsx b/examples/react/next-app-router/app/Search.tsx index a61285a6f3f..dc70a147ed8 100644 --- a/examples/react/next-app-router/app/Search.tsx +++ b/examples/react/next-app-router/app/Search.tsx @@ -3,10 +3,11 @@ import Link from 'next/link'; import React from 'react'; import { + Chat, + ChatPageSuggestions, Hits, SearchBox, RefinementList, - DynamicWidgets, } from 'react-instantsearch'; import { InstantSearchNext } from 'react-instantsearch-nextjs'; @@ -15,7 +16,14 @@ import { Panel } from '../components/Panel'; import { QueryId } from '../components/QueryId'; import { client } from '../lib/client'; -export default function Search() { +const isServer = typeof window === 'undefined'; +const PHASE = isServer ? '[SSR]' : '[CSR]'; + +console.log( + `${PHASE} Search.tsx module evaluated at ${new Date().toISOString()}` +); + +export default function Search({ baseUrl }: { baseUrl: string }) { return (
- + + + + + +
+ + {/* + Demo wiring: + - `?delay=500` on the dummy endpoint + - `ssrTimeoutMs={1500}` → SSR wins the race and bakes pills into + server HTML (curl the page and grep for one). + - On client refinement changes, the 500ms delay makes the + skeleton visible during the refetch. + Flip `delay` higher than `ssrTimeoutMs` to test the SSR-timeout + path (server HTML has no pills; client renders the skeleton + then the pills after hydration). + */} + +
@@ -36,14 +69,8 @@ export default function Search() { Other page -
- ); -} -function FallbackComponent({ attribute }: { attribute: string }) { - return ( - - - + + ); } diff --git a/examples/react/next-app-router/app/api/chat-page-suggestions/route.ts b/examples/react/next-app-router/app/api/chat-page-suggestions/route.ts new file mode 100644 index 00000000000..3354464b069 --- /dev/null +++ b/examples/react/next-app-router/app/api/chat-page-suggestions/route.ts @@ -0,0 +1,85 @@ +import { NextResponse } from 'next/server'; + +type RequestBody = { + messages?: Array<{ + parts?: Array<{ type?: string; text?: string }>; + }>; +}; + +type AgentInput = { + query?: string; + hitsSample?: Array<{ name?: string; categories?: string[] }>; + context?: Record; + maxSuggestions?: number; +}; + +// Returns a mocked agent-studio response in the shape the +// `connectChatPageSuggestions` connector expects: +// { parts: [, { text: '["prompt one", "prompt two", ...]' }] } +// +// Suggestions are loosely derived from the search query and the first hit's +// category so the demo feels reactive to refinements. +export async function POST(request: Request) { + const url = new URL(request.url); + const delayParam = Number(url.searchParams.get('delay')); + // Tune via `?delay=N` (ms). Default 500ms — long enough to see the client + // skeleton on refinement changes; short enough that SSR (with a generous + // `ssrTimeoutMs`) still wins the race and bakes pills into server HTML. + const delayMs = Number.isFinite(delayParam) && delayParam >= 0 ? delayParam : 500; + + const body = (await request.json().catch(() => ({}))) as RequestBody; + const rawText = body.messages?.[0]?.parts?.[0]?.text ?? '{}'; + const input: AgentInput = + typeof rawText === 'string' + ? safeParse(rawText) ?? {} + : (rawText as AgentInput); + + const query = (input.query || '').trim(); + const firstHit = input.hitsSample?.[0]; + const category = firstHit?.categories?.[0]; + const max = Math.max(1, Math.min(input.maxSuggestions ?? 4, 8)); + + const pool: string[] = []; + if (query) { + pool.push( + `Compare the top ${query} options`, + `What should I look for in a ${query}?`, + `Recommend a ${query} under $500`, + `Show me bestsellers for "${query}"` + ); + } + if (category) { + pool.push( + `What's new in ${category}?`, + `Top-rated ${category} this month`, + `Help me choose a ${category}` + ); + } + pool.push( + 'Help me find what I need', + 'What are people buying right now?', + 'Suggest something for a gift' + ); + + // Dedupe and trim to the requested length. + const suggestions = Array.from(new Set(pool)).slice(0, max); + + await new Promise((resolve) => setTimeout(resolve, delayMs)); + + return NextResponse.json({ + id: `dummy-${Date.now()}`, + role: 'assistant', + parts: [ + { type: 'reasoning', text: 'mocked' }, + { type: 'text', text: JSON.stringify(suggestions) }, + ], + }); +} + +function safeParse(text: string): T | null { + try { + return JSON.parse(text) as T; + } catch { + return null; + } +} diff --git a/examples/react/next-app-router/app/page.tsx b/examples/react/next-app-router/app/page.tsx index 0a967f93c97..c172ffd6468 100644 --- a/examples/react/next-app-router/app/page.tsx +++ b/examples/react/next-app-router/app/page.tsx @@ -1,3 +1,4 @@ +import { headers } from 'next/headers'; import React from 'react'; import { responsesCache } from '../lib/client'; @@ -6,8 +7,15 @@ import Search from './Search'; export const dynamic = 'force-dynamic'; -export default function Page() { +export default async function Page() { responsesCache.clear(); - return ; + // SSR-side fetches (e.g. ``'s transport) need an + // absolute URL because Node fetch can't resolve relative paths. + const h = await headers(); + const host = h.get('host') ?? 'localhost:3000'; + const proto = h.get('x-forwarded-proto') ?? 'http'; + const baseUrl = `${proto}://${host}`; + + return ; } diff --git a/examples/react/next-app-router/tsconfig.tsbuildinfo b/examples/react/next-app-router/tsconfig.tsbuildinfo new file mode 100644 index 00000000000..b41561ea1fb --- /dev/null +++ b/examples/react/next-app-router/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.string.d.ts","../../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.object.d.ts","../../../node_modules/typescript/lib/lib.esnext.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/next/dist/styled-jsx/types/css.d.ts","../../../node_modules/next/dist/styled-jsx/types/macro.d.ts","../../../node_modules/next/dist/styled-jsx/types/style.d.ts","../../../node_modules/next/dist/styled-jsx/types/global.d.ts","../../../node_modules/next/dist/styled-jsx/types/index.d.ts","../../../node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","../../../node_modules/@types/react/canary.d.ts","../../../node_modules/@types/react/experimental.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/@types/react-dom/canary.d.ts","../../../node_modules/@types/react-dom/experimental.d.ts","../../../node_modules/next/dist/lib/fallback.d.ts","../../../node_modules/next/dist/compiled/webpack/webpack.d.ts","../../../node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","../../../node_modules/next/dist/shared/lib/entry-constants.d.ts","../../../node_modules/next/dist/shared/lib/constants.d.ts","../../../node_modules/next/dist/server/config.d.ts","../../../node_modules/next/dist/lib/load-custom-routes.d.ts","../../../node_modules/next/dist/shared/lib/image-config.d.ts","../../../node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","../../../node_modules/next/dist/server/body-streams.d.ts","../../../node_modules/next/dist/server/lib/cache-control.d.ts","../../../node_modules/next/dist/lib/setup-exception-listeners.d.ts","../../../node_modules/next/dist/lib/worker.d.ts","../../../node_modules/next/dist/lib/constants.d.ts","../../../node_modules/next/dist/lib/bundler.d.ts","../../../node_modules/next/dist/client/components/app-router-headers.d.ts","../../../node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","../../../node_modules/next/dist/client/flight-data-helpers.d.ts","../../../node_modules/next/dist/client/components/segment-cache/cache-key.d.ts","../../../node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","../../../node_modules/next/dist/shared/lib/app-router-types.d.ts","../../../node_modules/next/dist/build/static-paths/types.d.ts","../../../node_modules/next/dist/build/rendering-mode.d.ts","../../../node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","../../../node_modules/next/dist/server/require-hook.d.ts","../../../node_modules/next/dist/server/lib/experimental/ppr.d.ts","../../../node_modules/next/dist/lib/page-types.d.ts","../../../node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","../../../node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","../../../node_modules/next/dist/build/analysis/get-page-static-info.d.ts","../../../node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","../../../node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","../../../node_modules/next/dist/server/node-polyfill-crypto.d.ts","../../../node_modules/next/dist/server/node-environment-baseline.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/console-file.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/console-exit.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/random.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/date.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","../../../node_modules/next/dist/server/node-environment.d.ts","../../../node_modules/next/dist/build/page-extensions-type.d.ts","../../../node_modules/next/dist/server/route-kind.d.ts","../../../node_modules/next/dist/server/route-definitions/route-definition.d.ts","../../../node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","../../../node_modules/next/dist/server/lib/cache-handlers/types.d.ts","../../../node_modules/next/dist/server/response-cache/types.d.ts","../../../node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","../../../node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","../../../node_modules/next/dist/server/render-result.d.ts","../../../node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","../../../node_modules/next/dist/server/instrumentation/types.d.ts","../../../node_modules/next/dist/lib/coalesced-function.d.ts","../../../node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","../../../node_modules/next/dist/server/lib/router-utils/types.d.ts","../../../node_modules/next/dist/trace/types.d.ts","../../../node_modules/next/dist/trace/trace.d.ts","../../../node_modules/next/dist/trace/shared.d.ts","../../../node_modules/next/dist/trace/index.d.ts","../../../node_modules/next/dist/build/load-jsconfig.d.ts","../../../node_modules/@next/env/dist/index.d.ts","../../../node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","../../../node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","../../../node_modules/next/dist/telemetry/storage.d.ts","../../../node_modules/next/dist/build/build-context.d.ts","../../../node_modules/next/dist/shared/lib/bloom-filter.d.ts","../../../node_modules/next/dist/build/webpack-config.d.ts","../../../node_modules/next/dist/build/swc/generated-native.d.ts","../../../node_modules/next/dist/build/swc/types.d.ts","../../../node_modules/next/dist/server/dev/parse-version-info.d.ts","../../../node_modules/next/dist/next-devtools/shared/types.d.ts","../../../node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","../../../node_modules/next/dist/next-devtools/dev-overlay/cache-indicator.d.ts","../../../node_modules/next/dist/server/lib/parse-stack.d.ts","../../../node_modules/next/dist/next-devtools/server/shared.d.ts","../../../node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","../../../node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","../../../node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","../../../node_modules/next/dist/server/dev/debug-channel.d.ts","../../../node_modules/next/dist/server/dev/hot-reloader-types.d.ts","../../../node_modules/next/dist/server/lib/i18n-provider.d.ts","../../../node_modules/next/dist/server/web/next-url.d.ts","../../../node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","../../../node_modules/next/dist/server/web/spec-extension/cookies.d.ts","../../../node_modules/next/dist/server/web/spec-extension/request.d.ts","../../../node_modules/next/dist/server/after/builtin-request-context.d.ts","../../../node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","../../../node_modules/next/dist/server/web/spec-extension/response.d.ts","../../../node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","../../../node_modules/next/dist/server/web/types.d.ts","../../../node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","../../../node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","../../../node_modules/next/dist/server/base-http/node.d.ts","../../../node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","../../../node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","../../../node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","../../../node_modules/next/dist/shared/lib/mitt.d.ts","../../../node_modules/next/dist/client/with-router.d.ts","../../../node_modules/next/dist/client/router.d.ts","../../../node_modules/next/dist/client/route-loader.d.ts","../../../node_modules/next/dist/client/page-loader.d.ts","../../../node_modules/next/dist/shared/lib/router/router.d.ts","../../../node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","../../../node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","../../../node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","../../../node_modules/next/dist/build/templates/pages.d.ts","../../../node_modules/next/dist/server/route-modules/pages/module.d.ts","../../../node_modules/next/dist/shared/lib/deep-readonly.d.ts","../../../node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","../../../node_modules/next/dist/server/render.d.ts","../../../node_modules/next/dist/server/response-cache/index.d.ts","../../../node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","../../../node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","../../../node_modules/next/dist/server/route-matchers/route-matcher.d.ts","../../../node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","../../../node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","../../../node_modules/next/dist/server/normalizers/normalizer.d.ts","../../../node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","../../../node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","../../../node_modules/next/dist/server/normalizers/request/suffix.d.ts","../../../node_modules/next/dist/server/normalizers/request/rsc.d.ts","../../../node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","../../../node_modules/next/dist/server/normalizers/request/next-data.d.ts","../../../node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","../../../node_modules/next/dist/server/base-server.d.ts","../../../node_modules/next/dist/server/lib/async-callback-set.d.ts","../../../node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","../../../node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","../../../node_modules/next/node_modules/sharp/lib/index.d.ts","../../../node_modules/next/dist/server/image-optimizer.d.ts","../../../node_modules/next/dist/server/next-server.d.ts","../../../node_modules/next/dist/server/lib/types.d.ts","../../../node_modules/next/dist/server/lib/lru-cache.d.ts","../../../node_modules/next/dist/server/lib/dev-bundler-service.d.ts","../../../node_modules/next/dist/server/use-cache/cache-life.d.ts","../../../node_modules/next/dist/server/dev/static-paths-worker.d.ts","../../../node_modules/next/dist/server/dev/next-dev-server.d.ts","../../../node_modules/next/dist/server/next.d.ts","../../../node_modules/next/dist/server/lib/render-server.d.ts","../../../node_modules/next/dist/server/lib/router-server.d.ts","../../../node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","../../../node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","../../../node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","../../../node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","../../../node_modules/next/dist/server/route-modules/route-module.d.ts","../../../node_modules/next/dist/server/load-components.d.ts","../../../node_modules/next/dist/server/web/adapter.d.ts","../../../node_modules/next/dist/server/app-render/types.d.ts","../../../node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","../../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","../../../node_modules/next/dist/server/lib/app-dir-module.d.ts","../../../node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","../../../node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","../../../node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","../../../node_modules/next/dist/server/app-render/cache-signal.d.ts","../../../node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","../../../node_modules/next/dist/server/request/fallback-params.d.ts","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","../../../node_modules/next/dist/server/lib/lazy-result.d.ts","../../../node_modules/next/dist/server/lib/implicit-tags.d.ts","../../../node_modules/next/dist/server/app-render/staged-rendering.d.ts","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","../../../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","../../../node_modules/next/dist/server/app-render/app-render.d.ts","../../../node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","../../../node_modules/next/dist/client/components/error-boundary.d.ts","../../../node_modules/next/dist/client/components/layout-router.d.ts","../../../node_modules/next/dist/client/components/render-from-template-context.d.ts","../../../node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","../../../node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","../../../node_modules/next/dist/client/components/client-page.d.ts","../../../node_modules/next/dist/client/components/client-segment.d.ts","../../../node_modules/next/dist/server/request/search-params.d.ts","../../../node_modules/next/dist/client/components/hooks-server-context.d.ts","../../../node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","../../../node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","../../../node_modules/next/dist/lib/metadata/types/extra-types.d.ts","../../../node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","../../../node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","../../../node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","../../../node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","../../../node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","../../../node_modules/next/dist/lib/metadata/types/resolvers.d.ts","../../../node_modules/next/dist/lib/metadata/types/icons.d.ts","../../../node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","../../../node_modules/next/dist/lib/metadata/metadata.d.ts","../../../node_modules/next/dist/lib/framework/boundary-components.d.ts","../../../node_modules/next/dist/server/app-render/rsc/preloads.d.ts","../../../node_modules/next/dist/server/app-render/rsc/postpone.d.ts","../../../node_modules/next/dist/server/app-render/rsc/taint.d.ts","../../../node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","../../../node_modules/next/dist/server/app-render/collect-segment-data.d.ts","../../../node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","../../../node_modules/next/dist/server/app-render/entry-base.d.ts","../../../node_modules/next/dist/build/templates/app-page.d.ts","../../../node_modules/@types/react/jsx-dev-runtime.d.ts","../../../node_modules/@types/react/compiler-runtime.d.ts","../../../node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","../../../node_modules/@types/react-dom/client.d.ts","../../../node_modules/@types/react-dom/server.d.ts","../../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","../../../node_modules/next/dist/server/route-modules/app-page/module.d.ts","../../../node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","../../../node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","../../../node_modules/next/dist/server/async-storage/work-store.d.ts","../../../node_modules/next/dist/server/web/http.d.ts","../../../node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","../../../node_modules/next/dist/client/components/redirect-status-code.d.ts","../../../node_modules/next/dist/client/components/redirect-error.d.ts","../../../node_modules/next/dist/build/templates/app-route.d.ts","../../../node_modules/next/dist/server/route-modules/app-route/module.d.ts","../../../node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","../../../node_modules/next/dist/build/segment-config/app/app-segments.d.ts","../../../node_modules/next/dist/build/utils.d.ts","../../../node_modules/next/dist/build/turborepo-access-trace/types.d.ts","../../../node_modules/next/dist/build/turborepo-access-trace/result.d.ts","../../../node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","../../../node_modules/next/dist/build/turborepo-access-trace/index.d.ts","../../../node_modules/next/dist/export/routes/types.d.ts","../../../node_modules/next/dist/export/types.d.ts","../../../node_modules/next/dist/export/worker.d.ts","../../../node_modules/next/dist/build/worker.d.ts","../../../node_modules/next/dist/build/index.d.ts","../../../node_modules/next/dist/server/lib/incremental-cache/index.d.ts","../../../node_modules/next/dist/server/after/after.d.ts","../../../node_modules/next/dist/server/after/after-context.d.ts","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","../../../node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","../../../node_modules/next/dist/server/request/params.d.ts","../../../node_modules/next/dist/server/route-matches/route-match.d.ts","../../../node_modules/next/dist/server/request-meta.d.ts","../../../node_modules/next/dist/cli/next-test.d.ts","../../../node_modules/next/dist/server/config-shared.d.ts","../../../node_modules/next/dist/server/base-http/index.d.ts","../../../node_modules/next/dist/server/api-utils/index.d.ts","../../../node_modules/next/dist/build/adapter/build-complete.d.ts","../../../node_modules/next/dist/types.d.ts","../../../node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","../../../node_modules/next/dist/shared/lib/utils.d.ts","../../../node_modules/next/dist/pages/_app.d.ts","../../../node_modules/next/app.d.ts","../../../node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","../../../node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","../../../node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","../../../node_modules/next/dist/server/use-cache/cache-tag.d.ts","../../../node_modules/next/cache.d.ts","../../../node_modules/next/dist/pages/_document.d.ts","../../../node_modules/next/document.d.ts","../../../node_modules/next/dist/shared/lib/dynamic.d.ts","../../../node_modules/next/dynamic.d.ts","../../../node_modules/next/dist/pages/_error.d.ts","../../../node_modules/next/error.d.ts","../../../node_modules/next/dist/shared/lib/head.d.ts","../../../node_modules/next/head.d.ts","../../../node_modules/next/dist/server/request/cookies.d.ts","../../../node_modules/next/dist/server/request/headers.d.ts","../../../node_modules/next/dist/server/request/draft-mode.d.ts","../../../node_modules/next/headers.d.ts","../../../node_modules/next/dist/shared/lib/get-img-props.d.ts","../../../node_modules/next/dist/client/image-component.d.ts","../../../node_modules/next/dist/shared/lib/image-external.d.ts","../../../node_modules/next/image.d.ts","../../../node_modules/next/dist/client/link.d.ts","../../../node_modules/next/link.d.ts","../../../node_modules/next/dist/client/components/readonly-url-search-params.d.ts","../../../node_modules/next/dist/client/components/unrecognized-action-error.d.ts","../../../node_modules/next/dist/client/components/redirect.d.ts","../../../node_modules/next/dist/client/components/not-found.d.ts","../../../node_modules/next/dist/client/components/forbidden.d.ts","../../../node_modules/next/dist/client/components/unauthorized.d.ts","../../../node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","../../../node_modules/next/dist/client/components/unstable-rethrow.d.ts","../../../node_modules/next/dist/client/components/navigation.react-server.d.ts","../../../node_modules/next/dist/client/components/navigation.d.ts","../../../node_modules/next/navigation.d.ts","../../../node_modules/next/router.d.ts","../../../node_modules/next/dist/client/script.d.ts","../../../node_modules/next/script.d.ts","../../../node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","../../../node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","../../../node_modules/next/dist/server/web/spec-extension/image-response.d.ts","../../../node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","../../../node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","../../../node_modules/next/dist/compiled/@vercel/og/types.d.ts","../../../node_modules/next/dist/server/after/index.d.ts","../../../node_modules/next/dist/server/request/connection.d.ts","../../../node_modules/next/server.d.ts","../../../node_modules/next/types/global.d.ts","../../../node_modules/next/types/compiled.d.ts","../../../node_modules/next/types.d.ts","../../../node_modules/next/index.d.ts","../../../node_modules/next/image-types/global.d.ts","./.next/types/routes.d.ts","./next-env.d.ts","./app/api/chat-page-suggestions/route.ts","../../../packages/react-instantsearch-core/dist/es/version.d.ts","../../../packages/instantsearch.js/es/types/utils.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/cache.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/host.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/requester.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/transporter.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/createclient.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/createiterablepromise.d.ts","../../../node_modules/@algolia/client-common/dist/src/types/index.d.ts","../../../node_modules/@algolia/client-common/dist/src/createauth.d.ts","../../../node_modules/@algolia/client-common/dist/src/createechorequester.d.ts","../../../node_modules/@algolia/client-common/dist/src/createiterablepromise.d.ts","../../../node_modules/@algolia/client-common/dist/src/cache/createbrowserlocalstoragecache.d.ts","../../../node_modules/@algolia/client-common/dist/src/cache/createfallbackablecache.d.ts","../../../node_modules/@algolia/client-common/dist/src/cache/creatememorycache.d.ts","../../../node_modules/@algolia/client-common/dist/src/cache/createnullcache.d.ts","../../../node_modules/@algolia/client-common/dist/src/cache/index.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/createtransporter.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/createstatefulhost.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/errors.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/helpers.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/responses.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/stacktrace.d.ts","../../../node_modules/@algolia/client-common/dist/src/transporter/index.d.ts","../../../node_modules/@algolia/client-common/dist/src/createalgoliaagent.d.ts","../../../node_modules/@algolia/client-common/dist/src/getalgoliaagent.d.ts","../../../node_modules/@algolia/client-common/dist/src/constants.d.ts","../../../node_modules/@algolia/client-common/dist/index.d.ts","../../../node_modules/@algolia/client-search/dist/model/acl.d.ts","../../../node_modules/@algolia/client-search/dist/model/action.d.ts","../../../node_modules/@algolia/client-search/dist/model/addapikeyresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/advancedsyntaxfeatures.d.ts","../../../node_modules/@algolia/client-search/dist/model/alternativesasexact.d.ts","../../../node_modules/@algolia/client-search/dist/model/anchoring.d.ts","../../../node_modules/@algolia/client-search/dist/model/apikey.d.ts","../../../node_modules/@algolia/client-search/dist/model/apikeyoperation.d.ts","../../../node_modules/@algolia/client-search/dist/model/range.d.ts","../../../node_modules/@algolia/client-search/dist/model/aroundprecision.d.ts","../../../node_modules/@algolia/client-search/dist/model/aroundradiusall.d.ts","../../../node_modules/@algolia/client-search/dist/model/aroundradius.d.ts","../../../node_modules/@algolia/client-search/dist/model/assignuseridparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/builtinoperationtype.d.ts","../../../node_modules/@algolia/client-search/dist/model/builtinoperationvalue.d.ts","../../../node_modules/@algolia/client-search/dist/model/builtinoperation.d.ts","../../../node_modules/@algolia/client-search/dist/model/attributetoupdate.d.ts","../../../node_modules/@algolia/client-search/dist/model/automaticfacetfilter.d.ts","../../../node_modules/@algolia/client-search/dist/model/automaticfacetfilters.d.ts","../../../node_modules/@algolia/client-search/dist/model/basegetapikeyresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/supportedlanguage.d.ts","../../../node_modules/@algolia/client-search/dist/model/baseindexsettings.d.ts","../../../node_modules/@algolia/client-search/dist/model/facetfilters.d.ts","../../../node_modules/@algolia/client-search/dist/model/numericfilters.d.ts","../../../node_modules/@algolia/client-search/dist/model/optionalfilters.d.ts","../../../node_modules/@algolia/client-search/dist/model/tagfilters.d.ts","../../../node_modules/@algolia/client-search/dist/model/basesearchparamswithoutquery.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchparamsquery.d.ts","../../../node_modules/@algolia/client-search/dist/model/basesearchparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/exhaustive.d.ts","../../../node_modules/@algolia/client-search/dist/model/facetsstats.d.ts","../../../node_modules/@algolia/client-search/dist/model/redirectruleindexdata.d.ts","../../../node_modules/@algolia/client-search/dist/model/redirectruleindexmetadata.d.ts","../../../node_modules/@algolia/client-search/dist/model/redirect.d.ts","../../../node_modules/@algolia/client-search/dist/model/facets.d.ts","../../../node_modules/@algolia/client-search/dist/model/sortremainingby.d.ts","../../../node_modules/@algolia/client-search/dist/model/value.d.ts","../../../node_modules/@algolia/client-search/dist/model/facetordering.d.ts","../../../node_modules/@algolia/client-search/dist/model/redirecturl.d.ts","../../../node_modules/@algolia/client-search/dist/model/renderingcontent.d.ts","../../../node_modules/@algolia/client-search/dist/model/basesearchresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchassignuseridsparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionaryaction.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionaryentrystate.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionaryentrytype.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionaryentry.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchdictionaryentriesrequest.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchdictionaryentriesparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/multiplebatchrequest.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchrequest.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/batchwriteparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/browsepagination.d.ts","../../../node_modules/@algolia/client-search/dist/model/cursor.d.ts","../../../node_modules/@algolia/client-search/dist/model/distinct.d.ts","../../../node_modules/@algolia/client-search/dist/model/exactonsinglewordquery.d.ts","../../../node_modules/@algolia/client-search/dist/model/ignoreplurals.d.ts","../../../node_modules/@algolia/client-search/dist/model/mode.d.ts","../../../node_modules/@algolia/client-search/dist/model/querytype.d.ts","../../../node_modules/@algolia/client-search/dist/model/rerankingapplyfilter.d.ts","../../../node_modules/@algolia/client-search/dist/model/removestopwords.d.ts","../../../node_modules/@algolia/client-search/dist/model/removewordsifnoresults.d.ts","../../../node_modules/@algolia/client-search/dist/model/semanticsearch.d.ts","../../../node_modules/@algolia/client-search/dist/model/typotoleranceenum.d.ts","../../../node_modules/@algolia/client-search/dist/model/typotolerance.d.ts","../../../node_modules/@algolia/client-search/dist/model/indexsettingsassearchparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchparamsobject.d.ts","../../../node_modules/@algolia/client-search/dist/model/browseparamsobject.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchparamsstring.d.ts","../../../node_modules/@algolia/client-search/dist/model/browseparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/matchlevel.d.ts","../../../node_modules/@algolia/client-search/dist/model/highlightresultoption.d.ts","../../../node_modules/@algolia/client-search/dist/model/highlightresult.d.ts","../../../node_modules/@algolia/client-search/dist/model/matchedgeolocation.d.ts","../../../node_modules/@algolia/client-search/dist/model/personalization.d.ts","../../../node_modules/@algolia/client-search/dist/model/rankinginfo.d.ts","../../../node_modules/@algolia/client-search/dist/model/snippetresultoption.d.ts","../../../node_modules/@algolia/client-search/dist/model/snippetresult.d.ts","../../../node_modules/@algolia/client-search/dist/model/hit.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchhits.d.ts","../../../node_modules/@algolia/client-search/dist/model/browseresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/condition.d.ts","../../../node_modules/@algolia/client-search/dist/model/consequencehide.d.ts","../../../node_modules/@algolia/client-search/dist/model/edittype.d.ts","../../../node_modules/@algolia/client-search/dist/model/edit.d.ts","../../../node_modules/@algolia/client-search/dist/model/consequencequeryobject.d.ts","../../../node_modules/@algolia/client-search/dist/model/consequencequery.d.ts","../../../node_modules/@algolia/client-search/dist/model/params.d.ts","../../../node_modules/@algolia/client-search/dist/model/consequenceparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/promoteobjectid.d.ts","../../../node_modules/@algolia/client-search/dist/model/promoteobjectids.d.ts","../../../node_modules/@algolia/client-search/dist/model/promote.d.ts","../../../node_modules/@algolia/client-search/dist/model/consequence.d.ts","../../../node_modules/@algolia/client-search/dist/model/createdatresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/deleteapikeyresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/deletebyparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/deletesourceresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/deletedatresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionarylanguage.d.ts","../../../node_modules/@algolia/client-search/dist/model/standardentries.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionarysettingsparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/dictionarytype.d.ts","../../../node_modules/@algolia/client-search/dist/model/errorbase.d.ts","../../../node_modules/@algolia/client-search/dist/model/facethits.d.ts","../../../node_modules/@algolia/client-search/dist/model/fetchedindex.d.ts","../../../node_modules/@algolia/client-search/dist/model/getapikeyresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/getdictionarysettingsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/logquery.d.ts","../../../node_modules/@algolia/client-search/dist/model/log.d.ts","../../../node_modules/@algolia/client-search/dist/model/getlogsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/getobjectsrequest.d.ts","../../../node_modules/@algolia/client-search/dist/model/getobjectsparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/getobjectsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/taskstatus.d.ts","../../../node_modules/@algolia/client-search/dist/model/gettaskresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/userid.d.ts","../../../node_modules/@algolia/client-search/dist/model/gettopuseridsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/haspendingmappingsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/indexsettings.d.ts","../../../node_modules/@algolia/client-search/dist/model/languages.d.ts","../../../node_modules/@algolia/client-search/dist/model/listapikeysresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/listclustersresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/listindicesresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/listuseridsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/logtype.d.ts","../../../node_modules/@algolia/client-search/dist/model/multiplebatchresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/operationtype.d.ts","../../../node_modules/@algolia/client-search/dist/model/scopetype.d.ts","../../../node_modules/@algolia/client-search/dist/model/operationindexparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/removeuseridresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/updatedatresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/replaceallobjectsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/replacesourceresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/timerange.d.ts","../../../node_modules/@algolia/client-search/dist/model/rule.d.ts","../../../node_modules/@algolia/client-search/dist/model/saveobjectresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/savesynonymresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchdictionaryentriesparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchdictionaryentriesresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchforfacetvaluesrequest.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchforfacetvaluesresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchtypefacet.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchforfacetsoptions.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchforfacets.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchtypedefault.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchforhitsoptions.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchforhits.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchquery.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchstrategy.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchmethodparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchpagination.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchresult.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchresponses.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchrulesparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchrulesresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/synonymtype.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchsynonymsparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/synonymhit.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchsynonymsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchuseridsparams.d.ts","../../../node_modules/@algolia/client-search/dist/model/userhighlightresult.d.ts","../../../node_modules/@algolia/client-search/dist/model/userhit.d.ts","../../../node_modules/@algolia/client-search/dist/model/searchuseridsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/securedapikeyrestrictions.d.ts","../../../node_modules/@algolia/client-search/dist/model/withprimary.d.ts","../../../node_modules/@algolia/client-search/dist/model/settingsresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/source.d.ts","../../../node_modules/@algolia/client-search/dist/model/updateapikeyresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/updatedatwithobjectidresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/updatedruleresponse.d.ts","../../../node_modules/@algolia/client-search/dist/model/clientmethodprops.d.ts","../../../node_modules/@algolia/client-search/dist/model/index.d.ts","../../../node_modules/@algolia/client-search/dist/src/searchclient.d.ts","../../../node_modules/@algolia/client-search/dist/builds/node.d.ts","../../../node_modules/@algolia/client-search/index.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendmodels.d.ts","../../../node_modules/@algolia/recommend/dist/model/range.d.ts","../../../node_modules/@algolia/recommend/dist/model/aroundprecision.d.ts","../../../node_modules/@algolia/recommend/dist/model/aroundradiusall.d.ts","../../../node_modules/@algolia/recommend/dist/model/aroundradius.d.ts","../../../node_modules/@algolia/recommend/dist/model/facetfilters.d.ts","../../../node_modules/@algolia/recommend/dist/model/numericfilters.d.ts","../../../node_modules/@algolia/recommend/dist/model/optionalfilters.d.ts","../../../node_modules/@algolia/recommend/dist/model/supportedlanguage.d.ts","../../../node_modules/@algolia/recommend/dist/model/tagfilters.d.ts","../../../node_modules/@algolia/recommend/dist/model/basesearchparamswithoutquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/searchparamsquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/basesearchparams.d.ts","../../../node_modules/@algolia/recommend/dist/model/advancedsyntaxfeatures.d.ts","../../../node_modules/@algolia/recommend/dist/model/alternativesasexact.d.ts","../../../node_modules/@algolia/recommend/dist/model/distinct.d.ts","../../../node_modules/@algolia/recommend/dist/model/exactonsinglewordquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/ignoreplurals.d.ts","../../../node_modules/@algolia/recommend/dist/model/mode.d.ts","../../../node_modules/@algolia/recommend/dist/model/querytype.d.ts","../../../node_modules/@algolia/recommend/dist/model/rerankingapplyfilter.d.ts","../../../node_modules/@algolia/recommend/dist/model/removestopwords.d.ts","../../../node_modules/@algolia/recommend/dist/model/removewordsifnoresults.d.ts","../../../node_modules/@algolia/recommend/dist/model/facets.d.ts","../../../node_modules/@algolia/recommend/dist/model/sortremainingby.d.ts","../../../node_modules/@algolia/recommend/dist/model/value.d.ts","../../../node_modules/@algolia/recommend/dist/model/facetordering.d.ts","../../../node_modules/@algolia/recommend/dist/model/redirecturl.d.ts","../../../node_modules/@algolia/recommend/dist/model/renderingcontent.d.ts","../../../node_modules/@algolia/recommend/dist/model/semanticsearch.d.ts","../../../node_modules/@algolia/recommend/dist/model/typotoleranceenum.d.ts","../../../node_modules/@algolia/recommend/dist/model/typotolerance.d.ts","../../../node_modules/@algolia/recommend/dist/model/indexsettingsassearchparams.d.ts","../../../node_modules/@algolia/recommend/dist/model/searchparamsobject.d.ts","../../../node_modules/@algolia/recommend/dist/model/searchparams.d.ts","../../../node_modules/@algolia/recommend/dist/model/baserecommendrequest.d.ts","../../../node_modules/@algolia/recommend/dist/model/fbtmodel.d.ts","../../../node_modules/@algolia/recommend/dist/model/frequentlyboughttogether.d.ts","../../../node_modules/@algolia/recommend/dist/model/boughttogetherquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/fallbackparams.d.ts","../../../node_modules/@algolia/recommend/dist/model/lookingsimilarmodel.d.ts","../../../node_modules/@algolia/recommend/dist/model/lookingsimilar.d.ts","../../../node_modules/@algolia/recommend/dist/model/lookingsimilarquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendedforyoumodel.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendedforyou.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendedforyouquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/relatedmodel.d.ts","../../../node_modules/@algolia/recommend/dist/model/relatedproducts.d.ts","../../../node_modules/@algolia/recommend/dist/model/relatedquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingfacetsmodel.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingfacets.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingfacetsquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingitemsmodel.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingitems.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingitemsquery.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendationsrequest.d.ts","../../../node_modules/@algolia/recommend/dist/model/searchrecommendrulesparams.d.ts","../../../node_modules/@algolia/recommend/dist/model/clientmethodprops.d.ts","../../../node_modules/@algolia/recommend/dist/model/deletedatresponse.d.ts","../../../node_modules/@algolia/recommend/dist/model/taskstatus.d.ts","../../../node_modules/@algolia/recommend/dist/model/getrecommendtaskresponse.d.ts","../../../node_modules/@algolia/recommend/dist/model/getrecommendationsparams.d.ts","../../../node_modules/@algolia/recommend/dist/model/exhaustive.d.ts","../../../node_modules/@algolia/recommend/dist/model/facetsstats.d.ts","../../../node_modules/@algolia/recommend/dist/model/redirectruleindexdata.d.ts","../../../node_modules/@algolia/recommend/dist/model/redirectruleindexmetadata.d.ts","../../../node_modules/@algolia/recommend/dist/model/redirect.d.ts","../../../node_modules/@algolia/recommend/dist/model/basesearchresponse.d.ts","../../../node_modules/@algolia/recommend/dist/model/matchlevel.d.ts","../../../node_modules/@algolia/recommend/dist/model/highlightresultoption.d.ts","../../../node_modules/@algolia/recommend/dist/model/highlightresult.d.ts","../../../node_modules/@algolia/recommend/dist/model/matchedgeolocation.d.ts","../../../node_modules/@algolia/recommend/dist/model/personalization.d.ts","../../../node_modules/@algolia/recommend/dist/model/rankinginfo.d.ts","../../../node_modules/@algolia/recommend/dist/model/snippetresultoption.d.ts","../../../node_modules/@algolia/recommend/dist/model/snippetresult.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendhit.d.ts","../../../node_modules/@algolia/recommend/dist/model/trendingfacethit.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendationshit.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendationshits.d.ts","../../../node_modules/@algolia/recommend/dist/model/searchpagination.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendationsresults.d.ts","../../../node_modules/@algolia/recommend/dist/model/getrecommendationsresponse.d.ts","../../../node_modules/@algolia/recommend/dist/model/condition.d.ts","../../../node_modules/@algolia/recommend/dist/model/hideconsequenceobject.d.ts","../../../node_modules/@algolia/recommend/dist/model/autofacetfilter.d.ts","../../../node_modules/@algolia/recommend/dist/model/paramsconsequence.d.ts","../../../node_modules/@algolia/recommend/dist/model/promoteconsequenceobject.d.ts","../../../node_modules/@algolia/recommend/dist/model/consequence.d.ts","../../../node_modules/@algolia/recommend/dist/model/rulemetadata.d.ts","../../../node_modules/@algolia/recommend/dist/model/recommendrule.d.ts","../../../node_modules/@algolia/recommend/dist/model/searchrecommendrulesresponse.d.ts","../../../node_modules/@algolia/recommend/dist/src/recommendclient.d.ts","../../../node_modules/@algolia/recommend/dist/model/errorbase.d.ts","../../../node_modules/@algolia/recommend/dist/model/index.d.ts","../../../node_modules/@algolia/recommend/dist/builds/node.d.ts","../../../node_modules/@algolia/recommend/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-common/dist/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/emptysearch.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/effect.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/minimumdetectableeffect.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/outliers.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/abtestconfiguration.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/status.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/currency.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/emptysearchfilter.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/outliersfilter.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/filtereffects.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/variant.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/abtest.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/abtestresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/abtestsvariant.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/customsearchparams.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/abtestsvariantsearchparams.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/addabtestsvariant.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/addabtestsrequest.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/clientmethodprops.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/listabtestsresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/scheduleabtestresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/scheduleabtestsrequest.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/src/abtestingclient.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/errorbase.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/model/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/dist/builds/node.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/direction.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/orderby.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/clientmethodprops.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailyaddtocartrates.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getaddtocartrateresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailyaverageclicks.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getaverageclickpositionresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/clickposition.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getclickpositionsresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailyclickthroughrates.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getclickthroughrateresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailyconversionrates.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getconversionrateresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailynoclickrates.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getnoclickrateresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailynoresultsrates.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getnoresultsrateresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailypurchaserates.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getpurchaserateresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/currenciesvalue.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailyrevenue.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getrevenue.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailysearches.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getsearchescountresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailysearchesnoclicks.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getsearchesnoclicksresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailysearchesnoresults.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getsearchesnoresultsresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getstatusresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topcountry.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopcountriesresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfilterattribute.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfilterattributesresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/operator.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfilterforattribute.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfilterforattributeresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfiltersnoresultsvalue.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfiltersnoresultsvalues.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopfiltersnoresultsresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/tophit.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/tophitsresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/tophitwithanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/tophitsresponsewithanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/tophitwithrevenueanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/tophitsresponsewithrevenueanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettophitsresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topsearch.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topsearchesresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topsearchwithanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topsearchesresponsewithanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topsearchwithrevenueanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/topsearchesresponsewithrevenueanalytics.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/gettopsearchesresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/dailyusers.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/getuserscountresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/src/analyticsclient.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/errorbase.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/model/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/dist/builds/node.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/clientmethodprops.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/deleteuserprofileresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/getusertokenresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/eventtype.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/eventscoring.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/facetscoring.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/personalizationstrategyparams.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/setpersonalizationstrategyresponse.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/src/personalizationclient.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/errorbase.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/model/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/dist/builds/node.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/index.d.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/acl.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/action.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/addapikeyresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/advancedsyntaxfeatures.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/alternativesasexact.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/anchoring.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/apikey.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/apikeyoperation.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/range.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/aroundprecision.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/aroundradiusall.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/aroundradius.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/assignuseridparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/builtinoperationtype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/builtinoperationvalue.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/builtinoperation.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/attributetoupdate.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/automaticfacetfilter.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/automaticfacetfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/basegetapikeyresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/supportedlanguage.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/baseindexsettings.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/facetfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/numericfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/optionalfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/tagfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/basesearchparamswithoutquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchparamsquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/basesearchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/exhaustive.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/facetsstats.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/redirectruleindexdata.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/redirectruleindexmetadata.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/redirect.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/facets.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/sortremainingby.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/value.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/facetordering.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/redirecturl.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/renderingcontent.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/basesearchresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchassignuseridsparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionaryaction.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionaryentrystate.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionaryentrytype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionaryentry.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchdictionaryentriesrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchdictionaryentriesparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/multiplebatchrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/batchwriteparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/browsepagination.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/cursor.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/distinct.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/exactonsinglewordquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/ignoreplurals.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/mode.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/querytype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/rerankingapplyfilter.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/removestopwords.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/removewordsifnoresults.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/semanticsearch.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/typotoleranceenum.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/typotolerance.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/indexsettingsassearchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchparamsobject.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/browseparamsobject.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchparamsstring.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/browseparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/matchlevel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/highlightresultoption.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/highlightresult.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/matchedgeolocation.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/personalization.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/rankinginfo.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/snippetresultoption.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/snippetresult.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/hit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchhits.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/browseresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/condition.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/consequencehide.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/edittype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/edit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/consequencequeryobject.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/consequencequery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/params.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/consequenceparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/promoteobjectid.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/promoteobjectids.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/promote.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/consequence.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/createdatresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/deleteapikeyresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/deletebyparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/deletesourceresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/deletedatresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionarylanguage.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/standardentries.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionarysettingsparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/dictionarytype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/errorbase.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/facethits.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/fetchedindex.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/getapikeyresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/getdictionarysettingsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/logquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/log.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/getlogsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/getobjectsrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/getobjectsparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/getobjectsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/taskstatus.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/gettaskresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/userid.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/gettopuseridsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/haspendingmappingsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/indexsettings.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/languages.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/listapikeysresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/listclustersresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/listindicesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/listuseridsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/logtype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/multiplebatchresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/operationtype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/scopetype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/operationindexparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/removeuseridresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/updatedatresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/replaceallobjectsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/replacesourceresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/timerange.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/rule.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/saveobjectresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/savesynonymresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchdictionaryentriesparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchdictionaryentriesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchforfacetvaluesrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchforfacetvaluesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchtypefacet.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchforfacetsoptions.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchforfacets.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchtypedefault.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchforhitsoptions.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchforhits.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchstrategy.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchmethodparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchpagination.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchresult.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchresponses.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchrulesparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchrulesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/synonymtype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchsynonymsparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/synonymhit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchsynonymsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchuseridsparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/userhighlightresult.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/userhit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/searchuseridsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/securedapikeyrestrictions.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/withprimary.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/settingsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/source.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/updateapikeyresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/updatedatwithobjectidresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/updatedruleresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/clientmethodprops.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/model/index.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/advancedsyntaxfeatures.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/alternativesasexact.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/range.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/aroundprecision.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/aroundradiusall.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/aroundradius.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/autofacetfilter.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/facetfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/numericfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/optionalfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/supportedlanguage.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/tagfilters.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/basesearchparamswithoutquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/searchparamsquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/basesearchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/distinct.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/exactonsinglewordquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/ignoreplurals.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/mode.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/querytype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/rerankingapplyfilter.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/removestopwords.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/removewordsifnoresults.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/facets.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/sortremainingby.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/value.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/facetordering.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/redirecturl.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/renderingcontent.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/semanticsearch.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/typotoleranceenum.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/typotolerance.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/indexsettingsassearchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/searchparamsobject.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/searchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/baserecommendrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/exhaustive.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/facetsstats.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/redirectruleindexdata.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/redirectruleindexmetadata.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/redirect.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/basesearchresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/fbtmodel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/frequentlyboughttogether.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/boughttogetherquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/condition.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/hideconsequenceobject.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/paramsconsequence.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/promoteconsequenceobject.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/consequence.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/deletedatresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/errorbase.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/fallbackparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/taskstatus.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/getrecommendtaskresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/lookingsimilarmodel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/lookingsimilar.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/lookingsimilarquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendedforyoumodel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendedforyou.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendedforyouquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/relatedmodel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/relatedproducts.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/relatedquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingfacetsmodel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingfacets.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingfacetsquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingitemsmodel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingitems.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingitemsquery.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendationsrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/getrecommendationsparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/matchlevel.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/highlightresultoption.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/highlightresult.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/matchedgeolocation.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/personalization.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/rankinginfo.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/snippetresultoption.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/snippetresult.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendhit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/trendingfacethit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendationshit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendationshits.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/searchpagination.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendationsresults.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/getrecommendationsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendmodels.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/rulemetadata.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/recommendrule.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/searchrecommendrulesparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/searchrecommendrulesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/clientmethodprops.ts","../../../node_modules/algoliasearch/node_modules/@algolia/recommend/model/index.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/deleteuserprofileresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/errorbase.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/eventtype.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/eventscoring.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/facetscoring.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/getusertokenresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/personalizationstrategyparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/setpersonalizationstrategyresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/clientmethodprops.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-personalization/model/index.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/clickposition.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/currenciesvalue.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailyaddtocartrates.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailyaverageclicks.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailyclickthroughrates.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailyconversionrates.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailynoclickrates.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailynoresultsrates.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailypurchaserates.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailyrevenue.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailysearches.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailysearchesnoclicks.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailysearchesnoresults.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/dailyusers.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/direction.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/errorbase.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getaddtocartrateresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getaverageclickpositionresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getclickpositionsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getclickthroughrateresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getconversionrateresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getnoclickrateresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getnoresultsrateresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getpurchaserateresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getrevenue.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getsearchescountresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getsearchesnoclicksresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getsearchesnoresultsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getstatusresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topcountry.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopcountriesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfilterattribute.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfilterattributesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/operator.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfilterforattribute.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfilterforattributeresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfiltersnoresultsvalue.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfiltersnoresultsvalues.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopfiltersnoresultsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/tophit.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/tophitsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/tophitwithanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/tophitsresponsewithanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/tophitwithrevenueanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/tophitsresponsewithrevenueanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettophitsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topsearch.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topsearchesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topsearchwithanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topsearchesresponsewithanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topsearchwithrevenueanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/topsearchesresponsewithrevenueanalytics.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/gettopsearchesresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/getuserscountresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/orderby.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/clientmethodprops.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-analytics/model/index.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/emptysearch.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/effect.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/minimumdetectableeffect.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/outliers.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/abtestconfiguration.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/status.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/currency.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/emptysearchfilter.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/outliersfilter.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/filtereffects.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/variant.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/abtest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/abtestresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/abtestsvariant.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/customsearchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/abtestsvariantsearchparams.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/addabtestsvariant.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/addabtestsrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/errorbase.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/listabtestsresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/scheduleabtestresponse.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/scheduleabtestsrequest.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/clientmethodprops.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-abtesting/model/index.ts","../../../node_modules/algoliasearch/node_modules/@algolia/client-search/index.d.ts","../../../node_modules/algoliasearch/dist/algoliasearch/builds/models.d.ts","../../../node_modules/algoliasearch/dist/algoliasearch/builds/node.d.ts","../../../node_modules/algoliasearch/index.d.ts","../../../node_modules/algoliasearch/dist/lite/model/range.d.ts","../../../node_modules/algoliasearch/dist/lite/model/aroundprecision.d.ts","../../../node_modules/algoliasearch/dist/lite/model/aroundradiusall.d.ts","../../../node_modules/algoliasearch/dist/lite/model/aroundradius.d.ts","../../../node_modules/algoliasearch/dist/lite/model/facetfilters.d.ts","../../../node_modules/algoliasearch/dist/lite/model/numericfilters.d.ts","../../../node_modules/algoliasearch/dist/lite/model/optionalfilters.d.ts","../../../node_modules/algoliasearch/dist/lite/model/supportedlanguage.d.ts","../../../node_modules/algoliasearch/dist/lite/model/tagfilters.d.ts","../../../node_modules/algoliasearch/dist/lite/model/basesearchparamswithoutquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchparamsquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/basesearchparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/advancedsyntaxfeatures.d.ts","../../../node_modules/algoliasearch/dist/lite/model/alternativesasexact.d.ts","../../../node_modules/algoliasearch/dist/lite/model/distinct.d.ts","../../../node_modules/algoliasearch/dist/lite/model/exactonsinglewordquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/ignoreplurals.d.ts","../../../node_modules/algoliasearch/dist/lite/model/mode.d.ts","../../../node_modules/algoliasearch/dist/lite/model/querytype.d.ts","../../../node_modules/algoliasearch/dist/lite/model/rerankingapplyfilter.d.ts","../../../node_modules/algoliasearch/dist/lite/model/removestopwords.d.ts","../../../node_modules/algoliasearch/dist/lite/model/removewordsifnoresults.d.ts","../../../node_modules/algoliasearch/dist/lite/model/facets.d.ts","../../../node_modules/algoliasearch/dist/lite/model/sortremainingby.d.ts","../../../node_modules/algoliasearch/dist/lite/model/value.d.ts","../../../node_modules/algoliasearch/dist/lite/model/facetordering.d.ts","../../../node_modules/algoliasearch/dist/lite/model/redirecturl.d.ts","../../../node_modules/algoliasearch/dist/lite/model/renderingcontent.d.ts","../../../node_modules/algoliasearch/dist/lite/model/semanticsearch.d.ts","../../../node_modules/algoliasearch/dist/lite/model/typotoleranceenum.d.ts","../../../node_modules/algoliasearch/dist/lite/model/typotolerance.d.ts","../../../node_modules/algoliasearch/dist/lite/model/indexsettingsassearchparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchparamsobject.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/baserecommendrequest.d.ts","../../../node_modules/algoliasearch/dist/lite/model/fbtmodel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/frequentlyboughttogether.d.ts","../../../node_modules/algoliasearch/dist/lite/model/boughttogetherquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/fallbackparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/lookingsimilarmodel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/lookingsimilar.d.ts","../../../node_modules/algoliasearch/dist/lite/model/lookingsimilarquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendedforyoumodel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendedforyou.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendedforyouquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/relatedmodel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/relatedproducts.d.ts","../../../node_modules/algoliasearch/dist/lite/model/relatedquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingfacetsmodel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingfacets.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingfacetsquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingitemsmodel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingitems.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingitemsquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendationsrequest.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchtypefacet.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchforfacetsoptions.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchtypedefault.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchforhitsoptions.d.ts","../../../node_modules/algoliasearch/dist/lite/model/clientmethodprops.d.ts","../../../node_modules/algoliasearch/dist/lite/model/getrecommendationsparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/exhaustive.d.ts","../../../node_modules/algoliasearch/dist/lite/model/facetsstats.d.ts","../../../node_modules/algoliasearch/dist/lite/model/redirectruleindexdata.d.ts","../../../node_modules/algoliasearch/dist/lite/model/redirectruleindexmetadata.d.ts","../../../node_modules/algoliasearch/dist/lite/model/redirect.d.ts","../../../node_modules/algoliasearch/dist/lite/model/basesearchresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/matchlevel.d.ts","../../../node_modules/algoliasearch/dist/lite/model/highlightresultoption.d.ts","../../../node_modules/algoliasearch/dist/lite/model/highlightresult.d.ts","../../../node_modules/algoliasearch/dist/lite/model/matchedgeolocation.d.ts","../../../node_modules/algoliasearch/dist/lite/model/personalization.d.ts","../../../node_modules/algoliasearch/dist/lite/model/rankinginfo.d.ts","../../../node_modules/algoliasearch/dist/lite/model/snippetresultoption.d.ts","../../../node_modules/algoliasearch/dist/lite/model/snippetresult.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendhit.d.ts","../../../node_modules/algoliasearch/dist/lite/model/trendingfacethit.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendationshit.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendationshits.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchpagination.d.ts","../../../node_modules/algoliasearch/dist/lite/model/recommendationsresults.d.ts","../../../node_modules/algoliasearch/dist/lite/model/getrecommendationsresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/facethits.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchforfacetvaluesresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchforfacets.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchforhits.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchquery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchstrategy.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchmethodparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/hit.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchhits.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchresult.d.ts","../../../node_modules/algoliasearch/dist/lite/model/searchresponses.d.ts","../../../node_modules/algoliasearch/dist/lite/src/liteclient.d.ts","../../../node_modules/algoliasearch/dist/lite/model/acl.d.ts","../../../node_modules/algoliasearch/dist/lite/model/apikey.d.ts","../../../node_modules/algoliasearch/dist/lite/model/automaticfacetfilter.d.ts","../../../node_modules/algoliasearch/dist/lite/model/automaticfacetfilters.d.ts","../../../node_modules/algoliasearch/dist/lite/model/basegetapikeyresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/baseindexsettings.d.ts","../../../node_modules/algoliasearch/dist/lite/model/browsepagination.d.ts","../../../node_modules/algoliasearch/dist/lite/model/cursor.d.ts","../../../node_modules/algoliasearch/dist/lite/model/browseparamsobject.d.ts","../../../node_modules/algoliasearch/dist/lite/model/browseresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/edittype.d.ts","../../../node_modules/algoliasearch/dist/lite/model/edit.d.ts","../../../node_modules/algoliasearch/dist/lite/model/consequencequeryobject.d.ts","../../../node_modules/algoliasearch/dist/lite/model/consequencequery.d.ts","../../../node_modules/algoliasearch/dist/lite/model/params.d.ts","../../../node_modules/algoliasearch/dist/lite/model/consequenceparams.d.ts","../../../node_modules/algoliasearch/dist/lite/model/errorbase.d.ts","../../../node_modules/algoliasearch/dist/lite/model/getapikeyresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/indexsettings.d.ts","../../../node_modules/algoliasearch/dist/lite/model/withprimary.d.ts","../../../node_modules/algoliasearch/dist/lite/model/settingsresponse.d.ts","../../../node_modules/algoliasearch/dist/lite/model/index.d.ts","../../../node_modules/algoliasearch/dist/lite/builds/node.d.ts","../../../node_modules/algoliasearch/lite.d.ts","../../../packages/algoliasearch-helper/types/algoliasearch.d.ts","../../../packages/instantsearch.js/es/types/algoliasearch.d.ts","../../../node_modules/@algolia/events/types/index.d.ts","../../../packages/algoliasearch-helper/index.d.ts","../../../packages/instantsearch.js/es/types/results.d.ts","../../../packages/instantsearch.js/es/types/recommend.d.ts","../../../packages/instantsearch.js/es/types/component.d.ts","../../../packages/instantsearch.js/es/middlewares/createinsightsmiddleware.d.ts","../../../packages/instantsearch.js/es/middlewares/createroutermiddleware.d.ts","../../../packages/instantsearch.js/es/lib/instantsearch.d.ts","../../../packages/instantsearch.js/es/types/instantsearch.d.ts","../../../packages/instantsearch.js/es/lib/utils/addwidgetid.d.ts","../../../packages/instantsearch.js/es/lib/utils/capitalize.d.ts","../../../packages/instantsearch.js/es/lib/utils/checkindexuistate.d.ts","../../../node_modules/search-insights/dist/_getversion.d.ts","../../../node_modules/search-insights/dist/utils/request.d.ts","../../../node_modules/search-insights/dist/_sendevent.d.ts","../../../node_modules/search-insights/dist/_tokenutils.d.ts","../../../node_modules/search-insights/dist/utils/extractadditionalparams.d.ts","../../../node_modules/search-insights/dist/utils/featuredetection.d.ts","../../../node_modules/search-insights/dist/utils/objectquerytracker.d.ts","../../../node_modules/search-insights/dist/utils/index.d.ts","../../../node_modules/search-insights/dist/click.d.ts","../../../node_modules/search-insights/dist/conversion.d.ts","../../../node_modules/search-insights/dist/init.d.ts","../../../node_modules/search-insights/dist/view.d.ts","../../../node_modules/search-insights/dist/insights.d.ts","../../../node_modules/search-insights/dist/_algoliaagent.d.ts","../../../node_modules/search-insights/dist/types.d.ts","../../../node_modules/search-insights/dist/_createinsightsclient.d.ts","../../../node_modules/search-insights/dist/_getfunctionalinterface.d.ts","../../../node_modules/search-insights/dist/_processqueue.d.ts","../../../node_modules/search-insights/dist/utils/getrequesterfornode.d.ts","../../../node_modules/search-insights/dist/utils/localstorage.d.ts","../../../node_modules/search-insights/dist/entry-node.d.ts","../../../node_modules/search-insights/index-node.d.ts","../../../packages/instantsearch.js/es/types/insights.d.ts","../../../packages/instantsearch.js/es/connectors/dynamic-widgets/connectdynamicwidgets.d.ts","../../../packages/instantsearch.js/es/widgets/dynamic-widgets/dynamic-widgets.d.ts","../../../packages/instantsearch.js/es/widgets/analytics/analytics.d.ts","../../../packages/instantsearch-ui-components/dist/es/types/renderer.d.ts","../../../packages/instantsearch-ui-components/dist/es/types/recommend.d.ts","../../../packages/instantsearch-ui-components/dist/es/types/shared.d.ts","../../../packages/instantsearch-ui-components/dist/es/types/index.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocomplete.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletedetachedcontainer.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletedetachedformcontainer.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletedetachedoverlay.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletedetachedsearchbutton.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompleteindex.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletepanel.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletepromptsuggestion.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompleterecentsearch.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletesearch.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/autocompletesuggestion.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/createautocompletepropgetters.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/createautocompletestorage.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/autocomplete/index.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/button.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/carousel.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatheader.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/types.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatmessage.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatmessageerror.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatmessageloader.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatmessages.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatprompt.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatpromptsuggestions.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chattogglebutton.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chat.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatoverlaylayout.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatinlinelayout.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatsidepanellayout.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/chatgreeting.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/icons.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/chat/tools/displayresultstool.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/frequentlyboughttogether.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/highlight.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/hits.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/lookingsimilar.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/relatedproducts.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/trendingitems.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/trendingfacets.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/filtersuggestions.d.ts","../../../packages/instantsearch-ui-components/dist/es/components/index.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/cx.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/sticktobottom.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/utils/find.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/utils/promptsuggestions.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/utils/startswith.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/utils/index.d.ts","../../../packages/instantsearch-ui-components/dist/es/lib/index.d.ts","../../../packages/instantsearch-ui-components/dist/es/index.d.ts","../../../packages/instantsearch.js/es/connectors/search-box/connectsearchbox.d.ts","../../../packages/instantsearch.js/es/widgets/autocomplete/autocomplete.d.ts","../../../packages/instantsearch.js/es/connectors/breadcrumb/connectbreadcrumb.d.ts","../../../packages/instantsearch.js/es/widgets/breadcrumb/breadcrumb.d.ts","../../../packages/instantsearch.js/es/connectors/clear-refinements/connectclearrefinements.d.ts","../../../packages/instantsearch.js/es/widgets/clear-refinements/clear-refinements.d.ts","../../../packages/instantsearch.js/es/connectors/configure/connectconfigure.d.ts","../../../packages/instantsearch.js/es/widgets/configure/configure.d.ts","../../../packages/instantsearch.js/es/connectors/current-refinements/connectcurrentrefinements.d.ts","../../../packages/instantsearch.js/es/widgets/current-refinements/current-refinements.d.ts","../../../packages/instantsearch.js/es/connectors/feeds/connectfeeds.d.ts","../../../packages/instantsearch.js/es/widgets/feeds/feeds.d.ts","../../../packages/instantsearch.js/es/connectors/answers/connectanswers.d.ts","../../../packages/instantsearch.js/es/lib/ai-lite/types.d.ts","../../../packages/instantsearch.js/es/lib/ai-lite/abstract-chat.d.ts","../../../packages/instantsearch.js/es/lib/ai-lite/transport.d.ts","../../../packages/instantsearch.js/es/lib/ai-lite/utils.d.ts","../../../packages/instantsearch.js/es/lib/ai-lite/stream-parser.d.ts","../../../packages/instantsearch.js/es/lib/ai-lite/index.d.ts","../../../packages/instantsearch.js/es/lib/chat/chat.d.ts","../../../packages/instantsearch.js/es/lib/chat/openchat.d.ts","../../../packages/instantsearch.js/es/lib/chat/index.d.ts","../../../packages/instantsearch.js/es/connectors/hierarchical-menu/connecthierarchicalmenu.d.ts","../../../packages/instantsearch.js/es/connectors/hits-per-page/connecthitsperpage.d.ts","../../../packages/instantsearch.js/es/connectors/menu/connectmenu.d.ts","../../../packages/instantsearch.js/es/connectors/numeric-menu/connectnumericmenu.d.ts","../../../packages/instantsearch.js/es/connectors/pagination/connectpagination.d.ts","../../../packages/instantsearch.js/es/connectors/powered-by/connectpoweredby.d.ts","../../../packages/instantsearch.js/es/connectors/query-rules/connectqueryrules.d.ts","../../../packages/instantsearch.js/es/connectors/range/connectrange.d.ts","../../../packages/instantsearch.js/es/middlewares/createmetadatamiddleware.d.ts","../../../packages/instantsearch.js/es/middlewares/index.d.ts","../../../packages/instantsearch.js/es/connectors/rating-menu/connectratingmenu.d.ts","../../../packages/instantsearch.js/es/connectors/refinement-list/connectrefinementlist.d.ts","../../../packages/instantsearch.js/es/connectors/relevant-sort/connectrelevantsort.d.ts","../../../packages/instantsearch.js/es/connectors/sort-by/connectsortby.d.ts","../../../packages/instantsearch.js/es/connectors/stats/connectstats.d.ts","../../../packages/instantsearch.js/es/connectors/toggle-refinement/connecttogglerefinement.d.ts","../../../packages/instantsearch.js/es/lib/voicesearchhelper/types.d.ts","../../../packages/instantsearch.js/es/connectors/voice-search/connectvoicesearch.d.ts","../../../node_modules/places.js/typings.d.ts","../../../packages/instantsearch.js/es/widgets/places/places.d.ts","../../../packages/instantsearch.js/es/connectors/infinite-hits/connectinfinitehits.d.ts","../../../packages/instantsearch.js/es/connectors/hits/connecthits.d.ts","../../../packages/instantsearch.js/es/connectors/chat/connectchat.d.ts","../../../packages/instantsearch.js/es/connectors/geo-search/connectgeosearch.d.ts","../../../node_modules/@types/hogan.js/index.d.ts","../../../packages/instantsearch.js/es/lib/templating/preparetemplateprops.d.ts","../../../packages/instantsearch.js/es/lib/utils/createsendeventforhits.d.ts","../../../node_modules/preact/src/jsx.d.ts","../../../node_modules/preact/src/index.d.ts","../../../packages/instantsearch.js/es/lib/templating/rendertemplate.d.ts","../../../packages/instantsearch.js/es/lib/templating/index.d.ts","../../../packages/instantsearch.js/es/widgets/geo-search/createhtmlmarker.d.ts","../../../packages/instantsearch.js/es/widgets/geo-search/geo-search.d.ts","../../../packages/instantsearch.js/es/widgets/hierarchical-menu/hierarchical-menu.d.ts","../../../packages/instantsearch.js/es/widgets/hits/hits.d.ts","../../../packages/instantsearch.js/es/widgets/hits-per-page/hits-per-page.d.ts","../../../packages/instantsearch.js/es/widgets/index/index.d.ts","../../../packages/instantsearch.js/es/widgets/infinite-hits/infinite-hits.d.ts","../../../packages/instantsearch.js/es/widgets/menu/menu.d.ts","../../../packages/instantsearch.js/es/widgets/menu-select/menu-select.d.ts","../../../packages/instantsearch.js/es/widgets/numeric-menu/numeric-menu.d.ts","../../../packages/instantsearch.js/es/widgets/pagination/pagination.d.ts","../../../packages/instantsearch.js/es/widgets/panel/panel.d.ts","../../../packages/instantsearch.js/es/widgets/powered-by/powered-by.d.ts","../../../packages/instantsearch.js/es/widgets/query-rule-context/query-rule-context.d.ts","../../../packages/instantsearch.js/es/components/queryrulecustomdata/queryrulecustomdata.d.ts","../../../packages/instantsearch.js/es/widgets/query-rule-custom-data/query-rule-custom-data.d.ts","../../../packages/instantsearch.js/es/connectors/related-products/connectrelatedproducts.d.ts","../../../packages/instantsearch.js/es/widgets/related-products/related-products.d.ts","../../../packages/instantsearch.js/es/widgets/range-input/range-input.d.ts","../../../packages/instantsearch.js/es/widgets/range-slider/range-slider.d.ts","../../../packages/instantsearch.js/es/widgets/rating-menu/rating-menu.d.ts","../../../packages/instantsearch.js/es/components/searchbox/searchbox.d.ts","../../../packages/instantsearch.js/es/widgets/search-box/search-box.d.ts","../../../packages/instantsearch.js/es/widgets/refinement-list/refinement-list.d.ts","../../../packages/instantsearch.js/es/widgets/relevant-sort/relevant-sort.d.ts","../../../packages/instantsearch.js/es/widgets/sort-by/sort-by.d.ts","../../../packages/instantsearch.js/es/components/stats/stats.d.ts","../../../packages/instantsearch.js/es/widgets/stats/stats.d.ts","../../../packages/instantsearch.js/es/widgets/toggle-refinement/toggle-refinement.d.ts","../../../packages/instantsearch.js/es/connectors/trending-facets/connecttrendingfacets.d.ts","../../../packages/instantsearch.js/es/widgets/trending-facets/trending-facets.d.ts","../../../packages/instantsearch.js/es/connectors/trending-items/connecttrendingitems.d.ts","../../../packages/instantsearch.js/es/widgets/trending-items/trending-items.d.ts","../../../packages/instantsearch.js/es/widgets/voice-search/voice-search.d.ts","../../../packages/instantsearch.js/es/connectors/frequently-bought-together/connectfrequentlyboughttogether.d.ts","../../../packages/instantsearch.js/es/widgets/frequently-bought-together/frequently-bought-together.d.ts","../../../packages/instantsearch.js/es/connectors/looking-similar/connectlookingsimilar.d.ts","../../../packages/instantsearch.js/es/widgets/looking-similar/looking-similar.d.ts","../../../packages/instantsearch.js/es/widgets/chat/chat.d.ts","../../../packages/instantsearch.js/es/lib/chat/sendmessagewithcontext.d.ts","../../../packages/instantsearch.js/es/connectors/chat-page-summary/connectchatpagesummary.d.ts","../../../packages/instantsearch.js/es/widgets/chat-page-summary/chat-page-summary.d.ts","../../../packages/instantsearch.js/es/connectors/chat-page-suggestions/connectchatpagesuggestions.d.ts","../../../packages/instantsearch.js/es/widgets/chat-page-suggestions/chat-page-suggestions.d.ts","../../../packages/instantsearch.js/es/connectors/filter-suggestions/connectfiltersuggestions.d.ts","../../../packages/instantsearch.js/es/widgets/filter-suggestions/filter-suggestions.d.ts","../../../packages/instantsearch.js/es/widgets/answers/answers.d.ts","../../../packages/instantsearch.js/es/connectors/configure-related-items/connectconfigurerelateditems.d.ts","../../../packages/instantsearch.js/es/widgets/configure-related-items/configure-related-items.d.ts","../../../packages/instantsearch.js/es/widgets/index.d.ts","../../../packages/instantsearch.js/es/types/render-state.d.ts","../../../packages/instantsearch.js/es/types/widget.d.ts","../../../packages/instantsearch.js/es/types/connector.d.ts","../../../packages/instantsearch.js/es/lib/utils/checkrendering.d.ts","../../../packages/instantsearch.js/es/lib/utils/clearrefinements.d.ts","../../../packages/instantsearch.js/es/lib/utils/concathighlightedparts.d.ts","../../../packages/instantsearch.js/es/lib/utils/createconcurrentsafepromise.d.ts","../../../packages/instantsearch.js/es/lib/utils/createsendeventforfacet.d.ts","../../../packages/instantsearch.js/es/lib/utils/setindexhelperstate.d.ts","../../../packages/instantsearch.js/es/lib/utils/isindexwidget.d.ts","../../../packages/instantsearch.js/es/lib/utils/debounce.d.ts","../../../packages/instantsearch.js/es/lib/utils/defer.d.ts","../../../packages/instantsearch.js/es/lib/utils/documentation.d.ts","../../../packages/instantsearch.js/es/lib/utils/escape-highlight.d.ts","../../../packages/instantsearch.js/es/lib/utils/sendchatmessagefeedback.d.ts","../../../packages/instantsearch.js/es/lib/utils/escape-html.d.ts","../../../packages/instantsearch.js/es/lib/utils/escapefacetvalue.d.ts","../../../packages/instantsearch.js/es/lib/utils/find.d.ts","../../../packages/instantsearch.js/es/lib/utils/findindex.d.ts","../../../packages/instantsearch.js/es/lib/utils/geo-search.d.ts","../../../packages/instantsearch.js/es/lib/utils/getalgoliaagent.d.ts","../../../packages/instantsearch.js/es/lib/utils/getappidandapikey.d.ts","../../../packages/instantsearch.js/es/lib/utils/getcontainernode.d.ts","../../../packages/instantsearch.js/es/lib/utils/gethighlightedparts.d.ts","../../../packages/instantsearch.js/es/lib/utils/gethighlightfromsiblings.d.ts","../../../packages/instantsearch.js/es/lib/utils/getobjecttype.d.ts","../../../packages/instantsearch.js/es/lib/utils/getpropertybypath.d.ts","../../../packages/instantsearch.js/es/lib/utils/getrefinements.d.ts","../../../packages/instantsearch.js/es/lib/utils/getwidgetattribute.d.ts","../../../packages/instantsearch.js/es/lib/utils/hits-absolute-position.d.ts","../../../packages/instantsearch.js/es/lib/utils/hits-query-id.d.ts","../../../packages/instantsearch.js/es/lib/utils/hydraterecommendcache.d.ts","../../../packages/instantsearch.js/es/lib/utils/hydratesearchclient.d.ts","../../../packages/instantsearch.js/es/lib/utils/isdomelement.d.ts","../../../packages/instantsearch.js/es/lib/utils/isequal.d.ts","../../../packages/instantsearch.js/es/lib/utils/isfacetrefined.d.ts","../../../packages/instantsearch.js/es/lib/utils/isfinitenumber.d.ts","../../../packages/instantsearch.js/es/lib/utils/isplainobject.d.ts","../../../packages/instantsearch.js/es/lib/utils/isspecialclick.d.ts","../../../packages/instantsearch.js/es/lib/utils/walkindex.d.ts","../../../packages/instantsearch.js/es/lib/utils/istwopasswidget.d.ts","../../../packages/instantsearch.js/es/lib/utils/logger.d.ts","../../../packages/instantsearch.js/es/lib/utils/mergesearchparameters.d.ts","../../../packages/instantsearch.js/es/lib/utils/omit.d.ts","../../../packages/instantsearch.js/es/lib/utils/noop.d.ts","../../../packages/instantsearch.js/es/lib/utils/range.d.ts","../../../packages/instantsearch.js/es/lib/utils/render-args.d.ts","../../../packages/instantsearch.js/es/lib/utils/resolvesearchparameters.d.ts","../../../packages/instantsearch.js/es/lib/utils/reversehighlightedparts.d.ts","../../../packages/instantsearch.js/es/lib/utils/safelyrunonbrowser.d.ts","../../../packages/instantsearch.js/es/lib/utils/serializer.d.ts","../../../packages/instantsearch.js/es/lib/utils/toarray.d.ts","../../../packages/instantsearch.js/es/lib/utils/uniq.d.ts","../../../packages/instantsearch.js/es/lib/utils/index.d.ts","../../../packages/instantsearch.js/es/connectors/autocomplete/connectautocomplete.d.ts","../../../packages/instantsearch.js/es/types/ui-state.d.ts","../../../packages/instantsearch.js/es/types/middleware.d.ts","../../../packages/instantsearch.js/es/types/router.d.ts","../../../packages/instantsearch.js/es/types/widget-factory.d.ts","../../../packages/instantsearch.js/es/components/highlight/highlight.d.ts","../../../packages/instantsearch.js/es/helpers/components/highlight.d.ts","../../../packages/instantsearch.js/es/components/reversehighlight/reversehighlight.d.ts","../../../packages/instantsearch.js/es/helpers/components/reversehighlight.d.ts","../../../packages/instantsearch.js/es/components/reversesnippet/reversesnippet.d.ts","../../../packages/instantsearch.js/es/helpers/components/reversesnippet.d.ts","../../../packages/instantsearch.js/es/components/snippet/snippet.d.ts","../../../packages/instantsearch.js/es/helpers/components/snippet.d.ts","../../../packages/instantsearch.js/es/helpers/components/index.d.ts","../../../node_modules/preact/hooks/src/index.d.ts","../../../node_modules/htm/preact/index.d.ts","../../../packages/instantsearch.js/es/types/templates.d.ts","../../../packages/instantsearch.js/es/types/index.d.ts","../../../packages/instantsearch.js/es/helpers/highlight.d.ts","../../../packages/instantsearch.js/es/helpers/reversehighlight.d.ts","../../../packages/instantsearch.js/es/helpers/snippet.d.ts","../../../packages/instantsearch.js/es/helpers/reversesnippet.d.ts","../../../packages/instantsearch.js/es/helpers/insights.d.ts","../../../packages/instantsearch.js/es/helpers/get-insights-anonymous-user-token.d.ts","../../../packages/instantsearch.js/es/helpers/index.d.ts","../../../packages/instantsearch.js/es/lib/infinitehitscache/sessionstorage.d.ts","../../../packages/instantsearch.js/es/lib/infinitehitscache/index.d.ts","../../../packages/instantsearch.js/es/index.d.ts","../../../packages/react-instantsearch-core/dist/es/hooks/useconnector.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/useconfigure.d.ts","../../../packages/react-instantsearch-core/dist/es/components/configure.d.ts","../../../packages/react-instantsearch-core/dist/es/components/dynamicwidgets.d.ts","../../../packages/react-instantsearch-core/dist/es/components/feeds.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/useindex.d.ts","../../../packages/react-instantsearch-core/dist/es/components/index.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/useinstantsearchapi.d.ts","../../../packages/react-instantsearch-core/dist/es/components/instantsearch.d.ts","../../../packages/react-instantsearch-core/dist/es/components/instantsearchservercontext.d.ts","../../../packages/react-instantsearch-core/dist/es/components/instantsearchssrprovider.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/useautocomplete.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usebreadcrumb.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usechat.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usechatpagesummary.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usechatpagesuggestions.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/useclearrefinements.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usecurrentrefinements.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usedynamicwidgets.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usefeeds.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usefrequentlyboughttogether.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usegeosearch.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usehierarchicalmenu.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usehits.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usehitsperpage.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/useinfinitehits.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usemenu.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usenumericmenu.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usepagination.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usepoweredby.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usequeryrules.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/userange.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/userefinementlist.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/userelatedproducts.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usesearchbox.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usesortby.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usestats.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usetogglerefinement.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usetrendingitems.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usetrendingfacets.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/uselookingsimilar.d.ts","../../../packages/react-instantsearch-core/dist/es/connectors/usefiltersuggestions.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/usesearchresults.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/usesearchstate.d.ts","../../../packages/react-instantsearch-core/dist/es/hooks/useinstantsearch.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/wrappromisewithstate.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/useinstantsearchcontext.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/instantsearchrsccontext.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/usersccontext.d.ts","../../../packages/react-instantsearch-core/dist/es/lib/instantsearchssrcontext.d.ts","../../../packages/react-instantsearch-core/dist/es/server/getserverstate.d.ts","../../../packages/react-instantsearch-core/dist/es/server/index.d.ts","../../../packages/react-instantsearch-core/dist/es/index.d.ts","../../../packages/react-instantsearch/dist/es/widgets/autocomplete.d.ts","../../../packages/react-instantsearch/dist/es/ui/breadcrumb.d.ts","../../../packages/react-instantsearch/dist/es/widgets/breadcrumb.d.ts","../../../packages/react-instantsearch/dist/es/widgets/chat.d.ts","../../../packages/react-instantsearch/dist/es/widgets/chatpagesummary.d.ts","../../../packages/react-instantsearch/dist/es/widgets/chatpagesuggestions.d.ts","../../../packages/react-instantsearch/dist/es/ui/clearrefinements.d.ts","../../../packages/react-instantsearch/dist/es/widgets/clearrefinements.d.ts","../../../packages/react-instantsearch/dist/es/ui/currentrefinements.d.ts","../../../packages/react-instantsearch/dist/es/widgets/currentrefinements.d.ts","../../../packages/react-instantsearch/dist/es/widgets/frequentlyboughttogether.d.ts","../../../packages/react-instantsearch/dist/es/ui/showmorebutton.d.ts","../../../packages/react-instantsearch/dist/es/ui/hierarchicalmenu.d.ts","../../../packages/react-instantsearch/dist/es/widgets/hierarchicalmenu.d.ts","../../../packages/react-instantsearch/dist/es/types/partialkeys.d.ts","../../../packages/react-instantsearch/dist/es/types/translatable.d.ts","../../../packages/react-instantsearch/dist/es/types/index.d.ts","../../../packages/react-instantsearch/dist/es/ui/highlight.d.ts","../../../packages/react-instantsearch/dist/es/widgets/highlight.d.ts","../../../packages/react-instantsearch/dist/es/widgets/hits.d.ts","../../../packages/react-instantsearch/dist/es/ui/hitsperpage.d.ts","../../../packages/react-instantsearch/dist/es/widgets/hitsperpage.d.ts","../../../packages/react-instantsearch/dist/es/ui/infinitehits.d.ts","../../../packages/react-instantsearch/dist/es/widgets/infinitehits.d.ts","../../../packages/react-instantsearch/dist/es/widgets/lookingsimilar.d.ts","../../../packages/react-instantsearch/dist/es/ui/menu.d.ts","../../../packages/react-instantsearch/dist/es/widgets/menu.d.ts","../../../packages/react-instantsearch/dist/es/ui/pagination.d.ts","../../../packages/react-instantsearch/dist/es/widgets/pagination.d.ts","../../../packages/react-instantsearch/dist/es/ui/poweredby.d.ts","../../../packages/react-instantsearch/dist/es/widgets/poweredby.d.ts","../../../packages/react-instantsearch/dist/es/ui/rangeinput.d.ts","../../../packages/react-instantsearch/dist/es/widgets/rangeinput.d.ts","../../../packages/react-instantsearch/dist/es/ui/refinementlist.d.ts","../../../packages/react-instantsearch/dist/es/widgets/refinementlist.d.ts","../../../packages/react-instantsearch/dist/es/widgets/relatedproducts.d.ts","../../../packages/react-instantsearch/dist/es/ui/reversehighlight.d.ts","../../../packages/react-instantsearch/dist/es/widgets/reversehighlight.d.ts","../../../packages/react-instantsearch/dist/es/ui/searchbox.d.ts","../../../packages/react-instantsearch/dist/es/widgets/searchbox.d.ts","../../../packages/react-instantsearch/dist/es/ui/snippet.d.ts","../../../packages/react-instantsearch/dist/es/widgets/snippet.d.ts","../../../packages/react-instantsearch/dist/es/ui/sortby.d.ts","../../../packages/react-instantsearch/dist/es/widgets/sortby.d.ts","../../../packages/react-instantsearch/dist/es/ui/stats.d.ts","../../../packages/react-instantsearch/dist/es/widgets/stats.d.ts","../../../packages/react-instantsearch/dist/es/ui/togglerefinement.d.ts","../../../packages/react-instantsearch/dist/es/widgets/togglerefinement.d.ts","../../../packages/react-instantsearch/dist/es/widgets/trendingitems.d.ts","../../../packages/react-instantsearch/dist/es/widgets/trendingfacets.d.ts","../../../packages/react-instantsearch/dist/es/widgets/filtersuggestions.d.ts","../../../packages/react-instantsearch/dist/es/widgets/index.d.ts","../../../packages/react-instantsearch/dist/es/components/carousel.d.ts","../../../packages/react-instantsearch/dist/es/components/chatmessageloader.d.ts","../../../packages/react-instantsearch/dist/es/components/chatoverlaylayout.d.ts","../../../packages/react-instantsearch/dist/es/components/chatinlinelayout.d.ts","../../../packages/react-instantsearch/dist/es/components/chatsidepanellayout.d.ts","../../../packages/react-instantsearch/dist/es/components/chatgreeting.d.ts","../../../packages/react-instantsearch/dist/es/components/index.d.ts","../../../packages/react-instantsearch/dist/es/lib/usesticktobottom.d.ts","../../../packages/react-instantsearch/dist/es/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../packages/instantsearch.js/es/lib/routers/history.d.ts","../../../packages/react-instantsearch-nextjs/dist/es/instantsearchnext.d.ts","../../../packages/react-instantsearch-nextjs/dist/es/index.d.ts","./components/hit.tsx","./components/panel.tsx","./components/queryid.tsx","./lib/client.tsx","./app/search.tsx","./app/layout.tsx","./app/page.tsx","./app/[category]/search.tsx","./app/[category]/page.tsx","./app/layout/wrapper.tsx","./app/layout/layout.tsx","./app/layout/page.tsx","./app/layout/search/search.tsx","./app/layout/search/page.tsx","./app/multiple-hooks/search.tsx","./app/multiple-hooks/page.tsx","./.next/types/validator.ts","./.next/dev/types/cache-life.d.ts","./.next/dev/types/routes.d.ts","./.next/dev/types/validator.ts","../../../node_modules/@types/argparse/index.d.ts","../../../node_modules/@types/aria-query/index.d.ts","../../../node_modules/@types/babel-types/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/babylon/index.d.ts","../../../node_modules/@types/events/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/dom-speech-recognition/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/google.maps/index.d.ts","../../../node_modules/@types/googlemaps/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/history/domutils.d.ts","../../../node_modules/@types/history/createbrowserhistory.d.ts","../../../node_modules/@types/history/createhashhistory.d.ts","../../../node_modules/@types/history/creatememoryhistory.d.ts","../../../node_modules/@types/history/locationutils.d.ts","../../../node_modules/@types/history/pathutils.d.ts","../../../node_modules/@types/history/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/jasmine/ts3.1/index.d.ts","../../../node_modules/jest-diff/build/cleanupsemantic.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/difflines.d.ts","../../../node_modules/jest-diff/build/printdiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/ast-types/types.d.ts","../../../node_modules/ast-types/gen/namedtypes.d.ts","../../../node_modules/ast-types/gen/kinds.d.ts","../../../node_modules/ast-types/gen/builders.d.ts","../../../node_modules/ast-types/lib/types.d.ts","../../../node_modules/ast-types/lib/path.d.ts","../../../node_modules/ast-types/lib/scope.d.ts","../../../node_modules/ast-types/lib/node-path.d.ts","../../../node_modules/ast-types/lib/path-visitor.d.ts","../../../node_modules/ast-types/gen/visitor.d.ts","../../../node_modules/ast-types/main.d.ts","../../../node_modules/recast/lib/options.d.ts","../../../node_modules/recast/lib/parser.d.ts","../../../node_modules/recast/lib/printer.d.ts","../../../node_modules/recast/main.d.ts","../../../node_modules/@types/jscodeshift/src/collections/jsxelement.d.ts","../../../node_modules/@types/jscodeshift/src/collections/node.d.ts","../../../node_modules/@types/jscodeshift/src/collections/variabledeclarator.d.ts","../../../node_modules/@types/jscodeshift/src/collection.d.ts","../../../node_modules/@types/jscodeshift/src/template.d.ts","../../../node_modules/@types/jscodeshift/src/core.d.ts","../../../node_modules/@types/jscodeshift/index.d.ts","../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/tough-cookie/index.d.ts","../../../node_modules/@types/jsdom/base.d.ts","../../../node_modules/@types/jsdom/ts4.0/index.d.ts","../../../node_modules/@types/jsdom/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/linkify-it/index.d.ts","../../../node_modules/@types/lockfile/index.d.ts","../../../node_modules/@types/mdurl/encode.d.ts","../../../node_modules/@types/mdurl/decode.d.ts","../../../node_modules/@types/mdurl/parse.d.ts","../../../node_modules/@types/mdurl/format.d.ts","../../../node_modules/@types/mdurl/index.d.ts","../../../node_modules/@types/markdown-it/lib/common/utils.d.ts","../../../node_modules/@types/markdown-it/lib/token.d.ts","../../../node_modules/@types/markdown-it/lib/rules_inline/state_inline.d.ts","../../../node_modules/@types/markdown-it/lib/helpers/parse_link_label.d.ts","../../../node_modules/@types/markdown-it/lib/helpers/parse_link_destination.d.ts","../../../node_modules/@types/markdown-it/lib/helpers/parse_link_title.d.ts","../../../node_modules/@types/markdown-it/lib/helpers/index.d.ts","../../../node_modules/@types/markdown-it/lib/ruler.d.ts","../../../node_modules/@types/markdown-it/lib/rules_block/state_block.d.ts","../../../node_modules/@types/markdown-it/lib/parser_block.d.ts","../../../node_modules/@types/markdown-it/lib/rules_core/state_core.d.ts","../../../node_modules/@types/markdown-it/lib/parser_core.d.ts","../../../node_modules/@types/markdown-it/lib/parser_inline.d.ts","../../../node_modules/@types/markdown-it/lib/renderer.d.ts","../../../node_modules/@types/markdown-it/lib/index.d.ts","../../../node_modules/@types/markdown-it/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/neo-async/index.d.ts","../../../node_modules/@types/nlcst/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/reach__router/index.d.ts","../../../node_modules/@types/reactcss/index.d.ts","../../../node_modules/@types/react-color/lib/components/alpha/alpha.d.ts","../../../node_modules/@types/react-color/lib/components/block/block.d.ts","../../../node_modules/@types/react-color/lib/components/common/checkboard.d.ts","../../../node_modules/@types/react-color/lib/components/chrome/chrome.d.ts","../../../node_modules/@types/react-color/lib/components/circle/circle.d.ts","../../../node_modules/@types/react-color/lib/components/compact/compact.d.ts","../../../node_modules/@types/react-color/lib/components/github/github.d.ts","../../../node_modules/@types/react-color/lib/components/hue/hue.d.ts","../../../node_modules/@types/react-color/lib/components/material/material.d.ts","../../../node_modules/@types/react-color/lib/components/photoshop/photoshop.d.ts","../../../node_modules/@types/react-color/lib/components/sketch/sketch.d.ts","../../../node_modules/@types/react-color/lib/components/slider/slider.d.ts","../../../node_modules/@types/react-color/lib/components/swatches/swatches.d.ts","../../../node_modules/@types/react-color/lib/components/twitter/twitter.d.ts","../../../node_modules/@types/react-color/lib/components/common/colorwrap.d.ts","../../../node_modules/@types/react-color/index.d.ts","../../../node_modules/@types/react-native/globals.d.ts","../../../node_modules/@types/react-native/legacy-properties.d.ts","../../../node_modules/@types/react-native/batchedbridge.d.ts","../../../node_modules/@types/react-native/devtools.d.ts","../../../node_modules/@types/react-native/launchscreen.d.ts","../../../node_modules/@types/react-native/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/react-textarea-autosize/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/retry/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/scriptjs/index.d.ts","../../../node_modules/@types/selenium-standalone/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/storybook__addon-actions/index.d.ts","../../../node_modules/@types/strip-bom/index.d.ts","../../../node_modules/@types/strip-json-comments/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/tar/node_modules/minipass/index.d.ts","../../../node_modules/@types/tar/index.d.ts","../../../node_modules/@types/testing-library__jest-dom/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/@types/url-join/index.d.ts","../../../node_modules/@types/use-sync-external-store/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/source.d.ts","../../../node_modules/@types/webpack-sources/lib/compatsource.d.ts","../../../node_modules/@types/webpack-sources/lib/concatsource.d.ts","../../../node_modules/@types/webpack-sources/lib/originalsource.d.ts","../../../node_modules/@types/webpack-sources/lib/prefixsource.d.ts","../../../node_modules/@types/webpack-sources/lib/rawsource.d.ts","../../../node_modules/@types/webpack-sources/lib/replacesource.d.ts","../../../node_modules/@types/webpack-sources/lib/sizeonlysource.d.ts","../../../node_modules/@types/webpack-sources/lib/sourcemapsource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/cachedsource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/write-file-atomic/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","17edc026abf73c5c2dd508652d63f68ec4efd9d4856e3469890d27598209feb5",{"version":"4af6b0c727b7a2896463d512fafd23634229adf69ac7c00e2ae15a09cb084fad","affectsGlobalScope":true},{"version":"9c00a480825408b6a24c63c1b71362232927247595d7c97659bc24dc68ae0757","affectsGlobalScope":true},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true},{"version":"ae37d6ccd1560b0203ab88d46987393adaaa78c919e51acf32fb82c86502e98c","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true},{"version":"0b11f3ca66aa33124202c80b70cd203219c3d4460cfc165e0707aa9ec710fc53","affectsGlobalScope":true},{"version":"6a3f5a0129cc80cf439ab71164334d649b47059a4f5afca90282362407d0c87f","affectsGlobalScope":true},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true},"1c29793071152b207c01ea1954e343be9a44d85234447b2b236acae9e709a383","da172a28c35d5f298bf5f0361725cc80f45e89e803a353c56e1aa347e10f572d","acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","21da358700a3893281ce0c517a7a30cbd46be020d9f0c3f2834d0a8ad1f5fc75","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"e5979905796fe2740d85fbaf4f11f42b7ee1851421afe750823220813421b1af",{"version":"fcdcb42da18dd98dc286b1876dd425791772036012ae61263c011a76b13a190f","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","5b30f550565fd0a7524282c81c27fe8534099e2cd26170ca80852308f07ae68d","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","d97cd8a4a42f557fc62271369ed0461c8e50d47b7f9c8ad0b5462f53306f6060","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"bfea28e6162ed21a0aeed181b623dcf250aa79abf49e24a6b7e012655af36d81","affectsGlobalScope":true},"58df92fa3b18e84865bb0d2fe4b9d2d5bcb9952d4548c871f10ef02702b386f8","52f38aecbb24bebde0b7a0203a686902fc6be930bd0cdb80f482441e4f56fd7d","10d4796a130577d57003a77b95d8723530bbec84718e364aa2129fa8ffba0378","063f53ff674228c190efa19dd9448bcbd540acdbb48a928f4cf3a1b9f9478e43","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"963fe86b2ebd07a34b92b52c6532ab45ec5ccda218a6c477de354fcad2aae0cb","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"76c1c3258edbc6fef9c2020c75d64cc954a53d67f5707e0ba5dd13b6b206059a","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","821dcb2b571bf698841d8ec25fde9d5f615ef3958957227962602f9dbfa8d800","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"f234fa210fdce190f851211bccf105301f62736fe9d536aed1abc1639967fdec","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","103d70bfbeb3cd3a3f26d1705bf986322d8738c2c143f38ebb743b1e228d7444","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7",{"version":"3a2da34079a2567161c1359316a32e712404b56566c45332ac9dcee015ecce9f","affectsGlobalScope":true},"28a2e7383fd898c386ffdcacedf0ec0845e5d1a86b5a43f25b86bc315f556b79","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"aee3379fb20741a337a779530cc3e608aba5f34776511033d1d2db7ca45c4193","865a2612f5ec073dd48d454307ccabb04c48f8b96fda9940c5ebfe6b4b451f51","89e7fd23f6e6ced38596054161f5fb88737018909c6529c946cb349b74b95275","115b2ad73fa7d175cd71a5873d984c21593b2a022f1a2036cc39d9f53629e5dc","1be330b3a0b00590633f04c3b35db7fa618c9ee079258e2b24c137eb4ffcd728","bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","446a50749b24d14deac6f8843e057a6355dd6437d1fac4f9e5ce4a5071f34bff","182e9fcbe08ac7c012e0a6e2b5798b4352470be29a64fdc114d23c2bab7d5106","14109b34dc927e3b872c0f954a8d2536c245e38062bc47e8f97ba27f922fc9bd","1214c8bb321e2376f9dfc174a97b06c6e7bef05a61a1c50f094617d99fc4c9dd","96ffa70b486207241c0fcedb5d9553684f7fa6746bc2b04c519e7ebf41a51205","5c24c66b3ba29ce9f2a79c719967e6e944131352a117a0bc43fa5b346b5562b3","a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","099f915371bf0f8fd812d48a088531397f9edaf2ebfefe422cbe774c274a1621","78a2869ad0cbf3f9045dda08c0d4562b7e1b2bfe07b19e0db072f5c3c56e9584","f0a1bd6ad77f98dd7ed0d3207fcbcb5dd109ba144799cf41b8ea4dacb4e3e009","197efda3bbcdd3f1bc5379cd0534f1ab740f3be957efb17b320da8e7dcb2743b","0c05e9842ec4f8b7bfebfd3ca61604bb8c914ba8da9b5337c4f25da427a005f2","faed7a5153215dbd6ebe76dfdcc0af0cfe760f7362bed43284be544308b114cf","612f05ebdd6c4c3bab261d327082ad0c876332263b23cb29ea37ef5921086a2e","42277254e219cd5b047373e39d48248cd228d84b200b08e4d4d0949d6a48ef86","b06d68a692d3c1dd12bed02eaa3b4c06cfc2a3e9560b0cecd2014bba480c4e8e","9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","f8d5ff8eafd37499f2b6a98659dd9b45a321de186b8db6b6142faed0fea3de77","c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","c685d9f68c70fe11ce527287526585a06ea13920bb6c18482ca84945a4e433a7","540cc83ab772a2c6bc509fe1354f314825b5dba3669efdfbe4693ecd3048e34f","121b0696021ab885c570bbeb331be8ad82c6efe2f3b93a6e63874901bebc13e3","4e01846df98d478a2a626ec3641524964b38acaac13945c2db198bf9f3df22ee","678d6d4c43e5728bf66e92fc2269da9fa709cb60510fed988a27161473c3853f","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","aa14cee20aa0db79f8df101fc027d929aec10feb5b8a8da3b9af3895d05b7ba2","493c700ac3bd317177b2eb913805c87fe60d4e8af4fb39c41f04ba81fae7e170","aeb554d876c6b8c818da2e118d8b11e1e559adbe6bf606cc9a611c1b6c09f670","acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","892258709c8fc69cc1711d3554503f35101381df7e33eec344356bdc443ba07b","b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","ee8df1cb8d0faaca4013a1b442e99130769ce06f438d18d510fed95890067563","bfb7f8475428637bee12bdd31bd9968c1c8a1cc2c3e426c959e2f3a307f8936f","6f491d0108927478d3247bbbc489c78c2da7ef552fd5277f1ab6819986fdf0b1","0d8f2b8781c721170b87a6b662b3cb038fd1a721165ecca390352c818d425872","15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","148679c6d0f449210a96e7d2e562d589e56fcde87f843a92808b3ff103f1a774","6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","2f9c89cbb29d362290531b48880a4024f258c6033aaeb7e59fbc62db26819650","bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","05c7280d72f3ed26f346cbe7cbbbb002fb7f15739197cbbee6ab3fd1a6cb9347","8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","803cd2aaf1921c218916c2c7ee3fce653e852d767177eb51047ff15b5b253893","dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","7ab12b2f1249187223d11a589f5789c75177a0b597b9eb7f8e2e42d045393347","b4d871fb9b74fb5f9d4a4d54f5e01254282b2250bb0e8152bbd51aac2e67d9f7","93436bd74c66baba229bfefe1314d122c01f0d4c1d9e35081a0c4f0470ac1a6c","f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","d130c5f73768de51402351d5dc7d1b36eaec980ca697846e53156e4ea9911476","413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","6e9082e91370de5040e415cd9f24e595b490382e8c7402c4e938a8ce4bccc99f","8695dec09ad439b0ceef3776ea68a232e381135b516878f0901ed2ea114fd0fe","5ab8a9b437a9b2d1d3729def9694ba15525fd4028307e803fafc09aa30a8486a","d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","12d218a49dbe5655b911e6cc3c13b2c655e4c783471c3b0432137769c79e1b3c","7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","6b0fc04121360f752d196ba35b6567192f422d04a97b2840d7d85f8b79921c92","1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027",{"version":"42189cd810c0bf1247da0742d5744bb7c1486de6fd62269d5c25833b7ec38732","affectsGlobalScope":true},{"version":"3fbdd025f9d4d820414417eeb4107ffa0078d454a033b506e22d3a23bc3d9c41","affectsGlobalScope":true},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true},"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b",{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true},"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","40436e992021afc07b61da5f488e9671729a3c5b5e6665b99b1fb43a39081ee3","ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","3a788c7fb7b1b1153d69a4d1d9e1d0dfbcf1127e703bdb02b6d12698e683d1fb","2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","d38530db0601215d6d767f280e3a3c54b2a83b709e8d9001acb6f61c67e965fc","6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","42b81043b00ff27c6bd955aea0f6e741545f2265978bf364b614702b72a027ab","162e071992b34bc36ca257d629547f93cb43728d6fe073ad18a237e4f7c52d7d","b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","d76bd0317e0958a220262a40d24f43fd5db2ff6e0ef0b2e14d2acdf7f88a78af","4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","c06ef3b2569b1c1ad99fcd7fe5fba8d466e2619da5375dfa940a94e0feea899b","f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","5b2323ca2d1bd97e1f32f09452908e015b012e0e4f958f649cbe0c8989a3fb4f","8c50ee1fcb97de2860d9ebd76561614ab6d365ac8390ef4a02bb4e76929705d1","cff125b5bbb8b819d7835c6b78809416d08da8b00e66611bfe368e0964be7b83","d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","985153f0deb9b4391110331a2f0c114019dbea90cba5ca68a4107700796e0d75","382654d5da3eda8ea18f931d380ab6b099daa4913ae5b64265e6960338572914","43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","58659b06d33fa430bee1105b75cf876c0a35b2567207487c8578aec51ca2d977","d8cdd9477b9c5d1a8fbf2fa58e2eb6723969e7201b3549f998e0d2661dfec9d8","cfa846a7b7847a1d973605fbb8c91f47f3a0f0643c18ac05c47077ebc72e71c7","20e1c8beced348a9bf7864dd2b3ca7efa9ea6675dde8ecae6109b1a3f7248cd2","6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","19c3d6db2020cee6f9d8d79e13c15e546e05b6db2020a3ee63789ec74a9990b3","41eeb453ccb75c5b2c3abef97adbbd741bd7e9112a2510e12f03f646dc9ad13d","0285dbbb2fdb8c5e9b50b92570c4c039b1eea2da4cfb5a04e77c1ca8b1949771","301cf1d98bce8b1666184888c7aaacd6c9dfed9185510f4317ed623596e38d2c","6c66d5cf284a56109703f941c92b9a22f2472c14645f80a2dbb8e4ef2128d67c","a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","0b888a0aa10655cadc0dc3b66cd79a99d79ff376aaacc9b628a3c497646fddab","a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","d88ea80a6447d7391f52352ec97e56b52ebec934a4a4af6e2464cfd8b39c3ba8","d3c8b73132efa48e9399d63e8946a57ed4a7176e2f26d2f144bb14c89fcdefc1","96171c03c2e7f314d66d38acd581f9667439845865b7f85da8df598ff9617476","27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","d193c8a86144b3a87b22bc1f5534b9c3e0f5a187873ec337c289a183973a58fe","d2aa1580a899bcec04c29b1c37f2a60f62e2f03acb731534d4e210307c982da8","58d70c38037fc0f949243388ff7ae20cf43321107152f14a9d36ca79311e0ada","f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","68ab1530f0ddf7475425917b0e04068afdc1aee2db033bed9aa9b60a914c512e","01479d9d5a5dda16d529b91811375187f61a06e74be294a35ecce77e0b9e8d6c","49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","1a4dc28334a926d90ba6a2d811ba0ff6c22775fcc13679521f034c124269fd40","f05315ff85714f0b87cc0b54bcd3dde2716e5a6b99aedcc19cad02bf2403e08c","8a8c64dafaba11c806efa56f5c69f611276471bef80a1db1f71316ec4168acef","43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","5fad3b31fc17a5bc58095118a8b160f5260964787c52e7eb51e3d4fcf5d4a6f0","72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","d0a4cac61fa080f2be5ebb68b82726be835689b35994ba0e22e3ed4d2bc45e3b","c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","205a31b31beb7be73b8df18fcc43109cbc31f398950190a0967afc7a12cb478c","8fca3039857709484e5893c05c1f9126ab7451fa6c29e19bb8c2411a2e937345","35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","dba6c7006e14a98ec82999c6f89fbbbfd1c642f41db148535f3b77b8018829b8","7f897b285f22a57a5c4dc14a27da2747c01084a542b4d90d33897216dceeea2e","7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","d96b39301d0ded3f1a27b47759676a33a02f6f5049bfcbde81e533fd10f50dcb","2ded4f930d6abfaa0625cf55e58f565b7cbd4ab5b574dd2cb19f0a83a2f0be8b","0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f",{"version":"ca0f4d9068d652bad47e326cf6ba424ac71ab866e44b24ddb6c2bd82d129586a","affectsGlobalScope":true},"04d36005fcbeac741ac50c421181f4e0316d57d148d37cc321a8ea285472462b","56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","88e9caa9c5d2ba629240b5913842e7c57c5c0315383b8dc9d436ef2b60f1c391",{"version":"ddf68b3b62e49cf6fd93ba2351ad0fbbcf62ca2d5d7afc9f186114e4b481c3cd","affectsGlobalScope":true},"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","1b239954e46191b95913d20771cf4283f63c3ebac79d7e30736a8d40b094fdaf","6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","02c4fc9e6bb27545fa021f6056e88ff5fdf10d9d9f1467f1d10536c6e749ac50","120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","b5189fd031ef3232ec66817df5a8e7b23b079fdf3cd29a0c100eff1e98b2ce8e","00d3b80428c646edbd62379ea531606ee94eed51c4759cbab5a454e92b379690","49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","946a709579b7868a92a70ad70906444f32803fa6e6ce3739b6594c17691837ce","57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","5b955caba32e3dc3c3e293e00c104e255f0868848796e5bd5763f990c36d2798","8c70ddc0c22d85e56011d49fddfaae3405eb53d47b59327b9dd589e82df672e7","a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","4162ae9d4c1b8a7ab7f9ef287d98e9000b57062db1eb1ae735c4814845c2cb5d","a0ba218ac1baa3da0d5d9c1ec1a7c2f8676c284e6f5b920d6d049b13fa267377","8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","d0af5b1b8d6262ef94fee7f8a39d12db1e21762a048ae33d4a5941a5b9fc2e1d","9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","54d320df89710586fddb799b1b4f5b3364773a510dc5d507f3fbf52d8a734ae4","35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","371bf6127c1d427836de95197155132501cb6b69ef8709176ce6e0b85d059264",{"version":"2bafd700e617d3693d568e972d02b92224b514781f542f70d497a8fdf92d52a2","affectsGlobalScope":true},"5542d8a7ea13168cb573be0d1ba0d29460d59430fb12bb7bf4674efd5604e14c","af48e58339188d5737b608d41411a9c054685413d8ae88b8c1d0d9bfabdf6e7e","616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","1de8c302fd35220d8f29dea378a4ae45199dc8ff83ca9923aca1400f2b28848a","77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","332248ee37cca52903572e66c11bef755ccc6e235835e63d3c3e60ddda3e9b93","94e8cc88ae2ef3d920bb3bdc369f48436db123aa2dc07f683309ad8c9968a1e1","4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","b0309e1eda99a9e76f87c18992d9c3689b0938266242835dd4611f2b69efe456","47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","6ceb10ca57943be87ff9debe978f4ab73593c0c85ee802c051a93fc96aaf7a20","1de3ffe0cc28a9fe2ac761ece075826836b5a02f340b412510a59ba1d41a505a","e46d6cc08d243d8d0d83986f609d830991f00450fb234f5b2f861648c42dc0d8","1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","ff863d17c6c659440f7c5c536e4db7762d8c2565547b2608f36b798a743606ca","5412ad0043cd60d1f1406fc12cb4fb987e9a734decbdd4db6f6acf71791e36fe","ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","b6c1f64158da02580f55e8a2728eda6805f79419aed46a930f43e68ad66a38fc","cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","9f9bb6755a8ce32d656ffa4763a8144aa4f274d6b69b59d7c32811031467216e","bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","4c0a1233155afb94bd4d7518c75c84f98567cd5f13fc215d258de196cdb40d91","f9ceb394e029da0392ebd49564002b01fb4517cef0d14b238f2a8e7362a833e1","1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6",{"version":"6de125ea94866c736c6d58d68eb15272cf7d1020a5b459fea1c660027eca9a90","affectsGlobalScope":true},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true},"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","d3b315763d91265d6b0e7e7fa93cfdb8a80ce7cdd2d9f55ba0f37a22db00bdb8","b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9",{"version":"bf654c9a5c381db5a98d20ff66863a0c37822b296d84e204c5fc8d40350d7bf8","affectsGlobalScope":true},"7b550dda9686c16f36a17bf9051d5dbf31e98555b30d114ac49fc49a1e712651",{"version":"360a1dbd43bb4f39808faedabf1cc81680ad5d62e3d0e9fad3da5ae73ebd4c0e","signature":"c3017b04ae6a42b5fe95c6825e7b3107a20643b272d8f5be417f520a5db3dbba"},"aedfbe63cbd61db34fd0c8b21ad148e6d27906dcd5f3ae829d53c529c45c53e6","8ed76df0616f0701d5f7a9360b7c240c2c9e35f0c027666ed3060b3e3b07997d","7ad2521347977af3e82fe3227f67894268fe4d325b7092dd21e04083664b6cf2","04f21db798f717bf336338dd54739fc07fdc3189320c7cd3c4b01c324cb4c38c","16b633ca691d3b989ee9c82711dddc802b2c2dc492584e0ff20d5480a81d8e4a","4f0b25ddab60f07face93ba0a59702d3bdebab8e179e44b64019727442a95921","83fc877ceca60c743300cfcdc6e6a762a626d5a9571c79f7d2f2ade9fa6c1315","e050f0d5d5774a017414cc490cd39fcc5fae5896d760bd3ce7a71407e2ca76c6","654e3e3333dd502d1b48c5d4d5a5c2f40f5089a4c1f2dda0bde165fbe14da34c","70754ea08609bedcc4e897d9f38a3932651fbe43686fc1bf2b9f299005f52b02","2734d2bf380e6085c522de94c375b497d944464254bbb314f2eeccadd31d4a5f","9e8e5e6ab1367f3f0ef8774e751b695b39bbdae10cb7dcf92b4f8512fbd580c3","a03c99840bfc166e3951f6a1aa0a5ac59298c158d0f3cd481e6f180cf68d270a","256ca353679a1fe20a2521415cb11a1605478a22ce3ed5bafff0268c11075635","6da99cbf3f62fab390c5a7dc5c5c93757f5e6d57f61c0696793053ce391623ab","24a1aea9014ba30facf9ad255147af97974b5c8c90e661e6c3a984a665330e61","0602aea94d4fcafc6e355f1bcd189000a744a25620dfba29dd0b9a687df93433","c0832d90db6124961b63797d9301b74af3e1d95daa4d15099fc3e681249f1b0c","f17b70debc19d2f0230b9ad81e3f3dbaf63874f45490d2f58f41d9017ff17d4e","5a5d11e84dac5c2ac3cbbbce3e396060038085dcbb3dc02284e39bb31a68cb0f","1fa2664db687985172d17aab43818be8cd2d80bd148f178794fcdd2f5c032da1","ee0c32d0e57670bc96ae745220833e16594ba55f5151df818b1bdee4aaf38c6b","66dbb1d326be6aa8f1419e286c3fb01b69ac919021b4b2f397b93507da16b9e6","e6ff7de41147a41cdb43378f9916eb2450f04fc1fe4e352aca44d3d79b46663a","96908f7d58d787ec2e2a71fd7a0a277699bed2a9ca45584ac322a121abd59f69","c30378ec3f2c002879f6f7374b89d5af631111478959e7514dd7eaf197324a2d","6416a7b5646ca7939f0a981275ce3947e91add494fa34d57d5aaaa5e0c107c69","5f7d8742cee531bc3752b45872d32b0f212818f457bd0f618ba0c4b862f77ec7","8a9eaf0f5fd90a1ca29b9ca63b843b84f37293210bf997511bed9fc83e9e3d50","dda426623d8bb34c25ad30af121c3b1956c2bc285fbe663679ede8008bb2f7c5","42eedd5ca08f5303ce104326929050d7c00e47a19bee18d6b57a4632daea1ed3","3b36f9ec656a6e253e7c0217c80f76b3da0e34acbc9b59548464dbb713ee3864","388303788535cc28406776c0ea83bdc9bbe6be09b6a8aa55a6213510ecae0a64","f15995495b704605de034ec297c515cbb1888f9f8ec7d603d425a7932a1cf710","4db97ca8976693c62a80241d9213a7cd8b48d440bbb8d8439c7a25f1072c3998","ccac83cb3d6bf1e37fd017a425295ad3b8568e7e7280ef29eee6590b7b163bfa","adc91a9ce019d33cb6585681686a44d4b31584eba87b66dd4ab7913f9a2bd527","7fa4a7457242df81aef5ffb5190ca4e4539c9caba22dc0a53c652e09f11680e5","6d4f1b1a39b15da4d8fc04faa1bf59af55ae4fb8dcad6e3c06c1565e9aa5e3b4","de1ebfb602a2212f4c99a86a94fffba5fc2c341b506afaf06e4aab23226a528d","43a00dbdb5f22b93943af362eda3d35e2e91241e12d028409f8b218b965f3c45","95a2c70c05aaa4ccc687e42514f9949d4bbbdcdd7eeae4b70df4a18b1801b4d7","a0511e786655ee7ad3e0103012f1d03b5d146032da8cac3fb680c374b617cd73","7cf7e81eb0d32b122ad4ef3c53b85749024872dc5731c1872de8dc14242093e0","b7fded608ce7cdb2f1ac309df664221777c408ccf8bd11e96d2b500db487d3df","6633dff6646729c14223d50b5348a221649d86211adf441cae193353d51de406","0d72f5963389582ecbb567746b2b8b34672097bdbea7d39ab0a4451205163765","3a5f98f82c125e744157b310036e0b01fd3ce78c5001df971cf50d393e508611","c8451a29f523247046f6c8d02afb8669517b3b2a1d02837f4b358a2110a328a7","26a1f66cd7d5ebd778ce8d40ab978aabe91a9a4e3881845aff3250b964a30ea6","55ebe2b145157d3904990e2ece132b2a55f6160b6c6eca2ff3545cab5ca40a30","d9fb5dde3b3cf528aa630a9a57e1ec3f23c705eb12da436ab2f46cdf78f017e0","eb141284076b424409cac752c0bd045f43dbf54b98ae5c4b60d60a75f30407cc","0cfa818e9723a91e9b0c8866a4133f84e97e08edcfcde9fa544dad413e76fa96","139b81c01ce09216a48b22877213b8413147db582283e2a967ee3b60b65c1230","1eddc37b94f5620b574bc351ed48922e03b3d3ad4c17d5821be3da740b9d2821","359db8dd52522e820c0a39d27e63b659d568eb1f28d3f02ac58ec39fd44eb3b2","3c0642936bff49fe552b353772356222f4cb7446882280e1d5a9b8f1dc96acc0","01c7d5a2f27d30cf21a708cf8a0ddee8f3c3fb6ad364bfe0ed2f571a5215b65f","50dae281312e33711190a27d17b68a48f90810e43cae8ab22387a44f5c3dec39","4ead64606928d58290a40f301f29e58ada7acbebbba5aa491845f302043dc2f4","86a8a469a46a69139c79202a292e7daea214504ec45dacc524067ad7f33b5fee","c58bf5add824856232fd88554d7d726103a0ca47f66917a92713a6348725a779","f61f40f735252101af0f749f71d548352273a2ab2d97b4bba72f63c99f00ee1d","819a391e73d21c934b1655d87db1f12fb3bab82b42764d80174cc3b4b24c7328","7e0c45ad0eba850987615447ef40ab04b1b6f1cd8050820c7684c23840b8de74","1748698b2ab0b41887bafabf70fc55ae448c3def39342be054a1f0f8943c6be5","b52118d809b4729e93b65bb528c82a0d2f3d844de1b9e8816fe68a5f16cadf45","57495ce6e3bf92c5d861e8a6cc11115bbbbbaec682b9f1a77eab0ddd499ff74b","63cdb7ffafb49182ca4ad7b14d320468de77eb7dcdf2469b43864a02394d8312","9893b8463b14e2c2f4bfb1b4091a736df9ef1adf90ef41c5f6447e2d6cf739ba","7b134a8554e08a0e882814028b77d5fd2af35f473ff2b89853aee16cf2461943","daea700197b0e0691648daef1b4b83f31d9f7b9c4cf85353c411416898a5936f","b1b10b0e542375605d81a99225f655ab8c157e4ba9af0d0fcf6f60779331bfa5","30614b3cec78416f0aa69877986bb6f55392954537efaf497a43e9aa2be2b978","19e2b1c3b0302a25c0eb2958676929e5c78b91d787dd7f310326e533a6ceacad","1b904012d890abe7f6a938c76ec2500f9ea324713ac390e51d7431717906a312","431268dd57c6abe28430b3b62ecdc6f1f6af69c06624fbdf48f38237dceed501","d70742541399ad053ca85b75da490475182ba34021e0f7eb7d78052286ce6c78","11e32cb570c263c3c27522960e735cacad08501e04c69d15ed56f3b6cc6a2e28","702af5fef67d8de160c574ba9c82e342072e911f0ae02cb6e3135c3717061e25","2048e6bb0a8b39d9e06325dac5dbee1f7adc96f548305596d5aae0ca58646e08","c60da7912edacf1ce6fa7b869dd9662fc59e02e5c30b699145b8d6d4fcca6985","1bf8fcba7bcf2684555c910135d995e5e3f9fe70093709f50554776407092fe9","320c8b4370a1b6d7c2f384e156ffff1d42a37a558856c2a52c69cd497d852fad","e212e81f4fe399d0fd675bb35272a445bffdc56a6e4f2b2ca00801d7d7902fa0","73553fa9a050dc1d0ef472e009707db0d0cfc020f8202096cb9e36aec3340ff3","7d48e7020a30be22b42f33a54152e9ba33e8cd87426e861e82a3d82ad77a165f","23207cc61a21bf3e8b135cf0eda56a3d4f8bfc4130213e8946c2eb96a29e2e3c","70eaa34b49d8d2577f0766c6eb3a12deff982b5a1a6dfda45f00e1a8832510f5","1aa75a85c0f54a4d8f2593ada12ce673cf6c3ce321009852b7adfd9667513b53","ab23d302a49b1525f234ba5e2c9b0ebe2c86673c80b3806b3568fb9236c66c6f","04d9645c64f985bdb410025b157391c562f3109e17b7797d3743cb85cead9816","7c8cde1dae624c72a9e88892a4978e6ab5584c4689afc493dcbaed5363bcc868","2d74878005d4aad49cbaa91890ea4642d6cec91dd2b44d62b8d74de72896a50a","f6919566d71a0c5d7329d312f0fa587e2837c84686bbb8438a72455c03e806a8","dc6aa7fc78584c6b4e7ed12789ca8eb8e3a5054d5562cbb52cbe4c3c018b0890","730a0c0390f80b82d24b65c51f324fe06659af538e9fbf101d2c3594506af321","df9951a6483864d0e86eb908e6f8796a9b1b98c69ba20f8b31026c1387d5cabc","23782c181a520ae646b85953eb85b1377253d4825045a7d3a8c994242af4a80a","91136773f81c6270c3ff92a95a5100ddb14f67296f054f0ab553e3500222e0e8","87ac6ca50efbdc3333dc5235b690cc059af0b043d36bf60a4445289fcae32329","c6514382ceae2bb220b843c866b4f15cafdd6cdbc94cfc077c53caf2d82d1f74","d78453ae55c61cd012cc097fd626d02c84dd612215733355732a43b92cec747c","9420a4873ef7f0ecbac0be5e2dca4d532b64b8fe246b834b055dfdf286de5f6e","9d03065416bfc467910f37dd2f1307679459d8e56ecf311677538de64f48b819","0d5d5593d1dadb9cd50c5a0774966a12709e28dee509fe97b2fbbe45660c09ab","c8d24bf170659506a430cb7ebc237c322a2ca2bfdc2e4ed035da57ddd943670e","263cd5afaa26ebc833c51ce7f7dd880a6b1ebf331ebf29447ad0cf1bd4eeb79a","a03631319d4ac209d64baf1fad2f8cb1da7962365f75945284e07edc20239a7e","0837f35f075f6d28e13e2cdaa0c943ecbd00d775e410bc6241cebaea872acd8c","8f933aaf1cbeba0faf4a9cadb13244160f75a922bfbcf35895361a393299571d","7193ef09dea43339345408cc2cf4aad998979592f4fda16559fe9caaab8156f3","4d9c75b1049ce580dcdf2c33cc37d955a1b370786e3dfbbd33903166ac8a0da9","a65a5685027ff5e8323e4193bf775adf6a3ff7910abf1ccfd03d2983882abb83","47351837d1ab7b40a062fca287119e143774ca8d26a6c620df150e46c7b2f58c","852a2167ea7c03b6e00bfe681b4cbd01a6529d29f8c0384250c8559d00d8996d","166223fbaaee9611ef7be5482666ade174d77a42e34362b5ad1ca4fc85ef470a","6c47924776d14ef681d60991d4745dab7472e914628f5f3cb283fa6e4e9c4e1f","cc62e847fcbc4ee37246fcd859a666f998ceba80fa4b007984d330e573378c73","de5b1ea2d38edc5e787da2e8cb49918a882b27827ed0c2f6101effcfd67061b3","28a7d2e494874f6b2bc1217c727d0d2d0626da15ac8566e5cabb804302e73adb","7210ad15156ca737adc83971550580d397bc5a045148757d6b4e51c6588ef523","7fc08db9fe651fe4598ae5305ba6d11b49fefa5e9e5aae76481d8db0899a96a2","096df6d13c4fa7eed35ea766891b191021cfffc398915cdb33f83089843c513e","5f1b25ed7291be876a895d5ddd842e8d2ecf8f28a7ae899c377a2ec27d5cbce7","33537ea85c830c48efed81ce611b2af439c8ce2e0d7d0283587cc6a54ac030a9","dfedd4b80e7d5a26e78b836f02c0506df6067c2b665a643848c6a26450eb05a7","bad998b028fa92e30b4f7c287cd6acec109f5c4681680fa00c7e743d6aae8f6b","8c466f68bfe92f9c2b730f55ae3ea7f71812b5a27e03cd72cd6f61fbce56c5a2","7ba65315c71d819b90aa9453001c51af8943fbdeab0ee60d19eaba0824dc0e14","eefe32a4c44bca6a4ce57c3763277c1eccc9b3d5b75d0d069b33872f3ef928c8","f407fc6773b70bc684144bf1f6af108c1f174a24b5be6f8de29cae5e220d278b","f79ce38008c5ea08547c0b4bc654c69d91ba97e4aa30f2a0fc08d53787004bb6","5d6959d62bf5f39f556757a90408ba5aef760e255b3bfab3f69b42eff3560bd7","de3ded26057444fe1d3cbbaf766a5a6fb6273905f4c07ba825b2c1274bcbd3f5","6cc11f7b24f8f9b69d1425a8c061c19c2973e28acb931e86941b91b1dcda7780","afb33fdf8345655cbcdcb07f40e51f3cf87debfda068140d7ab00461b3d65d9b","d8d2f02c90e42cea152cc1f82d502662c4c1aad3cf1e68c68cd6f15bebe5c146","2b6ac797887cf7c4ed6a9451f84d92244bc4d27247fafb1157cbc42c8aa31ca9","bbc728f31ad6de6521beed1ba11dcb9c05515e895b7e03d8297ab37dd94b5d4b","0efd5cf250284fdc42b225802276b20f191bdb10ccce7ef53bde58aeaf4b7ba0","eb283b66161324fbd5a6668c57a8feeb7cdd111e86cce404673d87a4f4c683f1","00b2806cca8d898aebc66cd10dcb70ee78b18cdf49127bf18b346120c8d21344","1ea3c90736aad40eb3b0fa1060df04b693d981ed0f631da137720d784a447a2b","c32a86c7d00f958aa985ee9c6225055b8ea0d89412b0258f8fe802f8d8b60d3b","1a745d5952fa50c8875210e496ce895c8fbd4399a0494f247dbe043c53d3354e","4461f3edd19d135ec9927887a02037e9cdd55f1ced735664c1b15038d5e090ad","8325cba5884ddf1b30440146b7cc471c8dd00411f5547c9a6528d8d03eb34f52","cc16cfddff3c30c8edfbcf9dbc4ac5001e5cacf97c5dd0e771ec540e5efbdb99","a59539066781579140c989ed35a926bcff1dab16aa6a4d6a826bf7985da25b73","de2c1b5f2686085dbbdde8436bc64977ed37517f224bae3765e388065b870cd0","f11c7d9faf224039398992f0b3b6f060f799bfa77f624e0bcb5a357a1f2ebcf5","c1e80db14391c9d69e31281ad668fc930213e8c68fa797aaafb5b895ac3df20a","099d2cae5c17983ef75da150a641606baa98ffe13b5c976c0c21b8d29a148676","b247a28d56f3a3a876fd08a1f96eaff1581ba1ef231d2014b8820dfc045ab942","9da6d69ac8c678c3f99aefd6f1f5fae45afc73ddacf370c872fca6dbc4398170","3a14aa12d35bf94806b20372cb422ade9b45c9efb7414a0f66a720b1c07face6","520829ed11dacec440cdeff61dca3f30abe7216ce7abc5808373f1dd96890fee","5224ec75160bfbc148abb4d8f25a35ec3ab79fcf6b494cd927b290dc8f20e08d","489498aca964cc1298749a7ccc1b2fc0b56f0b2f2e973df36d9daf6fce4d5865","5b06b4db69e85f13df4ff5028ede5e94a8031de35c8eaa5b89d91d76836ac2d8","f49f2ca51e2eb5c5b26d1872a8ae33a029025576fde6f73137b035c598e617cd","af1e94a777da5a774c6ef45faa6f4d57cedaf0d7c77efa6b6bba75c4fe1eecab","56e72f908c923a8af8f505931b093ba264ee97e872bde2d3e470b2d5c7bd741b","c9df8a45a5045c019859fa77f49b698e2174a965ced35c9f7c00df9f58639a77","45fde7e0cf049dea11cc324b067b3f9e143586deb13d25843dc32348dbd1d5c3","4d0aec9a0b9839acf8c44d6ffe5da7270bde1f3cf954d9d50f8cc38f67b149ce","cbda9b7ec8a1bc88acdf0144ed4f5b59567f20080644ebc62345edc0aa30afc0","14c8894eaf7b84461f5909057a896afe53fa0d5d0e3f2749c9fd78636f679458","898f53e7751952201fb5539111047c70ef2f0f46539c7298bff0215c95aacae3","91f39095293a0002bf678d2a62256dd69bccbe4f453542473a43048725efa44f","3b70e5caa82a7c509c93202f5a4935a8e11bbfada9a7eb8833066ebb45ee3d71","c3f981ffafb2745deb622eb4d131547e59082f85091b7150058abc385d8a65ff","043b387e3af899054c271a2149d4d21ac8568551ac9729a77bb8e01cbd489cc9","5822ff20bc6c8a9340d22cd25c16e749ffb8647c07696c0c1bce3d48d0f4bfe8","a1064e2edf0ab963ba22d225e4f6974e02218e18c59e2dad575de6bdfdeb4767","71157448cc18d2edfdd97a2e27e0aa94366b4255f78149f93cdcbb9cc933c6f1","8f4fc6efb191cf2ac2cc57904c8b5cd436f54717052481993d6d7da2db307837","cf1b0e8b87d65e3ff733ca23ae3b85caa214dc8ec18710b817e7e5169b9a742c","e8d7b3147c1e2dfaa8cd0b1235ff65d1d670e26fed5e930678333e37c53aee9a","563255b25f07f6e8599de7a410b91c1efb84a04d7ec7fd9756d767939c9e9a9f","42021205277e0a52ed4abcbf8909316734aef24ab980cd64aa98917a33bd378e","4a9b8b4fd67b2c98d2f2bca05f564ef518383b10d454d246ae46b4692403cc9c","29c38dc086bc8cdd15d368361c69f628c45eca360d9e386611912a6f8d3a23ca","9a9530a43afbc9bda5f0cd431e9791df3c505344db46f41babb9f9b5074d1fc6","108446fd3353a286ba8c572da66cefd9cfd3f091eb241d338d3124341e3ce2ff","ee21a30590e1fa0899baf084e4e21356d1bf97041ea47f6fdae697801669c37c","6cfba88e8382063a4de7d2a06d2cb860f6134127a4d8e74ad6e383890b3a55dd","969c41bb26985f821ea06901b54a5c43c99c3f08a5b94f4207c03136d0d86335","5e0aafa7f64e9ba80518b02d62467838e5319036e2ed20c622390de3ace485ee","13d126cf8b00acc96b99a10415e82a35c387607800e6680b28c1fe41bcf5ef06","8bc110e5237821b107d5662037be949a0281b0a4955e4ad10209125478f0492e","4c78200a40cf80a537788feaff3701bde9b82b597554c44f391251b867b078c7","4284b780ffeff08cc5c7d57bdc69b250533bad884d42db8cc439b7e05ffa4693","939cf837109b91028f4e08666aebdd823a6949980954cf4abb00d581f90fdc28","6b68b9327f682d0d17a0926a13e42fe58b2e70731e00a7631d885165c9b82ada","fd976b07f4d5ffa2c4ae0d336ec7d9e29b000a9d0722a6b31ae89e7d24b8d032","d456d869294bb11554ad87055ce1018178fa30489c2c5729f60a4d90f886c368","6df265e8a36acd773bb15344f5aa232d3fff9b22c9e1e780787c9dc56fcb6785","970bc8e649af818e611ffcdeac7452f904f6795336022ec0753ccc6eae360663","145455fa895054dbfaca0b9361eced927b85f79c725d230e2b3c7f3947b9d5ae","b755f043afb6eb7fa14495395a61a3d7d0bdedd35a7df4ee7344ba2872f96c4e","79b714a54ce0abaa814b0a447d9d0961d0a1492170a8152d00de78380a669dc8","dc3d5fa2226ad838013fbaf75c834f9dc8f398f91e4de3930e81d263a028651c","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","30de9346001d00040cea2daeff66b71f665c4218a367757a88195ebfc4ff6ba9","adc91a9ce019d33cb6585681686a44d4b31584eba87b66dd4ab7913f9a2bd527","7fa4a7457242df81aef5ffb5190ca4e4539c9caba22dc0a53c652e09f11680e5","6d4f1b1a39b15da4d8fc04faa1bf59af55ae4fb8dcad6e3c06c1565e9aa5e3b4","de1ebfb602a2212f4c99a86a94fffba5fc2c341b506afaf06e4aab23226a528d","55ebe2b145157d3904990e2ece132b2a55f6160b6c6eca2ff3545cab5ca40a30","d9fb5dde3b3cf528aa630a9a57e1ec3f23c705eb12da436ab2f46cdf78f017e0","eb141284076b424409cac752c0bd045f43dbf54b98ae5c4b60d60a75f30407cc","c8451a29f523247046f6c8d02afb8669517b3b2a1d02837f4b358a2110a328a7","0cfa818e9723a91e9b0c8866a4133f84e97e08edcfcde9fa544dad413e76fa96","139b81c01ce09216a48b22877213b8413147db582283e2a967ee3b60b65c1230","1eddc37b94f5620b574bc351ed48922e03b3d3ad4c17d5821be3da740b9d2821","359db8dd52522e820c0a39d27e63b659d568eb1f28d3f02ac58ec39fd44eb3b2","3b36f9ec656a6e253e7c0217c80f76b3da0e34acbc9b59548464dbb713ee3864","388303788535cc28406776c0ea83bdc9bbe6be09b6a8aa55a6213510ecae0a64","1bf8fcba7bcf2684555c910135d995e5e3f9fe70093709f50554776407092fe9","320c8b4370a1b6d7c2f384e156ffff1d42a37a558856c2a52c69cd497d852fad","e212e81f4fe399d0fd675bb35272a445bffdc56a6e4f2b2ca00801d7d7902fa0","73553fa9a050dc1d0ef472e009707db0d0cfc020f8202096cb9e36aec3340ff3","7d48e7020a30be22b42f33a54152e9ba33e8cd87426e861e82a3d82ad77a165f","23207cc61a21bf3e8b135cf0eda56a3d4f8bfc4130213e8946c2eb96a29e2e3c","70eaa34b49d8d2577f0766c6eb3a12deff982b5a1a6dfda45f00e1a8832510f5","1aa75a85c0f54a4d8f2593ada12ce673cf6c3ce321009852b7adfd9667513b53","c58bf5add824856232fd88554d7d726103a0ca47f66917a92713a6348725a779","f61f40f735252101af0f749f71d548352273a2ab2d97b4bba72f63c99f00ee1d","819a391e73d21c934b1655d87db1f12fb3bab82b42764d80174cc3b4b24c7328","7e0c45ad0eba850987615447ef40ab04b1b6f1cd8050820c7684c23840b8de74","1748698b2ab0b41887bafabf70fc55ae448c3def39342be054a1f0f8943c6be5","b52118d809b4729e93b65bb528c82a0d2f3d844de1b9e8816fe68a5f16cadf45","ab23d302a49b1525f234ba5e2c9b0ebe2c86673c80b3806b3568fb9236c66c6f","04d9645c64f985bdb410025b157391c562f3109e17b7797d3743cb85cead9816","7c8cde1dae624c72a9e88892a4978e6ab5584c4689afc493dcbaed5363bcc868","2d74878005d4aad49cbaa91890ea4642d6cec91dd2b44d62b8d74de72896a50a","f6919566d71a0c5d7329d312f0fa587e2837c84686bbb8438a72455c03e806a8","720859d7ff032ed73aa36da709a4bbc766373d5342e82289f3d307ef37336d9a","439105bd9f912e5fbb7eea7bd293f3d182adf2baf8c6abc8137ac7e18d512b44","60a0db576d35d187502e55595d54005b0753a1a0303820ac72b1618cdf844232","62138b5b93c3f433dc0e8239705e13238bdaebd7113f0119bab1d89107a77906","97be0471db3361234d6a5746e5a8529b6d1f4a57c749d986d4481f0d4e4513c9","d39e188a1d5210c428671366ff4bb0c14e939c6435a56189e5151fc2c0563803","f520cb3a7bc1c4a86b9ff854d70d4762e12878950d37a660cc1659da087c8c47","2eac4c22a0253975e08831d0797df9c68b5609e3844033011fa38755a87a4cbf","c647c0579442a155842928c297e7b63dfe819c6502d98a8bc3bdbc6a4ab1e4c1","6caa7bc7bf9d716d255eab31b5e43e993870a2d0576dde7ef255bd2339a49092","c8c2d5f903de32f26b710c306fe95fc71a11a65c13d1228d18dccb4cdca0b03f","85eb86d40b8264b705540927e9dcec27b8ab9b06f672eb3f9cd0dee2be246216","2e1050435731a1afbc022dd9ac2dcfbacfc8c90918b8aacb34c2b7f167a7c595","e8ac2aa42a22192b29e17aa3620f40dc122417cfbd703cd3cd78a1f7a0beff9c","26d0d218d5f4f5b84e221c34e363a0f0c32f7b7ca048a7b7233b2f9557cc5f52","526db5fb7dd7438ba4ff32d099ea4de4f59ff40afa4ed784f9a34659951c04c2","831d06a24cb9e7af1be7755f9fcd060aa91615970a287f944520f327fe55e091","a7496dede006a7c7d87c792aace2f642e7c6e70b4af1812bd25709fddc542aee","9647dfb7ef688299eb0de5cff84a58484b24073db7d4e9135eefc6731e348e2c","5a9faf6d33fe7738361ff01e507b857e99153a64dd6d80b30450fc01e8c137a4","29216020a43c6ed93bafe5cca2859b2c66a49fe1c8ec20540d889941a1ce1fb4","a0e2ca80bab785576f508b1722e4da7628ec4e0cd6aaacc3f83e35d0ad3af631","06eebba9015e0afe05d7c42649cd04e3eab44630eac2b6e6acc8619d65be2cd1","33a6b5fe7dc0140049eab3fe759b41294990fdcf8f4642eb875e9b4327f3c467","33537ea85c830c48efed81ce611b2af439c8ce2e0d7d0283587cc6a54ac030a9","eb283b66161324fbd5a6668c57a8feeb7cdd111e86cce404673d87a4f4c683f1","035359160cece3fd111817c9ce2f0e9c927e59593d6f2d1e46c5106861b01f90","cc5f01d91c0552447f6422e0ce9957860c9e8dcdb3b2dfd6107499187cef4521","3c0642936bff49fe552b353772356222f4cb7446882280e1d5a9b8f1dc96acc0","01c7d5a2f27d30cf21a708cf8a0ddee8f3c3fb6ad364bfe0ed2f571a5215b65f","50dae281312e33711190a27d17b68a48f90810e43cae8ab22387a44f5c3dec39","4ead64606928d58290a40f301f29e58ada7acbebbba5aa491845f302043dc2f4","86a8a469a46a69139c79202a292e7daea214504ec45dacc524067ad7f33b5fee","57495ce6e3bf92c5d861e8a6cc11115bbbbbaec682b9f1a77eab0ddd499ff74b","23782c181a520ae646b85953eb85b1377253d4825045a7d3a8c994242af4a80a","91136773f81c6270c3ff92a95a5100ddb14f67296f054f0ab553e3500222e0e8","87ac6ca50efbdc3333dc5235b690cc059af0b043d36bf60a4445289fcae32329","c6514382ceae2bb220b843c866b4f15cafdd6cdbc94cfc077c53caf2d82d1f74","d78453ae55c61cd012cc097fd626d02c84dd612215733355732a43b92cec747c","9420a4873ef7f0ecbac0be5e2dca4d532b64b8fe246b834b055dfdf286de5f6e","9d03065416bfc467910f37dd2f1307679459d8e56ecf311677538de64f48b819","0d5d5593d1dadb9cd50c5a0774966a12709e28dee509fe97b2fbbe45660c09ab","e4919b19933bfead3d077d88c9b81e17b7d778681127b8fce895e9d8e4c46e8e","655157b11b1d65e443bfd77960701a66bb3417b0117f8e2d1c93d240df4a13d3","130dcd8410533e09b58c46c99666249db4d43e54ce4485e022ba3b2301ab16c0","8f316e1dbe13ee478a60b4c061710894967e908c40af3dc13ea0adf637d10136","e8d7b3147c1e2dfaa8cd0b1235ff65d1d670e26fed5e930678333e37c53aee9a","ffff3cb23f6b8607ed305379dea90ed63cadd203e9d27b54bd2ddde185355791","95cfd4e5163240ba11f7fdfa38ec4688386a6ec258eae8323603e3e052e46311","c3341dfe523c9cd63516372951b30b70f6ad12b7f3e784952c87e1a4129849aa","6ffd77212019d02c51efa2a58f599a26e7b2aba6d57d91a5811fa67539e5794d","c858de7061075bcf49e955767324cb9994e979a5095e166807006e733f8e887d","c41575e839adb41bba1620d71dc76e9a0048ec8b14a1cba0930c19db99644272","1a2e4f89548b5427506a6f154d0145dac95b238ded70ec457fb2974a7b1e5427","e12c6e52e31710404a5651172559c140b465d5b7c3841b6b2eff63dc7ca0d535","62e1ed8da882b96c0267bbb92b85cb2683a55b5986d8825e4edd6dfe5d68cfd0","4486db66ead1c201cd9dd00cfd6dd1796595bc2b5fad604138fb2181f3615dc4","6925c43770558b19fd8838e8b1dcce16578896edbf923c99c2f10b4e6b04ade4","0bd26345c5044d31fae99d87f1fee6f8fdb0859542024056bab8c9417b1a39a7","eefe32a4c44bca6a4ce57c3763277c1eccc9b3d5b75d0d069b33872f3ef928c8","d826fd6d229bacb5a1fdf42d01f7c62623faccc9e7d01e3c949e7ac386efd961","63bb0ff1c3ad515be5c3588152e44a80161d4a985cabcaee6052ef3514374614","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","5f7d8742cee531bc3752b45872d32b0f212818f457bd0f618ba0c4b862f77ec7","3827f23708282bced821eefae17ea1f7ae93a6ef4896d13423d048516e256f3b","65b43af14f11c71d22a62bc22f25525d1eb14b695e90ee23f9b84caa4c19cb01","2b2640126c6ee94d984af21a936256ff34bf8f01858b878239d6633e0efab110","e9ecd75f89200277c1d6cb595c56e2d087313f657ac52312af9297fac8ce62d1","45a93c49658d9f410f854c8e67675f20438212efac305e2e9f4513f881efcb6c","c6f45be671d4953b2340af3d2c29b9096cb41bf35f205f7990182fe7da624c12","eb611fb59eef61ca27883448d1837e34f474524c2f1e763ce57e0edd0b676e44","406a800ec7ff888e062fdcf7445a9f2015100d7115a31f1f41d0ae7a53537b39","943fd2f18fc4a8eb7e978ed8d447f5f33ff1ca84298f02fe8f20c1f654175fb1","74351462736d12beb65a5da0b30be5de7abcf3dbae84aeb4e0860764d709480e","bb50f1bd9cdd320a902392294422e736b054173c0cb4bd3e374188315e9e1c8a","b980e2c31b8fa205fe4b209d35dbe9951d7e6078aa3616264e9e821ef410d92c","fa640c8957e279957340fadb6cff5e7804b461167288ab21b1ada427922f2b45","b16cf2f11cc5ece20ccefd7bba2e020174a59bbea1f00c68818e732c97679623","3425e502095ba15751ec3d7d77e8d3f4ca47e29286a14914f04ba1247b2b6fc8","6553627fe23d28b546d4781717069d6069837536fdf5cef86d456fb325710f70","ac24f2b11210450c61eeb8ee2fad4d862f058967557fa0678f3feffd941fb7ef","ff5c0198c798be1d7d1f6fa9c6cadb87e770b0ca9f740f110a6a647dea2c0df4","a80e2b19ba3af54cf3df6699c20829222a9cb4b56b7bca7153360ca4245638de","6b2a9b1c6a424d503a6f4112814999a29adc50b997c7a19dc439443bd3154792","63a82d30e21c59c5145006ea2cb56ebf5850961dda29ff70efb33e5b1af7b8d3","b4ead0e748e08f80a73e4742550929615534582dd31c5bde53d9de55231fd7ff","50ce62371ecb18176c41dcc2f0b1e6573e387b696d3b6fda6c00d6ee529567cb","eefe32a4c44bca6a4ce57c3763277c1eccc9b3d5b75d0d069b33872f3ef928c8","5ed270af40bfcef4c9768956f54e42fee4d66105ff007c375226927c74b26cf6","9f9d6338ab63b25fbb11322600eecf59c2f126fa6911016bd316272a0da109be","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","d24d30ad73eb78839121eef52e4ac419028d9138d339acb4d185f82973ed3eb1","c707f5a2c7707f9eaf9cab6fa74def133a48d38c2e8161145cd9e5fa0e7e0167","4c76c5a1d4588b01e3f684398796f82b9689c0c4ef00d15f183185486f130721","76994506479b5fa7a7b53110bffd98f1c210d75f9d6c807323956475622b6762","b45c5b9ac8b9610739935893d9bc6b3c6a37615d791763b9b87d29501e2be446","5264ec969b8284614919f7682133268e32cb07f1e80a5affce597f3db82ebd16","2225394b3894cee1bb004c680154e452e99d2cb36a7cc610af031cc901bcdd77","301bb879e87a7940d0aa886f8314be5a09b7717c45a921a143741729df2bd96f","31f2a5a91e55df8820e49cf471602ea9af6d7c9416635c21bc78c3b073fa77a3","6301c7a18a9812f794a3f0511ac55854ade5a44e145c51bc2428884ee2f12284","06931b3cea3869e2f8a0b42c61562f709e7919834f6a3a09d6dd00e6b93015cf","5a6645d65ff53c5c471e28c21242d0bb54627d195f36f65ca9c7c2f4eedadcfd","ba1cff90158770cfab5774e08bf5b1fe994bef85dd671fa94f5a09ccd3b2dc64","4d8f80bcc49c7dc9d5615a75a7d191cc86f7a0fc22138eb7d9d00af133f1c4c3","ad4cac0fce64b06126af1976dcc0bf0aab3a4c24e2a9c8ac564a5867da940d9d","e29fd453e4468076d7b16ba2b74152cedc51a96eca4da482781eda6d1e019aa5","d6ffd47612257132e1f641c7e33b38a6b3c97b4e22af451693a54df96c356985","47046e62942990d1db7a61d2bf66ac2ef03ae07e0a76500eff7eff3460dae8a8","15bbaf3d937af2a0b24913739ec6833aa92326e85763f8c02b5eb94d997ffb49","c937526fb1081eb6eefe41246c0661b489764b882baf0094872ebc7929ab34a8","6f8f9bbfe1365a33cffd99721403c2a06f5eea434d688d4b80f1de0432b8a36a","9b13efd75ec8dde38cddd71af712f5acd2849bdf752557acf0c47f200807fcf3","3bfaf7aac62c05c8c15f9b54c6bd370edf2c261cece04a05f787894a2381f6ea","8eeda2613092b7fd7ec975ca27495635d737e079663e31003a2fd5626e14c65d","b5e55c50788226a95d38d67a3301a53ab36df83cfe054bf1b47b34d70f0e173e","74de48e54b1a20052fa6128b25a0a5c8ef1be16b5977183043816641f6ce3986","5bbdd2b3396f88d1b1b4f09a48048d25589f0fca05de639c8628abadd25ff0c2","8e983ea8c933f12c1b8be83f75258104afff99db025130f8d0208d79326c5e80","21068faf96c85f38cc3202ef9b6a3afb87377234eb4281b51928e23f733c806d","8b34b21d8732373fcc6d5592d31f9c829947da62adf00a6c7d7ddcf969c9be73","b15b22ef292ca748c39da6fd2bdbe6d35286cd0e93fdee5d2921c32f09588d16","0290e5cfb663c868af77155dfee11d87e56cc198016e254f4c109b6501559cee","a5d8f0a6e3ab55be270c0026638a3a86575785e8aaed5731284fac4cfa625628","69d3e8dee9141e9bd73047e1ff9f132676b0b491e898b5cebb537072413a48b5","c37c6101918041f8e4a164c6ae78fd56c8664cdfeec3992f3a8530650bc504fd","2f8413c948e716ea62f56a6e925eb53b2f760bf9779a25cfb9b29c5ab3f7f117","717fa40f668e0c90a3e9e8648f1d5e796ebdc06dabae1f27d0187d9b75839d0f","95b17da117e2eddd585dc3891c43d8d328955c0312b3021b48edfe2ddf44d169","7e36ebfb0ef9e6247a3264dd7ed272f794bcf9e403c61f0ca90aad4e5916afa2","ecfc24ea27de1f7ff1b075694adbecafa588c1a8864ee3a8780841b18e04dd0c","5507694c7116a79be8014740a8118b42924637d25fa10e41fae09d1505fa8281","27add8e5bc7dce26a0472711ff25e1e96b38dcce6ba216a9e2b70026d6fce073","ded7adcb6230cc38f59273af1d422bfcdf26e765c584b34490537a0edfe28a65","01dcfb43f095f36f8ebc5383f335bd55a51529b591bd3a863e542e8af887d941","a9047d5e2d7401117410ae87fd498d5212c06b77a09ebf01c6dd4f142a052f76","2219cd33e8e4bcd0ffd5edbd7988900859a318b1b41014a766fcfbc614dda594","906b7e2fe0f5fdbe8102f0352f9017873a11c951ba8df308a5beec8c474d463c","f5b0391c57da90778f48740f397e0e4c50362e9865224b264ee1ee2e11cb0933","d08d7a1d68e1549f76bd286ccef232882e891a9764522fb8012f072dbeafc9b4","cb3f6a33688819b0c36c2ba097adee717e7624d57d5904632be09641373443a1","b8115ef1964948c8f1e2686bf57abacd861f9b5390f63f9ffaa35b22bae93bc3","7bdaa2ed073572f91e9ecacccb08fa7baaf1acf7d200ccd3d6910ba6ab50227b","d40593068e4ab0603933ab197cfe4e40c575d5f635ef3b608a65b2e2515b7004","76dfa58d26d4ded860e67b7a424d811cf979fd6335b8826031b1d9ccd141633f","a22756ca19cfe2cfeaeb20d848dd2f4adc940337ac2a4cca48ce2654f57c3557","2b6877e6304bee2e409628d03e5531d9374e6b29b4e6de8900f2b95f6387024d","eefe32a4c44bca6a4ce57c3763277c1eccc9b3d5b75d0d069b33872f3ef928c8","0ee6b163559da8b49c93a1ad1dfd917729c5b34968bf1d123527675ff0f1c2df","6f64962f4d76170665d82c45d60577da453bd13e75af9f2c5dfb51f2962ce01b","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","5d98f6e2e707432da14d026df64e33365a0a5aa29db8885a8a2f13a83837baf0","32a6fc0b8b6c0713fa953b660289f1acff2008b2ef2c0babb13b3813da689b1a","f8c4f182f0667effa613a7ac530963c9803429e36c397c349f4364358d33574f","24950b2fef04b8e9cd42f80b1e0e9d75103e0e32d9fc0f25b8365dca09e0f5d2","c2d23ae2f1aec5f993741df531aa9044850eba0ccb2435b00cfeb8d408a78464","4c0d7cce529a17e134f5e728912aa4aad26681293ccd1d617fbcb088c0883478","2622bb02762de653ca231d34fc00a3a276d92c786b0af655ee6769e9098024f2","0b815551efac768aa9b4300981613a3e11761637228f2c063b01927452f2e243","ac25c13bc6a9da64963b493712aec97bde6ca3cea37165d46ad3b7f7e7bf90a6","eefe32a4c44bca6a4ce57c3763277c1eccc9b3d5b75d0d069b33872f3ef928c8","9a344b130fd3d7ef82338ecd9ec410e6dad5540041df21a535269dc434c132c7","f5e488a0c75515876f1b5b2251dd9ad9b997d57f8742672768c48bcaa358747c","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","9ed9c692a770933b3329d449d49304ab3dbdf2a6ce49576632b271764bbbfa63","469c0a9bab856c7591bda74e5c64bc7c956ab92b5b52012fd0f190dee6416e08","4c52d7bae46af24b62d3d926e4ddbeaaf271940cd69b285acc7c28f8a784b914","8708382a17d418dd376e43502b929edd7eb9c674d83c1a7c8e084e31d4cf7848","1c095a64e0626506dc20ff8d0d4945b00b162c2f300ce2022ce1acfec4acd2c9","f25bb0ef379638f7df0d80866fdda86472dc1c72c2b4b5ab23e4e9876ec3787b","6b9c6bc812d7a39781c47cd6d48645a43c38869eba64131fd7aee144a920807d","925a507480e808e4b92a17e823273bf33e2a94fdcd06d6230ae39b52c2706035","2e760980ee3aed8bdf7da2361dd3b4f267a8d2ec28e87eba594585fa3328e01c","b42224ea5abd42bba5a45dc8ba06f8c417477f9724034826633c1bbc908bba22","6d502114a50f43fa247d005daa194b4401628fcacc4f566ef33a4c5e0d093d9f","9d8b7271a27a8fe0d0568786d3be29bf8c0da6c71eb23dcb4bec6372c9c3df7e","c6bb39f76c7538fae77b46da715ad4b3e4334926a6537cb3b46120eaaeacc61e","2d44d6b79a714038bd622e4e89f4828a34c99abba8c830093cb4e9c7d0dfef83","84b488c700f7d805c825a4b17205fb1e58726f5b26ca78fa14e4c21724183f9b","ff8f8250be6a8d5a1f24215a5a4115af7161aff57c3b3beb93fafc75126a563d","3a7366bf2b78cf91da38a48513179de2624018d0bc54aa595f959979ba819efd","eadc1b4c6257d97b1d174a1a4a5b4e5b64c76333dff9fd6a127cc8ddb6136a13","98b95f1dd747ef45c24d74b4dba65923b00ed588ef91b729753b54e4138ccbf3","2ffad27a66871a17c54c23db0333544b05a48ad304c052f4c1ce7b5df4a8e8e4","875fb1fd7e76563643ee90edb963cc699f8ddf46cbdcdd49a906c66d5d7b8d1a","d7bd75d638392f71eec53418f8df19a0440804ac1712257f40a160815a3071bb","0039aca8f18e35a38c59bf930dffb0d26e20e998f9a96e694a6df9fa187d87f4","987b52711c9c3f26fa0c33f1d976526e4fd73dd2493e9126b436951e8a8d7528","210deec024ee1aa21298cd8b3a005da424130c67caa24a2eda29af233f300f5d","1410f08fd5a74cd07f0fd5874235f52eaaf5d2022d8dfc690f979e6d61ab5fd1","6b18eb608aa26c5b24c0314262dd142dded9b23b6f3a2a61d3850286a167ce97","e615b00028a4c3843d23f6b674136703c8ecf220e76f469309e8dc626beadbb9","aba0ab19da97cefbdb30016484154c54d6f9d3103960d361374a9138cce596f5","75a058d06ed2cc2982094d1ea6c695214109f4bd51112bfa690bd24b1699c131","7b65000025232618013eddd09392daab9e17f16ad942c979858965fbea8d1b64","5f081c61b9553b1320a67ad57bb3c474d2545a4b1e2d0c15f7c51b25856ef1ce","f10450b2ef8fd55b3c319afd15add29d6c08b86404d43b7dc6b344f130104fb7","2f3badea0881300812cbf1836e353ec848af410a49718b9b8beb2be3c755287f","93945e40249151af832c284f4ac8f182fd7feb11d50815b55ed8b56b177f4ceb","427ec414bb2af78d7f6d5cc6a862845110407f9ffc90b81d8de6725442fca035","88327c332b810ca4cf0ec9901bcf0df23aa1e08100f223c683eff8c7dac0ec14","00754d79170d0b01481b2cf7c04d1dcda98f95e26e83f4901fd6de0d0f69ab28","dd44fbcf738ee3aec8c297ac7aaec56174a08065b55bac8c2c546065e86684ab","6887b5f6c68ebc16fc1cd9106f75830b28d966481ccbb9aa8fc2072f6789b9f9","037fb73d5ff0fba5b2fa6275122e9d9d58ae5a8861c191d6f17ee179d426b643","8c6b685702b1d9b2c0e6e19f1cfda141751ec56020dc62a4ea01bb55ce7052d4","01ed367f1cd4424224bd3b1a52638e4aa9b2ff482f45818e8360dd72684a7cff","9fe81c07db3ff9bb6b50b96cdf8e134b6191673ec8c1c65ae942ee01a7e729e0","4b72d5de473725c7c8bb1b53a9b4808dd3a79a2317c6bbb60fc085fc3c8d3810","2834afb722195de6c39ad2b56225659beb40092f2f322b31dc362d6afe85b768","b2ead0601ef6557a2709f8980e1e0e83b52dcb38eb44579f5b24e961adb0de9d","cd509df7febc377be58099dd0ee8e72800a328bb3afcc6c8bd3b745e44fde38d","2fdebcb5cf93b98e6903b3e8b1620aa218bd4597d46107e1ecb51efe8af5124e","ed0c8fffb98b80db21c516ec9ed3f0d9ac716b9ad04d45acbce1957b8dd0a32a","a953219799117a110f3dc497e2dca83efe8e1ae17dfce2a4a0b0ca63e18d54e5","7f3c6be011716fe5a30f4635a1fdb4dac4f5cdd9d735b3017db7389416335631","83becfd6c5483c6cbd7cdc8d862a7717c59b674b3116fe5bfc7b18862c0cc187","34ca2dfd28b37a101563326a7f0bdc3a6a543c9276ccc1c34d59381c3ad72a36","701763b8c013d781cb9b9ced65a8ad7a5665c6fedb62d3a8b2558ea981374d0c","dfe1ab668d392303cca922e351e3423609849ed77e35984fe37634b9b47ac9bd","a2f599f16cee3b434ffeeb4f4d14e1a22935724ea320267a1d3a9961486af985","4c36c920ed93280b59eb3a8eb047935d83c32e06c498a05c9c8685a0777453f5","0551210b05129c154673542dd716cf0a144772d8076317cf9b0bfa572adf6f66","1fd84c9ea38847af31a7a811a58f88a216a8f6bd4062f16df9f815e561fc6a31","c17140ae53d026956c6b5543435e82ac4624f257e4c148506879b40bf1de6b49","1321077fce41be1ea1c1843463eabfe3fa735b622adb0b01155d05704671c145","61a55259e402080d8e16b6133ee2e1a03b7c4bc05a3632d5c4e8beb563f66659","fc043f5a0cb36808b0d44c3ed6c5533b38996e19793ea6fc6756a64055e2de65","293feacbf8047e8a36d602e371e2db5894403c6d64b20b42e2f4f16cc6af6344","c092bf1776391fa0da898f8d6f3c0fb4bba047b42fd1cdcaaa5a5e0c9a8a61f1","f08e3ae001e0b973d0ee6629adb2ce7de8e3a5006be81084fc59b41b9143003f","5fe01995c2c74fecb4564f47d1250accf5854d50af702f105f6ca4e6090c9334","0ea9f1978c9e845f634ca6956801233b93e920922900c00387d5d2daee85bbec","be6d6b54f5e66c5df2f20143345cebed1ccb0a6b493f152c2ff485b44aac1554","c51a6a4c8946c1188d23ab347a786b91d460b404f197365dd5366a847432ff18","26c6b4c2534ab8e31b04982bd9f719cd112c08aa99177a21d79630c1a9f6ff6c","50029de4b5b3c791c6b97afd052a7228378acaec00afa2a68de2e6426303d1b4","bd0b5b4e648404f4d152a849c692cafa448cf95ef732072ef004709b12b8304d","bd70e9817170d571649898754a23c19071678f03147695b293ce446e973a4815","b32941cf01c40a3a89eb08952d1cc0b59b036aab5ac40888774a67e9ac149e58","0be3cc20fc361e34217d501b7942132b701a27b6486be6d5befb411979cda6af","36f18158802c9d0002fce817b2787b3baf714b02966ea9507f604d4a75d2f921","5b36e87b2b70a059eb662322461c270e92918bba7d21a3794b3e0e2042b3989b","640bfdf3bf2b4d6de149440937407c99ccb1e74ae21d95ef45b712886735b980","4212f37f18b82d1b668959102e4eb7300fd0cb7b673c22ff6bd272efe8cecbc3","01cba2d731571bce49e6c47bb4477da0356d21e37f3e54312700e400cb272f21","669e9de31349daa0d5f0e06038a46f112b6551b414ea0786399406ff7c4d6ad5","863f773c947104a57d5c3a1f9497abf50e699f4ec8cd7e5488e0a14561c4a450","bc5643a1ea5340f06b8deb2ead2ff0b37212673ffdf9851e476a6e8e33f189b9","95f36e6cdb88e097d83f03e2f9ee9d08a3043714b84d6d944577027bb0226fb5","2d851225c06ecb5e463ac3b43e3fb532701c7d8477df9d9e9a338904183e5c43","1ec008bcd4a2df937930a5a9377ec718406c8981365fdc5230fb713f6bdb5067","d25f4557bc54920a7dc2335edee800ce40d96d79cfab7ab12ef39cd31d900946","17d3184a4d835f3d549ffde12c098f71567453ad1875ed79d2a119352e377211","a0b180e89043a539308be40d4f4964b1a76b61ae0186747cf0d301ca02f953c7","1cced594348189fde134137063de794a4f0f076774f96e3703cdd9d5f181199e","d39bca50ece868a35c0ad33cbe770856a78cf5ebdbcb5479ac40f87525d9b209","a8815e277ec0c362963503d2cb3aaab11d630b997543c484d9c2a78742943e9f","6ae65fcc3e222a3a53528752d5c059780b1571fe5d224d6d3c884d7250028358","c6766e8a4911342e14c89a4e9f4449c0d65f09d1ecf1206c446e9a0928038bfe","1c16bc6f744e320aa9b871145218b88276e64f68d565376f855e7bab1aadb015","b0a55318b7598224ea8e804ae48688456d0bb147147cafa8eaabc909cfa6250a","30abcf4acb436e15f3cc72eadfe37ad82be3c22510131a3684fd5c3e3bb1c9d4","f1b70b13256e9bf454ae844fb62c4739f61f41b0a3e1f456da60c4cd24337bcf","79b4809b21cddb8e5355a1f425a1cf4cc8310f08a6cc7c5ed6e18aa9b3e98506","d5e84d77e3f50674497bb87a3e40430b4d8778e5993dcf883a71170846a98b6b","8773128f8f1d2e772d4f27ba33353472d173e1e05519ca3cba5c60d6fd33cd16","4ab4ac45f2527c5606aa178648463e25ae8a46dccc4b85a8d0919a77c7ff09e8","4d74514064942c27abfe267fb59a78c533ee11a67d7ba136b5fc980bc7db6570","52b42912ee45bee2902e133c411d020a29ad4cbb0eccc7afa81c8a924944c6c5","39a08ca7e38929e8e18a1318983ecce035ccfafeeb45a349cbc1b2b000da9df0","65dd43530fa78e3086a0d69de3f9814cb717dc6a8ceaab4faf15333cf5f68dae","8344eb8b8b19d6e045240eda66786ab269089eef342b2e3551bbc873143bdfb4","cec280faeba46ee9783732712e1b49a14aba662d2e643204cc69de2a4094a3f3","124b421361dfb9ec27b26f13f52d39833c0f89b606035d69ba8b6b84a80369ad","8e6a8def62a005948b95c33630a641c8a7a16040deec2e5ef55942eba1e1d49d","4d86a6c0b7f562e97dd192fed7f41fb901a0b05e1e50769324c07757c9524eb0","1c6cb6a4cbe0dbaaad147a2ddf4638270a79becd18ff0142493d1d6c7a8e8244","63a88beec2be5dc640007d90991929e54755d2a86e36aad377a64ff7f14d9cac","9b7211fd091e5d4efe38436f4ac40e26ea12389e2a5dfedbb0c240d46cdc3ea0","e2d56b83f920ca84d592b5ec53e203e8e988e01117f710583646f290697ab492","69dba02b23a412ca4d448abf9dc73be36f23ef0f1218105ff61b7ecb0d7115a1","62efd591bff88834424e4da130ad2664d0869b2a9d76498f9baea862011ed56b","79efe8a363142fbed7e7868f588d29e155aca33238d3a7be2976dddfd714b300","84585927f74dcb194de1eaab6264d40241c9a173848caa9ceb5c189ac71456d5","4ce24e3d05f50de29e540b789e07c1f60490cbc76adf46ca5fdcf27b444282c9","7c0ff3c6a1f3f381bb1b9ccce783cb013de1ac850d5289427e1fb476f2bba99b","e0e813ec9baa8357c1907136c13a79122a9a48efc43e1c787495949eeb62b22e","77c2ca3ca6bbc02c7d829ae1d37ff1dad87cf0612bd78ae6a6042c5a59de8a01","9e7529ec004e8df4c7818163ecb75bbac99411dc583bbe0298f8b77a04f1fc36","93e40642d96af865d5925334bf42c0cb9d7193821b8ab2cf4595b917c1df7e42","871d0b26e9f906863f22fe0abe11a4c94ed7e6036f5ac7ec23ea2d3d40945767","92f29c13600f609288c4e7aea7e95916ac1ac559f9c38b8808e839e42a9972b0","e5753c983e94863b061e0d423d90d2a229148939f6634df90d71b29c0b6c3201","998adb01255563a81e93ff3b5d0d70d4429cc096521dd0c64f8c84686f95e459","9330eafa09a2045c29d3e2541fefbe29ff00cdd4aac3a27a4c3b26046a8a408d","c5784ffde2c5065e5d0d3e427ec1083913a6ce953ccc906601121b92edb96509","8c23413ff4bfb3e48474807a39c93ddf53fc1df91ecd8f2b1d866cf3a3abeadb","cc45cc96b61825164d32081489bb266f3dea0ec1bac52276719d1089f13f3cf7","50439dc88ffd5346eda80ca6254a8b78e684b6c080040f26cd0cbf841580b6d4","3d2167bf3d42b1542880de7e4bdd84c9577586dab83b768abd4f752cd278b96a","1c22c1b1c49dbe04c4b716a95f51fc281210a0852616c6c5b0656cc7c45459a4","8f9db3af947ea8115780a6dc42f5af122812d9c076013401ba17fd2b93c12a14","f643e04533466e7364bcf84169ce4582232a724dd6bb8b7365ea89b931046b86","a379447821ea34476ada3a7959a0114e5db4044d9fca1f6f2db3e7acb964c563","036f28663f8db041b79d37f93a24bf529c398b848a66b149fb2b271ddf041f05","83859d558ac0951343a2c48dbb19abeef28b9624031f73b4e56c91ebac4391bf","81bbce72f090972257b8c0b2b2b6e9c4334828654de2203d3d8b54c0e8045f6d","55f58690bb03ae8c9d318eed53fb5f19eda23f0bdc2afc80ce20cc6726a48de5","798868b7c04e1d7be6d08c22005ea98106a9964876b1338135a2d8edec70bc88","241a5171b2a0709b732471decc25e881f0a64979f2760e0713fac93a2a81aa71","6cfbd5ba045d8fa0c977e90afe0d2c2b4d205d6bc49cde5b15b97ec5a02ee1fd","66c14e985fd4ab67932e990e0867c84f627812854b8254b0d063f676857745f7","8dd85aa8dfe118324e75f3765dc03b51efcb95d9a0233e3438b0389e0e030ec8","fbbaec12632c8081ba011f87f5abecea4bea59324c9b1eb0fd59267848d8d8cb","229593278050ae9d0947f4bb53fff6f16b72f11002db54a39db03662b7ad1bd1","b4eb6f28e9eb8f9c5759125594364043af106bd01f70e2f5a956446e0bcbb22b","4d4d05e432bee591ac87f92c17c3aa76fb11e0f2dfec0ff4a7403396a59465f0","d484a492dbda3aa374625984eed0b1a25a2e1394d8888cdfb7fab395866b7199","134b2a3f8765ea0bb132dcb2b951007fecc13d8c5fc69dc7cb6cebca8dd74318","4211b5670f54b28c98ac4192cc87148698b869119c7a9557b3173849d07c57eb","a7a2afdcc75f2c2973770d3df982401bd1a661d50b30eca1a6b8437723b0a76c","5dcb05352d04eecf080c56ae55d49010834eb6435853119f21f4953b59085f21","d3d8d48d3f4c6ff5031466ed63d043e45f3ac0b7b49cabdb6f889f6f47c0f4ca","4cf1c93cb7e77c5d824e1a124c72b4d5a51788b5758364f74bc81d5d80587ddb","8d0b553282e603a89a7b2623135d700ef075ad5d1e453e3d708910bb7f61e446","f0ac28961fa8283bdcfc1a5299a3dd749a20e579db2b27862318fa2a854c486b","bade576fb5935bd3bf718b8d89f8b5d76d3dc16ea970f16d9a62aa179f2baa80","e7eae536a58c90915b7204b1784cb46a123950ff5f620a830c3f7139b9f2a9fb","a4921d5fdbb4474e5daa592c2b1fd44817223f833c895b448c22b821e0bd9d76","53968857812667a2ecc45886d6bf3455e9e79c0f6fb87b0c89a8ecbbfb2e2863","5a89e41f2f9d4071933a3f2473554bb2bf345af90bd21c0c7c7dc08d757cd290","7e4ab5f3809e1cae8ec9a85b0bc491800b6b1d80ae82c02b042fe546b2351272","f457dac4e40adf78842569c1d690beafb154d66d0826f09ba9e4de9c4a330f61","b5bc8918c77f4edf0a496068747a44694c3d7e5ac43cf15013c53123465479b3","3f95bc21420e3e84f727907226016170373a339fa54b7b2bf4ed1e2d4f21d40f","35ccaed22c95c6348fca1fa0bf1ed6a1c0a8b515b3e379bba3ac739358f643e6","ae6e19206997a87c7678b3b1e02d50d83d54e9b9b6333f0be98443a3e1108f36","cd4698e2fa4d7f2b932a993eb249adf925e2590eba2e294ec9b14cc41f09ff77","8708382a17d418dd376e43502b929edd7eb9c674d83c1a7c8e084e31d4cf7848","1c095a64e0626506dc20ff8d0d4945b00b162c2f300ce2022ce1acfec4acd2c9","2e760980ee3aed8bdf7da2361dd3b4f267a8d2ec28e87eba594585fa3328e01c","b42224ea5abd42bba5a45dc8ba06f8c417477f9724034826633c1bbc908bba22","6d502114a50f43fa247d005daa194b4401628fcacc4f566ef33a4c5e0d093d9f","9d8b7271a27a8fe0d0568786d3be29bf8c0da6c71eb23dcb4bec6372c9c3df7e","12f655d2a79e1e0a07e8ce862d1f9e18f9470348499983c18e69df11a2908183","0039aca8f18e35a38c59bf930dffb0d26e20e998f9a96e694a6df9fa187d87f4","987b52711c9c3f26fa0c33f1d976526e4fd73dd2493e9126b436951e8a8d7528","210deec024ee1aa21298cd8b3a005da424130c67caa24a2eda29af233f300f5d","875fb1fd7e76563643ee90edb963cc699f8ddf46cbdcdd49a906c66d5d7b8d1a","1410f08fd5a74cd07f0fd5874235f52eaaf5d2022d8dfc690f979e6d61ab5fd1","6b18eb608aa26c5b24c0314262dd142dded9b23b6f3a2a61d3850286a167ce97","e615b00028a4c3843d23f6b674136703c8ecf220e76f469309e8dc626beadbb9","aba0ab19da97cefbdb30016484154c54d6f9d3103960d361374a9138cce596f5","dfe1ab668d392303cca922e351e3423609849ed77e35984fe37634b9b47ac9bd","a2f599f16cee3b434ffeeb4f4d14e1a22935724ea320267a1d3a9961486af985","4c36c920ed93280b59eb3a8eb047935d83c32e06c498a05c9c8685a0777453f5","0551210b05129c154673542dd716cf0a144772d8076317cf9b0bfa572adf6f66","1fd84c9ea38847af31a7a811a58f88a216a8f6bd4062f16df9f815e561fc6a31","c17140ae53d026956c6b5543435e82ac4624f257e4c148506879b40bf1de6b49","1321077fce41be1ea1c1843463eabfe3fa735b622adb0b01155d05704671c145","61a55259e402080d8e16b6133ee2e1a03b7c4bc05a3632d5c4e8beb563f66659","93945e40249151af832c284f4ac8f182fd7feb11d50815b55ed8b56b177f4ceb","427ec414bb2af78d7f6d5cc6a862845110407f9ffc90b81d8de6725442fca035","88327c332b810ca4cf0ec9901bcf0df23aa1e08100f223c683eff8c7dac0ec14","00754d79170d0b01481b2cf7c04d1dcda98f95e26e83f4901fd6de0d0f69ab28","dd44fbcf738ee3aec8c297ac7aaec56174a08065b55bac8c2c546065e86684ab","6887b5f6c68ebc16fc1cd9106f75830b28d966481ccbb9aa8fc2072f6789b9f9","fc043f5a0cb36808b0d44c3ed6c5533b38996e19793ea6fc6756a64055e2de65","293feacbf8047e8a36d602e371e2db5894403c6d64b20b42e2f4f16cc6af6344","c092bf1776391fa0da898f8d6f3c0fb4bba047b42fd1cdcaaa5a5e0c9a8a61f1","f08e3ae001e0b973d0ee6629adb2ce7de8e3a5006be81084fc59b41b9143003f","5fe01995c2c74fecb4564f47d1250accf5854d50af702f105f6ca4e6090c9334","4b2d736a84baf94bde6c7eecf4176d99210e0e06c2e926cf08fd8bdc8bdd486e","80d9ceb1a89d39fbd3a9b5c0e1d2f630bfada25b029e2f0461a6ffc7d3a79e93","75a058d06ed2cc2982094d1ea6c695214109f4bd51112bfa690bd24b1699c131","7b65000025232618013eddd09392daab9e17f16ad942c979858965fbea8d1b64","5f081c61b9553b1320a67ad57bb3c474d2545a4b1e2d0c15f7c51b25856ef1ce","f10450b2ef8fd55b3c319afd15add29d6c08b86404d43b7dc6b344f130104fb7","2f3badea0881300812cbf1836e353ec848af410a49718b9b8beb2be3c755287f","037fb73d5ff0fba5b2fa6275122e9d9d58ae5a8861c191d6f17ee179d426b643","40e5650b538eb022fe9852a47c392bb0fb9e0d80f423c28f9da467d416dfed64","c52cf3a9ac7a67ef3b9a921c3d022a2e51672a9d61ba6585342207f6d463dad8","c55921ae245d8d2b78eec3e335f8522ac49f72ee789598285ea97c3880f3eeb0","8dbe9b2955ae3db4018739898bbb900a728021f7224736089ca40289487e48b8","a418f874041f93bcf6e9637476d366475417d45e151186780089d414bf332509","1798aa9de0501f91a8b468e5296f7a8c7d9807d705dd69fd1df742d66e0983f7","93e1160d8b432771927e091098405fc31d379168fc9bb204811ba6e60f2b9316","6781bf5949839ffe9404e43bfff172b8a88b47df6e53cee321acd766e6f300a2","30abcf4acb436e15f3cc72eadfe37ad82be3c22510131a3684fd5c3e3bb1c9d4","4ab4ac45f2527c5606aa178648463e25ae8a46dccc4b85a8d0919a77c7ff09e8","e6ba08b762e836bdb10a8572a725b01fc27912ee62fa1cda2ba0113e614569cf","63a88beec2be5dc640007d90991929e54755d2a86e36aad377a64ff7f14d9cac","24262ede933c0d1b6370c0bfc2e575b244fb598759356e6e9590db293e5efb2f","838c7f25361b29cb9e47b412b5caf734aa7b58751b0489c064bf4d3727489e6f","46b2f6c660ae7dde0badde5ba0e6bac9d3d4ffec139b32ed9d11030af9d1f1d8","571335914c62b214163112a484ba0c3ec2a2bc782ef90d78ece0554d80cb4da0","785e7cea47c8470237049f75804333c2524367063866b10d626561c2c05a1fdd","1d433c7857ade715fa71afd0dc33ae8ca879a6976ad89ad9b0b91e7a8e374aa4","f2219c02ee07cf32bd6dfff83de6504b18d8329e5f933322035eef70d324ffd5","030892bee5eff0265a5453cedf285a29bd9fdb146853e902e8f042e3be193529","70369d702c57395c4cbe548875bd671b6d7d75d8d51fca0487d5d13adc11b0f9","befcf9a0a7d8992c9a8601329290ba5001216edfa3e94c564b4479fe6f114eb1","29bee8930c78784aa98225c3322cdbe07ee83704d5de888e416eee753b0f57af","c32f37965b8f0ab5c9d54e2f99ca57b93e22fd8102b6827b71829b223d204dac","f3511f5ba47c244b0fed9c81062aacf455199eccdfe6e9567082c41faa67a63a","ad2fcb4ee33887b5250c490868dcd34199f7f1017989a67cf90ff821c21976e3","a808faf3d5be40a93c6ea5edc7bb5aa80b8830bdefebfd55342ad8fbbdb34ad1","fea89e9cf267abb74a705e339e1745b0a18e9ef1a69c665c3918bf6c920a2e24","346c5e40b08bcbaa5efede24952b02ed2ff5cc477e396feab84bb722edef7685","27a89e9c9fe15c6b71fbe7a4e9167f95918e0c19aebbd288dbdfe7c952ed0c05","26c6b4c2534ab8e31b04982bd9f719cd112c08aa99177a21d79630c1a9f6ff6c","50029de4b5b3c791c6b97afd052a7228378acaec00afa2a68de2e6426303d1b4","bd0b5b4e648404f4d152a849c692cafa448cf95ef732072ef004709b12b8304d","bd70e9817170d571649898754a23c19071678f03147695b293ce446e973a4815","b32941cf01c40a3a89eb08952d1cc0b59b036aab5ac40888774a67e9ac149e58","0be3cc20fc361e34217d501b7942132b701a27b6486be6d5befb411979cda6af","36f18158802c9d0002fce817b2787b3baf714b02966ea9507f604d4a75d2f921","5b36e87b2b70a059eb662322461c270e92918bba7d21a3794b3e0e2042b3989b","71de9a68f55dd12770c4ef77eac7710293755eabbbb086289ad00bcf3f04678f","8eb37f7f629d6f06296c7a5f99df4ec70e0cbbb8438be86b023fdc05f0774a2c","f7952ebcde8b19737fccffd3dc40ecfb7759b1e9d94d8bb0d3b8fb1fa05d62cb","6138bb6891d993639e558b20a1fa70c674a0e9b84cf594b7892d062de8c434f5","b4eb6f28e9eb8f9c5759125594364043af106bd01f70e2f5a956446e0bcbb22b","88d699757ab2e6e4834c98b2e0f9c1bc7c4f010647c64fad3ee3ecc9996022a1","83f8fc7693043dc5972ce17ac42ebc024204cd22f3c6cb2cb52dc2d8017f1218","8f71840106450a8e059f18defc493f9849986493c18cc8d153aff8f08b13b6a7","cc9389dc8c5c0a0db08a3de775b5f5f9e645513a103fcfd171bdce6dca232a81","eadba9f8ae9e75fb2b66326849096cfe5a1856cf4f481c773a66bb7357b97fcd","9101bceb048036077ecac569a690af2f47019902f8ec9b2b13d3f594c6f78bf5","d56a81b5c01f0f9366bdb7a4c3af04b98f550434df24ca89d45146f0754624cb","f388119e3afe2b419420da674a434b04ed978d4eedc6b126e5f4c706b7ec0899","8369a1f8bd1df0a52365e5ff5fdb8f07a88b2fa6511880aa013149dd76a76d00","a7c0df84a565a12a8e8ab193d4c1e4572ff72f2fdf6e5fea6594da981d092f8d","4ab4ac45f2527c5606aa178648463e25ae8a46dccc4b85a8d0919a77c7ff09e8","31a710b98c1ff5c470b0bcd809133b437cbbe01561dd36a05c6e8e4fc346203b","25f2cf26d3e53d28100a7b8e409e0c18ba19b29689e818cd725a9f7950546dd2","eda2833e8049bd4d873ee3cdc7adb630f133ebfbcb415fd927d7f9bf77712403","9436306cae5e3601f76b5aa1f482b92087c358d3781be6943ffeab2990edc753","ab512a25adfb488b73cb94dc17496ac0a5afaf1954f9fab414ad430309913e96","25ff14c407d177083f4ecef70b130c2cd3e1abe52167b4a9ea20fb1c88009888","8f7d078b9b7df5395e85342ed2b8eabf4e34b2843e387f9c22a30f4683eb5453","11332557d3686c31f8918060a4ed35cb86e8499e31963b89713d22a2413008ca","287d6ebb4574fd64ac8c28f7ae6bd7cb74cf7c875dba2f2c69265a6664502037","d9a70bf8548791d308704e9bb3bc62b01c5309e168ff3abbf7edb53e40e21151","4a784a9de0bb602ca713b90a05f7bbb9a8694b53930378d6c3e1b96bffa911fb","d64ae3762576d5c24aafb88ad69d4a954728241f0b83a33474e1fd6188d55a53","1c17709e9c8f7b2e99307a2443b2831cba658a84961b3613a26709522a0b3140","c7d19f830d9ce651020a9b1e0776d0d1acb2990f2d8c590334aceac8455c4e7f","31d1b740f1ef520de9349939d466e89c57381c257723890f74e3b0fa9aefb6c0","589012dcad3a3cdad70a1c3b6fc9d7773d62188c2c497ce4b4a82634cb2aabc7","123894dc94241c87e45c30122cefc7cff9d4d3a93743ba00cb4941cdadb7eed9","45984abb8237a1d2ab5ef02dcf09e1c152b952ff7aa535d7f9f21efd0e1f4e59","98f225dc6c3100f3267c13ab382b4bb860a0a99ba856866bd755dba512619536","3787fddb8e07830f6d029d1069e68362bf5989b8b1a6f86ca21857c0352d7ab2","255bd3d2beae0515c152351f8d37dbac69e95904b873508658e89f30c03833d8","87cb6707843a15530f92e4a678ac852af2fbbf302bef73834dd856b81fb95260","945131018f2381c632edb819c5d4ae9863127e72938526c7236533a99f4dfe41","4ab4ac45f2527c5606aa178648463e25ae8a46dccc4b85a8d0919a77c7ff09e8","3ebb3ee8da06b3297a732dc2da248530bebba8474f9a60bb962c8e8284bd249a","670bbd4d327fe27ac1b3fb4be335d524d52eccf564ac806dfa7f7a5997905fa3","b78dfa4e36405a4e9f4255f2e79e3c5eab3a6df7c3e22bd3709a98ee7ccc86e7","ec63acb417243d6afa11ca4558b88ca4d9850f572bb1fa6df86c1469967e91fa","838345ec4e4a862b5ff85a8996825b46e7016ad335f598f4a958014dd94bb147","48271277ce06a7fff15b4aa08635649a47cf0ee57d50a614e0fcd21d7d44000d","0f11bf4fdb903cf8099ab0553a5e37e9b952a723eed8be53f8951ef42bd10498","109bc9fd6784cce4ea384d5d56a02947a56ac77e6b1742dadd38df80d43912fb","aa04476d3a27eca3f2d8384cf17e2784303d0f99ad5c8477a6809384bb47da1d","f8a69dcb7c8520c32d6491479f0a94d4e053f7dde9b77711cdbc125ee4b5cc2f","c3afd8523e1ec6f0d7c12dc9de62e267fae7cdc52ce53e74311a8e0fcdc1b45a","e267198783a294267568c5140e7d9b89854ec0fba47e181f204242a13a84c536","a33f0171434ed2ff8cd1cb510af1f365202178b845b7e63fad619662ab375d3d","d0027d9796e01f46db268405cb01f14a05a0424d4e50b555e0b6ba068d44d2ff","928a1a92ba98a8631055aefdaecedc4998e93256adee38827ffb42121c7521ee","5ec0518a8d4a6efdb7ce8c295f40e83d93536857df90ac4ffb5fdc4efa9928d9","bfe1b3d1333dea08d5e6febcb501d8286a740fafc8e66956464cb29d5a59cbf4","eb7c2749192076d40d8ae6466b047561d993fb36701c26e3bba5204a3f8daf4d","f817b75718e168de48103d745013c5526298ed1362a05b11a2b8f73937c9216e","938ff9820f2f0e290c9b7c6adef3f9b3bb3093c57b412a66e0affd90ebe51010","3717a2224f04c0c4c28523afca3d1ba8bbf0474b776c0ae58f537bc49cfad6b5","c3b0bae605073b2e1d5d85951ce48c93eddc1cd09f1071dbec324c8e359b4fc0","a9133f1a959beb3cfab6be932a5fd0daf208ead3c91f3a2f7726713f5bd57b5c","de426a90e46f988ce9d6b0218efa045882fed40d63bc69eca7057399b25f3f51","bdd0dda96f09e933b6c53920c87ccb796a77885a7da8331c1ff15c712aefcfb3","080e7accd1f8ebf1d25f7d587309e897f136efe65e95f8629d7198cb5c70dd11","b367f55e5a3db9f558ecbfb7edc9ab66c493a98e3b4fc768bff2577fbeace621","c33c0f67561464ca0e00761beadd1d41d9a9f36adcebad3d5c0a835aed9cb792","f12817a574a05726aeb696c38eae2992dc6671c0df867d44069f793a15733d20","27678fce584190f1824f8429e24df49d4ad8966b4e782f6ac8a3a6a737b7c87e","3fd83a829bdaeeec4c8fcbdc60e04fec8f9c7eecc39736d5d2405542c311b3d2","38d94742a6512af33703464e14e102a36e2f66ff3aba4c0df8c0b2d0a1960302","0fefd6a4153559646a317db1220791c58c6f7ab118400a8cbb5e8cbd7dffacc5","e68dfd70c10a76cb078f7c3e8a639d10055cc1a1e29c1084a85fd29d90cd1fc3","301f6030a5ee7736193e71a4775bee4069caa19821ffb7015fc09660381a1c9d","bb6ef21b500d44ea02d32c33ba9a7e21a230f0b32b0824ba47fd81ba15193515","91d68d77d2bce886c6c01cc6f9519b820cb158aef39cf20e15ced7e3ca593bae","8b13496ab3ede85c1fba1ae3010b5a72eff5af7692b305aa01dc4dc737b7bef1","d500f58e8b877ea0ba8f9e74c4608f41d66351d812f359aedeb9c4d3f1961e8b","39b89fd17c07eb26e2310e83dc730a9c0e920b4b5ca03c59770d9b7dedf5e795","70a0c805ac217b8152b28ceed6ade20ca8668554aa40cda24ba9cc2396de446a","06b4625249b4ba43313aaa69a4c3d8e59240937df17218da63ebfc5824e0ba46","ddc786d7a7f11a5d8b826095fb83d8f72a51d67e40c37abe627cc2efe578ccac","21f6ec0907cd38d6f95ca6df04d702fb5eb2762f43a9c9d435c7dd9f8dac7ac2","7bf1d5fee42601e94febdf32aafb396a9ba418cf746fd497301c3e83e274d352","6c35928f63ce47f1e852efe4fb5b074516242db00cac2faca393b372d8cd4aeb","ceea976de96b0a9766f0768d12644593de2d9ae11b78b24aefdbdc0901beb5d2","67e4efa149abfe4b3518134ad1785ac5c3dc50d8986d732b2b975f8f7fdfe919","a404b050d706e0c4328007de129742ed4f870554bf10665c1c7cd1a7b8069c56","f34cf758fa12ff3f60aeae954fa8373822bb00f4687d3b652c5bbeed248400f9","f9f7c49f09a042c11e7ee25d0654cfe654145789af74a92c46218ff49d6dcfff","c3877fea6136bb92c43ac0e7abc2813a3496fa6a787ad00c01d13e8ada83c049","6f64dae509390bcffbba8198e57012bb162b89ab6989b98ac8549f8c8ba16353","fe0009f6dc8803129260b4376ae4a15497a8b249c5a4d1ae3d12d76e2a8b3993","8a03c3448ef3f74df8fbe6e31c8813f8797058ec5ec65ae78fde297d6ccffffa","0e46c8fae9257358b4301e805ac8354bc1a5bb2708d4c49d30f4152411441613","6b7f5b682313e4c0dedd45fb6af6b63877d31542b718fe6ece60d319ae1518bb","c49dc63a07977ed8ed08332cbc667be58970009ce58481b938bfcc801c4f2e52","eb4be7df6af564c196575f8a649fd896ea2ba868cbe28ee4ab0d57d9cf77e7ae","4ab4ac45f2527c5606aa178648463e25ae8a46dccc4b85a8d0919a77c7ff09e8","69c291b23b0b542b37e40b387b1a4b1fd80c299dc2048e228d761b39734de2bc","3c406a72e64363b6c417b5c183d666e04f396599d7c5f2acab46d6047ea4ea1c","e1998e231d6e920bf7128970656db792825aba685b76a984f15542a3959cd128","990ead37fc08445878995232d086555c3e7ebb87807f7102ef55303e97ffd1c6","fcb485e31424cdaea69ed5a7e18a02e32cd270bdac91d79e08e6e6d10ceb5073","d047233b63fa11856a9cf084afa6f1553eb79db8add6e5b8c337f2b073b27e91","06a615694eb0fdc721d440516aa83a9c139a4668f3bda3008450e6f8ab8a4cd5","bbfde00271bab190cc9106233f1644c17e56b1927af9e4a5ee2a8f6fdb268e1e","b78fcff5cb7ef20c0f1af261d24778f709ab012e66d5d73ab3dde92942585c3f","adc91a9ce019d33cb6585681686a44d4b31584eba87b66dd4ab7913f9a2bd527","7fa4a7457242df81aef5ffb5190ca4e4539c9caba22dc0a53c652e09f11680e5","6d4f1b1a39b15da4d8fc04faa1bf59af55ae4fb8dcad6e3c06c1565e9aa5e3b4","de1ebfb602a2212f4c99a86a94fffba5fc2c341b506afaf06e4aab23226a528d","55ebe2b145157d3904990e2ece132b2a55f6160b6c6eca2ff3545cab5ca40a30","d9fb5dde3b3cf528aa630a9a57e1ec3f23c705eb12da436ab2f46cdf78f017e0","eb141284076b424409cac752c0bd045f43dbf54b98ae5c4b60d60a75f30407cc","c8451a29f523247046f6c8d02afb8669517b3b2a1d02837f4b358a2110a328a7","0cfa818e9723a91e9b0c8866a4133f84e97e08edcfcde9fa544dad413e76fa96","139b81c01ce09216a48b22877213b8413147db582283e2a967ee3b60b65c1230","1eddc37b94f5620b574bc351ed48922e03b3d3ad4c17d5821be3da740b9d2821","359db8dd52522e820c0a39d27e63b659d568eb1f28d3f02ac58ec39fd44eb3b2","3b36f9ec656a6e253e7c0217c80f76b3da0e34acbc9b59548464dbb713ee3864","388303788535cc28406776c0ea83bdc9bbe6be09b6a8aa55a6213510ecae0a64","1bf8fcba7bcf2684555c910135d995e5e3f9fe70093709f50554776407092fe9","320c8b4370a1b6d7c2f384e156ffff1d42a37a558856c2a52c69cd497d852fad","e212e81f4fe399d0fd675bb35272a445bffdc56a6e4f2b2ca00801d7d7902fa0","73553fa9a050dc1d0ef472e009707db0d0cfc020f8202096cb9e36aec3340ff3","7d48e7020a30be22b42f33a54152e9ba33e8cd87426e861e82a3d82ad77a165f","23207cc61a21bf3e8b135cf0eda56a3d4f8bfc4130213e8946c2eb96a29e2e3c","70eaa34b49d8d2577f0766c6eb3a12deff982b5a1a6dfda45f00e1a8832510f5","1aa75a85c0f54a4d8f2593ada12ce673cf6c3ce321009852b7adfd9667513b53","c58bf5add824856232fd88554d7d726103a0ca47f66917a92713a6348725a779","f61f40f735252101af0f749f71d548352273a2ab2d97b4bba72f63c99f00ee1d","819a391e73d21c934b1655d87db1f12fb3bab82b42764d80174cc3b4b24c7328","7e0c45ad0eba850987615447ef40ab04b1b6f1cd8050820c7684c23840b8de74","1748698b2ab0b41887bafabf70fc55ae448c3def39342be054a1f0f8943c6be5","b52118d809b4729e93b65bb528c82a0d2f3d844de1b9e8816fe68a5f16cadf45","ab23d302a49b1525f234ba5e2c9b0ebe2c86673c80b3806b3568fb9236c66c6f","04d9645c64f985bdb410025b157391c562f3109e17b7797d3743cb85cead9816","7c8cde1dae624c72a9e88892a4978e6ab5584c4689afc493dcbaed5363bcc868","2d74878005d4aad49cbaa91890ea4642d6cec91dd2b44d62b8d74de72896a50a","f6919566d71a0c5d7329d312f0fa587e2837c84686bbb8438a72455c03e806a8","720859d7ff032ed73aa36da709a4bbc766373d5342e82289f3d307ef37336d9a","439105bd9f912e5fbb7eea7bd293f3d182adf2baf8c6abc8137ac7e18d512b44","60a0db576d35d187502e55595d54005b0753a1a0303820ac72b1618cdf844232","62138b5b93c3f433dc0e8239705e13238bdaebd7113f0119bab1d89107a77906","97be0471db3361234d6a5746e5a8529b6d1f4a57c749d986d4481f0d4e4513c9","d39e188a1d5210c428671366ff4bb0c14e939c6435a56189e5151fc2c0563803","f520cb3a7bc1c4a86b9ff854d70d4762e12878950d37a660cc1659da087c8c47","2eac4c22a0253975e08831d0797df9c68b5609e3844033011fa38755a87a4cbf","c647c0579442a155842928c297e7b63dfe819c6502d98a8bc3bdbc6a4ab1e4c1","6caa7bc7bf9d716d255eab31b5e43e993870a2d0576dde7ef255bd2339a49092","c8c2d5f903de32f26b710c306fe95fc71a11a65c13d1228d18dccb4cdca0b03f","85eb86d40b8264b705540927e9dcec27b8ab9b06f672eb3f9cd0dee2be246216","2e1050435731a1afbc022dd9ac2dcfbacfc8c90918b8aacb34c2b7f167a7c595","e8ac2aa42a22192b29e17aa3620f40dc122417cfbd703cd3cd78a1f7a0beff9c","26d0d218d5f4f5b84e221c34e363a0f0c32f7b7ca048a7b7233b2f9557cc5f52","526db5fb7dd7438ba4ff32d099ea4de4f59ff40afa4ed784f9a34659951c04c2","831d06a24cb9e7af1be7755f9fcd060aa91615970a287f944520f327fe55e091","a7496dede006a7c7d87c792aace2f642e7c6e70b4af1812bd25709fddc542aee","9647dfb7ef688299eb0de5cff84a58484b24073db7d4e9135eefc6731e348e2c","5a9faf6d33fe7738361ff01e507b857e99153a64dd6d80b30450fc01e8c137a4","29216020a43c6ed93bafe5cca2859b2c66a49fe1c8ec20540d889941a1ce1fb4","a0e2ca80bab785576f508b1722e4da7628ec4e0cd6aaacc3f83e35d0ad3af631","898f53e7751952201fb5539111047c70ef2f0f46539c7298bff0215c95aacae3","91f39095293a0002bf678d2a62256dd69bccbe4f453542473a43048725efa44f","043b387e3af899054c271a2149d4d21ac8568551ac9729a77bb8e01cbd489cc9","5822ff20bc6c8a9340d22cd25c16e749ffb8647c07696c0c1bce3d48d0f4bfe8","22f07aa5c88e1a04efe5e56422274303608c1ccb2895a7fcb64289960a9d0f42","cc5f01d91c0552447f6422e0ce9957860c9e8dcdb3b2dfd6107499187cef4521","3c0642936bff49fe552b353772356222f4cb7446882280e1d5a9b8f1dc96acc0","01c7d5a2f27d30cf21a708cf8a0ddee8f3c3fb6ad364bfe0ed2f571a5215b65f","50dae281312e33711190a27d17b68a48f90810e43cae8ab22387a44f5c3dec39","4ead64606928d58290a40f301f29e58ada7acbebbba5aa491845f302043dc2f4","86a8a469a46a69139c79202a292e7daea214504ec45dacc524067ad7f33b5fee","57495ce6e3bf92c5d861e8a6cc11115bbbbbaec682b9f1a77eab0ddd499ff74b","23782c181a520ae646b85953eb85b1377253d4825045a7d3a8c994242af4a80a","91136773f81c6270c3ff92a95a5100ddb14f67296f054f0ab553e3500222e0e8","87ac6ca50efbdc3333dc5235b690cc059af0b043d36bf60a4445289fcae32329","c6514382ceae2bb220b843c866b4f15cafdd6cdbc94cfc077c53caf2d82d1f74","d78453ae55c61cd012cc097fd626d02c84dd612215733355732a43b92cec747c","9420a4873ef7f0ecbac0be5e2dca4d532b64b8fe246b834b055dfdf286de5f6e","9d03065416bfc467910f37dd2f1307679459d8e56ecf311677538de64f48b819","0d5d5593d1dadb9cd50c5a0774966a12709e28dee509fe97b2fbbe45660c09ab","e4919b19933bfead3d077d88c9b81e17b7d778681127b8fce895e9d8e4c46e8e","655157b11b1d65e443bfd77960701a66bb3417b0117f8e2d1c93d240df4a13d3","130dcd8410533e09b58c46c99666249db4d43e54ce4485e022ba3b2301ab16c0","8f316e1dbe13ee478a60b4c061710894967e908c40af3dc13ea0adf637d10136","e8d7b3147c1e2dfaa8cd0b1235ff65d1d670e26fed5e930678333e37c53aee9a","ffff3cb23f6b8607ed305379dea90ed63cadd203e9d27b54bd2ddde185355791","95cfd4e5163240ba11f7fdfa38ec4688386a6ec258eae8323603e3e052e46311","f407fc6773b70bc684144bf1f6af108c1f174a24b5be6f8de29cae5e220d278b","14c8894eaf7b84461f5909057a896afe53fa0d5d0e3f2749c9fd78636f679458","c3f981ffafb2745deb622eb4d131547e59082f85091b7150058abc385d8a65ff","a1064e2edf0ab963ba22d225e4f6974e02218e18c59e2dad575de6bdfdeb4767","71157448cc18d2edfdd97a2e27e0aa94366b4255f78149f93cdcbb9cc933c6f1","8f4fc6efb191cf2ac2cc57904c8b5cd436f54717052481993d6d7da2db307837","cf1b0e8b87d65e3ff733ca23ae3b85caa214dc8ec18710b817e7e5169b9a742c","c8d24bf170659506a430cb7ebc237c322a2ca2bfdc2e4ed035da57ddd943670e","263cd5afaa26ebc833c51ce7f7dd880a6b1ebf331ebf29447ad0cf1bd4eeb79a","563255b25f07f6e8599de7a410b91c1efb84a04d7ec7fd9756d767939c9e9a9f","42021205277e0a52ed4abcbf8909316734aef24ab980cd64aa98917a33bd378e","4a9b8b4fd67b2c98d2f2bca05f564ef518383b10d454d246ae46b4692403cc9c","0eed2bf39b5718c3c68cbd2724ddb3ff1042eaffbd3edbb7590cd41dc62dd6b1","8a9eaf0f5fd90a1ca29b9ca63b843b84f37293210bf997511bed9fc83e9e3d50","4db97ca8976693c62a80241d9213a7cd8b48d440bbb8d8439c7a25f1072c3998","6633dff6646729c14223d50b5348a221649d86211adf441cae193353d51de406","0d72f5963389582ecbb567746b2b8b34672097bdbea7d39ab0a4451205163765","3a5f98f82c125e744157b310036e0b01fd3ce78c5001df971cf50d393e508611","26a1f66cd7d5ebd778ce8d40ab978aabe91a9a4e3881845aff3250b964a30ea6","2048e6bb0a8b39d9e06325dac5dbee1f7adc96f548305596d5aae0ca58646e08","c60da7912edacf1ce6fa7b869dd9662fc59e02e5c30b699145b8d6d4fcca6985","dc6aa7fc78584c6b4e7ed12789ca8eb8e3a5054d5562cbb52cbe4c3c018b0890","a03631319d4ac209d64baf1fad2f8cb1da7962365f75945284e07edc20239a7e","7193ef09dea43339345408cc2cf4aad998979592f4fda16559fe9caaab8156f3","4d9c75b1049ce580dcdf2c33cc37d955a1b370786e3dfbbd33903166ac8a0da9","a65a5685027ff5e8323e4193bf775adf6a3ff7910abf1ccfd03d2983882abb83","47351837d1ab7b40a062fca287119e143774ca8d26a6c620df150e46c7b2f58c","852a2167ea7c03b6e00bfe681b4cbd01a6529d29f8c0384250c8559d00d8996d","166223fbaaee9611ef7be5482666ade174d77a42e34362b5ad1ca4fc85ef470a","eefe32a4c44bca6a4ce57c3763277c1eccc9b3d5b75d0d069b33872f3ef928c8","5d6959d62bf5f39f556757a90408ba5aef760e255b3bfab3f69b42eff3560bd7","4461f3edd19d135ec9927887a02037e9cdd55f1ced735664c1b15038d5e090ad","939cf837109b91028f4e08666aebdd823a6949980954cf4abb00d581f90fdc28","6b68b9327f682d0d17a0926a13e42fe58b2e70731e00a7631d885165c9b82ada","464a45d14695e6b584629a1ec10384d7fbdf16d84f98ceff24d50c819c5b7405","ff950c9a63264c284175c570851f5ce92aa6f40b9f17bc9b3af67b8f285b7d1a","b3e74e989b3e22c49f31c3e67e4d172c5e7f56a3f26201fefb11a52b9cafa5be","fc90148ef531e4a7670a7f88ac2f2daee726506fbed313f0eeffcd45a8a0c249","d630fb81884558d8b11dc3e6ab1d424bb9234b56aca23e054fd9ced60689efef","45e0486208ed7ef8b8901a133af46388cac1328169a4dd303528d960e993c400","45b188f9a237ef0075925c993fc91aed998146a4bb4cd7867900166141529304","3f370f02f42053c4cf497fed64d771a03a8db38d91a45d506abaf3052caa6a5a","a31f29378d2fe6945a52136be6c42b4a4afb69e16c553f098a1993767dae6f01","0c516266d81158cf481489d197f78d570135446a4202d11544f62334464696eb","99ef3065ddff4c290fa115292e525922ea633fbadc2a983c1c1a376653f114b0","148d99ae67d72c6acb6b09387c8e49763b74f62821c117fdaaf213616973948a","512a99cf6941fe387fd2dde72192df5d28188132a4ebcd8d9a472a6c804727cc","20ed28322bb0199b2b16dae0b9cea613f212cb339139e61e7774965999354063","f96207b9b5bf5edd14af68c7cf46bdce4145bd5246d93005a8cc956755ac8bf4","5ce2c5f0d9bdda974f73bf070be9ec1d1f016203d003caa4ce9e75d00bcd0b48","a4a7ebea465641d66887b4e6fcc62687b2fa12b84dbe78e6dc3147818819acec","ccca6e1f12a750ca5c9099bb8791b062be034e5191c639fec83096420e8786e3","ea9174994da101aac11c1a2ee68b04d3512ec4a44cebdde5bf6559552fc4d04f","710b22b2a58ac6600766bb668414bb7f2ad057d8d5088d5db53d88cfbc9c88f9","9e36291790310e2125629c73298312aefea412af94f6fe4ec22b83cf62dfe238","4bea1b58743d0cb0bedbc4c1964951a6024afe67a6e03949560fe144386fcf12","59674302c8915a926a4f1f1ff32616d82e642deb6909dd38f7a1b80352878a40","f7012017f137e5a72d4776dc8463fd29bfd049775fa8cb60fb9a902cedb2fdd8","879aff253ce8bc5f13dbf214c8457e0e9548c49de48b7eed256e44e445ebcd25","aead19a3f04d8386bbeb8402f6f24a9796820c761281b1efc5360ab0b99eac61","c98a415ceaee6c54e061cf66af07955d55fc4def905e55bd5d2bc7fdd5b60227","b3834898415581402b23948defac11c38d393384a19a6dccae8a67a2e72a7871","a886ad70115082bdd29c7fe9e96ca7c6c57a452950ce545158ba8c1e039d7d92",{"version":"d38847e436b486528d83ca602a5fe6a995c0b691b29c6046ef87567f5fff38e4","affectsGlobalScope":true},"31eccb65118f01bf9f759b1715d73f4c5c0bc1aa8d22ef6c1e4b49f3e82e2445","33d1025008b8e85ed2072e447bf6fc32ae3b3720ba7f4a2aa9594f279614aa69","523332571c0898b5459da6191ad6294f7f388f6310eaab61d59349b244d43621","03bd1e2788b01eac84e0ded9a9c858183f8fc5a65ceb7e16bb52a52ddcc6d578","2b58d91c9c65ac81c4c77c91c54a5885769e50ac84d3e997c64209113e3c400f","29f813cad34fb4813e868314e537e55b0c6ccd1056ec3e27aca47aa311a67941","8157461e7aaa402e77a2a4bae0cc871fa2ce66e642f16fc46c75fb55bf70db3c","cdccc3dba8f3b4b52dd8e89a6d372d0d45c621be37e8f61adb24d247c3663a5f","1e78d92aeb74814024dffdf16ad38966dff2dbd1efbae57d41bc376a083e086e","15ed3420740d26a2e25423edef8662a104fae5ca5708a671c7a53fbedb37d054","3808c148a7e9c59bf737b027a94a0a0475fe3699dd7c249733bb85026849f358","8d4ee9d15d86cc3e4466b3698dddd6708f74f6aa6d223f97821325103e67df40","c417cf021f6d8f22cc0b0fedb7d1bd5d91faf64b900b2c4e869f2669ad024da1",{"version":"f642b1febf4316608bb983042804856d19553480c77e7efddd1bc6bc9ef39f70","affectsGlobalScope":true},"b765934a7c35159c577ecd88fa2f97570dfd81bfc271fe8a10829b49d48e9fee","725e43cf1f49dd6f3be118b7ca49df63c5971447fa3b87ec249691a4f037e40b","173abbc0749605c9992299cd56403942a9cfcc514baa47869015ab9222c1455e","8196a3b1ac9c4ccdfcb3bb330d1bf58e5e757c1d2caf7b0f21839f59d8ab1503","4f50dc37abd404e0c1bbb2ac85ac9d48b698756df50849e8262484b9342fd527","09787b74a762fef6f43481ca7780ea5fe29f9760921d7bc033866bc0204ea46c","422d32f5455e9d0cca0758d697aba377f1ec389a9be1cfb260a7728fc6c16e30","d4e461d6c5036d203f6732f119c4ef69799e27b43eb9c1adeb07382a313e5175","e03a3c2fe459bd68f0a3a78d51e13aaa4b9792f6dd5624a8a7f510c3dfe48cc8","0a00bcd5aa87bc33f378f9cef83235ba072b392efb23c195c6a2bcab0bb0f456","c6f0ac1f2f2ceda019ac4d7f7404b0456af53bfdea210671201cc8165744b5a9","b1568d4913fb35d99fe1f66ee58316fdd731fc6674748fdc65740039915ec10b","694aaf33a52d5c7a7bdaba0378a780eba55e00bd3708e12bc008d4f5c3c95f3d","b2f1c785c1e53acd5c1951ddca3b50052eb2e9e32ee8463e0850aeba043026d4","38f3bbd799e9ad60282b501d33459c249059024ae417f1a37f7de8d79a0ffd90","f4a01831859f0c38085686944747c6e0ef3463e71b312f78649cc1214d0c004b","2c96542d041ca0b6bd504b61d45c577f337171e24168ebdb7de30d1ca8132320","82b8e2e0a72553021cf55cb2ffe96ade747714bc3fa7ad52a207a198d8f5b64c","d4f7d86bdea6a517341471c3077489c368e7c875cebebc6c3c3e9c20747a89e2","39520f7439f445b08d9bf5affadb7a4561bf6edee328ba9180fc31238375af15","8c2c7737b319b1d4aba827718481f408a2f97e9903d30b8d9f405ef3f3abb6f0","311ca05b4f4ae05ad85c1de361b3a5e1f22f45c209569f85210de448d3c800af","7b6f730e4244e34b9885ead7cc83607f36633d074a41f871e25b6a10cdd5d1d9","8ae65c610154cd4012e9ab17cf420ae0e1feec79027690296ab7f8cd98217e93","371bcaa4faab40f85f3c6889015cb3e23c14e3d282fac4d4985bf3c403574387","22592e9d22e152f175dd39b562dd11dde450813c0cc2caa2140ccc132894075d","a5de312410cf138bf3bb2d6055d3e0dc408f4d01c3a0aba56b85a6d23d92f176","6e32560897076a29c30d04c60f41ede032bb41189bb18a78e17b86e7e0cfd62d","677f9c99627e37c24f020d707de63d766a17d24cb750e22b85bb0e5580bd603a","abdb682b093fa431243edc9865720d681959c88b85464da089124dee50c7a48f","58f21b23a7796019f833e107d3b3ea50aacc44ba792c606375566136f576c59b","9c56db55047f7c495161bbcac223edc11266923c678c53d53a5b70cadb895156","e9531cbed90b37621f7a228caa4adb5aaae5c4ff94f0ddc454a16619fb641f33","5a9d4f54eecdb3796cc7422f366936cb63dba5a6e528a1afcd804370ca2fc9d7","e79704c078ffd11f6b4ae6546956eed7e477164ab66db12451a6187ec835e8f7","3cc93452ccb8065a9d76ae917f22913039498e40361adcfe1cb87d1872732a75","caae53147ce1ae6ad13c7533d829d24dfceb362e70d5ce059cb836ab3f3cf784","945d21b392239d6fe2a5a40a46867f064aacb4410b60f1755a3634fe9961cfa5","7258ac4b85974fdc8072a0184adbde0acf8de742d4d0d17313273a2a011d03b4","ec130ae12d6a12c111379dc4a9fc0a672dd544d0be715d8f8fc8f768af09f88e","41699038dd8bfb9ba83722ba2a0462d97a45ddcda07b8789c238fd22f705d0a7","a5ec527ad15333a7c24b63f6b2855d9ac6050d52fa5f52dac2cc65ac523bc975","0f18f137641b7d98e22aa53925cf7a904fdc66e2122deff67f5faa9496acc78a","c6f6a3f59b3cb156d8efc949550ef1afff59f37e1cc814be0c90851174f8bcb3","846cd215fcc9f8eed77d118d8d942d12370ee9f98fbe521a44d48a1d310df209","d3f5ecbe1938ace589a95d4a5a6964a2822af43534465a502fb531384a104ec7","de2e2beb490dbde90493fa1e954c9ad64bf726eb432915a64940f49e25285a41","373c15a9828daf2c89d596b3b2242e468b074cd398a0670e07a05640e1023e4c","ea0f0430fc9bc46bf9a5081e3f24d4ce18b14fbb50a3bfd1bd3a2126e8ac05e9","c15a7bf0f1180efd5de48929418d65bc7cf423c4a429013c62a79da428f193c8","c42330afc0795a2206574752ea6659791db2b967ef50940ffdee852795658eef","cbc5573aad3546b2803fe5744e769d1d5bd99d776cfe5164c5d6102683cd1c6c","8313ae429967cd831f8dbf43cd82d258c5c996da7b791bdb91502c81db8c80d4","1da17def1f0677a55622befb47a07e257327879e242f67bd6a0c55427ff68835","1f3812fb0c2a53d1b87dd9dab6e1e5e9c6dc87b2f0ed2f7611b4c3dc353e68b0","f6c1a54873369afc5efc032bbb09018cd402be17b3744d3e8d2e72da16daa3b2","c3ad749334884c8189cf7eee7965ab2a34a89155e5340a59c634d9e7bf359ff5","5ddd5404eaa90e10d7fcc0fa81349472eb06894dea045904366a2aad4e719429","40a45efbab94f1d6258028a092648836877725795ccc884a2c0306b8674d54f3","bb9a420020485e5b4ad3b98c6ab53aefd8f5a92d403dbc3e538c37ddddea18f7","a080faca2d78c6dcb47f55fb37b7687c4c72271c076cbc3885494b28480b1586","8359eb6447c298c9b671c875a27e50ce924e4d26108dec8ef56fab51d9ef2aea","ca38733e745e8f3eaf1669887aa38230e304485a4d2dc7cdc7e4cb05c10695c2","12ea0a94acd7fe146a2e2cf638127c1c79bd0b36302dd0c76ec15f3661157640","c2557474f607b5586f223c27ca11984beaeeeb8702ff3aa636d7af24d3d43497","219d2ef82c6bccef8ecb441d9e7fe109807c25d906e9cea8176c44a430e59040","8a20eeea212deb64163f048f6caa7bd7a93a2057046e3042c3748400cdd55872","00dee9ad114e29df4b4ab6225fb3780dd41b17f1aaabf6700d9e79ddda9fd625","2585a8aa9fd71112289415a1057f96871abc4bff30ba875df319d460433bcb49","199c624de364bdfb30fac43f14d2342723d4e600cc524627e66c91cd000a5398","f964a10b074aafaf6bc8f8c9768486188a6577044218a89511287b1fdf76722a","0742810c30243c86f7b32500f72d580ac13ed17f243bd84e473037edc97bd218","75412ca1c390bf877d5bf2b69c3113583f7ea1cc08ef8785870513682ec7a1e8","acbddd01299b02f08d391d28c4b23ef01c0a6d8789f25128efdf42217ab772d8","5ac64d8e837755114463b6c2b46f4912bf7b3a117d34ada9abad8f513efde179","151f38485c81ff171200e524e10d7cd30b9ec9d87e0e42eb733a7ad565b69432","d09a5cf8da1614d9c17f13becbe9b7390d90718826782f43182b20f6b1398d2f","8adb38119b8183c9cc7da7797c67ce07713d85c18273c4d5fd9f5ad1633c0488","b67c5232ca979a9bf47e624bb69542e082042ce1ece0453719da15c55c4b40d2","4b607aab4eb3eba24400e812ea236e50e67c63541e7ad9025f5092291122d2a8","223d97c004aedb64ca46232a867b270054ce541c6afabc0d43d2df993e63bc2c","f05163c250f40ee77288b5f3ab3c9cd81e205eefe96d09973aae8c4210902882","9e66129b9bdc2a787c77a4cb3c49060919ef9194a235cc874c0b55c9b285b6a3","5e7bcd945331d421947320a383819df45fa83699050ed2741a255c75b806f2f7","fb2632d6c9cb20f8af597d57b46f773227241300cf0bb3a29facb65873f4a199","4f65776506dc386aa17fe2d0a89f7ae6a5904ce892e33631de6533ca56c4cabd","1221944b22d53d2690f390ce21acdd058b9293f6be473b326ce5573490f2b5ad","368c0967342caae4f7edf48c956aff60154001a93afdf590bb81423d0d418060","8e6ea045f4fee1a1bdd5f6abdee85c68eba03a5f73629183d7e4199da89b029d","720201f913e374ee7b7848a1c7df0c3dd52d313c0617c0757145093baafafec8","36b42471cee1a5c5a5f8d7dd965a4b7e89ee8ef368f84e1bef3453bee4c22360","e7c0f531b31fcf03fb69609fad3141ff24dec54a8dfe7561cc36277ee6c91ae2","a64d3a3d36a2c23f4fac3e0d7ff57ef6de278c303a7ec1cf8227877bd20d775b","be95f5ab91631710e38d6ca613e99e97e90e867bd922700ad861332f332faeb8","bb5aff302733545a769bb97506e569432b32cf9032baa800fa4a86da58afb1e3","d767f30cdd7428304c5f173731b03928ebf7bc9b8bce55168e7d6dc851dec7f3","245801f9af5b0d2c33bed7f3cf23e381aaf9d6a3c8f6ac4d25be026ef6d6cbbb","5fcdec50512b968512e8acd603e812d65cf22aafb471bab45014b603a6e238c3","3e9fcbc7661199d45ae1dcfe1e46b76b02eac7a64c77860a0fc7dab0b6ce6e4c","dda3ea0743bf9f15ca886f82e3e0492088b964e53e73e92336a4c94454f2613d","6a590f4891c059c8902a8d7f51c47028f1fc52c9a813fe187ddac805e2512d1c","7ec536769730dc0b4765c0d5ca4db671c03218cda0f09f06c753c4d2aabd1f76","9add7ef2930172f355ea28f99961c5e480c186f76490998a968f6f10f450ccb0","2e1938e557c6538f54b7198dcefca2beff4a0047b7c99bb880ee43786a4f27e9","c6e5a949b3c28d9d93626e179c41c17ef8757347c2e0c0adca19079243504cd1","e2294317e71658c409075bea5f25f19f87a770e1cae3c37bdf8c22de6e85b52c","9bd933f16a0e3888ba54797e511a30ff41b9b57cd782e1a2159221abb67a6dc8","9d45877fcf5e7a486487da3fff3aad90096a0aa198420b835a171e7c9a6969dc","83ce3bb93dd967e36d445583005dcd4fba03799279cf4bfff1c84d10e6aecf48","d7485635dd02ea56a56a69d986ba8fabc0d88a45e9b7fe86fa505940f951bb0d","5fbc180ea673e32aa25fae47722e7cbb4cea0d81cf2425648d4dad54a246f00a","d6edc08272ba316309509830dfe5458bb6100b3889b3a4a301f6497d0b9f6d14","363bc59b9fa2b51da24e0748f8de6d00c7e9d58a789cbcb223486b75d9d77460","6c718d562de5d6c4a9751c0159f6e66559d81d791755cf20e8a8fec81e220c88","003eaa328c07c63420eb8d195969d7025f80a1236a39b535fe87c7f01f6b668e","3f99c8cf48b970ef8228fa48dcec5052bfbb1aa89a2263367ae93378dabc2741","af800af6345b26e50145e27a97e0fc0cf1f3b731c64305bbfd8cf8fd4432551b","a0a142867c2de33cf351c6ff38f929e640f1c2d8bf80e197f3eab20115d9a00d","4f9d8e0b0b72b3d0df97c36794c89f133d2c6d40a120c6451dc847246a644031","52c5cd13721b31aecc32cbb5ab02e122277243d797f469668af45c80f25fb01d","c279f02af6479b4b580fa704fd841dedda3ec398ed474e2e9b88074dbb057274","b23ff345320aa6b8dc0aac715d8a91a2ef1fb2e2ea9ba9bc7b49077a4567b05f","17364f22f279b39bbd883857b716f9815bb5762f7f453c8fee09f82d211fc042","60a7c30d19ee5ae24658fcca3fe4c233203fac7d3f78f7a360596c7333fb0ef8","ff0b9de2e2a7b9b6907bcc01e865f70d48e27f4467be43994ea00ba0a3096359","f8175318af58a84de9c0b887cd27be0583f2032b29252574567e3c98cdcb6bfe","db3b7707089731edf6dc3149c7891d8228b3d1e852597a601c91924183c97075","bd3eea21fce32dc4c5a096b8e37daa52c8afd9ffafcb1d9546ddb1345a5a659d","5308ce3f389463d89c9ec0a72068921042cefe2a10243981723a0a5f32734663","de5c9c8ccdd211033f8874959eeb00333ceaef15c099fd1223059fe307621be7","dc05f0bad4769cf4fa3d3be8b93167cc2c103a6b40dda13f2a053b40bf10ff4a","cab46e70102b1b141b39d3a397d66e60ce5b23f2ce92770c5ca3ad127c82efd7","f6d080a22bbd8189e1940d2b72ded82d5db8f3b7f86e8daecfc0fc746a70a3aa","cd83bc4d32b5b57743f287ede504dffb6fbf0a18e710f877547858e9ef6b92e9","dcf226944043a74c894c41c08c6ee5a5afe198a4e8a3e73679b9750189a9289d","863ab5d90b8cf67baa77a45d75cef982bf9f9179f759fa3d4f25c4bb248556a1","21080ac01d82b3db981df7bb3e33b9727cebd87516a2faa1e08edf005897b660","040bae85536e0566367c3780f75c85389e41466a620f05d0fd7da31f9b89b9cd","9dde3027ee9923b516762d458219d10d660d223f38e12b4cfaf44545cb2101bb","de03a7771a9fde09b47a54cfcfab639f850f85647dcd023b87e4a3fce05fa9e0","d9b3103fd8fe742630f5175a0e374e8d9a313a5b1649db8045fc0427ef05f0da","d1ad96446709ce236a693c04bdf38eeb4fb21c1db4d3c553e68d8ae9e31e743e","d9fc3e9f06ad410cd68513680a670644b3687ce745d131dc63173320e158f135","75e27df3834b3f4eecff998caf59c1e37bfeb6d6dc20ea6a614d701a6a35bdad","17e23091c304f3dcfddfcfc55a690e93d0471bc476b9a2ad573ea45bc3b06eba","1d4698faebcfff50e9ee97f3ad40d88f40b60dcbc5d8ff5a9240ebee0a4e350f","afab8b99654c53b485f8901b68cd88f515f458c8fb2b9f7d41b301c92c6d8594","fb45540532678c427d0d26ac21611224f799b30af59289a7a1e7af31dc6ae140","50704fa020858a5691982b1008b0f0d5eff91ecc73bc249ab69d682268fea1e4","68c4fa371d6161b634dc9355b8e70bc825718b1764bf96ae3a8f00674736f067","7d37fb92d2573eab5a92ef049d6277da9e20abe649ae036e09a34e56d60b5dbe","3220514c5392f74be0d33eae19f63ec64bc34b1b01bd6169b1fd200285d747b0","f5f8a5d787d7eb7d55b2054466e64ff4b719e2a1532955f8a7369c7d7be53359","a1d060125ba09540e09ae4443f3907ad0a2dfcbb40f1edafa49905ac76e6e592","9e5c2a3f70d5b2be9fc1697da6afb903fd27dbb7f4833e4668358eab262cfb82","d7d6ac3e56dc2a31f61c4fc916baf4eaba961c988b3f4e9680437132df07e6f5","8083ccba13b7af18da5930fccfa39326f3f24240fde90206894ad09201f3a698","ad8b54eaaecffa95bbb5aec03303555cf1a8151dd78bf07fa7e0248f098e4f04","8255f819968376106d04f7a63125764e2fb0ee1f747e083f00666432d3be23a8","b41e56007208d2f2ac6f992b060e154553db6fab2c47ab872c334628742fd2f1","3bc7c18eae934eb7ce98762c9394fb3a18969b0ba1d718f9105d51f4ca3aac5d","1fa962267d135dbffb905257d08f20fe6db07cf7e78df3bc46353b4378593864","8993f1f1c7e7cbdf328f5e2372a4e60e0d7b928592ce0ce050e75f089c4e5ac0","0a2aaf696b6980c6ae95a04d88763be5421e36c82a25f93cc4686434daa0c08d","3b6c358429fa9eb9ad01e7b539f02bcc9c133b435d2ef563d21aa394e2082365","ddb18dd9cf0b5602390c2660676fc9b114bcbd37b3b52d8a725e23193490768a","841b6751d0eab0f62dd408fd1068455c173dfd5a8a8304c782e9d827fc926c90","fd804d63cc346ca9f02e56da7eca8372216ebb7b6aa9e3ace7e6468ffc0f2448","25ceca73cf34a271938c5453bfcd8bca43c4f2dc865cd9c7360f8d9be7469d2f","ee559d35621ddeb286aeba52cb452fa9f9b922f1aa3ef7a3c4ebf9f295cf330a","ab2a23acac3394793678cf89ec4deaa28fd9cc62a13d6f434bd37f5a601d3064","bfd3847505be15831cea6fd10f75f4ae5a0d5799cfd3a7932f8fa684f4e97326","1aeff60cd98f3b1c80833eadee10e9152f11296936b99858553bc944bd8b4d67","73414ffe0084948658c6dd25c9a1b7ef953bfbe1521e8e705d099ae2880e6d29","4e7948d066662e422ad711b54575edd89385d7642efb6f1f104f9de274fd310e","a44cf59352e81a3da452c4bc59daaf47879fcdc590784031547a31ab2ed1be54","78539a4f99cf4b0cac92f288a0c166e702a31189233893a392e3a097c27044eb","628640f719c7de911549c6586c53d6755f2f36282359583acfc146e26aaf9e39","b0f0d971d5798c2722c0e21009976ad0818dde4e5ee6b9768ba59f214553e749","b24d478abcc2be92cc92201628f99b251223cfa111de7fbaf0f0046ddfae0333","856364116f126f3c001688ec86b7729b370ed98d975018d23a7cfc53edc3f416","c60a4d781dcac1e284e9fce64b492c365d2f40820644b584be971d25e94635a2","ec7993030cbcd4107cdbe8d0ae494a0dcf111ac4c78e0f53e33206df23f16f25","733f50b49ffe63e50364cb5d10e63cdc5b0c62612b756a9cb535e10387b3da9a","06d81e7de96f777e8edc92aa81f6c2a78061be1459c06b4e5670ca8180aabe6c","9d846ac068287209a809bc78c6badf1966793bdbae29c40fce8558402e6f8832","ebf73c57cf8a815dcd1407d706888d856d6bbacd34289f8640bef723132b8a19","af9e847e82d7bac2f08aa269114076d3691eafc2b0c1fcd8dc5ffa8caa65bf91","dd4bf11dbcbb30b504ca8e57ee594b3fd14674b95cf100a7833e6d92f37506ef","c6debb6cef57d1d3020160759e3ff94df73ad12cfb63d2e95164f67510b130be","4f1069cf7f39b463d55b09b1a481f6a06621848e3f187d961a8c0e829a81c9f5","c3877a8f388bf327b82444551dc904a29d5c995adc4fa0e8a3b3003f7ba7afbd","761840b4ef71d8d41e5319a26630d744c45130e3f98bc1811d90b8a1e21f1e51","6ea1289c78a31066418da06568e56bb24bf3e4b72ea564b6d0d385e2617f56b7","d26a0756957ea898dc14ffc43860e708be24d930e57a48a2f4f2c840973d2e80","2744dc4295e5be4fed2189e059568903b0ddf6cae98a9910a6661994b58c8456","2cb18d683b07f1acb07dce6782abb69d59ddf7ce68650ea9209eaf0f0a5d962a","b09af33f2e2b9d504e0883251a769c41fce1460f3a813e331a43643ca73a930c","12bbac4160deda6ed4007a8c5b7100eed7836ca8206f31ac077b50fcbe5d4a71","9f0df87ada77cd5f1feefe503ac00a079ad25587296152c2df62deea0ef48bdf","243c20d122b8c09e1e1313f1e5565e051b1d78785a05839c4206c161ece17471","49addacec8ed6dc3f8a1a658603dd60587f65de0766a9ad3b5caed7c19128e34","02842d4f7974cec394c9ce151e7854c19498cf2d7ef1400b795b0b53692f16cb","3b43e8777b63045468b4e03d68894de732ae3bc612550950582d01c434210a2f","b9df3dd9903d3766c2f8b8bc0e2bd21652fd28377da9c3da8ee579d2873c8296","0d7aa6efdcfc55c8815334bc9994c5adfff63934f5350999e2e5d500a2672dff","5d2c9a3f0455acb01ba4d853ca0696e1f9e85eec0c55060df3ceecbdb480ed23","c9820c9ef242fd5c38d0dae78fc7ae5d1a30deee89e800139f39e636d592f3ad","079c38eb70bc7d3ab6b00dfa11b402abba4b95f55175248631e136a465098101","2d338168b1e4b652efae44a0564ae25fc6abef81cf3587eecec752fac96c7068","c39440c0d8cfb91eabc38e5917624f1aafe0382556d40c9e13646e8fc13eeb9a","85b3b8807477b83ca4ccc6b4b44f1e8674a139120118d7a2854f3274392ccf40","465a921920ca7307f7d5b3e554ef73cc0b7c994064e8c96078a5c3a319833306","0e496ffaf759ebc230b2819eec1c0649ebdb9077fd153ebf3111cbc58ee2a994","482a3fdc1ac7359bb7316abbf7f0a9a49595277195517ffc80ddd58244f3ac5a","4a606d219723a9c851edcc3950baeb355feaf7e6796790832d828dbcedd03ef7","26cadd7a59ef711697f62c3ebe651ae2528d5044b0436e6709211d33a9ed496a","eddce6d8d0bf56d4a67843393287db084535320fff44cd509c8bbb34106910ea","9b27015df20d440fb2ef60002b710234def0280b8bab3bf63b8220e0b3bad722","7c7fe5459f0bddc5fd8027c91a2a761b54e32bd2726932f44a8989f0ec66bd1f","86c9775a28eaf88c61968b8b72eda6380001bb31fc7011d119a19a30a7cac550","c59aa8e4a970e828ed92048c2743dc9fbd006e66089f0886a4714cc1b95b5666","ab3d77742e5b21efb86322b958ca79c75234688772e6621dfb5bb6062b7425fb","f7b88ad68531bc1963c8ba7cb3aea62383b486926d7ea9bd55211bd8d675757a","6703a91db6544e859095816d960fc98042aad1ff9d19904c010e7401e61fa049","18321b56460880fb7dfb78eaa746abd135fed0e56b7053cfe39c49c442253237","1b016a20527c5e8fda73f27b9de2f6bb39a04cdf94e8c2bd74e82eefb446d8ef","f2a07ac453217f181b895abd59fb4e7c537271d216a015a871afaaba570124df","ec1bd5ecaa5e9af3830e9e20b4330fb69a57c4afcb6f4168ae610f76b0930cd0","41c3d2152fe37eea527984e356aac72301a62b8dc20c2c774ef68ad423ff3f82","e3a98dfdee8756f97daab84748e49ef96fd0f01d96972aa53e4c7fff7244cf4e","2a3e5e1f7a225cc138cbddb67dc226aec38116f18c07e66fd1906b3ff4d8cbd2","70d1ad7f784b9dd7f16b422f1c9e6a06dd2a68adb7d7c8516642d41fd5af0eae","d02b09f2b7c57dc674ae01968875e4ad41ec053845e41d8d9620892e9ec08862","94aa4a28e86888caa52d9e75280f80335ccec9e10d6f71be033273d2d2473cd7","70e516b28c0ee2c33926f1f57f3c35fa2a10b0f3135b925c7c66387f33ff1d0d","45179617df02d29f87020c1e963202a70a21d38cf3457db5a19164a9a55ce484","5b4870e0a603376dcb195151c9097b98a1195afa945f379bebdee8601811e91b","8b2ad83b0375886faf1c261d995603163f0bb94dbc44e0d50bd647cf61bd6ec7","8fe96b144b955f7e30e8b9b0f3e677553ba09e3071c53808efbb90526fcd6338","18f3e399002a8c89c03625e55bde2c14ca598b0ebc4c64c00c45ef86ec00a499","1051926ac6ff71cb6a6b51a9a42acc5e41687df6205f639156a69039dc8c8589","ac1a0f093cc060be217a4e1f381790fe98b38d1b890c9f28085066daead45482","a0618c93db609e91300acc96d30f367f5b72c5330c4629d079ea788cb001568b","6dc081018921ffcc58b02bd4ec907b79efce3cf1718d1a42b8619146a03f5ce2","6d4b42977b00d20c9aea059daba11a07e394e8e6f97877791b8230cde04d85bd","e6ce2d79afd6c8b2755a84d7432df45beab61658310da186f9bf994b1a495c81","321a52b305db2f5975c7b692432bdcd9170dd26e93ca465b506d1391cefcfdf1","fcb456505653ce634e7eeba571611e73121fd2d32a944e76b62f597276d6312e","68c8f209912bc990afbf3d82ba818029037d3a2a444430588bb050277aa310e4","947012293a812a8950a3b89f622ef22cfef3d29c8fff74f1e03c6dad7170db29","da3fdbb320bb16cb6f287777bdf520c32b2c2e07eae4e0aeac06d8ff575c4ca2","fd09d6472dcec54d8d5f05523e7facb153215391a9d559760ee3fe029f78bba3","1a73351dc72a13df66f404cb4ee1c1b26ecb2c0edf31f7f510d1b7636c4100a5","656546b5a19b01640d42e52d02bda1499a80c0b98ee728b5576f5a55f3705206","70b587e7c9186439733f61bf7ffa8db2378f738eee57105da49a921f4724b1c5","f49db1570fe037a895cbbedaa1df7801480cda6c2b9860716d1e6d4b743535d6","1333ca83b9ded730f4b22b7db853f241d15e63f77715c55653f27cdcd7107cf3","3f934290b3c7f48e64bfc9bbe45cd2f1afef97c5bc2ee503157443acd6e3a682","fe36118e28bfca2484c0bae56d8ab39092f56a6ab298916d04f36b609a293d10","7f38c28d0e3140804ba54975d95dd0ffe0ac5daa0818c7d0e91ee51e756c257b","13a40da3a5679d17f768ff03ab60d34a04370bec36c61700224969ad0c972191","89af99e8f86e2c17214aca2f41b95bdeb4f8ba6dcf896d0fe92454f13a653eab","6167bf325c1efbdafa2fbb5b2d82e1a6d42cf1840443e719c22e13af7921a7ee","39e6915e3b21b5accc80f8a8c588d9e29061cbf7a56b76b9160ec9e50118a30b","1d588c973063e10d1dbb66f08da518a4cedf23a3af2e0a6096e0cacef5ddf4b3","3f05a2441b478cbf272c32d00ab0a5e067d95982e2828d1beb877fde66f5ec6d","178c91d6edafa467da0e454f5a248c4c08736c7e71ed52d803fbfb2b8bb80819","64c2982ab9836edee3f987bcc4dface6d6773fe039f3357dbf87149110540f9d","7535617970e904c01ab24e3aabd5a30e78d3030e22e99c934918e79f7c46477c","b7d32c8c3e9cabb3fcd2827916fd30fc691d2c7e2fb82b12d1171651d5fcc349","89ba4f477f914fb644ee3cf1656815a3a50319360fdc9a4b100c5fb3fded9ee4","fb5618b77634fa5ee5437567b376b8d7700547c2e32461f62125f946aba97bbe","a28522d6e1b1603550d13fdad9b137df4c3b4f3da4dcfa43d8ff65827cc43064","4b458a25c0cf505c6cf0fc1d0c7fa0ceef1f13d91ca1feeb57635f87e9c06b50","e0f7fa50479cde8ef4d2e2e0118ddebbf56768b71ab6c8cabaa5a9a2bc1851bb","8e747b1dd6902c590d43ed20b64d0a4e5738eecd709bf4b64f9e7b4efcbc274c","48ddc4596f144217a71bf2e12f3b4347ca20858de2b8f5c49a910bcacbbb0fc9","2d4c086a634af71c100ece587e61da11fb1440dfbf1ca7466fe60424ee32332d","4f21ef338f16cd6dd9754cef2dedef16d766989db05cfb5d9e376435e8bdef60","f7a704dcc3d9d0fdf79efe5a95f3b54ca84972567dd0a98103a8bc84c264654f","f7357f76b85e98242f5cfbf56db11003963a05379a44e1e8cee31005490a466a","de9c5f1c86bad591e83f88a4fd3ffd53484ca6523484b621945c3b4bf8fd8282","a1a31683b3c38c0a8c8504c4fbceb5b001f28cd049ac7d1230f6cae5ac9a98cb","51c6a9f00221574f6f808295eff9797bd2f86a334a3e321b08ba9bcdd22d7176","ce8b663951b14515fdcf18f25f261009bd50037bdc640cbbe4ef8c42da9b8cbc","6419718dfadc208dc537ed5d4e7d0030928808ae461e15b4064f8e7122c7d491","cfb166e39bdbd2145a02a0f588734b49074b03720defd20bfb0ed806658d5ad8","be7524a8b6975195dd744202c3d44f78755f15f21b09b8630fbbc8b7dcc5d55d","cf354a461061c90851293b95c431585aeb0268a7daa8fd942f9eecdf63da52f6","6f5689da9c05292cc9f0b1438fc580e655a5449f91dfc98382d54983295ab309","5574ec296b13107e53df7d00d9d109616fcba13a57f60ad99e94f10cc9fe1849","576151e340ebf82ea62c1edbc351e22fbdb90f6e80630b1bf151f28cd94a699b","15247a1ebdf707112bc580d4730b471439d1ebc517bf3f9628e6f0eaa2c5a3a4","ff61a1ecf282e0ec38f19c915cfe497f5d4c2f9deb9d12c1f7964139e3e8dfc7","fb159af11c6479b14229bf620e93e90d2d07119c9b4509e62bdd1fed5740e11a","450a08c443ab1264f6f39e3b5e445f71308537db79059ba052a7952f04963870","fa1d7c07da3f750640ee3f6428cce6a4d513b805bc075b6cb91e882fcfb142a8","ee8874d2c4e1fdd59c06c09b8486eb4291e489b97480458128e69ce4c56b77c8","837a48123464704cf6e761695d636596d5753f1672b1fa9f669ea1fff0bd8c68","35acd0492b07aa6a38e37e38768c85dcf42af539e244aeb3fcb31bccde6e163b","a28a96f20f04001f35f1eb6d7ec51703e1639ea468672baf3d14e1f5773b1662","501b8dbcd2c91a7c55e6e8995d82812928d6a1695f5487e3d95314c5949c1fb5","519f063e7feb03f9cdd09a18d71c2208924c1c79ff0f86f308cf39569ad63c10","8644cf075225922b5a94f7c5c2f15692a7bf62ffab161c5a4696ab634162cbd2","54660fe2bfc56d6e34d73b9072bc487226f5b70cc42d96d53044de225ae96bc4","5f572f4f1253ed1edad6e4e8f71a9f0a2bcb559ae3b87d90c6a90aa380f0281e","9e249a50690305975e209fc31e5ff365de59a8004ae977f68636406e6135aec7","7b4dcfa759db582100a8855f18e77e8f3da21f8aaae67f1b5f0afc67528f8a3c","70bad2ea53d2cd48110826e086ed087119bcb1ca9deb94d22900e34ef2be241c","d7be24f01b83bc6df55551c07bc4ca531e851ac9ec17054935f50421b7711883","58b843250176fdf8b5177b9d278049b129a2321128d66488d077b550fb591f26","5190dc7b8c14397b22f23b5d108adc40d480116e9ccc5bd3820cb2e2d70203b6","9b1f27838062987f4dc462f2378cbb7f41f6484e5302c43af6da07c69e78e1bd","d77e96635188cf9756a709d4f4639c7b5dc44c3a77ba3d7f8b7728d6c93edc57","16dcbde3649341014331c76e0646fcbf2ddeced5ffaf9deb601c70f13d935152","ee63f62fa2230645066759bc83ce71ca659f165dd80996aae36b1e575817381c","5359308ee43896deaf8efcfa69bf43d830b791e94cbc7fad9929ab18283e9d99","cde523c9432d28fe1534edcfebd1a23be0dc865f22453bbe14055052d8b4a973","e79a9120b8bb70271f4e345709ad772b57aaa658eb7869623b56df23450ab85a","e89f51dc5a08de0e2396cecfcf4e92fd4425d7f561b8a097f002a3c27b3ca070","01224e9f60768ebe80eaf82017b1345bfcff24d21261506f9541881af3d45df9","46359fde56d5928befd012f84440b7e7c70fce894ed9492a9d7460624f7ab202","25d18d60c173b1da295939ec11bbb6a7a292799b1c344809a07b6d0fa666d1ad","d82030a83ad19861340f9f5a6fa4128116389c08525528383b2fd8ffc139f169","d97a81308f71836c71bd9ec35d34a255725f0f160858ddf0d60e482a33a841d3","bd09fe811fba6896f806e5eeb359a35776464cd2e298b846e0146c6922bae933","e720ab39136bf4b7a42e1080613a3e81ed766e5cd36f34ce8f244ffcf084d459","5a85980b22bba2e5536381cd34476678cb8b88ea80eba84f861a68e3799bb963","7ce2a32d8f2aeea20d51b9f1816fe6242fd6d4c6a469b66de8d8a07bdd33817b","76452a8a9d3a16ab0f03082845a953d62016a734148390af34eef91ed0a888e4","cd764d88dce007ee738445a2779c8e0c3d48d163c0455da73b46ad307c085e3e","176413f8146ecda2030536ac18c3137e87f368854f0dc21a34e2694c308cbf2a","a3fcbb87813546e43dc75d2a84f31f409e859af0730c0980195efd70ba45394b","ee3ecd46888e661f0511170195afcdeb3251d70f0563abec488a7df0267701d2","f776082b45a4b8c91ce3f596f9989d52bbd291bfbeb2e3d7f01033cc27347d32","d027846247aff7dd1875b36c1e415771f03e9242feab5917949758d16bb773a6","743c464591b420fc225f15e06eb9b8fc9c013461412a1d8210f51fa389dbf6f5","f46b148b16c414eb059462e46400fdfa31f2256d83d83733ffbaa85bdc9d4c31","ba46e6217f3a3ae9abfd34dc47082cbc2436cd457206154711680331223f6487","6e1f18b37849bc473619b78b8d18d138371c5356dd3bf57563446e2a8c7587b6","7e37cf6819cc6084d5b95d3fa8d16d5b82064ec969dd6f5592ffc3637cff4b60","1c029dd4a8177317737c042a546bbfab25a8663b5971e0501e27c380829e7d5c","60eaec12a1a7c89f62a6130e8eb1edf60ef95ee3ae325c24c09f804fae934d7b","dfb7494d8d49c242f90eea239675ddf03e0abcf652de7a825d733bb7f8d1c35c","31aebba7229fe1abd1136800cc3adcefa68a7bb65a428692cf663161b3666539","67aa7914d11e5aec2a7c5eb960b34de8cee6e6f7e4be6456e342b70fa3fb01bf","eed6d5eb7b3d4be89a9c05adb5dba06ffcea09d9ce410483a1451d4c0f7aaf36","21c288b4f175c325d1a948bbeb712bd3cdf7ebfd3c0c213ac750becba3f036d0","8091d6b0c99a1bd9a1a1120ca06fdfd638888345cd84d22f48b24add9a2096fd","9a75d5eb60897d9892859cabe07709c01476b0d658ed9ceb6ef45d893f92af79","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","13b2f9a8ba5599ae1c9a37cb3d58e6b98a4b8aaaeab30422442a33018f0c4863",{"version":"ba42bbfc7070fc2e9edd802e14158874d7eecdf82c827b31c8b7e8653bcc7384","affectsGlobalScope":true},"c494af8594b321dc4dbdc3c63aad2283bcfc8dd8315f133ec3ec2d85fa191852","2b997e640f5cff24e76a54a8fec175687c5412572da045c0707e9b5843dbfd0d","55e2c491415579f52da8cf671aeb70638ab87d3a1c46e0e2007e2145990ea24a","8ceb44e0a3b736efc8f72f09eeabf22af10d5d8f29313bbd3080318577b171e1","4d89c1e74ec2406b884986c24f9e00b7620cc3ce7c937cc26951d0ddef97d5ae",{"version":"e8fdb859c29a31459198f02aa6eb4004957a9ef5d964cfb79004d906484115f6","signature":"40baffc67e9b58974d5ee26068e0591931cce0a1d9cf0f6cfe3e97308dec53bd"},"99003f77023e03becbb04f43501c5250015ab77082b16c35e361d68004f09a70","214d725cc1eefc9accacc60a7d0ae4dadeb2d135367a22b2f1f3ac970ed9320f","f9626664da536b1bc4d347aca0d4ee3a8a5ccb10b28d4798cf15b4a35cbfeb0d","b62df76d7763c6af6ac5377f959396bf31b99371c7fcf6559e01c007b58e7ebf","dcfbd5ef6550fadfacc3f057938a0de883402ae0780c97f919ac16809f3ee6d6","54becf8bf66bd49311b2b8c3a45339e37b53ae8874a2ee43b799f2a8b317df46","4543378e5944b0118e9f325d898ed21ee94a27adfbc5b33a94bb73738eb74b2d","a23e002b33b8d4487c7066a3c0b648f40d2af247a484b3ad3c4002a8e09bcc10","d8f33ccc8ac6780d07ff47aa7236c43b8be2930876a48418213c9c04105a7f56","3552e7fd6a1e5c73867ef3bf8280a07233486eb9bbc0e28aee55b610851e0231","44888bf677b7a1dad1f67c9e7d2b72b41b6d1d477299670330329b58b571e592","1588f8a805658385d624d74e0ac87223333833f0cae36b6d8bb8a877fd06fbec","d1986184a09a52db8228cb2bb2a61a8c05c9354e5b93cec8e2628d8579c892d7",{"version":"bf654c9a5c381db5a98d20ff66863a0c37822b296d84e204c5fc8d40350d7bf8","affectsGlobalScope":true},"aa5c4f9ed4f6fd5634baa501866c48001b20d3fc2b121c72f95b44fbb8f207ff","dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","e51e34b4d8bd97569a7101c1b77234f6a1272cbb5bd50ed649b1da3f71070300","75925c52e539a150d822acf3d43f41075d6c371215be27e0c81215a79a802fb4","556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","19fb2161edf60fbe73ee3650c1cee889df0525ed852eff2d5fa6e5480c132ae3","95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","3e0a34f7207431d967dc32d593d1cda0c23975e9484bc8895b39d96ffca4a0d8","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","b76275b4a94b85da9e4b6b1f8c2b619b996560f9e6030a454260240210a39dd8","acc248b90a16d95f2c53b598927967497ed4da2a7e6c9fc6006c5ed9dee25fd7","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","93b7325b49dfbf613d940ed0e471216657b2d77459dac34f1b5b1678f08f884c",{"version":"822db7948026a8ffcc3146b4b093126a9c1fe5beabc4012322fe3fd528c5dbb6","affectsGlobalScope":true},"e2b51a017c2f06a3bf5bb5ee5e5f406fdb05b0adafa7219a7394e8fb397fc9a9","151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","ed19da84b7dbf00952ad0b98ce5c194f1903bcf7c94d8103e8e0d63b271543ae","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","d852d6282c8dc8156d26d6bda83ab4bde51fee05ba2fe0ecdc165ddda009d3ee",{"version":"b327b3bc080c2bd8a78229e8dd4b81dbc2beae52368a351449e43ad42368e1e5","affectsGlobalScope":true},{"version":"fbbc13a434fbb6093f8feb2332cbe9c5dbcd893a1c3be2d6cf457e6e3ec105d7","affectsGlobalScope":true},"3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6",{"version":"dc49082466ff7e61cfbaf146f106a59274dbb95f726ed1e22a54375f82992953","affectsGlobalScope":true},"9b7ecef2a99fc603b20ce8524a3459d260fa8b128f4dd71c8718e93ded32023d","fe2cd61bbf91d54ff07a1cd0174dd9338c1fd3f6069ae2a6119136aef817a9c8","9f96df319156b4debf90395c415c53f0080a4d9db97966fe69396760217413e0","7c076b2d16b2254072943e10999e08a5a650e0c6621ba04a501fc9e3f03f7371","bca166983a1b4bea5aff7ac14949ed25c065d0a006990136b75c3f4690c4e93c","577eb25bca27a3a4ddd46b57f28cd83211501bfbc4786bd65639b951f20cff82","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","11ef35fa1e8aef8229ce6b62ac1a6a0761d1d4bb4de1538bce6d10762a919139","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","70c61ff569aabdf2b36220da6c06caaa27e45cd7acac81a1966ab4ee2eadc4f2","905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab",{"version":"7db7a68c87f2a758e3edeeb442ae2422c1525b5d85ad80608594f749620cd18d","affectsGlobalScope":true},"d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190",{"version":"6ff2ca51e2c9d88d6d904c481879b12ec0cad2a69b88e220859a52207444773b","affectsGlobalScope":true},"cc2dc362fc50995684e9f7e9b38ad9bdf19e74919294a694cbc05392352cad7d","abef3012ae70d98baa449664e9dda50c96fc68b0fd11a592d6590d85bb89cd10","456e83839c811cedebb65c8b05027120336b3bd6920259817d728ffc52d41e2f","ea79d9641e700b2b4a04a857ed1ef692c4caf988017fbabd64c4111f7c287673","0a90b9435b81f45b88c5fb8d30e85b77d3508eb0760dc40b9fb825fd29f92375","8cd7362102d928e21b291a013f80fc68a038d4506d26ea9948c676e3fa1110d9","90f6830fb380f4d2b69df018343ae80ce92991e85a0d7be8d214c643b39d1175","1bfe6db4f3dffacd1da82748cb8f0acec04e8a4d7bd36c09573d5d80a7dec28b","6a8d6deca8ec4250630fea4e5f23bd9bf0face98739ccd22e08a17173117155b","a1d51fd5a8f9c1c038799a43c038397ca3ed99ee73cc0b0aada897e7cc8aca91","6c9708ae545db5f8deb8ef774d412fd1b46adade794664d7c6cfd0a1f6dfd64f","9d14fcf0b69094271127c7b6acb36987be5d1bffa4eb948359549f040fb50349","e3a5287471fb08f053c06fd998632792aa5f022e45278f1e6dd55fb2fa9e7362","28a6c8eeb48e165920067b9193555649fc43c2a28c450f23f622e5eb043d9463","1147c3efa5a256bcd6a3d2cfaf764185b7120bf985f8412d9bae596a0348f77b","67aee88594abc44cd58820dea2ed1a9d373c1c2a59941234e4abe797464bc4da","65d8bfb66a25ff068ea4ce271174b0b4c35aee664b349db941a5688f0e6d621d","f8cb94e0dffd21068a952754ec67d01d35a15fa61bd3af951f949e9b8bde7976","9928c4f48144f7d79716955310c857518d21ada0fcb7017fbf5921e547320cb8","3c7ef314f6691dbba43cb1310a82d610ea648cc4498cd685c3e25442ea2d98a0","25c57e8012a90bcd97570e155c600fa092cd5dbbfd8fffefd8150d2fef2c939b","4bdf362501ecd30c2037b91dda8d091fa2dd9b13990d0718bddb9e02919e35dc","fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377","5f2c582b9ef260cb9559a64221b38606378c1fabe17694592cdfe5975a6d7efa","660fa40695c7ca19a59fd09d31d495d952eee946e445a2c455ec63f255ec3050","224b63b6ec3ed8fbabc53e119550862acde02075f1f37dd8822255eee310d994","389303117a81e90897689e7adb4b53a062e68a6fe4067088fae9552907aa28c3",{"version":"d4c4fe14b23180acf25e4a68dc3bb9e5c38233dd3de12a4ab9569e636090ac9b","affectsGlobalScope":true},"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","82169f198ffdfc787fba368ccfad2b2d8ef3712f3c696df94ac13f6884bbbe2d","6503fb6addf62f9b10f8564d9869ad824565a914ec1ac3dd7d13da14a3f57036","23c77af9fdadb3569d425dbc7bbf06a118a4b02bd9db14b7abfafc3183d58bb6","f313731860257325f13351575f381fef333d4dfe30daf5a2e72f894208feea08","951b37f7d86f6012f09e6b35f1de57c69d75f16908cb0adaa56b93675ea0b853","3816fc03ffd9cbd1a7a3362a264756a4a1d547caabea50ca68303046be40e376","0c417b4ec46b88fb62a43ec00204700b560d01eb5677c7faa8ecd34610f096a8","13d29cdeb64e8496424edf42749bbb47de5e42d201cf958911a4638cbcffbd3f","0f9e381eecc5860f693c31fe463b3ca20a64ca9b8db0cf6208cd4a053f064809","95902d5561c6aac5dfc40568a12b0aca324037749dcd32a81f23423bfde69bab","5dfb2aca4136abdc5a2740f14be8134a6e6b66fd53470bb2e954e40f8abfaf3e","577463167dd69bd81f76697dfc3f7b22b77a6152f60a602a9218e52e3183ad67","b8396e9024d554b611cbe31a024b176ba7116063d19354b5a02dccd8f0118989","4b28e1c5bf88d891e07a1403358b81a51b3ba2eae1ffada51cca7476b5ac6407","7150ad575d28bf98fae321a1c0f10ad17b127927811f488ded6ff1d88d4244e5","8b155c4757d197969553de3762c8d23d5866710301de41e1b66b97c9ed867003","93733466609dd8bf72eace502a24ca7574bd073d934216e628f1b615c8d3cb3c","45e9228761aabcadb79c82fb3008523db334491525bdb8e74e0f26eaf7a4f7f4","aeacac2778c9821512b6b889da79ac31606a863610c8f28da1e483579627bf90","569fdb354062fc098a6a3ba93a029edf22d6fe480cf72b231b3c07832b2e7c97","bf9876e62fb7f4237deafab8c7444770ef6e82b4cad2d5dc768664ff340feeb2","6cf60e76d37faf0fbc2f80a873eab0fd545f6b1bf300e7f0823f956ddb3083e9","6adaa6103086f931e3eee20f0987e86e8879e9d13aa6bd6075ccfc58b9c5681c","ee0af0f2b8d3b4d0baf669f2ff6fcef4a8816a473c894cc7c905029f7505fed0","1af1f2c02132bafa25c4c4b7c415e0a59ba959d6db6bd1800a43fb5d943e3f77","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","75a1d650de8c40c8592be1ab5dfc83669f344cecab2155d3132277e82c9612e1","1b23c2aae14c17f361f6fcef69be7a298f47c27724c9a1f891ea52eeea0a9f7f","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","626bccaba2f61f03abe558a39501631565389a748bc47dd52b305c80176333c1","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","0d65b782b1a9b5891802ef2022c78481b19dfe133ba8d9f7596fe1320314342d","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","0b2eeeefff2fbf1ac7d1a1790920b0680c6ebc7ce1d8282704157051ff1ca6ee","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","69efb7086efe4a5cceb04d77ebaa356366c82c04a29fd7f0ca55546d054c27de","ebe77545478bf39a23059a3b0ea03d2c0e502d9c8e1122015e19213cd0815097","ad8c69f4a471cafdf093acdcdf3b444ae56b227b92024ae45f8c9c9c8be8afcc","71a6149f67a64b55baeddb83e5254e9e017c80c15a260d6f6b3a12deb3a575ed","6c881abb4a0e7579a9d5b63a7e4da3d98b094adf0f1d1fa75bbe433b9f3d7c27","66d6844502d7764a8e02b632228c4c5a95f7cac7bce1a0db07f0dcc377d3755b","2e1be3fee9ccef82555b2f039e8e100e0a176ee2d18b0de95e7da6a61e1e360a","5c48fc6096e361e639c1d0a9f7f066242bf757ace84843582d29c6813563055a","bebac54845e03ea36044fab99b5a51266cec2492fcd8a95bde6d5527a3174732","ef141fd0ac854fc92cbc9a13cd25a0ac87b3961f70d516f191bb3e29d3b183fe","a90c6f5554bd74f63aaf03751e6b79d01a457b59339b03d308c16af8f266cf47","7d5d42c18c62ef137b8830b7de8432b466c8f4d93fa8476ac36d2f69114fad1e","484faf958ae025f8d1ce6cb9c75e12c2148190efc22151299d14d10e3601cbba","66ddf54cc3d66cdab1b69e6879af9876bbc30030f85e51ba8a73223339e65b85","734166f6ae00b52512304c153644963fd93cd152620231ea7a0560802c968d28","15ce0cfa537ada25e07633617a993a8e02827939c2128d39c010739f28a0379c","a3868158152cc946c27c5e7b7803537c14cada9bb442c96c759c66b0d01f9eca","00ee901c4135af0d5688bee246d1e42ef7421cec93c32587e4814f744b95e2e8",{"version":"9e54f0ccc9801094fbbfd8691b2ec7afd92ade60e678fc093913b6a664152277","affectsGlobalScope":true},"0e3a729fd8d4c71378181e0bca5d12d47e57bc999cfffa7b834e402d625a8969",{"version":"efd32b1ab5e3897f64ed3d0f236657c3c9c7bcc669449e608ebee1ad9dbe396a","affectsGlobalScope":true},"7fb3279c4bf36d993b1e8b339cded5908f7b2ec1b6e0ac2feaa842b5b6b143f1","234b97ac9af46707f2315ff395a9b340d37b7dbc8290d91f5d6bd97189d220f3",{"version":"cf895c11216351b95000838df8f0e1ccfa664cec6971dccb7293cb3860cdd056","affectsGlobalScope":true},{"version":"c6d8434b402c2a47c6d04d59030d9aad99d7fd02eebbb89d1ed5adb8d301299a","affectsGlobalScope":true},"df508df6a1aadae4499d327c2360816978e28839560c044099e4acffcde5489d","56eb3ae5f74c240c888790fdc1b55604f1071348f3fa31ade23ad7f7262bcf49","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","58a3914b1cce4560d9ad6eee2b716caaa030eda0a90b21ca2457ea9e2783eaa3","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57",{"version":"c52f3434c612909e966a81950639abe570b8d9b69ce8865bf352cb0648ff2bca","affectsGlobalScope":true},"f99a1e4b676d199deaa34945561a72bd9931858dac1e1cbecd5330af8022bd69","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","6e9aefa156c64bcd1c65800c5295156ac68c86fd81ccf0ea9a419a45d44ea029","4006c872e38a2c4e09c593bc0cdd32b7b4f5c4843910bea0def631c483fff6c5","ab6aa3a65d473871ee093e3b7b71ed0f9c69e07d1d4295f45c9efd91a771241d","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","58b63c0f3bfac04d639c31a9fe094089c0bdcc8cda7bc35f1f23828677aa7926","dc519f38cc0a40744efe2d6de2a0bcd858ea868f252f8b28f3de4163ec18b55b",{"version":"40bbeaccf39d6ad00da30e96553f0c4aa1b8a87535393c7fdf939170b639c95d","affectsGlobalScope":true},"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","9d74c7330800b325bb19cc8c1a153a612c080a60094e1ab6cfb6e39cf1b88c36","d9c5f8d21771758700d7b6eeef796700b99c643a5818195cf0d01bed98407df1","61f41da9aaa809e5142b1d849d4e70f3e09913a5cb32c629bf6e61ef27967ff7","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","b2f006ee835f315d01c43c0f5d9e9ad78a5870b380899877b32a33078d065dbd",{"version":"f2c969343d25c5fdd5f08445395e1cc25658d6e0b0ea3cf3b3cf5629cf6a64c7","affectsGlobalScope":true},"c6f28be53f555693f82834c5c1dc9353163af0cd672be541a344fce3f6e38001","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","d9f5e2cb6bce0d05a252e991b33e051f6385299b0dd18d842fc863b59173a18e"],"root":[[443,445],[1730,1749]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":4,"module":99,"skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[126,392,393,394,395,1826,1827,1828],[126,1826,1827,1828],[126,219,440,1735,1736,1738,1740,1741,1743,1745,1748,1826,1827,1828],[126,219,440,443,1735,1736,1738,1740,1741,1743,1745,1826,1827,1828],[76,126,219,1733,1737,1826,1827,1828],[76,126,219,414,1725,1729,1730,1733,1826,1827,1828],[126,219,437,1826,1827,1828],[76,126,219,1826,1827,1828],[76,126,219,1739,1826,1827,1828],[76,126,219,414,1826,1827,1828],[76,126,219,1742,1826,1827,1828],[76,126,219,1725,1730,1732,1826,1827,1828],[76,126,219,1729,1733,1826,1827,1828],[76,126,219,1733,1744,1826,1827,1828],[76,126,219,1725,1729,1733,1826,1827,1828],[76,126,219,1733,1734,1826,1827,1828],[76,126,219,414,1725,1729,1730,1731,1732,1733,1826,1827,1828],[76,126,219,1611,1725,1826,1827,1828],[76,126,219,1725,1826,1827,1828],[126,219,473,1333,1826,1827,1828],[126,441,442,443,1826,1827,1828],[83,126,1826,1827,1828],[86,126,1826,1827,1828],[87,92,126,1826,1827,1828],[88,98,99,106,115,125,126,1826,1827,1828],[88,89,98,106,126,1826,1827,1828],[90,126,1826,1827,1828],[91,92,99,107,126,1826,1827,1828],[92,115,122,126,1826,1827,1828],[93,95,98,106,126,1826,1827,1828],[94,126,1826,1827,1828],[95,96,126,1826,1827,1828],[97,98,126,1826,1827,1828],[98,126,1826,1827,1828],[98,99,100,115,125,126,1826,1827,1828],[98,99,100,115,118,126,1826,1827,1828],[126,130,1826,1827,1828],[101,106,115,125,126,1826,1827,1828],[98,99,101,102,106,115,122,125,126,1826,1827,1828],[101,103,115,122,125,126,1826,1827,1828],[83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,1826,1827,1828],[98,104,126,1826,1827,1828],[105,125,126,1826,1827,1828],[95,98,106,115,126,1826,1827,1828],[107,126,1826,1827,1828],[108,126,1826,1827,1828],[86,109,126,1826,1827,1828],[110,124,126,130,1826,1827,1828],[111,126,1826,1827,1828],[112,126,1826,1827,1828],[98,113,126,1826,1827,1828],[113,114,126,128,1826,1827,1828],[98,115,116,117,126,1826,1827,1828],[115,117,126,1826,1827,1828],[115,116,126,1826,1827,1828],[118,126,1826,1827,1828],[119,126,1826,1827,1828],[98,120,121,126,1826,1827,1828],[120,121,126,1826,1827,1828],[92,106,115,122,126,1826,1827,1828],[123,126,1826,1827,1828],[106,124,126,1826,1827,1828],[87,101,112,125,126,1826,1827,1828],[92,126,1826,1827,1828],[115,126,127,1826,1827,1828],[126,128,1826,1827,1828],[126,129,1826,1827,1828],[87,92,98,100,109,115,125,126,128,130,1826,1827,1828],[115,126,131,1826,1827,1828],[126,454,455,456,457,462,469,470,471,472,1826,1827,1828],[126,454,1826,1827,1828],[126,458,459,460,461,1826,1827,1828],[126,453,1826,1827,1828],[126,463,464,465,466,467,468,1826,1827,1828],[126,451,1826,1827,1828],[126,448,449,450,451,452,453,1826,1827,1828],[126,448,449,450,1826,1827,1828],[126,473,648,649,1826,1827,1828],[126,474,1826,1827,1828],[126,482,1826,1827,1828],[126,484,1826,1827,1828],[126,489,1826,1827,1828],[126,491,1826,1827,1828],[126,494,1826,1827,1828],[126,500,501,1826,1827,1828],[126,483,485,494,496,497,498,499,1826,1827,1828],[126,503,504,507,513,1826,1827,1828],[126,520,1826,1827,1828],[126,516,519,1826,1827,1828],[126,522,1826,1827,1828],[126,475,1826,1827,1828],[126,524,1826,1827,1828],[126,542,543,1826,1827,1828],[126,528,541,1826,1827,1828],[126,514,527,528,554,1826,1827,1828],[126,487,488,1826,1827,1828],[126,473,475,480,481,486,490,515,521,526,541,544,570,576,593,599,603,609,612,614,617,618,621,630,633,634,640,643,1826,1827,1828],[126,479,1826,1827,1828],[126,557,563,566,1826,1827,1828],[126,500,540,562,1826,1827,1828],[126,560,1826,1827,1828],[126,559,1826,1827,1828],[126,485,496,497,499,1826,1827,1828],[126,494,517,518,1826,1827,1828],[126,574,1826,1827,1828],[126,558,1826,1827,1828],[126,508,510,1826,1827,1828],[126,480,493,1826,1827,1828],[126,583,1826,1827,1828],[126,585,1826,1827,1828],[126,588,1826,1827,1828],[126,590,1826,1827,1828],[126,546,1826,1827,1828],[126,545,1826,1827,1828],[126,547,550,552,1826,1827,1828],[126,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,1826,1827,1828],[126,495,540,1826,1827,1828],[126,477,478,494,513,529,530,531,532,533,534,535,536,537,539,1826,1827,1828],[126,573,1826,1827,1828],[126,580,1826,1827,1828],[126,579,1826,1827,1828],[126,582,1826,1827,1828],[126,601,602,1826,1827,1828],[126,492,513,561,1826,1827,1828],[126,564,565,1826,1827,1828],[126,548,549,1826,1827,1828],[126,506,1826,1827,1828],[126,505,1826,1827,1828],[126,511,512,1826,1827,1828],[126,525,605,1826,1827,1828],[126,556,567,608,1826,1827,1828],[126,519,1826,1827,1828],[126,617,618,1826,1827,1828],[126,616,1826,1827,1828],[126,578,1826,1827,1828],[126,618,621,1826,1827,1828],[126,620,1826,1827,1828],[126,553,1826,1827,1828],[126,623,624,1826,1827,1828],[126,541,543,1826,1827,1828],[126,502,540,1826,1827,1828],[126,619,622,1826,1827,1828],[126,514,554,626,1826,1827,1828],[126,628,1826,1827,1828],[126,615,627,1826,1827,1828],[126,609,1826,1827,1828],[126,632,1826,1827,1828],[126,634,1826,1827,1828],[126,638,1826,1827,1828],[126,541,1826,1827,1828],[126,593,641,1826,1827,1828],[126,551,1826,1827,1828],[126,538,1826,1827,1828],[126,547,1826,1827,1828],[126,637,1826,1827,1828],[126,509,1826,1827,1828],[126,473,476,480,523,525,555,568,569,571,572,575,580,581,584,586,587,589,590,591,592,594,595,596,597,598,600,604,605,606,607,609,610,611,613,615,625,627,629,631,634,635,636,639,642,643,644,645,646,647,1826,1827,1828],[126,650,1826,1827,1828],[126,473,744,746,1826,1827,1828],[126,653,1826,1827,1828],[126,655,1826,1827,1828],[126,686,1826,1827,1828],[126,662,663,1826,1827,1828],[126,654,656,657,658,659,660,661,1826,1827,1828],[126,680,714,715,718,1826,1827,1828],[126,687,689,1826,1827,1828],[126,652,707,708,1826,1827,1828],[126,736,738,739,1826,1827,1828],[126,675,677,1826,1827,1828],[126,685,1826,1827,1828],[126,688,1826,1827,1828],[126,707,1826,1827,1828],[126,733,1826,1827,1828],[126,711,1826,1827,1828],[126,721,1826,1827,1828],[126,720,1826,1827,1828],[126,660,1826,1827,1828],[126,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,745,1826,1827,1828],[126,660,665,666,667,668,669,670,671,672,673,674,680,681,683,1826,1827,1828],[126,691,692,1826,1827,1828],[126,687,693,1826,1827,1828],[126,737,1826,1827,1828],[126,723,724,1826,1827,1828],[126,728,729,1826,1827,1828],[126,730,1826,1827,1828],[126,690,694,697,700,703,706,1826,1827,1828],[126,719,731,732,1826,1827,1828],[126,691,695,1826,1827,1828],[126,687,696,1826,1827,1828],[126,722,725,727,1826,1827,1828],[126,735,740,741,1826,1827,1828],[126,717,1826,1827,1828],[126,716,1826,1827,1828],[126,691,698,1826,1827,1828],[126,687,699,1826,1827,1828],[126,678,679,1826,1827,1828],[126,664,684,1826,1827,1828],[126,742,1826,1827,1828],[126,726,1826,1827,1828],[126,691,701,1826,1827,1828],[126,687,702,1826,1827,1828],[126,685,704,1826,1827,1828],[126,687,705,1826,1827,1828],[126,682,1826,1827,1828],[126,676,1826,1827,1828],[126,473,709,710,712,713,734,742,743,1826,1827,1828],[126,747,1826,1827,1828],[126,1753,1826,1827,1828],[126,1753,1754,1755,1756,1757,1826,1827,1828],[126,1753,1755,1826,1827,1828],[126,1752,1826,1827,1828],[98,101,125,126,133,1761,1762,1763,1826,1827,1828],[126,133,1826,1827,1828],[126,1767,1826,1827,1828],[76,126,1765,1826,1827,1828],[99,126,133,1826,1827,1828],[98,126,133,1773,1826,1827,1828],[126,1778,1826,1827,1828],[126,1780,1786,1826,1827,1828],[126,1781,1782,1783,1784,1785,1826,1827,1828],[126,1786,1826,1827,1828],[126,1789,1826,1827,1828],[126,1790,1826,1827,1828],[126,1795,1799,1826,1827,1828],[126,1821,1826,1827,1828],[126,1805,1808,1815,1816,1817,1818,1826,1827,1828],[126,1808,1811,1819,1826,1827,1828],[126,1805,1808,1811,1819,1826,1827,1828],[126,1805,1808,1811,1815,1816,1818,1819,1820,1826,1827,1828],[98,126,128,133,1824,1825,1827,1828],[126,1826,1827],[126,1826,1828],[98,126,133,1826,1827,1828],[126,1826,1827,1828,1853],[126,1826,1827,1828,1838],[126,1826,1827,1828,1842,1843,1844],[126,1826,1827,1828,1841],[126,1826,1827,1828,1843],[126,1826,1827,1828,1832,1839,1840,1845,1848,1850,1851,1852],[126,1826,1827,1828,1840,1846,1847,1853],[126,1826,1827,1828,1846,1849],[126,1826,1827,1828,1840,1841,1846,1853],[126,1826,1827,1828,1840,1853],[126,1826,1827,1828,1834,1835,1836,1837],[101,125,126,133,1826,1827,1828,1859,1860],[101,115,126,133,1826,1827,1828],[126,1823,1826,1827,1828],[126,1824,1826,1827,1828],[76,126,1786,1826,1827,1828],[76,126,1826,1827,1828,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884],[76,126,1826,1827,1828,1869,1885],[76,126,1826,1827,1828],[76,126,1826,1827,1828,1885],[76,126,136,138,1826,1827,1828],[76,126,136,137,1826,1827,1828],[76,126,349,1826,1827,1828],[126,1826,1827,1828,1889],[76,126,1826,1827,1828,1886,1887,1888,1889,1890],[126,1826,1827,1828,1887,1891],[76,126,1826,1827,1828,1892],[76,80,126,135,387,434,1826,1827,1828],[76,80,126,134,387,434,1826,1827,1828],[74,75,126,1826,1827,1828],[88,101,125,126,133,1826,1827,1828],[126,1826,1827,1828,1900,1939],[126,1826,1827,1828,1900,1924,1939],[126,1826,1827,1828,1939],[126,1826,1827,1828,1900],[126,1826,1827,1828,1900,1925,1939],[126,1826,1827,1828,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938],[126,1826,1827,1828,1925,1939],[115,126,131,133,1826,1827,1828,1946],[98,115,126,133,1826,1827,1828],[126,1800,1826,1827,1828],[126,1826,1827,1828,1949],[126,133,1826,1827,1828,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965],[126,1826,1827,1828,1954,1955,1964],[126,1826,1827,1828,1955,1964],[126,1826,1827,1828,1940,1954,1955,1964],[126,1826,1827,1828,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1965],[126,1826,1827,1828,1955],[92,126,1826,1827,1828,1954,1964],[92,126,133,1826,1827,1828,1945,1949,1950,1953,1966],[126,1826,1827,1828,1970],[126,473,651,748,776,836,849,1025,1119,1129,1186,1210,1826,1827,1828],[126,473,748,776,836,849,853,857,900,902,932,945,946,948,949,952,957,958,961,963,964,966,967,968,969,971,972,973,974,975,977,981,982,983,984,986,987,988,990,992,1002,1004,1006,1008,1011,1012,1013,1016,1019,1020,1021,1022,1023,1024,1212,1826,1827,1828],[126,473,1309,1331,1826,1827,1828],[126,1310,1826,1827,1828],[126,1215,1826,1827,1828],[126,1217,1826,1827,1828],[126,1312,1826,1827,1828],[126,1222,1826,1827,1828],[126,1248,1826,1827,1828],[126,1224,1225,1826,1827,1828],[126,1216,1218,1219,1220,1221,1222,1223,1826,1827,1828],[126,1242,1276,1277,1280,1826,1827,1828],[126,1249,1251,1826,1827,1828],[126,1247,1317,1826,1827,1828],[126,1281,1305,1316,1317,1826,1827,1828],[126,1247,1269,1271,1273,1826,1827,1828],[126,1224,1246,1324,1826,1827,1828],[126,1322,1826,1827,1828],[126,1321,1826,1827,1828],[126,1320,1826,1827,1828],[126,1237,1239,1826,1827,1828],[126,1247,1826,1827,1828],[126,1250,1826,1827,1828],[126,1311,1314,1826,1827,1828],[126,1269,1826,1827,1828],[126,1295,1826,1827,1828],[126,1283,1826,1827,1828],[126,1282,1826,1827,1828],[126,1284,1287,1289,1826,1827,1828],[126,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1826,1827,1828],[126,1246,1315,1826,1827,1828],[126,1222,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1242,1243,1245,1826,1827,1828],[126,1253,1254,1826,1827,1828],[126,1249,1255,1826,1827,1828],[126,1242,1313,1323,1826,1827,1828],[126,1285,1286,1826,1827,1828],[126,1290,1291,1826,1827,1828],[126,1292,1826,1827,1828],[126,1252,1256,1259,1262,1265,1268,1826,1827,1828],[126,1281,1293,1294,1826,1827,1828],[126,1253,1257,1826,1827,1828],[126,1249,1258,1826,1827,1828],[126,1279,1826,1827,1828],[126,1278,1826,1827,1828],[126,1253,1260,1826,1827,1828],[126,1249,1261,1826,1827,1828],[126,1240,1241,1826,1827,1828],[126,1248,1271,1826,1827,1828],[126,1270,1826,1827,1828],[126,1297,1826,1827,1828],[126,1248,1273,1826,1827,1828],[126,1272,1826,1827,1828],[126,1304,1826,1827,1828],[126,1301,1302,1826,1827,1828],[126,1226,1246,1826,1827,1828],[126,1299,1300,1826,1827,1828],[126,1281,1294,1305,1826,1827,1828],[126,1307,1826,1827,1828],[126,1298,1306,1826,1827,1828],[126,1328,1329,1826,1827,1828],[126,1288,1826,1827,1828],[126,1253,1263,1826,1827,1828],[126,1249,1264,1826,1827,1828],[126,1247,1266,1826,1827,1828],[126,1249,1267,1826,1827,1828],[126,1244,1826,1827,1828],[126,1238,1826,1827,1828],[126,473,1274,1275,1296,1298,1303,1306,1308,1826,1827,1828],[126,1213,1826,1827,1828],[126,1332,1826,1827,1828],[126,473,772,774,1826,1827,1828],[126,754,755,760,1826,1827,1828],[126,750,752,753,1826,1827,1828],[126,763,764,1826,1827,1828],[126,766,1826,1827,1828],[126,763,765,1826,1827,1828],[126,757,758,1826,1827,1828],[126,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,773,1826,1827,1828],[126,761,1826,1827,1828],[126,751,1826,1827,1828],[126,756,759,1826,1827,1828],[126,473,761,762,767,768,769,770,771,1826,1827,1828],[126,775,1826,1827,1828],[126,219,1191,1192,1197,1826,1827,1828],[126,219,1187,1189,1190,1826,1827,1828],[126,219,1826,1827,1828],[126,219,1200,1201,1826,1827,1828],[126,219,1203,1826,1827,1828],[126,219,1200,1202,1826,1827,1828],[126,219,1194,1195,1826,1827,1828],[126,219,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1826,1827,1828],[126,219,1198,1826,1827,1828],[126,219,1188,1826,1827,1828],[126,219,1193,1196,1826,1827,1828],[126,473,832,834,1826,1827,1828],[126,777,778,1826,1827,1828],[126,796,1826,1827,1828],[126,780,1826,1827,1828],[126,782,1826,1827,1828],[126,784,1826,1827,1828],[126,786,1826,1827,1828],[126,788,1826,1827,1828],[126,790,1826,1827,1828],[126,792,1826,1827,1828],[126,794,1826,1827,1828],[126,796,797,1826,1827,1828],[126,799,1826,1827,1828],[126,801,1826,1827,1828],[126,803,1826,1827,1828],[126,806,1826,1827,1828],[126,808,1826,1827,1828],[126,810,1826,1827,1828],[126,811,1826,1827,1828],[126,814,1826,1827,1828],[126,813,1826,1827,1828],[126,817,819,821,1826,1827,1828],[126,824,826,828,1826,1827,1828],[126,830,1826,1827,1828],[126,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,833,1826,1827,1828],[126,816,1826,1827,1828],[126,818,1826,1827,1828],[126,820,1826,1827,1828],[126,823,1826,1827,1828],[126,825,1826,1827,1828],[126,827,1826,1827,1828],[126,784,796,1826,1827,1828],[126,473,779,781,783,785,787,789,791,793,795,798,800,802,804,805,807,809,812,815,822,829,831,1826,1827,1828],[126,835,1826,1827,1828],[126,219,1144,1184,1826,1827,1828],[126,219,1131,1826,1827,1828],[126,219,1132,1826,1827,1828],[126,219,1133,1826,1827,1828],[126,219,1130,1826,1827,1828],[126,219,1134,1826,1827,1828],[126,219,1135,1826,1827,1828],[126,219,1136,1826,1827,1828],[126,219,1137,1826,1827,1828],[126,219,1138,1826,1827,1828],[126,219,1131,1139,1826,1827,1828],[126,219,1140,1826,1827,1828],[126,219,1141,1826,1827,1828],[126,219,1142,1826,1827,1828],[126,219,1159,1826,1827,1828],[126,219,1161,1826,1827,1828],[126,219,1163,1826,1827,1828],[126,219,1164,1826,1827,1828],[126,219,1167,1826,1827,1828],[126,219,1166,1826,1827,1828],[126,219,1170,1172,1174,1826,1827,1828],[126,219,1177,1179,1181,1826,1827,1828],[126,219,1143,1826,1827,1828],[126,219,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1826,1827,1828],[126,219,1169,1826,1827,1828],[126,219,1171,1826,1827,1828],[126,219,1173,1826,1827,1828],[126,219,1176,1826,1827,1828],[126,219,1178,1826,1827,1828],[126,219,1180,1826,1827,1828],[126,219,1130,1131,1826,1827,1828],[126,473,845,847,1826,1827,1828],[126,840,1826,1827,1828],[126,837,838,839,840,841,842,843,844,846,1826,1827,1828],[126,841,842,1826,1827,1828],[126,473,837,838,839,843,844,1826,1827,1828],[126,848,1826,1827,1828],[126,219,1122,1826,1827,1828],[126,219,1120,1121,1122,1123,1124,1125,1126,1127,1128,1826,1827,1828],[126,219,1123,1124,1826,1827,1828],[126,219,851,1826,1827,1828],[126,219,859,1826,1827,1828],[126,219,861,1826,1827,1828],[126,219,866,1826,1827,1828],[126,219,868,1826,1827,1828],[126,219,871,1826,1827,1828],[126,219,877,878,1826,1827,1828],[126,219,860,862,871,873,874,875,876,1826,1827,1828],[126,219,880,881,884,890,1826,1827,1828],[126,219,897,1826,1827,1828],[126,219,893,896,1826,1827,1828],[126,219,899,1826,1827,1828],[126,219,852,1826,1827,1828],[126,219,901,1826,1827,1828],[126,219,919,920,1826,1827,1828],[126,219,905,918,1826,1827,1828],[126,219,891,904,905,931,1826,1827,1828],[126,219,864,865,1826,1827,1828],[126,219,473,852,857,858,863,867,892,898,903,918,921,947,953,970,976,980,986,989,991,994,995,998,1007,1010,1011,1017,1020,1826,1827,1828],[126,219,856,1826,1827,1828],[126,219,934,940,943,1826,1827,1828],[126,219,877,917,939,1826,1827,1828],[126,219,937,1826,1827,1828],[126,219,936,1826,1827,1828],[126,219,862,873,874,876,1826,1827,1828],[126,219,871,894,895,1826,1827,1828],[126,219,951,1826,1827,1828],[126,219,935,1826,1827,1828],[126,219,885,887,1826,1827,1828],[126,219,857,870,1826,1827,1828],[126,219,960,1826,1827,1828],[126,219,962,1826,1827,1828],[126,219,965,1826,1827,1828],[126,219,967,1826,1827,1828],[126,219,923,1826,1827,1828],[126,219,922,1826,1827,1828],[126,219,924,927,929,1826,1827,1828],[126,219,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1826,1827,1828],[126,219,872,917,1826,1827,1828],[126,219,854,855,871,890,906,907,908,909,910,911,912,913,914,916,1826,1827,1828],[126,219,950,1826,1827,1828],[126,219,957,1826,1827,1828],[126,219,956,1826,1827,1828],[126,219,959,1826,1827,1828],[126,219,978,979,1826,1827,1828],[126,219,869,890,938,1826,1827,1828],[126,219,941,942,1826,1827,1828],[126,219,925,926,1826,1827,1828],[126,219,883,1826,1827,1828],[126,219,882,1826,1827,1828],[126,219,888,889,1826,1827,1828],[126,219,902,982,1826,1827,1828],[126,219,933,944,985,1826,1827,1828],[126,219,896,1826,1827,1828],[126,219,994,995,1826,1827,1828],[126,219,993,1826,1827,1828],[126,219,955,1826,1827,1828],[126,219,995,998,1826,1827,1828],[126,219,997,1826,1827,1828],[126,219,930,1826,1827,1828],[126,219,1000,1001,1826,1827,1828],[126,219,918,920,1826,1827,1828],[126,219,879,917,1826,1827,1828],[126,219,996,999,1826,1827,1828],[126,219,891,931,1003,1826,1827,1828],[126,219,1005,1826,1827,1828],[126,219,992,1004,1826,1827,1828],[126,219,986,1826,1827,1828],[126,219,1009,1826,1827,1828],[126,219,1011,1826,1827,1828],[126,219,1015,1826,1827,1828],[126,219,918,1826,1827,1828],[126,219,970,1018,1826,1827,1828],[126,219,928,1826,1827,1828],[126,219,915,1826,1827,1828],[126,219,924,1826,1827,1828],[126,219,1014,1826,1827,1828],[126,219,886,1826,1827,1828],[126,219,1028,1826,1827,1828],[126,219,1030,1826,1827,1828],[126,219,1060,1826,1827,1828],[126,219,1038,1039,1826,1827,1828],[126,219,1029,1031,1033,1034,1035,1036,1037,1826,1827,1828],[126,219,1054,1062,1063,1066,1826,1827,1828],[126,219,1061,1069,1826,1827,1828],[126,219,1096,1113,1116,1826,1827,1828],[126,219,1072,1073,1074,1826,1827,1828],[126,219,1049,1051,1826,1827,1828],[126,219,1059,1826,1827,1828],[126,219,1068,1826,1827,1828],[126,219,1096,1826,1827,1828],[126,219,1111,1826,1827,1828],[126,219,1079,1826,1827,1828],[126,219,1099,1826,1827,1828],[126,219,1098,1826,1827,1828],[126,219,1036,1826,1827,1828],[126,219,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1826,1827,1828],[126,219,1026,1027,1036,1041,1042,1043,1044,1045,1046,1047,1048,1054,1055,1057,1826,1827,1828],[126,219,1078,1081,1826,1827,1828],[126,219,1061,1082,1826,1827,1828],[126,219,1032,1826,1827,1828],[126,219,1101,1102,1826,1827,1828],[126,219,1106,1107,1826,1827,1828],[126,219,1108,1826,1827,1828],[126,219,1070,1083,1086,1089,1092,1095,1826,1827,1828],[126,219,1067,1109,1110,1826,1827,1828],[126,219,1078,1084,1826,1827,1828],[126,219,1061,1085,1826,1827,1828],[126,219,1100,1103,1105,1826,1827,1828],[126,219,1071,1075,1114,1826,1827,1828],[126,219,1065,1826,1827,1828],[126,219,1064,1826,1827,1828],[126,219,1078,1087,1826,1827,1828],[126,219,1061,1088,1826,1827,1828],[126,219,1052,1053,1826,1827,1828],[126,219,1040,1058,1826,1827,1828],[126,219,1115,1826,1827,1828],[126,219,1104,1826,1827,1828],[126,219,1078,1090,1826,1827,1828],[126,219,1061,1091,1826,1827,1828],[126,219,1059,1093,1826,1827,1828],[126,219,1061,1094,1826,1827,1828],[126,219,1056,1826,1827,1828],[126,219,1050,1826,1827,1828],[126,1802,1803,1826,1827,1828],[126,1802,1826,1827,1828],[126,1801,1803,1805,1826,1827,1828],[126,1802,1808,1809,1826,1827,1828],[126,1801,1805,1806,1807,1826,1827,1828],[126,1801,1805,1808,1810,1826,1827,1828],[126,1801,1805,1826,1827,1828],[126,1801,1826,1827,1828],[126,1801,1802,1804,1826,1827,1828],[126,1801,1802,1804,1805,1806,1808,1809,1810,1826,1827,1828],[126,1477,1598,1826,1827,1828],[126,1793,1796,1826,1827,1828],[126,1793,1796,1797,1798,1826,1827,1828],[126,1795,1826,1827,1828],[126,390,1826,1827,1828],[126,143,145,149,161,170,373,383,1826,1827,1828],[126,145,165,166,167,169,383,1826,1827,1828],[126,145,200,202,204,205,208,383,385,1826,1827,1828],[126,145,149,151,152,153,154,160,161,162,372,383,385,1826,1827,1828],[126,383,1826,1827,1828],[126,159,160,166,353,362,379,1826,1827,1828],[126,145,1826,1827,1828],[126,139,159,379,1826,1827,1828],[126,210,1826,1827,1828],[126,209,383,1826,1827,1828],[101,126,344,353,439,1826,1827,1828],[101,126,312,324,362,378,1826,1827,1828],[101,126,255,1826,1827,1828],[126,366,1826,1827,1828],[126,365,366,367,1826,1827,1828],[126,365,1826,1827,1828],[82,101,126,139,145,149,152,160,163,164,166,170,182,183,210,285,363,373,383,387,1826,1827,1828],[126,143,145,168,200,201,206,207,383,439,1826,1827,1828],[126,168,439,1826,1827,1828],[126,143,183,299,383,439,1826,1827,1828],[126,439,1826,1827,1828],[126,145,168,169,439,1826,1827,1828],[126,203,439,1826,1827,1828],[126,163,364,371,1826,1827,1828],[112,126,219,379,1826,1827,1828],[126,219,379,1826,1827,1828],[76,126,316,1826,1827,1828],[126,252,253,379,415,416,423,1826,1827,1828],[126,359,415,417,418,419,420,422,1826,1827,1828],[126,358,1826,1827,1828],[126,358,359,1826,1827,1828],[126,154,155,156,157,159,1826,1827,1828],[126,158,159,1826,1827,1828],[126,421,1826,1827,1828],[126,159,1826,1827,1828],[76,126,146,409,1826,1827,1828],[76,125,126,1826,1827,1828],[76,126,168,243,1826,1827,1828],[76,126,168,1826,1827,1828],[126,241,245,1826,1827,1828],[76,126,242,389,1826,1827,1828],[76,80,101,126,133,134,135,387,432,433,1826,1827,1828],[101,126,1826,1827,1828],[101,126,149,190,260,275,296,298,368,369,383,384,1826,1827,1828],[126,182,370,1826,1827,1828],[126,387,1826,1827,1828],[126,144,1826,1827,1828],[76,126,301,314,323,333,335,378,1826,1827,1828],[112,126,301,314,332,333,334,378,438,1826,1827,1828],[126,326,327,328,329,330,331,1826,1827,1828],[126,328,1826,1827,1828],[126,332,1826,1827,1828],[126,217,218,219,221,1826,1827,1828],[76,126,211,212,213,214,220,1826,1827,1828],[126,217,220,1826,1827,1828],[126,215,1826,1827,1828],[126,216,1826,1827,1828],[76,126,219,242,389,1826,1827,1828],[76,126,219,388,389,1826,1827,1828],[76,126,219,389,1826,1827,1828],[126,275,375,1826,1827,1828],[126,375,1826,1827,1828],[101,126,384,389,1826,1827,1828],[126,320,1826,1827,1828],[86,126,319,1826,1827,1828],[126,159,191,192,258,261,298,307,310,312,313,352,378,381,384,1826,1827,1828],[126,159,192,341,1826,1827,1828],[126,312,378,1826,1827,1828],[76,126,312,317,318,320,321,322,323,324,325,336,337,338,339,340,342,343,378,379,439,1826,1827,1828],[126,306,1826,1827,1828],[101,112,126,146,190,192,193,214,237,258,275,285,296,297,352,374,383,384,385,387,439,1826,1827,1828],[126,378,1826,1827,1828],[86,126,166,258,285,309,374,376,377,384,1826,1827,1828],[126,312,1826,1827,1828],[86,126,190,227,261,302,303,304,305,306,307,308,310,311,378,379,1826,1827,1828],[101,126,227,228,302,384,385,1826,1827,1828],[126,166,275,285,298,374,378,384,1826,1827,1828],[101,126,383,385,1826,1827,1828],[101,115,126,381,384,385,1826,1827,1828],[101,112,125,126,139,149,160,168,191,192,193,195,224,229,234,237,258,260,261,263,266,268,271,272,273,274,296,298,373,374,379,381,383,384,385,1826,1827,1828],[101,115,126,1826,1827,1828],[126,145,146,147,164,381,382,387,389,439,1826,1827,1828],[126,143,383,1826,1827,1828],[126,223,1826,1827,1828],[101,115,125,126,185,208,210,211,212,213,214,221,222,439,1826,1827,1828],[112,125,126,139,160,185,200,233,234,235,236,261,266,275,281,284,286,296,298,374,379,381,1826,1827,1828],[126,160,163,164,182,285,374,383,1826,1827,1828],[101,125,126,146,149,261,279,381,383,1826,1827,1828],[126,300,1826,1827,1828],[101,126,214,222,223,282,283,293,1826,1827,1828],[126,381,383,1826,1827,1828],[126,307,309,1826,1827,1828],[126,258,261,373,389,1826,1827,1828],[101,112,126,196,200,236,266,281,284,288,381,1826,1827,1828],[101,126,163,182,200,289,1826,1827,1828],[126,145,195,291,373,383,1826,1827,1828],[101,125,126,214,383,1826,1827,1828],[101,126,168,194,195,196,205,223,290,292,373,383,1826,1827,1828],[82,126,192,258,295,387,389,1826,1827,1828],[101,112,125,126,149,163,170,182,191,193,229,233,234,235,236,237,261,263,275,276,278,280,296,298,373,374,379,380,381,389,1826,1827,1828],[101,115,126,163,281,287,293,381,1826,1827,1828],[126,173,174,175,176,177,178,179,180,181,1826,1827,1828],[126,224,267,1826,1827,1828],[126,269,1826,1827,1828],[126,267,1826,1827,1828],[126,269,270,1826,1827,1828],[101,126,149,152,154,190,384,1826,1827,1828],[101,112,126,144,146,191,192,237,257,258,259,296,381,385,387,389,1826,1827,1828],[101,112,125,126,148,154,259,261,307,374,380,384,1826,1827,1828],[126,302,1826,1827,1828],[126,303,1826,1827,1828],[126,159,160,352,1826,1827,1828],[126,304,1826,1827,1828],[126,184,188,1826,1827,1828],[101,126,149,184,191,1826,1827,1828],[126,187,188,1826,1827,1828],[126,189,1826,1827,1828],[126,184,185,1826,1827,1828],[126,184,238,1826,1827,1828],[126,184,1826,1827,1828],[126,224,265,380,1826,1827,1828],[126,264,1826,1827,1828],[126,185,379,380,1826,1827,1828],[126,262,380,1826,1827,1828],[126,185,379,1826,1827,1828],[126,352,1826,1827,1828],[126,149,159,161,186,191,258,261,295,298,301,307,314,315,345,348,351,373,381,384,1826,1827,1828],[126,246,249,250,251,252,253,1826,1827,1828],[76,126,136,138,219,346,347,1826,1827,1828],[76,126,136,138,219,346,347,350,1826,1827,1828],[126,361,1826,1827,1828],[126,166,228,258,295,298,312,320,324,354,355,356,357,359,360,363,373,378,383,1826,1827,1828],[126,252,1826,1827,1828],[126,257,1826,1827,1828],[101,126,191,239,254,256,260,295,381,387,389,1826,1827,1828],[126,246,247,248,249,250,251,252,253,388,1826,1827,1828],[82,101,112,125,126,184,185,193,237,258,261,293,294,296,373,374,383,384,387,1826,1827,1828],[126,228,230,233,374,1826,1827,1828],[101,126,224,383,1826,1827,1828],[126,227,312,1826,1827,1828],[126,226,1826,1827,1828],[126,228,229,1826,1827,1828],[126,225,227,383,1826,1827,1828],[101,126,148,228,230,231,232,383,384,1826,1827,1828],[76,126,155,159,379,1826,1827,1828],[76,126,158,1826,1827,1828],[126,141,142,1826,1827,1828],[76,126,146,1826,1827,1828],[76,126,379,1826,1827,1828],[76,82,126,237,258,387,389,1826,1827,1828],[126,146,409,410,1826,1827,1828],[76,126,245,1826,1827,1828],[76,112,125,126,144,207,240,242,244,389,1826,1827,1828],[126,168,379,384,1826,1827,1828],[126,277,379,1826,1827,1828],[76,99,101,112,126,143,144,202,245,387,388,1826,1827,1828],[76,126,134,135,387,434,1826,1827,1828],[76,77,78,79,80,126,1826,1827,1828],[126,197,198,199,1826,1827,1828],[126,197,1826,1827,1828],[76,80,101,103,112,126,133,134,135,136,138,139,144,193,288,332,385,386,389,434,1826,1827,1828],[126,397,1826,1827,1828],[126,399,1826,1827,1828],[126,401,1826,1827,1828],[126,403,1826,1827,1828],[126,405,406,407,1826,1827,1828],[126,411,1826,1827,1828],[81,126,391,396,398,400,402,404,408,412,414,425,426,428,437,438,439,440,1826,1827,1828],[126,413,1826,1827,1828],[126,424,1826,1827,1828],[115,126,133,1826,1827,1828],[126,242,1826,1827,1828],[126,427,1826,1827,1828],[86,126,228,230,231,233,429,430,431,434,435,436,1826,1827,1828],[126,1477,1826,1827,1828],[126,1476,1826,1827,1828],[126,1794,1826,1827,1828],[126,1812,1826,1827,1828],[126,1811,1812,1813,1814,1826,1827,1828],[126,1360,1826,1827,1828],[126,1349,1362,1826,1827,1828],[126,1360,1362,1826,1827,1828],[126,1349,1360,1362,1826,1827,1828],[126,1355,1360,1826,1827,1828],[126,1355,1360,1362,1826,1827,1828],[126,1360,1362,1363,1364,1365,1366,1367,1826,1827,1828],[126,1348,1349,1350,1351,1356,1357,1358,1359,1361,1826,1827,1828],[126,1348,1350,1351,1356,1357,1358,1359,1361,1826,1827,1828],[126,1362,1826,1827,1828],[126,1349,1826,1827,1828],[126,1352,1353,1354,1826,1827,1828],[126,1368,1826,1827,1828],[126,1334,1336,1826,1827,1828],[126,651,748,1214,1333,1826,1827,1828],[126,1377,1826,1827,1828],[126,1377,1378,1826,1827,1828],[126,1378,1426,1826,1827,1828],[126,1389,1826,1827,1828],[126,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1826,1827,1828],[126,1377,1394,1395,1399,1400,1401,1402,1826,1827,1828],[126,1377,1395,1826,1827,1828],[126,1377,1395,1396,1397,1398,1826,1827,1828],[126,1337,1377,1826,1827,1828],[126,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1826,1827,1828],[126,1377,1418,1425,1826,1827,1828],[126,1419,1420,1424,1826,1827,1828],[126,1421,1422,1423,1826,1827,1828],[126,1374,1375,1376,1826,1827,1828],[126,1375,1826,1827,1828],[126,1426,1477,1826,1827,1828],[126,1477,1495,1601,1826,1827,1828],[126,1477,1502,1583,1601,1826,1827,1828],[126,1477,1507,1601,1826,1827,1828],[126,1601,1826,1827,1828],[126,1337,1583,1601,1826,1827,1828],[126,1373,1427,1429,1431,1433,1435,1437,1439,1445,1448,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1519,1584,1601,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1448,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1472,1583,1584,1601,1826,1827,1828],[126,1337,1433,1601,1826,1827,1828],[126,1337,1601,1826,1827,1828],[126,1337,1373,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1583,1584,1601,1826,1827,1828],[126,1337,1373,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1583,1584,1601,1826,1827,1828],[126,1337,1373,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1471,1472,1583,1584,1601,1826,1827,1828],[126,1337,1373,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1470,1471,1472,1583,1584,1601,1826,1827,1828],[126,1583,1601,1826,1827,1828],[126,1458,1601,1826,1827,1828],[126,1337,1339,1373,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1584,1601,1826,1827,1828],[126,1337,1465,1601,1826,1827,1828],[126,1477,1589,1601,1826,1827,1828],[126,1590,1592,1594,1596,1826,1827,1828],[126,1477,1591,1601,1826,1827,1828],[126,1477,1593,1601,1826,1827,1828],[126,1477,1595,1601,1826,1827,1828],[126,1602,1603,1604,1605,1606,1607,1826,1827,1828],[126,1343,1601,1608,1610,1826,1827,1828],[126,1440,1826,1827,1828],[126,1440,1441,1442,1443,1444,1826,1827,1828],[126,1445,1826,1827,1828],[126,1446,1447,1826,1827,1828],[126,1471,1826,1827,1828],[126,1609,1826,1827,1828],[126,1469,1826,1827,1828],[126,1336,1337,1341,1342,1601,1826,1827,1828],[126,1601,1726,1826,1827,1828],[126,1474,1478,1826,1827,1828],[126,1473,1601,1826,1827,1828],[126,1473,1475,1477,1601,1826,1827,1828],[126,1532,1826,1827,1828],[126,1337,1826,1827,1828],[126,1337,1341,1601,1826,1827,1828],[126,1345,1346,1347,1475,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1826,1827,1828],[126,1214,1337,1343,1601,1826,1827,1828],[126,1341,1342,1457,1826,1827,1828],[126,1334,1826,1827,1828],[126,1337,1338,1344,1370,1531,1826,1827,1828],[126,447,1335,1338,1339,1340,1344,1370,1530,1531,1532,1585,1586,1587,1588,1600,1826,1827,1828],[126,1338,1369,1826,1827,1828],[126,1343,1826,1827,1828],[126,447,1343,1585,1826,1827,1828],[126,1373,1427,1429,1431,1433,1435,1437,1439,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1584,1826,1827,1828],[126,1335,1337,1826,1827,1828],[126,1585,1826,1827,1828],[126,1477,1583,1597,1599,1826,1827,1828],[126,1427,1433,1449,1450,1451,1452,1453,1456,1459,1460,1461,1462,1464,1466,1468,1469,1472,1584,1826,1827,1828],[126,1531,1826,1827,1828],[126,447,1335,1337,1344,1529,1530,1585,1826,1827,1828],[126,1439,1601,1826,1827,1828],[126,1337,1426,1427,1584,1601,1826,1827,1828],[126,1429,1601,1826,1827,1828],[126,1334,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1522,1529,1584,1601,1826,1827,1828],[126,1373,1427,1429,1431,1433,1435,1437,1439,1445,1448,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1477,1520,1584,1601,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1448,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1583,1584,1601,1826,1827,1828],[126,1431,1601,1826,1827,1828],[126,1337,1527,1601,1826,1827,1828],[126,1433,1601,1826,1827,1828],[126,1435,1601,1826,1827,1828],[126,1371,1601,1826,1827,1828],[126,1437,1601,1826,1827,1828],[126,1334,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1524,1529,1584,1601,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1514,1529,1583,1584,1601,1826,1827,1828],[126,1479,1826,1827,1828],[126,1337,1373,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1479,1480,1583,1584,1601,1826,1827,1828],[126,1449,1601,1826,1827,1828],[126,1450,1601,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1583,1584,1601,1826,1827,1828],[126,1372,1373,1428,1430,1432,1434,1436,1438,1468,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1495,1497,1498,1499,1500,1502,1503,1504,1505,1507,1508,1510,1512,1513,1515,1517,1518,1521,1523,1525,1526,1528,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1516,1529,1583,1584,1601,1826,1827,1828],[126,1451,1601,1826,1827,1828],[126,1452,1601,1826,1827,1828],[126,1453,1601,1826,1827,1828],[126,1467,1601,1826,1827,1828],[126,1454,1601,1826,1827,1828],[126,1455,1601,1826,1827,1828],[126,1455,1494,1601,1826,1827,1828],[126,1456,1601,1826,1827,1828],[126,1459,1601,1826,1827,1828],[126,1460,1502,1601,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1496,1529,1583,1584,1601,1826,1827,1828],[126,1461,1601,1826,1827,1828],[126,1427,1501,1601,1826,1827,1828],[126,1462,1601,1826,1827,1828],[126,1463,1506,1601,1826,1827,1828],[126,1464,1601,1826,1827,1828],[126,1337,1339,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1509,1529,1584,1601,1826,1827,1828],[126,1337,1373,1426,1427,1429,1431,1433,1435,1437,1439,1445,1449,1450,1451,1452,1453,1454,1455,1456,1459,1460,1461,1462,1463,1464,1466,1468,1469,1470,1471,1472,1511,1529,1583,1584,1601,1826,1827,1828],[126,1337,1465,1466,1601,1826,1827,1828],[126,1613,1826,1827,1828],[76,126,1371,1826,1827,1828],[76,126,1437,1826,1827,1828],[76,126,1617,1826,1827,1828],[76,126,1611,1619,1826,1827,1828],[76,126,1611,1826,1827,1828],[126,1584,1612,1826,1827,1828],[126,1429,1612,1826,1827,1828],[126,1448,1471,1612,1826,1827,1828],[126,1522,1612,1826,1827,1828],[126,1448,1520,1612,1826,1827,1828],[126,1431,1612,1826,1827,1828],[126,1433,1612,1826,1827,1828],[126,1435,1612,1826,1827,1828],[126,1371,1612,1826,1827,1828],[126,1437,1612,1826,1827,1828],[126,1524,1612,1826,1827,1828],[126,1514,1611,1612,1826,1827,1828],[126,1472,1611,1612,1826,1827,1828],[126,1449,1612,1826,1827,1828],[126,1470,1611,1612,1826,1827,1828],[126,1450,1612,1826,1827,1828],[126,1469,1611,1612,1826,1827,1828],[126,1516,1611,1612,1826,1827,1828],[126,1451,1612,1826,1827,1828],[126,1452,1612,1826,1827,1828],[126,1453,1612,1826,1827,1828],[126,1454,1826,1827,1828],[126,1455,1612,1826,1827,1828],[126,1456,1612,1826,1827,1828],[126,1460,1612,1826,1827,1828],[126,1496,1611,1612,1826,1827,1828],[126,1427,1612,1826,1827,1828],[126,1462,1612,1826,1827,1828],[126,1463,1612,1826,1827,1828],[126,1464,1612,1826,1827,1828],[126,1509,1612,1826,1827,1828],[126,1511,1611,1612,1826,1827,1828],[126,1611,1826,1827,1828],[126,1611,1654,1655,1826,1827,1828],[126,446,1612,1613,1614,1615,1616,1618,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1656,1657,1658,1659,1660,1661,1663,1826,1827,1828],[76,126,1657,1826,1827,1828],[76,126,1611,1619,1622,1826,1827,1828],[126,1485,1611,1826,1827,1828],[126,1343,1611,1826,1827,1828],[126,1611,1619,1826,1827,1828],[126,1659,1826,1827,1828],[126,1337,1611,1826,1827,1828],[76,126,1622,1826,1827,1828],[126,1662,1826,1827,1828],[126,1728,1826,1827,1828],[76,126,1611,1664,1727,1826,1827,1828],[76,126,1426,1826,1827,1828],[126,1426,1826,1827,1828],[126,1717,1718,1719,1720,1721,1722,1826,1827,1828],[126,1664,1716,1723,1724,1826,1827,1828],[126,1679,1680,1826,1827,1828],[76,126,1664,1826,1827,1828],[76,126,1435,1826,1827,1828],[76,126,1664,1676,1826,1827,1828],[76,126,1450,1826,1827,1828],[76,126,1337,1583,1611,1826,1827,1828],[76,126,1451,1611,1676,1826,1827,1828],[76,126,1460,1676,1826,1827,1828],[76,126,1337,1426,1584,1611,1664,1826,1827,1828],[76,126,1664,1666,1826,1827,1828],[76,126,1426,1448,1611,1664,1826,1827,1828],[76,126,1426,1664,1826,1827,1828],[76,126,1426,1445,1448,1611,1664,1826,1827,1828],[76,126,1664,1671,1826,1827,1828],[76,126,1664,1673,1826,1827,1828],[76,126,1426,1611,1664,1826,1827,1828],[76,126,1664,1677,1826,1827,1828],[76,126,1611,1681,1682,1826,1827,1828],[76,126,1426,1583,1611,1664,1826,1827,1828],[76,126,1664,1685,1826,1827,1828],[126,1665,1667,1668,1669,1670,1672,1674,1675,1678,1683,1684,1686,1688,1689,1691,1693,1695,1697,1699,1700,1702,1704,1706,1708,1710,1712,1713,1714,1715,1826,1827,1828],[76,126,1611,1664,1687,1826,1827,1828],[76,126,1664,1690,1826,1827,1828],[76,126,1664,1692,1826,1827,1828],[76,126,1694,1826,1827,1828],[76,126,1664,1696,1826,1827,1828],[76,126,1503,1664,1698,1826,1827,1828],[76,126,1611,1681,1701,1826,1827,1828],[76,126,1664,1703,1826,1827,1828],[76,126,1611,1681,1705,1826,1827,1828],[76,126,1664,1707,1826,1827,1828],[76,126,1664,1709,1826,1827,1828],[76,126,1664,1681,1711,1826,1827,1828]],"referencedMap":[[1747,1],[1748,2],[1749,3],[443,2],[1746,4],[1738,5],[1737,6],[445,7],[1735,8],[1740,9],[1741,10],[1743,11],[1742,12],[1739,13],[1745,14],[1744,15],[1736,16],[1734,17],[1730,18],[1731,8],[1732,19],[1733,20],[444,21],[83,22],[84,22],[86,23],[87,24],[88,25],[89,26],[90,27],[91,28],[92,29],[93,30],[94,31],[95,32],[96,32],[97,33],[98,34],[99,35],[100,36],[85,37],[132,2],[101,38],[102,39],[103,40],[133,41],[104,42],[105,43],[106,44],[107,45],[108,46],[109,47],[110,48],[111,49],[112,50],[113,51],[114,52],[115,53],[117,54],[116,55],[118,56],[119,57],[120,58],[121,59],[122,60],[123,61],[124,62],[125,63],[126,64],[127,65],[128,66],[129,67],[130,68],[131,69],[473,70],[458,71],[459,71],[460,71],[461,71],[462,72],[472,2],[470,71],[455,71],[456,71],[457,73],[471,71],[464,71],[463,71],[465,71],[466,71],[469,74],[467,71],[468,71],[448,2],[452,75],[453,2],[449,2],[454,76],[450,75],[451,77],[650,78],[474,2],[475,2],[476,2],[477,2],[478,2],[479,2],[480,79],[481,2],[483,80],[485,81],[484,2],[486,2],[490,82],[491,2],[492,83],[493,2],[495,84],[502,85],[500,86],[514,87],[515,2],[521,88],[520,89],[523,90],[524,91],[525,2],[526,92],[527,2],[544,93],[542,94],[555,95],[489,96],[487,2],[488,2],[647,97],[556,98],[567,99],[557,2],[563,100],[561,101],[560,102],[568,2],[528,2],[569,2],[570,103],[572,2],[571,2],[516,2],[519,104],[517,2],[518,2],[573,2],[575,105],[576,2],[529,2],[559,106],[558,2],[577,2],[530,2],[503,2],[496,2],[578,2],[511,107],[508,2],[504,2],[579,2],[580,108],[581,105],[584,109],[586,110],[585,2],[587,2],[589,111],[591,112],[592,2],[547,113],[546,114],[553,115],[531,84],[648,116],[593,117],[540,118],[594,119],[595,120],[596,2],[597,121],[598,112],[583,122],[582,2],[599,2],[548,2],[545,2],[532,2],[522,91],[600,2],[497,2],[603,123],[601,2],[498,2],[562,124],[549,2],[566,125],[564,2],[565,2],[533,2],[482,2],[550,126],[507,127],[505,2],[506,128],[512,2],[535,84],[604,2],[536,2],[513,129],[606,130],[607,2],[534,2],[609,131],[610,2],[611,2],[602,2],[612,84],[613,132],[619,133],[617,134],[614,2],[615,135],[622,136],[621,137],[554,138],[625,139],[626,2],[618,140],[541,141],[501,2],[543,2],[623,142],[627,143],[629,144],[628,145],[630,98],[631,146],[624,2],[633,147],[635,148],[620,2],[616,2],[636,2],[639,149],[640,150],[537,2],[642,151],[552,152],[551,114],[509,2],[643,2],[574,2],[494,2],[634,147],[632,2],[499,2],[588,2],[608,2],[539,153],[538,2],[644,2],[605,2],[645,2],[646,2],[637,154],[638,155],[590,2],[510,156],[641,2],[649,157],[651,158],[1336,2],[747,159],[665,2],[666,2],[654,160],[656,161],[655,2],[737,2],[687,162],[664,163],[662,164],[719,165],[690,166],[709,167],[735,2],[740,168],[710,2],[667,2],[745,2],[668,2],[714,2],[657,2],[678,169],[675,2],[715,2],[691,170],[688,2],[689,171],[713,172],[734,173],[712,174],[736,2],[722,175],[721,176],[669,177],[746,178],[684,179],[693,180],[692,2],[694,181],[723,2],[720,2],[670,2],[658,2],[659,2],[738,182],[724,2],[739,2],[671,2],[653,2],[725,183],[730,184],[731,185],[707,186],[733,187],[696,188],[695,2],[697,189],[728,190],[652,2],[742,191],[718,192],[716,2],[717,193],[679,2],[698,2],[699,194],[700,195],[673,177],[674,2],[680,196],[672,2],[741,2],[732,2],[686,170],[685,197],[663,2],[708,2],[743,198],[681,2],[727,199],[726,176],[676,2],[660,2],[661,2],[711,2],[729,2],[702,200],[701,2],[703,201],[705,202],[704,2],[706,203],[683,204],[682,2],[677,205],[744,206],[748,207],[1755,208],[1753,2],[202,2],[1750,2],[1751,2],[1752,2],[1758,209],[1754,208],[1756,210],[1757,208],[1759,211],[1764,212],[1765,213],[1766,2],[1768,214],[1769,2],[1770,215],[1771,2],[1760,2],[1772,216],[1774,217],[1775,2],[1776,2],[1777,216],[1779,218],[1781,219],[1782,219],[1783,219],[1780,2],[1786,220],[1784,221],[1785,221],[1473,2],[1787,2],[1762,2],[1788,2],[1789,2],[1790,222],[1791,223],[1792,2],[1800,224],[1822,225],[1819,226],[1816,227],[1817,228],[1818,227],[1821,229],[1820,225],[1826,230],[1828,231],[1827,232],[1829,2],[1830,2],[1831,233],[1832,2],[1833,2],[1854,234],[1839,235],[1845,236],[1843,2],[1842,237],[1844,238],[1853,239],[1848,240],[1850,241],[1851,242],[1852,243],[1846,2],[1847,243],[1849,243],[1841,243],[1840,2],[1855,218],[1835,2],[1834,2],[1837,235],[1838,244],[1836,235],[1773,2],[1856,2],[1767,2],[1857,2],[1858,218],[1860,2],[1861,245],[1859,246],[1862,2],[1863,34],[1864,2],[1824,247],[1823,248],[1865,2],[1866,2],[1867,2],[1726,2],[1868,249],[1885,250],[1870,251],[1871,251],[1873,251],[1874,251],[1872,252],[1884,253],[1875,251],[1876,251],[1877,251],[1878,251],[1879,251],[1880,251],[1881,251],[1882,251],[1883,251],[137,254],[349,252],[138,255],[136,252],[350,256],[1888,2],[1889,257],[1886,2],[1891,258],[1890,2],[1887,259],[1892,260],[1893,252],[1894,252],[134,261],[347,2],[135,262],[74,2],[76,263],[346,252],[219,252],[1869,252],[1895,2],[1763,246],[1896,2],[1897,2],[1898,2],[1899,264],[1924,265],[1925,266],[1900,267],[1903,267],[1922,265],[1923,265],[1913,265],[1912,268],[1910,265],[1905,265],[1918,265],[1916,265],[1920,265],[1904,265],[1917,265],[1921,265],[1906,265],[1907,265],[1919,265],[1901,265],[1908,265],[1909,265],[1911,265],[1915,265],[1926,269],[1914,265],[1902,265],[1939,270],[1938,2],[1933,269],[1935,271],[1934,269],[1927,269],[1928,269],[1930,269],[1932,269],[1936,271],[1937,271],[1929,271],[1931,271],[1940,2],[1941,2],[1942,2],[1943,2],[1944,2],[1945,2],[1947,272],[1946,273],[1948,274],[1825,2],[1950,275],[1778,2],[1951,2],[1952,2],[1968,2],[1966,276],[1965,277],[1956,278],[1957,279],[1964,280],[1958,279],[1959,278],[1960,278],[1961,278],[1962,281],[1955,282],[1963,277],[1954,2],[1967,283],[1969,213],[1970,2],[1971,284],[1212,285],[1213,286],[1332,287],[1310,2],[1227,2],[1228,2],[1311,288],[1216,289],[1218,290],[1217,2],[1312,2],[1313,291],[1314,2],[1315,292],[1249,293],[1226,294],[1224,295],[1281,296],[1252,297],[1316,2],[1318,298],[1319,299],[1274,300],[1325,301],[1323,302],[1322,303],[1317,2],[1229,2],[1321,304],[1320,2],[1326,2],[1230,2],[1276,2],[1219,2],[1297,2],[1240,305],[1237,2],[1277,2],[1253,306],[1250,2],[1251,307],[1327,308],[1275,309],[1296,310],[1284,311],[1283,312],[1304,313],[1231,292],[1331,314],[1328,315],[1246,316],[1255,317],[1254,2],[1256,318],[1285,2],[1282,2],[1232,2],[1220,2],[1221,2],[1324,319],[1286,2],[1233,2],[1215,2],[1287,320],[1292,321],[1293,322],[1269,323],[1295,324],[1258,325],[1257,2],[1259,326],[1290,313],[1280,327],[1278,2],[1279,328],[1241,2],[1260,2],[1261,329],[1262,330],[1235,292],[1236,2],[1242,331],[1234,2],[1299,332],[1271,333],[1298,334],[1300,335],[1273,336],[1305,337],[1303,338],[1294,2],[1248,306],[1247,339],[1225,2],[1301,340],[1306,341],[1308,342],[1307,343],[1302,2],[1272,2],[1270,2],[1243,2],[1330,344],[1289,345],[1288,312],[1238,2],[1222,2],[1223,2],[1291,2],[1264,346],[1263,2],[1265,347],[1267,348],[1266,2],[1268,349],[1245,350],[1244,2],[1239,351],[1329,2],[1309,352],[1214,353],[1333,354],[775,355],[761,356],[754,357],[762,2],[763,2],[765,358],[767,359],[766,360],[768,2],[756,2],[764,2],[751,2],[750,2],[757,2],[773,2],[759,361],[774,362],[769,363],[752,364],[753,2],[758,2],[770,2],[771,359],[755,2],[760,365],[772,366],[776,367],[1198,368],[1191,369],[1199,370],[1200,370],[1202,371],[1204,372],[1203,373],[1209,370],[1193,370],[1201,370],[1188,370],[1187,370],[1194,370],[1205,370],[1196,374],[1210,375],[1206,376],[1189,377],[1190,370],[1195,370],[1207,370],[1208,372],[1192,370],[1197,378],[835,379],[784,2],[779,380],[796,2],[780,2],[782,2],[786,2],[788,2],[790,2],[792,2],[794,2],[797,381],[799,2],[801,2],[803,2],[830,2],[777,2],[833,2],[781,382],[783,383],[785,384],[787,385],[789,386],[791,387],[793,388],[795,389],[798,390],[800,391],[802,392],[804,393],[805,2],[807,394],[808,2],[809,395],[811,396],[812,397],[815,398],[813,396],[814,399],[822,400],[829,401],[831,402],[834,403],[810,2],[778,2],[806,2],[816,2],[817,404],[819,405],[821,406],[818,2],[820,381],[823,2],[824,407],[826,408],[828,409],[825,384],[827,410],[832,411],[836,412],[1130,370],[1185,413],[1131,370],[1132,370],[1133,370],[1134,370],[1135,370],[1136,370],[1137,370],[1138,370],[1139,414],[1140,370],[1141,370],[1142,370],[1143,370],[1144,370],[1145,370],[1146,415],[1147,416],[1148,417],[1149,418],[1150,419],[1151,420],[1152,421],[1153,422],[1154,423],[1155,424],[1156,425],[1157,426],[1158,370],[1160,427],[1161,370],[1162,428],[1164,429],[1165,430],[1168,431],[1166,429],[1167,432],[1175,433],[1182,434],[1183,435],[1186,436],[1163,370],[1184,370],[1159,370],[1169,370],[1170,437],[1172,438],[1174,439],[1171,370],[1173,414],[1176,370],[1177,440],[1179,441],[1181,442],[1178,417],[1180,443],[749,70],[848,444],[837,2],[838,2],[846,2],[841,445],[840,2],[842,2],[839,2],[847,446],[843,447],[844,2],[845,448],[849,449],[1128,370],[1120,370],[1121,370],[1123,450],[1122,370],[1124,370],[1125,370],[1129,451],[1126,452],[1127,370],[1211,158],[851,370],[852,370],[853,370],[854,370],[855,370],[856,370],[857,453],[858,370],[860,454],[862,455],[861,370],[863,370],[867,456],[868,370],[869,457],[870,370],[872,458],[879,459],[877,460],[891,461],[892,370],[898,462],[897,463],[900,464],[901,465],[902,370],[903,466],[904,370],[921,467],[919,468],[932,469],[866,470],[864,370],[865,370],[1024,471],[933,472],[944,473],[934,370],[940,474],[938,475],[937,476],[945,370],[905,370],[946,370],[947,477],[949,370],[948,370],[893,370],[896,478],[894,370],[895,370],[950,370],[952,479],[953,370],[906,370],[936,480],[935,370],[954,370],[907,370],[880,370],[873,370],[955,370],[888,481],[885,370],[881,370],[956,370],[957,482],[958,479],[961,483],[963,484],[962,370],[964,370],[966,485],[968,486],[969,370],[924,487],[923,488],[930,489],[908,458],[1025,490],[970,491],[917,492],[971,493],[972,494],[973,370],[974,495],[975,486],[960,496],[959,370],[976,370],[925,370],[922,370],[909,370],[899,465],[977,370],[874,370],[980,497],[978,370],[875,370],[939,498],[926,370],[943,499],[941,370],[942,370],[910,370],[859,370],[927,500],[884,501],[882,370],[883,502],[889,370],[912,458],[981,370],[913,370],[890,503],[983,504],[984,370],[911,370],[986,505],[987,370],[988,370],[979,370],[989,458],[990,506],[996,507],[994,508],[991,370],[992,509],[999,510],[998,511],[931,512],[1002,513],[1003,370],[995,514],[918,515],[878,370],[920,370],[1000,516],[1004,517],[1006,518],[1005,519],[1007,472],[1008,520],[1001,370],[1010,521],[1012,522],[997,370],[993,370],[1013,370],[1016,523],[1017,524],[914,370],[1019,525],[929,526],[928,488],[886,370],[1020,370],[951,370],[871,370],[1011,521],[1009,370],[876,370],[965,370],[985,370],[916,527],[915,370],[1021,370],[982,370],[1022,370],[1023,370],[1014,528],[1015,529],[967,370],[887,530],[1018,370],[850,207],[1026,370],[1027,370],[1029,531],[1031,532],[1030,370],[1032,370],[1061,533],[1040,534],[1038,535],[1067,536],[1070,537],[1118,538],[1071,370],[1075,539],[1076,370],[1041,370],[1077,370],[1042,370],[1062,370],[1033,370],[1052,540],[1049,370],[1063,370],[1078,541],[1068,370],[1069,542],[1097,543],[1112,544],[1080,545],[1072,370],[1100,546],[1099,547],[1043,548],[1119,549],[1058,550],[1082,551],[1081,370],[1083,552],[1101,370],[1098,370],[1044,370],[1034,370],[1035,370],[1073,553],[1102,370],[1074,370],[1045,370],[1028,370],[1103,554],[1108,555],[1109,556],[1096,557],[1111,558],[1085,559],[1084,370],[1086,560],[1106,561],[1113,370],[1115,562],[1066,563],[1064,370],[1065,564],[1053,370],[1087,370],[1088,565],[1089,566],[1047,548],[1048,370],[1054,567],[1046,370],[1114,370],[1110,370],[1060,541],[1059,568],[1039,370],[1116,370],[1117,569],[1055,370],[1105,570],[1104,547],[1050,370],[1036,370],[1037,370],[1079,370],[1107,370],[1091,571],[1090,370],[1092,572],[1094,573],[1093,370],[1095,574],[1057,575],[1056,370],[1051,576],[1953,2],[1804,577],[1803,578],[1802,579],[1810,580],[1808,581],[1809,582],[1806,583],[1807,584],[1805,585],[1811,586],[1801,2],[75,2],[1599,587],[1793,2],[1797,588],[1799,589],[1798,588],[1796,590],[1761,34],[391,591],[396,1],[386,592],[168,593],[206,594],[373,595],[201,596],[183,2],[161,2],[166,2],[363,597],[232,598],[167,2],[160,599],[209,600],[210,601],[345,602],[360,603],[256,604],[367,605],[368,606],[366,607],[365,2],[364,608],[208,609],[169,610],[299,2],[300,611],[192,612],[170,613],[237,612],[234,612],[147,612],[204,614],[203,2],[372,615],[382,2],[154,2],[321,616],[322,617],[316,252],[419,2],[324,2],[325,8],[317,618],[424,619],[423,620],[418,2],[415,2],[359,621],[358,2],[417,622],[318,252],[158,623],[155,624],[157,2],[420,2],[416,2],[422,625],[421,2],[156,626],[410,627],[413,628],[244,629],[243,630],[242,631],[427,252],[241,632],[226,2],[430,2],[433,2],[432,252],[434,633],[140,2],[369,634],[370,635],[371,636],[153,2],[194,2],[152,637],[139,2],[337,252],[145,638],[336,639],[335,640],[326,2],[327,2],[334,2],[329,2],[332,641],[328,2],[330,642],[333,643],[331,642],[165,2],[150,2],[151,612],[214,2],[220,644],[221,645],[218,646],[216,647],[217,648],[212,2],[343,8],[259,8],[390,649],[397,650],[401,651],[376,652],[375,2],[229,2],[435,653],[385,654],[319,655],[320,656],[314,657],[305,2],[342,658],[306,659],[344,660],[339,661],[338,2],[340,2],[311,2],[298,662],[377,663],[378,664],[308,665],[312,666],[303,667],[355,668],[384,669],[236,670],[275,671],[148,672],[383,673],[144,674],[222,675],[213,2],[223,676],[287,677],[211,2],[286,678],[82,2],[280,679],[193,2],[301,680],[276,2],[149,2],[187,2],[284,681],[164,2],[224,682],[310,683],[374,684],[309,2],[283,2],[215,2],[289,685],[290,686],[162,2],[292,687],[294,688],[293,689],[196,2],[282,672],[296,690],[281,691],[288,692],[172,2],[176,2],[175,2],[174,2],[179,2],[173,2],[181,2],[178,2],[177,2],[180,2],[182,693],[171,2],[268,694],[267,2],[273,695],[269,696],[272,697],[271,697],[274,695],[270,696],[191,698],[260,699],[381,700],[436,2],[405,701],[407,702],[307,703],[406,704],[379,663],[323,663],[163,2],[261,705],[188,706],[189,707],[190,708],[186,709],[354,709],[238,709],[262,710],[239,710],[185,711],[184,2],[266,712],[265,713],[264,714],[263,715],[380,716],[353,717],[352,718],[315,719],[348,720],[351,721],[362,722],[361,723],[357,724],[255,725],[257,726],[254,727],[295,728],[285,2],[395,2],[297,729],[356,2],[225,730],[304,634],[302,731],[227,732],[230,733],[431,2],[228,734],[231,734],[393,2],[392,2],[394,2],[429,2],[233,735],[252,736],[159,737],[207,2],[143,738],[258,2],[399,252],[142,2],[409,739],[251,252],[403,8],[250,740],[388,741],[249,739],[146,2],[411,742],[247,252],[248,252],[240,2],[141,2],[246,743],[245,744],[195,745],[313,50],[235,50],[291,2],[278,746],[277,2],[341,626],[253,252],[389,747],[77,252],[80,748],[81,749],[78,252],[79,2],[205,64],[200,750],[199,2],[198,751],[197,2],[387,752],[398,753],[400,754],[402,755],[404,756],[408,757],[442,758],[412,758],[441,759],[414,760],[425,761],[279,762],[426,763],[428,764],[437,765],[440,637],[439,2],[438,213],[1467,2],[1598,766],[1477,767],[1476,766],[1795,768],[1794,2],[1812,584],[1813,769],[1814,2],[1815,770],[1361,771],[1363,772],[1364,773],[1348,771],[1365,771],[1350,774],[1351,771],[1356,775],[1357,776],[1368,777],[1358,771],[1360,778],[1362,779],[1352,780],[1353,2],[1366,781],[1355,782],[1367,2],[1354,2],[1349,2],[1359,775],[1369,783],[1949,2],[72,2],[73,2],[12,2],[13,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[24,2],[4,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[5,2],[33,2],[34,2],[35,2],[36,2],[6,2],[40,2],[37,2],[38,2],[39,2],[41,2],[7,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[8,2],[52,2],[49,2],[50,2],[51,2],[53,2],[9,2],[54,2],[55,2],[56,2],[59,2],[57,2],[58,2],[60,2],[61,2],[10,2],[62,2],[1,2],[63,2],[64,2],[11,2],[69,2],[66,2],[65,2],[70,2],[68,2],[71,2],[67,2],[1337,784],[1334,785],[1378,786],[1379,787],[1380,787],[1381,787],[1382,787],[1383,786],[1384,786],[1385,786],[1386,786],[1387,788],[1388,786],[1389,786],[1390,789],[1391,790],[1392,786],[1393,786],[1403,791],[1407,792],[1394,786],[1405,792],[1396,792],[1397,786],[1398,786],[1399,793],[1404,792],[1400,792],[1401,786],[1406,792],[1402,786],[1408,786],[1409,792],[1395,794],[1417,786],[1410,786],[1411,786],[1412,794],[1418,795],[1413,786],[1414,786],[1416,786],[1415,786],[1426,796],[1419,2],[1425,797],[1420,2],[1421,2],[1424,798],[1422,2],[1423,2],[1377,799],[1375,786],[1374,2],[1376,800],[1589,801],[1494,802],[1591,801],[1593,801],[1501,803],[1595,801],[1506,804],[1439,805],[1584,806],[1429,805],[1522,805],[1520,807],[1471,808],[1431,805],[1527,809],[1433,810],[1435,805],[1371,805],[1437,805],[1524,805],[1514,811],[1472,812],[1449,806],[1450,805],[1470,813],[1469,814],[1516,811],[1451,806],[1452,815],[1453,805],[1454,805],[1455,805],[1456,815],[1459,816],[1460,806],[1496,811],[1461,805],[1427,805],[1462,805],[1463,805],[1464,805],[1509,817],[1511,811],[1466,818],[1590,819],[1597,820],[1592,821],[1594,822],[1596,823],[1607,2],[1602,805],[1608,824],[1606,805],[1603,805],[1605,805],[1604,805],[1611,825],[1441,826],[1445,827],[1444,826],[1442,826],[1440,2],[1443,826],[1446,828],[1448,829],[1447,830],[1519,828],[1610,831],[1609,832],[1343,833],[1727,834],[1479,835],[1474,836],[1478,837],[1345,805],[1346,2],[1347,805],[1533,838],[1534,839],[1535,805],[1536,2],[1537,810],[1475,840],[1540,805],[1541,2],[1542,2],[1543,805],[1545,2],[1546,2],[1547,2],[1548,2],[1549,2],[1550,2],[1551,2],[1552,2],[1553,2],[1554,805],[1555,2],[1556,2],[1557,839],[1558,805],[1559,805],[1560,805],[1561,810],[1562,805],[1583,841],[1563,2],[1564,2],[1565,839],[1566,2],[1539,805],[1567,2],[1568,2],[1570,805],[1571,2],[1572,839],[1574,2],[1573,2],[1575,2],[1576,842],[1577,810],[1578,805],[1579,2],[1544,2],[1580,2],[1538,805],[1581,2],[1582,2],[1569,805],[1465,2],[1341,805],[1457,805],[1342,805],[1458,843],[1335,844],[1340,2],[1532,845],[1601,846],[1370,847],[1344,848],[1586,849],[1339,2],[1530,850],[1338,851],[1587,852],[1600,853],[1585,854],[447,2],[1588,855],[1531,856],[1373,810],[1526,857],[1428,858],[1430,859],[1523,860],[1521,861],[1518,862],[1432,863],[1528,864],[1434,865],[1436,866],[1372,867],[1438,868],[1525,869],[1515,870],[1480,871],[1481,872],[1482,873],[1484,874],[1483,875],[1529,876],[1485,810],[1486,811],[1517,877],[1488,878],[1487,878],[1489,879],[1490,880],[1491,805],[1468,881],[1492,882],[1493,883],[1495,884],[1498,885],[1499,885],[1500,886],[1503,887],[1497,888],[1504,889],[1502,890],[1505,891],[1507,892],[1508,893],[1510,894],[1512,895],[1513,896],[1614,897],[1615,898],[1616,899],[1618,900],[1620,901],[1621,902],[1622,902],[1623,903],[1624,904],[1625,905],[1627,906],[1626,907],[1628,908],[1613,909],[1629,910],[1630,911],[1631,912],[1653,913],[1632,914],[1633,915],[1634,916],[1635,917],[1636,918],[1637,919],[1652,920],[1638,921],[1639,922],[1640,923],[1641,924],[1642,925],[1643,926],[1644,927],[1645,928],[1646,929],[1647,930],[1648,931],[1649,932],[1651,933],[1650,934],[1612,935],[1656,936],[1664,937],[1659,938],[1661,939],[1617,940],[1619,941],[1658,942],[1660,943],[1654,944],[1655,935],[1657,2],[1662,945],[1663,946],[446,2],[1729,947],[1728,948],[1717,949],[1722,950],[1720,950],[1718,950],[1719,950],[1721,950],[1723,951],[1725,952],[1724,950],[1681,953],[1679,2],[1680,2],[1666,954],[1671,252],[1673,955],[1677,956],[1682,949],[1685,957],[1687,958],[1690,959],[1692,902],[1694,252],[1696,954],[1698,960],[1701,949],[1703,252],[1676,252],[1705,949],[1707,954],[1709,252],[1711,252],[1665,961],[1667,962],[1668,963],[1670,964],[1669,965],[1672,966],[1674,967],[1715,964],[1675,968],[1678,969],[1683,970],[1684,971],[1686,972],[1716,973],[1688,974],[1689,968],[1691,975],[1693,976],[1695,977],[1697,978],[1699,979],[1700,968],[1702,980],[1704,981],[1706,982],[1708,983],[1710,984],[1712,985],[1714,964],[1713,968]],"affectedFilesPendingEmit":[1749,1746,1738,1737,445,1735,1740,1741,1743,1742,1739,1745,1744,1736,1734,1730,1731,1732,1733]},"version":"5.5.2"} \ No newline at end of file diff --git a/packages/instantsearch-ui-components/src/components/chat/ChatPromptSuggestions.tsx b/packages/instantsearch-ui-components/src/components/chat/ChatPromptSuggestions.tsx index 359770b9af3..a1970a78741 100644 --- a/packages/instantsearch-ui-components/src/components/chat/ChatPromptSuggestions.tsx +++ b/packages/instantsearch-ui-components/src/components/chat/ChatPromptSuggestions.tsx @@ -8,6 +8,8 @@ import type { Renderer } from '../../types'; export type ChatPromptSuggestionsClassNames = { root?: string | string[]; suggestion?: string | string[]; + skeleton?: string | string[]; + skeletonItem?: string | string[]; }; export type ChatPromptSuggestionsOwnProps = { @@ -19,6 +21,20 @@ export type ChatPromptSuggestionsOwnProps = { * Callback when a suggestion is clicked. */ onSuggestionClick: (suggestion: string) => void; + /** + * Whether suggestions are currently being fetched. When true and + * `suggestions` is empty, renders `skeletonCount` placeholder pills. + */ + isLoading?: boolean; + /** + * Number of skeleton placeholder pills shown while loading. + * @default 3 + */ + skeletonCount?: number; + /** + * Disables every pill (e.g. when a downstream chat is mid-stream). + */ + disabled?: boolean; /** * Optional class names for elements */ @@ -33,28 +49,55 @@ export function createChatPromptSuggestionsComponent({ return function ChatPromptSuggestions( userProps: ChatPromptSuggestionsOwnProps ) { - const { suggestions = [], onSuggestionClick, classNames = {} } = userProps; + const { + suggestions = [], + onSuggestionClick, + isLoading = false, + skeletonCount = 3, + disabled = false, + classNames = {}, + } = userProps; - if (suggestions.length === 0) { + if (suggestions.length === 0 && !isLoading) { return null; } return (
- {suggestions.map((suggestion, index) => ( - - ))} + {[...new Array(skeletonCount)].map((_, i) => ( +
+ ))} +
+ ) : ( + suggestions.map((suggestion, index) => ( + + )) + )}
); }; diff --git a/packages/instantsearch.css/src/components/chat/_chat-suggestions.scss b/packages/instantsearch.css/src/components/chat/_chat-suggestions.scss index e9624dd3382..3c98be2bb52 100644 --- a/packages/instantsearch.css/src/components/chat/_chat-suggestions.scss +++ b/packages/instantsearch.css/src/components/chat/_chat-suggestions.scss @@ -36,3 +36,47 @@ } } +.ais-ChatPromptSuggestions-skeleton { + display: flex; + flex-direction: column; + gap: calc(var(--ais-spacing) * 0.5); +} + +.ais-ChatPromptSuggestions-skeletonItem { + height: calc(var(--ais-spacing) * 2); + border-radius: var(--ais-border-radius-lg); + background-color: rgba(var(--ais-muted-color-rgb), 0.15); + animation: ais-chat-prompt-suggestions-skeleton 1.5s ease-in-out infinite; + + // Varying widths so the skeleton row mimics real pills. + &:nth-child(1) { + width: 65%; + } + + &:nth-child(2) { + width: 80%; + } + + &:nth-child(3) { + width: 55%; + } + + &:nth-child(4) { + width: 70%; + } + + &:nth-child(5) { + width: 60%; + } +} + +@keyframes ais-chat-prompt-suggestions-skeleton { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0.4; + } +} + diff --git a/packages/instantsearch.js/src/connectors/chat-page-suggestions/__tests__/connectChatPageSuggestions-test.ts b/packages/instantsearch.js/src/connectors/chat-page-suggestions/__tests__/connectChatPageSuggestions-test.ts new file mode 100644 index 00000000000..841e2da3348 --- /dev/null +++ b/packages/instantsearch.js/src/connectors/chat-page-suggestions/__tests__/connectChatPageSuggestions-test.ts @@ -0,0 +1,443 @@ +/** + * @jest-environment @instantsearch/testutils/jest-environment-jsdom.ts + */ + +import { createSearchClient } from '@instantsearch/mocks'; +import algoliasearchHelper from 'algoliasearch-helper'; + +import { createSingleSearchResponse } from '../../../../../../tests/mocks/createAPIResponse'; +import { createInstantSearch } from '../../../../test/createInstantSearch'; +import { + createInitOptions, + createRenderOptions, +} from '../../../../test/createWidget'; +import connectChatPageSuggestions from '../connectChatPageSuggestions'; + +import type { ChatPageSuggestionsConnectorParams } from '../connectChatPageSuggestions'; +import type { SearchResults } from 'algoliasearch-helper'; + +function makeResults( + overrides: { + hits?: Array>; + query?: string; + } = {} +): SearchResults { + const { hits = [{ objectID: '1' }, { objectID: '2' }], query = 'q' } = + overrides; + const response = createSingleSearchResponse({ + hits: hits as unknown as SearchResults['hits'], + query, + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + return new algoliasearchHelper.SearchResults(helper.state, [response]); +} + +function jsonResponse(body: unknown): Response { + return new Response(JSON.stringify(body), { + status: 200, + headers: { 'Content-Type': 'application/json' }, + }); +} + +function flush(ms = 0) { + return new Promise((r) => setTimeout(r, ms)); +} + +describe('connectChatPageSuggestions', () => { + const originalFetch = global.fetch; + + beforeEach(() => { + global.fetch = jest.fn(() => + Promise.resolve( + jsonResponse({ + parts: [ + { type: 'reasoning', text: '' }, + { type: 'text', text: JSON.stringify(['a', 'b', 'c']) }, + ], + }) + ) + ) as unknown as typeof fetch; + }); + + afterEach(() => { + global.fetch = originalFetch; + }); + + describe('Usage', () => { + it('throws without a render function', () => { + expect(() => { + // @ts-expect-error + connectChatPageSuggestions()({ agentId: 'a' }); + }).toThrowError(/render function is not valid/); + }); + + it('throws when neither agentId nor transport is provided', () => { + const makeWidget = connectChatPageSuggestions(jest.fn()); + expect(() => + makeWidget({} as ChatPageSuggestionsConnectorParams) + ).toThrowError(/agentId.*transport/); + }); + + it('returns the widget descriptor', () => { + const widget = connectChatPageSuggestions(jest.fn())({ + agentId: 'a', + }); + expect(widget).toEqual( + expect.objectContaining({ + $$type: 'ais.chatPageSuggestions', + init: expect.any(Function), + render: expect.any(Function), + dispose: expect.any(Function), + }) + ); + }); + }); + + describe('fetch lifecycle', () => { + it('fires one request after the debounce window on first results', async () => { + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + widget.init!(createInitOptions({ helper })); + + const renderOptions = createRenderOptions({ + helper, + results: makeResults(), + }); + widget.render!(renderOptions); + + // Debounce hasn't fired yet — no fetch. + expect(global.fetch).not.toHaveBeenCalled(); + + await flush(20); + expect(global.fetch).toHaveBeenCalledTimes(1); + await flush(0); + + // After resolution, render fired with the parsed suggestions. + const lastCall = renderFn.mock.calls[renderFn.mock.calls.length - 1][0]; + expect(lastCall.suggestions).toEqual(['a', 'b', 'c']); + expect(lastCall.isLoading).toBe(false); + }); + + it('skips the request when there are no hits', async () => { + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + widget.init!(createInitOptions({ helper })); + widget.render!( + createRenderOptions({ helper, results: makeResults({ hits: [] }) }) + ); + + await flush(20); + expect(global.fetch).not.toHaveBeenCalled(); + const lastCall = renderFn.mock.calls[renderFn.mock.calls.length - 1][0]; + expect(lastCall.suggestions).toEqual([]); + expect(lastCall.isLoading).toBe(false); + }); + + it('does not refetch when the state signature is unchanged', async () => { + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + widget.init!(createInitOptions({ helper })); + + const results = makeResults({ query: 'shoes' }); + widget.render!(createRenderOptions({ helper, results })); + await flush(20); + expect(global.fetch).toHaveBeenCalledTimes(1); + + // Second render with identical signature → no refetch. + widget.render!(createRenderOptions({ helper, results })); + await flush(20); + expect(global.fetch).toHaveBeenCalledTimes(1); + }); + + it('refetches when the query changes', async () => { + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + widget.init!(createInitOptions({ helper })); + + widget.render!( + createRenderOptions({ helper, results: makeResults({ query: 'a' }) }) + ); + await flush(20); + expect(global.fetch).toHaveBeenCalledTimes(1); + + widget.render!( + createRenderOptions({ helper, results: makeResults({ query: 'b' }) }) + ); + await flush(20); + expect(global.fetch).toHaveBeenCalledTimes(2); + }); + + it('applies transformItems to the parsed list', async () => { + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + transformItems: (items) => items.map((s) => `! ${s}`), + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + widget.init!(createInitOptions({ helper })); + widget.render!(createRenderOptions({ helper, results: makeResults() })); + await flush(20); + await flush(0); + + const lastCall = renderFn.mock.calls[renderFn.mock.calls.length - 1][0]; + expect(lastCall.suggestions).toEqual(['! a', '! b', '! c']); + }); + + it('lets transport.prepareSendMessagesRequest mutate the body', async () => { + const prepare = jest.fn((body: Record) => ({ + body: { ...body, injected: true }, + })); + const widget = connectChatPageSuggestions(jest.fn())({ + debounceMs: 5, + transport: { + api: 'https://example.test/agents', + headers: { 'x-foo': 'bar' }, + prepareSendMessagesRequest: prepare, + }, + }); + const helper = algoliasearchHelper(createSearchClient(), ''); + widget.init!(createInitOptions({ helper })); + widget.render!(createRenderOptions({ helper, results: makeResults() })); + await flush(20); + + expect(prepare).toHaveBeenCalledTimes(1); + const [[url, init]] = (global.fetch as jest.Mock).mock.calls; + expect(url).toBe('https://example.test/agents'); + const parsed = JSON.parse((init as RequestInit).body as string); + expect(parsed.injected).toBe(true); + expect((init as RequestInit).headers).toMatchObject({ 'x-foo': 'bar' }); + }); + }); + + describe('handoff', () => { + it('onSuggestionClick calls sendMessage on the index chat render state with page-suggestions referer', async () => { + const sendMessage = jest.fn(); + const setOpen = jest.fn(); + const search = createInstantSearch(); + search.renderState = { + [search.helper!.state.index]: { + chat: { + sendMessage, + setOpen, + status: 'ready', + }, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any; + + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + widget.init!( + createInitOptions({ + instantSearchInstance: search, + helper: search.helper!, + }) + ); + widget.render!( + createRenderOptions({ + instantSearchInstance: search, + helper: search.helper!, + results: makeResults(), + }) + ); + await flush(20); + await flush(0); + + const lastCall = renderFn.mock.calls[renderFn.mock.calls.length - 1][0]; + lastCall.onSuggestionClick('try this'); + + expect(setOpen).toHaveBeenCalledWith(true); + expect(sendMessage).toHaveBeenCalledWith( + { text: 'try this' }, + { headers: { 'x-algolia-referer': 'page-suggestions' } } + ); + }); + + it('canHandoff is false while the chat is mid-stream', async () => { + const search = createInstantSearch(); + search.renderState = { + [search.helper!.state.index]: { + chat: { + sendMessage: jest.fn(), + status: 'streaming', + }, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any; + + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + widget.init!( + createInitOptions({ + instantSearchInstance: search, + helper: search.helper!, + }) + ); + widget.render!( + createRenderOptions({ + instantSearchInstance: search, + helper: search.helper!, + results: makeResults(), + }) + ); + + const lastCall = renderFn.mock.calls[renderFn.mock.calls.length - 1][0]; + expect(lastCall.canHandoff).toBe(false); + }); + }); + + describe('SSR + hydration', () => { + const originalWindow = globalThis.window; + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + delete (globalThis as { window?: Window }).window; + }); + afterEach(() => { + (globalThis as { window?: Window }).window = originalWindow; + }); + + it('registers a server-wait promise during init', () => { + const search = createInstantSearch(); + const registerSpy = jest.spyOn(search, 'registerServerWait'); + const widget = connectChatPageSuggestions(jest.fn())({ + agentId: 'a', + ssrTimeoutMs: 30, + }); + widget.init!( + createInitOptions({ + instantSearchInstance: search, + helper: search.helper!, + }) + ); + expect(registerSpy).toHaveBeenCalledTimes(1); + }); + + it('writes the snapshot when the fetch finishes before the timeout', async () => { + const search = createInstantSearch(); + const widget = connectChatPageSuggestions(jest.fn())({ + agentId: 'a', + ssrTimeoutMs: 500, + }); + widget.init!( + createInitOptions({ + instantSearchInstance: search, + helper: search.helper!, + }) + ); + + // Fire the helper's result event with hits so the SSR wait promise + // dispatches its fetch. + search.helper!.derivedHelpers[0]?.emit('result', { + results: makeResults(), + }); + + // The serverWait waits for fetch to settle; allow microtasks to flush. + await flush(20); + + expect(search._initialChatStates).not.toBeNull(); + expect( + (search._initialChatStates as Record)[ + 'instantsearch-chatPageSuggestions' + ] + ).toEqual({ suggestions: ['a', 'b', 'c'] }); + }); + + it('resolves on the SSR timeout and does not write a snapshot', async () => { + // Slow fetch that never settles within the timeout. + global.fetch = jest.fn(() => new Promise(() => {})) as unknown as typeof fetch; + + const search = createInstantSearch(); + const widget = connectChatPageSuggestions(jest.fn())({ + agentId: 'a', + ssrTimeoutMs: 20, + }); + widget.init!( + createInitOptions({ + instantSearchInstance: search, + helper: search.helper!, + }) + ); + + search.helper!.derivedHelpers[0]?.emit('result', { + results: makeResults(), + }); + + await flush(50); + + expect(search._initialChatStates).toBeNull(); + }); + + it('hydrates from _initialChatStates on client init and skips the first refetch', async () => { + // Put the window back — this is the client-side path. + (globalThis as { window?: Window }).window = originalWindow; + + const search = createInstantSearch(); + search._initialChatStates = { + 'instantsearch-chatPageSuggestions': { suggestions: ['x', 'y'] }, + }; + + const renderFn = jest.fn(); + const widget = connectChatPageSuggestions(renderFn)({ + agentId: 'a', + debounceMs: 5, + }); + widget.init!( + createInitOptions({ + instantSearchInstance: search, + helper: search.helper!, + }) + ); + + // Initial render after init sees the seeded suggestions. + const initCall = renderFn.mock.calls[0][0]; + expect(initCall.suggestions).toEqual(['x', 'y']); + + // First render with results: should set lastStateSignature but NOT + // fetch (hydratedFromSnapshot flag). + widget.render!( + createRenderOptions({ + instantSearchInstance: search, + helper: search.helper!, + results: makeResults({ query: '' }), + }) + ); + await flush(20); + expect(global.fetch).not.toHaveBeenCalled(); + + // Changing the state signature now triggers a refetch. + widget.render!( + createRenderOptions({ + instantSearchInstance: search, + helper: search.helper!, + results: makeResults({ query: 'new' }), + }) + ); + await flush(20); + expect(global.fetch).toHaveBeenCalledTimes(1); + }); + }); +}); diff --git a/packages/instantsearch.js/src/connectors/chat-page-suggestions/connectChatPageSuggestions.ts b/packages/instantsearch.js/src/connectors/chat-page-suggestions/connectChatPageSuggestions.ts new file mode 100644 index 00000000000..f00e66abb6d --- /dev/null +++ b/packages/instantsearch.js/src/connectors/chat-page-suggestions/connectChatPageSuggestions.ts @@ -0,0 +1,590 @@ +import { isChatBusy, openChat } from '../../lib/chat'; +import { + buildEndpoint, + buildPayload, + parseSuggestions, +} from '../../lib/standalone/chat-page-suggestions'; +import { + checkRendering, + createDocumentationMessageGenerator, + getAlgoliaAgent, + getAppIdAndApiKey, + noop, + safelyRunOnBrowser, + warning, +} from '../../lib/utils'; + +import type { + Connector, + IndexRenderState, + InitOptions, + InstantSearch, + RenderOptions, + TransformItems, + WidgetRenderState, +} from '../../types'; +import type { ChatRenderState } from '../chat/connectChat'; +// Re-exported below so the symbol stays at its original public path. +import type { ChatPageSuggestionsTransport } from '../../lib/standalone/chat-page-suggestions'; +import type { SearchResults } from 'algoliasearch-helper'; + +const withUsage = createDocumentationMessageGenerator({ + name: 'chat-page-suggestions', + connector: true, +}); + +export type { ChatPageSuggestionsTransport }; + +export type ChatPageSuggestionsRenderState = { + /** + * Backend-generated prompt strings rendered as clickable pills. + */ + suggestions: string[]; + /** + * Whether suggestions are currently being fetched. + */ + isLoading: boolean; + /** + * Click handler that opens the main chat widget with the given prompt + * already sent. No-ops when no `connectChat` widget is mounted with a + * matching `chatType`. + */ + onSuggestionClick: (prompt: string) => void; + /** + * Whether `onSuggestionClick` can submit. `false` when the main chat + * widget is mid-stream or has no `sendMessage` exposed. + */ + canHandoff: boolean; +}; + +export type ChatPageSuggestionsConnectorParams = { + /** + * The ID of the agent configured in the Algolia dashboard. Required unless + * a custom `transport` is provided. + */ + agentId?: string; + /** + * Maximum number of prompt pills to render. + * @default 4 + */ + maxSuggestions?: number; + /** + * Debounce delay (in ms) before refetching on search-state changes. + * @default 300 + */ + debounceMs?: number; + /** + * Number of hits sampled and sent to the agent as context. + * @default 5 + */ + hitsToSample?: number; + /** + * Additional page-level context to send alongside the search state. Either + * an object or a function returning one (called per fetch). + */ + context?: Record | (() => Record); + /** + * Transform the parsed list before exposing it. + */ + transformItems?: TransformItems; + /** + * Custom transport configuration for the API requests. + */ + transport?: ChatPageSuggestionsTransport; + /** + * Maximum time (in ms) the SSR pipeline waits for the agent response + * before aborting and resolving so the page can be flushed. + * @default 150 + */ + ssrTimeoutMs?: number; + /** + * Render-state key of the main chat widget to hand off to. + * @default 'chat' + */ + chatType?: string; + /** + * Identifier of this connector type. Used as the render-state key. + * @default 'chatPageSuggestions' + */ + type?: string; + /** + * Stable id for SSR snapshot hydration. When omitted, defaults to + * `instantsearch-${type}`. Must match between server and client renders. + */ + id?: string; +}; + +export type ChatPageSuggestionsWidgetDescription = { + $$type: 'ais.chatPageSuggestions'; + renderState: ChatPageSuggestionsRenderState; + indexRenderState: { + chatPageSuggestions: WidgetRenderState< + ChatPageSuggestionsRenderState, + ChatPageSuggestionsConnectorParams + >; + }; +}; + +export type ChatPageSuggestionsConnector = Connector< + ChatPageSuggestionsWidgetDescription, + ChatPageSuggestionsConnectorParams +>; + +type InstantSearchWithChatStates = InstantSearch & { + _initialChatStates: Record | null; +}; + +type ChatPageSuggestionsSnapshot = { + suggestions: string[]; +}; + +// Per-InstantSearch, per-widget-id cache of the in-flight SSR wait promise. +// Two-pass SSR (e.g. React renders the tree twice) shares the same Chat +// pattern from chat-page-summary; reuse the in-flight fetch across passes +// rather than refiring. +const serverWaitRegistry = new WeakMap< + InstantSearch, + Map> +>(); + +function isServerRendering(): boolean { + return safelyRunOnBrowser(() => false, { fallback: () => true }); +} + +const connectChatPageSuggestions: ChatPageSuggestionsConnector = + function connectChatPageSuggestions(renderFn, unmountFn = noop) { + checkRendering(renderFn, withUsage()); + + return (widgetParams) => { + warning( + false, + 'ChatPageSuggestions is not yet stable and will change in the future.' + ); + + const { + agentId, + maxSuggestions = 4, + debounceMs = 300, + hitsToSample = 5, + context, + transformItems = ((items) => items) as NonNullable< + ChatPageSuggestionsConnectorParams['transformItems'] + >, + transport, + ssrTimeoutMs = 150, + chatType = 'chat', + type = 'chatPageSuggestions', + id: idParam, + } = widgetParams; + + if (!agentId && !transport) { + throw new Error( + withUsage( + 'The `agentId` option is required unless a custom `transport` is provided.' + ) + ); + } + + const id = idParam ?? `instantsearch-${type}`; + + let endpoint: string; + let headers: Record; + let suggestions: string[] = []; + let isLoading = false; + let debounceTimer: ReturnType | undefined; + let lastStateSignature: string | null = null; + let searchHelper: InitOptions['helper'] | null = null; + let latestRenderOptions: RenderOptions | null = null; + // Skips the first post-hydration fetch when SSR seeded `suggestions`. + // Set when `_initialChatStates` is consumed; cleared on the first + // `render()` that observes results. + let hydratedFromSnapshot = false; + let hydrationAttempted = false; + + const hydrateFromSnapshot = ( + instantSearchInstance: InstantSearch + ): void => { + if (hydrationAttempted) return; + hydrationAttempted = true; + const ssrSnapshots = ( + instantSearchInstance as InstantSearchWithChatStates + )._initialChatStates; + const snapshot = + ssrSnapshots && ssrSnapshots[id] + ? (ssrSnapshots[id] as ChatPageSuggestionsSnapshot) + : undefined; + if (snapshot && Array.isArray(snapshot.suggestions)) { + suggestions = snapshot.suggestions; + hydratedFromSnapshot = true; + } + }; + + const getStateSignature = (results: SearchResults): string => { + const query = results.query || ''; + const refinements = searchHelper + ? JSON.stringify(searchHelper.state.facetsRefinements) + + JSON.stringify(searchHelper.state.disjunctiveFacetsRefinements) + + JSON.stringify(searchHelper.state.hierarchicalFacetsRefinements) + : ''; + return `${query}|${refinements}`; + }; + + const getOnSuggestionClick = + (instantSearchInstance: InstantSearch, indexId: string) => + (prompt: string) => { + const chatRenderState = instantSearchInstance.renderState?.[indexId] + ? (instantSearchInstance.renderState[indexId][ + chatType as 'chat' + ] as Partial | undefined) + : undefined; + if (!chatRenderState) { + if (__DEV__) { + warning( + false, + `No chat widget found in render state for type "${chatType}". Make sure a \`connectChat\` widget with matching \`type\` is mounted on the same index.` + ); + } + return; + } + openChat(chatRenderState, { + message: prompt, + referer: 'page-suggestions', + }); + }; + + const doFetch = ( + results: SearchResults, + signal?: AbortSignal + ): Promise => { + const resolvedContext = + typeof context === 'function' ? context() : context; + const finalPayload = buildPayload( + { + query: results.query || '', + hitsSample: results.hits.slice(0, hitsToSample), + context: resolvedContext, + }, + { + maxSuggestions, + prepareSendMessagesRequest: transport?.prepareSendMessagesRequest, + } + ); + return fetch(endpoint, { + method: 'POST', + headers: { ...headers, 'Content-Type': 'application/json' }, + body: JSON.stringify(finalPayload), + signal, + }) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error ${response.status}`); + } + return response.json(); + }) + .then((data) => parseSuggestions(data, maxSuggestions)); + }; + + const getWidgetRenderState = ( + renderOptions: InitOptions | RenderOptions + ) => { + const { instantSearchInstance, parent } = renderOptions; + + // React's `useConnector` calls this before `init()` runs (via its + // `useState` initializer). Hydrate the SSR snapshot here so the + // first React render already shows the seeded suggestions. + hydrateFromSnapshot(instantSearchInstance); + + const results = + 'results' in renderOptions ? renderOptions.results : undefined; + const transformed = transformItems(suggestions, { results }); + + const indexId = parent ? parent.getIndexId() : ''; + + const chatRenderState = + indexId && instantSearchInstance.renderState?.[indexId] + ? (instantSearchInstance.renderState[indexId][ + chatType as 'chat' + ] as Partial | undefined) + : undefined; + + // Optimistic when the main chat widget hasn't been observed yet — + // by click time it should be mounted and click reads fresh state. + const canHandoff = chatRenderState + ? Boolean(chatRenderState.sendMessage) && !isChatBusy(chatRenderState) + : true; + + return { + suggestions: transformed, + isLoading, + onSuggestionClick: getOnSuggestionClick( + instantSearchInstance, + indexId + ), + canHandoff, + widgetParams, + }; + }; + + const fetchAndRender = ( + results: SearchResults, + renderOptions: RenderOptions + ) => { + if (!results?.hits?.length) { + suggestions = []; + isLoading = false; + renderFn( + { + ...getWidgetRenderState(renderOptions), + instantSearchInstance: renderOptions.instantSearchInstance, + }, + false + ); + return; + } + + isLoading = true; + renderFn( + { + ...getWidgetRenderState(renderOptions), + instantSearchInstance: renderOptions.instantSearchInstance, + }, + false + ); + + doFetch(results) + .then((next) => { + suggestions = next; + }) + .catch(() => { + suggestions = []; + }) + .finally(() => { + isLoading = false; + renderFn( + { + ...getWidgetRenderState(renderOptions), + instantSearchInstance: renderOptions.instantSearchInstance, + }, + false + ); + }); + }; + + const buildServerWait = ( + instantSearchInstance: InstantSearch + ): Promise => { + return new Promise((resolve) => { + const startedAt = Date.now(); + const abortCtrl = + typeof AbortController !== 'undefined' + ? new AbortController() + : undefined; + + let settled = false; + const settle = () => { + if (settled) return; + settled = true; + // eslint-disable-next-line no-console + console.log( + `[chat-page-suggestions][SSR] wait resolved in ${ + Date.now() - startedAt + }ms (suggestions=${suggestions.length})` + ); + resolve(); + }; + + const timer = setTimeout(() => { + abortCtrl?.abort(); + settle(); + }, ssrTimeoutMs); + + // The helper passed to `init` is the per-index state helper, which + // has no `derivedHelpers` — only the main helper does. The first + // derived helper is the one that actually emits `result` events. + const derivedHelper = + instantSearchInstance.mainHelper?.derivedHelpers?.[0]; + if (!derivedHelper) { + clearTimeout(timer); + settle(); + return; + } + + // Wait for the first result event from the derived helper, then + // fire the fetch. The promise resolves on either the fetch + // settling or the SSR timeout firing — whichever comes first. + const onResult = (event: { results?: SearchResults }) => { + derivedHelper.removeListener('result', onResult); + const results = event?.results; + if (!results || !results.hits?.length) { + clearTimeout(timer); + settle(); + return; + } + doFetch(results, abortCtrl?.signal) + .then((next) => { + if (settled) return; + suggestions = next; + const target = + instantSearchInstance as InstantSearchWithChatStates; + if (!target._initialChatStates) { + target._initialChatStates = {}; + } + target._initialChatStates[id] = { + suggestions: next, + } satisfies ChatPageSuggestionsSnapshot; + }) + .catch(() => { + // Swallow — client will refetch on hydration if needed. + }) + .finally(() => { + clearTimeout(timer); + settle(); + }); + }; + derivedHelper.on('result', onResult); + }); + }; + + return { + $$type: 'ais.chatPageSuggestions', + + init(initOptions) { + const { instantSearchInstance, helper } = initOptions; + searchHelper = helper; + + if (transport) { + endpoint = transport.api; + headers = transport.headers || {}; + } else { + const [appId, apiKey] = getAppIdAndApiKey( + instantSearchInstance.client + ); + + if (!appId || !apiKey) { + throw new Error( + withUsage( + 'Could not extract Algolia credentials from the search client.' + ) + ); + } + + endpoint = buildEndpoint({ appId, agentId: agentId as string }); + headers = { + 'x-algolia-application-id': appId, + 'x-algolia-api-key': apiKey, + 'x-algolia-agent': getAlgoliaAgent(instantSearchInstance.client), + }; + } + + // Client-side: hydrate from SSR snapshot if present so first paint + // matches server HTML and we don't refire the request. Idempotent + // — `getWidgetRenderState()` may have already done this for React's + // pre-init `useState` initializer. + hydrateFromSnapshot(instantSearchInstance); + + if (isServerRendering()) { + let perSearch = serverWaitRegistry.get(instantSearchInstance); + if (!perSearch) { + perSearch = new Map>(); + serverWaitRegistry.set(instantSearchInstance, perSearch); + } + let wait = perSearch.get(id); + if (!wait) { + // eslint-disable-next-line no-console + console.log( + `[chat-page-suggestions][SSR] wait started (timeout=${ssrTimeoutMs}ms)` + ); + wait = buildServerWait(instantSearchInstance); + perSearch.set(id, wait); + } + instantSearchInstance.registerServerWait(wait); + } + + renderFn( + { + ...getWidgetRenderState(initOptions), + instantSearchInstance, + }, + true + ); + }, + + render(renderOptions) { + const { results, instantSearchInstance } = renderOptions; + + latestRenderOptions = renderOptions; + + if (!results) { + renderFn( + { + ...getWidgetRenderState(renderOptions), + instantSearchInstance, + }, + false + ); + return; + } + + const stateSignature = getStateSignature(results); + + // First render after hydration: seed signature without fetching. + if (hydratedFromSnapshot) { + hydratedFromSnapshot = false; + lastStateSignature = stateSignature; + renderFn( + { + ...getWidgetRenderState(renderOptions), + instantSearchInstance, + }, + false + ); + return; + } + + if (stateSignature !== lastStateSignature) { + lastStateSignature = stateSignature; + clearTimeout(debounceTimer); + debounceTimer = setTimeout(() => { + if (latestRenderOptions?.results) { + fetchAndRender( + latestRenderOptions.results, + latestRenderOptions + ); + } + }, debounceMs); + } + + renderFn( + { + ...getWidgetRenderState(renderOptions), + instantSearchInstance, + }, + false + ); + }, + + dispose() { + clearTimeout(debounceTimer); + unmountFn(); + }, + + getRenderState( + renderState, + renderOptions + ): IndexRenderState & + ChatPageSuggestionsWidgetDescription['indexRenderState'] { + return { + ...renderState, + [type as 'chatPageSuggestions']: + this.getWidgetRenderState(renderOptions), + }; + }, + + getWidgetRenderState(renderOptions) { + return getWidgetRenderState(renderOptions); + }, + }; + }; + }; + +export default connectChatPageSuggestions; diff --git a/packages/instantsearch.js/src/connectors/chat/connectChat.ts b/packages/instantsearch.js/src/connectors/chat/connectChat.ts index fcfb47d5065..7aa280c3394 100644 --- a/packages/instantsearch.js/src/connectors/chat/connectChat.ts +++ b/packages/instantsearch.js/src/connectors/chat/connectChat.ts @@ -1,14 +1,12 @@ -import { - DefaultChatTransport, - lastAssistantMessageIsCompleteWithToolCalls, -} from '../../lib/ai-lite'; +import { lastAssistantMessageIsCompleteWithToolCalls } from '../../lib/ai-lite'; import { Chat, SearchIndexToolType } from '../../lib/chat'; +import { createAgentTransport } from '../../lib/chat/createAgentTransport'; +import { createSendMessageWithContext } from '../../lib/chat/sendMessageWithContext'; import { checkRendering, clearRefinements, createDocumentationMessageGenerator, createSendEventForHits, - getAlgoliaAgent, getAppIdAndApiKey, getRefinements, noop, @@ -18,6 +16,7 @@ import { } from '../../lib/utils'; import { flat } from '../../lib/utils/flat'; +import type { DefaultChatTransport } from '../../lib/ai-lite'; import type { AbstractChat, ChatInit as ChatInitAi, @@ -372,101 +371,23 @@ export default (function connectChat( }; const makeChatInstance = (instantSearchInstance: InstantSearch) => { - let transport; - const { client } = instantSearchInstance; - const [appId, apiKey] = getAppIdAndApiKey(client); - - // Filter out custom data parts (like data-suggestions) that the backend doesn't accept - const filterDataParts = (messages: UIMessage[]): UIMessage[] => - messages.map((message) => ({ - ...message, - parts: message.parts?.filter( - (part) => !('type' in part && part.type.startsWith('data-')) - ), - })); - - if ('transport' in options && options.transport) { - const originalPrepare = options.transport.prepareSendMessagesRequest; - transport = new DefaultChatTransport({ - ...options.transport, - prepareSendMessagesRequest: (params) => { - // Call the original prepareSendMessagesRequest if it exists, - // otherwise construct a minimal default body containing only the - // request payload — without leaking transport metadata such as - // resolved headers, api URL, credentials, or `requestMetadata`. - const preparedOrPromise = originalPrepare - ? originalPrepare(params) - : { - body: { - id: params.id, - messageId: params.messageId, - trigger: params.trigger, - messages: params.messages, - ...params.body, - }, - }; - // Then filter out data-* parts - const applyFilter = (prepared: { body: object }) => ({ - ...prepared, - body: { - ...prepared.body, - messages: filterDataParts( - (prepared.body as { messages: UIMessage[] }).messages - ), - }, - }); - - // Handle both sync and async cases - if (preparedOrPromise && 'then' in preparedOrPromise) { - return preparedOrPromise.then(applyFilter); - } - return applyFilter(preparedOrPromise); - }, - }); + if ('chat' in options) { + return options.chat; } - if ('agentId' in options && options.agentId) { - if (!appId || !apiKey) { - throw new Error( - withUsage( - 'Could not extract Algolia credentials from the search client.' - ) - ); - } - const baseApi = `https://${appId}.algolia.net/agent-studio/1/agents/${agentId}/completions?compatibilityMode=ai-sdk-5`; - transport = new DefaultChatTransport({ - api: baseApi, - headers: { - 'x-algolia-application-id': appId, - 'x-algolia-api-key': apiKey, - 'x-algolia-agent': `${getAlgoliaAgent(client)}; chat`, - }, - prepareSendMessagesRequest: ({ id, messages, trigger, messageId }) => { - return { - // Bypass cache when regenerating to ensure fresh responses - api: - trigger === 'regenerate-message' - ? `${baseApi}&cache=false` - : baseApi, - body: { - id, - messageId, - messages: filterDataParts(messages), - }, - }; - }, - }); - } + const transport = createAgentTransport({ + client: instantSearchInstance.client, + agentId: 'agentId' in options ? options.agentId : undefined, + transport: 'transport' in options ? options.transport : undefined, + algoliaAgentSuffix: 'chat', + }); + if (!transport) { throw new Error( withUsage('You need to provide either an `agentId` or a `transport`.') ); } - if ('chat' in options) { - return options.chat; - } - return new Chat({ ...options, transport, @@ -565,8 +486,7 @@ export default (function connectChat( render(); }; - const feedback = - 'feedback' in options ? options.feedback : undefined; + const feedback = 'feedback' in options ? options.feedback : undefined; if (agentId && feedback) { const [appId, apiKey] = getAppIdAndApiKey( initOptions.instantSearchInstance.client @@ -678,56 +598,10 @@ export default (function connectChat( toolsWithAddToolResult[key] = toolWithAddToolResult; }); - const sendMessageWithContext: typeof _chatInstance.sendMessage = ( - message, - ...rest - ) => { - if (!context || !message) { - return _chatInstance.sendMessage(message, ...rest); - } - - const resolvedContext = - typeof context === 'function' ? context() : context; - - let serializedContext: string; - try { - serializedContext = JSON.stringify(resolvedContext); - } catch { - warning( - false, - 'Could not serialize chat context. The message will be sent without context.' - ); - return _chatInstance.sendMessage(message, ...rest); - } - - const contextTextPart = { - type: 'text' as const, - text: ''.concat(serializedContext).concat(''), - }; - - if ('parts' in message && message.parts) { - return _chatInstance.sendMessage({ - ...message, - parts: [contextTextPart, ...message.parts], - text: undefined, - files: undefined, - }, ...rest); - } - - const textContent = - 'text' in message && message.text ? message.text : ''; - - return _chatInstance.sendMessage({ - parts: [ - contextTextPart, - { type: 'text' as const, text: textContent }, - ], - metadata: message.metadata, - messageId: message.messageId, - files: undefined, - text: undefined, - }, ...rest); - }; + const sendMessageWithContext = createSendMessageWithContext( + _chatInstance, + context + ); return { indexUiState: instantSearchInstance.getUiState()[parent.getIndexId()], diff --git a/packages/instantsearch.js/src/connectors/index.ts b/packages/instantsearch.js/src/connectors/index.ts index e7c97a3bfdb..42f78c9b0be 100644 --- a/packages/instantsearch.js/src/connectors/index.ts +++ b/packages/instantsearch.js/src/connectors/index.ts @@ -56,5 +56,6 @@ export { default as connectRelevantSort } from './relevant-sort/connectRelevantS export { default as connectFrequentlyBoughtTogether } from './frequently-bought-together/connectFrequentlyBoughtTogether'; export { default as connectLookingSimilar } from './looking-similar/connectLookingSimilar'; export { default as connectChat } from './chat/connectChat'; +export { default as connectChatPageSuggestions } from './chat-page-suggestions/connectChatPageSuggestions'; export { default as connectFeeds } from './feeds/connectFeeds'; export { default as connectFilterSuggestions } from './filter-suggestions/connectFilterSuggestions'; diff --git a/packages/instantsearch.js/src/lib/InstantSearch.ts b/packages/instantsearch.js/src/lib/InstantSearch.ts index 19baddd252a..758a97d8add 100644 --- a/packages/instantsearch.js/src/lib/InstantSearch.ts +++ b/packages/instantsearch.js/src/lib/InstantSearch.ts @@ -229,6 +229,15 @@ class InstantSearch< public _searchStalledTimer: any; public _initialUiState: TUiState; public _initialResults: InitialResults | null; + /** + * Snapshot of chat-related widget state produced during SSR, keyed by a + * widget-specific id. Value shape is widget-specific (e.g. an array of + * `UIMessage`s for chat-page-summary, or `{ suggestions: string[] }` for + * chat-page-suggestions). Hydrated on the client so widgets can skip + * re-firing their initial agent request after server rendering succeeded. + * @internal + */ + public _initialChatStates: Record | null; public _manuallyResetScheduleSearch: boolean = false; public _resetScheduleSearch?: () => void; public _createURL: CreateURL; @@ -236,6 +245,13 @@ class InstantSearch< public _mainHelperSearch?: AlgoliaSearchHelper['search']; public _hasSearchWidget: boolean = false; public _hasRecommendWidget: boolean = false; + /** + * Promises that widgets registered during SSR init that `waitForResults` + * must await before resolving. Cleared once the wait resolves so subsequent + * SSR passes start fresh. + * @internal + */ + public _serverWaitPromises: Array> = []; public _insights: InstantSearchOptions['insights']; public middleware: Array<{ creator: Middleware; @@ -266,6 +282,27 @@ Use \`InstantSearch.status === "stalled"\` instead.` return this.status === 'stalled'; } + /** + * Registers a promise that `waitForResults()` must await before resolving + * during server-side rendering. Used by widgets that need to do async work + * (e.g. AI completions) outside of the search/recommend lifecycle. + * @internal + */ + public registerServerWait(promise: Promise): void { + this._serverWaitPromises.push(promise); + } + + /** + * Returns the promises registered with `registerServerWait` and clears the + * internal list. Consumed by `waitForResults()` during SSR. + * @internal + */ + public consumeServerWaitPromises(): Array> { + const promises = this._serverWaitPromises; + this._serverWaitPromises = []; + return promises; + } + public constructor(options: InstantSearchOptions) { super(); @@ -375,6 +412,7 @@ See documentation: ${createDocumentationLink({ this._createURL = defaultCreateURL; this._initialUiState = initialUiState as TUiState; this._initialResults = null; + this._initialChatStates = null; this._insights = insights; diff --git a/packages/instantsearch.js/src/lib/chat/chat.ts b/packages/instantsearch.js/src/lib/chat/chat.ts index a629a8886ab..8e3ebcfb340 100644 --- a/packages/instantsearch.js/src/lib/chat/chat.ts +++ b/packages/instantsearch.js/src/lib/chat/chat.ts @@ -16,10 +16,17 @@ export const CACHE_KEY = 'instantsearch-chat-initial-messages'; function getDefaultInitialMessages( id?: string ): TUIMessage[] { - const initialMessages = sessionStorage.getItem( - CACHE_KEY + (id ? `-${id}` : '') - ); - return initialMessages ? JSON.parse(initialMessages) : []; + if (typeof sessionStorage === 'undefined') { + return []; + } + try { + const initialMessages = sessionStorage.getItem( + CACHE_KEY + (id ? `-${id}` : '') + ); + return initialMessages ? JSON.parse(initialMessages) : []; + } catch (e) { + return []; + } } export class ChatState @@ -35,11 +42,17 @@ export class ChatState constructor( id: string | undefined = undefined, - initialMessages: TUiMessage[] = getDefaultInitialMessages(id) + initialMessages?: TUiMessage[], + persist: boolean = true ) { - this._messages = initialMessages; + this._messages = + initialMessages ?? + (persist ? getDefaultInitialMessages(id) : []); + if (!persist) { + return; + } const saveMessagesInLocalStorage = () => { - if (this.status === 'ready') { + if (this.status === 'ready' && typeof sessionStorage !== 'undefined') { try { sessionStorage.setItem( CACHE_KEY + (id ? `-${id}` : ''), @@ -148,9 +161,10 @@ export class Chat< constructor({ messages, agentId, + persist, ...init - }: ChatInit & { agentId?: string }) { - const state = new ChatState(agentId, messages); + }: ChatInit & { agentId?: string; persist?: boolean }) { + const state = new ChatState(agentId, messages, persist); super({ ...init, state }); this._state = state; } diff --git a/packages/instantsearch.js/src/lib/chat/createAgentTransport.ts b/packages/instantsearch.js/src/lib/chat/createAgentTransport.ts new file mode 100644 index 00000000000..8dc95d4710f --- /dev/null +++ b/packages/instantsearch.js/src/lib/chat/createAgentTransport.ts @@ -0,0 +1,125 @@ +import { DefaultChatTransport } from '../ai-lite'; +import { getAlgoliaAgent, getAppIdAndApiKey } from '../utils'; + +import type { SearchClient, CompositionClient } from '../../types'; +import type { UIMessage } from '../ai-lite'; + +export type CreateAgentTransportOptions = { + /** The Algolia search client (for credentials extraction). */ + client: SearchClient | CompositionClient; + /** + * The Algolia agent identifier. When provided, the default Algolia + * agent-studio endpoint is used. + */ + agentId?: string; + /** + * A custom transport options bag. When provided, takes precedence over + * `agentId` and is passed to `DefaultChatTransport`. + */ + transport?: ConstructorParameters[0]; + /** + * Optional algolia-agent suffix appended to the user agent (e.g. `'chat'`, + * `'page-suggestions'`). + */ + algoliaAgentSuffix?: string; +}; + +/** + * Strips `data-*` UI message parts from outgoing messages. The backend + * doesn't accept these — they exist only for client-side UI state. + */ +function filterDataParts( + messages: TUIMessage[] +): TUIMessage[] { + return messages.map((message) => ({ + ...message, + parts: message.parts?.filter( + (part) => !('type' in part && part.type.startsWith('data-')) + ), + })); +} + +/** + * Builds a configured `DefaultChatTransport` for either a custom transport + * or the Algolia agent-studio endpoint, applying the `filterDataParts` shim + * to outgoing messages. + */ +export function createAgentTransport({ + client, + agentId, + transport, + algoliaAgentSuffix = 'chat', +}: CreateAgentTransportOptions): DefaultChatTransport { + if (transport) { + const originalPrepare = transport.prepareSendMessagesRequest; + return new DefaultChatTransport({ + ...transport, + prepareSendMessagesRequest: (params) => { + // Call the original prepareSendMessagesRequest if it exists, + // otherwise construct a minimal default body containing only the + // request payload — without leaking transport metadata such as + // resolved headers, api URL, credentials, or `requestMetadata`. + const preparedOrPromise = originalPrepare + ? originalPrepare(params) + : { + body: { + id: params.id, + messageId: params.messageId, + trigger: params.trigger, + messages: params.messages, + ...params.body, + }, + }; + + const applyFilter = (prepared: { body: object }) => ({ + ...prepared, + body: { + ...prepared.body, + messages: filterDataParts( + (prepared.body as { messages: TUIMessage[] }).messages + ), + }, + }); + + if (preparedOrPromise && 'then' in preparedOrPromise) { + return preparedOrPromise.then(applyFilter); + } + return applyFilter(preparedOrPromise); + }, + }); + } + + if (!agentId) { + return undefined as unknown as DefaultChatTransport; + } + + const [appId, apiKey] = getAppIdAndApiKey(client); + if (!appId || !apiKey) { + throw new Error( + 'Could not extract Algolia credentials from the search client.' + ); + } + + const baseApi = `https://${appId}.algolia.net/agent-studio/1/agents/${agentId}/completions?compatibilityMode=ai-sdk-5`; + + return new DefaultChatTransport({ + api: baseApi, + headers: { + 'x-algolia-application-id': appId, + 'x-algolia-api-key': apiKey, + 'x-algolia-agent': `${getAlgoliaAgent(client)}; ${algoliaAgentSuffix}`, + }, + prepareSendMessagesRequest: ({ id, messages, trigger, messageId }) => { + return { + // Bypass cache when regenerating to ensure fresh responses + api: + trigger === 'regenerate-message' ? `${baseApi}&cache=false` : baseApi, + body: { + id, + messageId, + messages: filterDataParts(messages), + }, + }; + }, + }); +} diff --git a/packages/instantsearch.js/src/lib/chat/openChat.ts b/packages/instantsearch.js/src/lib/chat/openChat.ts index 97696f29650..122fd2e60f8 100644 --- a/packages/instantsearch.js/src/lib/chat/openChat.ts +++ b/packages/instantsearch.js/src/lib/chat/openChat.ts @@ -5,7 +5,11 @@ import type { ChatRenderState } from '../../connectors/chat/connectChat'; * Forwarded to the agent backend as the `x-algolia-referer` header and used * as a correlation tag for attribution. */ -export type ChatReferer = 'prompt-suggestions' | 'ai-mode'; +export type ChatReferer = + | 'prompt-suggestions' + | 'ai-mode' + | 'page-suggestions' + | 'page-summary'; export type OpenChatOptions = { /** diff --git a/packages/instantsearch.js/src/lib/chat/sendMessageWithContext.ts b/packages/instantsearch.js/src/lib/chat/sendMessageWithContext.ts new file mode 100644 index 00000000000..c9b308750ec --- /dev/null +++ b/packages/instantsearch.js/src/lib/chat/sendMessageWithContext.ts @@ -0,0 +1,72 @@ +import { warning } from '../utils'; + +import type { AbstractChat, UIMessage } from '../ai-lite'; + +export type ChatContext = + | Record + | (() => Record); + +/** + * Wraps a chat instance's `sendMessage` so that the configured page/widget + * context is serialized to JSON, wrapped in `` and + * prepended to the user message as a text part. Returns a function that has + * the same shape as `Chat#sendMessage`. + * + * When `context` is undefined, or the message is empty, the original + * `sendMessage` is called unchanged. + */ +export function createSendMessageWithContext( + chat: AbstractChat, + context: ChatContext | undefined +): typeof chat.sendMessage { + const sendMessage: typeof chat.sendMessage = (message, ...rest) => { + if (!context || !message) { + return chat.sendMessage(message, ...rest); + } + + const resolvedContext = typeof context === 'function' ? context() : context; + + let serializedContext: string; + try { + serializedContext = JSON.stringify(resolvedContext); + } catch { + warning( + false, + 'Could not serialize chat context. The message will be sent without context.' + ); + return chat.sendMessage(message, ...rest); + } + + const contextTextPart = { + type: 'text' as const, + text: ''.concat(serializedContext).concat(''), + }; + + if ('parts' in message && message.parts) { + return chat.sendMessage( + { + ...message, + parts: [contextTextPart, ...message.parts], + text: undefined, + files: undefined, + }, + ...rest + ); + } + + const textContent = 'text' in message && message.text ? message.text : ''; + + return chat.sendMessage( + { + parts: [contextTextPart, { type: 'text' as const, text: textContent }], + metadata: message.metadata, + messageId: message.messageId, + files: undefined, + text: undefined, + }, + ...rest + ); + }; + + return sendMessage; +} diff --git a/packages/instantsearch.js/src/lib/server.ts b/packages/instantsearch.js/src/lib/server.ts index 99cfce33fc4..44bdbaf07f6 100644 --- a/packages/instantsearch.js/src/lib/server.ts +++ b/packages/instantsearch.js/src/lib/server.ts @@ -53,19 +53,29 @@ export function waitForResults( return new Promise((resolve, reject) => { let searchResultsReceived = !search._hasSearchWidget; let recommendResultsReceived = !search._hasRecommendWidget || skipRecommend; + + const tryResolve = () => { + if (!searchResultsReceived || !recommendResultsReceived) { + return; + } + // Await any promises that widgets registered during SSR init (e.g. the + // chat-page-summary widget races its agent request against a + // timeout). `allSettled` so a widget rejecting (e.g. abort) doesn't + // crash SSR. + Promise.allSettled(search.consumeServerWaitPromises()).then(() => + resolve(requestParamsList!) + ); + }; + // All derived helpers resolve in the same tick so we're safe only relying // on the first one. helper.derivedHelpers[0].on('result', () => { searchResultsReceived = true; - if (recommendResultsReceived) { - resolve(requestParamsList!); - } + tryResolve(); }); helper.derivedHelpers[0].on('recommend:result', () => { recommendResultsReceived = true; - if (searchResultsReceived) { - resolve(requestParamsList!); - } + tryResolve(); }); // However, we listen to errors that can happen on any derived helper because diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/buildEndpoint.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/buildEndpoint.ts new file mode 100644 index 00000000000..884fb39caad --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/buildEndpoint.ts @@ -0,0 +1,9 @@ +export function buildEndpoint({ + appId, + agentId, +}: { + appId: string; + agentId: string; +}): string { + return `https://${appId}.algolia.net/agent-studio/1/agents/${agentId}/completions?compatibilityMode=ai-sdk-5&stream=false`; +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/buildPayload.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/buildPayload.ts new file mode 100644 index 00000000000..810d8581e3a --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/buildPayload.ts @@ -0,0 +1,41 @@ +export type ChatPageSuggestionsPrepareRequest = ( + body: Record +) => { body: Record }; + +export type BuildPayloadInput = { + query?: string; + hitsSample?: unknown[]; + context?: Record; +}; + +export type BuildPayloadOptions = { + maxSuggestions: number; + prepareSendMessagesRequest?: ChatPageSuggestionsPrepareRequest; +}; + +export function buildPayload( + input: BuildPayloadInput, + { maxSuggestions, prepareSendMessagesRequest }: BuildPayloadOptions +): Record { + const messageText = JSON.stringify({ + query: input.query || '', + hitsSample: input.hitsSample || [], + context: input.context, + maxSuggestions, + }); + + const payload: Record = { + messages: [ + { + id: `sr-${Date.now()}`, + createdAt: new Date().toISOString(), + role: 'user', + parts: [{ type: 'text', text: messageText }], + }, + ], + }; + + return prepareSendMessagesRequest + ? prepareSendMessagesRequest(payload).body + : payload; +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/createChatPageSuggestionsStore.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/createChatPageSuggestionsStore.ts new file mode 100644 index 00000000000..c3c6349386a --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/createChatPageSuggestionsStore.ts @@ -0,0 +1,171 @@ +import { buildPayload } from './buildPayload'; +import { parseSuggestions } from './parseSuggestions'; +import { resolveEndpoint } from './resolveEndpoint'; + +import type { ChatPageSuggestionsTransport } from './types'; + +export type ChatPageSuggestionsStoreParams = { + /** + * Algolia application ID. Required unless `transport` is provided. + */ + appId?: string; + /** + * Algolia API key. Required unless `transport` is provided. + */ + apiKey?: string; + /** + * ID of the agent configured in the Algolia dashboard. Required unless + * `transport` is provided. + */ + agentId?: string; + /** + * Custom transport override (replaces the default agent-studio endpoint). + */ + transport?: ChatPageSuggestionsTransport; + /** + * Maximum number of suggestions to expose. + * @default 4 + */ + maxSuggestions?: number; + /** + * Debounce delay (in ms) for `refresh()` calls. `refreshNow()` bypasses it. + * @default 300 + */ + debounceMs?: number; + /** + * Suggestions to seed state with on construction (e.g. from a server + * `prefetchChatPageSuggestions()` call). + */ + initialSuggestions?: string[]; +}; + +export type ChatPageSuggestionsFetchInput = { + query?: string; + hitsSample?: unknown[]; + context?: Record; +}; + +export type ChatPageSuggestionsStoreState = { + suggestions: string[]; + isLoading: boolean; +}; + +export type ChatPageSuggestionsStore = { + getState: () => ChatPageSuggestionsStoreState; + subscribe: (listener: () => void) => () => void; + /** Debounced fetch. */ + refresh: (input: ChatPageSuggestionsFetchInput) => void; + /** Fetch immediately, bypassing the debounce. Resolves when state updates. */ + refreshNow: (input: ChatPageSuggestionsFetchInput) => Promise; + dispose: () => void; +}; + +/** + * Framework-agnostic reactive store powering the standalone chat-page + * suggestions experience. Consumers drive refresh manually (or via a React + * hook on top); the store handles fetching, parsing, debouncing, and + * subscriber notification. + */ +export function createChatPageSuggestionsStore( + params: ChatPageSuggestionsStoreParams +): ChatPageSuggestionsStore { + const { + maxSuggestions = 4, + debounceMs = 300, + initialSuggestions = [], + } = params; + + const { endpoint, headers, prepareSendMessagesRequest } = resolveEndpoint({ + transport: params.transport, + appId: params.appId, + apiKey: params.apiKey, + agentId: params.agentId, + }); + + let state: ChatPageSuggestionsStoreState = { + suggestions: initialSuggestions, + isLoading: false, + }; + const listeners = new Set<() => void>(); + let debounceTimer: ReturnType | undefined; + let currentController: AbortController | undefined; + let disposed = false; + + const notify = () => { + listeners.forEach((listener) => listener()); + }; + + const setState = (next: Partial) => { + state = { ...state, ...next }; + notify(); + }; + + const doFetch = async (input: ChatPageSuggestionsFetchInput) => { + if (disposed) return; + + currentController?.abort(); + const controller = + typeof AbortController !== 'undefined' ? new AbortController() : undefined; + currentController = controller; + + setState({ isLoading: true }); + + try { + const payload = buildPayload(input, { + maxSuggestions, + prepareSendMessagesRequest, + }); + const response = await fetch(endpoint, { + method: 'POST', + headers: { ...headers, 'Content-Type': 'application/json' }, + body: JSON.stringify(payload), + signal: controller?.signal, + }); + if (controller?.signal.aborted || disposed) return; + if (!response.ok) { + throw new Error(`HTTP error ${response.status}`); + } + const data = await response.json(); + if (controller?.signal.aborted || disposed) return; + setState({ + suggestions: parseSuggestions(data, maxSuggestions), + isLoading: false, + }); + } catch (_error) { + if (controller?.signal.aborted || disposed) return; + setState({ suggestions: [], isLoading: false }); + } + }; + + return { + getState: () => state, + + subscribe(listener) { + listeners.add(listener); + return () => { + listeners.delete(listener); + }; + }, + + refresh(input) { + if (disposed) return; + clearTimeout(debounceTimer); + debounceTimer = setTimeout(() => { + doFetch(input); + }, debounceMs); + }, + + refreshNow(input) { + if (disposed) return Promise.resolve(); + clearTimeout(debounceTimer); + return doFetch(input); + }, + + dispose() { + disposed = true; + clearTimeout(debounceTimer); + currentController?.abort(); + listeners.clear(); + }, + }; +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/dispatchSuggestionClick.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/dispatchSuggestionClick.ts new file mode 100644 index 00000000000..ef3a2c00782 --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/dispatchSuggestionClick.ts @@ -0,0 +1,38 @@ +/** + * Name of the `CustomEvent` dispatched on `window` when a standalone chat-page + * suggestion pill is clicked. Listen on `window` to handle the click: + * + * ```ts + * window.addEventListener(CHAT_PAGE_SUGGESTION_CLICK_EVENT, (event) => { + * myChat.send(event.detail.prompt); + * }); + * ``` + */ +export const CHAT_PAGE_SUGGESTION_CLICK_EVENT = + 'algolia:chat-page-suggestion-click'; + +export type ChatPageSuggestionClickDetail = { + prompt: string; + source?: string; +}; + +declare global { + interface WindowEventMap { + 'algolia:chat-page-suggestion-click': CustomEvent; + } +} + +export function dispatchSuggestionClick(prompt: string, source?: string): void { + if (typeof window === 'undefined') { + return; + } + window.dispatchEvent( + new CustomEvent( + CHAT_PAGE_SUGGESTION_CLICK_EVENT, + { + detail: { prompt, source }, + bubbles: true, + } + ) + ); +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/index.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/index.ts new file mode 100644 index 00000000000..172cab7e484 --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/index.ts @@ -0,0 +1,30 @@ +export { buildEndpoint } from './buildEndpoint'; +export { buildPayload } from './buildPayload'; +export { parseSuggestions } from './parseSuggestions'; +export { resolveEndpoint } from './resolveEndpoint'; +export { + CHAT_PAGE_SUGGESTION_CLICK_EVENT, + dispatchSuggestionClick, +} from './dispatchSuggestionClick'; +export { createChatPageSuggestionsStore } from './createChatPageSuggestionsStore'; +export { prefetchChatPageSuggestions } from './prefetchChatPageSuggestions'; + +export type { + BuildPayloadInput, + BuildPayloadOptions, + ChatPageSuggestionsPrepareRequest, +} from './buildPayload'; +export type { ResolvedEndpoint } from './resolveEndpoint'; +export type { ChatPageSuggestionClickDetail } from './dispatchSuggestionClick'; +export type { + ChatPageSuggestionsStore, + ChatPageSuggestionsStoreParams, + ChatPageSuggestionsStoreState, + ChatPageSuggestionsFetchInput, +} from './createChatPageSuggestionsStore'; +export type { PrefetchChatPageSuggestionsParams } from './prefetchChatPageSuggestions'; +export type { + ChatPageSuggestionsTransport, + ChatPageSuggestionsCredentials, + ChatPageSuggestionsEndpoint, +} from './types'; diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/parseSuggestions.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/parseSuggestions.ts new file mode 100644 index 00000000000..2258f062434 --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/parseSuggestions.ts @@ -0,0 +1,17 @@ +export function parseSuggestions(data: unknown, maxSuggestions: number): string[] { + try { + const parts = (data as { parts?: Array<{ text?: string }> })?.parts; + if (!parts || !parts[1]?.text) { + return []; + } + const parsed = JSON.parse(parts[1].text); + return (Array.isArray(parsed) ? parsed : []) + .filter( + (s: unknown): s is string => + typeof s === 'string' && s.trim().length > 0 + ) + .slice(0, maxSuggestions); + } catch (e) { + return []; + } +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/prefetchChatPageSuggestions.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/prefetchChatPageSuggestions.ts new file mode 100644 index 00000000000..e79ee2dcd63 --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/prefetchChatPageSuggestions.ts @@ -0,0 +1,121 @@ +import { buildPayload } from './buildPayload'; +import { parseSuggestions } from './parseSuggestions'; +import { resolveEndpoint } from './resolveEndpoint'; + +import type { ChatPageSuggestionsTransport } from './types'; + +export type PrefetchChatPageSuggestionsParams = { + /** + * Algolia application ID. Required unless `transport` is provided. + */ + appId?: string; + /** + * Algolia API key. Required unless `transport` is provided. + */ + apiKey?: string; + /** + * ID of the agent configured in the Algolia dashboard. Required unless + * `transport` is provided. + */ + agentId?: string; + /** + * Custom transport override (replaces the default agent-studio endpoint). + */ + transport?: ChatPageSuggestionsTransport; + /** + * Maximum number of suggestions to return. + * @default 4 + */ + maxSuggestions?: number; + /** + * The current search query, forwarded to the agent as context. + */ + query?: string; + /** + * Hits sampled from the current search results, forwarded to the agent as + * context. Trim to the size you want to send; the helper does not slice. + */ + hitsSample?: unknown[]; + /** + * Additional page-level context (e.g. product info on a PDP). + */ + context?: Record; + /** + * Maximum time (in ms) to wait for the agent response before aborting. + * @default 1500 + */ + timeoutMs?: number; + /** + * Caller-supplied abort signal. Combined with the internal timeout signal. + */ + signal?: AbortSignal; +}; + +/** + * Server-safe, one-shot fetch of chat page suggestions. Use from a Next.js + * Server Component, RSC loader, or any other server runtime to pre-fetch the + * pills and hydrate the client component via `initialSuggestions`. + * + * @throws on transport / abort error. Wrap in `try/catch` (or `Promise.race`) + * if you need to fail open. + */ +export async function prefetchChatPageSuggestions( + params: PrefetchChatPageSuggestionsParams +): Promise { + const { + maxSuggestions = 4, + query, + hitsSample, + context, + timeoutMs = 1500, + signal: callerSignal, + } = params; + + const { endpoint, headers, prepareSendMessagesRequest } = resolveEndpoint({ + transport: params.transport, + appId: params.appId, + apiKey: params.apiKey, + agentId: params.agentId, + }); + + const payload = buildPayload( + { query, hitsSample, context }, + { maxSuggestions, prepareSendMessagesRequest } + ); + + const controller = + typeof AbortController !== 'undefined' ? new AbortController() : undefined; + const timer = controller + ? setTimeout(() => controller.abort(), timeoutMs) + : undefined; + + // If the caller passes a signal, forward its abort to our controller so a + // single fetch is governed by both timeouts. + if (callerSignal && controller) { + if (callerSignal.aborted) { + controller.abort(); + } else { + callerSignal.addEventListener('abort', () => controller.abort(), { + once: true, + }); + } + } + + try { + const response = await fetch(endpoint, { + method: 'POST', + headers: { ...headers, 'Content-Type': 'application/json' }, + body: JSON.stringify(payload), + signal: controller?.signal, + }); + if (!response.ok) { + throw new Error(`HTTP error ${response.status}`); + } + const data = await response.json(); + return parseSuggestions(data, maxSuggestions); + } finally { + if (timer !== undefined) { + clearTimeout(timer); + } + } +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/resolveEndpoint.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/resolveEndpoint.ts new file mode 100644 index 00000000000..ddf4211a3ed --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/resolveEndpoint.ts @@ -0,0 +1,38 @@ +import { buildEndpoint } from './buildEndpoint'; + +import type { ChatPageSuggestionsTransport } from './types'; + +export type ResolvedEndpoint = { + endpoint: string; + headers: Record; + prepareSendMessagesRequest?: ChatPageSuggestionsTransport['prepareSendMessagesRequest']; +}; + +export function resolveEndpoint(params: { + transport?: ChatPageSuggestionsTransport; + appId?: string; + apiKey?: string; + agentId?: string; +}): ResolvedEndpoint { + if (params.transport) { + return { + endpoint: params.transport.api, + headers: params.transport.headers || {}, + prepareSendMessagesRequest: params.transport.prepareSendMessagesRequest, + }; + } + + if (!params.appId || !params.apiKey || !params.agentId) { + throw new Error( + '[chat-page-suggestions] Either `transport` or `{ appId, apiKey, agentId }` is required.' + ); + } + + return { + endpoint: buildEndpoint({ appId: params.appId, agentId: params.agentId }), + headers: { + 'x-algolia-application-id': params.appId, + 'x-algolia-api-key': params.apiKey, + }, + }; +} diff --git a/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/types.ts b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/types.ts new file mode 100644 index 00000000000..7c778144f40 --- /dev/null +++ b/packages/instantsearch.js/src/lib/standalone/chat-page-suggestions/types.ts @@ -0,0 +1,35 @@ +import type { ChatPageSuggestionsPrepareRequest } from './buildPayload'; + +export type ChatPageSuggestionsTransport = { + /** + * The custom API endpoint URL. + */ + api: string; + /** + * Custom headers to send with the request. + */ + headers?: Record; + /** + * Function to prepare the request body before sending. + */ + prepareSendMessagesRequest?: ChatPageSuggestionsPrepareRequest; +}; + +export type ChatPageSuggestionsCredentials = { + /** + * Algolia application ID. + */ + appId: string; + /** + * Algolia API key with permissions for the agent. + */ + apiKey: string; + /** + * ID of the agent configured in the Algolia dashboard. + */ + agentId: string; +}; + +export type ChatPageSuggestionsEndpoint = + | { transport: ChatPageSuggestionsTransport; credentials?: never } + | { transport?: never; credentials: ChatPageSuggestionsCredentials }; diff --git a/packages/instantsearch.js/src/widgets/__tests__/index.test.ts b/packages/instantsearch.js/src/widgets/__tests__/index.test.ts index c4b9a506700..c04c45c67b3 100644 --- a/packages/instantsearch.js/src/widgets/__tests__/index.test.ts +++ b/packages/instantsearch.js/src/widgets/__tests__/index.test.ts @@ -173,6 +173,13 @@ function initiateAllWidgets(): Array<[WidgetNames, Widget | IndexWidget]> { return autocomplete; } + case 'chatPageSuggestions': { + const chatPageSuggestions = widget as Widgets['chatPageSuggestions']; + return chatPageSuggestions({ + container, + agentId: 'test-agent-id', + }); + } case 'filterSuggestions': { const filterSuggestions = widget as Widgets['filterSuggestions']; return filterSuggestions({ diff --git a/packages/instantsearch.js/src/widgets/chat-page-suggestions/chat-page-suggestions.tsx b/packages/instantsearch.js/src/widgets/chat-page-suggestions/chat-page-suggestions.tsx new file mode 100644 index 00000000000..2efc873916e --- /dev/null +++ b/packages/instantsearch.js/src/widgets/chat-page-suggestions/chat-page-suggestions.tsx @@ -0,0 +1,102 @@ +/** @jsx h */ + +import { createChatPromptSuggestionsComponent } from 'instantsearch-ui-components'; +import { h, render } from 'preact'; + +import connectChatPageSuggestions from '../../connectors/chat-page-suggestions/connectChatPageSuggestions'; +import { + getContainerNode, + createDocumentationMessageGenerator, +} from '../../lib/utils'; + +import type { + ChatPageSuggestionsRenderState, + ChatPageSuggestionsConnectorParams, + ChatPageSuggestionsWidgetDescription, +} from '../../connectors/chat-page-suggestions/connectChatPageSuggestions'; +import type { WidgetFactory, Renderer } from '../../types'; +import type { ChatPromptSuggestionsClassNames } from 'instantsearch-ui-components'; + +const withUsage = createDocumentationMessageGenerator({ + name: 'chat-page-suggestions', +}); + +const ChatPromptSuggestions = createChatPromptSuggestionsComponent({ + createElement: h, + Fragment: 'fragment', +}); + +export type ChatPageSuggestionsCSSClasses = + Partial; + +type ChatPageSuggestionsWidgetParams = { + /** CSS Selector or HTMLElement to insert the widget. */ + container: string | HTMLElement; + /** CSS classes to add. */ + cssClasses?: ChatPageSuggestionsCSSClasses; +}; + +export type ChatPageSuggestionsWidget = WidgetFactory< + ChatPageSuggestionsWidgetDescription & { + $$widgetType: 'ais.chatPageSuggestions'; + }, + ChatPageSuggestionsConnectorParams, + ChatPageSuggestionsWidgetParams +>; + +const createRenderer = + ({ + containerNode, + cssClasses, + maxSuggestions, + }: { + containerNode: HTMLElement; + cssClasses: ChatPageSuggestionsCSSClasses; + maxSuggestions?: number; + }): Renderer< + ChatPageSuggestionsRenderState, + Partial + > => + (props) => { + const { suggestions, isLoading, onSuggestionClick, canHandoff } = props; + + render( + , + containerNode + ); + }; + +export default (function chatPageSuggestions( + widgetParams: ChatPageSuggestionsWidgetParams & + ChatPageSuggestionsConnectorParams +) { + const { container, cssClasses = {}, ...connectorParams } = widgetParams || {}; + + if (!container) { + throw new Error(withUsage('The `container` option is required.')); + } + + const containerNode = getContainerNode(container); + + const specializedRenderer = createRenderer({ + containerNode, + cssClasses, + maxSuggestions: connectorParams.maxSuggestions, + }); + + const makeWidget = connectChatPageSuggestions(specializedRenderer, () => + render(null, containerNode) + ); + + return { + ...makeWidget(connectorParams), + $$widgetType: 'ais.chatPageSuggestions', + }; +} satisfies ChatPageSuggestionsWidget); diff --git a/packages/instantsearch.js/src/widgets/index.ts b/packages/instantsearch.js/src/widgets/index.ts index 9b2144d826a..5f93ba12ad9 100644 --- a/packages/instantsearch.js/src/widgets/index.ts +++ b/packages/instantsearch.js/src/widgets/index.ts @@ -62,4 +62,5 @@ export { default as voiceSearch } from './voice-search/voice-search'; export { default as frequentlyBoughtTogether } from './frequently-bought-together/frequently-bought-together'; export { default as lookingSimilar } from './looking-similar/looking-similar'; export { default as chat } from './chat/chat'; +export { default as chatPageSuggestions } from './chat-page-suggestions/chat-page-suggestions'; export { default as filterSuggestions } from './filter-suggestions/filter-suggestions'; diff --git a/packages/instantsearch.js/test/createInstantSearch.ts b/packages/instantsearch.js/test/createInstantSearch.ts index bc7fb1d3c3b..83fe32177c5 100644 --- a/packages/instantsearch.js/test/createInstantSearch.ts +++ b/packages/instantsearch.js/test/createInstantSearch.ts @@ -35,6 +35,9 @@ export const createInstantSearch = ( insightsClient: null, middleware: [], renderState: {}, + _serverWaitPromises: [] as Array>, + registerServerWait: jest.fn(), + consumeServerWaitPromises: jest.fn(() => []), scheduleStalledRender: defer(jest.fn()), scheduleSearch: defer(jest.fn()), scheduleRender: defer(jest.fn()), @@ -42,6 +45,7 @@ export const createInstantSearch = ( _searchStalledTimer: null, _initialUiState: {}, _initialResults: null, + _initialChatStates: null, _createURL: jest.fn(() => '#'), _insights: undefined, _hasRecommendWidget: false, diff --git a/packages/react-instantsearch-core/src/components/InstantSearchSSRProvider.tsx b/packages/react-instantsearch-core/src/components/InstantSearchSSRProvider.tsx index a179ce9860e..4cf3c3abecc 100644 --- a/packages/react-instantsearch-core/src/components/InstantSearchSSRProvider.tsx +++ b/packages/react-instantsearch-core/src/components/InstantSearchSSRProvider.tsx @@ -8,6 +8,12 @@ import type { ReactNode } from 'react'; export type InstantSearchServerState = { initialResults: InitialResults; + /** + * Per-chat-id snapshots produced by chat widgets during SSR. Hydrated on + * the client so the widget can render the assistant response without + * refiring the agent request. + */ + initialChatStates?: Record; }; export type InstantSearchSSRProviderProps = diff --git a/packages/react-instantsearch-core/src/connectors/useChatPageSuggestions.ts b/packages/react-instantsearch-core/src/connectors/useChatPageSuggestions.ts new file mode 100644 index 00000000000..52cff9e49c9 --- /dev/null +++ b/packages/react-instantsearch-core/src/connectors/useChatPageSuggestions.ts @@ -0,0 +1,21 @@ +import connectChatPageSuggestions from 'instantsearch.js/es/connectors/chat-page-suggestions/connectChatPageSuggestions'; + +import { useConnector } from '../hooks/useConnector'; + +import type { AdditionalWidgetProperties } from '../hooks/useConnector'; +import type { + ChatPageSuggestionsConnectorParams, + ChatPageSuggestionsWidgetDescription, +} from 'instantsearch.js/es/connectors/chat-page-suggestions/connectChatPageSuggestions'; + +export type UseChatPageSuggestionsProps = ChatPageSuggestionsConnectorParams; + +export function useChatPageSuggestions( + props: UseChatPageSuggestionsProps, + additionalWidgetProperties?: AdditionalWidgetProperties +) { + return useConnector< + ChatPageSuggestionsConnectorParams, + ChatPageSuggestionsWidgetDescription + >(connectChatPageSuggestions, props, additionalWidgetProperties); +} diff --git a/packages/react-instantsearch-core/src/index.ts b/packages/react-instantsearch-core/src/index.ts index bb96081d093..4931d6b51e7 100644 --- a/packages/react-instantsearch-core/src/index.ts +++ b/packages/react-instantsearch-core/src/index.ts @@ -9,6 +9,7 @@ export * from './components/InstantSearchSSRProvider'; export * from './connectors/useAutocomplete'; export * from './connectors/useBreadcrumb'; export * from './connectors/useChat'; +export * from './connectors/useChatPageSuggestions'; export * from './connectors/useClearRefinements'; export * from './connectors/useConfigure'; export * from './connectors/useCurrentRefinements'; diff --git a/packages/react-instantsearch-core/src/lib/useInstantSearchApi.ts b/packages/react-instantsearch-core/src/lib/useInstantSearchApi.ts index 8269c64c47e..63a4d4a9239 100644 --- a/packages/react-instantsearch-core/src/lib/useInstantSearchApi.ts +++ b/packages/react-instantsearch-core/src/lib/useInstantSearchApi.ts @@ -53,6 +53,24 @@ export type InternalInstantSearch< * @private */ _preventWidgetCleanup?: boolean; + /** + * Registers a promise that `waitForResults()` must await before resolving + * during SSR. Stripped from public `.d.ts` so it's re-declared here. + * @private + */ + registerServerWait(promise: Promise): void; + /** + * Returns and clears the promises registered with `registerServerWait`. + * Stripped from public `.d.ts` so it's re-declared here. + * @private + */ + consumeServerWaitPromises(): Array>; + /** + * SSR snapshot of chat messages keyed by chat instance id. Re-declared + * here because it's stripped from the public `.d.ts`. + * @private + */ + _initialChatStates: Record | null; }; export function useInstantSearchApi( @@ -63,6 +81,7 @@ export function useInstantSearchApi( const serverState = useInstantSearchSSRContext(); const { waitForResultsRef } = useRSCContext(); const initialResults = serverState?.initialResults; + const initialChatStates = serverState?.initialChatStates; const prevPropsRef = useRef(props); const shouldRenderAtOnce = @@ -108,6 +127,9 @@ export function useInstantSearchApi( // an additional network request. (This is equivalent to monkey-patching // `scheduleSearch` to a noop.) search._initialResults = initialResults || {}; + if (initialChatStates) { + search._initialChatStates = initialChatStates; + } // We don't rely on the `defer` to reset the schedule search, but will call // `search._resetScheduleSearch()` manually in the effect after children // mount in `InstantSearch`. diff --git a/packages/react-instantsearch-core/src/server/getServerState.tsx b/packages/react-instantsearch-core/src/server/getServerState.tsx index 6d43cedac5e..8e1909ea912 100644 --- a/packages/react-instantsearch-core/src/server/getServerState.tsx +++ b/packages/react-instantsearch-core/src/server/getServerState.tsx @@ -136,11 +136,13 @@ function execute({ return waitForResults(searchRef.current, skipRecommend); }) .then((requestParamsList) => { + const search = searchRef.current! as InstantSearch & { + _initialChatStates?: Record | null; + }; + const initialChatStates = search._initialChatStates ?? undefined; return { - initialResults: getInitialResults( - searchRef.current!.mainIndex, - requestParamsList - ), + initialResults: getInitialResults(search.mainIndex, requestParamsList), + ...(initialChatStates ? { initialChatStates } : {}), }; }); } diff --git a/packages/react-instantsearch-nextjs/src/InitializePromise.ts b/packages/react-instantsearch-nextjs/src/InitializePromise.ts index 0cc63a0dc3f..db430c4d68b 100644 --- a/packages/react-instantsearch-nextjs/src/InitializePromise.ts +++ b/packages/react-instantsearch-nextjs/src/InitializePromise.ts @@ -66,24 +66,39 @@ export function InitializePromise({ nonce }: InitializePromiseProps) { new Promise((resolve) => { let searchReceived = false; let recommendReceived = false; + const tryResolve = () => { + if (search._hasSearchWidget && !searchReceived) return; + if (search._hasRecommendWidget && !recommendReceived) return; + // Await any promises that widgets registered during SSR init (e.g. the + // chat-page-suggestions widget races its agent request against a + // timeout). `allSettled` so a widget rejecting (e.g. abort) doesn't + // crash SSR. + Promise.allSettled(search.consumeServerWaitPromises()).then(() => + resolve() + ); + }; search.mainHelper!.derivedHelpers[0].once('result', () => { searchReceived = true; - if (!search._hasRecommendWidget || recommendReceived) { - resolve(); - } + tryResolve(); }); search.mainHelper!.derivedHelpers[0].once('recommend:result', () => { recommendReceived = true; - if (!search._hasSearchWidget || searchReceived) { - resolve(); - } + tryResolve(); }); }); const injectInitialResults = () => { const options = { inserted: false }; const results = getInitialResults(search.mainIndex, requestParamsList); - insertHTML(createInsertHTML({ options, results, nonce })); + const chatStates = + ( + search as typeof search & { + _initialChatStates?: Record | null; + } + )._initialChatStates ?? undefined; + insertHTML( + createInsertHTML({ options, results, chatStates, nonce }) + ); }; if (waitForResultsRef?.current === null) { diff --git a/packages/react-instantsearch-nextjs/src/InstantSearchNext.tsx b/packages/react-instantsearch-nextjs/src/InstantSearchNext.tsx index c32939ac5ec..c6e8899e6db 100644 --- a/packages/react-instantsearch-nextjs/src/InstantSearchNext.tsx +++ b/packages/react-instantsearch-nextjs/src/InstantSearchNext.tsx @@ -21,9 +21,13 @@ import type { } from 'react-instantsearch-core'; const InstantSearchInitialResults = Symbol.for('InstantSearchInitialResults'); +const InstantSearchInitialChatStates = Symbol.for( + 'InstantSearchInitialChatStates' +); declare global { interface Window { [InstantSearchInitialResults]?: InitialResults; + [InstantSearchInitialChatStates]?: Record; } } @@ -106,6 +110,9 @@ function ServerOrHydrationProvider({ const initialResults = safelyRunOnBrowser( () => window[InstantSearchInitialResults] ); + const initialChatStates = safelyRunOnBrowser( + () => window[InstantSearchInitialChatStates] + ); return ( diff --git a/packages/react-instantsearch-nextjs/src/createInsertHTML.tsx b/packages/react-instantsearch-nextjs/src/createInsertHTML.tsx index 4678eb1d67c..b8300680798 100644 --- a/packages/react-instantsearch-nextjs/src/createInsertHTML.tsx +++ b/packages/react-instantsearch-nextjs/src/createInsertHTML.tsx @@ -8,10 +8,12 @@ export const createInsertHTML = ({ options, results, + chatStates, nonce, }: { options: { inserted: boolean }; results: InitialResults; + chatStates?: Record; nonce?: string; }) => () => { @@ -20,13 +22,25 @@ export const createInsertHTML = } options.inserted = true; return ( -