n8n-nodes-zalo-custom 1.0.0

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.
package/LICENSE.md ADDED
@@ -0,0 +1,19 @@
1
+ Copyright 2022 n8n
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,235 @@
1
+ # n8n-nodes-zalo-custom
2
+
3
+ Bộ node **n8n** này được thiết kế để hoạt động **hoàn toàn bên trong instance n8n của bạn** — **không** cần API của bên thứ ba hay bất kỳ phụ thuộc ngoại vi nào. Dữ liệu của bạn **luôn được giữ riêng tư và an toàn**.
4
+
5
+ Đây là một dự án **mã nguồn mở**, chúng tôi khuyến khích cộng đồng cùng đóng góp và phát triển thêm các tính năng mới.
6
+ ## 📱 Liên hệ & Hỗ trợ
7
+
8
+ **Github:** [codedao12](https://github.com/codedao12)
9
+ **Email:** codedao12@gmail.com
10
+ **Nhóm Zalo hỗ trợ:** [Tham gia nhóm Zalo](https://zalo.me/g/uinmin927)
11
+ Vui lòng liên hệ để yêu cầu tính năng mới hoặc báo lỗi.
12
+
13
+
14
+ ## ✨ Các Tính Năng Chính
15
+
16
+ | Trạng thái | Tính Năng |
17
+ | :---: |:--------------------------------------------------|
18
+ |🔑 | **Xác thực & Kết nối** |
19
+ | ✅ | Đăng nhập bằng Mã QR |
20
+ | ✅ | Chọn Zalo Credential bằng biểu thức |
21
+ | ✅ | Hỗ trợ đăng nhập nhiều tài khoản |
22
+ | ✅ | Hỗ trợ Proxy |
23
+ | ✅ | Thông báo (QR, lỗi) qua Telegram |
24
+ |⚡️ | **Trigger - Lắng nghe sự kiện** |
25
+ | ✅ | Sự kiện tin nhắn mới (lọc theo từ khóa, nhóm) |
26
+ | ✅ | Sự kiện thu hồi tin nhắn, thả cảm xúc |
27
+ | ✅ | Sự kiện về bạn bè (kết bạn, hủy bạn) |
28
+ | ✅ | Sự kiện trong nhóm (tham gia, rời, đổi quyền,...) |
29
+ |💬 | **Gửi & Nhận Tin nhắn** |
30
+ | ✅ | Gửi tin nhắn (Văn bản, Ảnh, Sticker) |
31
+ | ✅ | Trả lời tin nhắn (Quote) |
32
+ | ✅ | Gắn thẻ (Tag) thành viên trong nhóm |
33
+ | ✅ | Thả/Gỡ cảm xúc (Reaction) vào tin nhắn |
34
+ | ✅ | Thu hồi tin nhắn đã gửi |
35
+ | ✅ | Mô phỏng trạng thái "Đang soạn tin..." |
36
+ | 👤| **Quản lý Bạn bè & Người dùng** |
37
+ | ✅ | Gửi / Hủy lời mời kết bạn |
38
+ | ✅ | Chấp nhận / Từ chối lời mời kết bạn |
39
+ | ✅ | Hủy kết bạn (xóa bạn) |
40
+ | ✅ | Lấy danh sách bạn bè & lời mời đã gửi |
41
+ | ✅ | Tìm người dùng bằng SĐT hoặc User ID |
42
+ | ✅ | Lấy thông tin chi tiết người dùng |
43
+ | ✅ | Cập nhật thông tin cá nhân (Tên, Giới tính,...) |
44
+ | ✅ | Chặn / Bỏ chặn người dùng |
45
+ | 👥| **Quản lý Nhóm** |
46
+ | ✅ | Tạo nhóm mới |
47
+ | ✅ | Thêm / Xóa thành viên khỏi nhóm |
48
+ | ✅ | Giải tán nhóm |
49
+ | ✅ | Thay đổi tên & ảnh đại diện nhóm |
50
+ | ✅ | Bổ nhiệm / Bãi nhiệm quyền Phó nhóm |
51
+ | ✅ | Chuyển quyền Trưởng nhóm |
52
+ | ✅ | Lấy danh sách tất cả các nhóm đã tham gia |
53
+ | ✅ | Lấy thông tin chi tiết và thành viên nhóm |
54
+ | ✅ | Tham gia nhóm bằng link / Rời nhóm |
55
+ | ✅ | Tạo ghi chú (Note) trong nhóm |
56
+ | 🎨| **Tính năng khác** |
57
+ | ✅ | Tạo bình chọn (Poll) trong nhóm |
58
+ | ✅ | Quản lý thẻ phân loại (Tag) |
59
+
60
+ [//]: # (| Bãi nhiệm quyền Phó nhóm | ✅ |)
61
+
62
+ ---
63
+
64
+ ## 🚀 Hướng Dẫn Cài Đặt
65
+
66
+ ### 1. Cài qua **Community Nodes** _(Khuyến nghị)_
67
+
68
+ > Yêu cầu phiên bản n8n v0.187 trở lên.
69
+
70
+ 1. Mở **n8n Editor**.
71
+ 2. Đi đến **Settings → Community Nodes**.
72
+ 3. Chọn tab **Install** và tìm kiếm `n8n-nodes-zalo-custom`.
73
+ 4. Nhấn nút **Install** để cài đặt.
74
+ 5. Sau khi cài đặt thành công, n8n sẽ tự động tải lại và các node Zalo sẽ xuất hiện trong danh sách node.
75
+
76
+ ---
77
+
78
+ ### 2. Cài thủ công
79
+
80
+ Nếu bạn đang tự host n8n, bạn có thể cài đặt bộ node này qua `npm`:
81
+
82
+ ```bash
83
+ # Điều hướng đến thư mục cài đặt n8n của bạn
84
+ cd ~/.n8n/custom
85
+ # Hoặc thư mục khác nếu bạn cấu hình biến môi trường NODE_FUNCTION_PATH
86
+
87
+ # Cài đặt package
88
+ npm install n8n-nodes-zalo-custom
89
+ ```
90
+
91
+ ---
92
+
93
+ ## 💡 Hướng Dẫn Sử Dụng
94
+
95
+ Để tự động hóa Zalo, bạn cần thực hiện các bước sau để đăng nhập và lấy `Credential` cho các node khác sử dụng.
96
+
97
+ ### Bước 1: Tạo n8n API Credential
98
+
99
+ Node `Zalo Login By QR` cần quyền truy cập API vào n8n instance của bạn để có thể **tự động tạo ra Zalo Credential** sau khi bạn đăng nhập thành công.
100
+
101
+ 1. **Lấy API Key của n8n:**
102
+ * Trong giao diện n8n, đi đến **Settings → API**.
103
+ * Nhấn **Add API key** để tạo một API key mới và sao chép nó (đổi tên API Zalo để gợi nhớ).
104
+
105
+ 2. **Tạo `n8n Zalo API Credential`:**
106
+ * Trong giao diện n8n, đi đến **Credentials → Add credential**.
107
+ * Tìm và chọn **n8n Zalo API Credential**.
108
+ * **API Key**: Dán API key bạn vừa tạo.
109
+ * **URL**: Nhập URL của n8n instance của bạn (ví dụ: `http://127.0.0.1:5678` hoặc `https://n8n.yourdomain.com`).
110
+ * Nhấn **Save**.
111
+
112
+ ### Bước 2: Đăng nhập Zalo bằng QR Code
113
+
114
+ 1. Tạo một workflow mới và thêm node **Zalo Login By QR**.
115
+ 2. Trong node này, chọn `n8n Zalo API Credential` bạn vừa tạo ở bước 1.
116
+ 3. **Chạy (Execute) node**. Một mã QR sẽ được tạo ra.
117
+ 4. Dùng ứng dụng Zalo trên điện thoại để **quét mã QR** này và xác nhận đăng nhập.
118
+ 5. Sau khi đăng nhập thành công, một `Zalo API Credential` mới** đã được tạo.
119
+
120
+ > - Bạn cần **tải lại trình duyệt** để thấy `Zalo API Credential` mới xuất hiện trong danh sách Credentials.
121
+ > - Truyền Telegram Bot Token sẽ thông báo QR qua nhóm (phù hợp tự động hoá), lưu vào credential để cảnh báo lỗi.
122
+
123
+ ### Bước 3: Sử dụng các Node Zalo khác
124
+
125
+ Bây giờ bạn đã có thể sử dụng các node khác như `Zalo Trigger`, `Zalo Send Message`, `Zalo User`...
126
+
127
+ 1. Thêm node `Zalo Trigger` hoặc `Zalo Send Message` vào workflow.
128
+ 2. Trong phần **Credential to connect with**, chọn `Zalo API Credential` vừa được tạo tự động ở bước 2.
129
+ 3. Cấu hình các tham số khác và chạy workflow.
130
+
131
+ ### ✨ Chọn Zalo Credential bằng Biểu thức (Expression)
132
+
133
+ Khi bạn quản lý nhiều tài khoản Zalo, mỗi tài khoản sẽ có một `Zalo API Credential` riêng. Các node (như `Zalo Send Message`, `Zalo User`, `Zalo Group`) cho phép bạn chọn credential một cách linh hoạt bằng cách sử dụng Biểu thức (Expression).
134
+
135
+ 1. Trong một node Zalo (ví dụ: `Zalo Send Message`), bên dưới Credential, chọn `Select a custom credential from ID`.
136
+ 2. Bạn có thể truyền **User ID** hoặc **Phone** (credential mặc định sẽ không được sử dụng).
137
+
138
+ Điều này rất hữu ích để xây dựng các kịch bản tự động hóa phức tạp, ví dụ như gửi tin nhắn lần lượt từ nhiều tài khoản Zalo khác nhau trong cùng một workflow.
139
+
140
+
141
+ ---
142
+
143
+ ## 📦 Các Node Có Sẵn
144
+
145
+ ### 🔑 Zalo Login By QR
146
+ <details>
147
+ <summary><b>tạo mã QR để đăng nhập Zalo</b></summary>
148
+
149
+ - Đăng nhập vào Zalo bằng mã QR (hỗ trợ proxy).
150
+ - Hỗ trợ đăng nhập nhiều tài khoản.
151
+ - Thông báo và gửi QR qua telegram.
152
+ - Lưu thông tin đăng nhập để thay thế credential.
153
+ </details>
154
+
155
+ ---
156
+
157
+ ### ⚡️ Zalo Trigger
158
+ <details>
159
+ <summary><b>nhận sự kiện từ Zalo để phản hồi</b></summary>
160
+
161
+ - **Lắng nghe sự kiện**: tin nhắn người dùng/nhóm, thả tim, thu hồi tin nhắn, lời mời kết bạn.
162
+ - **Cấu hình**:
163
+ - Chấp nhận hoặc loại trừ các ID nhóm khi nhận sự kiện tin nhắn.
164
+ - Chỉ nhận theo từ khoá hoặc loại trừ khi nhận sự kiện tin nhắn.
165
+ - Lắng nghe sự kiện của chính bạn.
166
+ - Nhận thông báo qua telegram nếu Zalo lỗi đăng nhập.
167
+ </details>
168
+
169
+ ---
170
+
171
+ ### 💬 Zalo Send Message
172
+ <details>
173
+ <summary><b>gửi tin nhắn</b></summary>
174
+
175
+ - Gửi tin nhắn văn bản (hỗ trợ HTML), hình ảnh, sticker.
176
+ - Trả lời tin nhắn (quote), thả biểu tượng cảm xúc (reaction), tag thành viên.
177
+ - Mô phỏng hành động "Đang soạn tin...".
178
+ </details>
179
+
180
+ ---
181
+
182
+ ### 4. 👥 Zalo Group
183
+ <details>
184
+ <summary><b>quản lý nhóm</b></summary>
185
+
186
+ - **Quản lý nhóm:** Tạo nhóm, đổi tên & ảnh đại diện, lấy link mời, tham gia/rời nhóm, giải tán nhóm.
187
+ - **Quản lý thành viên:** Thêm/xóa thành viên, bổ nhiệm/bãi nhiệm phó nhóm, chuyển quyền trưởng nhóm.
188
+ - **Lấy thông tin:** Lấy danh sách tất cả các nhóm đã tham gia, lấy thông tin chi tiết và thành viên của một nhóm.
189
+ - **Tương tác khác:** Tạo ghi chú (note) mới trong nhóm.
190
+ </details>
191
+
192
+ ---
193
+
194
+ ### 5. 👤 Zalo User
195
+ <details>
196
+ <summary><b>quản lý tài khoản và bạn bè</b></summary>
197
+
198
+ - **Quản lý bạn bè:** Gửi/hủy lời mời kết bạn, chấp nhận/từ chối lời mời, hủy kết bạn.
199
+ - **Tương tác với người dùng:** Thu hồi tin nhắn, chặn/bỏ chặn, đổi tên gợi nhớ, đánh dấu đã đọc/chưa đọc.
200
+ - **Lấy thông tin:** Lấy danh sách bạn bè, gợi ý kết bạn, thông tin chi tiết người dùng (qua User ID/SĐT), lấy mã QR.
201
+ - **Cập nhật hồ sơ:** Thay đổi thông tin cá nhân của bạn (tên, ngày sinh, giới tính).
202
+ </details>
203
+
204
+ ---
205
+ ### 6. 🎨 Zalo Communication
206
+ <details>
207
+ <summary><b>thẻ phân loại và bình chọn nhóm</b></summary>
208
+
209
+ - **Sticker (Nhãn dán):** Gửi, tìm kiếm, và lấy danh sách các bộ sticker đã cài.
210
+ - **Poll (Bình chọn):** Tạo, lấy thông tin, hoặc khóa một bình chọn trong nhóm.
211
+ - **Tag (Thẻ phân loại):** Quản lý các thẻ phân loại cho cuộc trò chuyện (tạo, sửa, xóa, gán/gỡ thẻ).
212
+ </details>
213
+
214
+ ---
215
+
216
+ ## ⚠️ Lưu ý quan trọng (Đọc kỹ trước khi dùng)
217
+
218
+ **Vui lòng đọc kỹ trước khi sử dụng Zalo nodes:**
219
+ ⚠️ **Cảnh báo**:
220
+ - Việc sử dụng thư viện này đồng nghĩa với việc bạn đang làm trái với chính sách của Zalo và nó có thể khiến cho tài khoản của bạn bị vô hiệu hóa.
221
+ - Chúng tôi sẽ không chịu trách nhiệm nếu điều đó xảy ra, vậy nên hãy cân nhắc trước khi sử dụng.
222
+
223
+ **📝 Khuyến nghị:**
224
+ - Sử dụng tài khoản test, không dùng tài khoản chính.
225
+ - Tuân thủ giới hạn rate limit của Zalo, có trách nhiệm và không spam
226
+
227
+ ---
228
+
229
+ ## 🙏 Lời cảm ơn
230
+ Dự án tham khảo từ các nodes n8n có sẵn và từ **zca-js** — xin cảm ơn vì đóng góp.
231
+
232
+ ---
233
+
234
+ ## 📄 License
235
+ [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.N8nZaloApi = void 0;
4
+ class N8nZaloApi {
5
+ constructor() {
6
+ this.name = 'n8nZaloApi';
7
+ this.displayName = 'n8n Zalo API Credential';
8
+ this.documentationUrl = 'n8n-n8n-api';
9
+ this.icon = 'file:shared/n8n.png';
10
+ this.properties = [
11
+ {
12
+ displayName: 'API Key',
13
+ name: 'apiKey',
14
+ type: 'string',
15
+ default: '',
16
+ description: 'The API key used to authenticate with the n8n API.',
17
+ required: true,
18
+ typeOptions: {
19
+ password: true,
20
+ },
21
+ },
22
+ {
23
+ displayName: 'URL',
24
+ name: 'url',
25
+ type: 'string',
26
+ default: 'http://127.0.0.1:5678',
27
+ description: 'The URL of the n8n instance. Example: "http://127.0.0.1:5678" or "https://domain.vn"',
28
+ required: true,
29
+ }
30
+ ];
31
+ }
32
+ }
33
+ exports.N8nZaloApi = N8nZaloApi;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZaloApi = void 0;
4
+ class ZaloApi {
5
+ constructor() {
6
+ this.name = 'zaloApi';
7
+ this.displayName = 'Zalo API';
8
+ this.documentationUrl = 'https://developers.zalo.me/docs';
9
+ this.icon = 'file:shared/zalo.svg';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Name Account',
13
+ name: 'nameAccount',
14
+ type: 'string',
15
+ default: '',
16
+ description: 'Zalo user id',
17
+ },
18
+ {
19
+ displayName: 'User ID',
20
+ name: 'userId',
21
+ type: 'string',
22
+ default: '',
23
+ description: 'Zalo user id',
24
+ },
25
+ {
26
+ displayName: 'Phone Number',
27
+ name: 'phoneNumber',
28
+ type: 'string',
29
+ default: '',
30
+ description: 'Zalo Phone Number',
31
+ },
32
+ {
33
+ displayName: 'Proxy',
34
+ name: 'proxy',
35
+ type: 'string',
36
+ default: '',
37
+ placeholder: 'http(s)://user:pass@host:port',
38
+ description: 'HTTP proxy to use for Zalo API requests',
39
+ },
40
+ {
41
+ displayName: 'Telegram Bot Token',
42
+ name: 'telegramToken',
43
+ type: 'string',
44
+ default: '',
45
+ typeOptions: {
46
+ password: true,
47
+ },
48
+ description: 'Telegram bot token',
49
+ },
50
+ {
51
+ displayName: 'Telegram Chat ID',
52
+ name: 'telegramChatId',
53
+ type: 'string',
54
+ default: '',
55
+ description: 'Telegram chat_id to send notifications to',
56
+ },
57
+ {
58
+ displayName: 'Cookie',
59
+ name: 'cookie',
60
+ type: 'string',
61
+ default: '',
62
+ typeOptions: {
63
+ password: true,
64
+ },
65
+ description: 'Cookie from Zalo login session',
66
+ },
67
+ {
68
+ displayName: 'IMEI',
69
+ name: 'imei',
70
+ type: 'string',
71
+ default: '',
72
+ typeOptions: {
73
+ password: true,
74
+ },
75
+ description: 'IMEI identifier from Zalo login session',
76
+ },
77
+ {
78
+ displayName: 'User Agent',
79
+ name: 'userAgent',
80
+ type: 'string',
81
+ default: '',
82
+ description: 'User Agent from Zalo login session',
83
+ typeOptions: {
84
+ password: true,
85
+ },
86
+ },
87
+ {
88
+ displayName: 'Support Code',
89
+ name: 'supportCode',
90
+ type: 'string',
91
+ default: '',
92
+ description: 'Support code for Zalo API',
93
+ },
94
+ {
95
+ displayName: 'License Key',
96
+ name: 'licenseKey',
97
+ type: 'string',
98
+ default: '',
99
+ description: 'License key for Zalo API',
100
+ typeOptions: {
101
+ password: true,
102
+ },
103
+ },
104
+ ];
105
+ }
106
+ }
107
+ exports.ZaloApi = ZaloApi;
Binary file
@@ -0,0 +1,10 @@
1
+ <svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M22.782 0.166016H27.199C33.2653 0.166016 36.8103 1.05701 39.9572 2.74421C43.1041 4.4314 45.5875 6.89585 47.2557 10.0428C48.9429 13.1897 49.8339 16.7347 49.8339 22.801V27.1991C49.8339 33.2654 48.9429 36.8104 47.2557 39.9573C45.5685 43.1042 43.1041 45.5877 39.9572 47.2559C36.8103 48.9431 33.2653 49.8341 27.199 49.8341H22.8009C16.7346 49.8341 13.1896 48.9431 10.0427 47.2559C6.89583 45.5687 4.41243 43.1042 2.7442 39.9573C1.057 36.8104 0.166016 33.2654 0.166016 27.1991V22.801C0.166016 16.7347 1.057 13.1897 2.7442 10.0428C4.43139 6.89585 6.89583 4.41245 10.0427 2.74421C13.1707 1.05701 16.7346 0.166016 22.782 0.166016Z" fill="#0068FF"/>
3
+ <path opacity="0.12" fill-rule="evenodd" clip-rule="evenodd" d="M49.8336 26.4736V27.1994C49.8336 33.2657 48.9427 36.8107 47.2555 39.9576C45.5683 43.1045 43.1038 45.5879 39.9569 47.2562C36.81 48.9434 33.265 49.8344 27.1987 49.8344H22.8007C17.8369 49.8344 14.5612 49.2378 11.8104 48.0966L7.27539 43.4267L49.8336 26.4736Z" fill="#001A33"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M7.779 43.5892C10.1019 43.846 13.0061 43.1836 15.0682 42.1825C24.0225 47.1318 38.0197 46.8954 46.4923 41.4732C46.8209 40.9803 47.1279 40.4677 47.4128 39.9363C49.1062 36.7779 50.0004 33.22 50.0004 27.1316V22.7175C50.0004 16.629 49.1062 13.0711 47.4128 9.91273C45.7385 6.75436 43.2461 4.28093 40.0877 2.58758C36.9293 0.894239 33.3714 0 27.283 0H22.8499C17.6644 0 14.2982 0.652754 11.4699 1.89893C11.3153 2.03737 11.1636 2.17818 11.0151 2.32135C2.71734 10.3203 2.08658 27.6593 9.12279 37.0782C9.13064 37.0921 9.13933 37.1061 9.14889 37.1203C10.2334 38.7185 9.18694 41.5154 7.55068 43.1516C7.28431 43.399 7.37944 43.5512 7.779 43.5892Z" fill="white"/>
5
+ <path d="M20.5632 17H10.8382V19.0853H17.5869L10.9329 27.3317C10.7244 27.635 10.5728 27.9194 10.5728 28.5639V29.0947H19.748C20.203 29.0947 20.5822 28.7156 20.5822 28.2606V27.1421H13.4922L19.748 19.2938C19.8428 19.1801 20.0134 18.9716 20.0893 18.8768L20.1272 18.8199C20.4874 18.2891 20.5632 17.8341 20.5632 17.2844V17Z" fill="#0068FF"/>
6
+ <path d="M32.9416 29.0947H34.3255V17H32.2402V28.3933C32.2402 28.7725 32.5435 29.0947 32.9416 29.0947Z" fill="#0068FF"/>
7
+ <path d="M25.814 19.6924C23.1979 19.6924 21.0747 21.8156 21.0747 24.4317C21.0747 27.0478 23.1979 29.171 25.814 29.171C28.4301 29.171 30.5533 27.0478 30.5533 24.4317C30.5723 21.8156 28.4491 19.6924 25.814 19.6924ZM25.814 27.2184C24.2785 27.2184 23.0273 25.9672 23.0273 24.4317C23.0273 22.8962 24.2785 21.645 25.814 21.645C27.3495 21.645 28.6007 22.8962 28.6007 24.4317C28.6007 25.9672 27.3685 27.2184 25.814 27.2184Z" fill="#0068FF"/>
8
+ <path d="M40.4867 19.6162C37.8516 19.6162 35.7095 21.7584 35.7095 24.3934C35.7095 27.0285 37.8516 29.1707 40.4867 29.1707C43.1217 29.1707 45.2639 27.0285 45.2639 24.3934C45.2639 21.7584 43.1217 19.6162 40.4867 19.6162ZM40.4867 27.2181C38.9322 27.2181 37.681 25.9669 37.681 24.4124C37.681 22.8579 38.9322 21.6067 40.4867 21.6067C42.0412 21.6067 43.2924 22.8579 43.2924 24.4124C43.2924 25.9669 42.0412 27.2181 40.4867 27.2181Z" fill="#0068FF"/>
9
+ <path d="M29.4562 29.0944H30.5747V19.957H28.6221V28.2793C28.6221 28.7153 29.0012 29.0944 29.4562 29.0944Z" fill="#0068FF"/>
10
+ </svg>
package/index.js ADDED
File without changes