@ray-js/t-agent-ui-ray 0.2.0-beta-5 → 0.2.0-beta-6
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/dist/ChatContainer/index.js +4 -4
- package/dist/EchartsBlockRender/index.js +2 -1
- package/dist/MessageInput/MessageInputAIStream/index.d.ts +7 -0
- package/dist/MessageInput/MessageInputAIStream/index.js +37 -10
- package/dist/MessageInput/index.less +8 -0
- package/dist/MessageList/index.js +2 -1
- package/dist/hooks/useAttachmentInput.d.ts +7 -3
- package/dist/hooks/useAttachmentInput.js +76 -13
- package/dist/hooks/useLongPress.js +2 -2
- package/dist/hooks/useTranslate.js +2 -1
- package/dist/i18n/strings.d.ts +14 -0
- package/dist/i18n/strings.js +16 -2
- package/dist/tiles/BubbleTile/index.js +5 -12
- package/dist/tiles/BubbleTile/index.less +8 -3
- package/dist/tiles/FileTile/file.svg +1 -0
- package/dist/tiles/FileTile/index.js +46 -25
- package/dist/tiles/FileTile/index.less +21 -4
- package/dist/tiles/TextTile/index.js +3 -2
- package/dist/utils/file.d.ts +5 -1
- package/dist/utils/file.js +14 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/package.json +2 -2
- package/dist/MessageInput/icons/keyboard.svg +0 -1
|
@@ -10,13 +10,13 @@ import cx from 'clsx';
|
|
|
10
10
|
import { ChatAgentContext, MessageContext, RenderContext } from '../contexts';
|
|
11
11
|
import { defaultRenderOptions } from '../renderOption';
|
|
12
12
|
import logger from '../logger';
|
|
13
|
+
import { systemInfo } from '../utils';
|
|
13
14
|
export default function ChatContainer(props) {
|
|
14
15
|
const [keyboardHeight, setKeyboardHeight] = useState(0);
|
|
15
16
|
const [windowSize, setWindowSize] = useState(() => {
|
|
16
|
-
const info = ty.getSystemInfoSync();
|
|
17
17
|
return {
|
|
18
|
-
width:
|
|
19
|
-
height:
|
|
18
|
+
width: systemInfo.windowWidth,
|
|
19
|
+
height: systemInfo.windowHeight
|
|
20
20
|
};
|
|
21
21
|
});
|
|
22
22
|
const {
|
|
@@ -92,7 +92,7 @@ export default function ChatContainer(props) {
|
|
|
92
92
|
break;
|
|
93
93
|
case 'update':
|
|
94
94
|
setMessages(prev => {
|
|
95
|
-
if (
|
|
95
|
+
if (systemInfo.platform === 'android') {
|
|
96
96
|
var _prev;
|
|
97
97
|
// Android 上有兼容问题,需要手动滚动到底部
|
|
98
98
|
if (((_prev = prev[prev.length - 1]) === null || _prev === void 0 ? void 0 : _prev.id) === message.id) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Render from './index.rjs';
|
|
2
2
|
import logger from '../logger';
|
|
3
|
+
import { systemInfo } from '../utils';
|
|
3
4
|
|
|
4
5
|
// eslint-disable-next-line no-undef
|
|
5
6
|
Component({
|
|
@@ -47,7 +48,7 @@ Component({
|
|
|
47
48
|
const data = JSON.parse(content);
|
|
48
49
|
if (data.option) {
|
|
49
50
|
// eslint-disable-next-line no-undef
|
|
50
|
-
const pixelRatio =
|
|
51
|
+
const pixelRatio = systemInfo.pixelRatio;
|
|
51
52
|
this.rjs.update(this.data.canvasId, pixelRatio, data.option);
|
|
52
53
|
this.setData({
|
|
53
54
|
loading: false,
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import '../index.less';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
interface AttachmentOptions {
|
|
4
|
+
image?: boolean;
|
|
5
|
+
video?: boolean;
|
|
6
|
+
imageCount?: number;
|
|
7
|
+
videoCount?: number;
|
|
8
|
+
}
|
|
3
9
|
interface Props {
|
|
4
10
|
className?: string;
|
|
5
11
|
renderTop?: React.ReactNode;
|
|
6
12
|
placeholder?: string;
|
|
7
13
|
style?: React.CSSProperties;
|
|
14
|
+
attachment?: boolean | AttachmentOptions;
|
|
8
15
|
}
|
|
9
16
|
export default function MessageInputAIStream(props: Props): React.JSX.Element;
|
|
10
17
|
export {};
|
|
@@ -12,8 +12,6 @@ import { Emitter, EmitterEvent } from '@ray-js/t-agent';
|
|
|
12
12
|
import cx from 'clsx';
|
|
13
13
|
import imageSvg from '../icons/image.svg';
|
|
14
14
|
import videoSvg from '../icons/video.svg';
|
|
15
|
-
import loadingSvg from '../icons/loading.svg';
|
|
16
|
-
import closeCircleSvg from '../icons/close-circle.svg';
|
|
17
15
|
import { useAgentSessionValue, useAttachmentInput, useChatAgent, useEmitEvent, useIsUnmounted, useOnEvent, useTranslate } from '../../hooks';
|
|
18
16
|
import AsrInput from './AsrInput';
|
|
19
17
|
import { useSleep } from '../../hooks/useSleep';
|
|
@@ -28,6 +26,18 @@ export default function MessageInputAIStream(props) {
|
|
|
28
26
|
confirm: null,
|
|
29
27
|
cancel: null
|
|
30
28
|
});
|
|
29
|
+
const attachmentOptions = {
|
|
30
|
+
image: true,
|
|
31
|
+
video: true,
|
|
32
|
+
imageCount: 1,
|
|
33
|
+
videoCount: 1
|
|
34
|
+
};
|
|
35
|
+
if (props.attachment === false) {
|
|
36
|
+
attachmentOptions.image = false;
|
|
37
|
+
attachmentOptions.video = false;
|
|
38
|
+
} else if (typeof props.attachment === 'object') {
|
|
39
|
+
Object.assign(attachmentOptions, props.attachment);
|
|
40
|
+
}
|
|
31
41
|
const attachmentInput = useAttachmentInput({
|
|
32
42
|
local: true
|
|
33
43
|
});
|
|
@@ -179,6 +189,7 @@ export default function MessageInputAIStream(props) {
|
|
|
179
189
|
}
|
|
180
190
|
setText('');
|
|
181
191
|
setMode('voice');
|
|
192
|
+
setMoreOpen(false);
|
|
182
193
|
},
|
|
183
194
|
className: "t-agent-message-input-button t-agent-message-input-button-voice"
|
|
184
195
|
})), /*#__PURE__*/React.createElement(Button, {
|
|
@@ -270,7 +281,11 @@ export default function MessageInputAIStream(props) {
|
|
|
270
281
|
var _record$cancel;
|
|
271
282
|
(_record$cancel = record.cancel) === null || _record$cancel === void 0 || _record$cancel.call(record);
|
|
272
283
|
},
|
|
273
|
-
onBack: () =>
|
|
284
|
+
onBack: () => {
|
|
285
|
+
setText('');
|
|
286
|
+
setMode('text');
|
|
287
|
+
setMoreOpen(false);
|
|
288
|
+
},
|
|
274
289
|
onAbort: () => {
|
|
275
290
|
if (responding && acRef.current) {
|
|
276
291
|
acRef.current.abort('User abort');
|
|
@@ -310,8 +325,7 @@ export default function MessageInputAIStream(props) {
|
|
|
310
325
|
content = /*#__PURE__*/React.createElement(View, {
|
|
311
326
|
className: "t-agent-message-input-uploaded-file-loading",
|
|
312
327
|
key: file.id
|
|
313
|
-
}, /*#__PURE__*/React.createElement(
|
|
314
|
-
src: loadingSvg,
|
|
328
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
315
329
|
className: "t-agent-message-input-uploaded-file-loading-icon"
|
|
316
330
|
}));
|
|
317
331
|
break;
|
|
@@ -321,21 +335,27 @@ export default function MessageInputAIStream(props) {
|
|
|
321
335
|
return /*#__PURE__*/React.createElement(View, {
|
|
322
336
|
key: file.id,
|
|
323
337
|
className: "t-agent-message-input-uploaded-file"
|
|
324
|
-
}, /*#__PURE__*/React.createElement(
|
|
338
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
325
339
|
onClick: () => {
|
|
326
340
|
setUploaded(prev => prev.filter(f => f.id !== file.id));
|
|
327
341
|
},
|
|
328
|
-
className: "t-agent-message-input-uploaded-file-delete"
|
|
329
|
-
src: closeCircleSvg
|
|
342
|
+
className: "t-agent-message-input-uploaded-file-delete"
|
|
330
343
|
}), content);
|
|
331
344
|
})), container), /*#__PURE__*/React.createElement(View, {
|
|
332
345
|
className: "t-agent-message-input-panel ".concat(moreOpen ? '' : 't-agent-message-input-panel-close')
|
|
333
346
|
}, /*#__PURE__*/React.createElement(View, {
|
|
334
347
|
className: "t-agent-message-input-panel-content"
|
|
335
|
-
}, /*#__PURE__*/React.createElement(Button, {
|
|
348
|
+
}, attachmentOptions.image && /*#__PURE__*/React.createElement(Button, {
|
|
336
349
|
className: "t-agent-message-input-panel-button",
|
|
337
350
|
onClick: async () => {
|
|
338
351
|
try {
|
|
352
|
+
if (uploaded.filter(f => f.type === 'image').length >= (attachmentOptions.imageCount || 1)) {
|
|
353
|
+
ty.showToast({
|
|
354
|
+
icon: 'none',
|
|
355
|
+
title: t('t-agent.input.upload.image.max-reached')
|
|
356
|
+
});
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
339
359
|
await upload('image', 1);
|
|
340
360
|
} catch (e) {
|
|
341
361
|
ty.showToast({
|
|
@@ -348,10 +368,17 @@ export default function MessageInputAIStream(props) {
|
|
|
348
368
|
className: "t-agent-message-input-panel-button-icon"
|
|
349
369
|
}, /*#__PURE__*/React.createElement(Image, {
|
|
350
370
|
src: imageSvg
|
|
351
|
-
}))), /*#__PURE__*/React.createElement(Button, {
|
|
371
|
+
}))), attachmentOptions.video && /*#__PURE__*/React.createElement(Button, {
|
|
352
372
|
className: "t-agent-message-input-panel-button",
|
|
353
373
|
onClick: async () => {
|
|
354
374
|
try {
|
|
375
|
+
if (uploaded.filter(f => f.type === 'video').length >= (attachmentOptions.videoCount || 1)) {
|
|
376
|
+
ty.showToast({
|
|
377
|
+
icon: 'none',
|
|
378
|
+
title: t('t-agent.input.upload.image.max-reached')
|
|
379
|
+
});
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
355
382
|
await upload('video', 1);
|
|
356
383
|
} catch (e) {
|
|
357
384
|
ty.showToast({
|
|
@@ -53,6 +53,10 @@
|
|
|
53
53
|
width: 64rpx;
|
|
54
54
|
height: 64rpx;
|
|
55
55
|
animation: t-agent-message-input-rotating 2s infinite;
|
|
56
|
+
background-repeat: no-repeat;
|
|
57
|
+
background-position: center;
|
|
58
|
+
background-image: url('icons/loading.svg');
|
|
59
|
+
background-size: cover;
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
.t-agent-message-input-uploaded-file-image {
|
|
@@ -67,6 +71,10 @@
|
|
|
67
71
|
right: 10rpx;
|
|
68
72
|
width: 32rpx;
|
|
69
73
|
height: 32rpx;
|
|
74
|
+
background-repeat: no-repeat;
|
|
75
|
+
background-position: center;
|
|
76
|
+
background-size: cover;
|
|
77
|
+
background-image: url('icons/close-circle.svg');
|
|
70
78
|
}
|
|
71
79
|
|
|
72
80
|
.t-agent-message-input-text-bar {
|
|
@@ -13,6 +13,7 @@ import MessageRender from '../MessageRender';
|
|
|
13
13
|
import { useAgentMessage, useAgentSessionValue, useOnEvent } from '../hooks';
|
|
14
14
|
import { useDebouncedFn } from '../hooks/useDebouncedFn';
|
|
15
15
|
import { useSleep } from '../hooks/useSleep';
|
|
16
|
+
import { systemInfo } from '../utils';
|
|
16
17
|
export default function MessageList(props) {
|
|
17
18
|
const {
|
|
18
19
|
className,
|
|
@@ -36,7 +37,7 @@ export default function MessageList(props) {
|
|
|
36
37
|
// @ts-ignore
|
|
37
38
|
const {
|
|
38
39
|
containerVersion
|
|
39
|
-
} =
|
|
40
|
+
} = systemInfo;
|
|
40
41
|
return {
|
|
41
42
|
// 在 2.27.2 版本之前,pageScrollTo 在某些场景不生效
|
|
42
43
|
scroll: containerVersion && isVersionMatch('>=2.27.2', containerVersion)
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { InputBlock } from '@ray-js/t-agent';
|
|
3
|
-
export
|
|
3
|
+
export type UploadFile = {
|
|
4
4
|
id: string;
|
|
5
|
-
type: 'image' | 'video'
|
|
5
|
+
type: 'image' | 'video';
|
|
6
6
|
url?: string;
|
|
7
7
|
thumbUrl?: string;
|
|
8
|
-
|
|
8
|
+
size: number;
|
|
9
|
+
} | {
|
|
10
|
+
id: string;
|
|
11
|
+
type: 'loading';
|
|
12
|
+
};
|
|
9
13
|
export declare function useAttachmentInput({ local }?: {
|
|
10
14
|
local: boolean;
|
|
11
15
|
}): {
|
|
@@ -7,6 +7,7 @@ import { useCallback, useMemo, useState } from 'react';
|
|
|
7
7
|
import { chooseImage, chooseVideo, uploadImage, uploadVideo } from '../utils/file';
|
|
8
8
|
import { generateId } from '@ray-js/t-agent';
|
|
9
9
|
import { useRenderOptions } from './context';
|
|
10
|
+
import { useTranslate } from './useTranslate';
|
|
10
11
|
export function useAttachmentInput() {
|
|
11
12
|
let {
|
|
12
13
|
local
|
|
@@ -15,6 +16,7 @@ export function useAttachmentInput() {
|
|
|
15
16
|
};
|
|
16
17
|
const [uploaded, setUploaded] = useState([]);
|
|
17
18
|
const uploading = useMemo(() => uploaded.some(file => file.type === 'loading'), [uploaded]);
|
|
19
|
+
const t = useTranslate();
|
|
18
20
|
const blocks = useMemo(() => {
|
|
19
21
|
const b = [];
|
|
20
22
|
if (uploaded.length) {
|
|
@@ -24,7 +26,8 @@ export function useAttachmentInput() {
|
|
|
24
26
|
b.push({
|
|
25
27
|
type: 'image_path',
|
|
26
28
|
image_path: {
|
|
27
|
-
path: uploadFile.url
|
|
29
|
+
path: uploadFile.url,
|
|
30
|
+
size: uploadFile.size
|
|
28
31
|
}
|
|
29
32
|
});
|
|
30
33
|
} else {
|
|
@@ -42,7 +45,8 @@ export function useAttachmentInput() {
|
|
|
42
45
|
type: 'video_path',
|
|
43
46
|
video_path: {
|
|
44
47
|
path: uploadFile.url,
|
|
45
|
-
thumb_path: uploadFile.thumbUrl
|
|
48
|
+
thumb_path: uploadFile.thumbUrl,
|
|
49
|
+
size: uploadFile.size
|
|
46
50
|
}
|
|
47
51
|
});
|
|
48
52
|
} else {
|
|
@@ -66,15 +70,31 @@ export function useAttachmentInput() {
|
|
|
66
70
|
uploaded.push({
|
|
67
71
|
id: generateId(),
|
|
68
72
|
type: 'image',
|
|
69
|
-
url: block.image_url.url
|
|
73
|
+
url: block.image_url.url,
|
|
74
|
+
size: 0
|
|
70
75
|
});
|
|
71
|
-
}
|
|
72
|
-
if (block.type === 'video_url') {
|
|
76
|
+
} else if (block.type === 'video_url') {
|
|
73
77
|
uploaded.push({
|
|
74
78
|
id: generateId(),
|
|
75
79
|
type: 'video',
|
|
76
80
|
url: block.video_url.url,
|
|
77
|
-
thumbUrl: block.video_url.thumb_url
|
|
81
|
+
thumbUrl: block.video_url.thumb_url,
|
|
82
|
+
size: 0
|
|
83
|
+
});
|
|
84
|
+
} else if (block.type === 'image_path') {
|
|
85
|
+
uploaded.push({
|
|
86
|
+
id: generateId(),
|
|
87
|
+
type: 'image',
|
|
88
|
+
url: block.image_path.path,
|
|
89
|
+
size: block.image_path.size || 0
|
|
90
|
+
});
|
|
91
|
+
} else if (block.type === 'video_path') {
|
|
92
|
+
uploaded.push({
|
|
93
|
+
id: generateId(),
|
|
94
|
+
type: 'video',
|
|
95
|
+
url: block.video_path.path,
|
|
96
|
+
thumbUrl: block.video_path.thumb_path,
|
|
97
|
+
size: block.video_path.size || 0
|
|
78
98
|
});
|
|
79
99
|
}
|
|
80
100
|
}
|
|
@@ -90,20 +110,60 @@ export function useAttachmentInput() {
|
|
|
90
110
|
const upload = useCallback(async function (type) {
|
|
91
111
|
let count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
92
112
|
if (type === 'image') {
|
|
93
|
-
let
|
|
113
|
+
let file = [];
|
|
94
114
|
try {
|
|
95
|
-
|
|
115
|
+
const sourceType = await new Promise(resolve => {
|
|
116
|
+
ty.showActionSheet({
|
|
117
|
+
itemList: [t('t-agent.input.upload.source-type.camera'), t('t-agent.input.upload.source-type.album')],
|
|
118
|
+
success: _ref => {
|
|
119
|
+
let {
|
|
120
|
+
tapIndex
|
|
121
|
+
} = _ref;
|
|
122
|
+
if (tapIndex === 0) {
|
|
123
|
+
ty.authorize({
|
|
124
|
+
scope: 'scope.camera',
|
|
125
|
+
success() {
|
|
126
|
+
resolve('camera');
|
|
127
|
+
},
|
|
128
|
+
fail() {
|
|
129
|
+
ty.showToast({
|
|
130
|
+
title: t('t-agent.input.upload.source-type.camera.require-permission'),
|
|
131
|
+
icon: 'none'
|
|
132
|
+
});
|
|
133
|
+
resolve('');
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
} else if (tapIndex === 1) {
|
|
137
|
+
resolve('album');
|
|
138
|
+
} else {
|
|
139
|
+
resolve('');
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
fail() {
|
|
143
|
+
resolve('');
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
if (!sourceType) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
file = await chooseImage(count, sourceType);
|
|
96
151
|
} catch (err) {
|
|
97
152
|
return;
|
|
98
153
|
}
|
|
99
|
-
await Promise.all(
|
|
154
|
+
await Promise.all(file.map(async _ref2 => {
|
|
155
|
+
let {
|
|
156
|
+
path,
|
|
157
|
+
size
|
|
158
|
+
} = _ref2;
|
|
100
159
|
const id = generateId();
|
|
101
160
|
try {
|
|
102
161
|
if (local) {
|
|
103
162
|
setUploaded(prev => [...prev, {
|
|
104
163
|
id,
|
|
105
164
|
type: 'image',
|
|
106
|
-
url: path
|
|
165
|
+
url: path,
|
|
166
|
+
size
|
|
107
167
|
}]);
|
|
108
168
|
} else {
|
|
109
169
|
setUploaded(prev => [...prev, {
|
|
@@ -116,7 +176,8 @@ export function useAttachmentInput() {
|
|
|
116
176
|
setUploaded(prev => prev.map(item => item.id === id ? {
|
|
117
177
|
id,
|
|
118
178
|
type: 'image',
|
|
119
|
-
url: publicUrl
|
|
179
|
+
url: publicUrl,
|
|
180
|
+
size
|
|
120
181
|
} : item));
|
|
121
182
|
}
|
|
122
183
|
} catch (error) {
|
|
@@ -145,7 +206,8 @@ export function useAttachmentInput() {
|
|
|
145
206
|
id,
|
|
146
207
|
type: 'video',
|
|
147
208
|
url: file.tempFilePath,
|
|
148
|
-
thumbUrl: file.thumbTempFilePath
|
|
209
|
+
thumbUrl: file.thumbTempFilePath,
|
|
210
|
+
size: file.size
|
|
149
211
|
}]);
|
|
150
212
|
} else {
|
|
151
213
|
const [thumb, video] = await Promise.all([uploadImage(file.thumbTempFilePath, getStaticResourceBizType(file.thumbTempFilePath, 'videoThumb:upload')), uploadVideo(file.tempFilePath, getStaticResourceBizType(file.tempFilePath, 'video:upload'))]);
|
|
@@ -153,7 +215,8 @@ export function useAttachmentInput() {
|
|
|
153
215
|
id,
|
|
154
216
|
type: 'video',
|
|
155
217
|
url: video.publicUrl,
|
|
156
|
-
thumbUrl: thumb.publicUrl
|
|
218
|
+
thumbUrl: thumb.publicUrl,
|
|
219
|
+
size: 0
|
|
157
220
|
} : item));
|
|
158
221
|
}
|
|
159
222
|
} catch (error) {
|
|
@@ -7,6 +7,7 @@ import { useState, useEffect, useCallback } from 'react';
|
|
|
7
7
|
import logger from '../logger';
|
|
8
8
|
import { useChatAgent, useEmitEvent } from './context';
|
|
9
9
|
import { useTranslate } from './useTranslate';
|
|
10
|
+
import { systemInfo } from '../utils';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* 预定义动作类型
|
|
@@ -42,7 +43,6 @@ export function useLongPress() {
|
|
|
42
43
|
});
|
|
43
44
|
useEffect(() => {
|
|
44
45
|
try {
|
|
45
|
-
const systemInfo = ty.getSystemInfoSync();
|
|
46
46
|
setScreenSize({
|
|
47
47
|
width: systemInfo.windowWidth,
|
|
48
48
|
height: systemInfo.windowHeight
|
|
@@ -232,7 +232,7 @@ export function useLongPress() {
|
|
|
232
232
|
isClosing: false,
|
|
233
233
|
menuPosition: adjustedPosition
|
|
234
234
|
});
|
|
235
|
-
if (
|
|
235
|
+
if (systemInfo.brand !== 'devtools') {
|
|
236
236
|
ty.vibrateShort({
|
|
237
237
|
type: 'light'
|
|
238
238
|
});
|
|
@@ -3,6 +3,7 @@ import "core-js/modules/web.dom-collections.iterator.js";
|
|
|
3
3
|
import { useRenderOptions } from './context';
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
5
|
import strings from '../i18n/strings';
|
|
6
|
+
import { systemInfo } from '../utils';
|
|
6
7
|
const keyRE = /^t-agent\./;
|
|
7
8
|
const langRE = {
|
|
8
9
|
'zh-Hans': /^zh([-_](hans|cn|zh))/i,
|
|
@@ -44,7 +45,7 @@ export const translateWith = (key, i18nTranslate) => {
|
|
|
44
45
|
var _strings$language;
|
|
45
46
|
let {
|
|
46
47
|
language
|
|
47
|
-
} =
|
|
48
|
+
} = systemInfo;
|
|
48
49
|
language = normalizeLanguage(language);
|
|
49
50
|
if ((_strings$language = strings[language]) !== null && _strings$language !== void 0 && _strings$language[key]) {
|
|
50
51
|
translateCache.set(key, strings[language][key]);
|
package/dist/i18n/strings.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const _default: {
|
|
|
67
67
|
't-agent.expand.scene.auto': string;
|
|
68
68
|
't-agent.expand.no.details': string;
|
|
69
69
|
't-agent.unknown-error': string;
|
|
70
|
+
't-agent.input.upload.source-type.camera': string;
|
|
71
|
+
't-agent.input.upload.source-type.camera.require-permission': string;
|
|
72
|
+
't-agent.input.upload.source-type.album': string;
|
|
73
|
+
't-agent.input.upload.source-type.album.require-permission': string;
|
|
74
|
+
't-agent.input.upload.image.max-reached': string;
|
|
75
|
+
't-agent.input.upload.video.max-reached': string;
|
|
76
|
+
't-agent.file-tile.unknown-filename': string;
|
|
70
77
|
};
|
|
71
78
|
'zh-Hant': {
|
|
72
79
|
't-agent.build-in.button.create_scene_manually': string;
|
|
@@ -200,6 +207,13 @@ declare const _default: {
|
|
|
200
207
|
't-agent.expand.scene.auto': string;
|
|
201
208
|
't-agent.expand.no.details': string;
|
|
202
209
|
't-agent.unknown-error': string;
|
|
210
|
+
't-agent.input.upload.source-type.camera': string;
|
|
211
|
+
't-agent.input.upload.source-type.camera.require-permission': string;
|
|
212
|
+
't-agent.input.upload.source-type.album': string;
|
|
213
|
+
't-agent.input.upload.source-type.album.require-permission': string;
|
|
214
|
+
't-agent.input.upload.image.max-reached': string;
|
|
215
|
+
't-agent.input.upload.video.max-reached': string;
|
|
216
|
+
't-agent.file-tile.unknown-filename': string;
|
|
203
217
|
};
|
|
204
218
|
ja: {
|
|
205
219
|
't-agent.build-in.button.create_scene_manually': string;
|
package/dist/i18n/strings.js
CHANGED
|
@@ -66,7 +66,14 @@ export default {
|
|
|
66
66
|
't-agent.expand.scene.one-click': '一键执行',
|
|
67
67
|
't-agent.expand.scene.auto': '自动执行',
|
|
68
68
|
't-agent.expand.no.details': '没有可显示的详情内容',
|
|
69
|
-
't-agent.unknown-error': '未知错误'
|
|
69
|
+
't-agent.unknown-error': '未知错误',
|
|
70
|
+
't-agent.input.upload.source-type.camera': '拍照',
|
|
71
|
+
't-agent.input.upload.source-type.camera.require-permission': '拍照需要摄像头权限,请在设置中开启',
|
|
72
|
+
't-agent.input.upload.source-type.album': '从相册中选择',
|
|
73
|
+
't-agent.input.upload.source-type.album.require-permission': '从相册中选择需要相册权限,请在设置中开启',
|
|
74
|
+
't-agent.input.upload.image.max-reached': '已达到图片上传上限',
|
|
75
|
+
't-agent.input.upload.video.max-reached': '已达到视频上传上限',
|
|
76
|
+
't-agent.file-tile.unknown-filename': '文件'
|
|
70
77
|
},
|
|
71
78
|
'zh-Hant': {
|
|
72
79
|
't-agent.build-in.button.create_scene_manually': '手動創建場景',
|
|
@@ -202,7 +209,14 @@ export default {
|
|
|
202
209
|
't-agent.expand.scene.one-click': 'One-click Execution',
|
|
203
210
|
't-agent.expand.scene.auto': 'Automatic Execution',
|
|
204
211
|
't-agent.expand.no.details': 'No details available',
|
|
205
|
-
't-agent.unknown-error': 'Unknown Error'
|
|
212
|
+
't-agent.unknown-error': 'Unknown Error',
|
|
213
|
+
't-agent.input.upload.source-type.camera': 'Take a photo',
|
|
214
|
+
't-agent.input.upload.source-type.camera.require-permission': 'Taking a photo requires camera permission, please enable it in settings',
|
|
215
|
+
't-agent.input.upload.source-type.album': 'Pick from album',
|
|
216
|
+
't-agent.input.upload.source-type.album.require-permission': 'Selecting from album requires album permission, please enable it in settings',
|
|
217
|
+
't-agent.input.upload.image.max-reached': 'Image upload limit reached',
|
|
218
|
+
't-agent.input.upload.video.max-reached': 'Video upload limit reached',
|
|
219
|
+
't-agent.file-tile.unknown-filename': 'File'
|
|
206
220
|
},
|
|
207
221
|
ja: {
|
|
208
222
|
't-agent.build-in.button.create_scene_manually': 'シーンを手動で作成',
|
|
@@ -7,16 +7,12 @@ import "core-js/modules/web.dom-collections.iterator.js";
|
|
|
7
7
|
import './index.less';
|
|
8
8
|
import { View } from '@ray-js/components';
|
|
9
9
|
import React, { memo, useCallback, useMemo } from 'react';
|
|
10
|
-
import { Image } from '@ray-js/ray';
|
|
11
10
|
import { BubbleTileStatus, ChatMessageStatus } from '@ray-js/t-agent';
|
|
12
11
|
import TileRender from '../../TileRender';
|
|
13
|
-
import
|
|
14
|
-
import noticeWarnSvg from './notice-warn.svg';
|
|
15
|
-
import { useChatAgent, useLongPress, useRenderOptions, useTranslate } from '../../hooks';
|
|
12
|
+
import { useLongPress, useRenderOptions, useTranslate } from '../../hooks';
|
|
16
13
|
import RollBack from '../WorkflowTile/RollBack';
|
|
17
14
|
const BubbleTile = props => {
|
|
18
15
|
var _workflowTile$data;
|
|
19
|
-
useChatAgent();
|
|
20
16
|
const {
|
|
21
17
|
renderLongPressAs
|
|
22
18
|
} = useRenderOptions();
|
|
@@ -95,8 +91,7 @@ const BubbleTile = props => {
|
|
|
95
91
|
return /*#__PURE__*/React.createElement(View, _extends({
|
|
96
92
|
className: "t-agent-bubble-tile t-agent-bubble-tile-error-alert",
|
|
97
93
|
"data-testid": "t-agent-bubble-tile"
|
|
98
|
-
}, longPressRes.longPressProps), /*#__PURE__*/React.createElement(
|
|
99
|
-
src: noticeSvg,
|
|
94
|
+
}, longPressRes.longPressProps), /*#__PURE__*/React.createElement(View, {
|
|
100
95
|
className: "t-agent-bubble-tile-error",
|
|
101
96
|
"data-testid": "t-agent-bubble-tile-error"
|
|
102
97
|
}), /*#__PURE__*/React.createElement(View, {
|
|
@@ -137,18 +132,16 @@ const ErrorNotice = /*#__PURE__*/memo(_ref => {
|
|
|
137
132
|
showInfo
|
|
138
133
|
} = _ref;
|
|
139
134
|
if (bubbleStatus === BubbleTileStatus.ERROR) {
|
|
140
|
-
return /*#__PURE__*/React.createElement(
|
|
135
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
141
136
|
onClick: showInfo,
|
|
142
|
-
src: noticeSvg,
|
|
143
137
|
className: "t-agent-bubble-tile-error",
|
|
144
138
|
"data-testid": "t-agent-bubble-tile-error"
|
|
145
139
|
});
|
|
146
140
|
}
|
|
147
141
|
if (bubbleStatus === BubbleTileStatus.WARNING) {
|
|
148
|
-
return /*#__PURE__*/React.createElement(
|
|
142
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
149
143
|
onClick: showInfo,
|
|
150
|
-
|
|
151
|
-
className: "t-agent-bubble-tile-error",
|
|
144
|
+
className: "t-agent-bubble-tile-warning",
|
|
152
145
|
"data-testid": "t-agent-bubble-tile-warning"
|
|
153
146
|
});
|
|
154
147
|
}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
background: var(--app-M2_1);
|
|
23
23
|
border-radius: 32rpx;
|
|
24
24
|
padding: 24rpx;
|
|
25
|
+
max-width: 686rpx;
|
|
25
26
|
|
|
26
27
|
.t-agent-bubble-tile-error {
|
|
27
28
|
margin: 0 12rpx 0 0;
|
|
@@ -30,9 +31,6 @@
|
|
|
30
31
|
.t-agent-bubble-tile-error-alert-text {
|
|
31
32
|
flex: 0 1 auto;
|
|
32
33
|
min-width: 0;
|
|
33
|
-
white-space: nowrap;
|
|
34
|
-
overflow: hidden;
|
|
35
|
-
text-overflow: ellipsis;
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
|
|
@@ -115,10 +113,17 @@
|
|
|
115
113
|
text-align: center;
|
|
116
114
|
}
|
|
117
115
|
|
|
116
|
+
.t-agent-bubble-tile-warning,
|
|
118
117
|
.t-agent-bubble-tile-error {
|
|
119
118
|
width: 32rpx;
|
|
120
119
|
height: 32rpx;
|
|
121
120
|
margin: 0 18rpx;
|
|
121
|
+
flex: 1 0 auto;
|
|
122
|
+
background: url("./notice.svg") no-repeat center center;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.t-agent-bubble-tile-warning {
|
|
126
|
+
background: url("./notice-warn.svg") no-repeat center center;
|
|
122
127
|
}
|
|
123
128
|
|
|
124
129
|
@keyframes t-agent-bubble-tile-blink {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1748237763652" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6368" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M637.194862 113.714901l0 189.396581 182.346001 0L649.150148 113.714901 637.194862 113.714901zM816.682769 896.959605c6.27696-6.275937 10.255575-14.8318 10.255575-24.52865L826.938344 355.018689l-195.461717 0 0 0c-12.534478 0-24.489764-5.13802-32.467459-13.693884l0 0c-8.555863-7.985882-13.674441-19.391652-13.674441-32.515554L585.334727 113.714901 229.169935 113.714901l0 0c-9.685593 0-18.232247 3.418866-24.498974 9.69685-6.26775 6.27696-9.69685 14.832823-9.69685 24.529673l0 0 0 724.489532 0 0c0 9.69685 3.429099 18.252713 9.69685 24.52865 6.26775 6.277984 14.813381 10.276041 24.498974 10.276041l0 0 563.02307 0 0 0C801.868365 907.235646 810.425252 903.236566 816.682769 896.959605L816.682769 896.959605zM229.169935 61.798485l442.211541 0 2.838651 0 1.719154 1.708921L876.518552 284.850583l1.720178 1.719154 0 2.278903 0 583.583338c0 23.968901-9.69685 45.639456-25.071002 61.051471l0 0c-15.392572 15.393595-37.044708 25.090445-60.974723 25.090445l0 0-563.02307 0 0 0c-23.360034 0-45.02138-9.69685-60.974723-25.090445-15.383362-15.413038-25.069979-37.08257-25.069979-61.051471L143.125233 147.941424c0-23.38971 9.686616-45.070498 25.069979-61.043285C184.148555 71.494311 205.809901 61.798485 229.169935 61.798485L229.169935 61.798485z" fill="#7b7c7e" p-id="6369"></path></svg>
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import "core-js/modules/web.dom-collections.iterator.js";
|
|
1
2
|
import './index.less';
|
|
2
3
|
import { View } from '@ray-js/components';
|
|
3
4
|
import React, { useMemo } from 'react';
|
|
4
|
-
|
|
5
|
+
import { Image } from '@ray-js/ray';
|
|
6
|
+
import cx from 'clsx';
|
|
7
|
+
import { useTranslate } from '../../hooks';
|
|
5
8
|
export default function FileTile(props) {
|
|
6
9
|
const {
|
|
7
10
|
mimeType,
|
|
@@ -9,6 +12,7 @@ export default function FileTile(props) {
|
|
|
9
12
|
path,
|
|
10
13
|
src
|
|
11
14
|
} = props.tile.data;
|
|
15
|
+
const t = useTranslate();
|
|
12
16
|
const showName = useMemo(() => {
|
|
13
17
|
if (name) {
|
|
14
18
|
return name;
|
|
@@ -17,26 +21,50 @@ export default function FileTile(props) {
|
|
|
17
21
|
const pathArr = path.split('/');
|
|
18
22
|
return pathArr[pathArr.length - 1];
|
|
19
23
|
}
|
|
20
|
-
return '
|
|
24
|
+
return t('t-agent.file-tile.unknown-filename');
|
|
21
25
|
}, [name, path]);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
let inner;
|
|
27
|
+
const size = useMemo(() => {
|
|
28
|
+
const s = props.tile.data.size;
|
|
29
|
+
if (!s) {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
if (s < 1024) {
|
|
33
|
+
return "".concat(s, " B");
|
|
34
|
+
}
|
|
35
|
+
if (s < 1024 * 1024) {
|
|
36
|
+
return "".concat((s / 1024).toFixed(2), " KB");
|
|
37
|
+
}
|
|
38
|
+
return "".concat((s / (1024 * 1024)).toFixed(2), " MB");
|
|
39
|
+
}, [props.tile.data.size]);
|
|
40
|
+
const [hasError, setHasError] = React.useState(false);
|
|
41
|
+
if (mimeType.startsWith('image')) {
|
|
42
|
+
inner = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Image, {
|
|
43
|
+
mode: "aspectFit",
|
|
44
|
+
className: cx('t-agent-file-tile-file-icon', 't-agent-file-tile-image-preview', {
|
|
45
|
+
't-agent-file-tile-image-error': hasError
|
|
46
|
+
}),
|
|
47
|
+
src: src || path,
|
|
48
|
+
onError: () => {
|
|
49
|
+
setHasError(true);
|
|
31
50
|
}
|
|
51
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
52
|
+
className: "t-agent-file-tile-info"
|
|
32
53
|
}, /*#__PURE__*/React.createElement(View, {
|
|
33
|
-
className: "t-agent-file-tile-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
className: "t-agent-file-tile-filename"
|
|
55
|
+
}, showName), size && /*#__PURE__*/React.createElement(View, {
|
|
56
|
+
className: "t-agent-file-tile-filesize"
|
|
57
|
+
}, size)));
|
|
58
|
+
} else {
|
|
59
|
+
inner = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
|
|
60
|
+
className: "t-agent-file-tile-file-icon"
|
|
37
61
|
}), /*#__PURE__*/React.createElement(View, {
|
|
38
|
-
className: "t-agent-file-tile-
|
|
39
|
-
},
|
|
62
|
+
className: "t-agent-file-tile-info"
|
|
63
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
64
|
+
className: "t-agent-file-tile-filename"
|
|
65
|
+
}, showName), size && /*#__PURE__*/React.createElement(View, {
|
|
66
|
+
className: "t-agent-file-tile-filesize"
|
|
67
|
+
}, size)));
|
|
40
68
|
}
|
|
41
69
|
return /*#__PURE__*/React.createElement(View, {
|
|
42
70
|
className: "t-agent-file-tile",
|
|
@@ -46,12 +74,5 @@ export default function FileTile(props) {
|
|
|
46
74
|
data: props.tile.data
|
|
47
75
|
});
|
|
48
76
|
}
|
|
49
|
-
},
|
|
50
|
-
className: "t-agent-file-tile-image-preview",
|
|
51
|
-
style: {
|
|
52
|
-
backgroundImage: "url(".concat(baseImg, ")")
|
|
53
|
-
}
|
|
54
|
-
}), /*#__PURE__*/React.createElement(View, {
|
|
55
|
-
className: "t-agent-file-tile-image-text"
|
|
56
|
-
}, " ", showName));
|
|
77
|
+
}, inner);
|
|
57
78
|
}
|
|
@@ -17,28 +17,45 @@
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
.t-agent-file-tile-
|
|
20
|
+
.t-agent-file-tile-file-icon {
|
|
21
21
|
width: 104rpx;
|
|
22
22
|
height: 104rpx;
|
|
23
23
|
background-repeat: no-repeat;
|
|
24
24
|
background-position: center;
|
|
25
|
-
background-size:
|
|
25
|
+
background-size: 56rpx;
|
|
26
|
+
position: relative;
|
|
27
|
+
border-radius: 32rpx;
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
|
|
30
|
+
background-image: url("./file.svg")
|
|
26
31
|
}
|
|
27
32
|
|
|
28
|
-
.t-agent-file-tile-
|
|
33
|
+
.t-agent-file-tile-info {
|
|
29
34
|
margin-left: 16rpx;
|
|
30
35
|
font-size: 12px;
|
|
31
36
|
color: var(--app-B3-N1);
|
|
32
37
|
width: 248rpx;
|
|
33
38
|
height: 104rpx;
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.t-agent-file-tile-filename {
|
|
34
45
|
word-break: break-all; /* 允许单词内断行 */
|
|
35
46
|
|
|
36
47
|
/* 限制两行 */
|
|
37
48
|
display: -webkit-box;
|
|
38
|
-
-webkit-line-clamp:
|
|
49
|
+
-webkit-line-clamp: 2; /* 控制显示行数 */
|
|
39
50
|
-webkit-box-orient: vertical;
|
|
51
|
+
height: 66rpx;
|
|
52
|
+
|
|
40
53
|
|
|
41
54
|
/* 溢出省略号 */
|
|
42
55
|
overflow: hidden;
|
|
43
56
|
text-overflow: ellipsis;
|
|
44
57
|
}
|
|
58
|
+
|
|
59
|
+
.t-agent-file-tile-filesize {
|
|
60
|
+
text-align: right;
|
|
61
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { View } from '@ray-js/components';
|
|
3
3
|
import './index.less';
|
|
4
4
|
import MarkdownRender from '../../MarkdownRender';
|
|
5
5
|
import { useRenderOptions } from '../../hooks';
|
|
6
|
+
import { systemInfo } from '../../utils';
|
|
6
7
|
const TextTile = props => {
|
|
7
8
|
const {
|
|
8
9
|
text,
|
|
@@ -12,7 +13,7 @@ const TextTile = props => {
|
|
|
12
13
|
renderCustomBlockAs,
|
|
13
14
|
customBlockTypes
|
|
14
15
|
} = useRenderOptions();
|
|
15
|
-
const theme =
|
|
16
|
+
const theme = systemInfo.theme;
|
|
16
17
|
return markdown ? /*#__PURE__*/React.createElement(MarkdownRender, {
|
|
17
18
|
theme: theme,
|
|
18
19
|
text: text,
|
package/dist/utils/file.d.ts
CHANGED
|
@@ -17,8 +17,12 @@ export declare function getUrlByCloudKey(key: string): string | undefined;
|
|
|
17
17
|
export declare function setUrlByCloudKey(key: string, url: string): void;
|
|
18
18
|
export declare function resetUrlByCloudKey(key: string): void;
|
|
19
19
|
export declare const downloadSign: (cloudKey: string, bizType: string) => Promise<string> | undefined;
|
|
20
|
-
export declare function chooseImage(count?: number): Promise<
|
|
20
|
+
export declare function chooseImage(count?: number, sourceType?: 'camera' | 'album'): Promise<{
|
|
21
|
+
path: string;
|
|
22
|
+
size: number;
|
|
23
|
+
}[]>;
|
|
21
24
|
export declare function chooseVideo(count?: number): Promise<{
|
|
22
25
|
thumbTempFilePath: string;
|
|
23
26
|
tempFilePath: string;
|
|
27
|
+
size: number;
|
|
24
28
|
}[]>;
|
package/dist/utils/file.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import "core-js/modules/es.regexp.exec.js";
|
|
2
2
|
import "core-js/modules/es.string.replace.js";
|
|
3
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
|
4
|
+
import "core-js/modules/esnext.iterator.map.js";
|
|
3
5
|
import "core-js/modules/web.dom-collections.iterator.js";
|
|
4
6
|
import { generateId } from '@ray-js/t-agent';
|
|
5
7
|
import Url from 'url-parse';
|
|
@@ -158,12 +160,23 @@ export const downloadSign = cloudKey => {
|
|
|
158
160
|
};
|
|
159
161
|
export async function chooseImage() {
|
|
160
162
|
let count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
163
|
+
let sourceType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'album';
|
|
161
164
|
const paths = await new Promise((resolve, reject) => {
|
|
162
165
|
ty.chooseImage({
|
|
163
166
|
count,
|
|
164
167
|
sizeType: ['compressed'],
|
|
168
|
+
sourceType: [sourceType],
|
|
165
169
|
success(res) {
|
|
166
|
-
resolve(res.
|
|
170
|
+
resolve(res.tempFiles.map(_ref => {
|
|
171
|
+
let {
|
|
172
|
+
path,
|
|
173
|
+
size
|
|
174
|
+
} = _ref;
|
|
175
|
+
return {
|
|
176
|
+
path,
|
|
177
|
+
size: size || 0
|
|
178
|
+
};
|
|
179
|
+
}));
|
|
167
180
|
},
|
|
168
181
|
fail(err) {
|
|
169
182
|
reject(err);
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ray-js/t-agent-ui-ray",
|
|
3
|
-
"version": "0.2.0-beta-
|
|
3
|
+
"version": "0.2.0-beta-6",
|
|
4
4
|
"author": "Tuya.inc",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"@types/echarts": "^4.9.22",
|
|
41
41
|
"@types/markdown-it": "^14.1.1"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "a09b74682949c5860f34105b4a5f8f60fc34a582"
|
|
44
44
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="32" height="32" viewBox="0 0 32 32"><defs><clipPath id="master_svg0_160_1801"><rect x="0" y="0" width="32" height="32" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_160_1801)"><g><rect x="5" y="5" width="22" height="22" rx="0" fill="#FFFFFF" fill-opacity="0.009999999776482582" style="mix-blend-mode:passthrough"/></g><g><rect x="5" y="5" width="22" height="22" rx="0" fill="#FFFFFF" fill-opacity="0.009999999776482582" style="mix-blend-mode:passthrough"/></g><g><path d="M26,16Q26,16.2455,25.988,16.4907Q25.9759,16.7359,25.9518,16.9802Q25.9278,17.2245,25.8918,17.4673Q25.8557,17.7101,25.8078,17.9509Q25.76,18.1917,25.7003,18.4298Q25.6407,18.6679,25.5694,18.9028Q25.4981,19.1378,25.4154,19.3689Q25.3327,19.6,25.2388,19.8268Q25.1448,20.0536,25.0399,20.2755Q24.9349,20.497500000000002,24.8192,20.714Q24.7035,20.930500000000002,24.5773,21.141Q24.4511,21.351599999999998,24.3147,21.5557Q24.1783,21.7598,24.0321,21.957Q23.8858,22.1542,23.7301,22.3439Q23.5744,22.5337,23.4095,22.7156Q23.2446,22.8975,23.0711,23.0711Q22.8975,23.2446,22.7156,23.4095Q22.5337,23.5744,22.3439,23.7301Q22.1542,23.8858,21.957,24.0321Q21.7598,24.1783,21.5557,24.3147Q21.351599999999998,24.4511,21.141,24.5773Q20.930500000000002,24.7035,20.714,24.8192Q20.497500000000002,24.9349,20.2755,25.0399Q20.0536,25.1448,19.8268,25.2388Q19.6,25.3327,19.3689,25.4154Q19.1378,25.4981,18.9028,25.5694Q18.6679,25.6407,18.4298,25.7003Q18.1917,25.76,17.9509,25.8078Q17.7101,25.8557,17.4673,25.8918Q17.2245,25.9278,16.9802,25.9518Q16.7359,25.9759,16.4907,25.988Q16.2455,26,16,26Q15.75451,26,15.50932,25.988Q15.26413,25.9759,15.01983,25.9518Q14.77552,25.9278,14.53269,25.8918Q14.28987,25.8557,14.0491,25.8078Q13.80833,25.76,13.5702,25.7003Q13.33207,25.6407,13.09715,25.5694Q12.86224,25.4981,12.6311,25.4154Q12.39996,25.3327,12.17316,25.2388Q11.94636,25.1448,11.724450000000001,25.0399Q11.50253,24.9349,11.28603,24.8192Q11.06953,24.7035,10.85897,24.5773Q10.64841,24.4511,10.4443,24.3147Q10.240179999999999,24.1783,10.043009999999999,24.0321Q9.84583,23.8858,9.65607,23.7301Q9.4663,23.5744,9.28441,23.4095Q9.10252,23.2446,8.92893,23.0711Q8.75535,22.8975,8.590489999999999,22.7156Q8.42563,22.5337,8.2699,22.3439Q8.11416,22.1542,7.9679199999999994,21.957Q7.82169,21.7598,7.6853,21.5557Q7.54892,21.351599999999998,7.42271,21.141Q7.29651,20.930500000000002,7.18079,20.714Q7.06507,20.497500000000002,6.960107,20.2755Q6.855148,20.0536,6.761205,19.8268Q6.667261,19.6,6.5845590000000005,19.3689Q6.501857,19.1378,6.430597,18.9028Q6.359336,18.6679,6.299687,18.4298Q6.240039,18.1917,6.192147,17.9509Q6.144255,17.7101,6.108235,17.4673Q6.0722146,17.2245,6.0481527,16.9802Q6.0240909,16.7359,6.0120454,16.4907Q6,16.2455,6,16Q6,15.75451,6.0120454,15.50932Q6.0240909,15.26413,6.0481527,15.01983Q6.0722146,14.77552,6.108235,14.53269Q6.144255,14.28987,6.192147,14.0491Q6.240039,13.80833,6.299687,13.5702Q6.359336,13.33207,6.430597,13.09715Q6.501857,12.86224,6.5845590000000005,12.6311Q6.667261,12.39996,6.761205,12.17316Q6.855148,11.94636,6.960107,11.724450000000001Q7.06507,11.50253,7.18079,11.28603Q7.29651,11.06953,7.42271,10.85897Q7.54892,10.64841,7.6853,10.4443Q7.82169,10.240179999999999,7.9679199999999994,10.043009999999999Q8.11416,9.84583,8.2699,9.65607Q8.42563,9.4663,8.590489999999999,9.28441Q8.75535,9.10252,8.92893,8.92893Q9.10252,8.75535,9.28441,8.590489999999999Q9.4663,8.42563,9.65607,8.2699Q9.84583,8.11416,10.043009999999999,7.9679199999999994Q10.240179999999999,7.82169,10.4443,7.6853Q10.64841,7.54892,10.85897,7.42271Q11.06953,7.29651,11.28603,7.18079Q11.50253,7.06507,11.724450000000001,6.960107Q11.94636,6.855148,12.17316,6.761205Q12.39996,6.667261,12.6311,6.5845590000000005Q12.86224,6.501857,13.09715,6.430597Q13.33207,6.359336,13.5702,6.299687Q13.80833,6.240039,14.0491,6.192147Q14.28987,6.144255,14.53269,6.108235Q14.77552,6.0722146,15.01983,6.0481527Q15.26413,6.0240909,15.50932,6.0120454Q15.75451,6,16,6Q16.2455,6,16.4907,6.0120454Q16.7359,6.0240909,16.9802,6.0481527Q17.2245,6.0722146,17.4673,6.108235Q17.7101,6.144255,17.9509,6.192147Q18.1917,6.240039,18.4298,6.299687Q18.6679,6.359336,18.9028,6.430597Q19.1378,6.501857,19.3689,6.5845590000000005Q19.6,6.667261,19.8268,6.761205Q20.0536,6.855148,20.2755,6.960107Q20.497500000000002,7.06507,20.714,7.18079Q20.930500000000002,7.29651,21.141,7.42271Q21.351599999999998,7.54892,21.5557,7.6853Q21.7598,7.82169,21.957,7.9679199999999994Q22.1542,8.11416,22.3439,8.2699Q22.5337,8.42563,22.7156,8.590489999999999Q22.8975,8.75535,23.0711,8.92893Q23.2446,9.10252,23.4095,9.28441Q23.5744,9.4663,23.7301,9.65607Q23.8858,9.84583,24.0321,10.043009999999999Q24.1783,10.240179999999999,24.3147,10.4443Q24.4511,10.64841,24.5773,10.85897Q24.7035,11.06953,24.8192,11.28603Q24.9349,11.50253,25.0399,11.724450000000001Q25.1448,11.94636,25.2388,12.17316Q25.3327,12.39996,25.4154,12.6311Q25.4981,12.86224,25.5694,13.09715Q25.6407,13.33207,25.7003,13.5702Q25.76,13.80833,25.8078,14.0491Q25.8557,14.28987,25.8918,14.53269Q25.9278,14.77552,25.9518,15.01983Q25.9759,15.26413,25.988,15.50932Q26,15.75451,26,16Z" fill="#000000" fill-opacity="0.699999988079071"/></g><g><path d="M13.0207959765625,12.56251701171875Q13.0207959765625,12.61880701171875,13.0152759765625,12.674827011718751Q13.0097559765625,12.73084701171875,12.9987759765625,12.78605701171875Q12.9877959765625,12.84126701171875,12.971455976562499,12.89513701171875Q12.9551159765625,12.94900701171875,12.9335659765625,13.00100701171875Q12.9120259765625,13.053017011718751,12.885495976562499,13.10266701171875Q12.8589559765625,13.15230701171875,12.827685976562499,13.19910701171875Q12.7964159765625,13.245917011718749,12.7606959765625,13.28942701171875Q12.7249859765625,13.33294701171875,12.6851859765625,13.37274701171875Q12.6453859765625,13.41254701171875,12.6018659765625,13.44825701171875Q12.558355976562499,13.48397701171875,12.5115459765625,13.515247011718749Q12.4647459765625,13.54651701171875,12.4151059765625,13.573057011718749Q12.365455976562501,13.59958701171875,12.3134459765625,13.62112701171875Q12.2614459765625,13.64267701171875,12.2075759765625,13.659017011718749Q12.1537059765625,13.67535701171875,12.0984959765625,13.68633701171875Q12.0432859765625,13.69731701171875,11.987265976562501,13.70283701171875Q11.9312459765625,13.70835701171875,11.8749559765625,13.70835701171875Q11.8186659765625,13.70835701171875,11.7626459765625,13.70283701171875Q11.7066279765625,13.69731701171875,11.6514179765625,13.68633701171875Q11.596208976562501,13.67535701171875,11.5423409765625,13.659017011718749Q11.4884739765625,13.64267701171875,11.4364679765625,13.62112701171875Q11.3844619765625,13.59958701171875,11.3348169765625,13.573057011718749Q11.2851729765625,13.54651701171875,11.2383679765625,13.515247011718749Q11.1915639765625,13.48397701171875,11.1480499765625,13.44825701171875Q11.1045369765625,13.41254701171875,11.0647329765625,13.37274701171875Q11.0249289765625,13.33294701171875,10.9892179765625,13.28942701171875Q10.9535069765625,13.245917011718749,10.9222339765625,13.19910701171875Q10.8909599765625,13.15230701171875,10.8644249765625,13.10266701171875Q10.8378889765625,13.053017011718751,10.8163473765625,13.00100701171875Q10.7948056765625,12.94900701171875,10.7784651765625,12.89513701171875Q10.7621246765625,12.84126701171875,10.7511428765625,12.78605701171875Q10.7401609765625,12.73084701171875,10.7346434765625,12.674827011718751Q10.7291259765625,12.61880701171875,10.7291259765625,12.56251701171875Q10.7291259765625,12.50622701171875,10.7346434765625,12.45020701171875Q10.7401609765625,12.39418901171875,10.7511428765625,12.33897901171875Q10.7621246765625,12.283770011718751,10.7784651765625,12.22990201171875Q10.7948056765625,12.17603501171875,10.8163473765625,12.12402901171875Q10.8378889765625,12.07202301171875,10.8644249765625,12.02237801171875Q10.8909599765625,11.97273401171875,10.9222339765625,11.92592901171875Q10.9535069765625,11.87912501171875,10.9892179765625,11.83561101171875Q11.0249289765625,11.79209801171875,11.0647329765625,11.75229401171875Q11.1045369765625,11.71249001171875,11.1480499765625,11.67677901171875Q11.1915639765625,11.64106801171875,11.2383679765625,11.60979501171875Q11.2851729765625,11.57852101171875,11.3348169765625,11.55198601171875Q11.3844619765625,11.52545001171875,11.4364679765625,11.50390841171875Q11.4884739765625,11.48236671171875,11.5423409765625,11.46602621171875Q11.596208976562501,11.44968571171875,11.6514179765625,11.43870391171875Q11.7066279765625,11.42772201171875,11.7626459765625,11.42220451171875Q11.8186659765625,11.41668701171875,11.8749559765625,11.41668701171875Q11.9312459765625,11.41668701171875,11.987265976562501,11.42220451171875Q12.0432859765625,11.42772201171875,12.0984959765625,11.43870391171875Q12.1537059765625,11.44968571171875,12.2075759765625,11.46602621171875Q12.2614459765625,11.48236671171875,12.3134459765625,11.50390841171875Q12.365455976562501,11.52545001171875,12.4151059765625,11.55198601171875Q12.4647459765625,11.57852101171875,12.5115459765625,11.60979501171875Q12.558355976562499,11.64106801171875,12.6018659765625,11.67677901171875Q12.6453859765625,11.71249001171875,12.6851859765625,11.75229401171875Q12.7249859765625,11.79209801171875,12.7606959765625,11.83561101171875Q12.7964159765625,11.87912501171875,12.827685976562499,11.92592901171875Q12.8589559765625,11.97273401171875,12.885495976562499,12.02237801171875Q12.9120259765625,12.07202301171875,12.9335659765625,12.12402901171875Q12.9551159765625,12.17603501171875,12.971455976562499,12.22990201171875Q12.9877959765625,12.283770011718751,12.9987759765625,12.33897901171875Q13.0097559765625,12.39418901171875,13.0152759765625,12.45020701171875Q13.0207959765625,12.50622701171875,13.0207959765625,12.56251701171875Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M13.0207959765625,16.22914298828125Q13.0207959765625,16.28543298828125,13.0152759765625,16.34145298828125Q13.0097559765625,16.39747298828125,12.9987759765625,16.45268298828125Q12.9877959765625,16.50789298828125,12.971455976562499,16.56176298828125Q12.9551159765625,16.61563298828125,12.9335659765625,16.667632988281248Q12.9120259765625,16.71964298828125,12.885495976562499,16.76929298828125Q12.8589559765625,16.81893298828125,12.827685976562499,16.86573298828125Q12.7964159765625,16.91254298828125,12.7606959765625,16.95605298828125Q12.7249859765625,16.99957298828125,12.6851859765625,17.03937298828125Q12.6453859765625,17.07917298828125,12.6018659765625,17.11488298828125Q12.558355976562499,17.15060298828125,12.5115459765625,17.18187298828125Q12.4647459765625,17.21314298828125,12.4151059765625,17.23968298828125Q12.365455976562501,17.26621298828125,12.3134459765625,17.287752988281248Q12.2614459765625,17.30930298828125,12.2075759765625,17.32564298828125Q12.1537059765625,17.34198298828125,12.0984959765625,17.35296298828125Q12.0432859765625,17.36394298828125,11.987265976562501,17.36946298828125Q11.9312459765625,17.37498298828125,11.8749559765625,17.37498298828125Q11.8186659765625,17.37498298828125,11.7626459765625,17.36946298828125Q11.7066279765625,17.36394298828125,11.6514179765625,17.35296298828125Q11.596208976562501,17.34198298828125,11.5423409765625,17.32564298828125Q11.4884739765625,17.30930298828125,11.4364679765625,17.287752988281248Q11.3844619765625,17.26621298828125,11.3348169765625,17.23968298828125Q11.2851729765625,17.21314298828125,11.2383679765625,17.18187298828125Q11.1915639765625,17.15060298828125,11.1480499765625,17.11488298828125Q11.1045369765625,17.07917298828125,11.0647329765625,17.03937298828125Q11.0249289765625,16.99957298828125,10.9892179765625,16.95605298828125Q10.9535069765625,16.91254298828125,10.9222339765625,16.86573298828125Q10.8909599765625,16.81893298828125,10.8644249765625,16.76929298828125Q10.8378889765625,16.71964298828125,10.8163473765625,16.667632988281248Q10.7948056765625,16.61563298828125,10.7784651765625,16.56176298828125Q10.7621246765625,16.50789298828125,10.7511428765625,16.45268298828125Q10.7401609765625,16.39747298828125,10.7346434765625,16.34145298828125Q10.7291259765625,16.28543298828125,10.7291259765625,16.22914298828125Q10.7291259765625,16.17285298828125,10.7346434765625,16.11683298828125Q10.7401609765625,16.06081498828125,10.7511428765625,16.00560498828125Q10.7621246765625,15.950395988281251,10.7784651765625,15.89652798828125Q10.7948056765625,15.84266098828125,10.8163473765625,15.79065498828125Q10.8378889765625,15.73864898828125,10.8644249765625,15.68900398828125Q10.8909599765625,15.63935998828125,10.9222339765625,15.59255498828125Q10.9535069765625,15.54575098828125,10.9892179765625,15.50223698828125Q11.0249289765625,15.45872398828125,11.0647329765625,15.41891998828125Q11.1045369765625,15.37911598828125,11.1480499765625,15.34340498828125Q11.1915639765625,15.30769398828125,11.2383679765625,15.27642098828125Q11.2851729765625,15.24514698828125,11.3348169765625,15.21861198828125Q11.3844619765625,15.19207598828125,11.4364679765625,15.17053438828125Q11.4884739765625,15.14899268828125,11.5423409765625,15.13265218828125Q11.596208976562501,15.11631168828125,11.6514179765625,15.10532988828125Q11.7066279765625,15.09434798828125,11.7626459765625,15.08883048828125Q11.8186659765625,15.08331298828125,11.8749559765625,15.08331298828125Q11.9312459765625,15.08331298828125,11.987265976562501,15.08883048828125Q12.0432859765625,15.09434798828125,12.0984959765625,15.10532988828125Q12.1537059765625,15.11631168828125,12.2075759765625,15.13265218828125Q12.2614459765625,15.14899268828125,12.3134459765625,15.17053438828125Q12.365455976562501,15.19207598828125,12.4151059765625,15.21861198828125Q12.4647459765625,15.24514698828125,12.5115459765625,15.27642098828125Q12.558355976562499,15.30769398828125,12.6018659765625,15.34340498828125Q12.6453859765625,15.37911598828125,12.6851859765625,15.41891998828125Q12.7249859765625,15.45872398828125,12.7606959765625,15.50223698828125Q12.7964159765625,15.54575098828125,12.827685976562499,15.59255498828125Q12.8589559765625,15.63935998828125,12.885495976562499,15.68900398828125Q12.9120259765625,15.73864898828125,12.9335659765625,15.79065498828125Q12.9551159765625,15.84266098828125,12.971455976562499,15.89652798828125Q12.9877959765625,15.950395988281251,12.9987759765625,16.00560498828125Q13.0097559765625,16.06081498828125,13.0152759765625,16.11683298828125Q13.0207959765625,16.17285298828125,13.0207959765625,16.22914298828125Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M17.1457959765625,12.56251701171875Q17.1457959765625,12.61880701171875,17.1402759765625,12.674827011718751Q17.1347559765625,12.73084701171875,17.1237759765625,12.78605701171875Q17.1127959765625,12.84126701171875,17.0964559765625,12.89513701171875Q17.0801159765625,12.94900701171875,17.058565976562498,13.00100701171875Q17.0370259765625,13.053017011718751,17.0104959765625,13.10266701171875Q16.9839559765625,13.15230701171875,16.9526859765625,13.19910701171875Q16.9214159765625,13.245917011718749,16.8856959765625,13.28942701171875Q16.8499859765625,13.33294701171875,16.8101859765625,13.37274701171875Q16.7703859765625,13.41254701171875,16.7268659765625,13.44825701171875Q16.6833559765625,13.48397701171875,16.6365459765625,13.515247011718749Q16.5897459765625,13.54651701171875,16.5401059765625,13.573057011718749Q16.4904559765625,13.59958701171875,16.438445976562498,13.62112701171875Q16.3864459765625,13.64267701171875,16.3325759765625,13.659017011718749Q16.2787059765625,13.67535701171875,16.2234959765625,13.68633701171875Q16.1682859765625,13.69731701171875,16.1122659765625,13.70283701171875Q16.0562459765625,13.70835701171875,15.9999559765625,13.70835701171875Q15.9436659765625,13.70835701171875,15.8876459765625,13.70283701171875Q15.8316279765625,13.69731701171875,15.7764179765625,13.68633701171875Q15.721208976562501,13.67535701171875,15.6673409765625,13.659017011718749Q15.6134739765625,13.64267701171875,15.5614679765625,13.62112701171875Q15.5094619765625,13.59958701171875,15.4598169765625,13.573057011718749Q15.4101729765625,13.54651701171875,15.3633679765625,13.515247011718749Q15.3165639765625,13.48397701171875,15.2730499765625,13.44825701171875Q15.2295369765625,13.41254701171875,15.1897329765625,13.37274701171875Q15.1499289765625,13.33294701171875,15.1142179765625,13.28942701171875Q15.0785069765625,13.245917011718749,15.0472339765625,13.19910701171875Q15.0159599765625,13.15230701171875,14.9894249765625,13.10266701171875Q14.9628889765625,13.053017011718751,14.9413473765625,13.00100701171875Q14.9198056765625,12.94900701171875,14.9034651765625,12.89513701171875Q14.8871246765625,12.84126701171875,14.8761428765625,12.78605701171875Q14.8651609765625,12.73084701171875,14.8596434765625,12.674827011718751Q14.8541259765625,12.61880701171875,14.8541259765625,12.56251701171875Q14.8541259765625,12.50622701171875,14.8596434765625,12.45020701171875Q14.8651609765625,12.39418901171875,14.8761428765625,12.33897901171875Q14.8871246765625,12.283770011718751,14.9034651765625,12.22990201171875Q14.9198056765625,12.17603501171875,14.9413473765625,12.12402901171875Q14.9628889765625,12.07202301171875,14.9894249765625,12.02237801171875Q15.0159599765625,11.97273401171875,15.0472339765625,11.92592901171875Q15.0785069765625,11.87912501171875,15.1142179765625,11.83561101171875Q15.1499289765625,11.79209801171875,15.1897329765625,11.75229401171875Q15.2295369765625,11.71249001171875,15.2730499765625,11.67677901171875Q15.3165639765625,11.64106801171875,15.3633679765625,11.60979501171875Q15.4101729765625,11.57852101171875,15.4598169765625,11.55198601171875Q15.5094619765625,11.52545001171875,15.5614679765625,11.50390841171875Q15.6134739765625,11.48236671171875,15.6673409765625,11.46602621171875Q15.721208976562501,11.44968571171875,15.7764179765625,11.43870391171875Q15.8316279765625,11.42772201171875,15.8876459765625,11.42220451171875Q15.9436659765625,11.41668701171875,15.9999559765625,11.41668701171875Q16.0562459765625,11.41668701171875,16.1122659765625,11.42220451171875Q16.1682859765625,11.42772201171875,16.2234959765625,11.43870391171875Q16.2787059765625,11.44968571171875,16.3325759765625,11.46602621171875Q16.3864459765625,11.48236671171875,16.438445976562498,11.50390841171875Q16.4904559765625,11.52545001171875,16.5401059765625,11.55198601171875Q16.5897459765625,11.57852101171875,16.6365459765625,11.60979501171875Q16.6833559765625,11.64106801171875,16.7268659765625,11.67677901171875Q16.7703859765625,11.71249001171875,16.8101859765625,11.75229401171875Q16.8499859765625,11.79209801171875,16.8856959765625,11.83561101171875Q16.9214159765625,11.87912501171875,16.9526859765625,11.92592901171875Q16.9839559765625,11.97273401171875,17.0104959765625,12.02237801171875Q17.0370259765625,12.07202301171875,17.058565976562498,12.12402901171875Q17.0801159765625,12.17603501171875,17.0964559765625,12.22990201171875Q17.1127959765625,12.283770011718751,17.1237759765625,12.33897901171875Q17.1347559765625,12.39418901171875,17.1402759765625,12.45020701171875Q17.1457959765625,12.50622701171875,17.1457959765625,12.56251701171875Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M17.1457959765625,16.22914298828125Q17.1457959765625,16.28543298828125,17.1402759765625,16.34145298828125Q17.1347559765625,16.39747298828125,17.1237759765625,16.45268298828125Q17.1127959765625,16.50789298828125,17.0964559765625,16.56176298828125Q17.0801159765625,16.61563298828125,17.058565976562498,16.667632988281248Q17.0370259765625,16.71964298828125,17.0104959765625,16.76929298828125Q16.9839559765625,16.81893298828125,16.9526859765625,16.86573298828125Q16.9214159765625,16.91254298828125,16.8856959765625,16.95605298828125Q16.8499859765625,16.99957298828125,16.8101859765625,17.03937298828125Q16.7703859765625,17.07917298828125,16.7268659765625,17.11488298828125Q16.6833559765625,17.15060298828125,16.6365459765625,17.18187298828125Q16.5897459765625,17.21314298828125,16.5401059765625,17.23968298828125Q16.4904559765625,17.26621298828125,16.438445976562498,17.287752988281248Q16.3864459765625,17.30930298828125,16.3325759765625,17.32564298828125Q16.2787059765625,17.34198298828125,16.2234959765625,17.35296298828125Q16.1682859765625,17.36394298828125,16.1122659765625,17.36946298828125Q16.0562459765625,17.37498298828125,15.9999559765625,17.37498298828125Q15.9436659765625,17.37498298828125,15.8876459765625,17.36946298828125Q15.8316279765625,17.36394298828125,15.7764179765625,17.35296298828125Q15.721208976562501,17.34198298828125,15.6673409765625,17.32564298828125Q15.6134739765625,17.30930298828125,15.5614679765625,17.287752988281248Q15.5094619765625,17.26621298828125,15.4598169765625,17.23968298828125Q15.4101729765625,17.21314298828125,15.3633679765625,17.18187298828125Q15.3165639765625,17.15060298828125,15.2730499765625,17.11488298828125Q15.2295369765625,17.07917298828125,15.1897329765625,17.03937298828125Q15.1499289765625,16.99957298828125,15.1142179765625,16.95605298828125Q15.0785069765625,16.91254298828125,15.0472339765625,16.86573298828125Q15.0159599765625,16.81893298828125,14.9894249765625,16.76929298828125Q14.9628889765625,16.71964298828125,14.9413473765625,16.667632988281248Q14.9198056765625,16.61563298828125,14.9034651765625,16.56176298828125Q14.8871246765625,16.50789298828125,14.8761428765625,16.45268298828125Q14.8651609765625,16.39747298828125,14.8596434765625,16.34145298828125Q14.8541259765625,16.28543298828125,14.8541259765625,16.22914298828125Q14.8541259765625,16.17285298828125,14.8596434765625,16.11683298828125Q14.8651609765625,16.06081498828125,14.8761428765625,16.00560498828125Q14.8871246765625,15.950395988281251,14.9034651765625,15.89652798828125Q14.9198056765625,15.84266098828125,14.9413473765625,15.79065498828125Q14.9628889765625,15.73864898828125,14.9894249765625,15.68900398828125Q15.0159599765625,15.63935998828125,15.0472339765625,15.59255498828125Q15.0785069765625,15.54575098828125,15.1142179765625,15.50223698828125Q15.1499289765625,15.45872398828125,15.1897329765625,15.41891998828125Q15.2295369765625,15.37911598828125,15.2730499765625,15.34340498828125Q15.3165639765625,15.30769398828125,15.3633679765625,15.27642098828125Q15.4101729765625,15.24514698828125,15.4598169765625,15.21861198828125Q15.5094619765625,15.19207598828125,15.5614679765625,15.17053438828125Q15.6134739765625,15.14899268828125,15.6673409765625,15.13265218828125Q15.721208976562501,15.11631168828125,15.7764179765625,15.10532988828125Q15.8316279765625,15.09434798828125,15.8876459765625,15.08883048828125Q15.9436659765625,15.08331298828125,15.9999559765625,15.08331298828125Q16.0562459765625,15.08331298828125,16.1122659765625,15.08883048828125Q16.1682859765625,15.09434798828125,16.2234959765625,15.10532988828125Q16.2787059765625,15.11631168828125,16.3325759765625,15.13265218828125Q16.3864459765625,15.14899268828125,16.438445976562498,15.17053438828125Q16.4904559765625,15.19207598828125,16.5401059765625,15.21861198828125Q16.5897459765625,15.24514698828125,16.6365459765625,15.27642098828125Q16.6833559765625,15.30769398828125,16.7268659765625,15.34340498828125Q16.7703859765625,15.37911598828125,16.8101859765625,15.41891998828125Q16.8499859765625,15.45872398828125,16.8856959765625,15.50223698828125Q16.9214159765625,15.54575098828125,16.9526859765625,15.59255498828125Q16.9839559765625,15.63935998828125,17.0104959765625,15.68900398828125Q17.0370259765625,15.73864898828125,17.058565976562498,15.79065498828125Q17.0801159765625,15.84266098828125,17.0964559765625,15.89652798828125Q17.1127959765625,15.950395988281251,17.1237759765625,16.00560498828125Q17.1347559765625,16.06081498828125,17.1402759765625,16.11683298828125Q17.1457959765625,16.17285298828125,17.1457959765625,16.22914298828125Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M21.2707959765625,12.56251701171875Q21.2707959765625,12.61880701171875,21.2652759765625,12.674827011718751Q21.2597559765625,12.73084701171875,21.2487759765625,12.78605701171875Q21.2377959765625,12.84126701171875,21.2214559765625,12.89513701171875Q21.2051159765625,12.94900701171875,21.183565976562498,13.00100701171875Q21.1620259765625,13.053017011718751,21.1354959765625,13.10266701171875Q21.1089559765625,13.15230701171875,21.0776859765625,13.19910701171875Q21.0464159765625,13.245917011718749,21.0106959765625,13.28942701171875Q20.9749859765625,13.33294701171875,20.9351859765625,13.37274701171875Q20.8953859765625,13.41254701171875,20.8518659765625,13.44825701171875Q20.8083559765625,13.48397701171875,20.7615459765625,13.515247011718749Q20.7147459765625,13.54651701171875,20.6651059765625,13.573057011718749Q20.6154559765625,13.59958701171875,20.563445976562498,13.62112701171875Q20.5114459765625,13.64267701171875,20.4575759765625,13.659017011718749Q20.4037059765625,13.67535701171875,20.3484959765625,13.68633701171875Q20.2932859765625,13.69731701171875,20.2372659765625,13.70283701171875Q20.1812459765625,13.70835701171875,20.1249559765625,13.70835701171875Q20.0686659765625,13.70835701171875,20.0126459765625,13.70283701171875Q19.9566279765625,13.69731701171875,19.9014179765625,13.68633701171875Q19.8462089765625,13.67535701171875,19.7923409765625,13.659017011718749Q19.7384739765625,13.64267701171875,19.6864679765625,13.62112701171875Q19.6344619765625,13.59958701171875,19.5848169765625,13.573057011718749Q19.5351729765625,13.54651701171875,19.4883679765625,13.515247011718749Q19.4415639765625,13.48397701171875,19.3980499765625,13.44825701171875Q19.3545369765625,13.41254701171875,19.3147329765625,13.37274701171875Q19.2749289765625,13.33294701171875,19.2392179765625,13.28942701171875Q19.2035069765625,13.245917011718749,19.1722339765625,13.19910701171875Q19.1409599765625,13.15230701171875,19.1144249765625,13.10266701171875Q19.0878889765625,13.053017011718751,19.0663473765625,13.00100701171875Q19.0448056765625,12.94900701171875,19.0284651765625,12.89513701171875Q19.0121246765625,12.84126701171875,19.0011428765625,12.78605701171875Q18.9901609765625,12.73084701171875,18.9846434765625,12.674827011718751Q18.9791259765625,12.61880701171875,18.9791259765625,12.56251701171875Q18.9791259765625,12.50622701171875,18.9846434765625,12.45020701171875Q18.9901609765625,12.39418901171875,19.0011428765625,12.33897901171875Q19.0121246765625,12.283770011718751,19.0284651765625,12.22990201171875Q19.0448056765625,12.17603501171875,19.0663473765625,12.12402901171875Q19.0878889765625,12.07202301171875,19.1144249765625,12.02237801171875Q19.1409599765625,11.97273401171875,19.1722339765625,11.92592901171875Q19.2035069765625,11.87912501171875,19.2392179765625,11.83561101171875Q19.2749289765625,11.79209801171875,19.3147329765625,11.75229401171875Q19.3545369765625,11.71249001171875,19.3980499765625,11.67677901171875Q19.4415639765625,11.64106801171875,19.4883679765625,11.60979501171875Q19.5351729765625,11.57852101171875,19.5848169765625,11.55198601171875Q19.6344619765625,11.52545001171875,19.6864679765625,11.50390841171875Q19.7384739765625,11.48236671171875,19.7923409765625,11.46602621171875Q19.8462089765625,11.44968571171875,19.9014179765625,11.43870391171875Q19.9566279765625,11.42772201171875,20.0126459765625,11.42220451171875Q20.0686659765625,11.41668701171875,20.1249559765625,11.41668701171875Q20.1812459765625,11.41668701171875,20.2372659765625,11.42220451171875Q20.2932859765625,11.42772201171875,20.3484959765625,11.43870391171875Q20.4037059765625,11.44968571171875,20.4575759765625,11.46602621171875Q20.5114459765625,11.48236671171875,20.563445976562498,11.50390841171875Q20.6154559765625,11.52545001171875,20.6651059765625,11.55198601171875Q20.7147459765625,11.57852101171875,20.7615459765625,11.60979501171875Q20.8083559765625,11.64106801171875,20.8518659765625,11.67677901171875Q20.8953859765625,11.71249001171875,20.9351859765625,11.75229401171875Q20.9749859765625,11.79209801171875,21.0106959765625,11.83561101171875Q21.0464159765625,11.87912501171875,21.0776859765625,11.92592901171875Q21.1089559765625,11.97273401171875,21.1354959765625,12.02237801171875Q21.1620259765625,12.07202301171875,21.183565976562498,12.12402901171875Q21.2051159765625,12.17603501171875,21.2214559765625,12.22990201171875Q21.2377959765625,12.283770011718751,21.2487759765625,12.33897901171875Q21.2597559765625,12.39418901171875,21.2652759765625,12.45020701171875Q21.2707959765625,12.50622701171875,21.2707959765625,12.56251701171875Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M21.2707959765625,16.22914298828125Q21.2707959765625,16.28543298828125,21.2652759765625,16.34145298828125Q21.2597559765625,16.39747298828125,21.2487759765625,16.45268298828125Q21.2377959765625,16.50789298828125,21.2214559765625,16.56176298828125Q21.2051159765625,16.61563298828125,21.183565976562498,16.667632988281248Q21.1620259765625,16.71964298828125,21.1354959765625,16.76929298828125Q21.1089559765625,16.81893298828125,21.0776859765625,16.86573298828125Q21.0464159765625,16.91254298828125,21.0106959765625,16.95605298828125Q20.9749859765625,16.99957298828125,20.9351859765625,17.03937298828125Q20.8953859765625,17.07917298828125,20.8518659765625,17.11488298828125Q20.8083559765625,17.15060298828125,20.7615459765625,17.18187298828125Q20.7147459765625,17.21314298828125,20.6651059765625,17.23968298828125Q20.6154559765625,17.26621298828125,20.563445976562498,17.287752988281248Q20.5114459765625,17.30930298828125,20.4575759765625,17.32564298828125Q20.4037059765625,17.34198298828125,20.3484959765625,17.35296298828125Q20.2932859765625,17.36394298828125,20.2372659765625,17.36946298828125Q20.1812459765625,17.37498298828125,20.1249559765625,17.37498298828125Q20.0686659765625,17.37498298828125,20.0126459765625,17.36946298828125Q19.9566279765625,17.36394298828125,19.9014179765625,17.35296298828125Q19.8462089765625,17.34198298828125,19.7923409765625,17.32564298828125Q19.7384739765625,17.30930298828125,19.6864679765625,17.287752988281248Q19.6344619765625,17.26621298828125,19.5848169765625,17.23968298828125Q19.5351729765625,17.21314298828125,19.4883679765625,17.18187298828125Q19.4415639765625,17.15060298828125,19.3980499765625,17.11488298828125Q19.3545369765625,17.07917298828125,19.3147329765625,17.03937298828125Q19.2749289765625,16.99957298828125,19.2392179765625,16.95605298828125Q19.2035069765625,16.91254298828125,19.1722339765625,16.86573298828125Q19.1409599765625,16.81893298828125,19.1144249765625,16.76929298828125Q19.0878889765625,16.71964298828125,19.0663473765625,16.667632988281248Q19.0448056765625,16.61563298828125,19.0284651765625,16.56176298828125Q19.0121246765625,16.50789298828125,19.0011428765625,16.45268298828125Q18.9901609765625,16.39747298828125,18.9846434765625,16.34145298828125Q18.9791259765625,16.28543298828125,18.9791259765625,16.22914298828125Q18.9791259765625,16.17285298828125,18.9846434765625,16.11683298828125Q18.9901609765625,16.06081498828125,19.0011428765625,16.00560498828125Q19.0121246765625,15.950395988281251,19.0284651765625,15.89652798828125Q19.0448056765625,15.84266098828125,19.0663473765625,15.79065498828125Q19.0878889765625,15.73864898828125,19.1144249765625,15.68900398828125Q19.1409599765625,15.63935998828125,19.1722339765625,15.59255498828125Q19.2035069765625,15.54575098828125,19.2392179765625,15.50223698828125Q19.2749289765625,15.45872398828125,19.3147329765625,15.41891998828125Q19.3545369765625,15.37911598828125,19.3980499765625,15.34340498828125Q19.4415639765625,15.30769398828125,19.4883679765625,15.27642098828125Q19.5351729765625,15.24514698828125,19.5848169765625,15.21861198828125Q19.6344619765625,15.19207598828125,19.6864679765625,15.17053438828125Q19.7384739765625,15.14899268828125,19.7923409765625,15.13265218828125Q19.8462089765625,15.11631168828125,19.9014179765625,15.10532988828125Q19.9566279765625,15.09434798828125,20.0126459765625,15.08883048828125Q20.0686659765625,15.08331298828125,20.1249559765625,15.08331298828125Q20.1812459765625,15.08331298828125,20.2372659765625,15.08883048828125Q20.2932859765625,15.09434798828125,20.3484959765625,15.10532988828125Q20.4037059765625,15.11631168828125,20.4575759765625,15.13265218828125Q20.5114459765625,15.14899268828125,20.563445976562498,15.17053438828125Q20.6154559765625,15.19207598828125,20.6651059765625,15.21861198828125Q20.7147459765625,15.24514698828125,20.7615459765625,15.27642098828125Q20.8083559765625,15.30769398828125,20.8518659765625,15.34340498828125Q20.8953859765625,15.37911598828125,20.9351859765625,15.41891998828125Q20.9749859765625,15.45872398828125,21.0106959765625,15.50223698828125Q21.0464159765625,15.54575098828125,21.0776859765625,15.59255498828125Q21.1089559765625,15.63935998828125,21.1354959765625,15.68900398828125Q21.1620259765625,15.73864898828125,21.183565976562498,15.79065498828125Q21.2051159765625,15.84266098828125,21.2214559765625,15.89652798828125Q21.2377959765625,15.950395988281251,21.2487759765625,16.00560498828125Q21.2597559765625,16.06081498828125,21.2652759765625,16.11683298828125Q21.2707959765625,16.17285298828125,21.2707959765625,16.22914298828125Z" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><path d="M12.7916259765625,19.125L19.2082959765625,19.125Q19.3067859765625,19.125,19.4033859765625,19.144215Q19.4999859765625,19.163429999999998,19.5909759765625,19.201121Q19.681965976562502,19.238812,19.7638659765625,19.29353Q19.8457559765625,19.348249,19.9153959765625,19.417893Q19.9850459765625,19.487537,20.0397659765625,19.56943Q20.0944759765625,19.651322,20.1321759765625,19.742317Q20.169865976562498,19.833311,20.1890759765625,19.92991Q20.2082959765625,20.0265086,20.2082959765625,20.125Q20.2082959765625,20.2234914,20.1890759765625,20.32009Q20.169865976562498,20.416689,20.1321759765625,20.507683Q20.0944759765625,20.598678,20.0397659765625,20.68057Q19.9850459765625,20.762463,19.9153959765625,20.832107Q19.8457559765625,20.901751,19.7638659765625,20.95647Q19.681965976562502,21.011188,19.5909759765625,21.048879Q19.4999859765625,21.086570000000002,19.4033859765625,21.105785Q19.3067859765625,21.125,19.2082959765625,21.125L12.7916259765625,21.125Q12.6931345765625,21.125,12.5965359765625,21.105785Q12.4999369765625,21.086570000000002,12.4089429765625,21.048879Q12.3179479765625,21.011188,12.2360559765625,20.95647Q12.1541629765625,20.901751,12.0845189765625,20.832107Q12.0148749765625,20.762463,11.9601559765625,20.68057Q11.9054379765625,20.598678,11.8677469765625,20.507683Q11.8300559765625,20.416689,11.810840976562499,20.32009Q11.7916259765625,20.2234914,11.7916259765625,20.125Q11.7916259765625,20.0265086,11.810840976562499,19.92991Q11.8300559765625,19.833311,11.8677469765625,19.742317Q11.9054379765625,19.651322,11.9601559765625,19.56943Q12.0148749765625,19.487537,12.0845189765625,19.417893Q12.1541629765625,19.348249,12.2360559765625,19.29353Q12.3179479765625,19.238812,12.4089429765625,19.201121Q12.4999369765625,19.163429999999998,12.5965359765625,19.144215Q12.6931345765625,19.125,12.7916259765625,19.125Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>
|