Commit 742b312d authored by wenmo's avatar wenmo

文档上传

parent 0b200f50
# Dlink # Dinky (原 Dlink)
## 简介 ## 简介
实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设
Dlink 是一个专业的 FlinkSQL Studio,可以在线开发、补全、校验 、执行、调试、预览 FlinkSQL,支持 Flink 官方所有语法及其增强语法,并且可以同时对多 Flink 集群实例进行提交、停止、SavePoint 等运维操作,如同您的 IntelliJ IDEA For Flink SQL Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限
需要注意的是:Dlink 更专注于 FlinkSQL 的应用,而不是 DataStream。在开发过程中您不会看到任何一句 java、scala 或者 python。所以,它的目标是基于 100% FlinkSQL 来实现批流一体的实时计算平台。 最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
值得惊喜的是:Dlink 的实现基于 Apache Flink 源码二次开发,支持其绝大多数特性与机制,而交互更加贴近 Flink 的功能与体验,并且紧随官方社区发展。即站在巨人肩膀上开发与创新,Dlink 在未来批流一体的发展趋势下潜力无限。
最后,Dlink 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
## 原理 ## 原理
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/040/Dlink_principle.png) ![](https://github.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/dinky_principle.png)
## 功能 ## 功能
...@@ -83,10 +79,6 @@ Dlink 是一个专业的 FlinkSQL Studio,可以在线开发、补全、校验 ...@@ -83,10 +79,6 @@ Dlink 是一个专业的 FlinkSQL Studio,可以在线开发、补全、校验
| | | 新增 savepoint 触发接口 | 0.5.0 | | | | 新增 savepoint 触发接口 | 0.5.0 |
| 关于 | 关于 Dlink | 版本更新记录 | 0.4.0 | | 关于 | 关于 Dlink | 版本更新记录 | 0.4.0 |
## 优势
## 部署 ## 部署
### 版本 ### 版本
...@@ -143,10 +135,10 @@ sh auto.sh stop ...@@ -143,10 +135,10 @@ sh auto.sh stop
sh auto.sh restart sh auto.sh restart
sh auto.sh status sh auto.sh status
``` ```
前端快捷访问(推荐) 前端快捷访问:
如果plugins下引入了flink-shaded-hadoop-3-uber 的jar,请手动删除内部的 javax.servlet 后既可以访问默认 8888 端口号(如127.0.0.1:8888),正常打开前端页面。 如果plugins下引入了flink-shaded-hadoop-3-uber 的jar,请手动删除内部的 javax.servlet 后既可以访问默认 8888 端口号(如127.0.0.1:8888),正常打开前端页面。
前后端分离部署—— Nginx 部署(可选): 前后端分离部署—— Nginx 部署(推荐):
Nginx 如何部署请见百度或谷歌。 Nginx 如何部署请见百度或谷歌。
将 html 文件夹上传至 nginx 的 html 文件夹下或者指定 nginx 配置文件的静态资源绝对路径,修改 nginx 配置文件并重启。 将 html 文件夹上传至 nginx 的 html 文件夹下或者指定 nginx 配置文件的静态资源绝对路径,修改 nginx 配置文件并重启。
...@@ -155,7 +147,6 @@ Nginx 如何部署请见百度或谷歌。 ...@@ -155,7 +147,6 @@ Nginx 如何部署请见百度或谷歌。
listen 9999; listen 9999;
server_name localhost; server_name localhost;
# gzip config
gzip on; gzip on;
gzip_min_length 1k; gzip_min_length 1k;
gzip_comp_level 9; gzip_comp_level 9;
...@@ -163,20 +154,12 @@ Nginx 如何部署请见百度或谷歌。 ...@@ -163,20 +154,12 @@ Nginx 如何部署请见百度或谷歌。
gzip_vary on; gzip_vary on;
gzip_disable "MSIE [1-6]\."; gzip_disable "MSIE [1-6]\.";
#charset koi8-r;
#access_log logs/host.access.log main;
location / { location / {
root html; root html;
index index.html index.htm; index index.html index.htm;
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { location = /50x.html {
root html; root html;
...@@ -258,72 +241,12 @@ mvn clean install -Dmaven.test.skip=true ...@@ -258,72 +241,12 @@ mvn clean install -Dmaven.test.skip=true
#### 扩展其他版本的Flink #### 扩展其他版本的Flink
Flink 的版本取决于 lib 下的 dlink-client-1.13.jar。当前版本默认为 Flink 1.13.3 API。向其他版本的集群提交任务可能存在问题,已实现 1.11、1.12、1.13, 1.14,切换版本时只需要将对应依赖在lib下进行替换,然后重启即可。 Flink 的版本取决于 lib 下的 dlink-client-1.13.jar。当前版本默认为 Flink 1.13.5 API。向其他版本的集群提交任务可能存在问题,已实现 1.11、1.12、1.13, 1.14,切换版本时只需要将对应依赖在lib下进行替换,然后重启即可。
切换版本时需要同时更新 plugins 下的 Flink 依赖。 切换版本时需要同时更新 plugins 下的 Flink 依赖。
## 使用手册 ## 使用手册
### 基础使用
#### 登录
超级管理员:admin/admin;
新增用户:默认密码 123456。
#### 集群中心
注册 Flink 集群地址时,格式为 host:port ,用英文逗号分隔。即添加 Flink 集群的 JobManager 的 RestApi 地址。当 HA 模式时,地址间用英文逗号分隔,例如:192.168.123.101:8081,192.168.123.102:8081,192.168.123.103:8081。新增和修改的等待时间较长,是因为需要检测最新的 JobManager 地址。心跳检测为手动触发,会更新集群状态与 JobManager 地址。
#### Studio
1. 在左侧目录区域创建文件夹或任务。
2. 在中间编辑区编写 FlinkSQL 。
3. 在右侧配置作业配置和执行参数。
4. Fragment 开启后,可以使用增强的 sql 片段语法:
```sql
sf:=select * from;tb:=student;
${sf} ${tb}
##效果等同于
select * from student
```
5. 内置 sql 增强语法-表值聚合:
```sql
CREATE AGGTABLE aggdemo AS
SELECT myField,value,rank
FROM MyTable
GROUP BY myField
AGG BY TOP2(value) as (value,rank);
```
6. MaxRowNum 为批流(Session模式下)执行Select时预览查询结果的最大集合长度,默认 100,最大 9999。
7. SavePoint策略支持最近一次、最早一次、指定一次三种策略。
8. Flink 共享会话共享 Catalog ,会话的使用需要在左侧会话选项卡手动创建并维护。
9. 连接器为 Catalog 里的表信息,清空按钮会销毁当前会话。
10. Local 模式主要用于语法校验、血缘分析、执行图预览等功能,当然也可执行任务,但目前版本建议请使用远程集群来执行任务。
11. 执行 SQL 时,如果您选中了部分 SQL,则会执行选中的内容,否则执行全部内容。
12. 小火箭的提交功能是异步提交当前任务已保存的 FlinkSQL 及配置到集群。由于适用于快速提交稳定的任务,所以无法提交草稿,且无法预览数据。
13. 执行信息或者历史中那个很长很长的就是集群上的 JobId 或者 APPID,任务历史可以查看执行过的任务的数据回放。
14. 草稿是无法被异步远程提交的,只能同步执行,且无法保存。
15. Studio 的布局可以随意拖动,但由于是实时计算,联动较多,请温柔些。
16. 同步执行时可以自由指定任务名,异步提交默认为作业名。
17. 支持 set 语法设置 Flink 的执行配置,其优先级大于右侧的配置。
18. 支持远程集群查看、SavePoint 及停止任务。
19. 支持自定义及上下文的 sql 函数或片段的自动补全,通过函数文档维护。
20. 支持 Flink 所有官方的连接器及插件的扩展,但需注意版本号适配。
21. 使用 IDEA 进行源码调试时,需要在 admin 及 core 下修改相应 pom 依赖的引入来完成功能的加载。
22. 支持基于 StreamGraph 的可执行 FlinkSql (Insert into)的血缘分析,无论你的 sql 有多复杂或者多 view。
23. Dlink 目前所有的提交方式。
24. Dlink 目前对于 Flink 多版本的支持只能一个 Dlink 实例支持一个 Flink 版本,未来将开源同时支持多版本的能力。
25. 使用 Yarn PerJob、Yarn Application 需要配置集群配置,且其自动注册的集群实例需要手动点击回收。
26. 其他内容后续更新。。。
#### 使用技巧
1.[Flink AggTable 在 Dlink 的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/FlinkAggTable%E5%9C%A8Dlink%E7%9A%84%E5%BA%94%E7%94%A8.md) 1.[Flink AggTable 在 Dlink 的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/FlinkAggTable%E5%9C%A8Dlink%E7%9A%84%E5%BA%94%E7%94%A8.md)
2.[Dlink 概念原理与源码扩展介绍](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.md) 2.[Dlink 概念原理与源码扩展介绍](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.md)
...@@ -338,11 +261,7 @@ AGG BY TOP2(value) as (value,rank); ...@@ -338,11 +261,7 @@ AGG BY TOP2(value) as (value,rank);
7.[Dlink On Yarn 三种 Flink 执行方式的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/DlinkOnYarn%E4%B8%89%E7%A7%8DFlink%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%E7%9A%84%E5%AE%9E%E8%B7%B5.md) 7.[Dlink On Yarn 三种 Flink 执行方式的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/DlinkOnYarn%E4%B8%89%E7%A7%8DFlink%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%E7%9A%84%E5%AE%9E%E8%B7%B5.md)
8.[Dlink 在 Flink-mysql-cdc 到 Doris 的实践](https://gitee.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink%E5%9C%A8Flink-mysql-cdc%E5%88%B0Doris%E7%9A%84%E5%AE%9E%E8%B7%B5.md) 8.[Dlink 在 Flink-mysql-cdc 到 Doris 的实践](https://github.com/DataLinkDC/dlink/blob/main/dlink-doc/doc/Dlink%E5%9C%A8Flink-mysql-cdc%E5%88%B0Doris%E7%9A%84%E5%AE%9E%E8%B7%B5.md)
#### 常见问题及解决
期待您提出问题。
## 技术栈 ## 技术栈
...@@ -364,38 +283,28 @@ AGG BY TOP2(value) as (value,rank); ...@@ -364,38 +283,28 @@ AGG BY TOP2(value) as (value,rank);
## 近期计划 ## 近期计划
1.支持同时托管多版本的Flink实例 1.任务生命周期管理
2.支持K8S多种运行模式 2.作业监控及运维
3.支持多种任务调度框架接口 3.流作业自动恢复
4.支持UDF动态加载 4.作业日志查看
5.完善Studio交互功能 5.钉钉报警和推送
## 交流与贡献 ## 交流与贡献
欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。 欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。
在此有意向参与代码及文档贡献或积极测试者可以私信我加入 Dlink Contributors 群聊进一步了解。
dlink将正式开始社区积极的发展阶段,社区的主旨是开放、交流、创新、共赢,dlink的核心理念是创新,即不受思想约束地勇于尝试。dlink本就是一个创新型的解决方案,而不是模仿已有产品的思路按部就班,一味模仿对于社区及所有人的发展意义并不大,积极创新才可能独树一帜,并为大家带来更大的利益。无论您是否已经建成了自己的FlinkSQL平台,相信它一定会在创新的方向上为您带来些许启发。
在此非常感谢大家的支持~ 在此非常感谢大家的支持~
QQ社区群:**543709668**,申请备注 “ Dlink ”,不写不批 QQ社区群:**543709668**,申请备注 “ Dinky ”,不写不批
微信社区群(推荐,大佬云集):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dlink ”,不写不批 微信社区群(推荐):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dinky + 企业名 + 职位”,不写不批
公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg) 公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg)
163 邮箱:aiwenmo@163.com
QQ 邮箱:809097465@qq.com
Request ID=04122021/8392566
## 运行截图 ## 运行截图
> 登录页 > 登录页
......
![logo](_media/dlink.svg) ![logo](_media/dinky.svg)
# Dlink <small>0.4</small> # Dinky <small>0.5</small>
> Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 > Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。
- 交互式 FlinkSQL Studio - FlinkSQL Studio & 实时计算平台
- 基于 Apache Flink 深度定制 - 架构于 Apache Flink
- 实时即未来 - 实时即未来
[GitHub](https://github.com/DataLinkDC/dlink) [GitHub](https://github.com/DataLinkDC/dlink)
......
<?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="1641731904214" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10378" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M440.32 552.96c-30.72 0-51.2-20.48-76.8-30.72-76.8-40.96-143.36-92.16-204.8-153.6-20.48-25.6-46.08-46.08-61.44-76.8 20.48-10.24 46.08-5.12 66.56-10.24 5.12 0 10.24 5.12 10.24 5.12 81.92 102.4 174.08 184.32 266.24 266.24z" fill="#1296db" opacity=".29" p-id="10379"></path><path d="M936.96 353.28h-30.72c-40.96 0-81.92-5.12-117.76-35.84-40.96-35.84-92.16-25.6-128 5.12-15.36 15.36-30.72 30.72-40.96 46.08-10.24 5.12-15.36-10.24-20.48-15.36-30.72-35.84-66.56-76.8-102.4-112.64-40.96-35.84-92.16-66.56-143.36-81.92-51.2-10.24-102.4-25.6-148.48-40.96-5.12 0-10.24-5.12-20.48 0l30.72 76.8c0 5.12 0 10.24 5.12 10.24 5.12 25.6 15.36 46.08 25.6 66.56 10.24 25.6 25.6 56.32 40.96 81.92 40.96 71.68 92.16 138.24 148.48 199.68l5.12 5.12c15.36 5.12 10.24 15.36 0 25.6-71.68 102.4-133.12 209.92-184.32 332.8-15.36 25.6-25.6 56.32-35.84 87.04 10.24-10.24 15.36-20.48 20.48-30.72 71.68-117.76 143.36-235.52 271.36-296.96 35.84-15.36 66.56-30.72 102.4-51.2 30.72-15.36 61.44-35.84 81.92-61.44 25.6-20.48 35.84-51.2 46.08-81.92 10.24-35.84 30.72-66.56 61.44-87.04 51.2-25.6 107.52-25.6 163.84-30.72 10.24 0 25.6 5.12 35.84-5.12-25.6-5.12-46.08-5.12-66.56-5.12z" fill="#1296db" p-id="10380"></path><path d="M322.56 399.36c-25.6-40.96-51.2-87.04-76.8-128-5.12-20.48-15.36-40.96-25.6-66.56 0 0-5.12-5.12-5.12-10.24-25.6 0-51.2-5.12-76.8-5.12-5.12 0-10.24-5.12-15.36 0-5.12 5.12 0 10.24 0 15.36 15.36 25.6 30.72 51.2 40.96 76.8l10.24 10.24c51.2 66.56 112.64 122.88 174.08 184.32 30.72 25.6 61.44 56.32 92.16 76.8-40.96-51.2-81.92-97.28-117.76-153.6z" fill="#1296db" opacity=".54" p-id="10381"></path></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 106.862 107.924" enable-background="new 0 0 106.862 107.924" xml:space="preserve">
<g transform="matrix(1.059 0 0 -1.059 53.4308 53.9618)">
<path fill="#9B46E0" d="M14.113-50.011c-1.353,0.017-2.703,0.021-4.055,0.021l-3.49-0.003c0,0-9.979,0.004-14.75,0.004
c-0.748,0-1.5-0.003-2.25-0.005s-1.5-0.005-2.252-0.005c-0.469,0-0.938,0.001-1.406,0.004c-2.838,0.017-5.551,0.358-8.062,1.016
c-10.003,2.617-17.576,8.551-22.513,17.634c-2.366,4.354-3.711,9.225-3.995,14.473c-0.126,2.334-0.007,4.726,0.355,7.108
c0.043,0.284,0.095,0.568,0.146,0.854l0.115,0.65l0.195-0.192c0.103-0.102,0.135-0.208,0.158-0.288
c0.098-0.317,0.188-0.639,0.28-0.958c0.19-0.665,0.388-1.353,0.62-2.013c1.701-4.852,4.284-9.397,7.896-13.902
c0.143-0.178,0.25-0.375,0.312-0.566c1.225-3.771,3.354-7.028,6.326-9.69c2.891-2.588,6.357-4.526,10.316-5.771
c-2.539,1.086-4.89,2.475-7.004,4.142c-3.447,2.719-5.933,6.046-7.383,9.89c-0.145,0.386-0.267,0.852-0.07,1.368
c0.064,0.176,0.11,0.358,0.158,0.541c0.031,0.126,0.062,0.252,0.102,0.377c0.781,2.553,1.967,4.555,3.625,6.117
c1.546,1.456,3.514,2.521,6.018,3.257c2.338,0.688,4.778,0.998,7.137,1.298l1.012,0.13c1.32,0.173,2.66,0.377,3.953,0.577
l0.779,0.12c0.29,0.044,0.578,0.107,0.877,0.172l0.727,0.152l-0.191-0.325c-0.015-0.028-0.027-0.051-0.048-0.075
c-1.226-1.372-2.253-2.897-3.056-4.538c-0.067-0.139-0.213-0.267-0.354-0.312c-0.174-0.057-0.347-0.113-0.52-0.171
c-0.551-0.185-1.119-0.371-1.697-0.486c-0.622-0.124-1.259-0.214-1.876-0.3c-0.494-0.07-0.987-0.139-1.479-0.229
c-1.652-0.294-2.932-0.825-3.898-1.636c0.212,0.051,0.431,0.083,0.646,0.114c0.299,0.043,0.607,0.089,0.889,0.186
c1.523,0.53,3.195,0.776,5.263,0.776l0.279-0.001c0.37-0.004,0.741-0.021,1.116-0.039l0.727-0.03l-0.055-0.179
c-1.482-4.845-1.44-9.599,0.119-14.157c-0.652,3.091-0.771,5.962-0.367,8.737c0.617,4.241,2.486,7.896,5.556,10.863
c2.069,2.001,4.667,3.681,7.938,5.133c2.841,1.263,5.801,2.021,8.588,2.691l0.527,0.129c1.988,0.478,4.045,0.972,6.036,1.557
c2.987,0.875,5.583,2.314,7.716,4.284c0.319,0.295,0.683,0.63,0.969,1c2.037,2.64,4.412,4.513,7.258,5.727
c0.082,0.035,0.175,0.122,0.234,0.221c0.932,1.52,2.049,2.639,3.416,3.424c0.305,0.175,0.608,0.263,0.903,0.263
c0.374,0,0.748-0.143,1.113-0.421c0.138-0.106,0.264-0.217,0.375-0.33c0.479-0.481,0.862-1.073,1.211-1.859
c0.043-0.094,0.082-0.124,0.187-0.137c0.348-0.046,0.705-0.093,1.061-0.163c5.815-1.153,9.862-5.625,10.565-11.675
c0.019-0.161,0.031-0.324,0.045-0.486c0.03-0.384,0.062-0.78,0.176-1.137c0.145-0.451,0.361-0.896,0.574-1.321
c0.092-0.189,0.188-0.382,0.275-0.575c0.075-0.166,0.154-0.33,0.232-0.494c0.185-0.389,0.373-0.786,0.531-1.193
c0.24-0.621,0.269-1.263,0.084-1.908c-0.08-0.278-0.248-0.319-0.342-0.319c-0.07,0-0.146,0.024-0.224,0.072
c-0.16,0.103-0.31,0.217-0.458,0.335c-0.07,0.058-0.143,0.111-0.215,0.165c-0.08,0.062-0.158,0.123-0.236,0.188
c-0.188,0.146-0.361,0.288-0.557,0.395c-0.07,0.039-0.144,0.061-0.215,0.061c-0.074,0-0.145-0.022-0.211-0.065l0.274-0.245
c0.489-0.434,0.978-0.869,1.457-1.31c0.101-0.092,0.168-0.262,0.159-0.4c-0.057-0.908-0.374-1.661-0.945-2.241
c-0.68-0.688-1.393-1.022-2.178-1.022c-0.168,0-0.34,0.016-0.514,0.047c-0.031-0.305-0.097-0.419-0.351-0.555
c-1.606-0.871-3.172-1.295-4.785-1.295l-0.252,0.002c-1.099,0-2.169-0.312-3.368-0.981c-0.414-0.229-0.779-0.386-1.119-0.476
c-1.031-0.274-2.072-0.377-3.014-0.421c0.404-0.056,0.826-0.083,1.279-0.083c0.289,0,0.587,0.012,0.908,0.033l0.185,0.019
c0.136,0.013,0.274,0.025,0.406,0.025c0.177,0,0.323-0.022,0.446-0.073c0.84-0.344,1.662-0.76,2.433-1.154
c0.151-0.078,0.26-0.11,0.36-0.11c0.057,0,0.11,0.011,0.168,0.032l0.225,0.084c0.421,0.159,0.855,0.323,1.271,0.507
c0.986,0.439,1.838,0.646,2.678,0.646c0.225,0,0.449-0.017,0.673-0.047c0.575-0.078,1.248-0.21,1.854-0.583
c0.299-0.184,0.697-0.491,0.734-1.064c0.002-0.01,0.021-0.044,0.068-0.088c0.074-0.067,0.15-0.131,0.228-0.195
s0.158-0.131,0.233-0.202c0.47-0.431,0.677-0.977,0.619-1.624c-0.019-0.181-0.059-0.605-0.422-0.605
c-0.109,0-0.238,0.04-0.418,0.131c-0.074,0.039-0.144,0.07-0.207,0.088c0.178-0.108,0.35-0.217,0.519-0.332
c0.401-0.273,0.597-0.691,0.578-1.242c-0.038-1.2-1.302-2.336-2.601-2.336c-0.154,0-0.307,0.019-0.451,0.049
c-0.383,0.085-0.859,0.245-1.146,0.743c-0.009,0.014-0.042,0.036-0.049,0.038l-0.221-0.01c-0.26-0.01-0.528-0.021-0.777-0.078
l-0.073-0.017c-0.423-0.098-0.858-0.195-1.305-0.195c-0.179,0-0.345,0.016-0.507,0.047c-0.199,0.037-0.396,0.086-0.598,0.136
l-0.146,0.035c-0.23-0.749-0.604-1.452-1.109-2.094c-1.131-1.439-2.639-2.452-4.607-3.097c-1.426-0.47-2.961-0.705-4.562-0.705
c-0.841,0-1.724,0.063-2.623,0.191c-3.546,0.507-6.021,2.435-7.358,5.729c-0.226,0.552-0.377,1.138-0.524,1.706
c-0.071,0.274-0.144,0.554-0.224,0.827c-0.42,1.429-0.949,2.689-1.619,3.859c-1.217,2.123-2.721,3.636-4.6,4.625
c-1.502,0.791-3.146,1.192-4.884,1.192c-0.728,0-1.489-0.069-2.264-0.208c-0.157-0.028-0.313-0.062-0.472-0.096
c0.547-0.025,1.066-0.055,1.592-0.106c2.431-0.246,4.645-0.993,6.58-2.219c2.633-1.671,4.248-3.747,4.937-6.345
c0.386-1.452,0.935-2.898,1.634-4.299c0.404-0.812,0.918-1.752,1.658-2.546c1.047-1.119,2.395-1.884,4.241-2.403
c0.505-0.143,1.007-0.298,1.506-0.458c0.276-0.089,0.468-0.28,0.587-0.588c0.289-0.75,0.361-1.514,0.213-2.269
c-0.217-1.109-0.744-2.136-1.613-3.139c-0.686-0.791-1.537-1.366-2.361-1.923c-0.414-0.277-0.803-0.572-1.157-0.875
c-0.303-0.26-0.46-0.6-0.442-0.958c0.025-0.59,0.069-0.612,0.18-0.612c0.092,0,0.236,0.035,0.471,0.111
c0.115,0.038,0.229,0.084,0.342,0.134l0.687,0.296c0.392,0.169,0.782,0.339,1.178,0.503c0.856,0.356,1.703,0.54,2.515,0.54
c0.435,0,0.868-0.052,1.291-0.153c1.521-0.364,2.519-1.267,2.967-2.686c0.119-0.384,0.103-0.712-0.055-0.979
c-0.104-0.177-0.343-0.325-0.541-0.331c-0.184,0-0.355,0.163-0.488,0.308c-0.073,0.081-0.092,0.187-0.105,0.279
c-0.006,0.03-0.011,0.062-0.018,0.09c-0.135,0.505-0.322,0.835-0.604,1.056c0.504-0.685,0.729-1.417,0.688-2.23
c-0.041-0.807-0.646-1.37-1.471-1.37c-0.033,0-0.066,0.002-0.103,0.004c-0.313,0.019-0.513,0.188-0.545,0.466
c-0.022,0.192-0.022,0.39-0.023,0.58c0,0.079,0,0.158-0.002,0.237c-0.002,0.104-0.001,0.205,0,0.309
c0,0.222,0.001,0.431-0.026,0.637c-0.062,0.444-0.326,0.744-0.785,0.891c-0.032,0.012-0.064,0.02-0.098,0.023
c0.139-0.079,0.258-0.188,0.344-0.346c0.17-0.315,0.314-0.602,0.394-0.911c0.204-0.821,0.003-1.461-0.581-1.853
c-0.303-0.201-0.691-0.276-1.033-0.324c-0.139-0.02-0.275-0.026-0.412-0.026c-0.511,0-1.011,0.12-1.492,0.234l-0.246,0.059
c-0.457,0.104-0.861,0.158-1.25,0.159c-0.332,0-0.678-0.064-1.012-0.126l-0.154-0.028c-2.533-0.456-4.811-0.677-6.959-0.677
L14.113-50.011z"/>
<path opacity="0.2" fill="#430A1D" enable-background="new " d="M34.73-20.451c0,0-3.734-4.456-10.078-1.903
c-5.81,2.341-3.691,8.784-3.691,8.784s1.029-3.996,4.036-5.51C29.35-21.273,34.73-20.451,34.73-20.451z"/>
<path opacity="0.2" fill="#430A1D" enable-background="new " d="M16.328-22.358c0.809-0.822,0.824-1.663,1.078-2.688
c0.479-1.928,1.068-3.602,2.296-5.188c1.181-1.524,2.594-2.602,4.419-3.303c1.581-0.606,3.613-0.427,3.311-2.781l-0.529-1.981
c-4.041,0-7.825,1.844-9.367,5.854c-1.352,3.518,0.24,7.769-3.857,13.717C14.006-19.131,15.909-21.93,16.328-22.358z"/>
<g opacity="0.2">
<path fill="#2B2B2B" d="M14.729-20.611c0.062-0.25,0.117-0.504,0.174-0.757C14.752-21.181,14.674-20.947,14.729-20.611z"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="76439.3359" y1="69.6688" x2="76467.8047" y2="-63.1771" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.6584" style="stop-color:#BF73F2"/>
<stop offset="0.6649" style="stop-color:#C370E6"/>
<stop offset="0.6852" style="stop-color:#AB46E0"/>
<stop offset="0.7081" style="stop-color:#A146E0"/>
<stop offset="0.7341" style="stop-color:#9F46E0"/>
<stop offset="0.7643" style="stop-color:#9946E0"/>
<stop offset="0.8017" style="stop-color:#9446E0"/>
<stop offset="0.8543" style="stop-color:#9146E0"/>
<stop offset="1" style="stop-color:#9B46E0"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M-32.348-35.983c-15.241,1.506-17.035,16.678-17.035,16.678s-0.828,7.032,1.104,13.93
c1.241-12.55,11.309-21.239,11.309-21.239S-34.758-33.764-32.348-35.983z"/>
<path opacity="0.2" fill="#9B46E0" enable-background="new " d="M-36.148-30.205c0,0-3.197-0.304-7.461,4.873
c4.111-7.461,9.44-7.613,9.44-7.613L-36.148-30.205z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="76423.2656" y1="71.444" x2="76453.5938" y2="-70.0647" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.6584" style="stop-color:#BF73F2"/>
<stop offset="0.6649" style="stop-color:#C370E6"/>
<stop offset="0.6852" style="stop-color:#AB46E0"/>
<stop offset="0.7081" style="stop-color:#A146E0"/>
<stop offset="0.7341" style="stop-color:#9F46E0"/>
<stop offset="0.7643" style="stop-color:#9946E0"/>
<stop offset="0.8017" style="stop-color:#9446E0"/>
<stop offset="0.8543" style="stop-color:#9146E0"/>
<stop offset="1" style="stop-color:#9B46E0"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M-27.911-38.916c-0.799,14.03,7.438,7.52,11.69,14.96c1.195,6.51,4.781,10.628,4.781,10.628
s-25.506,4.782-25.906-13.817c0.888-4.027,4.791-7.921,7.236-10.028c-0.479,1.078-6.568,17.833,13.711,16.467
c-7,0.596-17.105-6.716-12.289-17.67C-28.204-38.729-27.911-38.916-27.911-38.916z"/>
<path opacity="0.2" fill="#FFFFFF" enable-background="new " d="M-21.016-18.683c-5.272-1.982-14.226-1.973-11.678-15.426
c-0.408-0.306-2.445,2.854-1.937,2.547C-36.975-19.535-26.446-20.229-21.016-18.683z"/>
<path opacity="0.6" fill="#8B4FBA" enable-background="new " d="M-14.34-13.865c5.127,2.028,0.964-3.722,0.236-4.642
c-1.684-2.128-5.941-1.436-8.211-2.146c-1.305-0.408-6.535-1.175-8.269-6.128c-0.771-2.194-1.06-5.781,0.581-10.146
c-0.407-0.308-3.104,2.646-2.594,2.342C-36.924-15.253-16.51-22.193-14.34-13.865z"/>
<path fill="#F9E0E7" d="M36.632-5.971c0.14,0.384,0.378,0.875,0.679,1.165c0.07-0.033,0.146-0.037,0.203-0.073
c0.5,0.324,1.289,0.281,1.918,0.281c0.375,0,0.924,0.104,1.286-0.037c0.528-0.205,0.468-0.761,0.688-1.182
c0.414-0.786,1.691-0.796,1.695-1.907c0.004-0.523,0.135-1.232,0.002-1.744c-0.101-0.38-0.525-0.264-0.892-0.264
c-1.108,0-2.215-0.031-3.326-0.031l-1.536,1.145c-0.41-0.131-0.73,0.729-0.787,1.021C36.471-7.116,36.459-6.449,36.632-5.971z"/>
<path fill="#FFFFFF" d="M41.757-7.494c0.188,0.077,0.466,0.378,0.581,0.555c0.084,0.127,0.061,0.208,0.24,0.203
c0.469-0.013,0.473-0.646,0.449-0.973c-0.028-0.418-0.197-0.802-0.258-1.213c-0.152,0.038-0.236,0.229-0.408,0.277
c-0.135,0.04-0.33,0.021-0.473,0.015c-0.207-0.009-0.496-0.149-0.684-0.069L41.757-7.494z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="76418.2969" y1="62.4659" x2="76420.1016" y2="-21.4817" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_3_)" d="M-18.989,13.069c0.07,0.081,0.089,0.105,0.11,0.128c2.035,1.9,3.113,4.298,3.693,6.979
c0.381,1.755-0.104,3.303-0.895,4.816c-0.014,0.025-0.039,0.05-0.066,0.084c-0.158-0.494-0.302-0.979-0.47-1.456
c-0.413-1.176-0.913-2.314-1.707-3.288c-0.317-0.388-13.612-7.753-12.243-24.064c0.008-0.101,0.025-0.197,0.039-0.31
c0.246,0.229,0.461,0.466,0.709,0.661c0.885,0.692,1.906,1.133,2.973,1.431c1.951,0.544,3.914,1.044,5.881,1.525
c2.236,0.548,4.486,1.056,6.645,1.882c1.221,0.466,2.354,1.08,3.438,1.82c1.613,1.104,3.007,2.425,4.207,3.955
c0.699,0.891,1.025,1.571,1.34,2.618C-5.136,9.313-5.24,7.811-5.54,6.853C-5.852,5.864-6.378,5-7.064,4.207
C-6.9,4.259-6.72,4.286-6.573,4.37c1.902,1.084,3.587,2.419,4.831,4.249c0.834,1.226,1.342,2.568,1.413,4.062
c0.001,0.021,0.011,0.042,0.017,0.075c0.396-1.833,0.339-4.953-1.727-7.17c0.73,0.257,1.391,0.516,2.066,0.717
c0.559,0.166,0.928,0.493,1.236,0.984c1.356,2.146,2.48,4.396,3.088,6.877c0.471,1.916,0.588,3.84,0.061,5.765
c-0.598,2.176-1.912,3.851-3.7,5.182c-1.242,0.925-2.612,1.611-4.05,2.173c-0.087,0.034-0.174,0.065-0.26,0.103
c-0.014,0.005-0.021,0.021-0.075,0.081c0.498-0.137,0.944-0.253,1.386-0.384c2.061-0.612,4.034-1.41,5.782-2.688
c1.56-1.14,2.754-2.562,3.351-4.432c0.533-1.674,0.487-3.366,0.104-5.058c-0.56-2.468-1.71-4.665-3.109-6.746
C3.798,8.094,3.756,8.031,3.715,7.966C3.709,7.957,3.71,7.94,3.702,7.903C3.76,7.925,3.806,7.94,3.848,7.962
c2.932,1.499,5.537,3.416,7.613,5.992c2.016,2.5,3.482,5.284,4.18,8.438c0.877,3.98-0.084,7.514-2.662,10.631
c-1.629,1.973-3.644,3.465-5.873,4.681c-2.877,1.566-5.938,2.59-9.178,3.061c-1.842,0.269-3.686,0.32-5.527-0.034
c-1.012-0.192-1.668-0.458-2.789-1.106c0.142,0.121,0.277,0.249,0.426,0.358c1.007,0.765,2.168,1.16,3.387,1.407
c2.016,0.408,4.049,0.403,6.082,0.166c3.148-0.368,6.148-1.24,8.991-2.646c0.278-0.14,0.553-0.283,0.86-0.441
c0,0.258-0.016,0.483,0.004,0.706c0.025,0.344,0.199,0.541,0.47,0.573c0.258,0.032,0.409-0.065,0.46-0.319
c0.041-0.215,0.052-0.436,0.083-0.652c0.069-0.492,0.298-0.909,0.636-1.271c0.033-0.037,0.074-0.069,0.115-0.097
c0.02-0.015,0.046-0.014,0.118-0.028c0,0.177,0.001,0.34,0,0.502c-0.005,0.329-0.019,0.659-0.011,0.988
c0.002,0.081,0.06,0.211,0.115,0.227c0.077,0.021,0.217-0.018,0.266-0.079c0.129-0.17,0.268-0.354,0.326-0.556
c0.129-0.428,0.188-0.876,0.321-1.301c0.089-0.275,0.228-0.547,0.403-0.775c0.191-0.25,0.386-0.195,0.459,0.111
c0.068,0.286,0.093,0.583,0.136,0.875c0.015,0.101,0.019,0.205,0.05,0.299c0.024,0.081,0.084,0.148,0.127,0.223
c0.066-0.061,0.164-0.106,0.192-0.182c0.067-0.17,0.133-0.353,0.142-0.532c0.021-0.396-0.017-0.795,0.012-1.189
c0.016-0.21,0.086-0.434,0.188-0.616c0.114-0.203,0.298-0.179,0.36,0.048c0.091,0.324,0.136,0.659,0.201,0.99
c0.046,0.224,0.093,0.447,0.147,0.721c0.265-0.226,0.329-0.477,0.355-0.72c0.067-0.647,0.101-1.297,0.157-1.945
c0.045-0.486,0.211-0.913,0.498-1.328c0.521-0.755,0.982-1.554,1.449-2.346c0.239-0.406,0.461-0.443,0.686-0.025
c0.254,0.475,0.443,0.982,0.658,1.479c0.094,0.217,0.172,0.438,0.271,0.652c0.046,0.104,0.124,0.192,0.195,0.3
c0.255-0.185,0.316-0.427,0.267-0.667c-0.073-0.361-0.206-0.712-0.3-1.069c-0.102-0.39-0.209-0.779-0.27-1.177
c-0.023-0.16,0.049-0.352,0.121-0.507c0.104-0.225,0.268-0.252,0.443-0.076c0.18,0.178,0.318,0.395,0.492,0.576
c0.099,0.104,0.234,0.167,0.354,0.249c0.067-0.146,0.203-0.298,0.191-0.438c-0.025-0.297-0.096-0.6-0.205-0.878
c-0.223-0.565-0.521-1.103-0.712-1.676c-0.138-0.416-0.164-0.871-0.209-1.312c-0.013-0.108,0.078-0.299,0.163-0.33
c0.089-0.031,0.265,0.057,0.344,0.144c0.363,0.398,0.704,0.819,1.061,1.228c0.086,0.102,0.203,0.174,0.305,0.262
c0.035-0.018,0.068-0.032,0.104-0.051c-0.035-0.231-0.025-0.481-0.109-0.696c-0.144-0.357-0.32-0.708-0.524-1.033
c-0.323-0.517-0.692-1.002-1.022-1.512c-0.612-0.943-1.018-1.973-1.271-3.069c-0.184-0.788-0.443-1.559-0.671-2.334
c-0.026-0.096-0.062-0.189-0.065-0.296c0.199,0.317,0.394,0.641,0.6,0.957c0.431,0.664,0.928,1.274,1.596,1.714
c0.336,0.22,0.697,0.418,1.073,0.556c1.933,0.711,3.887,1.372,5.729,2.299c0.524,0.267,1.025,0.588,1.502,0.936
c0.604,0.438,0.826,1.049,0.646,1.789c-0.126,0.514-0.252,1.027-0.383,1.562c-0.312-0.498-0.588-0.978-0.902-1.428
s-0.704-0.832-1.283-1.089c0.053,0.099,0.067,0.142,0.094,0.177c0.812,1.119,1.279,2.391,1.642,3.708
c0.037,0.136-0.005,0.3-0.029,0.447c-0.166,0.96-0.086,1.922-0.043,2.885c0.011,0.191,0.011,0.39-0.017,0.58
c-0.012,0.088-0.083,0.198-0.158,0.231c-0.051,0.023-0.184-0.047-0.229-0.108c-0.187-0.262-0.395-0.519-0.52-0.808
c-0.503-1.169-0.984-2.348-1.465-3.524c-0.598-1.469-1.271-2.895-2.299-4.121c-0.465-0.555-0.993-1.038-1.643-1.375
c-0.123-0.063-0.256-0.114-0.395-0.158c1.005,1.039,1.23,2.354,1.275,3.699c0.06,1.722,0.025,3.448,0.043,5.172
c0.018,1.864,0.172,3.712,0.728,5.508c0.021,0.071-0.015,0.175-0.054,0.246c-0.156,0.306-0.355,0.592-0.485,0.908
c-0.272,0.663-0.501,1.343-0.769,2.01c-0.155,0.392-0.209,0.421-0.629,0.391c-0.451-0.032-0.722,0.227-0.961,0.548
c-0.184,0.243-0.259,0.237-0.385-0.048c-0.137-0.31-0.245-0.629-0.393-0.934c-0.051-0.104-0.182-0.172-0.275-0.256
c-0.072,0.106-0.191,0.21-0.204,0.323c-0.038,0.369-0.028,0.741-0.055,1.111c-0.013,0.184-0.037,0.37-0.099,0.542
c-0.03,0.081-0.154,0.169-0.244,0.176c-0.063,0.005-0.174-0.104-0.201-0.186c-0.092-0.263-0.145-0.537-0.229-0.802
c-0.066-0.213-0.162-0.236-0.289-0.062c-0.925,1.26-2.158,2.153-3.478,2.947c-0.39,0.234-0.772,0.479-1.159,0.715
c-0.027-0.009-0.054-0.019-0.079-0.026c0.05-0.429,0.101-0.857,0.149-1.285c-0.035-0.019-0.07-0.035-0.104-0.053
c-0.123,0.104-0.263,0.19-0.365,0.312c-0.256,0.303-0.488,0.625-0.748,0.927c-0.515,0.604-1.162,1.036-1.785,1.179
c0.197-0.675,0.385-1.314,0.57-1.955c-0.028-0.015-0.061-0.027-0.09-0.04c-0.064,0.08-0.14,0.154-0.193,0.241
c-0.15,0.245-0.299,0.489-0.438,0.741c-0.594,1.075-1.51,1.695-2.712,1.868c-0.817,0.118-1.646,0.196-2.469,0.252
c-0.604,0.042-1.185,0.131-1.738,0.396c-0.384,0.175-0.8,0.296-1.208,0.431c-0.068,0.024-0.159-0.005-0.238-0.01
c0.006-0.087-0.013-0.188,0.022-0.26c0.192-0.376,0.401-0.743,0.594-1.119c0.071-0.135,0.117-0.284,0.173-0.427
c-0.019-0.021-0.037-0.04-0.055-0.061c-0.123,0.041-0.251,0.069-0.366,0.125c-0.532,0.258-1.071,0.501-1.586,0.791
c-0.524,0.296-1.101,0.32-1.668,0.368c-1.774,0.149-3.528,0.03-5.243-0.489c-1.043-0.314-2.007-0.788-2.855-1.521
c0.107,0.011,0.218,0.011,0.322,0.03c1.035,0.213,2.071,0.413,3.137,0.378c0.726-0.023,1.433-0.139,2.07-0.507
c0.102-0.058,0.166-0.18,0.248-0.271c-0.143-0.05-0.293-0.146-0.43-0.128c-0.331,0.039-0.654,0.162-0.988,0.189
c-1.062,0.095-2.084-0.15-3.095-0.429c-2.448-0.672-4.665-1.815-6.724-3.286c-0.502-0.357-1.023-0.688-1.545-1.02
c-1.016-0.646-1.838-1.481-2.488-2.492c-0.076-0.12-0.146-0.249-0.195-0.382c-0.133-0.37-0.035-0.679,0.314-0.863
c0.25-0.132,0.527-0.226,0.804-0.293c3.659-0.892,6.384-3.908,6.806-7.639c0.159-1.399,0.354-2.802,0.284-4.221
c-0.161-3.257-1.327-6.095-3.502-8.519c-1.293-1.442-2.821-2.589-4.495-3.554C-18.855,13.134-18.891,13.12-18.989,13.069z"/>
<path opacity="0.2" fill="#8B4FBA" enable-background="new " d="M27.898,34.69c-1.555-12.138-6.941-9.391-10.465-16.167
c-0.193,0.256-0.638-1.816,0.25,2.031c0.889,3.851,3.437,2.112,5.848,6.516C26.584,32.637,25.975,33.135,27.898,34.69z"/>
<path opacity="0.3" fill="#FFFFFF" enable-background="new " d="M11.805,34.461c-0.578-3.474-5.49-3.317-9.693-1.843
c-4.567,1.602-14.057,2.116-14.82,0.205c-0.381-0.438-1.146,1.363-1.146,1.363s7.207,7.863,19.272-0.436
c-0.491,0.764,4.336,3,4.336,3S11.205,37.193,11.805,34.461z"/>
<path opacity="0.2" fill="#8B4FBA" enable-background="new " d="M-13.193,1.105c0.262-0.65,2.396-0.212,2.596,0.803
c-3.148,3.566,5.14,10.119-2.504,18.672C-8.1,7.384-18.749,6.847-13.193,1.105z"/>
<path opacity="0.6" fill="#8B4FBA" enable-background="new " d="M-13.193,1.105c0.262-0.65,0.215-0.464,0.414,0.551
c-3.148,3.567,5.237,8.768-0.322,18.924C-8.1,7.384-18.749,6.847-13.193,1.105z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="76440.6875" y1="53.8396" x2="76420.4219" y2="18.926" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#F6E8A0"/>
<stop offset="1" style="stop-color:#9B46E0"/>
</linearGradient>
<path fill="url(#SVGID_4_)" d="M-1.723,3.709c15.129,15.919-3.996,13.252-10.229,24.057c0.011,0.186,0.024,0.366,0.024,0.557
c0,1.502-0.364,2.916-0.998,4.17C-7.092,23.84,7.697,31.47,4.825,13.781C4.566,12.872,2.508,3.908-1.723,3.709z"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="76437.125" y1="32.8597" x2="76419.6484" y2="2.7516" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#F6E8A0"/>
<stop offset="1" style="stop-color:#9B46E0"/>
</linearGradient>
<path fill="url(#SVGID_5_)" d="M-1.723,3.709c-6.228-3.057-11.673-3.147-11.416-2.24c12.375,8.397,2.386,17.05,0.057,25.201
c0.159,0.658,1.154,0.903,1.154,1.65c0,0.08-0.01,0.156-0.012,0.235c0.18-0.809,0.606-1.09,1.015-1.5
C-5.173,21.253,13.111,19.314-1.723,3.709z"/>
<path fill="#9B46E0" d="M-3.673,3.946c9.579,14.308-8.304,17.026-8.175,21.562c-1.424-9.33,15.718-13.324-0.389-24.491
C-12.494,0.111-9.902,0.888-3.673,3.946z"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="76398.0703" y1="55.1082" x2="76400.0859" y2="19.937" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#F6E8A0"/>
<stop offset="1" style="stop-color:#9B46E0"/>
</linearGradient>
<path fill="url(#SVGID_6_)" d="M23.095,28.8c0.761-1.271-0.084-2.771-0.97-4.176c-0.818-1.298-2.793-0.873-4.133-4.002l0.115,2.438
c1.484,2.587-1.027,6.148-1.727,8.555c-1.189,4.1-2.484,7.883-0.906,12.043c0.106,0.279,0.197,0.585,0.305,0.872
c0.787-0.581,1.381-1.16,2.058-2.043c0.447-0.586,0.291,1.512,0.879,1.071c0.433-0.319-0.021-1.803,0.392-2.146
c0.461-0.39,0.74,1.868,1.074,1.368c0.781-1.174,1.229-0.429,1.562-0.781c0.301-0.319,1.005-2.778,1.289-3.111
c0.277-0.323,0.543-0.656,0.805-0.991c-0.158-1.79-0.506-3.802-1.082-5.417C22.213,30.955,22.188,30.319,23.095,28.8z"/>
<path fill="#9B46E0" d="M1.801,47.492c0.047-0.017,0.086-0.024,0.11-0.023c0.419,0.007-1.13,1.954-0.685,1.954
c0.752,0,1.812-0.776,2.547-0.833c1.553-0.119,3.162-0.084,4.537-0.713c1.317-0.604,1.903-2.479,2.198-2.558
c0.298-0.082-0.717,2.167-0.426,2.067c0.493-0.166,0.887-0.41,1.212-0.68c1.3-1.861,1.723-11.084-0.186-10.846
c-2.004,0.25,3.162-0.708,3.183-0.631c1.728,6.521-2.121,10.531-1.947,10.305c0.228-0.3,0.411-0.533,0.606-0.608
c0.41-0.158-0.256,1.572,0.119,1.343c1.193-0.729,2.039-1.243,2.734-1.761c0.021-0.03,0.027-0.102,0.061-0.088
c0.513,0.213,3.673,0.956,1.268-10.396c3.652,7.391,0.793,10.291,1.073,9.988c1.297-1.4,1.562-4.818,1.729-6.845
c0.157-1.901-1.039-6.235-2.588-7.668c-1.092-1.008-1.07,0.24-1.479,1.204c-0.673,1.583-1.907,2.859-3.027,4.163
c-0.834,0.97-1.846,1.679-2.763,2.547c-0.999,0.946-1.525,2.268-2.418,3.306c-0.799,0.928-1.78,1.667-2.539,2.635
c-0.852,1.084-1.421,2.324-2.361,3.322C2.461,46.995,2.127,47.236,1.801,47.492z"/>
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="76399.9609" y1="19.9796" x2="76411.5781" y2="71.4526" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#9B46E0"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
</linearGradient>
<path fill="url(#SVGID_7_)" d="M8.804,48.528c2.232,0.007,3.634-1.062,5.48-2.084c1.53-0.851,3.411-0.859,4.704-2.031
c1.718-1.559,2.461-3.104,2.783-5.386c0.369-2.598,0.414-5.91-0.078-8.499c-0.252-1.328-1.195-4.05-2.19-5.021l-1.194,0.76
c-2.354,6.081-9.453,8.576-12.139,14.552c-0.792,1.759-1.09,4.045-1.109,5.967C5.04,48.798,7.178,48.521,8.804,48.528z"/>
<path fill="#F6E8A0" d="M-13.405,33.332c-1.298,2.017-3.353,3.5-5.767,4.039c-0.614,0.137-1.715,0.519-0.625,1.83
c1.165,1.818,2.839,2.516,3.74,3.184c3.623,2.69,2.125,2.965,4.238,3.209c0.826,0.096,0.608,0.168,1.027,0
s-0.322,0.118-0.587,0.293c-2.358,1.561-2.188-1.553-1.175-0.88c3.019,2.334,9.971,3.972,11.92,3.638
c0.283-0.048,2.242-1.18,2.543-1.175c0.419,0.007-1.129,1.954-0.684,1.954c0.75,0,1.812-0.776,2.547-0.833
c1.521-0.117,6.146-2.238,6.112-7.822c-0.01-1.706,0.095-2.902-0.135-4.015C8.064,28.585-9.008,40.048-13.405,33.332z"/>
<path fill="#FFFFFF" d="M7.031,38.367c-0.791,0.988-5.934,2.769-5.934,2.769s-8.539,2.943-16.414-5.438
c4.024,3.195,11.098,1.855,16.213,1.265c0.676-0.079-1.461,0.603-0.901,0.81c1.899,0.703,3.659-1.267,5.553-0.887
C6.432,37.062,6.962,37.542,7.031,38.367z"/>
<path fill="#F6E8A0" d="M0.48,39.75c-3.136,0.826-6.271-0.383-6.875-0.42c0.285,0.427,0.748,1.412,3.07,1.752
c0.534,0.079,1.604-0.007,2.165-0.006c1.004,0.002,1.627-0.24,2.513-0.667c0.565-0.272,1.932-0.562,2.365-0.494
c0,0,4.807-0.362,3.215-1.992c-1.591-1.629-3.912,2.101-9.007,0.908C-2.072,38.996-0.908,39.827,0.48,39.75z"/>
<g>
<path fill="#F8D285" d="M-4.273,46.507c-1.981,1.312-5.447,0.187-5.896,0.193c-0.01,0.046,0.018,0.097,0.098,0.148
c3.02,2.334,7.492,2.126,9.441,1.792c0.015-0.002,0.035-0.009,0.058-0.017c0.009-0.003,0.023-0.008,0.035-0.013
c0.422-0.162,1.802-0.939,2.304-1.11c2.938-1.665,7.579-5.181,7.988-10.751c-1.669,0.742-2.869,1.465-3.791,2.169
c-0.311,0.237-7.332,7.576-25.917-1.242c0,0-0.517,0.284-0.222,0.948c4.197,6.744,11.859,8.681,24.062,2.294
C2.156,42.981,1.318,44.849-4.273,46.507z"/>
</g>
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="76440.2812" y1="45.7406" x2="76397.2734" y2="9.1096" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#F6E8A0"/>
<stop offset="1" style="stop-color:#9B46E0"/>
</linearGradient>
<path fill="url(#SVGID_8_)" d="M7.607,8.604c6.883,7.039,9.688,12.298,6.356,17.961c-5.396,9.179-22.014-0.395-29.241,8.865
c0.766-0.875,2.395-2.608,3.969-3.46c5.357-3.5,15.44-2.374,18.653-5.08C11.479,23.411,12.534,16.393,7.607,8.604z"/>
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="76401.4766" y1="20.1342" x2="76443.2734" y2="8.7674" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_9_)" d="M-14.818,23.317c-0.008-0.472,1.072-3.195,0.903-3.822c-1.45-5.353-7.733-7.979-7.733-7.979
s-7.037-2.832-8.156-15.776c-1.283-0.923-1.105,1.043-1.065,1.917C-30.071,14.632-15.948,12.735-14.818,23.317z"/>
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="76290.2109" y1="68.9942" x2="76486.5391" y2="-36.2722" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_10_)" d="M9.124-4.735C9.008-4.681,8.897-4.612,8.775-4.577C8.159-4.405,7.538-4.247,6.92-4.071
C6.725-4.015,6.539-3.926,6.348-3.853C6.35-3.811,6.352-3.77,6.352-3.73c0.223,0.04,0.441,0.11,0.664,0.113
c0.887,0.01,1.774-0.002,2.662-0.004c1.254-0.003,2.512,0.003,3.721,0.369c0.59,0.18,1.166,0.45,1.707,0.751
c5.713,3.18,9.75,7.834,12.179,13.895c0.497,1.239,0.878,2.52,1.172,3.82c0.019,0.072,0.026,0.147,0.048,0.272
c-0.095-0.058-0.156-0.086-0.213-0.123c-3.496-2.395-7.314-4.019-11.48-4.808c-1.49-0.281-2.994-0.422-4.51-0.466
c-0.113-0.003-0.258-0.046-0.333-0.124C9.703,7.655,7.027,5.947,4.14,4.526C1.835,3.393-0.598,2.708-3.1,2.221
c-3.207-0.623-6.422-1.215-9.629-1.832c-3.939-0.757-7.858-1.598-11.666-2.886c-2.416-0.816-4.756-1.797-6.896-3.202
c-1.611-1.06-3.045-2.312-4.059-3.979c-0.356-0.588-0.609-1.239-0.916-1.858c-0.056-0.111-0.115-0.227-0.201-0.312
c-2.124-2.077-2.961-4.604-2.635-7.536c0.242-2.169,1.019-4.153,2.127-6.02c0.131-0.219,0.242-0.447,0.345-0.64
c0.053,0.473,0.095,1.003,0.169,1.528c0.469,3.341,2.189,5.829,5.117,7.491c1.703,0.97,3.537,1.611,5.438,2.031
c2.084,0.46,4.186,0.847,6.287,1.228c2.551,0.461,5.116,0.846,7.596,1.628c0.482,0.151,0.959,0.326,1.433,0.506
c0.61,0.229,1.18,0.524,1.711,0.918c1.758,1.295,3.685,2.287,5.715,3.081c0.056,0.021,0.108,0.045,0.163,0.066
c0.002,0.008,0.003,0.019,0.011,0.04C-3.023-7.524-3.052-7.52-3.082-7.52C-5.353-7.519-7.629-7.532-9.9-7.519
c-2.033,0.013-4.059-0.05-6.074-0.315c-2.791-0.37-5.492-1.093-8.123-2.094c-3.103-1.184-6.039-2.699-8.887-4.399
c-0.076-0.046-0.154-0.09-0.257-0.108c0.054,0.043,0.103,0.091,0.155,0.131c3.117,2.363,6.436,4.381,10.097,5.796
c2.55,0.983,5.181,1.629,7.901,1.917c2.396,0.253,4.793,0.229,7.191,0.055c2.073-0.151,4.146-0.302,6.222-0.444
c0.18-0.015,0.372,0.012,0.547,0.063c2.051,0.624,4.15,0.991,6.269,1.292c1.252,0.177,2.486,0.477,3.727,0.724
c0.084,0.018,0.163,0.062,0.243,0.095C9.115-4.784,9.12-4.759,9.124-4.735z"/>
<path opacity="0.2" fill="#FFFFFF" enable-background="new " d="M-29.061-11.727c8.125,9.705,29.203,4.618,38.185,6.992
C3.438-8.002-1.189-7.438-1.189-7.438S-20.598-5.294-29.061-11.727z"/>
<path fill="#9B46E0" d="M33.057,25.101c-0.275-0.047-0.478-0.06-0.664-0.12c-0.731-0.229-1.494-0.399-2.181-0.729
c-0.653-0.315-1.258-0.762-1.823-1.222c-1.098-0.892-2.145-1.841-3.227-2.744c-0.887-0.739-1.827-1.4-2.947-1.743
c-0.361-0.11-0.736-0.173-1.113-0.235c1.459,0.735,2.276,2.045,3.123,3.389c-0.072-0.013-0.098-0.01-0.117-0.019
c-2.226-1.089-4.406-2.252-6.388-3.759c-0.528-0.403-0.946-0.861-1.243-1.486c-0.477-0.994-1.08-1.929-1.627-2.887
c-0.024-0.043-0.051-0.085-0.117-0.2c0.479,0.101,0.899,0.168,1.312,0.273c1.744,0.446,3.366,1.201,4.958,2.021
c2.486,1.287,4.854,2.775,7.15,4.372c0.07,0.048,0.141,0.094,0.232,0.122c-0.021-0.029-0.037-0.061-0.062-0.085
c-2.725-2.717-5.781-4.955-9.354-6.438c-1.545-0.644-3.146-1.073-4.812-1.246c-0.062-0.009-0.143-0.028-0.178-0.071
c-0.371-0.449-0.733-0.903-1.144-1.41c1.017,0.218,1.974,0.409,2.924,0.63c2.66,0.618,5.269,1.403,7.759,2.535
c1.84,0.836,3.594,1.819,5.07,3.217c1.948,1.846,3.382,4.03,4.219,6.588C32.929,24.23,32.967,24.637,33.057,25.101z"/>
<path opacity="0.6" fill="#8B4FBA" enable-background="new " d="M-12.962,0.4c0.789,0.265,1.688,0.593,2.647,0.961
C0.99,4.886,4.727,7.826,4.727,7.826l11.357,8.408c0,0,1.855-1.421,4.258,0.437c-1.637-1.965-6.66-3.494-6.66-3.494
s-0.231-1.546-1.869-2.747c4.468,1.519,11.978,1.083,17.188,5.775c-3.94-11.144-13.726-2.649-23.183-9.58
C4.727,5.969-9.697,2.283-2.529,2.536C4.639,2.788,9.361-2.104,15.348-0.5C9.729-2.539,4.762,0.727-3.066,1.277
c1.218-0.244,2.886-0.915,3.597-1.832C-2.307,1.471-7.86,1.564-9.18,1.101C-10.378,0.949-11.637,0.72-12.962,0.4z"/>
<path opacity="0.2" fill="#2B2B2B" enable-background="new " d="M14.156-3.038c-8.237-3.272-37.35,6.206-50.422-8.498
c0,0-0.979,0.438,4.227,6.273C-11.571,4.522,3.662-4.731,14.156-3.038z"/>
<radialGradient id="SVGID_11_" cx="146193.1719" cy="7096.4829" r="14.8738" gradientTransform="matrix(-0.4579 0.1387 0.2675 0.883 65062.6055 -26538.543)" gradientUnits="userSpaceOnUse">
<stop offset="0.0091" style="stop-color:#FFFFFF"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</radialGradient>
<path opacity="0.7" fill="url(#SVGID_11_)" enable-background="new " d="M26.893,9.997c2.437,1.371,0.457-1.98-1.979-3.959
c-9.595-6.7-13.933,0.924-23.448-2.745C16.023,11.318,17.45,1.317,26.893,9.997z"/>
<path opacity="0.2" fill="#8B4FBA" enable-background="new " d="M26.147,8.094c2.438,1.371,1.203-0.078-1.233-2.058
c-9.595-6.7-13.933,0.924-23.448-2.745C10.832,8.503,16.706-0.584,26.147,8.094z"/>
<g>
<radialGradient id="SVGID_12_" cx="128278.3125" cy="52712.6445" r="23.2511" gradientTransform="matrix(-0.4785 0 0 0.4785 61362.4453 -25210.0801)" gradientUnits="userSpaceOnUse">
<stop offset="0.0091" style="stop-color:#FFFFFF"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</radialGradient>
<path opacity="0.7" fill="url(#SVGID_12_)" enable-background="new " d="M-21.219,11.688
C-25.657,7.625-22.178-1.27-22.178-1.27l-3.158-0.677C-25.336-1.947-28.523,6.653-21.219,11.688z"/>
<radialGradient id="SVGID_13_" cx="128278.3203" cy="52712.6484" r="23.252" gradientTransform="matrix(-0.4785 0 0 0.4785 61362.4453 -25210.0801)" gradientUnits="userSpaceOnUse">
<stop offset="0.0091" style="stop-color:#FFFFFF"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</radialGradient>
<path opacity="0.7" fill="url(#SVGID_13_)" enable-background="new " d="M-13.559,18.503
c3.345-5.953-5.526-14.142-0.763-17.041c-0.075-0.391-2.724-1.719-2.6-1.335c-5.879,9.021,3.817,11.172,2.544,16.812
c-6.798-9.275-6.871-11.111-3.568-16.983c-0.04-0.032-0.403-0.506-0.765-0.236C-23.876,3.591-25.33,7.943-13.559,18.503z"/>
</g>
<path opacity="0.2" fill="#8B4FBA" enable-background="new " d="M-2.628,6.404c0.212-2.788,2.159,1.741,2.454,4.867
C0.08,22.969-11.781,20.14-12.323,29.604C-13.477,18.837-0.643,19.074-2.628,6.404z"/>
<path opacity="0.3" fill="#FFFFFF" enable-background="new " d="M8.872,11.044c0.21-2.788,5.808,4.388,6.104,7.513
c-1.879,20.071-22.537,7.864-27.938,15.26C-8.5,25.715,20.375,36.986,8.872,11.044z"/>
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="76370.9219" y1="-21.6857" x2="76381.9375" y2="-46.5111" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0.0041" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
</linearGradient>
<path fill="url(#SVGID_14_)" d="M46.67-28.038c-0.303-0.266-0.552-0.508-0.826-0.718c-0.22-0.167-0.461-0.315-0.709-0.438
c-0.604-0.292-1.212-0.33-1.822-0.006c-0.951,0.504-1.972,0.542-3.013,0.428c-0.303-0.032-0.501-0.176-0.64-0.459
c-1.043-2.146-2.781-3.524-4.958-4.396c-0.249-0.1-0.366-0.216-0.41-0.487c-0.11-0.683-0.157-1.355,0.005-2.036
c0.264-1.089,0.941-1.87,1.854-2.471c0.955-0.63,2.021-1.001,3.121-1.277c1.323-0.327,2.662-0.548,4.029-0.544
c0.695,0.001,1.383,0.082,2.051,0.284c1.492,0.451,2.414,1.448,2.752,2.955c0.219,0.979,0.426,1.968,0.526,2.963
c0.229,2.281-0.382,4.328-1.89,6.084C46.714-28.122,46.695-28.08,46.67-28.038z"/>
<g>
<path opacity="0.3" fill="#F6E8A0" enable-background="new " d="M42.355-28.205c0.113-0.685,1.399-0.871,1.996-0.851
c1.051,0.035,1.731,0.648,2.414,1.444c0.11,0.13,0.196,0.258,0.271,0.389c1.189-0.949,1.855-2.234,1.672-3.545
c-0.324-2.31-3.169-3.817-6.352-3.37c-2.201,0.31-3.988,1.475-4.772,2.928c0.582,0.744,0.81,1.689,1.577,2.333
C39.909-28.253,41.385-28.163,42.355-28.205z"/>
</g>
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="76444.2578" y1="49.9852" x2="76453.2812" y2="-18.6161" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_15_)" d="M-35.044-6.486c0.688-0.34,1.169-0.414,1.596-0.26c-0.491,2.5-0.748,5.021-0.661,7.558
c0.098,2.808,0.584,5.542,1.816,8.102c0.156,0.325,0.337,0.64,0.549,0.94c-0.013-0.05-0.021-0.101-0.04-0.147
c-0.663-1.665-0.969-3.403-1.069-5.187c-0.158-2.78,0.17-5.516,0.771-8.225c0.015-0.066,0.034-0.13,0.062-0.226
c0.393,0.264,0.775,0.516,1.148,0.781c0.045,0.033,0.046,0.154,0.036,0.231c-0.19,1.645-0.177,3.289,0,4.934
c0.254,2.35,0.834,4.615,1.661,6.821c1.152,3.08,2.714,5.94,4.621,8.613c0.045,0.062,0.09,0.124,0.132,0.187
c0.009,0.014,0.008,0.031,0.021,0.082c-0.277-0.098-0.537-0.187-0.798-0.281c-1.756-0.636-3.476-1.354-5.132-2.222
c-0.259-0.134-0.509-0.303-0.729-0.496c-2.33-2.064-3.705-4.674-4.326-7.701c-0.092-0.45-0.158-0.908-0.283-1.36
c0.027,0.502,0.041,1.006,0.085,1.508c0.208,2.389,0.655,4.734,1.46,6.997c0.205,0.575,0.062,1.094-0.025,1.634
c-0.027,0.168-0.146,0.322-0.224,0.483c-0.129-0.125-0.288-0.23-0.381-0.378c-0.662-1.053-1.089-2.209-1.438-3.395
c-0.535-1.814-0.854-3.68-1.117-5.554c-0.244-1.75-0.399-3.51-0.392-5.279c0.009-1.789,0.146-3.562,0.741-5.27
c0.283-0.812,0.664-1.573,1.213-2.238c0.195-0.238,0.438-0.441,0.656-0.661C-35.075-6.491-35.061-6.489-35.044-6.486z"/>
<path opacity="0.2" fill="#2B2B2B" enable-background="new " d="M-26.934,17.656c0,0-4.446-0.625-6.321-3.683
c-1.876-3.056-2.415-8.312-2.415-8.312s-0.96-7.839,2.222-12.404C-35.464,9.997-26.934,17.656-26.934,17.656z"/>
<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="76451.7891" y1="50.9792" x2="76460.8125" y2="-17.6265" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_16_)" d="M-35.044-6.486c-0.017-0.003-0.031-0.005-0.047-0.007c-0.917,0.358-1.634,0.975-2.22,1.75
c-0.853,1.13-1.301,2.437-1.578,3.804c-0.41,2.038-0.445,4.099-0.271,6.159c0.101,1.177,0.272,2.35,0.415,3.521
c0.005,0.042,0.006,0.083,0.01,0.168c-0.072-0.062-0.123-0.097-0.164-0.14c-3.4-3.525-5.957-7.586-7.631-12.191
c-0.044-0.12-0.029-0.282,0.008-0.408c1-3.194,2.445-6.183,4.217-9.013c0.748-1.194,1.572-2.34,2.363-3.507
c0.062-0.092,0.135-0.175,0.248-0.323c0.028,0.587,0.342,1.062,0.1,1.637c-0.309,0.733-0.508,1.504-0.467,2.316
c0.017,0.3,0.088,0.58,0.297,0.858c0.207-0.588,0.367-1.167,0.828-1.61c0.135,0.241,0.162,0.451,0.076,0.709
c-0.32,0.958-0.543,1.937-0.482,2.956c0.019,0.312,0.09,0.619,0.175,0.933c0.278-0.765,0.739-1.391,1.272-1.992
c0.031,0.046,0.06,0.076,0.076,0.112c0.711,1.47,1.622,2.805,2.707,4.023C-35.062-6.672-35.064-6.568-35.044-6.486z"/>
<path opacity="0.2" fill="#2B2B2B" enable-background="new " d="M-38.484-10.406c0,0-5,9.785-2.66,18.188
c0.291,0.23-0.469-0.363-1.373-1.404c-0.139-0.158-1.815-11.254,1.588-16.146c-4.574,5.426-2.408,15.121-2.602,14.838
c-0.408-0.604-0.775-1.271-1.018-1.968c-2.34-10.956,5.744-17.55,5.744-17.55L-38.484-10.406z"/>
<path fill="#9B46E0" d="M38.031-45.633c-0.206-0.314-0.445-0.63-0.635-0.978c-0.176-0.316-0.211-0.676-0.095-1.032
c0.144-0.44,0.438-0.609,0.896-0.545c0.367,0.056,0.734,0.112,1.104,0.124c0.393,0.013,0.42-0.04,0.465-0.421
c0.01-0.101,0.023-0.205,0.061-0.297c0.148-0.377,0.367-0.702,0.805-0.76c0.426-0.056,0.725,0.182,0.954,0.509
c0.685,0.97,0.117,2.281-1.073,2.439c-0.369,0.049-0.754-0.011-1.132-0.021c-0.073-0.003-0.146-0.016-0.218-0.022
c-0.018,0.021-0.036,0.045-0.055,0.066c0.102,0.119,0.181,0.277,0.309,0.352c0.271,0.153,0.562,0.216,0.896,0.178
c2.037-0.233,3.979,0.008,5.707,1.229c0.959,0.679,1.668,1.57,2.209,2.604c0.004,0.007,0.01,0.014,0.014,0.021
c0.068,0.188,0.207,0.417,0.021,0.56c-0.107,0.084-0.354,0.047-0.517-0.006c-0.761-0.25-1.5-0.567-2.271-0.777
c-1.125-0.308-2.291-0.318-3.449-0.255c-1.565,0.084-3.104,0.333-4.582,0.888c-1.656,0.622-3.151,1.5-4.448,2.709
c-0.149,0.14-0.3,0.277-0.468,0.39c-0.282,0.188-0.476,0.095-0.486-0.247c-0.008-0.242,0.016-0.491,0.07-0.729
c0.555-2.417,2.021-4.117,4.188-5.24C36.869-45.193,37.479-45.402,38.031-45.633z"/>
<linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="76465.0469" y1="21.7225" x2="76460.9922" y2="-26.0158" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_17_)" d="M-48.023-0.646c-0.088-8.721,2.717-16.289,8.558-22.715c-0.082,0.592-0.191,1.184-0.241,1.775
c-0.083,1.009-0.137,2.021-0.186,3.035c-0.01,0.206-0.062,0.369-0.178,0.534c-2.187,3.155-4.193,6.419-5.793,9.918
c-0.812,1.775-1.506,3.598-1.878,5.522C-47.861-1.955-47.928-1.324-48.023-0.646z"/>
<linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="76392.8516" y1="61.919" x2="76394.6562" y2="-22.0303" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#FAA7B5"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
<stop offset="0.7317" style="stop-color:#BF73F2"/>
</linearGradient>
<path fill="url(#SVGID_18_)" d="M23.299,28.032c1.046,1.809,2.125,3.55,2.508,5.601c0.064,0.343,0.045,0.708,0.023,1.062
c-0.114,1.978,0.091,3.909,0.732,5.793c0.057,0.167,0.125,0.343,0.121,0.513c-0.002,0.141-0.076,0.304-0.17,0.415
c-0.119,0.141-0.283,0.091-0.437,0.003c-0.493-0.279-0.851-0.689-1.138-1.166c-0.584-0.959-0.896-2.02-1.112-3.106
c-0.595-2.975-0.685-5.983-0.568-9.007C23.26,28.125,23.27,28.111,23.299,28.032z"/>
<path opacity="0.4" fill="#8B4FBA" enable-background="new " d="M23.915,39.556c0.19,0.404,0.972,1.288,1.286,1.543l0.707,0.451
c-0.711-1.812-0.965-3.656-0.965-5.586c0-1.626,0.5-3.136,0.58-4.754c0.063-1.333-0.518-2.003-1.209-3.088
c-0.312-0.488-0.738-1.545-1.416-1.549c-0.314,0.771-0.264,1.737-0.271,2.562c-0.009,0.987-0.167,1.95-0.128,2.947
C22.572,33.964,23.589,38.862,23.915,39.556z"/>
<path fill="#9B46E0" d="M48.257-38.389c-0.03-0.024-0.04-0.028-0.043-0.034c-0.769-1.581-2.136-2.271-3.788-2.41
c-2.729-0.232-5.347,0.279-7.831,1.421c-1.047,0.482-1.942,1.182-2.446,2.258c-0.219,0.465-0.324,0.983-0.487,1.494
c-0.542,0.003-1.187-0.533-1.229-1.111c-0.015-0.188,0.064-0.398,0.149-0.574c0.343-0.709,0.894-1.246,1.495-1.732
c1.545-1.247,3.314-2.034,5.232-2.498c2.519-0.61,5.037-0.628,7.529,0.127c0.59,0.179,1.148,0.479,1.697,0.771
c0.424,0.227,0.64,0.615,0.576,1.12C49.044-39.013,48.762-38.623,48.257-38.389z"/>
<path opacity="0.4" fill="#2B2B2B" enable-background="new " d="M48.257-38.389c-0.03-0.024-0.04-0.028-0.043-0.034
c-0.769-1.581-2.136-2.271-3.788-2.41c-2.729-0.232-5.347,0.279-7.831,1.421c-1.047,0.482-1.942,1.182-2.446,2.258
c-0.219,0.465-0.324,0.983-0.487,1.494c-0.542,0.003-1.187-0.533-1.229-1.111c-0.015-0.188,0.064-0.398,0.149-0.574
c0.343-0.709,0.894-1.246,1.495-1.732c1.545-1.247,3.314-2.034,5.232-2.498c2.519-0.61,5.037-0.628,7.529,0.127
c0.59,0.179,1.148,0.479,1.697,0.771c0.424,0.227,0.64,0.615,0.576,1.12C49.044-39.013,48.762-38.623,48.257-38.389z"/>
<g>
<path fill="#0D0D0D" d="M20.855-13.298c-0.019-0.977,0.186-1.896,0.606-2.768c0.853-1.751,2.257-2.896,4.017-3.647
c1.535-0.656,3.146-0.879,4.807-0.793c0.021,0.001,0.042,0.01,0.113,0.032c-1.162,0.179-2.242,0.468-3.287,0.885
c-1.81,0.723-3.405,1.751-4.645,3.284c-0.665,0.82-1.166,1.733-1.508,2.735C20.929-13.477,20.891-13.387,20.855-13.298z"/>
<path fill="#0D0D0D" d="M34.412,0.682c1.787,1.091,2.173,3.654,1.027,5.119C35.709,3.971,35.339,2.272,34.412,0.682z"/>
<path fill="#0D0D0D" d="M37.359-9.375c0.873-0.716,1.925-0.914,3.021-0.895c0.438,0.011,0.874,0.083,1.312,0.104
c0.236,0.011,0.484-0.004,0.718-0.055c0.442-0.101,0.639-0.033,0.79,0.391c0.342,0.967,0.503,1.969,0.388,2.99
c-0.056,0.489-0.157,0.991-0.353,1.439c-0.762,1.783-3.072,2.516-4.783,1.542c-0.221-0.125-0.428-0.271-0.625-0.433
c-0.208-0.169-0.396-0.365-0.612-0.567c0.097-0.111,0.177-0.218,0.267-0.311c0.207-0.212,0.285-0.463,0.222-0.745
c-0.196-0.884,0.187-1.513,0.926-1.917c0.528-0.288,1.106-0.495,1.681-0.686c0.297-0.102,0.602-0.174,0.912-0.236
c0.094,0.003,0.135,0.019,0.209,0.078c0.461,0.298,0.791,0.689,0.994,1.201c0.11-0.302,0.088-0.804-0.009-1.177
c-0.06-0.23-0.021-0.794,0.097-0.958c-0.01-0.01-0.019-0.021-0.025-0.03c-0.055,0.026-0.108,0.054-0.16,0.085
c-0.592,0.363-1.254,0.478-1.93,0.562c-0.834,0.106-1.646,0.297-2.357,0.778c-0.855,0.579-1.314,1.384-1.364,2.419
c-0.002,0.032-0.007,0.062-0.018,0.147C35.885-7.162,36.122-8.361,37.359-9.375z"/>
</g>
<path fill="#FFFFFF" d="M46.109-34.83c0.302-0.188,0.772-0.108,0.947,0.224c0.727,1.382,0.66,2.992-0.051,4.366
c-0.408,0.788-1.63,0.152-1.223-0.633c0.484-0.939,0.584-2.093,0.101-3.014C45.711-34.215,45.773-34.622,46.109-34.83z"/>
<g>
<path opacity="0.2" fill="#430A1D" enable-background="new " d="M-27.876-38.807c-0.431,12.319,7.165,8.312,10.544,13.513
c0.275,0.324,0.438,0.688,0.562,0.97C-20.562-26.413-31.193-25.018-27.876-38.807z"/>
</g>
<g>
<path opacity="0.2" fill="#2B2B2B" enable-background="new " d="M-33.66-14.792c10.432,8.98,31.025,8,32.532,7.873
C-9.766-13.08-35.68-7.288-36.63-26.041C-38.312-20.715-36.146-16.933-33.66-14.792z"/>
</g>
<path opacity="0.2" fill="#430A1D" enable-background="new " d="M-16.986-24.815c0,0-0.002-2.722,0-4.645
c0-1.922-2.416-0.874-3.349,1.765C-18.006-26.781-16.986-24.815-16.986-24.815z"/>
<path opacity="0.2" fill="#430A1D" enable-background="new " d="M-18.279-25.726c1.747,3.083-0.048,5.75-0.326,5.864
c0.992,0.052,2.899,1.914,3.354,2.534c0.71,0.971,0.753,2.381,0.812,3.534c1.409,0.063,2.4,0.926,3.683,1.232
c-1.091-1.021-2.569-2.229-3.231-3.605c-0.589-1.222-1.087-2.629-1.482-3.929c-0.323-1.065-0.625-2.123-0.824-3.222
c-0.148-0.818-0.631-1.919-0.543-2.716c0,0-0.18-7.171,1.258-10.712c-2.723,0.927-4.15,3.149-4.646,4.009
c-0.562,0.973-1.619,3.392-0.31,4.933C-19.689-27.497-18.764-26.582-18.279-25.726z"/>
<path fill="#0D0D0D" d="M-43.784-35.042c5.481-7.553,12.813-12.407,21.927-14.516c3.036-0.703,6.123-0.896,9.237-0.884
c7.618,0.033,15.235,0.014,22.853,0.015c5.123,0.002,10.248,0,15.371,0.013c1.219,0.002,2.435,0.083,3.601,0.489
c1.144,0.396,2.026,1.097,2.519,2.232c0.704,1.639,0.103,3.701-1.418,4.812c-1.115,0.814-2.396,1.051-3.744,0.991
c-0.363-0.018-0.725-0.074-1.086-0.111c-0.082-0.009-0.172-0.028-0.25-0.01c-0.117,0.025-0.227,0.083-0.339,0.125
c0.064,0.094,0.11,0.208,0.194,0.277c1.393,1.185,2.352,2.645,2.811,4.417c0.168,0.645,0.217,1.3,0.156,1.961
c-0.004,0.052-0.008,0.103-0.01,0.152c-0.014,0.342,0.104,0.448,0.441,0.464c0.996,0.046,1.991,0.085,2.984,0.163
c0.475,0.038,0.943,0.154,1.479,0.188c-0.062-0.082-0.108-0.203-0.191-0.241c-0.794-0.367-1.312-0.979-1.573-1.795
c-0.305-0.961-0.519-1.943-0.475-2.962c0.067-1.646,0.708-3.062,1.75-4.311c0.937-1.12,2.091-1.963,3.396-2.603
c0.168-0.082,0.213-0.154,0.154-0.343c-0.167-0.539-0.146-1.083,0.043-1.621c0.115-0.328,0.326-0.566,0.627-0.735
c0.686-0.382,1.477-0.436,2.225-0.123c0.021-0.107,0.039-0.228,0.065-0.332c0.216-0.82,0.745-1.146,1.544-1.626
c0.186,0,0.372,0,0.559,0c0.022,0,0.043,0.059,0.066,0.063c1.407,0.237,1.998,1.523,1.835,2.741
c-0.042,0.314-0.133,0.623-0.194,0.906c0.638,0.168,1.295,0.298,1.922,0.518c2.895,1.007,4.806,2.961,5.615,5.938
c0.323,1.191,0.123,2.258-0.801,3.142c-0.058,0.058-0.062,0.198-0.049,0.293c0.18,1.125,0.457,2.242,0.529,3.374
c0.174,2.686-0.67,5.041-2.537,7.005c-0.11,0.114-0.117,0.212-0.088,0.354c0.123,0.602,0.264,1.203,0.338,1.812
c0.152,1.228-0.316,2.246-1.135,3.133c-0.072,0.079-0.153,0.164-0.188,0.262c-0.229,0.683-0.702,1.148-1.327,1.462
c-1.26,0.635-2.596,0.764-3.973,0.535c-0.902-0.151-1.726-0.531-2.54-0.917c-0.359-0.17-0.689-0.255-1.021,0.036
c-0.057,0.049-0.146,0.061-0.199,0.107c-0.092,0.087-0.246,0.208-0.229,0.281c0.023,0.112,0.156,0.239,0.271,0.285
c0.635,0.25,1.289,0.385,1.977,0.385c0.516,0,1.033,0.015,1.543,0.075c1.627,0.197,3.119,0.784,4.52,1.62
c0.094,0.056,0.197,0.104,0.303,0.121c1.811,0.277,3.266,1.7,3.582,3.502c0.031,0.182,0.027,0.391,0.121,0.536
c0.768,1.186,0.83,2.446,0.387,3.741c-0.281,0.819-0.671,1.604-0.98,2.413C48.648-6.799,48.48-6.35,48.438-5.9
c-0.111,1.283-0.281,2.554-0.625,3.793c-0.735,2.646-2.045,4.939-4.148,6.738c-2.123,1.815-4.612,2.771-7.369,3.064
c-0.243,0.025-0.371,0.103-0.479,0.343c-0.602,1.365-1.592,2.324-3.017,2.822c-0.37,0.129-0.739,0.158-1.087,0.001
c-0.496-0.229-1.001-0.457-1.445-0.771c-1.164-0.812-2.086-1.867-2.851-3.06c-0.06-0.09-0.126-0.208-0.215-0.238
c-0.12-0.039-0.298-0.053-0.39,0.011c-0.07,0.048-0.086,0.242-0.059,0.355c0.032,0.133,0.135,0.251,0.214,0.368
c2.026,2.93,3.315,6.153,3.908,9.666c0.021,0.11,0.099,0.229,0.181,0.312c0.498,0.507,1.012,0.996,1.506,1.507
c0.789,0.815,1.273,1.802,1.531,2.897c0.067,0.287,0.1,0.582,0.119,0.875c0.006,0.089-0.081,0.183-0.125,0.275
c-0.095-0.055-0.219-0.088-0.277-0.167c-0.135-0.184-0.229-0.395-0.354-0.585c-0.082-0.126-0.189-0.233-0.286-0.354
c-0.03,0.071-0.022,0.111-0.008,0.148c0.53,1.35,0.899,2.741,1.077,4.183c0.05,0.402,0.084,0.808,0.094,1.212
c0.008,0.294-0.188,0.48-0.384,0.401c-0.105-0.042-0.196-0.131-0.277-0.211c-0.788-0.781-1.717-1.36-2.669-1.908
c-0.021,0.029-0.037,0.042-0.038,0.057c-0.026,0.142-0.052,0.282-0.073,0.424c-0.254,1.665-0.693,3.284-1.201,4.89
c-0.387,1.226-0.606,2.479-0.393,3.771c0.128,0.77,0.401,1.467,1.055,1.957c0.049,0.037,0.082,0.096,0.14,0.162
c-0.076,0.039-0.123,0.077-0.177,0.088c-0.943,0.208-1.918,0.086-2.447-0.997c-0.061-0.121-0.141-0.23-0.25-0.412
c-0.119,0.238-0.237,0.394-0.275,0.564c-0.188,0.854-0.234,1.723-0.154,2.596c0.102,1.078,0.482,2.065,0.951,3.027
c0.121,0.25,0.236,0.507,0.314,0.771c0.139,0.479-0.128,0.833-0.629,0.825c-0.249-0.005-0.512-0.044-0.741-0.131
c-1.233-0.464-2.172-1.279-2.796-2.446c-0.051-0.095-0.098-0.189-0.153-0.303c-0.495,0.481-0.946,0.95-1.181,1.592
c-0.15,0.411-0.35,0.808-0.555,1.192c-0.147,0.276-0.258,0.27-0.438,0.019c-0.049-0.067-0.092-0.142-0.145-0.207
c-0.139-0.167-0.246-0.168-0.354,0.021c-0.097,0.166-0.17,0.349-0.235,0.528c-0.322,0.87-0.849,1.592-1.572,2.169
c-0.049,0.037-0.105,0.066-0.221,0.137c0.043-0.275,0.078-0.488,0.105-0.702c0.029-0.219,0.055-0.438,0.083-0.669
c-0.065,0.008-0.085,0.006-0.099,0.014c-0.07,0.045-0.142,0.092-0.211,0.142c-2.924,2.02-6.121,3.424-9.576,4.244
c-1.053,0.25-2.157,0.339-3.108,0.936c-0.021,0.014-0.048,0.021-0.071,0.032c-0.188,0.074-0.326,0.033-0.472-0.113
c-0.093-0.092-0.259-0.133-0.392-0.131c-0.422,0.01-0.844,0.103-1.264,0.138c-0.387,0.032-0.785,0.12-1.156,0.213
c-0.637,0.161-1.256,0.78-1.881,0.78c-0.152,0-0.307,0-0.457,0c-0.146,0-0.319-0.42-0.438-0.567
c-0.207-0.259-0.461-0.562-0.786-0.583c-2.153-0.134-4.282-0.446-6.379-0.969c-3.192-0.792-6.19-2.021-8.877-3.953
c-1.963-1.413-3.647-3.091-4.841-5.218c-0.244-0.432-0.438-0.896-0.631-1.352c-0.146-0.353-0.182-0.725-0.06-1.094
c0.103-0.303,0.331-0.471,0.64-0.423c1.754,0.276,3.24-0.365,4.609-1.36c1.362-0.991,2.4-2.261,2.992-3.849
c0.872-2.346,0.4-4.446-1.244-6.305c-0.166-0.188-0.354-0.358-0.556-0.562c-0.076,0.285-0.14,0.544-0.214,0.803
c-0.373,1.27-0.903,2.456-1.807,3.445c-0.525,0.577-1.373,0.906-0.593,0.876c0.72-0.025-0.259-0.012-0.349,0
c0.898-0.617,0.207-0.983,0.34-2.028c0.283-2.222-0.398-4.134-1.945-5.739c-0.094-0.098-0.236-0.16-0.369-0.207
c-1.63-0.578-3.271-1.126-4.892-1.729c-2.894-1.076-5.688-2.37-8.336-3.965c-0.036-0.021-0.074-0.041-0.113-0.062
c-0.251,0.162-0.354,0.404-0.343,0.674c0.014,0.36,0.072,0.72,0.115,1.079c0.004,0.043,0.018,0.083,0.021,0.125
c0.086,0.635-0.162,0.842-0.746,0.558c-0.293-0.143-0.562-0.38-0.773-0.631c-0.674-0.807-1.092-1.763-1.493-2.721
c-0.212-0.506-0.38-1.03-0.595-1.535c-0.077-0.184-0.2-0.371-0.353-0.5c-2.293-1.95-4.429-4.048-6.239-6.464
c-1.552-2.07-2.875-4.271-3.951-6.625c-0.026-0.062-0.058-0.122-0.088-0.183c-0.008-0.013-0.023-0.021-0.058-0.051
c-0.353,2.063-0.422,4.117-0.215,6.192c-0.165-0.616-0.349-1.229-0.492-1.85c-0.588-2.504-0.771-5.038-0.596-7.604
c0.009-0.13-0.024-0.27-0.063-0.396c-0.764-2.398-1.291-4.849-1.516-7.354C-51.076-19.922-48.949-27.924-43.784-35.042z
M-45.863-8.097c1.6-3.499,3.606-6.763,5.793-9.918c0.115-0.166,0.168-0.329,0.178-0.534c0.049-1.014,0.103-2.025,0.186-3.035
c0.05-0.594,0.159-1.186,0.241-1.775c-5.841,6.427-8.646,13.994-8.558,22.715c0.098-0.677,0.162-1.309,0.282-1.929
C-47.369-4.5-46.675-6.322-45.863-8.097z M-24.402,17.72c-0.013-0.051-0.012-0.068-0.021-0.082
c-0.042-0.062-0.087-0.124-0.132-0.187c-1.907-2.673-3.469-5.534-4.621-8.613c-0.827-2.206-1.407-4.473-1.661-6.821
c-0.177-1.645-0.19-3.289,0-4.934c0.01-0.077,0.009-0.198-0.036-0.231c-0.373-0.267-0.757-0.519-1.148-0.781
c-0.026,0.095-0.047,0.158-0.062,0.226c-0.603,2.709-0.929,5.443-0.771,8.225c0.102,1.782,0.406,3.521,1.069,5.187
c0.019,0.048,0.027,0.099,0.04,0.147c-0.212-0.303-0.393-0.615-0.549-0.94c-1.232-2.561-1.719-5.294-1.816-8.102
c-0.087-2.536,0.17-5.058,0.661-7.558c-0.427-0.153-0.905-0.08-1.596,0.26c-0.021-0.083-0.019-0.188-0.067-0.244
c-1.085-1.22-1.996-2.555-2.707-4.023c-0.018-0.037-0.045-0.066-0.076-0.112c-0.533,0.604-0.994,1.229-1.272,1.992
c-0.085-0.312-0.156-0.62-0.175-0.933c-0.061-1.021,0.162-1.998,0.482-2.956c0.086-0.258,0.059-0.468-0.076-0.709
c-0.461,0.442-0.621,1.022-0.828,1.61c-0.209-0.278-0.28-0.56-0.297-0.858c-0.041-0.812,0.158-1.583,0.467-2.316
c0.242-0.573-0.07-1.05-0.1-1.637c-0.113,0.148-0.187,0.23-0.248,0.323c-0.791,1.167-1.615,2.312-2.363,3.507
c-1.771,2.831-3.217,5.817-4.217,9.013c-0.037,0.126-0.052,0.288-0.008,0.408c1.674,4.605,4.229,8.666,7.631,12.191
c0.041,0.043,0.092,0.078,0.164,0.14c-0.004-0.084-0.005-0.126-0.01-0.168c-0.143-1.173-0.314-2.346-0.415-3.521
c-0.175-2.062-0.14-4.121,0.271-6.159c0.277-1.367,0.727-2.673,1.578-3.804c0.586-0.774,1.303-1.392,2.221-1.75
c-0.221,0.22-0.461,0.422-0.657,0.661c-0.549,0.665-0.931,1.427-1.213,2.238c-0.597,1.707-0.731,3.479-0.741,5.27
c-0.009,1.771,0.146,3.528,0.393,5.279c0.263,1.874,0.582,3.737,1.117,5.554c0.35,1.186,0.774,2.342,1.438,3.395
c0.093,0.146,0.252,0.253,0.381,0.378c0.077-0.161,0.195-0.315,0.225-0.483c0.088-0.541,0.229-1.06,0.024-1.634
c-0.806-2.264-1.252-4.607-1.46-6.997c-0.044-0.502-0.057-1.006-0.085-1.508c0.125,0.452,0.19,0.91,0.284,1.36
c0.621,3.027,1.994,5.637,4.326,7.701c0.219,0.193,0.469,0.362,0.728,0.496c1.656,0.866,3.376,1.586,5.132,2.222
C-24.939,17.535-24.682,17.625-24.402,17.72z M26.686,41c0.004-0.17-0.065-0.346-0.123-0.513c-0.642-1.884-0.847-3.816-0.731-5.793
c0.021-0.354,0.041-0.72-0.022-1.062c-0.384-2.05-1.463-3.792-2.509-5.601c-0.028,0.078-0.039,0.092-0.039,0.104
c-0.116,3.021-0.026,6.032,0.568,9.007c0.218,1.087,0.528,2.147,1.112,3.106c0.287,0.476,0.645,0.886,1.138,1.166
c0.153,0.087,0.315,0.138,0.437-0.003C26.607,41.304,26.682,41.14,26.686,41z M27.934,24.982c-0.477-0.345-0.978-0.669-1.502-0.934
c-1.844-0.927-3.798-1.587-5.729-2.299c-0.376-0.138-0.737-0.336-1.073-0.556c-0.668-0.438-1.165-1.052-1.596-1.716
c-0.206-0.314-0.399-0.638-0.6-0.957c0.006,0.107,0.039,0.201,0.065,0.298c0.228,0.776,0.487,1.546,0.671,2.334
c0.255,1.099,0.659,2.126,1.271,3.068c0.33,0.509,0.699,0.996,1.022,1.513c0.204,0.324,0.382,0.676,0.524,1.032
c0.084,0.214,0.074,0.464,0.109,0.697c-0.035,0.017-0.068,0.034-0.104,0.05c-0.102-0.086-0.219-0.161-0.305-0.261
c-0.355-0.407-0.696-0.828-1.061-1.228c-0.079-0.089-0.255-0.176-0.344-0.144c-0.085,0.031-0.176,0.22-0.163,0.33
c0.045,0.441,0.071,0.896,0.209,1.312c0.19,0.573,0.489,1.11,0.712,1.677c0.109,0.276,0.18,0.582,0.205,0.878
c0.012,0.14-0.124,0.292-0.191,0.437c-0.119-0.081-0.256-0.146-0.354-0.249c-0.174-0.183-0.312-0.397-0.492-0.577
c-0.177-0.175-0.341-0.146-0.443,0.077c-0.072,0.156-0.146,0.348-0.121,0.506c0.061,0.397,0.168,0.787,0.27,1.179
c0.094,0.356,0.227,0.708,0.3,1.067c0.05,0.243-0.012,0.484-0.267,0.667c-0.071-0.104-0.149-0.193-0.195-0.298
c-0.1-0.214-0.18-0.438-0.271-0.652c-0.215-0.494-0.404-1.005-0.658-1.479c-0.225-0.417-0.445-0.38-0.686,0.025
c-0.467,0.792-0.928,1.59-1.449,2.346c-0.287,0.415-0.453,0.842-0.498,1.328c-0.058,0.646-0.09,1.298-0.157,1.945
c-0.026,0.241-0.091,0.492-0.355,0.72c-0.056-0.273-0.103-0.497-0.147-0.722c-0.065-0.33-0.11-0.666-0.201-0.989
c-0.062-0.228-0.246-0.251-0.36-0.048c-0.103,0.184-0.173,0.404-0.188,0.614c-0.027,0.396,0.009,0.794-0.012,1.191
c-0.009,0.18-0.074,0.361-0.142,0.532c-0.028,0.073-0.126,0.122-0.192,0.182c-0.043-0.074-0.103-0.142-0.127-0.223
c-0.031-0.095-0.035-0.198-0.05-0.299c-0.043-0.292-0.067-0.591-0.136-0.875c-0.073-0.309-0.268-0.361-0.459-0.111
c-0.176,0.229-0.314,0.5-0.403,0.774c-0.135,0.426-0.192,0.872-0.321,1.302c-0.06,0.201-0.197,0.385-0.326,0.556
c-0.049,0.062-0.188,0.102-0.266,0.079c-0.057-0.015-0.113-0.146-0.115-0.228c-0.008-0.328,0.006-0.658,0.011-0.987
c0.001-0.163,0-0.326,0-0.502c-0.072,0.016-0.101,0.015-0.118,0.026c-0.041,0.028-0.082,0.062-0.115,0.099
c-0.338,0.359-0.564,0.776-0.636,1.271c-0.031,0.219-0.042,0.438-0.083,0.653c-0.051,0.254-0.202,0.351-0.46,0.319
c-0.271-0.032-0.442-0.229-0.47-0.573c-0.02-0.224-0.004-0.448-0.004-0.706c-0.309,0.158-0.582,0.303-0.86,0.44
c-2.843,1.407-5.843,2.279-8.991,2.647c-2.033,0.237-4.066,0.243-6.082-0.166c-1.219-0.247-2.38-0.644-3.387-1.407
c-0.148-0.11-0.284-0.238-0.426-0.358c1.121,0.649,1.777,0.914,2.789,1.106c1.843,0.354,3.687,0.301,5.527,0.034
c3.239-0.471,6.301-1.492,9.178-3.062c2.229-1.216,4.244-2.707,5.873-4.68c0.123-0.146,0.238-0.299,0.354-0.449
c-3.335,1.593-7.102-1.404-10.87-0.074c5.164-2.662,8.222,0.767,11.134-1.452c0.741-0.564,0.873-2.019-0.82-1.775
c-1.616,0.231,2.434-0.569,3.16-4.778c-0.041-0.687-0.138-1.386-0.295-2.101c-0.695-3.153-2.164-5.938-4.18-8.438
c-2.076-2.576-4.684-4.493-7.613-5.992C3.807,7.942,3.76,7.926,3.702,7.903C3.71,7.939,3.709,7.956,3.715,7.965
C3.756,8.03,3.798,8.094,3.84,8.157c1.4,2.081,2.551,4.278,3.109,6.746c0.384,1.69,0.43,3.384-0.104,5.058
c-0.597,1.869-1.791,3.292-3.351,4.432c-1.748,1.278-3.723,2.076-5.782,2.688c-0.44,0.131-0.888,0.247-1.386,0.384
c0.056-0.06,0.062-0.076,0.076-0.081c0.084-0.036,0.172-0.069,0.259-0.103c1.438-0.562,2.808-1.248,4.05-2.175
c1.788-1.329,3.104-3.003,3.7-5.18c0.526-1.924,0.409-3.849-0.06-5.764C3.744,11.681,2.62,9.433,1.264,7.286
c-0.311-0.491-0.68-0.818-1.238-0.984c-0.674-0.2-1.335-0.459-2.065-0.716c2.066,2.217,2.123,5.337,1.727,7.168
c-0.006-0.032-0.016-0.053-0.017-0.075C-0.4,11.188-0.908,9.844-1.742,8.617c-1.244-1.83-2.929-3.164-4.831-4.249
C-6.72,4.284-6.9,4.257-7.064,4.204c0.688,0.793,1.215,1.657,1.523,2.647c0.3,0.958,0.404,2.46,0.205,2.999
c-0.314-1.047-0.641-1.729-1.34-2.62c-1.2-1.528-2.594-2.851-4.209-3.951c-1.082-0.741-2.217-1.354-3.437-1.82
c-2.157-0.827-4.407-1.334-6.645-1.882c-1.966-0.481-3.931-0.98-5.882-1.525c-1.064-0.298-2.088-0.737-2.973-1.431
c-0.158,0.352-0.455,1.596-0.466,2.584c-0.129,11.646,9.138,17.871,11.962,21.129c0.822,0.949,1.294,2.112,1.707,3.288
c0.168,0.477,0.312,0.961,0.471,1.456c0.026-0.035,0.053-0.059,0.065-0.084c0.789-1.515,1.274-3.062,0.896-4.816
c-0.58-2.683-1.66-5.079-3.694-6.979c-0.022-0.021-0.04-0.048-0.11-0.128c0.1,0.051,0.135,0.064,0.167,0.086
c1.673,0.964,3.202,2.11,4.495,3.554c2.174,2.424,3.342,5.261,3.502,8.519c0.07,1.419-0.125,2.82-0.283,4.221
c-0.423,3.729-3.146,6.748-6.807,7.639c-0.275,0.067-0.555,0.162-0.803,0.293c-0.352,0.187-0.448,0.493-0.315,0.863
c0.048,0.133,0.119,0.262,0.195,0.382c0.649,1.01,1.474,1.845,2.489,2.492c0.521,0.331,1.041,0.661,1.543,1.02
c2.06,1.472,4.275,2.614,6.725,3.286c1.011,0.277,2.033,0.522,3.096,0.429c0.332-0.03,0.656-0.153,0.987-0.192
c0.138-0.018,0.287,0.079,0.433,0.123C-3.649,45.878-3.714,46-3.815,46.057c-0.64,0.368-1.347,0.482-2.07,0.506
c-1.065,0.036-2.102-0.166-3.139-0.377c-0.104-0.021-0.213-0.021-0.32-0.03c0.849,0.734,1.812,1.208,2.854,1.521
c1.716,0.521,3.468,0.638,5.243,0.489c0.568-0.048,1.145-0.071,1.668-0.368c0.514-0.29,1.055-0.533,1.586-0.791
c0.115-0.056,0.243-0.084,0.366-0.125c0.019,0.021,0.036,0.039,0.055,0.06c-0.056,0.144-0.102,0.292-0.173,0.428
c-0.191,0.376-0.4,0.743-0.594,1.119c-0.035,0.071-0.018,0.173-0.023,0.26c0.08,0.004,0.17,0.034,0.239,0.01
c0.408-0.136,0.824-0.256,1.212-0.438c0.555-0.264,1.133-0.354,1.738-0.395c0.824-0.057,1.65-0.135,2.469-0.252
c1.202-0.173,2.118-0.793,2.712-1.868c0.14-0.251,0.287-0.497,0.438-0.742c0.054-0.087,0.128-0.161,0.193-0.24
c0.028,0.013,0.061,0.024,0.09,0.04c-0.188,0.64-0.375,1.279-0.571,1.954c0.622-0.142,1.271-0.573,1.784-1.178
c0.261-0.302,0.492-0.625,0.75-0.927c0.103-0.12,0.242-0.208,0.363-0.312c0.034,0.019,0.069,0.034,0.104,0.054
c-0.05,0.428-0.101,0.855-0.149,1.285c0.025,0.009,0.053,0.019,0.079,0.026c0.388-0.236,0.771-0.479,1.159-0.715
c1.318-0.794,2.553-1.688,3.479-2.948c0.127-0.174,0.222-0.149,0.289,0.062c0.082,0.265,0.137,0.539,0.228,0.802
c0.026,0.08,0.138,0.189,0.202,0.185c0.089-0.007,0.213-0.095,0.242-0.176c0.062-0.17,0.088-0.357,0.1-0.542
c0.025-0.37,0.016-0.742,0.055-1.11c0.012-0.113,0.133-0.218,0.204-0.323c0.095,0.084,0.226,0.15,0.274,0.256
c0.147,0.303,0.257,0.624,0.394,0.933c0.126,0.286,0.201,0.291,0.384,0.048c0.24-0.321,0.51-0.58,0.963-0.548
c0.42,0.032,0.473,0.001,0.629-0.39c0.267-0.667,0.494-1.347,0.768-2.01c0.13-0.316,0.329-0.604,0.486-0.908
c0.039-0.072,0.072-0.175,0.053-0.246c-0.557-1.795-0.71-3.644-0.729-5.508c-0.017-1.725,0.018-3.45-0.041-5.172
c-0.045-1.347-0.271-2.661-1.276-3.699c0.139,0.044,0.271,0.094,0.396,0.158c0.647,0.336,1.178,0.819,1.641,1.375
c1.027,1.228,1.701,2.65,2.3,4.121c0.479,1.178,0.962,2.355,1.465,3.523c0.125,0.29,0.333,0.546,0.519,0.809
c0.045,0.062,0.178,0.133,0.229,0.107c0.075-0.033,0.147-0.145,0.158-0.23c0.026-0.19,0.026-0.39,0.017-0.58
c-0.043-0.963-0.123-1.925,0.043-2.885c0.024-0.147,0.066-0.312,0.029-0.447c-0.361-1.317-0.83-2.589-1.643-3.708
c-0.024-0.035-0.041-0.078-0.092-0.177c0.578,0.258,0.967,0.64,1.282,1.089c0.315,0.451,0.591,0.93,0.901,1.428
c0.132-0.534,0.258-1.048,0.384-1.562C28.76,26.032,28.536,25.42,27.934,24.982z M28.588,17.264
c-1.479-1.396-3.23-2.381-5.07-3.217c-2.49-1.132-5.099-1.917-7.759-2.535c-0.95-0.221-1.907-0.412-2.924-0.63
c0.409,0.507,0.771,0.961,1.144,1.41c0.035,0.043,0.114,0.062,0.178,0.071c1.666,0.173,3.269,0.604,4.812,1.246
c3.571,1.482,6.629,3.722,9.354,6.438c0.025,0.025,0.043,0.057,0.062,0.085c-0.093-0.028-0.162-0.074-0.232-0.122
c-2.299-1.596-4.664-3.084-7.15-4.372c-1.592-0.82-3.214-1.575-4.958-2.021c-0.411-0.105-0.831-0.175-1.312-0.273
c0.066,0.114,0.093,0.156,0.117,0.2c0.547,0.958,1.15,1.893,1.627,2.887c0.297,0.625,0.715,1.083,1.243,1.486
c1.98,1.507,4.162,2.67,6.388,3.759c0.021,0.009,0.045,0.006,0.117,0.019c-0.847-1.344-1.664-2.652-3.123-3.389
c0.377,0.062,0.752,0.125,1.113,0.235c1.12,0.343,2.062,1.003,2.947,1.743c1.082,0.903,2.129,1.854,3.227,2.744
c0.565,0.46,1.17,0.904,1.823,1.222c0.687,0.331,1.448,0.502,2.181,0.729c0.188,0.062,0.389,0.072,0.664,0.12
c-0.09-0.464-0.128-0.871-0.25-1.249C31.97,21.295,30.536,19.109,28.588,17.264z M15.105-2.5c-0.541-0.301-1.117-0.571-1.707-0.751
c-1.209-0.366-2.467-0.372-3.721-0.369C8.79-3.619,7.902-3.607,7.016-3.617C6.793-3.62,6.572-3.69,6.352-3.73
c0-0.04-0.002-0.081-0.004-0.123C6.539-3.926,6.725-4.015,6.92-4.071c0.618-0.176,1.239-0.334,1.855-0.506
c0.121-0.035,0.231-0.104,0.349-0.158C9.12-4.759,9.115-4.784,9.111-4.807c-0.08-0.032-0.159-0.077-0.244-0.096
C7.627-5.15,6.393-5.45,5.141-5.627C3.023-5.928,0.923-6.295-1.128-6.919c-0.175-0.052-0.367-0.078-0.547-0.066
C-3.749-6.84-5.822-6.692-7.896-6.54c-2.398,0.175-4.797,0.198-7.191-0.055c-2.721-0.287-5.354-0.933-7.901-1.917
c-3.661-1.415-6.979-3.433-10.097-5.796c-0.053-0.04-0.104-0.088-0.155-0.131c0.103,0.02,0.181,0.062,0.257,0.108
c2.848,1.7,5.784,3.217,8.887,4.399c2.631,1.001,5.332,1.724,8.123,2.094c2.017,0.267,4.041,0.328,6.074,0.315
c2.271-0.012,4.547,0,6.818,0.001c0.029,0,0.059-0.004,0.092-0.007c-0.009-0.02-0.01-0.03-0.014-0.034
c-0.054-0.02-0.108-0.044-0.163-0.065c-2.031-0.794-3.957-1.786-5.715-3.081c-0.531-0.394-1.102-0.689-1.711-0.918
c-0.473-0.179-0.949-0.354-1.432-0.506c-2.479-0.783-5.045-1.167-7.597-1.628c-2.103-0.379-4.203-0.768-6.287-1.228
c-1.899-0.419-3.733-1.062-5.438-2.031c-2.926-1.662-4.647-4.15-5.116-7.491c-0.074-0.525-0.116-1.057-0.169-1.528
c-0.102,0.19-0.213,0.42-0.344,0.64c-1.109,1.865-1.885,3.851-2.127,6.02c-0.326,2.931,0.51,5.459,2.633,7.536
c0.087,0.085,0.146,0.199,0.203,0.312c0.306,0.62,0.559,1.271,0.914,1.858c1.015,1.665,2.447,2.919,4.06,3.979
c2.142,1.405,4.481,2.387,6.896,3.202c3.809,1.288,7.728,2.129,11.666,2.886c3.209,0.616,6.424,1.208,9.631,1.831
c2.502,0.484,4.935,1.17,7.238,2.305c2.889,1.422,5.563,3.13,7.828,5.439c0.075,0.078,0.219,0.12,0.333,0.124
c1.515,0.043,3.021,0.185,4.509,0.466c4.168,0.79,7.985,2.413,11.481,4.808c0.058,0.037,0.118,0.065,0.213,0.123
c-0.021-0.125-0.03-0.2-0.048-0.272c-0.294-1.303-0.676-2.581-1.172-3.82C24.855,5.334,20.816,0.679,15.105-2.5z M48.63-34.237
c-0.101-0.996-0.308-1.983-0.526-2.963c-0.338-1.507-1.26-2.504-2.752-2.955c-0.668-0.202-1.354-0.282-2.051-0.284
c-1.367-0.003-2.706,0.217-4.029,0.544c-1.102,0.276-2.166,0.647-3.121,1.277c-0.912,0.601-1.59,1.382-1.854,2.471
c-0.162,0.681-0.115,1.354-0.005,2.036c0.044,0.271,0.161,0.39,0.41,0.487c2.177,0.869,3.915,2.248,4.958,4.396
c0.139,0.284,0.337,0.428,0.64,0.459c1.041,0.115,2.062,0.077,3.013-0.428c0.61-0.324,1.219-0.287,1.822,0.006
c0.248,0.121,0.489,0.271,0.709,0.438c0.274,0.209,0.523,0.452,0.826,0.718c0.025-0.044,0.044-0.084,0.07-0.116
C48.248-29.91,48.857-31.955,48.63-34.237z M32.529-38.686c0.168-0.109,0.318-0.25,0.468-0.388
c1.297-1.209,2.792-2.087,4.448-2.709c1.479-0.555,3.017-0.804,4.582-0.888c1.158-0.062,2.324-0.052,3.449,0.255
c0.771,0.21,1.51,0.527,2.271,0.777c0.162,0.053,0.407,0.09,0.517,0.006c0.186-0.143,0.047-0.37-0.021-0.56
c-0.004-0.008-0.01-0.015-0.014-0.021c-0.541-1.033-1.25-1.926-2.209-2.604c-1.728-1.221-3.67-1.462-5.707-1.229
c-0.334,0.038-0.623-0.023-0.896-0.178c-0.128-0.073-0.207-0.231-0.309-0.352c0.019-0.021,0.037-0.045,0.055-0.066
c0.072,0.008,0.145,0.021,0.218,0.022c0.378,0.012,0.763,0.07,1.132,0.021c1.19-0.158,1.758-1.471,1.073-2.439
c-0.229-0.327-0.528-0.562-0.954-0.509c-0.438,0.058-0.656,0.383-0.805,0.76c-0.036,0.092-0.051,0.196-0.061,0.297
c-0.045,0.381-0.072,0.434-0.465,0.421c-0.369-0.011-0.736-0.068-1.104-0.124c-0.457-0.064-0.752,0.104-0.896,0.545
c-0.116,0.356-0.081,0.716,0.095,1.032c0.188,0.346,0.429,0.661,0.635,0.978c-0.553,0.231-1.162,0.44-1.729,0.734
c-2.167,1.123-3.635,2.823-4.188,5.24c-0.057,0.236-0.079,0.486-0.071,0.729C32.055-38.589,32.247-38.497,32.529-38.686z
M33.66-35.66c0.162-0.511,0.27-1.029,0.486-1.494c0.504-1.076,1.4-1.774,2.447-2.258c2.484-1.142,5.104-1.653,7.831-1.421
c1.652,0.14,3.021,0.83,3.788,2.41c0.003,0.006,0.014,0.01,0.043,0.034c0.505-0.234,0.787-0.624,0.855-1.172
c0.062-0.504-0.153-0.894-0.577-1.119c-0.548-0.292-1.107-0.593-1.697-0.771c-2.492-0.755-5.012-0.737-7.53-0.127
c-1.918,0.464-3.688,1.251-5.231,2.498c-0.603,0.486-1.152,1.022-1.495,1.732c-0.085,0.176-0.164,0.388-0.15,0.574
C32.475-36.194,33.118-35.658,33.66-35.66z M-45.486-22.972c-2.023,3.519-3.076,7.254-3.078,7.827
c-0.006,1.791,0.133,3.576,0.401,5.354c0.062,0.412,0.144,0.821,0.215,1.232c0.076-0.075,0.101-0.151,0.124-0.229
c0.299-0.993,0.559-2,0.901-2.978c1.798-5.125,4.532-9.722,7.92-13.945c0.123-0.154,0.229-0.336,0.29-0.523
c0.736-2.267,1.792-4.324,3.146-6.188c-1.519,0.647-3.248,0.88-5.309,3.251c2.531-4.881,8.527-6.815,8.527-6.815
c3.336-2.985,7.219-4.958,11.52-6.139c0.348-0.095,0.698-0.171,1.049-0.255c-0.076,0.074-0.162,0.104-0.248,0.138
c-3.201,1.145-6.15,2.741-8.82,4.846c-3.323,2.62-5.836,5.848-7.338,9.828c-0.16,0.428-0.236,0.827-0.071,1.269
c0.112,0.3,0.17,0.619,0.263,0.926c0.706,2.307,1.811,4.381,3.588,6.055c1.7,1.604,3.743,2.573,5.959,3.227
c2.654,0.778,5.396,1.065,8.125,1.423c1.583,0.206,3.158,0.456,4.736,0.697c0.424,0.063,0.843,0.168,1.294,0.261
c-0.034-0.056-0.044-0.081-0.062-0.101c-1.232-1.383-2.258-2.902-3.074-4.568c-0.049-0.103-0.162-0.205-0.271-0.239
c-0.729-0.23-1.452-0.503-2.2-0.653c-1.109-0.221-2.244-0.306-3.353-0.524c-5.947-1.18-7.78-4.367-7.753-4.338
c1.806,1.918,4.695,2.459,5.459,2.725c1.779,0.619,3.624,0.787,5.492,0.769c0.547-0.008,1.092-0.04,1.654-0.062
c-1.677-5.474-1.457-10.81,0.815-16.037c0.002,0.099-0.021,0.193-0.044,0.287c-0.889,3.376-1.249,6.791-0.741,10.267
c0.613,4.221,2.448,7.817,5.513,10.78c2.297,2.22,4.998,3.818,7.896,5.106c2.753,1.224,5.646,1.981,8.564,2.685
c2.196,0.529,4.401,1.048,6.569,1.687c2.904,0.851,5.533,2.249,7.772,4.315c0.348,0.32,0.697,0.647,0.984,1.021
c1.887,2.442,4.188,4.354,7.019,5.6c0.179,0.599,0.491,1.231,0.979,1.891c0.691,0.926,1.547,1.689,2.469,2.374
c0.262,0.193,0.608,0.304,0.934,0.368c0.354,0.073,0.566-0.098,0.688-0.441c0.032-0.097,0.055-0.194,0.073-0.293
c0.188-0.065,0.377-0.167,0.562-0.311c0.127-0.098,0.25-0.204,0.361-0.315c0.521-0.524,0.887-1.148,1.182-1.817
c0.064-0.145,0.15-0.202,0.3-0.221c0.351-0.046,0.703-0.095,1.05-0.162c5.633-1.114,9.732-5.394,10.448-11.548
c0.063-0.555,0.06-1.13,0.226-1.65c0.213-0.661,0.564-1.277,0.856-1.913c0.257-0.559,0.538-1.107,0.761-1.681
c0.229-0.587,0.257-1.199,0.079-1.816c-0.062-0.212-0.185-0.268-0.351-0.165c-0.231,0.146-0.44,0.329-0.662,0.494
c-0.269,0.201-0.52,0.431-0.811,0.59c-0.236,0.131-0.506,0.104-0.718-0.139c0.049-0.037,0.09-0.066,0.126-0.1
c0.58-0.517,1.162-1.029,1.732-1.556c0.068-0.062,0.117-0.188,0.111-0.285c-0.051-0.817-0.322-1.558-0.902-2.146
c-0.748-0.757-1.627-1.161-2.719-0.905c-0.027-0.407-0.056-0.477-0.289-0.603c-1.52-0.823-3.129-1.308-4.871-1.275
c-1.28,0.022-2.436-0.384-3.537-1c-0.342-0.191-0.709-0.363-1.086-0.463c-1.19-0.316-2.412-0.407-3.641-0.439
c-0.101-0.002-0.199-0.008-0.3-0.013c0.063-0.071,0.126-0.093,0.188-0.107c0.98-0.232,1.974-0.262,2.975-0.189
c0.324,0.023,0.689,0.093,0.971-0.021c0.826-0.336,1.627-0.738,2.422-1.147c0.223-0.115,0.42-0.17,0.646-0.086
c0.505,0.189,1.012,0.376,1.504,0.595c1.046,0.465,2.116,0.745,3.272,0.586c0.631-0.086,1.248-0.225,1.799-0.562
c0.356-0.22,0.639-0.5,0.666-0.956c0.006-0.064,0.063-0.135,0.115-0.183c0.148-0.137,0.312-0.26,0.461-0.396
c0.44-0.406,0.627-0.91,0.572-1.505c-0.047-0.5-0.195-0.583-0.63-0.362c-0.21,0.106-0.429,0.193-0.649,0.025
c0.279-0.178,0.553-0.338,0.813-0.518c0.392-0.268,0.53-0.654,0.517-1.119c-0.041-1.294-1.567-2.439-2.877-2.15
c-0.433,0.095-0.818,0.266-1.055,0.675c-0.031,0.054-0.12,0.111-0.18,0.107c-0.342-0.019-0.691-0.017-1.021-0.091
c-0.605-0.137-1.203-0.282-1.826-0.164c-0.287,0.055-0.57,0.134-0.867,0.202c-0.232-0.808-0.614-1.526-1.125-2.177
c-1.185-1.506-2.742-2.46-4.539-3.049c-2.33-0.765-4.725-0.849-7.121-0.505c-3.465,0.495-5.922,2.376-7.246,5.639
c-0.328,0.807-0.497,1.678-0.744,2.521c-0.396,1.356-0.928,2.66-1.631,3.892c-1.133,1.978-2.62,3.606-4.657,4.68
c-2.288,1.206-4.72,1.447-7.239,0.999c-0.478-0.085-0.947-0.208-1.477-0.327c0.921-0.055,1.768-0.074,2.607-0.159
c2.336-0.235,4.526-0.937,6.517-2.197c2.366-1.501,4.137-3.469,4.877-6.261c0.396-1.491,0.95-2.938,1.644-4.324
c0.461-0.928,0.971-1.817,1.682-2.58c1.184-1.267,2.67-1.983,4.308-2.444c0.504-0.141,1.004-0.297,1.501-0.457
c0.246-0.08,0.4-0.254,0.497-0.503c0.274-0.712,0.353-1.439,0.205-2.188c-0.229-1.178-0.806-2.178-1.58-3.072
c-0.666-0.77-1.5-1.334-2.334-1.897c-0.405-0.271-0.8-0.566-1.17-0.885c-0.32-0.272-0.515-0.646-0.495-1.073
c0.035-0.763,0.08-0.884,0.84-0.631c0.119,0.04,0.237,0.087,0.354,0.138c0.621,0.267,1.238,0.539,1.863,0.8
c1.197,0.501,2.44,0.686,3.717,0.379c1.414-0.338,2.412-1.169,2.861-2.589c0.092-0.291,0.114-0.6-0.041-0.861
c-0.076-0.129-0.269-0.256-0.412-0.26c-0.129-0.004-0.281,0.143-0.387,0.258c-0.064,0.072-0.062,0.206-0.092,0.312
c-0.146,0.548-0.385,1.032-0.923,1.298c-0.103,0.051-0.218,0.064-0.328,0.097c0.717-0.744,1.104-1.586,1.053-2.601
c-0.039-0.771-0.644-1.273-1.42-1.229c-0.226,0.013-0.385,0.119-0.41,0.339c-0.03,0.267-0.019,0.537-0.024,0.806
c-0.008,0.32,0.016,0.646-0.029,0.96c-0.071,0.515-0.389,0.85-0.883,1.009c-0.239,0.076-0.469,0.035-0.691-0.078
c0.312-0.064,0.61-0.158,0.768-0.45c0.15-0.28,0.305-0.572,0.381-0.877c0.162-0.658,0.084-1.293-0.521-1.697
c-0.271-0.181-0.64-0.256-0.974-0.302c-0.718-0.1-1.405,0.103-2.099,0.263c-0.416,0.097-0.847,0.161-1.271,0.162
c-0.401,0.001-0.806-0.084-1.203-0.155c-2.418-0.436-4.848-0.251-7.31-0.222c-2.663,0.033-5.326,0.017-7.989,0.019
c-4.767,0-9.535,0.002-14.306,0.002c-1.969,0-3.938-0.02-5.907-0.007c-2.716,0.017-5.401,0.323-8.027,1.012
c-10.003,2.616-17.489,8.031-22.423,17.108c-2.175,4.004-3.417,8.287-3.854,12.784C-48.446-17.955-45.458-23.518-45.486-22.972z"/>
<path fill="#9B46E0" d="M32.723,0.609c-0.84,1.788-0.85,2.545,0.078,4.237c0.7,1.278,2.561,0.141,2.309,1.568
c-0.106,1.24-1.405,2.602-1.646,2.898c-0.296,0.351-0.461,0.696-0.898,0.607c-0.399-0.082-0.778-0.275-1.101-0.514
c-1.137-0.845-2.19-1.787-3.045-2.928c-1.543-2.059-0.907-3.308,0.899-4.95C30.084,0.836,32.813,0.418,32.723,0.609z"/>
<path opacity="0.2" fill="#2B2B2B" enable-background="new " d="M31.049,7.4c0.445,0.486,1.139,0.956,1.861,1.438
c0.384,0.254-0.76-2.867-1.092-3.7c-1.092-2.729,0.338-4.42-0.055-4.211c-0.867,0.46-2.104,2.067-2.189,3.06
C29.479,5.061,30.313,6.594,31.049,7.4z"/>
<g>
<path fill="#0D0D0D" d="M32.376,0.776c-0.84,1.788-0.849,2.544,0.08,4.237c0.698,1.277,1.022,2.564,0.771,3.993
c-0.027,0.159-0.059,0.321-0.111,0.475c-0.148,0.429-0.411,0.639-0.848,0.549c-0.4-0.082-0.83-0.217-1.15-0.455
c-1.137-0.845-2.191-1.787-3.045-2.928c-1.184-1.579-1.055-2.657-0.157-3.854c0.257-0.342,0.415-0.332,0.746-0.394
c0.428-0.081,0.515,0.515,0.379,0.756c-0.313,0.554-0.519,1.111-0.558,1.549c-0.096,1.076,0.506,2.244,1.242,3.049
c0.682,0.746,2.062,1.904,3.002,2.185c0.228-0.871-0.257-2.609-0.563-3.453c-0.374-1.031-1.507-2.912-1.222-4.138
c0,0,0.398-1.134,0.822-1.422C32.186,0.638,32.376,0.776,32.376,0.776z"/>
</g>
<linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="76390.4609" y1="34.6905" x2="76390.4609" y2="34.6905" gradientTransform="matrix(-1 0 0 1 76418.3594 0)">
<stop offset="0" style="stop-color:#9B46E0"/>
<stop offset="0.3836" style="stop-color:#FAA100"/>
</linearGradient>
<path fill="url(#SVGID_19_)" d="M27.898,34.69"/>
<g opacity="0.2">
<path fill="#8B4FBA" d="M-18.605-19.863c-0.115-0.006-0.222,0.006-0.309,0.053C-18.805-19.802-18.702-19.823-18.605-19.863z"/>
</g>
<path opacity="0.2" fill="#430A1D" enable-background="new " d="M33.089-34.854c0.981,1.49,2.084,1.994,3.33,3.167
c1.185,1.113,2.095,2.456,3.274,3.549c0.925-0.193,1.963-0.037,2.912-0.085c0.678-1.674,3.97-0.081,4.271,0.999l0.437-0.655
c0.949-1.869-2.455-1.994-4.393-1.8c-1.359,0.135-7.23-1.408-7.037-8.979c-0.66-1.015-2.218-0.024-2.22-1.347
c-0.001-1.354,0.021-3.742,1.19-4.604c-0.334-1.181-1.498,0.068-1.818,0.541c-0.719,1.059-1.744,2.934-1.977,4.189
C30.664-37.735,32.016-36.483,33.089-34.854z"/>
</g>
</svg>
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
* 指南 * 指南
* [快速开始](/guide/quickstart.md) * [快速开始](/guide/quickstart.md)
* [发展计划](/guide/roadmap.md)
* [编译部署](/guide/deploy.md) * [编译部署](/guide/deploy.md)
* [核心功能](/guide/functions.md) * [核心功能](/guide/functions.md)
* [开发调试](/guide/debug.md) * [开发调试](/guide/debug.md)
...@@ -18,6 +19,8 @@ ...@@ -18,6 +19,8 @@
* [Hive 集成](/extend/hive.md) * [Hive 集成](/extend/hive.md)
* [Doris 集成](/extend/doris.md) * [Doris 集成](/extend/doris.md)
* [Clickhouse 集成](/extend/clickhouse.md) * [Clickhouse 集成](/extend/clickhouse.md)
* [Hudi 集成](/extend/hudi.md)
* [Iceberg 集成](/extend/hudi.md)
* 分享 * 分享
* [Dlink Yarn 的三种提交实践](/share/yarnsubmit.md) * [Dlink Yarn 的三种提交实践](/share/yarnsubmit.md)
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
* Guide * Guide
* [Quick Start](/en-US/guide/quickstart.md) * [Quick Start](/en-US/guide/quickstart.md)
* [Roadmap](/en-US/guide/roadmap.md)
* [Deploy](/en-US/guide/deploy.md) * [Deploy](/en-US/guide/deploy.md)
* [Functions](/en-US/guide/functions.md) * [Functions](/en-US/guide/functions.md)
* [Debug](/en-US/guide/debug.md) * [Debug](/en-US/guide/debug.md)
...@@ -18,6 +19,8 @@ ...@@ -18,6 +19,8 @@
* [Hive](/en-US/extend/hive.md) * [Hive](/en-US/extend/hive.md)
* [Doris](/en-US/extend/doris.md) * [Doris](/en-US/extend/doris.md)
* [Clickhouse](/en-US/extend/clickhouse.md) * [Clickhouse](/en-US/extend/clickhouse.md)
* [Hudi](/en-US/extend/hudi.md)
* [Iceberg](/en-US/extend/hudi.md)
* Share * Share
* [Dlink Yarn](/en-US/share/yarnsubmit.md) * [Dlink Yarn](/en-US/share/yarnsubmit.md)
......
## 敬请期待
\ No newline at end of file
## 敬请期待
\ No newline at end of file
## 简介 ## 简介
实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设
Dlink 是一个交互式的 FlinkSQL Studio,可以在线开发、补全、校验 、执行、预览 FlinkSQL,支持 Flink 官方所有语法及其增强语法,并且可以同时对多 Flink 集群实例进行提交、停止、SavePoint 等运维操作,如同您的 IntelliJ IDEA For Flink SQL Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限
需要注意的是:Dlink 更专注于 FlinkSQL 的应用,而不是 DataStream。在开发过程中您不会看到任何一句 java、scala 或者 python。所以,它的目标是基于 100% FlinkSQL 来实现批流一体的实时计算平台。 最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
值得惊喜的是:Dlink 的实现基于 Apache Flink 源码二次开发,支持其绝大多数特性与机制,而交互更加贴近 Flink 的功能与体验,并且紧随官方社区发展。即站在巨人肩膀上开发与创新,Dlink 在未来批流一体的发展趋势下潜力无限。
最后,Dlink 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
## 原理 ## 原理
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/040/Dlink_principle.png) ![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/dinky_principle.png)
### JobManager ### JobManager
JobManager 作为 Dlink 的作业管理的统一入口,负责 Flink 的各种作业执行方式及其他功能的调度。 JobManager 作为 Dinky 的作业管理的统一入口,负责 Flink 的各种作业执行方式及其他功能的调度。
### Executor ### Executor
Executor 是 Dlink 定制的 FlinkSQL 执行器,来模拟真实的 Flink 执行环境,负责 FlinkSQL 的 Catalog 管理、UDF管理、片段管理、配置管理、语句集管理、语法校验、逻辑验证、计划优化、生成 JobGraph、本地执行、远程提交、SELECT 及 SHOW 预览等核心功能。 Executor 是 Dinky 定制的 FlinkSQL 执行器,来模拟真实的 Flink 执行环境,负责 FlinkSQL 的 Catalog 管理、UDF管理、片段管理、配置管理、语句集管理、语法校验、逻辑验证、计划优化、生成 JobGraph、本地执行、远程提交、SELECT 及 SHOW 预览等核心功能。
### Interceptor ### Interceptor
Interceptor 是 Dlink 的 Flink 执行拦截器,负责对其进行片段解析、UDF注册、SET 和 AGGTABLE 等增强语法解析。 Interceptor 是 Dinky 的 Flink 执行拦截器,负责对其进行片段解析、UDF注册、SET 和 AGGTABLE 等增强语法解析。
### Gateway ### Gateway
Gateway 并非是开源项目 flink-sql-gateway,而是 Dlink 自己定制的 Gateway,负责进行基于 Yarn 环境的任务提交与管理,主要有Yarn-Per-Job 和 Yarn-Application 的 FlinkSQL 提交、停止、SavePoint 以及配置测试,而 User Jar 目前只开放了 Yarn-Application 的提交。 Gateway 并非是开源项目 flink-sql-gateway,而是 Dinky 自己定制的 Gateway,负责进行基于 Yarn 环境的任务提交与管理,主要有Yarn-Per-Job 和 Yarn-Application 的 FlinkSQL 提交、停止、SavePoint 以及配置测试,而 User Jar 目前只开放了 Yarn-Application 的提交。
### Flink SDK ### Flink SDK
Dlink 主要通过调用 flink-client 和 flink-table 模块进行二次开发。 Dinky 主要通过调用 flink-client 和 flink-table 模块进行二次开发。
### Yarn SDK ### Yarn SDK
Dlink 通过调用 flink-yarn 模块进行二次开发。 Dinky 通过调用 flink-yarn 模块进行二次开发。
### Flink API ### Flink API
Dlink 也支持通过调用 JobManager 的 RestAPI 对任务进行管理等操作,系统配置可以控制开启和停用。 Dinky 也支持通过调用 JobManager 的 RestAPI 对任务进行管理等操作,系统配置可以控制开启和停用。
### Yarn-Session ### Yarn-Session
Dlink 通过已注册的 Flink Session 集群实例可以对 Standalone 和 Yarn-Session 两种集群进行 FlinkSQL 的提交、Catalog 的交互式管理以及对 SELECT 和 SHOW 等语句的执行结果预览。 Dinky 通过已注册的 Flink Session 集群实例可以对 Standalone 和 Yarn-Session 两种集群进行 FlinkSQL 的提交、Catalog 的交互式管理以及对 SELECT 和 SHOW 等语句的执行结果预览。
### Yarn-Per-Job ### Yarn-Per-Job
Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例,然后将本地解析生产的 JobGraph 与 Configuration 提交至 Yarn 来创建 Flink-Per-Job 应用。 Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例,然后将本地解析生产的 JobGraph 与 Configuration 提交至 Yarn 来创建 Flink-Per-Job 应用。
### Yarn-Application ### Yarn-Application
Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对于 User Jar,将 Jar 相关配置与 Configuration 提交至 Yarn 来创建 Flink-Application 应用;对于 Flink SQL,Dlink 则将作业 ID 及数据库连接配置作为 Main 入参和 dlink-app.jar 以及 Configuration 提交至 Yarn 来创建 Flink-Application 应用。 Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对于 User Jar,将 Jar 相关配置与 Configuration 提交至 Yarn 来创建 Flink-Application 应用;对于 Flink SQL,Dinky 则将作业 ID 及数据库连接配置作为 Main 入参和 dlink-app.jar 以及 Configuration 提交至 Yarn 来创建 Flink-Application 应用。
## 功能 ## 功能
注意:以下功能均为对应版本已实现的功能,实测可用。 注意:以下功能均为对应版本已实现的功能,实测可用。
| 应用 | 方向 | 功能 | 进展 | | 应用 | 方向 | 功能 | 进展 |
| :------: | :------------: | ------------------------------------------------------------ | :---: | |:-------:|:----------:|-------------------------------------------|:-----:|
| 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 | | 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 |
| | | 支持 Flink 所有 Configuration | 0.4.0 | | | | 支持 Flink 所有 Configuration | 0.4.0 |
| | | 支持 Flink 所有 Connector | 0.4.0 | | | | 支持 Flink 所有 Connector | 0.4.0 |
...@@ -67,6 +63,7 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -67,6 +63,7 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 支持 INSERT 语句集 | 0.4.0 | | | | 支持 INSERT 语句集 | 0.4.0 |
| | | 新增 SQL 片段语法 | 0.4.0 | | | | 新增 SQL 片段语法 | 0.4.0 |
| | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 | | | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 |
| | | 新增 FlinkSQLEnv 执行环境复用 | 0.5.0 |
| | | 新增 Flink Catalog 交互查询 | 0.4.0 | | | | 新增 Flink Catalog 交互查询 | 0.4.0 |
| | | 新增 执行环境的共享与私有会话机制 | 0.4.0 | | | | 新增 执行环境的共享与私有会话机制 | 0.4.0 |
| | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 | | | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 |
...@@ -79,15 +76,20 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -79,15 +76,20 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 新增 关键字高亮与代码缩略图 | 0.4.0 | | | | 新增 关键字高亮与代码缩略图 | 0.4.0 |
| | | 新增 选中片段执行 | 0.4.0 | | | | 新增 选中片段执行 | 0.4.0 |
| | | 新增 布局拖拽 | 0.4.0 | | | | 新增 布局拖拽 | 0.4.0 |
| | | 新增 SQL导出 | 0.5.0 |
| | | 支持 local 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 local 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 standalone 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 standalone 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn session 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 yarn session 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn per-job 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 yarn per-job 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn application 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 yarn application 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 kubernetes session 模式下 FlinkSQL 提交 | 0.5.0 |
| | | 支持 kubernetes application 模式下 FlinkSQL 提交 | 0.5.0 |
| | Flink 作业 | 支持 yarn application 模式下 Jar 提交 | 0.4.0 | | | Flink 作业 | 支持 yarn application 模式下 Jar 提交 | 0.4.0 |
| | | 支持 k8s application 模式下 Jar 提交 | 0.5.0 |
| | | 支持 作业 Cancel | 0.4.0 | | | | 支持 作业 Cancel | 0.4.0 |
| | | 支持 作业 SavePoint 的 Cancel、Stop、Trigger | 0.4.0 | | | | 支持 作业 SavePoint 的 Cancel、Stop、Trigger | 0.4.0 |
| | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 | | | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 |
| | | 新增 UDF java方言代码的开发 | 0.5.0 |
| | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 | | | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 |
| | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 | | | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 |
| | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 | | | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 |
...@@ -104,19 +106,28 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -104,19 +106,28 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 新增 Oracle 数据源注册及测试 | 0.4.0 | | | | 新增 Oracle 数据源注册及测试 | 0.4.0 |
| | | 新增 postgreSql 数据源注册及测试 | 0.4.0 | | | | 新增 postgreSql 数据源注册及测试 | 0.4.0 |
| | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 | | | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 |
| 关于 | 关于 Dlink | 版本更新记录 | 0.4.0 | | OpenApi | 调度 | 新增 submitTask 调度接口 | 0.5.0 |
| | FlinkSQL | 新增 executeSql 提交接口 | 0.5.0 |
| | | 新增 explainSql 验证接口 | 0.5.0 |
| | | 新增 getJobPlan 计划接口 | 0.5.0 |
| | | 新增 getStreamGraph 计划接口 | 0.5.0 |
| | | 新增 getJobData 数据接口 | 0.5.0 |
| | Flink | 新增 executeJar 提交接口 | 0.5.0 |
| | | 新增 cancel 停止接口 | 0.5.0 |
| | | 新增 savepoint 触发接口 | 0.5.0 |
| 关于 | 关于 Dinky | 版本更新记录 | 0.4.0 |
## 近期计划 ## 近期计划
1.支持同时托管多版本的Flink实例 1.任务生命周期管理
2.支持K8S多种运行模式 2.作业监控及运维
3.支持多种任务调度框架接口 3.流作业自动恢复
4.支持UDF动态加载 4.作业日志查看
5.完善Studio交互功能 5.钉钉报警和推送
## 致谢 ## 致谢
...@@ -130,26 +141,20 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -130,26 +141,20 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
[SpringBoot]() [SpringBoot]()
[docsify](https://github.com/docsifyjs/docsify/)
此外,感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助 此外,感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助
[![JetBrains](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink) [![JetBrains](https://github.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink)
## 交流与贡献 ## 交流与贡献
欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。 欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。
在此有意向参与代码及文档贡献或积极测试者可以私信我加入 Dlink Contributors 群聊进一步了解。
Dlink 将正式开始社区积极的发展阶段,社区的主旨是开放、交流、创新、共赢,Dlink 的核心理念是创新,即不受思想约束地勇于尝试。Dlink 本就是一个创新型的解决方案,而不是模仿已有产品的思路按部就班,一味模仿对于社区及所有人的发展意义并不大,积极创新才可能独树一帜,并为大家带来更大的利益。无论您是否已经建成了自己的 FlinkSQL 开发运维平台,相信它一定会在创新的方向上为您带来些许启发。
在此非常感谢大家的支持~ 在此非常感谢大家的支持~
QQ社区群:**543709668**,申请备注 “ Dlink ”,不写不批 QQ社区群:**543709668**,申请备注 “ Dinky ”,不写不批
微信社区群(推荐,大佬云集):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dlink ”,不写不批 微信社区群(推荐):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dinky + 企业名 + 职位”,不写不批
公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg) 公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg)
\ No newline at end of file
163 邮箱:aiwenmo@163.com
QQ 邮箱:809097465@qq.com
\ No newline at end of file
### 任务生命周期管理
FlinkSQL 生命周期:创建、开发、调试、发布、上线、注销。
Dlink 的 FlinkSQL Studio 负责 FlinkSQL 的开发和调试,在确定最终的 SQL 口径及任务配置后,可通过任务发布功能自动地在运维中心注册测试或生产环境下的最终任务,同时具备版本的管理,将开发与运维分离,保证生产环境的稳定性。
在运维中心可以上线已发布的任务,或者将已上线的任务进行下线,然后可以通过维护功能将任务重新进入开发和调试的进度。
最后,可以在运维中心注销已经不需要或者错误的任务,将被彻底删除。
### 元数据管理
Dlink 目前支持对外部元数据的采集功能,将建设统一的元数据管理,使其可以不需要依赖第三方元数据平台,独自进行更加适应实时数仓的元数据消费操作,统一规范拥有大量数据表、复杂关系的建设需求。
元数据主要包含采集、构建、管理、同步功能。
采集:Dlink 通过 SPI 来扩展实现更多数据源的元数据采集功能,使其可以轻松对接第三方存储库、元数据平台等,甚至可以将消息队列的元数据采集进行扩展,以便于洞悉实时数仓的流数据结构。
构建:Dlink 提供构建逻辑表、字段、关系的能力,解耦外部存储层。通过词根维护来规范命名定义。
管理:Dlink 支持对逻辑表和物理表的结构的可视化管理能力,可添加物理表不支持的信息如标签、分类、注释、权限等。
同步:Dlink 支持自动或手动地将元数据变动同步至对应数据源,或根据逻辑表在数据源上创建物理表。
### 血缘和影响分析
Dlink 目前具备任务表级的 FlinkSQL 血缘分析,通过 FlinkSQL 解析并构造后的 StreamGraph 来获取血缘关系,规避了冗余 Create Table 等的影响,同时支持多 Create View 的语句,使 FlinkSQL 结构更加清晰明了易于维护。
FlinkSQL 任务被发布到运维中心时,会自动生成血缘关系,与元数据管理的元数据信息做对应,进而形成全局的数据链路关系,便同时得到了影响分析。拥有了血缘和影响分析,便更加方便的管理和优化所有的数据任务。
处在 Studio 开发环节的任务,则可以根据已发布的任务构成的数据链路关系来获取自身的全局血缘及影响分析。
单从血缘分析来说,含有表级、字段级、记录级。Dlink 将完善字段级血缘并开放,记录级则是未来探索的一个方向,记录级的血缘将会更直观地展现出数据的治理过程,便于排查数据内容问题。
### 集群运维
Dlink 目前的 FlinkSQL 敏捷需要提取部署好外部的环境才能使用,而该过程目前是通过人工手动进行,需要进行复杂的运维操作,此外还要解决因依赖导致的各种问题。
Dlink 将对集群环境的搭建和启停等操作进行自动化地支持。
首先配置免密通信集群的节点信息,将部署资源提前放到 Dlink 目录下或通过镜像地址进行下载,通过集群模板的配置来分发和部署所使用的 Flink 资源及其他资源,若为 K8S 环境则打包镜像并装载至容器。资源到位后可直接通过 Dlink 启动对应集群如 Standalone 、Yarn-Session 和 K8S-Session等。做到集群部署运维托管 Dlink 。
### 运行监控
Dlink 需要对集群资源及 Flink 作业进行时序监控,支持外部对接 Prometheus 消费定制化的时序数据。
Dlink 通过 SPI 的方式来实现自定义监控接口实现,使其可以插件化地管理不同的中间件的不同的 Metrics 的实现或者对接外部 Metrics 采集组件。
Dlink 通过 JobManager 对 Flink 作业进行状态监控,反馈异常的指标,辅助用户对作业进行口径或者参数优化。
### 报警推送
Dlink 通过 SPI 来扩展报警方式,将先实现钉钉的报警插件,后续企业号、邮箱等留给社区贡献开发。
Dlink 通过自定义报警规则及内容模板来触发报警或者推送报表,使用户第一时间知晓生产环境的异常状况以及其自定义的报表及推送信息如批流任务启停、依赖任务启停、集群操作推送等。
### 依赖调度
Dlink 定位是批流一体平台,不排除用户存在大量的复杂依赖关系的调度需求。
Dlink 提供依赖调度引擎,通过全局的数据链路关系自动获得任务的 DAG 图,根据指定的依赖调度作业参数手动或定时拉起守护线程 Daemon,Daemon 通过子调度组、 DAG 及节点权重、并行度、黑名单、超时时间、异常处理策略、任务历史执行信息、运行监控反馈的资源信息等来通过 SDJF(短依赖作业优先)算法进行大量依赖作业的动态调度编排,合理充分利用资源的同时缩短整个数仓的数据同步周期。Daemon 触发报警规则或异常时会进行报警,执行完所有的任务后会触发推送,并根据后驱依赖调度组配置进行递归调度。
在容错方面,Daemon 可以在异常任务处跳过当前节点或后续影响节点,也可触发停止并报警。当 Daemon 因异常原因停止后,由于其自身状态信息根据归档周期进行持久化存储,所以可以从最新的快照恢复 Daemon ,从而恢复后续任务的正常执行。当然可以对Daemon进行暂停、或停止操作,进行作业维护,维护成功后可以恢复执行。
以上的特性将使用户无需梳理复杂的依赖关系或者手动配置 DAG,也不需要估测调度间隔或者长期观察任务执行情况进行手动优化。由于 Daemon 依据任务历史执行数据作为调度影响因子,随着时间的推移会自动编排出最合适的并行调度计划(类似于机器学习)。此外由于子依赖调度组的设计可以在执行前合并子组的 DAG,使用户可以将大量任务以业务主题划分调度组,更有利于作业的维护,而其后驱依赖调度组的设计则可以以时序的方式隔离两个调度组,实现隔离 DAG 调度。
### 作业自动恢复
Dlink 批流一体的发展趋势必然会出现越来越多的流或批流一体任务。
而其守护线程 Daemon 分为两者,一种是上文说到的依赖调度守护线程,另一种则是实时任务守护线程。在实时任务守护线程下,Daemon 支持根据 savepoint 周期配置项来周期性地进行 savepoint 的触发,满足在任务异常失败后自动从 savepoint 恢复的机制,checkpoint 则依赖 Flink 自身的恢复能力自动从 checkpoint 恢复任务,当然也可以通过 RocksDB 管理 checkpoint 并存储至文件系统,Daemon 在任务异常失败后自动从 checkpoint 恢复。可见两种恢复机制的成本不一样,根据具体需求选择。周期性的备份状态自然会造成大量的冗余文件,可以配置保留的备份次数,自动清除过期状态。当作业超过失败重启次数后,Daemon 会自动报警;当满足推送周期可自动推送任务的运行信息。
### 守护进程
在RPC版本发布前,仍为守护线程,上文谈到了 Daemon 的两种线程分类,此外还一种守护进程,位于 RPC 版本。
在 RPC 版本中,上文所说的两种 Daemon 主线程会在运行期间周期地及手动触发地发送自身信息给 Daemon 进程,当 Daemon 在预计的延时内未接受到 Daemon 主线程的信息,会认为该线程异常中断,便远程通信使其自动从快照恢复。
守护进程 Daemon 还管理作业执行等线程,Dlink 的 FlinkSQL 作业提交看似简单,但其后台进行了复杂的多步处理如:准备执行环境、解析增强语法、组装语句集、解析翻译优化得到 JobGraph、获取 yarnClient、提交JobGraph、等待响应。提交线程将其进度以及需要持久化到数据库的信息发送给 Daemon,Daemon 负责管理以及委托持久化。当然也可以通过 Daemon 来中断提交线程。
此外 Daemon 也负责 dlink-client 、dlink-server 与 dlink-admin三个进程的实例管理,配合 dubbo 来治理服务及扩展新服务。
### 库表数据同步
Dlink 将提供基于 Flink 引擎的可视化构建库表数据同步任务的功能。
离线方面,Dlink 通过界面配置库表同步的作业配置,作业启动后,Dlink 从配置中获取数据源信息及库表选择信息等其他配置项,自动构建 Flink 批作业并交由 Daemon 依赖调度托管大量任务的有序稳定执行。
实时方面,Dlink 则根据配置信息自动构建 FlinkCDC 无锁作业,并交由 Daemon 实时任务守护进行流任务托管。
批流一体方面,Dlink 则将由上述两个 Daemon 协作完成,后者启动流任务后,前者通过批任务完成历史数据合并,或直接使用 FlinkCDC自带的批流一体读取来实现同步,具体按需求选择。
以上数据同步任务的定义将提供 SQL 语句 create datasync 来实现一句 SQL 定义任务的效果。
### 企业级功能
Dlink 将提供轻量的企业管理能力,如多租户、项目、角色、权限、审计。
此外 Dlink 将重新设计后台架构,使其更加解耦且插件化,基于服务的治理来满足大型场景的建设需求。
### 多版本 Flink-Client Server
在单机版本中,dlink-client 的执行环境所需要的依赖均从项目的 lib 和 plugins 目录下加载,一个 Dlink 实例只能部署一个版本的 Flink 环境。
在 RPC 版本中,将通过服务治理来同时支持不同版本的 dlink-client 任务提交。dlink-admin 管理 Flink-Client Server,通知 dlink-server 来启动 dlink-client,dlink-client 可以根据指定的依赖启动对应的 Flink Client环境并久驻,也可以根据环境变量来作为插件部署到 Flink 集群直接启动对应的 Flink Client环境并久驻。
Dlink 的任务在提交时,会根据指定集群实例或集群配置来获取对应版本号或者指定的 Flink-Client Server 来选择对应的 Flink-Client Server 进行任务的提交等其他操作。
### Flink StreamGraph 和 JobGraph 的可视化修改
Dlink 将提供 StreamGraph 和 JobGraph 两种状态下的任务计划可视化修改功能,如修改 StreamGraph 的算子并行度、自动追加 Sink 等。还支持将 Jar 提交任务在 dlink-client 转换成 StreamGraph 和 JobGraph ,然后进行分析、修改及统一提交,这样 Jar 任务也将可以得到血缘分析,进而可以被合并到数据链路图,被依赖调度一起托管。
### Flink 自动化动态扩缩容
Flink 流任务的动态扩缩容是个降本增效的好措施,Dlink 将提供自动化的自动动态扩缩容来应对 Reactive Mode 和非 Reactive Mode 两种场景。
首先 Dlink 会通过运行监控接口获取流作业的时序资源占用数据,以天级别或周级别甚至月级别来计算和评估资源的占用模型。
对于 Reactive Mode ,即 Flink 1.13 之后的 Standalone Application Mode 模式下,可通过 Kubernetes Horizontal Pod Autoscaler 进行自动扩缩容。
而对于非 Reactive Mode ,Dlink 将通过 Daemon 依据资源预测模型进行周期性的作业调整并行度等其他优化配置和重启作业来完成较高成本的自动化动态扩缩容。
### FlinkSQL OLAP & BI
Dlink 将投入更多精力来优化基于 FlinkSQL 来进行 OLAP 查询和查询结果BI化,使其可以通过柱状图、折线图、饼图等直观地展现出数据特征。
在 FlinkSQL OLAP 方面,一是,Dlink 将优化 Session 模式的作业提交效率与作业配置,逐步减少整个查询请求的响应时间;二是,Dlink 将自动装载指定数据源的元数据到对应会话中,使其 SQL 开发只需要关注 select 的口径,无需再次编写 set 和 create。
在 BI 方面,Dlink 将 FlinkSQL 及其他查询引擎如 jdbc 的查询结果进行自动化的转换,将表格数据转换为柱状图、折线图、饼图等其他图形所需要的数据格式,并进行渲染,便于数据科学家更值观地分析数据。
### FlinkSQL 翻译及生成
Dlink 将提供 FlinkSQL 翻译功能,该功能可以将传统 SQL 如 Mysql、Oracle 等 DDL 、DQL 语句翻译为 FlinkSQL 语句,便于作业迁移和降低门槛。通过SPI来扩展其他 Dialect 的转换。
Dlink也将提供 FlinkSQL 生成功能,通过元数据来生成 DDL,自动对齐 insert into select 等,使 FlinkSQL 开发更加便捷。
### Dlink-Jdbc
Dlink 将提供自身 jdbc 组件来便捷基于 Dlink 引擎的 FlinkSQL 任务提交。第三方系统(业务系统、数据库工具、调度平台、BI平台等等使用 jdbc 的系统)通过引入 dlink-jdbc.jar,如同开发 Mysql 的 jdbc 应用操作来执行 FlinkSQL,与 dlink-server 进行通信,dlink-server 根据 url 参数配置在对应版本的 dlink-client 上执行其 FlinkSQL。
### FlinkSQL Studio 交互优化
Dlink 目前提供了简陋的 Studio ,虽然可以满足基本的开发需求,但 Studio 其他功能同样对开发调试具有重大影响,如项目导入导出、文件导入导出、开发Demo、配置模板、执行日志、SQL 对比等功能。
Dlink 除了将逐步完成以上功能外,还要进行交互上的优化,使其更加接近专业的 IDE,如风格切换、面板调整、定时保存、History对比和恢复等。
### 实践分享
Dlink 将投入更多精力围绕业界主流的存储架构、平台等进行应用实践分享。
Dlink 通过用户在生产上对接各种生态的实践进行总结和整理,最终在公众号、官网中分享各实践主题下的用户经验与操作说明,如 FlinkCDC、Hive、ClickHouse、Doris、Hudi、Iceberg 等基于 Dlink 快速落地的经验。
Dlink 也将积极对接其他开源平台如 Linkis、AirFlow、DolphinScheduler、DataSphere Studio 等,使其可以为各平台在 Flink 支持上提供更多一种的选择,也将实现对应的批量作业导入功能,使其可以低成本地迁移作业。
## 敬请期待
\ No newline at end of file
## 敬请期待
\ No newline at end of file
## 简介 ## 简介
实时即未来,Dlink 为 Apache Flink 而生,让 Flink SQL 纵享丝滑 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑,并致力于实时计算平台建设
Dlink 是一个交互式的 FlinkSQL Studio,可以在线开发、补全、校验 、执行、预览 FlinkSQL,支持 Flink 官方所有语法及其增强语法,并且可以同时对多 Flink 集群实例进行提交、停止、SavePoint 等运维操作,如同您的 IntelliJ IDEA For Flink SQL Dinky 架构于 Apache Flink,增强 Flink 的应用与体验,探索流式数仓。即站在巨人肩膀上创新与实践,Dinky 在未来批流一体的发展趋势下潜力无限
需要注意的是:Dlink 更专注于 FlinkSQL 的应用,而不是 DataStream。在开发过程中您不会看到任何一句 java、scala 或者 python。所以,它的目标是基于 100% FlinkSQL 来实现批流一体的实时计算平台。 最后,Dinky 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
值得惊喜的是:Dlink 的实现基于 Apache Flink 源码二次开发,支持其绝大多数特性与机制,而交互更加贴近 Flink 的功能与体验,并且紧随官方社区发展。即站在巨人肩膀上开发与创新,Dlink 在未来批流一体的发展趋势下潜力无限。
最后,Dlink 的发展皆归功于 Apache Flink 等其他优秀的开源项目的指导与成果。
## 原理 ## 原理
![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/040/Dlink_principle.png) ![](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/dinky_principle.png)
### JobManager ### JobManager
JobManager 作为 Dlink 的作业管理的统一入口,负责 Flink 的各种作业执行方式及其他功能的调度。 JobManager 作为 Dinky 的作业管理的统一入口,负责 Flink 的各种作业执行方式及其他功能的调度。
### Executor ### Executor
Executor 是 Dlink 定制的 FlinkSQL 执行器,来模拟真实的 Flink 执行环境,负责 FlinkSQL 的 Catalog 管理、UDF管理、片段管理、配置管理、语句集管理、语法校验、逻辑验证、计划优化、生成 JobGraph、本地执行、远程提交、SELECT 及 SHOW 预览等核心功能。 Executor 是 Dinky 定制的 FlinkSQL 执行器,来模拟真实的 Flink 执行环境,负责 FlinkSQL 的 Catalog 管理、UDF管理、片段管理、配置管理、语句集管理、语法校验、逻辑验证、计划优化、生成 JobGraph、本地执行、远程提交、SELECT 及 SHOW 预览等核心功能。
### Interceptor ### Interceptor
Interceptor 是 Dlink 的 Flink 执行拦截器,负责对其进行片段解析、UDF注册、SET 和 AGGTABLE 等增强语法解析。 Interceptor 是 Dinky 的 Flink 执行拦截器,负责对其进行片段解析、UDF注册、SET 和 AGGTABLE 等增强语法解析。
### Gateway ### Gateway
Gateway 并非是开源项目 flink-sql-gateway,而是 Dlink 自己定制的 Gateway,负责进行基于 Yarn 环境的任务提交与管理,主要有Yarn-Per-Job 和 Yarn-Application 的 FlinkSQL 提交、停止、SavePoint 以及配置测试,而 User Jar 目前只开放了 Yarn-Application 的提交。 Gateway 并非是开源项目 flink-sql-gateway,而是 Dinky 自己定制的 Gateway,负责进行基于 Yarn 环境的任务提交与管理,主要有Yarn-Per-Job 和 Yarn-Application 的 FlinkSQL 提交、停止、SavePoint 以及配置测试,而 User Jar 目前只开放了 Yarn-Application 的提交。
### Flink SDK ### Flink SDK
Dlink 主要通过调用 flink-client 和 flink-table 模块进行二次开发。 Dinky 主要通过调用 flink-client 和 flink-table 模块进行二次开发。
### Yarn SDK ### Yarn SDK
Dlink 通过调用 flink-yarn 模块进行二次开发。 Dinky 通过调用 flink-yarn 模块进行二次开发。
### Flink API ### Flink API
Dlink 也支持通过调用 JobManager 的 RestAPI 对任务进行管理等操作,系统配置可以控制开启和停用。 Dinky 也支持通过调用 JobManager 的 RestAPI 对任务进行管理等操作,系统配置可以控制开启和停用。
### Yarn-Session ### Yarn-Session
Dlink 通过已注册的 Flink Session 集群实例可以对 Standalone 和 Yarn-Session 两种集群进行 FlinkSQL 的提交、Catalog 的交互式管理以及对 SELECT 和 SHOW 等语句的执行结果预览。 Dinky 通过已注册的 Flink Session 集群实例可以对 Standalone 和 Yarn-Session 两种集群进行 FlinkSQL 的提交、Catalog 的交互式管理以及对 SELECT 和 SHOW 等语句的执行结果预览。
### Yarn-Per-Job ### Yarn-Per-Job
Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例,然后将本地解析生产的 JobGraph 与 Configuration 提交至 Yarn 来创建 Flink-Per-Job 应用。 Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例,然后将本地解析生产的 JobGraph 与 Configuration 提交至 Yarn 来创建 Flink-Per-Job 应用。
### Yarn-Application ### Yarn-Application
Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对于 User Jar,将 Jar 相关配置与 Configuration 提交至 Yarn 来创建 Flink-Application 应用;对于 Flink SQL,Dlink 则将作业 ID 及数据库连接配置作为 Main 入参和 dlink-app.jar 以及 Configuration 提交至 Yarn 来创建 Flink-Application 应用。 Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对于 User Jar,将 Jar 相关配置与 Configuration 提交至 Yarn 来创建 Flink-Application 应用;对于 Flink SQL,Dinky 则将作业 ID 及数据库连接配置作为 Main 入参和 dlink-app.jar 以及 Configuration 提交至 Yarn 来创建 Flink-Application 应用。
## 功能 ## 功能
注意:以下功能均为对应版本已实现的功能,实测可用。 注意:以下功能均为对应版本已实现的功能,实测可用。
| 应用 | 方向 | 功能 | 进展 | | 应用 | 方向 | 功能 | 进展 |
| :------: | :------------: | ------------------------------------------------------------ | :---: | |:-------:|:----------:|-------------------------------------------|:-----:|
| 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 | | 开发中心 | FlinkSQL | 支持 sql-client 所有语法 | 0.4.0 |
| | | 支持 Flink 所有 Configuration | 0.4.0 | | | | 支持 Flink 所有 Configuration | 0.4.0 |
| | | 支持 Flink 所有 Connector | 0.4.0 | | | | 支持 Flink 所有 Connector | 0.4.0 |
...@@ -67,6 +63,7 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -67,6 +63,7 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 支持 INSERT 语句集 | 0.4.0 | | | | 支持 INSERT 语句集 | 0.4.0 |
| | | 新增 SQL 片段语法 | 0.4.0 | | | | 新增 SQL 片段语法 | 0.4.0 |
| | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 | | | | 新增 AGGTABLE 表值聚合语法及 UDATF 支持 | 0.4.0 |
| | | 新增 FlinkSQLEnv 执行环境复用 | 0.5.0 |
| | | 新增 Flink Catalog 交互查询 | 0.4.0 | | | | 新增 Flink Catalog 交互查询 | 0.4.0 |
| | | 新增 执行环境的共享与私有会话机制 | 0.4.0 | | | | 新增 执行环境的共享与私有会话机制 | 0.4.0 |
| | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 | | | | 新增 多种方言的作业目录管理(FlinkSQL、SQL、Java) | 0.5.0 |
...@@ -79,15 +76,20 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -79,15 +76,20 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 新增 关键字高亮与代码缩略图 | 0.4.0 | | | | 新增 关键字高亮与代码缩略图 | 0.4.0 |
| | | 新增 选中片段执行 | 0.4.0 | | | | 新增 选中片段执行 | 0.4.0 |
| | | 新增 布局拖拽 | 0.4.0 | | | | 新增 布局拖拽 | 0.4.0 |
| | | 新增 SQL导出 | 0.5.0 |
| | | 支持 local 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 local 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 standalone 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 standalone 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn session 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 yarn session 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn per-job 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 yarn per-job 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 yarn application 模式下 FlinkSQL 提交 | 0.4.0 | | | | 支持 yarn application 模式下 FlinkSQL 提交 | 0.4.0 |
| | | 支持 kubernetes session 模式下 FlinkSQL 提交 | 0.5.0 |
| | | 支持 kubernetes application 模式下 FlinkSQL 提交 | 0.5.0 |
| | Flink 作业 | 支持 yarn application 模式下 Jar 提交 | 0.4.0 | | | Flink 作业 | 支持 yarn application 模式下 Jar 提交 | 0.4.0 |
| | | 支持 k8s application 模式下 Jar 提交 | 0.5.0 |
| | | 支持 作业 Cancel | 0.4.0 | | | | 支持 作业 Cancel | 0.4.0 |
| | | 支持 作业 SavePoint 的 Cancel、Stop、Trigger | 0.4.0 | | | | 支持 作业 SavePoint 的 Cancel、Stop、Trigger | 0.4.0 |
| | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 | | | | 新增 作业自动从 SavePoint 恢复机制(包含最近、最早、指定一次) | 0.4.0 |
| | | 新增 UDF java方言代码的开发 | 0.5.0 |
| | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 | | | Flink 集群 | 支持 查看已注册集群的作业列表与运维 | 0.4.0 |
| | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 | | | | 新增 自动注册 Yarn 创建的集群 | 0.4.0 |
| | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 | | | SQL | 新增 外部数据源的 SQL 校验 | 0.5.0 |
...@@ -104,19 +106,28 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -104,19 +106,28 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 新增 Oracle 数据源注册及测试 | 0.4.0 | | | | 新增 Oracle 数据源注册及测试 | 0.4.0 |
| | | 新增 postgreSql 数据源注册及测试 | 0.4.0 | | | | 新增 postgreSql 数据源注册及测试 | 0.4.0 |
| | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 | | | | 新增 ClickHouse 数据源注册及测试 | 0.4.0 |
| 关于 | 关于 Dlink | 版本更新记录 | 0.4.0 | | OpenApi | 调度 | 新增 submitTask 调度接口 | 0.5.0 |
| | FlinkSQL | 新增 executeSql 提交接口 | 0.5.0 |
| | | 新增 explainSql 验证接口 | 0.5.0 |
| | | 新增 getJobPlan 计划接口 | 0.5.0 |
| | | 新增 getStreamGraph 计划接口 | 0.5.0 |
| | | 新增 getJobData 数据接口 | 0.5.0 |
| | Flink | 新增 executeJar 提交接口 | 0.5.0 |
| | | 新增 cancel 停止接口 | 0.5.0 |
| | | 新增 savepoint 触发接口 | 0.5.0 |
| 关于 | 关于 Dinky | 版本更新记录 | 0.4.0 |
## 近期计划 ## 近期计划
1.支持同时托管多版本的Flink实例 1.任务生命周期管理
2.支持K8S多种运行模式 2.作业监控及运维
3.支持多种任务调度框架接口 3.流作业自动恢复
4.支持UDF动态加载 4.作业日志查看
5.完善Studio交互功能 5.钉钉报警和推送
## 致谢 ## 致谢
...@@ -134,24 +145,16 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对 ...@@ -134,24 +145,16 @@ Dlink 通过已注册的集群配置来获取对应的 YarnClient 实例。对
此外,感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助 此外,感谢 [JetBrains](https://www.jetbrains.com/?from=dlink) 提供的免费开源 License 赞助
[![JetBrains](https://gitee.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink) [![JetBrains](https://github.com/DataLinkDC/dlink/raw/main/dlink-doc/images/main/jetbrains.svg)](https://www.jetbrains.com/?from=dlink)
## 交流与贡献 ## 交流与贡献
欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。 欢迎您加入社区交流分享,也欢迎您为社区贡献自己的力量。
在此有意向参与代码及文档贡献或积极测试者可以私信我加入 Dlink Contributors 群聊进一步了解。
Dlink 将正式开始社区积极的发展阶段,社区的主旨是开放、交流、创新、共赢,Dlink 的核心理念是创新,即不受思想约束地勇于尝试。Dlink 本就是一个创新型的解决方案,而不是模仿已有产品的思路按部就班,一味模仿对于社区及所有人的发展意义并不大,积极创新才可能独树一帜,并为大家带来更大的利益。无论您是否已经建成了自己的 FlinkSQL 开发运维平台,相信它一定会在创新的方向上为您带来些许启发。
在此非常感谢大家的支持~ 在此非常感谢大家的支持~
QQ社区群:**543709668**,申请备注 “ Dlink ”,不写不批 QQ社区群:**543709668**,申请备注 “ Dinky ”,不写不批
微信社区群(推荐,大佬云集):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dlink ”,不写不批 微信社区群(推荐):添加微信号 wenmo_ai 邀请进群,申请备注 “ Dinky + 企业名 + 职位”,不写不批
公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg) 公众号(最新消息获取建议关注):[DataLink数据中台](https://mmbiz.qpic.cn/mmbiz_jpg/dyicwnSlTFTp6w4PuJruFaLV6uShCJDkzqwtnbQJrQ90yKDuuIC8tyMU5DK69XZibibx7EPPBRQ3ic81se5UQYs21g/0?wx_fmt=jpeg)
\ No newline at end of file
163 邮箱:aiwenmo@163.com
QQ 邮箱:809097465@qq.com
\ No newline at end of file
### 任务生命周期管理
FlinkSQL 生命周期:创建、开发、调试、发布、上线、注销。
Dlink 的 FlinkSQL Studio 负责 FlinkSQL 的开发和调试,在确定最终的 SQL 口径及任务配置后,可通过任务发布功能自动地在运维中心注册测试或生产环境下的最终任务,同时具备版本的管理,将开发与运维分离,保证生产环境的稳定性。
在运维中心可以上线已发布的任务,或者将已上线的任务进行下线,然后可以通过维护功能将任务重新进入开发和调试的进度。
最后,可以在运维中心注销已经不需要或者错误的任务,将被彻底删除。
### 元数据管理
Dlink 目前支持对外部元数据的采集功能,将建设统一的元数据管理,使其可以不需要依赖第三方元数据平台,独自进行更加适应实时数仓的元数据消费操作,统一规范拥有大量数据表、复杂关系的建设需求。
元数据主要包含采集、构建、管理、同步功能。
采集:Dlink 通过 SPI 来扩展实现更多数据源的元数据采集功能,使其可以轻松对接第三方存储库、元数据平台等,甚至可以将消息队列的元数据采集进行扩展,以便于洞悉实时数仓的流数据结构。
构建:Dlink 提供构建逻辑表、字段、关系的能力,解耦外部存储层。通过词根维护来规范命名定义。
管理:Dlink 支持对逻辑表和物理表的结构的可视化管理能力,可添加物理表不支持的信息如标签、分类、注释、权限等。
同步:Dlink 支持自动或手动地将元数据变动同步至对应数据源,或根据逻辑表在数据源上创建物理表。
### 血缘和影响分析
Dlink 目前具备任务表级的 FlinkSQL 血缘分析,通过 FlinkSQL 解析并构造后的 StreamGraph 来获取血缘关系,规避了冗余 Create Table 等的影响,同时支持多 Create View 的语句,使 FlinkSQL 结构更加清晰明了易于维护。
FlinkSQL 任务被发布到运维中心时,会自动生成血缘关系,与元数据管理的元数据信息做对应,进而形成全局的数据链路关系,便同时得到了影响分析。拥有了血缘和影响分析,便更加方便的管理和优化所有的数据任务。
处在 Studio 开发环节的任务,则可以根据已发布的任务构成的数据链路关系来获取自身的全局血缘及影响分析。
单从血缘分析来说,含有表级、字段级、记录级。Dlink 将完善字段级血缘并开放,记录级则是未来探索的一个方向,记录级的血缘将会更直观地展现出数据的治理过程,便于排查数据内容问题。
### 集群运维
Dlink 目前的 FlinkSQL 敏捷需要提取部署好外部的环境才能使用,而该过程目前是通过人工手动进行,需要进行复杂的运维操作,此外还要解决因依赖导致的各种问题。
Dlink 将对集群环境的搭建和启停等操作进行自动化地支持。
首先配置免密通信集群的节点信息,将部署资源提前放到 Dlink 目录下或通过镜像地址进行下载,通过集群模板的配置来分发和部署所使用的 Flink 资源及其他资源,若为 K8S 环境则打包镜像并装载至容器。资源到位后可直接通过 Dlink 启动对应集群如 Standalone 、Yarn-Session 和 K8S-Session等。做到集群部署运维托管 Dlink 。
### 运行监控
Dlink 需要对集群资源及 Flink 作业进行时序监控,支持外部对接 Prometheus 消费定制化的时序数据。
Dlink 通过 SPI 的方式来实现自定义监控接口实现,使其可以插件化地管理不同的中间件的不同的 Metrics 的实现或者对接外部 Metrics 采集组件。
Dlink 通过 JobManager 对 Flink 作业进行状态监控,反馈异常的指标,辅助用户对作业进行口径或者参数优化。
### 报警推送
Dlink 通过 SPI 来扩展报警方式,将先实现钉钉的报警插件,后续企业号、邮箱等留给社区贡献开发。
Dlink 通过自定义报警规则及内容模板来触发报警或者推送报表,使用户第一时间知晓生产环境的异常状况以及其自定义的报表及推送信息如批流任务启停、依赖任务启停、集群操作推送等。
### 依赖调度
Dlink 定位是批流一体平台,不排除用户存在大量的复杂依赖关系的调度需求。
Dlink 提供依赖调度引擎,通过全局的数据链路关系自动获得任务的 DAG 图,根据指定的依赖调度作业参数手动或定时拉起守护线程 Daemon,Daemon 通过子调度组、 DAG 及节点权重、并行度、黑名单、超时时间、异常处理策略、任务历史执行信息、运行监控反馈的资源信息等来通过 SDJF(短依赖作业优先)算法进行大量依赖作业的动态调度编排,合理充分利用资源的同时缩短整个数仓的数据同步周期。Daemon 触发报警规则或异常时会进行报警,执行完所有的任务后会触发推送,并根据后驱依赖调度组配置进行递归调度。
在容错方面,Daemon 可以在异常任务处跳过当前节点或后续影响节点,也可触发停止并报警。当 Daemon 因异常原因停止后,由于其自身状态信息根据归档周期进行持久化存储,所以可以从最新的快照恢复 Daemon ,从而恢复后续任务的正常执行。当然可以对Daemon进行暂停、或停止操作,进行作业维护,维护成功后可以恢复执行。
以上的特性将使用户无需梳理复杂的依赖关系或者手动配置 DAG,也不需要估测调度间隔或者长期观察任务执行情况进行手动优化。由于 Daemon 依据任务历史执行数据作为调度影响因子,随着时间的推移会自动编排出最合适的并行调度计划(类似于机器学习)。此外由于子依赖调度组的设计可以在执行前合并子组的 DAG,使用户可以将大量任务以业务主题划分调度组,更有利于作业的维护,而其后驱依赖调度组的设计则可以以时序的方式隔离两个调度组,实现隔离 DAG 调度。
### 作业自动恢复
Dlink 批流一体的发展趋势必然会出现越来越多的流或批流一体任务。
而其守护线程 Daemon 分为两者,一种是上文说到的依赖调度守护线程,另一种则是实时任务守护线程。在实时任务守护线程下,Daemon 支持根据 savepoint 周期配置项来周期性地进行 savepoint 的触发,满足在任务异常失败后自动从 savepoint 恢复的机制,checkpoint 则依赖 Flink 自身的恢复能力自动从 checkpoint 恢复任务,当然也可以通过 RocksDB 管理 checkpoint 并存储至文件系统,Daemon 在任务异常失败后自动从 checkpoint 恢复。可见两种恢复机制的成本不一样,根据具体需求选择。周期性的备份状态自然会造成大量的冗余文件,可以配置保留的备份次数,自动清除过期状态。当作业超过失败重启次数后,Daemon 会自动报警;当满足推送周期可自动推送任务的运行信息。
### 守护进程
在RPC版本发布前,仍为守护线程,上文谈到了 Daemon 的两种线程分类,此外还一种守护进程,位于 RPC 版本。
在 RPC 版本中,上文所说的两种 Daemon 主线程会在运行期间周期地及手动触发地发送自身信息给 Daemon 进程,当 Daemon 在预计的延时内未接受到 Daemon 主线程的信息,会认为该线程异常中断,便远程通信使其自动从快照恢复。
守护进程 Daemon 还管理作业执行等线程,Dlink 的 FlinkSQL 作业提交看似简单,但其后台进行了复杂的多步处理如:准备执行环境、解析增强语法、组装语句集、解析翻译优化得到 JobGraph、获取 yarnClient、提交JobGraph、等待响应。提交线程将其进度以及需要持久化到数据库的信息发送给 Daemon,Daemon 负责管理以及委托持久化。当然也可以通过 Daemon 来中断提交线程。
此外 Daemon 也负责 dlink-client 、dlink-server 与 dlink-admin三个进程的实例管理,配合 dubbo 来治理服务及扩展新服务。
### 库表数据同步
Dlink 将提供基于 Flink 引擎的可视化构建库表数据同步任务的功能。
离线方面,Dlink 通过界面配置库表同步的作业配置,作业启动后,Dlink 从配置中获取数据源信息及库表选择信息等其他配置项,自动构建 Flink 批作业并交由 Daemon 依赖调度托管大量任务的有序稳定执行。
实时方面,Dlink 则根据配置信息自动构建 FlinkCDC 无锁作业,并交由 Daemon 实时任务守护进行流任务托管。
批流一体方面,Dlink 则将由上述两个 Daemon 协作完成,后者启动流任务后,前者通过批任务完成历史数据合并,或直接使用 FlinkCDC自带的批流一体读取来实现同步,具体按需求选择。
以上数据同步任务的定义将提供 SQL 语句 create datasync 来实现一句 SQL 定义任务的效果。
### 企业级功能
Dlink 将提供轻量的企业管理能力,如多租户、项目、角色、权限、审计。
此外 Dlink 将重新设计后台架构,使其更加解耦且插件化,基于服务的治理来满足大型场景的建设需求。
### 多版本 Flink-Client Server
在单机版本中,dlink-client 的执行环境所需要的依赖均从项目的 lib 和 plugins 目录下加载,一个 Dlink 实例只能部署一个版本的 Flink 环境。
在 RPC 版本中,将通过服务治理来同时支持不同版本的 dlink-client 任务提交。dlink-admin 管理 Flink-Client Server,通知 dlink-server 来启动 dlink-client,dlink-client 可以根据指定的依赖启动对应的 Flink Client环境并久驻,也可以根据环境变量来作为插件部署到 Flink 集群直接启动对应的 Flink Client环境并久驻。
Dlink 的任务在提交时,会根据指定集群实例或集群配置来获取对应版本号或者指定的 Flink-Client Server 来选择对应的 Flink-Client Server 进行任务的提交等其他操作。
### Flink StreamGraph 和 JobGraph 的可视化修改
Dlink 将提供 StreamGraph 和 JobGraph 两种状态下的任务计划可视化修改功能,如修改 StreamGraph 的算子并行度、自动追加 Sink 等。还支持将 Jar 提交任务在 dlink-client 转换成 StreamGraph 和 JobGraph ,然后进行分析、修改及统一提交,这样 Jar 任务也将可以得到血缘分析,进而可以被合并到数据链路图,被依赖调度一起托管。
### Flink 自动化动态扩缩容
Flink 流任务的动态扩缩容是个降本增效的好措施,Dlink 将提供自动化的自动动态扩缩容来应对 Reactive Mode 和非 Reactive Mode 两种场景。
首先 Dlink 会通过运行监控接口获取流作业的时序资源占用数据,以天级别或周级别甚至月级别来计算和评估资源的占用模型。
对于 Reactive Mode ,即 Flink 1.13 之后的 Standalone Application Mode 模式下,可通过 Kubernetes Horizontal Pod Autoscaler 进行自动扩缩容。
而对于非 Reactive Mode ,Dlink 将通过 Daemon 依据资源预测模型进行周期性的作业调整并行度等其他优化配置和重启作业来完成较高成本的自动化动态扩缩容。
### FlinkSQL OLAP & BI
Dlink 将投入更多精力来优化基于 FlinkSQL 来进行 OLAP 查询和查询结果BI化,使其可以通过柱状图、折线图、饼图等直观地展现出数据特征。
在 FlinkSQL OLAP 方面,一是,Dlink 将优化 Session 模式的作业提交效率与作业配置,逐步减少整个查询请求的响应时间;二是,Dlink 将自动装载指定数据源的元数据到对应会话中,使其 SQL 开发只需要关注 select 的口径,无需再次编写 set 和 create。
在 BI 方面,Dlink 将 FlinkSQL 及其他查询引擎如 jdbc 的查询结果进行自动化的转换,将表格数据转换为柱状图、折线图、饼图等其他图形所需要的数据格式,并进行渲染,便于数据科学家更值观地分析数据。
### FlinkSQL 翻译及生成
Dlink 将提供 FlinkSQL 翻译功能,该功能可以将传统 SQL 如 Mysql、Oracle 等 DDL 、DQL 语句翻译为 FlinkSQL 语句,便于作业迁移和降低门槛。通过SPI来扩展其他 Dialect 的转换。
Dlink也将提供 FlinkSQL 生成功能,通过元数据来生成 DDL,自动对齐 insert into select 等,使 FlinkSQL 开发更加便捷。
### Dlink-Jdbc
Dlink 将提供自身 jdbc 组件来便捷基于 Dlink 引擎的 FlinkSQL 任务提交。第三方系统(业务系统、数据库工具、调度平台、BI平台等等使用 jdbc 的系统)通过引入 dlink-jdbc.jar,如同开发 Mysql 的 jdbc 应用操作来执行 FlinkSQL,与 dlink-server 进行通信,dlink-server 根据 url 参数配置在对应版本的 dlink-client 上执行其 FlinkSQL。
### FlinkSQL Studio 交互优化
Dlink 目前提供了简陋的 Studio ,虽然可以满足基本的开发需求,但 Studio 其他功能同样对开发调试具有重大影响,如项目导入导出、文件导入导出、开发Demo、配置模板、执行日志、SQL 对比等功能。
Dlink 除了将逐步完成以上功能外,还要进行交互上的优化,使其更加接近专业的 IDE,如风格切换、面板调整、定时保存、History对比和恢复等。
### 实践分享
Dlink 将投入更多精力围绕业界主流的存储架构、平台等进行应用实践分享。
Dlink 通过用户在生产上对接各种生态的实践进行总结和整理,最终在公众号、官网中分享各实践主题下的用户经验与操作说明,如 FlinkCDC、Hive、ClickHouse、Doris、Hudi、Iceberg 等基于 Dlink 快速落地的经验。
Dlink 也将积极对接其他开源平台如 Linkis、AirFlow、DolphinScheduler、DataSphere Studio 等,使其可以为各平台在 Flink 支持上提供更多一种的选择,也将实现对应的批量作业导入功能,使其可以低成本地迁移作业。
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description"> <meta name="description" content="Description">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<link rel="icon" type="image/x-ico" href="./_media/dlink.png" /> <link rel="icon" type="image/x-ico" href="./_media/dinky.png" />
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css"> <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
</head> </head>
<body> <body>
<div id="app">加载中</div> <div id="app">加载中</div>
<script> <script>
window.$docsify = { window.$docsify = {
name: 'Dlink', name: 'Dinky',
nameLink: { nameLink: {
'/': '/', '/': '/',
'/en-US/': '/en-US/', '/en-US/': '/en-US/',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment