n8n-nodes-pdfvector 0.8.4 → 2.0.4

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.
Files changed (39) hide show
  1. package/README.md +69 -233
  2. package/dist/credentials/PDFVectorApi.credentials.d.ts +1 -0
  3. package/dist/credentials/PDFVectorApi.credentials.js +19 -6
  4. package/dist/credentials/PDFVectorApi.credentials.js.map +1 -1
  5. package/dist/credentials/icon.svg +4 -0
  6. package/dist/nodes/PdfVector/PdfVector.node.js +61 -1588
  7. package/dist/nodes/PdfVector/PdfVector.node.js.map +1 -1
  8. package/dist/nodes/PdfVector/PdfVector.node.json +18 -0
  9. package/dist/nodes/PdfVector/academic/index.d.ts +3 -0
  10. package/dist/nodes/PdfVector/academic/index.js +185 -0
  11. package/dist/nodes/PdfVector/academic/index.js.map +1 -0
  12. package/dist/nodes/PdfVector/bankStatement/index.d.ts +3 -0
  13. package/dist/nodes/PdfVector/bankStatement/index.js +31 -0
  14. package/dist/nodes/PdfVector/bankStatement/index.js.map +1 -0
  15. package/dist/nodes/PdfVector/document/index.d.ts +3 -0
  16. package/dist/nodes/PdfVector/document/index.js +31 -0
  17. package/dist/nodes/PdfVector/document/index.js.map +1 -0
  18. package/dist/nodes/PdfVector/identity/index.d.ts +3 -0
  19. package/dist/nodes/PdfVector/identity/index.js +31 -0
  20. package/dist/nodes/PdfVector/identity/index.js.map +1 -0
  21. package/dist/nodes/PdfVector/invoice/index.d.ts +3 -0
  22. package/dist/nodes/PdfVector/invoice/index.js +31 -0
  23. package/dist/nodes/PdfVector/invoice/index.js.map +1 -0
  24. package/dist/nodes/PdfVector/shared/api.d.ts +39 -0
  25. package/dist/nodes/PdfVector/shared/api.js +3 -0
  26. package/dist/nodes/PdfVector/shared/api.js.map +1 -0
  27. package/dist/nodes/PdfVector/shared/helpers.d.ts +5 -0
  28. package/dist/nodes/PdfVector/shared/helpers.js +40 -0
  29. package/dist/nodes/PdfVector/shared/helpers.js.map +1 -0
  30. package/dist/nodes/PdfVector/shared/options.d.ts +5 -0
  31. package/dist/nodes/PdfVector/shared/options.js +159 -0
  32. package/dist/nodes/PdfVector/shared/options.js.map +1 -0
  33. package/dist/nodes/PdfVector/shared/pdfvector-api.types.d.ts +988 -0
  34. package/dist/nodes/PdfVector/shared/pdfvector-api.types.js +3 -0
  35. package/dist/nodes/PdfVector/shared/pdfvector-api.types.js.map +1 -0
  36. package/dist/package.json +18 -21
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +61 -64
  39. package/index.js +0 -0
package/README.md CHANGED
@@ -1,278 +1,114 @@
1
1
  # n8n-nodes-pdfvector
2
2
 
3
- This is an n8n community node. It lets you use PDF Vector in your n8n workflows.
4
-
5
- PDF Vector is a powerful document processing and academic research API service. It enables you to parse PDFs and Word documents into clean Markdown, extract structured data, and search across millions of academic publications from multiple databases.
6
-
7
- [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
8
-
9
- ## Table of Contents
10
-
11
- - [Installation](#installation)
12
- - [Operations](#operations)
13
- - [Credentials](#credentials)
14
- - [Compatibility](#compatibility)
15
- - [Usage](#usage)
16
- - [Resources](#resources)
17
- - [Version history](#version-history)
18
- - [Development](#development)
19
- - [License](#license)
3
+ [n8n](https://n8n.io/) community node for [PDF Vector](https://www.pdfvector.com) — parse PDF, Word, Excel, and image documents to structured markdown, ask AI questions about documents, extract structured data with JSON Schema, and search academic papers across multiple databases.
20
4
 
21
5
  ## Installation
22
6
 
23
7
  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
24
8
 
25
- 1. Go to `Settings` > `Community Nodes`.
26
- 2. Select `Install`.
27
- 3. Enter `n8n-nodes-pdfvector` in `Enter npm package name`.
28
- 4. Agree to the risks of using community nodes.
29
- 5. Select `Install`.
30
-
31
- ![Install](assets/install.png)
32
-
33
- ## Operations
34
-
35
- ### Document Resource
36
-
37
- #### Parse Document
9
+ In n8n, go to **Settings > Community Nodes** and install:
38
10
 
39
- Extract content from PDF/Word documents and convert to clean Markdown format.
40
-
41
- **Parameters:**
42
-
43
- - **Document URL**: Direct URL to the PDF or Word document
44
- - **Use LLM**:
45
- - `auto` (default) - System decides if LLM parsing is needed
46
- - `never` - Basic parsing only (1 credit per page)
47
- - `always` - Force LLM parsing (2 credits per page)
11
+ ```
12
+ n8n-nodes-pdfvector
13
+ ```
48
14
 
49
- **Supported Formats:**
15
+ ## Credentials
50
16
 
51
- - PDF files
52
- - Word documents (.doc, .docx)
17
+ 1. Sign up at [app.pdfvector.com](https://app.pdfvector.com)
18
+ 2. Go to **Settings** to get your API key
19
+ 3. In n8n, create a new **PDF Vector API** credential and paste your API key
53
20
 
54
- **Credit Usage**: 1-2 credits per page depending on LLM usage
21
+ **Custom instance:** If you have a custom PDF Vector instance, enter your instance domain in the credential's Domain field. Otherwise, leave it as `global.pdfvector.com`.
55
22
 
56
- #### Ask Document
23
+ ## Operations
57
24
 
58
- Ask questions about PDF/Word documents using AI analysis to get intelligent answers.
25
+ ### Document
59
26
 
60
- **Parameters:**
27
+ Parse, ask, and extract from generic documents (PDF, Word, Excel, CSV, Image).
61
28
 
62
- - **Document URL**: Direct URL to the PDF or Word document
63
- - **Prompt**: Your question about the document (1-2000 characters)
29
+ | Operation | Description |
30
+ |-----------|-------------|
31
+ | **Parse** | Extract text content and page count |
32
+ | **Ask** | Ask a question about the document and get an AI answer |
33
+ | **Extract** | Extract structured data using a JSON Schema |
64
34
 
65
- **Example Questions:**
66
- - "What are the key findings in this research paper?"
67
- - "Summarize the methodology section"
68
- - "What conclusions does the author draw?"
69
- - "Extract all statistical results mentioned"
35
+ ### Identity Document
70
36
 
71
- **Credit Usage**: 3 credits per page
37
+ Parse, ask, and extract from identity documents (passports, driver's licenses, ID cards).
72
38
 
73
- ### Academic Resource
39
+ | Operation | Description |
40
+ |-----------|-------------|
41
+ | **Parse** | Extract text from identity documents (Pro/Max models only) |
42
+ | **Ask** | Ask a question about the identity document |
43
+ | **Extract** | Extract structured fields (name, DOB, document number, etc.) |
74
44
 
75
- #### Search Publications
45
+ ### Invoice
76
46
 
77
- Search for academic publications across multiple databases with intelligent ranking.
47
+ Parse, ask, and extract from invoices.
78
48
 
79
- **Parameters:**
49
+ | Operation | Description |
50
+ |-----------|-------------|
51
+ | **Parse** | Extract text from invoices (Pro/Max models only) |
52
+ | **Ask** | Ask a question about the invoice |
53
+ | **Extract** | Extract structured invoice data (number, date, items, totals) |
80
54
 
81
- - **Query**: Search query string
82
- - **Providers**: Select which academic databases to search (PubMed, Semantic Scholar, Google Scholar, ArXiv, ERIC)
83
- - **Limit**: Maximum results per provider (1-100, default: 50)
84
- - **Offset**: Skip this many results per provider
85
- - **Year From/To**: Filter by publication year range
86
- - **Fields**: Choose which fields to include in the response
55
+ ### Bank Statement
87
56
 
88
- **Credit Usage**: 2 credit per search request
57
+ Parse, ask, and extract from bank statements.
89
58
 
90
- #### Fetch Publications
59
+ | Operation | Description |
60
+ |-----------|-------------|
61
+ | **Parse** | Extract text from bank statements (Pro/Max models only) |
62
+ | **Ask** | Ask a question about the bank statement |
63
+ | **Extract** | Extract structured bank statement data |
91
64
 
92
- Retrieve specific academic publications by their identifiers with automatic provider detection.
65
+ ### Academic
93
66
 
94
- **Parameters:**
67
+ Search, fetch, and find citations across academic databases.
95
68
 
96
- - **IDs**: Comma-separated list of publication IDs (DOI, PubMed ID, ArXiv ID, etc.)
97
- - **Fields**: Choose which fields to include in the response
69
+ | Operation | Description |
70
+ |-----------|-------------|
71
+ | **Search** | Search for papers across 7 academic databases |
72
+ | **Fetch** | Fetch specific papers by DOI, PubMed ID, ArXiv ID, etc. |
73
+ | **Find Citations** | Find relevant citations for a paragraph of text |
98
74
 
99
- **Supported ID Types:**
75
+ **Supported providers:** Semantic Scholar, PubMed, ArXiv, Google Scholar, OpenAlex, ERIC, Europe PMC.
100
76
 
101
- - DOI (e.g., `10.1038/nature12373`)
102
- - PubMed ID (e.g., `12345678`)
103
- - ArXiv ID (e.g., `2301.12345`)
104
- - Semantic Scholar ID (e.g., `85128297772`)
105
- - ERIC ID (e.g., `ED123456`)
77
+ ## Model Tiers
106
78
 
107
- **Credit Usage**: 2 credit per fetch request
79
+ All document operations support model selection:
108
80
 
109
- ## Credentials
81
+ | Tier | Best for | Max pages | Max size |
82
+ |------|----------|-----------|----------|
83
+ | **Auto** | Automatic selection (default) | 1000 | 500MB |
84
+ | **Nano** | Simple text documents | 30 | 10MB |
85
+ | **Mini** | Tables, structured content | 30 | 10MB |
86
+ | **Pro** | Complex docs, images, handwriting | 30 | 40MB |
87
+ | **Max** | Large docs, full capabilities + HTML | 1000 | 500MB |
110
88
 
111
- To use this node, you'll need a PDF Vector API key. Here's how to get one:
89
+ Identity, Invoice, and Bank Statement **parse** operations only support Auto, Pro, and Max.
112
90
 
113
- 1. Sign up for a [PDF Vector account](https://www.pdfvector.com/sign-up)
114
- 2. Navigate to your [Dashboard](https://www.pdfvector.com/dashboard)
115
- 3. Generate a new API key (it will start with `pdfvector_`)
116
- 4. In n8n:
117
- - Go to **Credentials** → **Add Credential**
118
- - Select **PDF Vector API** from the list
119
- - Enter your API key
120
- - Click **Save**
91
+ ## Document ID Tracking
121
92
 
122
- ![Credentials](assets/credentials.png)
93
+ All document operations (except Academic) support an optional **Document ID** field for usage tracking. The ID is returned in the response and saved in your usage records.
123
94
 
124
95
  ## Compatibility
125
96
 
126
- - **n8n version:** 0.202.0 or later
127
- - **Node.js version:** 20.15 or later
128
-
129
- ## Usage
130
-
131
- ### Example: Ask Questions About a Document
132
-
133
- This workflow shows how to use the Ask operation to get AI-powered answers about a document:
134
-
135
- ```json
136
- {
137
- "nodes": [
138
- {
139
- "name": "Ask Document",
140
- "type": "n8n-nodes-pdfvector.pdfVector",
141
- "position": [250, 300],
142
- "parameters": {
143
- "resource": "document",
144
- "operation": "ask",
145
- "url": "https://example.com/research-paper.pdf",
146
- "prompt": "What are the main findings and conclusions of this research?"
147
- }
148
- }
149
- ]
150
- }
151
- ```
152
-
153
- The response will include:
154
- - `markdown`: AI-generated answer to your question
155
- - `pageCount`: Number of pages processed
156
- - `creditCount`: Credits consumed
157
-
158
- ### Example: Parse a PDF and Search Related Papers
159
-
160
- This workflow demonstrates how to:
161
-
162
- 1. Parse a PDF document to extract its content
163
- 2. Use the extracted content to search for related academic papers
164
-
165
- ```json
166
- {
167
- "nodes": [
168
- {
169
- "name": "Parse PDF",
170
- "type": "n8n-nodes-pdfvector.pdfVector",
171
- "position": [250, 300],
172
- "parameters": {
173
- "resource": "document",
174
- "operation": "parse",
175
- "url": "https://example.com/paper.pdf",
176
- "useLLM": "auto"
177
- }
178
- },
179
- {
180
- "name": "Search Related Papers",
181
- "type": "n8n-nodes-pdfvector.pdfVector",
182
- "position": [450, 300],
183
- "parameters": {
184
- "resource": "academic",
185
- "operation": "search",
186
- "query": "={{ $json.markdown.substring(0, 200) }}",
187
- "providers": ["semantic-scholar", "pubmed"],
188
- "limit": 10,
189
- "offset": 0
190
- }
191
- }
192
- ]
193
- }
194
- ```
195
-
196
- ### Example: Batch Fetch Publications
197
-
198
- Fetch multiple publications by their DOIs:
199
-
200
- ```json
201
- {
202
- "parameters": {
203
- "resource": "academic",
204
- "operation": "fetch",
205
- "ids": "10.1038/nature12373,10.1126/science.1234567,PMC123456"
206
- }
207
- }
208
- ```
209
-
210
- ### Response Handling
211
-
212
- All operations return structured JSON responses. Handle errors gracefully:
213
-
214
- ```javascript
215
- // In a Function node after PDF Vector
216
- if ($json.error) {
217
- throw new Error($json.error.message);
218
- }
219
-
220
- // For academic search - check for partial errors
221
- if ($json.errors && $json.errors.length > 0) {
222
- console.warn("Some providers failed:", $json.errors);
223
- }
224
-
225
- return $json.results;
226
- ```
97
+ - **n8n version:** 1.0+
98
+ - **Node.js version for local development and CI:** 22+
227
99
 
228
100
  ## Resources
229
101
 
230
- - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
231
- - [PDF Vector API Documentation](https://www.pdfvector.com/v1/api/scalar)
232
- - [PDF Vector Dashboard](https://www.pdfvector.com/dashboard)
233
- - [PDF Vector Pricing](https://www.pdfvector.com/#pricing)
234
-
235
-
236
- ## Version history
237
-
238
- - 0.1.0 - Initial release of the PDF Vector node for n8n.
239
-
240
- ## Development
241
-
242
- Check out [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building and developing the node.
243
-
244
- 0. Install dependencies:
245
-
246
- ```bash
247
- npm install
248
- ```
249
-
250
- 1. Build the node
251
-
252
- ```bash
253
- npm run build
254
- ```
255
-
256
- 2. Link the node to n8n from the node directory
257
-
258
- ```bash
259
- npm link
260
- ```
261
-
262
- 3. In your `~/.n8n/nodes` directory, link the node:
263
-
264
- ```bash
265
- npm link n8n-nodes-pdfvector
266
- ```
267
-
268
- 4. Run n8n:
102
+ - [PDF Vector API Reference](https://global.pdfvector.com/api/reference)
103
+ - [PDF Vector Dashboard](https://app.pdfvector.com)
104
+ - [PDF Vector Website](https://www.pdfvector.com)
105
+ - [Report Issues](https://github.com/phuctm97/n8n-nodes-pdfvector/issues)
269
106
 
270
- ```bash
271
- n8n start
272
- ```
107
+ ## Version History
273
108
 
274
- Once the node is linked, you need to only rebuild and restart n8n to see the changes.
109
+ - **2.x:** Unified PDF Vector node with document, identity, invoice, bank statement, and academic operations
110
+ - **1.x:** Earlier PDF Vector integration releases
275
111
 
276
112
  ## License
277
113
 
278
- This project is licensed [under the MIT License](LICENSE.md).
114
+ MIT
@@ -3,6 +3,7 @@ export declare class PDFVectorApi implements ICredentialType {
3
3
  name: string;
4
4
  displayName: string;
5
5
  documentationUrl: string;
6
+ icon: "file:icon.svg";
6
7
  properties: INodeProperties[];
7
8
  authenticate: IAuthenticateGeneric;
8
9
  test: ICredentialTestRequest;
@@ -5,7 +5,8 @@ class PDFVectorApi {
5
5
  constructor() {
6
6
  this.name = 'pdfVectorApi';
7
7
  this.displayName = 'PDF Vector API';
8
- this.documentationUrl = 'https://www.pdfvector.com/v1/api/scalar';
8
+ this.documentationUrl = 'https://global.pdfvector.com/api/reference';
9
+ this.icon = 'file:icon.svg';
9
10
  this.properties = [
10
11
  {
11
12
  displayName: 'API Key',
@@ -16,22 +17,34 @@ class PDFVectorApi {
16
17
  },
17
18
  default: '',
18
19
  required: true,
19
- description: 'Your PDFVector API key (format: pdfvector_xxxxxxxxxxxxxxxx). You can get it from https://www.pdfvector.com/api-keys.',
20
+ description: 'Your PDFVector API key. Get it from https://app.pdfvector.com/instances/2?tab=settings.',
21
+ },
22
+ {
23
+ displayName: 'Domain',
24
+ name: 'domain',
25
+ type: 'string',
26
+ default: 'global.pdfvector.com',
27
+ required: false,
28
+ description: 'PDFVector instance domain. Leave default for the shared instance. Change only for custom instances.',
20
29
  },
21
30
  ];
22
31
  this.authenticate = {
23
32
  type: 'generic',
24
33
  properties: {
25
34
  headers: {
26
- Authorization: '={{"Bearer " + $credentials.apiKey}}',
35
+ Authorization: '=Bearer {{$credentials.apiKey}}',
27
36
  },
28
37
  },
29
38
  };
30
39
  this.test = {
31
40
  request: {
32
- baseURL: 'https://www.pdfvector.com/v1/api',
33
- url: '/validate-key',
34
- method: 'GET',
41
+ baseURL: '={{(($credentials.domain || "global.pdfvector.com").startsWith("localhost") || ($credentials.domain || "").startsWith("127.0.0.1") ? "http://" : "https://") + ($credentials.domain || "global.pdfvector.com")}}',
42
+ url: '/rpc/authenticate/validateCredential',
43
+ method: 'POST',
44
+ headers: {
45
+ 'Content-Type': 'application/json',
46
+ },
47
+ body: '{}',
35
48
  },
36
49
  rules: [
37
50
  {
@@ -1 +1 @@
1
- {"version":3,"file":"PDFVectorApi.credentials.js","sourceRoot":"","sources":["../../credentials/PDFVectorApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,YAAY;IAAzB;QACC,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,qBAAgB,GAAG,yCAAyC,CAAC;QAC7D,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,sHAAsH;aACvH;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,sCAAsC;iBACrD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,kCAAkC;gBAC3C,GAAG,EAAE,eAAe;gBACpB,MAAM,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,kBAAkB;qBAC3B;iBACD;gBACD;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,iBAAiB;qBAC1B;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAnDD,oCAmDC"}
1
+ {"version":3,"file":"PDFVectorApi.credentials.js","sourceRoot":"","sources":["../../credentials/PDFVectorApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,YAAY;IAAzB;QACC,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,qBAAgB,GAAG,4CAA4C,CAAC;QAChE,SAAI,GAAG,eAAwB,CAAC;QAChC,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,yFAAyF;aAC1F;YACD;gBACC,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sBAAsB;gBAC/B,QAAQ,EAAE,KAAK;gBACf,WAAW,EACV,qGAAqG;aACtG;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,iCAAiC;iBAChD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,kNAAkN;gBAC3N,GAAG,EAAE,sCAAsC;gBAC3C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACR,cAAc,EAAE,kBAAkB;iBAClC;gBACD,IAAI,EAAE,IAAI;aACV;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,kBAAkB;qBAC3B;iBACD;gBACD;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,iBAAiB;qBAC1B;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAjED,oCAiEC"}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="512" height="512">
3
+ <path d="M0 0 C1.72949959 -0.00461121 3.45899526 -0.0109656 5.18848276 -0.01890898 C9.93232948 -0.03559525 14.67585399 -0.02735909 19.41970181 -0.0149641 C24.53907524 -0.0059131 29.65839331 -0.0198836 34.77775574 -0.03088379 C44.80315337 -0.04867302 54.82843123 -0.0448272 64.85383356 -0.03323323 C73.00146809 -0.02420078 81.14906905 -0.02297409 89.29670715 -0.02732849 C90.45618981 -0.02794142 91.61567247 -0.02855436 92.81029096 -0.02918586 C95.16573585 -0.03046476 97.52118073 -0.03176161 99.8766256 -0.03307623 C121.96518238 -0.04448321 144.05367276 -0.03136644 166.14221865 -0.00987476 C185.0964326 0.00799631 204.05054856 0.00489224 223.00476074 -0.0135498 C245.01411792 -0.0349544 267.0234169 -0.04338456 289.03278303 -0.03110075 C291.37957731 -0.02982655 293.7263716 -0.02856907 296.07316589 -0.02732849 C297.8051808 -0.02640284 297.8051808 -0.02640284 299.5721859 -0.02545848 C307.71031364 -0.02200436 315.84840447 -0.02783529 323.98652649 -0.0372467 C333.90378925 -0.04846348 343.82092536 -0.04543333 353.7381736 -0.02412373 C358.79840702 -0.01360907 363.85842925 -0.00949869 368.91866112 -0.02272034 C373.55113381 -0.03464128 378.1831996 -0.02808649 382.81563538 -0.00681013 C384.49116272 -0.00234282 386.16672445 -0.00461323 387.84222966 -0.01431328 C405.28048903 -0.10752296 405.28048903 -0.10752296 411.68517065 5.91976881 C417.04811131 11.87136762 417.47830728 17.23091289 417.44563293 24.85626221 C417.44945848 25.80156839 417.45328403 26.74687457 417.4572255 27.72082639 C417.46754957 30.8904788 417.46356441 34.05994987 417.45959473 37.22961426 C417.4639416 39.50143603 417.46912466 41.77325634 417.4750824 44.04507446 C417.48848818 50.21875599 417.48904916 56.39237635 417.4865191 62.5660696 C417.48545018 67.72004797 417.49033086 72.87401392 417.49512452 78.02798963 C417.50686072 90.88487803 417.50599157 103.74172249 417.49956771 116.5986115 C417.49440206 127.75347311 417.50564461 138.90824729 417.52466593 150.06309161 C417.54406051 161.52502177 417.55200613 172.9868945 417.54854268 184.44884419 C417.54672999 190.88050591 417.5493644 197.31208761 417.56325722 203.74373627 C417.57583794 209.79464913 417.57388894 215.84538726 417.56084633 221.89629745 C417.55848133 224.1146259 417.56121247 226.33296664 417.56946945 228.55128098 C417.57994514 231.5849468 417.57182922 234.6180273 417.55915833 237.65167236 C417.56653261 238.5247462 417.57390689 239.39782003 417.58150464 240.29735065 C417.50309493 249.25170152 415.28368543 256.09769195 409.11462402 262.62512207 C405.92352225 265.7387072 402.59807926 268.64067411 399.18493652 271.50793457 C396.93096486 273.41995908 394.68218925 275.33801959 392.43493652 277.25793457 C391.8339917 277.77090088 391.23304688 278.28386719 390.6138916 278.81237793 C385.58753764 283.12154471 380.70376254 287.57064439 375.84118652 292.06262207 C371.32194805 296.22297984 366.68315044 300.23478993 362.00524902 304.21496582 C355.16866671 310.03822823 348.45063326 315.954226 341.85681152 322.05090332 C339.00171326 324.67642497 336.09728408 327.23461297 333.16540527 329.77355957 C330.87360497 331.78057995 328.624969 333.83196308 326.37243652 335.88293457 C322.82228724 339.0682679 319.25573706 342.23009934 315.62243652 345.32043457 C314.38300293 346.38197754 314.38300293 346.38197754 313.11853027 347.46496582 C304.14657565 353.71307803 295.91985609 354.07506561 285.26125717 354.02435493 C282.56986951 354.01162921 279.87949301 354.02310031 277.18814087 354.04039001 C272.44632911 354.06698732 267.70476891 354.07268944 262.96289062 354.07128906 C255.36763495 354.06905338 247.77268956 354.08328407 240.17755508 354.12687492 C237.53465484 354.13667386 234.89224881 354.12801885 232.24935913 354.11817932 C230.62094809 354.12432588 228.9925397 354.1312384 227.36413574 354.13903809 C226.27295441 354.12745918 226.27295441 354.12745918 225.159729 354.11564636 C218.73945476 354.17883674 214.25202748 355.71645574 209.37243652 359.94543457 C205.59774401 364.36721722 204.93496336 367.23114255 204.91369629 373.06140137 C204.90846954 373.71077164 204.9032428 374.36014191 204.89785767 375.02919006 C204.88763838 376.43579895 204.88184087 377.84244543 204.87997627 379.24909019 C204.87630092 381.48258796 204.85954014 383.71564628 204.83921814 385.9490509 C204.78393676 392.2979409 204.75323084 398.64689657 204.7286377 404.99597168 C204.71267007 408.88461021 204.68235051 412.77293962 204.64387321 416.66141701 C204.63229795 418.1360118 204.62629352 419.61066213 204.62619209 421.08530235 C204.62450312 439.11496998 204.62450312 439.11496998 199.35290527 445.84777832 C198.69935059 446.37500488 198.0457959 446.90223145 197.37243652 447.44543457 C196.40370605 448.26334473 196.40370605 448.26334473 195.41540527 449.09777832 C190.15264873 452.4250202 184.93022354 452.79875354 178.84854126 452.76863098 C178.02418166 452.77245653 177.19982206 452.77628208 176.35048187 452.78022355 C173.59617869 452.79051843 170.84208534 452.78656808 168.08776855 452.78259277 C166.10973925 452.7869412 164.13171164 452.79212479 162.15368652 452.79808044 C156.78588827 452.81146793 151.41816045 452.81204936 146.05034876 452.80951715 C141.56726384 452.80844721 137.08419316 452.81333141 132.60111129 452.81812257 C122.02341069 452.82921701 111.4457456 452.82965558 100.86804199 452.8236084 C89.96057472 452.81756851 79.05323644 452.8298802 68.14579117 452.85117847 C58.77661223 452.86879949 49.40747432 452.87479501 40.03827941 452.87154073 C34.44447121 452.86972844 28.85075501 452.87235858 23.25696182 452.88625526 C17.99561631 452.89883698 12.73447172 452.89688614 7.47312927 452.88384438 C5.54464017 452.88147976 3.61613691 452.88420914 1.68766403 452.8924675 C-0.95002315 452.90294647 -3.58703757 452.89482514 -6.22470093 452.88215637 C-6.98327703 452.88953066 -7.74185314 452.89690494 -8.5234164 452.90450269 C-14.67039235 452.84262247 -20.28208608 451.66292048 -25.09240723 447.57043457 C-25.64025879 446.88980957 -26.18811035 446.20918457 -26.75256348 445.50793457 C-27.31846191 444.82730957 -27.88436035 444.14668457 -28.46740723 443.44543457 C-31.15503477 439.58148308 -30.94464833 436.09946046 -30.95487118 431.52654839 C-30.9578226 430.80822441 -30.96077402 430.08990042 -30.96381488 429.34980905 C-30.97253002 426.92422485 -30.97408871 424.4986882 -30.97569275 422.0730896 C-30.98042208 420.32387336 -30.98557276 418.57465821 -30.99111038 416.82544434 C-31.00503911 412.00393154 -31.01260646 407.18242631 -31.01908338 402.36089849 C-31.02544809 398.22899575 -31.03551906 394.09710547 -31.04564404 389.96521048 C-31.07899047 376.35056417 -31.10049325 362.73591028 -31.11884388 349.1212365 C-31.1236377 345.57705854 -31.12862116 342.03288089 -31.13364911 338.48870325 C-31.16461829 316.48863926 -31.19130895 294.48857265 -31.20806789 272.48849297 C-31.21201752 267.39113231 -31.21602049 262.2937717 -31.22009277 257.19641113 C-31.22110113 255.92945715 -31.2221095 254.66250317 -31.22314841 253.35715665 C-31.24015877 232.82891293 -31.28127123 212.30078969 -31.33211576 191.77260481 C-31.38386633 170.70564554 -31.41300676 149.63874827 -31.42026478 128.57172596 C-31.42493018 116.73975609 -31.43971457 104.90798352 -31.48000908 93.07607651 C-31.51428113 83.00024039 -31.52825978 72.92463717 -31.51558494 62.84874611 C-31.50975155 57.70729487 -31.51367015 52.56633637 -31.54375458 47.42495918 C-31.57107904 42.71685698 -31.57064705 38.00959846 -31.54824413 33.3014778 C-31.54501663 31.59952191 -31.55191622 29.8975099 -31.57004135 28.19564746 C-31.7287521 12.32991684 -31.7287521 12.32991684 -26.59096438 6.17090857 C-18.94596364 -0.98795793 -9.89152896 -0.05726529 0 0 Z M70.18493652 102.50793457 C68.14088226 105.57401596 67.93456766 106.17649413 67.93046093 109.62689781 C67.92462874 110.4692858 67.91879654 111.31167378 67.91278762 112.17958868 C67.91656694 113.10515809 67.92034626 114.03072751 67.92424011 114.98434448 C67.92041457 115.96751605 67.91658902 116.95068761 67.91264755 117.96365225 C67.90229097 121.27322581 67.90631476 124.58262674 67.91027832 127.89221191 C67.9059333 130.25889752 67.90075086 132.62558171 67.89479065 134.99226379 C67.882762 140.76276126 67.88025209 146.53320458 67.88259091 152.30371307 C67.88437253 156.99372643 67.8826278 161.68372566 67.87836647 166.37373734 C67.87777128 167.04074931 67.87717609 167.70776128 67.87656287 168.39498574 C67.87535114 169.74994949 67.874137 171.10491323 67.87292049 172.45987697 C67.86203824 185.17354066 67.86421055 197.88717784 67.87030534 210.60084303 C67.87547386 222.23382227 67.86422202 233.86671777 67.84520712 245.49968044 C67.82583823 257.44064854 67.81757113 269.381577 67.82133037 281.32256091 C67.82324402 288.02798952 67.82073904 294.73334685 67.80661583 301.43876266 C67.79407178 307.7440748 67.79594919 314.04921897 67.80902672 320.35452843 C67.81139959 322.67128874 67.80863255 324.98806075 67.80040359 327.30480766 C67.78999454 330.46258777 67.79799007 333.61979816 67.81071472 336.77755737 C67.80334044 337.69866535 67.79596615 338.61977332 67.7883684 339.56879365 C67.82905159 344.35378053 68.02096419 347.64712611 71.18493652 351.50793457 C73.51651193 352.67372227 74.8940669 352.64346643 77.49189758 352.66183472 C78.39614975 352.67043518 79.30040192 352.67903564 80.23205566 352.68789673 C81.22688965 352.69215668 82.22172363 352.69641663 83.2467041 352.70080566 C84.29235031 352.70898315 85.33799652 352.71716064 86.41532898 352.72558594 C89.88670269 352.75046385 93.35803547 352.7669613 96.82946777 352.78137207 C98.0129096 352.78669575 99.19635143 352.79201942 100.41565514 352.79750443 C106.67834196 352.82424521 112.94100877 352.843618 119.20373535 352.85803223 C125.68057345 352.87469081 132.15690378 352.91947678 138.63354969 352.97040367 C143.60662946 353.00401641 148.57958777 353.01560311 153.55277061 353.02125931 C155.94063896 353.02798726 158.32849889 353.04324905 160.7162571 353.06715012 C164.05625752 353.09867777 167.39487593 353.09885658 170.73498535 353.09143066 C171.72374664 353.107836 172.71250793 353.12424133 173.73123169 353.1411438 C178.14110371 353.10095209 180.52926858 352.93022298 184.30081177 350.50112915 C186.7287098 346.64407499 186.86453547 343.45262585 186.78088379 339.0333252 C186.78494232 338.19206589 186.78900085 337.35080658 186.79318237 336.48405457 C186.79869109 334.66272468 186.79271501 332.84133154 186.77652168 331.02006531 C186.75109618 328.13621456 186.75590088 325.2537927 186.76841736 322.36987305 C186.78916015 316.2490696 186.76948085 310.12870885 186.74743652 304.00793457 C186.7263315 296.91428751 186.72175921 289.82110003 186.74793816 282.72746277 C186.75129953 279.8882124 186.73007569 277.04983965 186.70753479 274.21069336 C186.71004618 272.46797495 186.71360634 270.72525762 186.71838379 268.98254395 C186.7054982 268.1948613 186.69261261 267.40717865 186.67933655 266.59562683 C186.71035342 263.20182523 187.13255383 260.62628811 188.50892639 257.51651001 C192.82813084 254.2745761 197.21020783 254.83171749 202.46765137 254.89611816 C203.61927261 254.89045334 204.77089386 254.88478851 205.95741272 254.87895203 C209.7705623 254.86542949 213.58276563 254.88641222 217.39587402 254.90637207 C220.04379937 254.90087419 222.69172046 254.89275169 225.33963013 254.8821106 C232.31775204 254.85762006 239.29560264 254.86341306 246.27374268 254.87591553 C256.7719137 254.89449438 267.27003217 254.88960057 277.76816523 254.85588133 C282.333714 254.84254004 286.8988043 254.85470022 291.46432495 254.87203979 C293.85736187 254.86909179 296.25039806 254.8654371 298.64343262 254.86096191 C299.72831467 254.87025223 300.81319672 254.87954254 301.93095398 254.88911438 C307.4037824 254.86014948 311.50810343 254.71005486 316.18493652 251.50793457 C317.52170362 248.83440037 317.32005839 246.78458755 317.33210754 243.7895813 C317.33926285 242.57256027 317.34641815 241.35553925 317.35379028 240.10163879 C317.35663065 238.74569728 317.35934236 237.38975548 317.36193848 236.03381348 C317.36820218 234.61145359 317.37484889 233.18909534 317.3818512 231.76673889 C317.39926766 227.89688316 317.40981437 224.02703978 317.41805673 220.15715456 C317.42320474 217.74061524 317.42928051 215.32407978 317.43556786 212.90754318 C317.45462039 205.35021518 317.46885228 197.79289697 317.47717983 190.23554957 C317.4869583 181.50515711 317.51329327 172.77501779 317.55368072 164.04471457 C317.58381137 157.30071628 317.59864572 150.55679069 317.60196084 143.81272638 C317.60431452 139.78274779 317.61331603 135.75303961 317.63842201 131.72313309 C317.66165519 127.93261911 317.66595549 124.14255449 317.65566063 120.35198784 C317.65516401 118.96040161 317.66152149 117.56879363 317.67521667 116.1772747 C317.69286088 114.27834996 317.68346851 112.37923122 317.67268372 110.48025513 C317.67626625 108.88576255 317.67626625 108.88576255 317.67992115 107.259058 C317.05783549 103.80150733 315.91856277 102.64872713 313.18493652 100.50793457 C310.48117822 99.6066818 308.93318278 99.38137589 306.15967751 99.37650681 C304.92744609 99.37074509 304.92744609 99.37074509 303.67032111 99.36486697 C302.76809738 99.36573345 301.86587365 99.36659994 300.93630981 99.36749268 C299.97763956 99.36452155 299.01896931 99.36155043 298.03124845 99.35848927 C294.80463704 99.34978687 291.57806266 99.34829273 288.35144043 99.34680176 C286.04386821 99.34217473 283.73629675 99.33715022 281.4287262 99.33175659 C275.14984304 99.3186207 268.87097058 99.31218547 262.59207582 99.30774593 C258.67212434 99.30481751 254.7521758 99.30071317 250.8322258 99.29624176 C239.98049083 99.28413214 229.12875909 99.27375001 218.27701759 99.27036667 C217.58249212 99.2701471 216.88796665 99.26992754 216.17239495 99.26970132 C215.47620377 99.26948304 214.78001259 99.26926476 214.06272471 99.26903987 C212.65196458 99.2685964 211.24120446 99.26814984 209.83044434 99.2677002 C209.13065792 99.26747877 208.43087151 99.26725734 207.70987944 99.2670292 C196.36789765 99.26308019 185.02598008 99.24562274 173.6840231 99.22234067 C162.04138254 99.19863411 150.3987774 99.18642321 138.75611246 99.18499875 C132.21834829 99.1839489 125.68067469 99.17800281 119.14293289 99.16017914 C112.99521826 99.143745 106.84766273 99.1415203 100.69993401 99.15031815 C98.441222 99.15109098 96.1825016 99.14671351 93.92381096 99.13685989 C90.84485937 99.12421357 87.76647758 99.12997746 84.68753052 99.14044189 C83.78976823 99.13238549 82.89200595 99.12432909 81.96703875 99.11602855 C77.22657331 99.15381591 74.00343379 99.37857229 70.18493652 102.50793457 Z " fill="#1B6BE7" transform="translate(62.8150634765625,29.4920654296875)"/>
4
+ </svg>