@n8n/ai-utilities 0.30.0 → 0.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,12 @@ export interface AgentTimeoutOptions {
6
6
  bodyTimeout?: number;
7
7
  connectTimeout?: number;
8
8
  }
9
- export declare function getProxyAgent(targetUrl?: string, timeoutOptions?: AgentTimeoutOptions, lookup?: LookupFunction): Agent | ProxyAgent | undefined;
10
- export declare function proxyFetch(input: RequestInfo | URL, init?: RequestInit, timeoutOptions?: AgentTimeoutOptions, lookup?: LookupFunction): Promise<Response>;
9
+ export declare function getProxyAgent(targetUrl?: string, timeoutOptions?: AgentTimeoutOptions, lookup?: LookupFunction): Agent | ProxyAgent;
10
+ export interface ProxyFetchOptions {
11
+ input: RequestInfo | URL;
12
+ init?: RequestInit;
13
+ timeoutOptions?: AgentTimeoutOptions;
14
+ lookup: LookupFunction;
15
+ }
16
+ export declare function proxyFetch({ input, init, timeoutOptions, lookup, }: ProxyFetchOptions): Promise<Response>;
11
17
  export declare function getNodeProxyAgent(targetUrl?: string, agentOptions?: AgentOptions): import("https").Agent | undefined;
@@ -4,10 +4,12 @@ exports.getProxyAgent = getProxyAgent;
4
4
  exports.proxyFetch = proxyFetch;
5
5
  exports.getNodeProxyAgent = getNodeProxyAgent;
6
6
  const proxy_1 = require("@n8n/backend-network/proxy");
7
+ const node_dns_1 = require("node:dns");
7
8
  const undici_1 = require("undici");
8
9
  const DEFAULT_TIMEOUT = parseInt(process.env.N8N_AI_TIMEOUT_MAX ?? '3600000', 10);
9
10
  const PROXY_FALLBACK_TARGET = 'https://example.nonexistent/';
10
- function getProxyAgent(targetUrl, timeoutOptions, lookup) {
11
+ let sharedAgent;
12
+ function getProxyAgent(targetUrl, timeoutOptions, lookup = node_dns_1.lookup) {
11
13
  const proxyUrl = (0, proxy_1.resolveProxyUrl)(targetUrl, PROXY_FALLBACK_TARGET);
12
14
  const agentOptions = {
13
15
  headersTimeout: timeoutOptions?.headersTimeout ?? DEFAULT_TIMEOUT,
@@ -16,21 +18,17 @@ function getProxyAgent(targetUrl, timeoutOptions, lookup) {
16
18
  connectTimeout: timeoutOptions.connectTimeout,
17
19
  }),
18
20
  };
19
- if (!proxyUrl) {
20
- if (lookup) {
21
- return new undici_1.Agent({ ...agentOptions, connect: { lookup } });
22
- }
23
- if (timeoutOptions) {
24
- return new undici_1.Agent(agentOptions);
25
- }
26
- if (process.env.N8N_AI_TIMEOUT_MAX) {
27
- return new undici_1.Agent(agentOptions);
28
- }
29
- return undefined;
21
+ if (proxyUrl) {
22
+ return new undici_1.ProxyAgent({ uri: proxyUrl, ...agentOptions });
23
+ }
24
+ const isDefaultCase = !timeoutOptions && !process.env.N8N_AI_TIMEOUT_MAX && lookup === node_dns_1.lookup;
25
+ if (isDefaultCase) {
26
+ sharedAgent ??= new undici_1.Agent({ ...agentOptions, connect: { lookup } });
27
+ return sharedAgent;
30
28
  }
31
- return new undici_1.ProxyAgent({ uri: proxyUrl, ...agentOptions });
29
+ return new undici_1.Agent({ ...agentOptions, connect: { lookup } });
32
30
  }
33
- async function proxyFetch(input, init, timeoutOptions, lookup) {
31
+ async function proxyFetch({ input, init, timeoutOptions, lookup, }) {
34
32
  const targetUrl = input instanceof Request ? input.url : input.toString();
35
33
  const dispatcher = getProxyAgent(targetUrl, timeoutOptions, lookup);
36
34
  return (await (0, undici_1.fetch)(input, {
@@ -1 +1 @@
1
- {"version":3,"file":"http-proxy-agent.js","sourceRoot":"","sources":["../../../src/utils/http-proxy-agent.ts"],"names":[],"mappings":";;;;;AAkBA,sDAAoF;AAIpF,mCAAiE;AAejE,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC;AAMlF,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAsB7D,uBACC,SAAkB,EAClB,cAAoC,EACpC,MAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,MAAM,YAAY,GAAG;QACpB,cAAc,EAAE,cAAc,EAAE,cAAc,IAAI,eAAe;QACjE,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,eAAe;QAC3D,GAAG,CAAC,cAAc,EAAE,cAAc,KAAK,SAAS,IAAI;YACnD,cAAc,EAAE,cAAc,CAAC,cAAc;SAC7C,CAAC;KACF,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,cAAK,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,cAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACpC,OAAO,IAAI,cAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,mBAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAC3D,CAAC;AAWM,KAAK,qBACX,KAAwB,EACxB,IAAkB,EAClB,cAAoC,EACpC,MAAuB;IAEvB,MAAM,SAAS,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAIpE,OAAO,CAAC,MAAM,IAAA,cAAW,EAAC,KAA0C,EAAE;QACrE,GAAI,IAA0C;QAC9C,UAAU;KACV,CAAC,CAAwB,CAAC;AAC5B,CAAC;AAUD,2BAAkC,SAAkB,EAAE,YAA2B;IAChF,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAA,6BAAqB,EAAC,SAAS,IAAI,qBAAqB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"http-proxy-agent.js","sourceRoot":"","sources":["../../../src/utils/http-proxy-agent.ts"],"names":[],"mappings":";;;;;AAkBA,sDAAoF;AACpF,uCAAmD;AAInD,mCAAiE;AAejE,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC;AAMlF,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAO7D,IAAI,WAA8B,CAAC;AAkBnC,uBACC,SAAkB,EAClB,cAAoC,EACpC,MAAM,GAAmB,iBAAa;IAEtC,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,MAAM,YAAY,GAAG;QACpB,cAAc,EAAE,cAAc,EAAE,cAAc,IAAI,eAAe;QACjE,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,eAAe;QAC3D,GAAG,CAAC,cAAc,EAAE,cAAc,KAAK,SAAS,IAAI;YACnD,cAAc,EAAE,cAAc,CAAC,cAAc;SAC7C,CAAC;KACF,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,mBAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,aAAa,GAClB,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,KAAK,iBAAa,CAAC;IAEhF,IAAI,aAAa,EAAE,CAAC;QACnB,WAAW,KAAK,IAAI,cAAK,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACpE,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,cAAK,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAoBM,KAAK,qBAAqB,EAChC,KAAK,EACL,IAAI,EACJ,cAAc,EACd,MAAM,GACa;IACnB,MAAM,SAAS,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAIpE,OAAO,CAAC,MAAM,IAAA,cAAW,EAAC,KAA0C,EAAE;QACrE,GAAI,IAA0C;QAC9C,UAAU;KACV,CAAC,CAAwB,CAAC;AAC5B,CAAC;AAUD,2BAAkC,SAAkB,EAAE,YAA2B;IAChF,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAA,6BAAqB,EAAC,SAAS,IAAI,qBAAqB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1F,CAAC"}
@@ -8,12 +8,13 @@ export { N8nBinaryLoader } from './utils/n8n-binary-loader';
8
8
  export { N8nJsonLoader } from './utils/n8n-json-loader';
9
9
  export { N8nPdfLoader } from './utils/loaders/n8n-pdf-loader';
10
10
  export { N8nLlmTracing } from './utils/n8n-llm-tracing';
11
+ export { redactHeaderValues } from './utils/redact-headers';
11
12
  export { TextEditorDocument, NoMatchFoundError, MultipleMatchesError, InvalidLineNumberError, InvalidViewRangeError, InvalidPathError, FileExistsError, FileNotFoundError, BatchReplacementError, formatTextWithLineNumbers, findDivergenceContext, parseStrReplacements, } from './utils/workflow-text-editor';
12
13
  export type { ViewCommand, CreateCommand, StrReplaceCommand, InsertCommand, BatchStrReplaceCommand, TextEditorCommand, TextEditorCommandWithBatch, TextEditorToolCall, TextEditorResult, StrReplacement, BatchReplaceResult, TextEditorDocumentOptions, } from './utils/workflow-text-editor';
13
14
  export { estimateTokensFromStringList, estimateTokensByCharCount, estimateTextSplitsByTokens, } from './utils/tokenizer/token-estimator';
14
15
  export { encodingForModel, getEncoding } from './utils/tokenizer/tiktoken';
15
16
  export { makeN8nLlmFailedAttemptHandler } from './utils/failed-attempt-handler/n8nLlmFailedAttemptHandler';
16
- export { getProxyAgent, getNodeProxyAgent, proxyFetch, type AgentTimeoutOptions, } from './utils/http-proxy-agent';
17
+ export { getProxyAgent, getNodeProxyAgent, proxyFetch, type AgentTimeoutOptions, type ProxyFetchOptions, } from './utils/http-proxy-agent';
17
18
  export { braveSearch, searxngSearch, type BraveSearchOptions } from './web-search';
18
19
  export type { WebSearchOptions, WebSearchResponse, WebSearchResult } from './web-search';
19
20
  export { fetchFollowingRedirects, type FollowRedirectsOptions, } from './utils/follow-redirects';
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toLcMessage = exports.fromLcMessage = exports.getParametersJsonSchema = exports.processDocument = exports.processDocuments = exports.MemoryVectorStoreManager = exports.createVectorStoreNode = exports.extractFromAIParameters = exports.createZodSchemaFromArgs = exports.createToolFromNode = exports.getTemplateNoticeField = exports.getBatchingOptionFields = exports.metadataFilterField = exports.getConnectionHintNoticeField = exports.fetchFollowingRedirects = exports.searxngSearch = exports.braveSearch = exports.proxyFetch = exports.getNodeProxyAgent = exports.getProxyAgent = exports.makeN8nLlmFailedAttemptHandler = exports.getEncoding = exports.encodingForModel = exports.estimateTextSplitsByTokens = exports.estimateTokensByCharCount = exports.estimateTokensFromStringList = exports.parseStrReplacements = exports.findDivergenceContext = exports.formatTextWithLineNumbers = exports.BatchReplacementError = exports.FileNotFoundError = exports.FileExistsError = exports.InvalidPathError = exports.InvalidViewRangeError = exports.InvalidLineNumberError = exports.MultipleMatchesError = exports.NoMatchFoundError = exports.TextEditorDocument = exports.N8nLlmTracing = exports.N8nPdfLoader = exports.N8nJsonLoader = exports.N8nBinaryLoader = exports.hasLongSequentialRepeat = exports.getMetadataFiltersValues = exports.validateEmbedDocumentsInput = exports.validateEmbedQueryInput = exports.parseSSEStream = exports.logAiEvent = exports.logWrapper = exports.AI_NODE_SDK_VERSION = void 0;
4
- exports.supplyModel = exports.supplyMemory = exports.WindowedChatMemory = exports.BaseChatMemory = exports.BaseChatHistory = exports.BaseChatModel = exports.LangchainChatModelAdapter = exports.isToolsInstance = exports.isChatInstance = exports.isBaseChatMessageHistory = exports.isBaseChatMemory = exports.fromLcContent = exports.toLcContent = void 0;
3
+ exports.fromLcMessage = exports.getParametersJsonSchema = exports.processDocument = exports.processDocuments = exports.MemoryVectorStoreManager = exports.createVectorStoreNode = exports.extractFromAIParameters = exports.createZodSchemaFromArgs = exports.createToolFromNode = exports.getTemplateNoticeField = exports.getBatchingOptionFields = exports.metadataFilterField = exports.getConnectionHintNoticeField = exports.fetchFollowingRedirects = exports.searxngSearch = exports.braveSearch = exports.proxyFetch = exports.getNodeProxyAgent = exports.getProxyAgent = exports.makeN8nLlmFailedAttemptHandler = exports.getEncoding = exports.encodingForModel = exports.estimateTextSplitsByTokens = exports.estimateTokensByCharCount = exports.estimateTokensFromStringList = exports.parseStrReplacements = exports.findDivergenceContext = exports.formatTextWithLineNumbers = exports.BatchReplacementError = exports.FileNotFoundError = exports.FileExistsError = exports.InvalidPathError = exports.InvalidViewRangeError = exports.InvalidLineNumberError = exports.MultipleMatchesError = exports.NoMatchFoundError = exports.TextEditorDocument = exports.redactHeaderValues = exports.N8nLlmTracing = exports.N8nPdfLoader = exports.N8nJsonLoader = exports.N8nBinaryLoader = exports.hasLongSequentialRepeat = exports.getMetadataFiltersValues = exports.validateEmbedDocumentsInput = exports.validateEmbedQueryInput = exports.parseSSEStream = exports.logAiEvent = exports.logWrapper = exports.AI_NODE_SDK_VERSION = void 0;
4
+ exports.supplyModel = exports.supplyMemory = exports.WindowedChatMemory = exports.BaseChatMemory = exports.BaseChatHistory = exports.BaseChatModel = exports.LangchainChatModelAdapter = exports.isToolsInstance = exports.isChatInstance = exports.isBaseChatMessageHistory = exports.isBaseChatMemory = exports.fromLcContent = exports.toLcContent = exports.toLcMessage = void 0;
5
5
  var ai_node_sdk_version_1 = require("./ai-node-sdk-version");
6
6
  Object.defineProperty(exports, "AI_NODE_SDK_VERSION", { enumerable: true, get: function () { return ai_node_sdk_version_1.AI_NODE_SDK_VERSION; } });
7
7
  var log_wrapper_1 = require("./utils/log-wrapper");
@@ -24,6 +24,8 @@ var n8n_pdf_loader_1 = require("./utils/loaders/n8n-pdf-loader");
24
24
  Object.defineProperty(exports, "N8nPdfLoader", { enumerable: true, get: function () { return n8n_pdf_loader_1.N8nPdfLoader; } });
25
25
  var n8n_llm_tracing_1 = require("./utils/n8n-llm-tracing");
26
26
  Object.defineProperty(exports, "N8nLlmTracing", { enumerable: true, get: function () { return n8n_llm_tracing_1.N8nLlmTracing; } });
27
+ var redact_headers_1 = require("./utils/redact-headers");
28
+ Object.defineProperty(exports, "redactHeaderValues", { enumerable: true, get: function () { return redact_headers_1.redactHeaderValues; } });
27
29
  var workflow_text_editor_1 = require("./utils/workflow-text-editor");
28
30
  Object.defineProperty(exports, "TextEditorDocument", { enumerable: true, get: function () { return workflow_text_editor_1.TextEditorDocument; } });
29
31
  Object.defineProperty(exports, "NoMatchFoundError", { enumerable: true, get: function () { return workflow_text_editor_1.NoMatchFoundError; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AACA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAG5B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,qDAAkD;AAAzC,0GAAA,UAAU,OAAA;AACnB,mCAA6C;AAApC,qGAAA,cAAc,OAAA;AACvB,mFAG6C;AAF5C,sIAAA,uBAAuB,OAAA;AACvB,0IAAA,2BAA2B,OAAA;AAE5B,2CAAoF;AAA3E,mHAAA,wBAAwB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC1D,+DAA4D;AAAnD,oHAAA,eAAe,OAAA;AACxB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,iEAA8D;AAArD,8GAAA,YAAY,OAAA;AACrB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,qEAasC;AAZrC,0HAAA,kBAAkB,OAAA;AAClB,yHAAA,iBAAiB,OAAA;AACjB,4HAAA,oBAAoB,OAAA;AACpB,8HAAA,sBAAsB,OAAA;AACtB,6HAAA,qBAAqB,OAAA;AACrB,wHAAA,gBAAgB,OAAA;AAChB,uHAAA,eAAe,OAAA;AACf,yHAAA,iBAAiB,OAAA;AACjB,6HAAA,qBAAqB,OAAA;AACrB,iIAAA,yBAAyB,OAAA;AACzB,6HAAA,qBAAqB,OAAA;AACrB,4HAAA,oBAAoB,OAAA;AAgBrB,qEAI2C;AAH1C,+HAAA,4BAA4B,OAAA;AAC5B,4HAAA,yBAAyB,OAAA;AACzB,6HAAA,0BAA0B,OAAA;AAE3B,uDAA2E;AAAlE,4GAAA,gBAAgB,OAAA;AAAE,uGAAA,WAAW,OAAA;AACtC,wGAA2G;AAAlG,4IAAA,8BAA8B,OAAA;AACvC,6DAKkC;AAJjC,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA;AACjB,8GAAA,UAAU,OAAA;AAGX,2CAAmF;AAA1E,yGAAA,WAAW,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEnC,6DAGkC;AAFjC,2HAAA,uBAAuB,OAAA;AAGxB,uDAK+B;AAJ9B,6HAAA,4BAA4B,OAAA;AAC5B,oHAAA,mBAAmB,OAAA;AACnB,wHAAA,uBAAuB,OAAA;AACvB,uHAAA,sBAAsB,OAAA;AAEvB,mEAIqC;AAHpC,yHAAA,kBAAkB,OAAA;AAClB,8HAAA,uBAAuB,OAAA;AACvB,8HAAA,uBAAuB,OAAA;AAExB,0GAAyG;AAAhG,8HAAA,qBAAqB,OAAA;AAM9B,wGAAuG;AAA9F,oIAAA,wBAAwB,OAAA;AACjC,0EAG+C;AAF9C,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AAKhB,0CAA4D;AAAnD,+GAAA,uBAAuB,OAAA;AAChC,gDAA8F;AAArF,wGAAA,aAAa,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,wGAAA,aAAa,OAAA;AAG/D,mCAKkB;AAJjB,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AAsBhB,wEAA4E;AAAnE,iIAAA,yBAAyB,OAAA;AAClC,0CAAkD;AAAzC,qGAAA,aAAa,OAAA;AAGtB,gEAA6D;AAApD,oHAAA,eAAe,OAAA;AACxB,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AAGvB,sEAAkG;AAAzF,0HAAA,kBAAkB,OAAA;AAG3B,yDAAkF;AAAzE,4GAAA,YAAY,OAAA;AACrB,uDAAiG;AAAxF,0GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AACA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAG5B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,qDAAkD;AAAzC,0GAAA,UAAU,OAAA;AACnB,mCAA6C;AAApC,qGAAA,cAAc,OAAA;AACvB,mFAG6C;AAF5C,sIAAA,uBAAuB,OAAA;AACvB,0IAAA,2BAA2B,OAAA;AAE5B,2CAAoF;AAA3E,mHAAA,wBAAwB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC1D,+DAA4D;AAAnD,oHAAA,eAAe,OAAA;AACxB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,iEAA8D;AAArD,8GAAA,YAAY,OAAA;AACrB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,qEAasC;AAZrC,0HAAA,kBAAkB,OAAA;AAClB,yHAAA,iBAAiB,OAAA;AACjB,4HAAA,oBAAoB,OAAA;AACpB,8HAAA,sBAAsB,OAAA;AACtB,6HAAA,qBAAqB,OAAA;AACrB,wHAAA,gBAAgB,OAAA;AAChB,uHAAA,eAAe,OAAA;AACf,yHAAA,iBAAiB,OAAA;AACjB,6HAAA,qBAAqB,OAAA;AACrB,iIAAA,yBAAyB,OAAA;AACzB,6HAAA,qBAAqB,OAAA;AACrB,4HAAA,oBAAoB,OAAA;AAgBrB,qEAI2C;AAH1C,+HAAA,4BAA4B,OAAA;AAC5B,4HAAA,yBAAyB,OAAA;AACzB,6HAAA,0BAA0B,OAAA;AAE3B,uDAA2E;AAAlE,4GAAA,gBAAgB,OAAA;AAAE,uGAAA,WAAW,OAAA;AACtC,wGAA2G;AAAlG,4IAAA,8BAA8B,OAAA;AACvC,6DAMkC;AALjC,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA;AACjB,8GAAA,UAAU,OAAA;AAIX,2CAAmF;AAA1E,yGAAA,WAAW,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEnC,6DAGkC;AAFjC,2HAAA,uBAAuB,OAAA;AAGxB,uDAK+B;AAJ9B,6HAAA,4BAA4B,OAAA;AAC5B,oHAAA,mBAAmB,OAAA;AACnB,wHAAA,uBAAuB,OAAA;AACvB,uHAAA,sBAAsB,OAAA;AAEvB,mEAIqC;AAHpC,yHAAA,kBAAkB,OAAA;AAClB,8HAAA,uBAAuB,OAAA;AACvB,8HAAA,uBAAuB,OAAA;AAExB,0GAAyG;AAAhG,8HAAA,qBAAqB,OAAA;AAM9B,wGAAuG;AAA9F,oIAAA,wBAAwB,OAAA;AACjC,0EAG+C;AAF9C,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AAKhB,0CAA4D;AAAnD,+GAAA,uBAAuB,OAAA;AAChC,gDAA8F;AAArF,wGAAA,aAAa,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,wGAAA,aAAa,OAAA;AAG/D,mCAKkB;AAJjB,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AAsBhB,wEAA4E;AAAnE,iIAAA,yBAAyB,OAAA;AAClC,0CAAkD;AAAzC,qGAAA,aAAa,OAAA;AAGtB,gEAA6D;AAApD,oHAAA,eAAe,OAAA;AACxB,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AAGvB,sEAAkG;AAAzF,0HAAA,kBAAkB,OAAA;AAG3B,yDAAkF;AAAzE,4GAAA,YAAY,OAAA;AACrB,uDAAiG;AAAxF,0GAAA,WAAW,OAAA"}