Commit 4723612ff1d1f707d0f273d127b243cce288a880

Authored by ly525
1 parent 7f1d0456

add landing-page

Showing 57 changed files with 3059 additions and 0 deletions

Too many changes to show.

To preserve performance only 57 of 58 files are displayed.

front-end/landing-page/.umirc.js 0 → 100644
  1 +export default {
  2 + disableCSSModules: true,
  3 + plugins: [
  4 + [
  5 + 'umi-plugin-react', {
  6 + antd: true,
  7 + }
  8 + ],
  9 + ]
  10 +}
0 11 \ No newline at end of file
... ...
front-end/landing-page/README.md 0 → 100644
  1 +## The Landing Page for LubanH5
  2 +
  3 +## 鲁班H5 首页
0 4 \ No newline at end of file
... ...
front-end/landing-page/deploy.sh 0 → 100755
  1 +scp -r dist/* centos@aliyun:/home/centos/codebase/luban/luban-h5-dist/landing-page
0 2 \ No newline at end of file
... ...
front-end/landing-page/package.json 0 → 100644
  1 +{
  2 + "name": "landing-page",
  3 + "version": "1.0.0",
  4 + "main": "index.js",
  5 + "license": "MIT",
  6 + "dependencies": {
  7 + "antd": "^3.23.6",
  8 + "enquire-js": "^0.2.1",
  9 + "qrcode.react": "^0.9.3",
  10 + "rc-banner-anim": "^2.4.2",
  11 + "rc-queue-anim": "^1.8.2",
  12 + "rc-scroll-anim": "^2.6.2",
  13 + "rc-tween-one": "^2.6.5",
  14 + "react": "^16.10.2",
  15 + "react-document-title": "^2.0.3",
  16 + "react-dom": "^16.10.2",
  17 + "umi-plugin-react": "^1.12.3"
  18 + },
  19 + "devDependencies": {
  20 + "atool-build": "^1.0.8",
  21 + "umi": "^2.10.2"
  22 + },
  23 + "scripts": {
  24 + "dev": "umi dev",
  25 + "build": "umi build",
  26 + "deploy": "rm -rf dist && umi build && ./deploy.sh"
  27 + }
  28 +}
... ...
front-end/landing-page/src/Index/Banner.jsx 0 → 100755
  1 +import React from 'react';
  2 +import PropTypes from 'prop-types';
  3 +import QueueAnim from 'rc-queue-anim';
  4 +import { Button, Icon } from 'antd';
  5 +import BannerImage from './BannerImage';
  6 +
  7 +const ButtonGroup = Button.Group;
  8 +
  9 +const LubanIcon = Icon.createFromIconfontCN({
  10 + scriptUrl: '//at.alicdn.com/t/font_1455736_n0ivu1iicd.js',
  11 +});
  12 +
  13 +class Banner extends React.PureComponent {
  14 + static propTypes = {
  15 + className: PropTypes.string,
  16 + }
  17 + static defaultProps = {
  18 + className: 'home-banner',
  19 + }
  20 + render() {
  21 + const { className } = this.props;
  22 + return (
  23 + <div className={`home-layout-wrapper ${className}`}>
  24 + <div className="home-layout">
  25 + <QueueAnim className={`${className}-content-wrapper`} delay={300} ease="easeOutQuart">
  26 + <h1 key="h1">
  27 + 极简制作,一键呈现
  28 + </h1>
  29 + <p key="p">为您提供专业的云上建站服务,满足不同行业的个性化需求</p>
  30 + <span key="button">
  31 + <Button
  32 + type="primary"
  33 + onClick={() => {
  34 + window.open('https://api.luban-h5.wxjcart.com/main')
  35 + }}
  36 + >
  37 + 开始使用
  38 + </Button>
  39 + </span>
  40 + <span key="button2">
  41 + <ButtonGroup>
  42 + <Button type="link" size="small" title="Gitee" onClick={() => {
  43 + window.open("https://gitee.com/ly525/luban-h5");
  44 + }}><LubanIcon type="iconmayun"/></Button>
  45 + <Button type="link" size="small" title="GitHub" onClick={() => {
  46 + window.open('https://github.com/ly525/luban-h5');
  47 + }}><img alt="GitHub stars" src="https://img.shields.io/github/stars/ly525/luban-h5?style=social" /></Button>
  48 + </ButtonGroup>
  49 + </span>
  50 + </QueueAnim>
  51 + <div className={`${className}-image-wrapper`}>
  52 + <BannerImage />
  53 + </div>
  54 + </div>
  55 + </div>
  56 + );
  57 + }
  58 +}
  59 +
  60 +export default Banner;
... ...
front-end/landing-page/src/Index/BannerImage.jsx 0 → 100755
  1 +import React from 'react';
  2 +import TweenOne from 'rc-tween-one';
  3 +import SvgDrawPlugin from 'rc-tween-one/lib/plugin/SvgDrawPlugin';
  4 +import BannerImg from '../assets/home/banner.svg'
  5 +
  6 +TweenOne.plugins.push(SvgDrawPlugin);
  7 +
  8 +export default function BannerImage() {
  9 + return <img src={BannerImg} width={510} />;
  10 +}
... ...
front-end/landing-page/src/Index/Footer.jsx 0 → 100755
  1 +import React from 'react';
  2 +import { footer } from './data';
  3 +
  4 +function antCloudFooter() {
  5 + const children = footer.map((item, i) => (<div key={i}><a href={item.src} target="_blank">{item.text}</a></div>));
  6 + return (<div>
  7 + <div className="logo" key="logo">
  8 + {/* <img src="https://gw.alipayobjects.com/zos/rmsportal/dnIbXmAgGbRxQJksRsJL.svg" width="72" height="82" /> */}
  9 + <h1 style={{color: 'white'}}>鲁班 H5</h1>
  10 + </div>
  11 + <div key="nav" className="home-footer-nav-wrapper">
  12 + {children}
  13 + </div>
  14 + </div>
  15 + );
  16 +}
  17 +
  18 +function Footer() {
  19 + return (
  20 + <div className="home-layout-wrapper home-footer-wrapper">
  21 + <div className="home-layout">
  22 + {antCloudFooter()}
  23 + <p key="cop" className="copy">©2019 - 2019 Metrix-Transform All Rights Reserved</p>
  24 + </div>
  25 + </div>
  26 + );
  27 +}
  28 +
  29 +export default Footer;
... ...
front-end/landing-page/src/Index/Header.jsx 0 → 100755
  1 +import React from 'react';
  2 +
  3 +export default function Header(props) {
  4 + return (
  5 + <header {...props}>
  6 + <div className="header-content">
  7 + <h1>
  8 + <a>
  9 + <span>鲁班H5</span>
  10 + </a>
  11 + <span>移动建站平台</span>
  12 + </h1>
  13 + </div>
  14 + </header>
  15 + );
  16 +}
... ...
front-end/landing-page/src/Index/Page1.jsx 0 → 100755
  1 +import React from 'react';
  2 +import QueueAnim from 'rc-queue-anim';
  3 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  4 +import { Row, Col } from 'antd';
  5 +import { page1 } from './data';
  6 +
  7 +export default function Page1() {
  8 + const children = page1.map((d, i) => (
  9 + <QueueAnim
  10 + component={Col}
  11 + key={i}
  12 + type="bottom"
  13 + className="col"
  14 + componentProps={{ span: 8 }}
  15 + >
  16 + <div key="image" className="image" style={{ backgroundImage: `url(${d.src})`, backgroundSize: 'contain' }} />
  17 + <h3 key="h3">{d.title}</h3>
  18 + <p key="p">{d.content}</p>
  19 + </QueueAnim>
  20 + ));
  21 + return (
  22 + <div className="home-layout-wrapper home-func-wrapper" id="home-func" >
  23 + <h2>功能介绍</h2>
  24 + <i className="line" />
  25 + <OverPack className="home-layout" location="home-func" playScale={0.4}>
  26 + <QueueAnim className="home-func" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
  27 + <QueueAnim
  28 + key="content"
  29 + component={Row}
  30 + type="bottom"
  31 + componentProps={{ gutter: 171 }}
  32 + >
  33 + {children}
  34 + </QueueAnim>
  35 + </QueueAnim>
  36 + </OverPack>
  37 + </div>);
  38 +}
... ...
front-end/landing-page/src/Index/Page2.jsx 0 → 100755
  1 +import React from 'react';
  2 +import QueueAnim from 'rc-queue-anim';
  3 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  4 +import QRCode from 'qrcode.react';
  5 +import { Row, Col } from 'antd';
  6 +import { page2 } from './data';
  7 +
  8 +export default function Page2() {
  9 + const children = page2.map((d, i) => {
  10 + if (i > 2) {
  11 + return null;
  12 + }
  13 + return (
  14 + <Col key={i} className="col" span={8}>
  15 + <div className="content-wrapper home-hover">
  16 + <div className="image" style={{ backgroundImage: `url(${d.image})` }} />
  17 + <div className="code-wrapper">
  18 + <h4>扫码预览</h4>
  19 + <QRCode value={window.location.origin + d.url} size={160} />
  20 + </div>
  21 + </div>
  22 + </Col>);
  23 + });
  24 + return (
  25 + <div className="home-layout-wrapper home-case-wrapper">
  26 + <OverPack className="home-layout" playScale={0.4}>
  27 + <QueueAnim className="home-case" type="bottom" key="home-case" ease="easeOutQuart" leaveReverse>
  28 + <h2 key="h2">精品案例扫一扫</h2>
  29 + <i key="i" className="line" />
  30 + <QueueAnim
  31 + key="content"
  32 + component={Row}
  33 + type="bottom"
  34 + componentProps={{ gutter: 171 }}
  35 + >
  36 + {children}
  37 + </QueueAnim>
  38 + </QueueAnim>
  39 + </OverPack>
  40 + </div>);
  41 +}
... ...
front-end/landing-page/src/Index/Page3.jsx 0 → 100755
  1 +import React from 'react';
  2 +import QueueAnim from 'rc-queue-anim';
  3 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  4 +import { Row, Col } from 'antd';
  5 +import { page3 } from './data';
  6 +
  7 +export default function Page3() {
  8 + const children = page3.map((d, i) => (
  9 + <Col span={8} className="col" key={i.toString()}>
  10 + <QueueAnim
  11 + type="bottom"
  12 + className="content-wrapper home-hover"
  13 + onClick={() => { window.location.href = '/intro/price '; }}
  14 + >
  15 + <div key="image" className="image">{d.svg}</div>
  16 + <h3 key="h3">{d.title}</h3>
  17 + {d.content}
  18 + {d.exp && <div className="exp" key="exp">{d.exp}</div>}
  19 + </QueueAnim>
  20 + </Col>
  21 + ));
  22 + return (
  23 + <div className="home-layout-wrapper home-serve-wrapper">
  24 + <OverPack className="home-layout" playScale={0.4}>
  25 + <QueueAnim className="home-serve" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
  26 + <h2 key="h2">服务方案</h2>
  27 + <i key="i" className="line" />
  28 + <QueueAnim
  29 + key="content"
  30 + component={Row}
  31 + type="bottom"
  32 + componentProps={{ gutter: 96 }}
  33 + >
  34 + {children}
  35 + </QueueAnim>
  36 + </QueueAnim>
  37 + </OverPack>
  38 + </div>);
  39 +}
... ...
front-end/landing-page/src/Index/Page4.jsx 0 → 100755
  1 +import React from 'react';
  2 +import QueueAnim from 'rc-queue-anim';
  3 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  4 +import { Row, Col } from 'antd';
  5 +import { page4 } from './data';
  6 +
  7 +function getLi(num, d, i) {
  8 + const t = num + 1;
  9 + if (i > t * 4 - 1 || i < num * 4) {
  10 + return null;
  11 + }
  12 + return (
  13 + <Col className="col" span={4} key={i} offset={!(i % 4) ? 1 : 2}>
  14 + <i style={{ backgroundImage: `url(${d})` }} />
  15 + </Col>
  16 + );
  17 +}
  18 +export default function Page4() {
  19 + const children = [];
  20 + for (let i = 0; i < Math.floor(page4.length / 4); i++) {
  21 + children.push((
  22 + <QueueAnim
  23 + component={Row}
  24 + type="bottom"
  25 + key={i}
  26 + >
  27 + {page4.map(getLi.bind(this, i)).filter(item => item)}
  28 + </QueueAnim>));
  29 + }
  30 + return (
  31 + <div className="home-layout-wrapper home-user-wrapper">
  32 + <OverPack className="home-layout" playScale={0.4}>
  33 + <QueueAnim className="home-user" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
  34 + <h2 key="h2">我们的用户</h2>
  35 + <i key="i" className="line" />
  36 + {children}
  37 + </QueueAnim>
  38 + </OverPack>
  39 + </div>
  40 + );
  41 +}
... ...
front-end/landing-page/src/Index/data.js 0 → 100755
  1 +import React from 'react';
  2 +
  3 +export const page1 = [
  4 + {
  5 + title: '轻松建站',
  6 + content: '丰富的组件系统、支持可视化编辑、自由拖拽排版、实时预览、在线访问',
  7 + src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/quick-make.svg',
  8 + },
  9 + {
  10 + title: '表单提交',
  11 + content: '支持表单组件,即时倾听用户反馈,可以在后台查看和下载用户数据',
  12 + src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/submit-form.svg',
  13 + },
  14 + {
  15 + title: '导入 PSD',
  16 + content: '支持一键导入PSD,将设计师的创意转换为 H5,快速查看效果、反馈、上线',
  17 + src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/import-psd.svg',
  18 + },
  19 +];
  20 +
  21 +export const page2 = [
  22 + {
  23 + title: '邀请函',
  24 + url: '/works/preview/1552',
  25 + image: 'https://i.loli.net/2019/10/13/RjQkhE3OsrVv7uz.png',
  26 + },
  27 + {
  28 + title: '早安',
  29 + url: '/works/preview/1551',
  30 + image: 'https://i.loli.net/2019/10/13/kyzhsWFbmZT1JrN.png',
  31 + },
  32 + {
  33 + title: '程序员节',
  34 + url: '/works/preview/833',
  35 + image: 'https://i.loli.net/2019/10/10/FtWXY3wDNJLT4GP.png',
  36 + },
  37 +];
  38 +
  39 +export const page3 = [
  40 + {
  41 + title: '个人版',
  42 + content: [
  43 + <p key="1">支持 H5 站点制作</p>,
  44 + <p key="2">支持模板管理</p>,
  45 + <p key="3">支持表单提交</p>,
  46 + <p key="3">支持数据统计</p>,
  47 + ],
  48 + // exp: '免费使用',
  49 + svg: (<svg width="32px" height="32px" viewBox="0 0 32 32">
  50 + <defs>
  51 + <linearGradient x1="50%" y1="0%" x2="50%" y2="98.8500478%" id="linearGradient-1">
  52 + <stop stopColor="#FFD24C" offset="0%" />
  53 + <stop stopColor="#FFB800" offset="100%" />
  54 + </linearGradient>
  55 + </defs>
  56 + <path
  57 + d="M11.2,19.9763991 L1.43301577,25.9589289
  58 + C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628
  59 + L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32
  60 + L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533
  61 + C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469
  62 + L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615
  63 + L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0
  64 + C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2
  65 + L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z"
  66 + fill="#D9D9D9"
  67 + />
  68 + <path
  69 + d="M11.2,19.9763991 L1.43301577,25.9589289
  70 + C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628
  71 + L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32
  72 + L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533
  73 + C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469
  74 + L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615
  75 + L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0
  76 + C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2
  77 + L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z"
  78 + fill="url(#linearGradient-1)"
  79 + className="icon-hover"
  80 + />
  81 + </svg>),
  82 + },
  83 + {
  84 + title: '企业版',
  85 + content: [
  86 + <p key="1">支持 H5 站点制作</p>,
  87 + // <p key="2">支持模板管理,实现模板共享</p>,
  88 + // <p key="3">支持工作组管理,实现多人协作</p>,
  89 + // <p key="4">支持自定义发布审批流</p>,
  90 + // <p key="5">支持自定义域名</p>,
  91 + <p key="2">支持模板管理</p>,
  92 + <p key="3">支持表单提交</p>,
  93 + <p key="3">支持数据统计</p>,
  94 + <p key="3">支持PSD导入</p>,
  95 + ],
  96 + svg: (
  97 + <svg width="32px" height="32px" viewBox="0 0 32 32">
  98 + <path
  99 + d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
  100 + L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2
  101 + L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0
  102 + C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7
  103 + C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32
  104 + Z M10,4 L10,8 L14,8 L14,4 L10,4 Z M10,12 L10,16 L14,16 L14,12 L10,12 Z M10,20 L10,24 L14,24
  105 + L14,20 L10,20 Z M3,20 L3,24 L7,24 L7,20 L3,20 Z M17,4 L17,8 L21,8 L21,4 L17,4 Z M17,12 L17,16
  106 + L21,16 L21,12 L17,12 Z M17,20 L17,24 L21,24 L21,20 L17,20 Z M24,20 L24,24 L28,24 L28,20 L24,20
  107 + Z M24,12 L24,16 L28,16 L28,12 L24,12 Z"
  108 + fill="#D9D9D9"
  109 + />
  110 + <path
  111 + d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
  112 + L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2
  113 + L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0
  114 + C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7
  115 + C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32
  116 + Z M10,4 L10,8 L14,8 L14,4 L10,4 Z M10,12 L10,16 L14,16 L14,12 L10,12 Z M10,20 L10,24 L14,24
  117 + L14,20 L10,20 Z M3,20 L3,24 L7,24 L7,20 L3,20 Z M17,4 L17,8 L21,8 L21,4 L17,4 Z M17,12 L17,16
  118 + L21,16 L21,12 L17,12 Z M17,20 L17,24 L21,24 L21,20 L17,20 Z M24,20 L24,24 L28,24 L28,20 L24,20
  119 + Z M24,12 L24,16 L28,16 L28,12 L24,12 Z"
  120 + fill="url(#linearGradient-1)"
  121 + className="icon-hover"
  122 + />
  123 + </svg>),
  124 + },
  125 + {
  126 + title: '企业 VIP 版',
  127 + content: [
  128 + // <p key="1">支持通过 OpenAPI 调用制作流程</p>,
  129 + // <p key="2">可以指定可用模板,企业内共享模板</p>,
  130 + // <p key="3">支持创建多个企业级账户</p>,
  131 + // <p key="4">支持自定义发布审批流</p>,
  132 + // <p key="5">支持自定义域名</p>],
  133 + <p key="2">支持模板管理</p>,
  134 + <p key="3">支持表单提交</p>,
  135 + <p key="3">支持数据统计</p>,
  136 + <p key="3">支持PSD导入</p>,
  137 + <p key="3">支持自定义脚本</p>,
  138 + <p key="6">支持成员管理(TODO)</p>,
  139 + <p key="6">支持项目管理(TODO)</p>,
  140 + ],
  141 + svg: (
  142 + <svg width="32px" height="32px" viewBox="0 0 32 32">
  143 + <path
  144 + d="M21.1504124,8.82079742 L16.5552541,3.32558694
  145 + C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514
  146 + C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875
  147 + L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715
  148 + L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046
  149 + C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13
  150 + L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696
  151 + C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265
  152 + C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807
  153 + L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16
  154 + L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
  155 + L0,16 C-1.3527075e-16,14.8954305 0.8954305,14 2,14 L2,14 Z M16,2 C15.4477153,2 15,1.55228475 15,1
  156 + C15,0.44771525 15.4477153,0 16,0 C16.5522847,0 17,0.44771525 17,1 C17,1.55228475 16.5522847,2 16,2 Z
  157 + M6,6 C5.44771525,6 5,5.55228475 5,5 C5,4.44771525 5.44771525,4 6,4 C6.55228475,4 7,4.44771525 7,5
  158 + C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5
  159 + C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5
  160 + C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25
  161 + C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825
  162 + C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5
  163 + C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375
  164 + C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625
  165 + L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375
  166 + C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5
  167 + C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825
  168 + C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125
  169 + C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875
  170 + C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5
  171 + C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875
  172 + C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125
  173 + L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7
  174 + C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7
  175 + C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85
  176 + C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5
  177 + C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85
  178 + L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85
  179 + C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3
  180 + C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5
  181 + C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3
  182 + C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85
  183 + L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625
  184 + C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55
  185 + C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125
  186 + C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4
  187 + C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625
  188 + C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375
  189 + L20.0141288,19.4 L22.2395299,19.4 Z"
  190 + fill="#D9D9D9"
  191 + />
  192 + <path
  193 + d="M21.1504124,8.82079742 L16.5552541,3.32558694
  194 + C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514
  195 + C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875
  196 + L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715
  197 + L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046
  198 + C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13
  199 + L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696
  200 + C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265
  201 + C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807
  202 + L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16
  203 + L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
  204 + L0,16 C-1.3527075e-16,14.8954305 0.8954305,14 2,14 L2,14 Z M16,2 C15.4477153,2 15,1.55228475 15,1
  205 + C15,0.44771525 15.4477153,0 16,0 C16.5522847,0 17,0.44771525 17,1 C17,1.55228475 16.5522847,2 16,2 Z
  206 + M6,6 C5.44771525,6 5,5.55228475 5,5 C5,4.44771525 5.44771525,4 6,4 C6.55228475,4 7,4.44771525 7,5
  207 + C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5
  208 + C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5
  209 + C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25
  210 + C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825
  211 + C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5
  212 + C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375
  213 + C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625
  214 + L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375
  215 + C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5
  216 + C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825
  217 + C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125
  218 + C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875
  219 + C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5
  220 + C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875
  221 + C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125
  222 + L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7
  223 + C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7
  224 + C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85
  225 + C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5
  226 + C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85
  227 + L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85
  228 + C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3
  229 + C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5
  230 + C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3
  231 + C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85
  232 + L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625
  233 + C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55
  234 + C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125
  235 + C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4
  236 + C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625
  237 + C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375
  238 + L20.0141288,19.4 L22.2395299,19.4 Z"
  239 + fill="url(#linearGradient-1)"
  240 + className="icon-hover"
  241 + />
  242 + </svg>),
  243 + },
  244 +];
  245 +
  246 +export const page4 = [
  247 + 'https://gw.alipayobjects.com/zos/rmsportal/kJPmZttedahfIvsZDGTd.svg',
  248 + 'https://gw.alipayobjects.com/zos/rmsportal/ktLOdfjNyExgKyWjiCvm.svg',
  249 + 'https://gw.alipayobjects.com/zos/rmsportal/gNNxbrNqlHdnRuMjUXrL.svg',
  250 + 'https://gw.alipayobjects.com/zos/rmsportal/qWaneWxxMVpASpiCOcsT.svg',
  251 + 'https://gw.alipayobjects.com/zos/rmsportal/kyCpvqWFloOpAOqzOlBg.svg',
  252 + 'https://gw.alipayobjects.com/zos/rmsportal/bBzJNEnPvyhNUhyHipvO.svg',
  253 + 'https://gw.alipayobjects.com/zos/rmsportal/UbEpCMXGBmDgkJXfIgMx.svg',
  254 + 'https://gw.alipayobjects.com/zos/rmsportal/xsWGKOdkRoJnzHIZlRiD.svg',
  255 +];
  256 +
  257 +export const footer = [
  258 + // { text: '解决方案', src: '#' },
  259 + { text: '中文文档', src: 'https://ly525.github.io/luban-h5' },
  260 + { text: 'English Document', src: 'https://www.yuque.com/liuyan-ew1qk/oh5d0n?language=en-us' },
  261 + // { text: '模板开发文档', src: '#' },
  262 + { text: '联系我们', src: 'https://github.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4' },
  263 + // { text: '联系我们', src: 'mailto:zhao.wuz@antfin.com' },
  264 +];
... ...
front-end/landing-page/src/Index/index.jsx 0 → 100755
  1 +import React from 'react';
  2 +import DocumentTitle from 'react-document-title';
  3 +import Header from './Header';
  4 +import Banner from './Banner';
  5 +import Page1 from './Page1';
  6 +import Page2 from './Page2';
  7 +import Page3 from './Page3';
  8 +import Page4 from './Page4';
  9 +import Footer from './Footer';
  10 +import './static/style';
  11 +
  12 +// 不支持移动端
  13 +class Home extends React.PureComponent {
  14 + render() {
  15 + return (
  16 + <div className="home-page">
  17 + {/* <Header key="header" /> */}
  18 + <Banner key="banner" />
  19 + <Page1 key="page1" />
  20 + <Page2 key="page2" />
  21 + <Page3 key="page3" />
  22 + {/* <Page4 key="page4" /> */}
  23 + <Footer key="footer" />
  24 + <DocumentTitle title="鲁班H5 - 移动建站平台" />
  25 + </div>
  26 + );
  27 + }
  28 +}
  29 +export default Home;
... ...
front-end/landing-page/src/Index/static/custom.less 0 → 100755
  1 +body {
  2 + // overflow: hidden;
  3 +}
  4 +
  5 +.text-center {
  6 + text-align: center!important;
  7 +}
... ...
front-end/landing-page/src/Index/static/default.less 0 → 100755
  1 +@import "~antd/lib/style/themes/default.less";
  2 +// 品牌色
  3 +@color-fengdie: #ffbf00;
  4 +// 线框
  5 +@border-color: #D9D9D9;
  6 +// 分割线
  7 +@separate-line-color: #E9E9E9;
  8 +// 多行文本
  9 +@font-color: rgba(0,0,0,.65);
  10 +// 标题、单行
  11 +@font-important-color: rgba(0,0,0,.85);
  12 +@font-active-color: #666;
  13 +// 辅助信息
  14 +@font-tip-color: rgba(0,0,0,.43);
  15 +// 警告色
  16 +@font-warning: #f56a00;
  17 +// 失败色
  18 +@font-fail: #f04134;
  19 +
  20 +// 主按钮颜色
  21 +@button-primary-color: #ffbf00;
  22 +@label-color: #666;
  23 +@border-active-color: #ffbf00;
  24 +@background-active-color: #FFF8EF;
  25 +@link-color: #50A4DB;
  26 +@selected-color: #FFBC40;
  27 +@moved-color: #FFF1E0;
  28 +@header-background-color: #222222;
  29 +
  30 +@status-released-color: #00A854;
  31 +@status-editing-color: #2DB7F5;
  32 +@status-previewing-color: #7265E6;
  33 +@status-approve_waiting-color: #FAC450;
  34 +@status-approve_refused-color: #FF6600;
  35 +@status-release_fail-color: #FF6600;
  36 +@status-noop-color: #999;
  37 +@search-input-border-color: #F59F16;
  38 +
  39 +
  40 +@approveButtonBackgroundColor: #f7f7f7;
  41 +@weekBackgroundColor: #FBFBFB;
  42 +
  43 +@highlight-font-color: @search-input-border-color;
  44 +
  45 +@white-background-color: #fff;
  46 +
  47 +@bgColor: #F7F7F7;
  48 +@titleColor: fade(#000, 85);
  49 +@contentColor: fade(#000, 43);
0 50 \ No newline at end of file
... ...
front-end/landing-page/src/Index/static/footer.less 0 → 100755
  1 +.home-page .home-footer-wrapper {
  2 + height: 336px;
  3 + background: #404040 !important;
  4 + color: fade(#fff, 65);
  5 + font-size: 14px;
  6 + .home-layout {
  7 + padding: 72px 32px 0;
  8 + .copy{
  9 + color: fade(#fff, 43);
  10 + }
  11 + }
  12 + .home-footer-nav-wrapper {
  13 + margin: 48px auto 16px;
  14 + > div {
  15 + display: inline-block;
  16 + padding: 0 36px;
  17 + border-right: 1px solid #fff;
  18 + &:last-child {
  19 + border-right: none;
  20 + }
  21 + a {
  22 + display: block;
  23 + color: fade(#fff, 65);
  24 + font-size: 16px;
  25 + line-height: 16px;
  26 + }
  27 + }
  28 + }
  29 + .logo{ margin-bottom: 5px; }
  30 +}
0 31 \ No newline at end of file
... ...
front-end/landing-page/src/Index/static/header.less 0 → 100755
  1 +header {
  2 + width: 100%;
  3 + z-index: 1000;
  4 + top: 0;
  5 + background-color: #fff;
  6 + .header-content {
  7 + display: flex;
  8 + justify-content: space-between;
  9 + align-items: center;
  10 + height: 64px;
  11 + font-size: 14px;
  12 + padding: 0 24px;
  13 + width: 1152px;
  14 + margin: 0 auto;
  15 + h1 {
  16 + position: relative;
  17 + &:before {
  18 + content: "";
  19 + position: absolute;
  20 + top: 10px;
  21 + left: 144px;
  22 + width: 1px;
  23 + height: 12px;
  24 + background: #999;
  25 + }
  26 + a {
  27 + display: block;
  28 + width: 120px;
  29 + height: 32px;
  30 + background: url(https://gw.alipayobjects.com/zos/rmsportal/qdWihUzYxihpnOMVhFPV.png) no-repeat 0 50%;
  31 + background-size: 120px 32px;
  32 + text-indent: -999em;
  33 + }
  34 + span{
  35 + position: absolute;
  36 + font-size: 14px;
  37 + font-weight: 400;
  38 + top: 6px;
  39 + left: 168px;
  40 + color: rgba(0,0,0,.65);
  41 + white-space: nowrap;
  42 + }
  43 + }
  44 + }
  45 +}
0 46 \ No newline at end of file
... ...
front-end/landing-page/src/Index/static/home.less 0 → 100755
  1 +@import './default.less';
  2 +.home-page {
  3 + .fd-content {
  4 + min-width: 1216px;
  5 + background: #FFF;
  6 + font-family: PingFangSC, Helvetica Neue, Helvetica, PingFang SC-Light, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
  7 + }
  8 + h2,
  9 + h3,
  10 + h4,
  11 + h5 {
  12 + font-weight: 100;
  13 + }
  14 + .home-layout-wrapper {
  15 + width: 100%;
  16 + height: 720px;
  17 + text-align: center;
  18 + overflow: hidden;
  19 + .home-layout {
  20 + margin: 0 auto;
  21 + width: 1152px;
  22 + padding: 0 24px;
  23 + overflow: hidden;
  24 + height: 100%;
  25 + >div {
  26 + float: left;
  27 + width: 100%;
  28 + }
  29 + .col {
  30 + .content-wrapper {
  31 + border-radius: 4px;
  32 + background: #fff;
  33 + cursor: pointer;
  34 + overflow: hidden;
  35 + position: relative;
  36 + }
  37 + }
  38 + }
  39 + &:nth-of-type(odd) {
  40 + background: #fff;
  41 + }
  42 + &:nth-of-type(even) {
  43 + background-color: @bgColor;
  44 + }
  45 + }
  46 + h2,
  47 + h3 {
  48 + text-align: center;
  49 + font-weight: normal;
  50 + }
  51 + h2 {
  52 + font-size: 30px;
  53 + line-height: 38px;
  54 + color: @titleColor;
  55 + margin-top: 88px;
  56 + }
  57 + h3 {
  58 + font-size: 24px;
  59 + line-height: 32px;
  60 + margin-bottom: 16px;
  61 + color: @titleColor;
  62 + }
  63 + .line {
  64 + width: 40px;
  65 + height: 2px;
  66 + display: block;
  67 + background: #FFBF00;
  68 + margin: 16px auto 72px;
  69 + }
  70 + /* banner 区域 */
  71 + .home-banner {
  72 + height: 656px;
  73 + color: #fff;
  74 + g,
  75 + ellipse {
  76 + transform-box: fill-box;
  77 + }
  78 + .home-layout {
  79 + height: 100%;
  80 + display: flex;
  81 + align-items: center;
  82 + padding-top: 0;
  83 + text-align: left;
  84 + }
  85 + .home-banner-content-wrapper,
  86 + .home-banner-image-wrapper {
  87 + width: 50%;
  88 + display: inline-block;
  89 + }
  90 + .home-banner-content-wrapper {
  91 + height: 178px;
  92 + margin-bottom: 40px;
  93 + }
  94 + h1 {
  95 + font-size: 38px;
  96 + line-height: 46px;
  97 + margin-bottom: 16px;
  98 + font-weight: normal;
  99 + color: @titleColor;
  100 + }
  101 + p {
  102 + margin-bottom: 40px;
  103 + font-size: 20px;
  104 + line-height: 28px;
  105 + color: @contentColor;
  106 + }
  107 + span {
  108 + display: inline-block;
  109 + }
  110 + button {
  111 + width: 168px;
  112 + height: 48px;
  113 + font-size: 20px;
  114 + }
  115 +
  116 + .ant-btn-group button {
  117 + width: 48px;
  118 + }
  119 + .home-banner-image-wrapper {
  120 + text-align: center;
  121 + margin-top: -120px;
  122 + }
  123 + }
  124 + /* 功能介绍 */
  125 + .home-func-wrapper {
  126 + height: 720px;
  127 + text-align: center;
  128 + .image {
  129 + height: 240px;
  130 + position: relative;
  131 + background-position: bottom center;
  132 + background-repeat: no-repeat;
  133 + background-size: 90% auto;
  134 + margin-bottom: 62px;
  135 + }
  136 + .col {
  137 + height: 400px;
  138 + }
  139 + p {
  140 + font-size: 16px;
  141 + color: @contentColor;
  142 + }
  143 + }
  144 + .home-hover {
  145 + border: 1px solid #E9E9E9;
  146 + transition: transform .45s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow .45s cubic-bezier(0.645, 0.045, 0.355, 1), border .45s cubic-bezier(0.645, 0.045, 0.355, 1);
  147 + &:hover {
  148 + transform: translateY(-4px);
  149 + box-shadow: 0 2px 24px fade(#000, 10);
  150 + border-color: #fff;
  151 + }
  152 + }
  153 + /* 案例 */
  154 + .home-case-wrapper {
  155 + .col {
  156 + .content-wrapper {
  157 + height: 360px;
  158 + padding: 16px;
  159 + .image {
  160 + width: 100%;
  161 + height: 100%;
  162 + border-radius: 2px;
  163 + background-position: center;
  164 + background-repeat: no-repeat;
  165 + background-size: cover;
  166 + }
  167 + &:hover {
  168 + .code-wrapper {
  169 + opacity: 1;
  170 + }
  171 + }
  172 + }
  173 + .code-wrapper {
  174 + position: absolute;
  175 + background: fade(#fff, 90);
  176 + width: 100%;
  177 + height: 100%;
  178 + top: 0;
  179 + left: 0;
  180 + opacity: 0;
  181 + transition: opacity 0.45s cubic-bezier(0.165, 0.84, 0.44, 1);
  182 + h4 {
  183 + font-size: 16px;
  184 + font-weight: normal;
  185 + margin: 72px auto 12px;
  186 + color: @titleColor;
  187 + }
  188 + }
  189 + }
  190 + }
  191 + .home-serve-wrapper {
  192 + height: 788px;
  193 + text-align: center;
  194 + .col {
  195 + font-size: 16px;
  196 + .content-wrapper {
  197 + padding: 24px 16px;
  198 + height: 440px;
  199 + .icon-hover {
  200 + opacity: 0;
  201 + transition: opacity .45s;
  202 + }
  203 + &:hover {
  204 + .icon-hover {
  205 + opacity: 1;
  206 + }
  207 + p {
  208 + color: fade(#000000, 65);
  209 + }
  210 + }
  211 + }
  212 + .image {
  213 + width: 32px;
  214 + height: 32px;
  215 + margin: 8px auto 12px;
  216 + }
  217 + h3 {
  218 + margin-bottom: 24px;
  219 + }
  220 + p {
  221 + margin-bottom: 12px;
  222 + color: @contentColor;
  223 + transition: color .3s;
  224 + font-weight: 400;
  225 + }
  226 + .exp {
  227 + position: absolute;
  228 + bottom: 24px;
  229 + left: 0;
  230 + width: 100%;
  231 + font-size: 20px;
  232 + color: fade(#000, 25);
  233 + }
  234 + }
  235 + }
  236 + .home-user-wrapper {
  237 + height: 440px;
  238 + h2 {
  239 + margin-top: 64px;
  240 + }
  241 + .col {
  242 + margin-bottom: 32px;
  243 + i {
  244 + display: block;
  245 + width: 170px;
  246 + height: 56px;
  247 + background-repeat: no-repeat;
  248 + background-position: center;
  249 + margin: auto;
  250 + }
  251 + }
  252 + }
  253 +}
0 254 \ No newline at end of file
... ...
front-end/landing-page/src/Index/static/responsive.less 0 → 100755
front-end/landing-page/src/Index/static/style.js 0 → 100755
  1 +import './header.less';
  2 +import './home.less';
  3 +import './footer.less';
  4 +import './responsive.less';
... ...
front-end/landing-page/src/Page2/Banner0.jsx 0 → 100755
  1 +import React from 'react';
  2 +import { Button, Icon } from 'antd';
  3 +import QueueAnim from 'rc-queue-anim';
  4 +import TweenOne from 'rc-tween-one';
  5 +
  6 +class Banner extends React.PureComponent {
  7 + render() {
  8 + const { ...currentProps } = this.props;
  9 + const { dataSource } = currentProps;
  10 + delete currentProps.dataSource;
  11 + delete currentProps.isMobile;
  12 + return (
  13 + <div {...currentProps} {...dataSource.wrapper}>
  14 + <QueueAnim
  15 + key="QueueAnim"
  16 + type={['bottom', 'top']}
  17 + delay={200}
  18 + {...dataSource.textWrapper}
  19 + >
  20 + <div key="title" {...dataSource.title}>
  21 + {dataSource.title.children.match(
  22 + /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
  23 + ) ? (
  24 + <img src={dataSource.title.children} width="100%" alt="img" />
  25 + ) : (
  26 + dataSource.title.children
  27 + )}
  28 + </div>
  29 + <div key="content" {...dataSource.content}>
  30 + {dataSource.content.children}
  31 + </div>
  32 + <Button ghost key="button" {...dataSource.button}>
  33 + {dataSource.button.children}
  34 + </Button>
  35 + </QueueAnim>
  36 + <TweenOne
  37 + animation={{
  38 + y: '-=20',
  39 + yoyo: true,
  40 + repeat: -1,
  41 + duration: 1000,
  42 + }}
  43 + className="banner0-icon"
  44 + key="icon"
  45 + >
  46 + <Icon type="down" />
  47 + </TweenOne>
  48 + </div>
  49 + );
  50 + }
  51 +}
  52 +export default Banner;
... ...
front-end/landing-page/src/Page2/Content0.jsx 0 → 100755
  1 +import React from 'react';
  2 +import QueueAnim from 'rc-queue-anim';
  3 +import { Row, Col } from 'antd';
  4 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  5 +
  6 +class Content extends React.PureComponent {
  7 + getBlockChildren = data => data.map((item, i) => {
  8 + const children = item.children;
  9 + return (
  10 + <Col key={i.toString()} {...item}>
  11 + <div {...children.icon}>
  12 + <img src={children.icon.children} width="100%" alt="img" />
  13 + </div>
  14 + <h3 {...children.title}>{children.title.children}</h3>
  15 + <p {...children.content}>{children.content.children}</p>
  16 + </Col>
  17 + );
  18 + });
  19 +
  20 + render() {
  21 + const { ...props } = this.props;
  22 + const { dataSource } = props;
  23 + delete props.dataSource;
  24 + delete props.isMobile;
  25 + const listChildren = this.getBlockChildren(dataSource.block.children);
  26 + return (
  27 + <div {...props} {...dataSource.wrapper}>
  28 + <div {...dataSource.page}>
  29 + <div {...dataSource.titleWrapper}>
  30 + {dataSource.titleWrapper.children.map((item, i) => React.createElement(
  31 + item.name.indexOf('title') === 0 ? 'h1' : 'div',
  32 + { key: i.toString(), ...item },
  33 + item.children.match(
  34 + /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
  35 + )
  36 + ? React.createElement('img', {
  37 + src: item.children,
  38 + height: '100%',
  39 + alt: 'img',
  40 + })
  41 + : item.children
  42 + )
  43 + )}
  44 + </div>
  45 + <OverPack {...dataSource.OverPack}>
  46 + <QueueAnim
  47 + type="bottom"
  48 + key="block"
  49 + leaveReverse
  50 + {...dataSource.block}
  51 + component={Row}
  52 + >
  53 + {listChildren}
  54 + </QueueAnim>
  55 + </OverPack>
  56 + </div>
  57 + </div>
  58 + );
  59 + }
  60 +}
  61 +
  62 +export default Content;
... ...
front-end/landing-page/src/Page2/Content12.jsx 0 → 100755
  1 +import React from 'react';
  2 +import { Row, Col } from 'antd';
  3 +import { TweenOneGroup } from 'rc-tween-one';
  4 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  5 +
  6 +class Content12 extends React.PureComponent {
  7 + getChildrenToRender = data => data.map((item) => {
  8 + return (
  9 + <Col key={item.name} {...item}>
  10 + <div {...item.children.wrapper}>
  11 + <span {...item.children.img}>
  12 + <img src={item.children.img.children} alt="img" />
  13 + </span>
  14 + </div>
  15 + </Col>
  16 + );
  17 + });
  18 +
  19 + render() {
  20 + const { ...props } = this.props;
  21 + const { dataSource } = props;
  22 + delete props.dataSource;
  23 + delete props.isMobile;
  24 + const childrenToRender = this.getChildrenToRender(
  25 + dataSource.block.children
  26 + );
  27 + return (
  28 + <div {...props} {...dataSource.wrapper}>
  29 + <div {...dataSource.page}>
  30 + <div key="title" {...dataSource.titleWrapper}>
  31 + {dataSource.titleWrapper.children.map((item, i) => React.createElement(
  32 + item.name.indexOf('title') === 0 ? 'h1' : 'div',
  33 + { key: i.toString(), ...item },
  34 + item.children.match(
  35 + /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
  36 + )
  37 + ? React.createElement('img', {
  38 + src: item.children,
  39 + alt: 'img',
  40 + })
  41 + : item.children
  42 + )
  43 + )}
  44 + </div>
  45 + <OverPack
  46 + className={`content-template ${props.className}`}
  47 + {...dataSource.OverPack}
  48 + >
  49 + <TweenOneGroup
  50 + component={Row}
  51 + key="ul"
  52 + enter={{
  53 + y: '+=30',
  54 + opacity: 0,
  55 + type: 'from',
  56 + ease: 'easeOutQuad',
  57 + }}
  58 + leave={{ y: '+=30', opacity: 0, ease: 'easeOutQuad' }}
  59 + {...dataSource.block}
  60 + >
  61 + {childrenToRender}
  62 + </TweenOneGroup>
  63 + </OverPack>
  64 + </div>
  65 + </div>
  66 + );
  67 + }
  68 +}
  69 +
  70 +export default Content12;
... ...
front-end/landing-page/src/Page2/Content13.jsx 0 → 100755
  1 +import React from 'react';
  2 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  3 +import QueueAnim from 'rc-queue-anim';
  4 +
  5 +class Content13 extends React.PureComponent {
  6 + render() {
  7 + const { ...props } = this.props;
  8 + const { dataSource } = props;
  9 + delete props.dataSource;
  10 + delete props.isMobile;
  11 + return (
  12 + <OverPack {...props} {...dataSource.OverPack}>
  13 + <QueueAnim
  14 + type="bottom"
  15 + leaveReverse
  16 + key="page"
  17 + delay={[0, 100]}
  18 + {...dataSource.titleWrapper}
  19 + >
  20 + {dataSource.titleWrapper.children.map((item, i) => React.createElement(
  21 + item.name.indexOf('title') === 0 ? 'h1' : 'div',
  22 + { key: i.toString(), ...item },
  23 + item.children.match(/\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/)
  24 + ? React.createElement('img', { src: item.children, alt: 'img' })
  25 + : item.children
  26 + )
  27 + )}
  28 + </QueueAnim>
  29 + </OverPack>
  30 + );
  31 + }
  32 +}
  33 +
  34 +export default Content13;
... ...
front-end/landing-page/src/Page2/Content7.jsx 0 → 100755
  1 +import React from 'react';
  2 +import TweenOne from 'rc-tween-one';
  3 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  4 +import { Tabs, Icon, Row, Col } from 'antd';
  5 +
  6 +const TabPane = Tabs.TabPane;
  7 +
  8 +class Content7 extends React.Component {
  9 + constructor(props) {
  10 + super(props);
  11 + this.state = {
  12 + current: 1,
  13 + };
  14 + }
  15 +
  16 + onChange = (key) => {
  17 + this.setState({ current: parseFloat(key) });
  18 + };
  19 +
  20 + getBlockChildren = (item, i) => {
  21 + const { tag, content } = item;
  22 + const { text, img } = content;
  23 + const textChildren = text.children;
  24 + const { icon } = tag;
  25 + const iconChildren = icon.children;
  26 + const tagText = tag.text;
  27 + return (
  28 + <TabPane
  29 + key={i + 1}
  30 + tab={(
  31 + <div className={tag.className}>
  32 + <Icon type={iconChildren} className={icon.className} />
  33 + <div {...tagText}>{tagText.children}</div>
  34 + </div>
  35 + )}
  36 + className={item.className}
  37 + >
  38 + <TweenOne.TweenOneGroup
  39 + enter={{
  40 + y: 30,
  41 + delay: 300,
  42 + opacity: 0,
  43 + type: 'from',
  44 + ease: 'easeOutQuad',
  45 + }}
  46 + leave={null}
  47 + component=""
  48 + >
  49 + {this.state.current === i + 1 && (
  50 + <Row
  51 + key="content"
  52 + className={content.className}
  53 + gutter={content.gutter}
  54 + >
  55 + <Col className={text.className} xs={text.xs} md={text.md}>
  56 + {textChildren}
  57 + </Col>
  58 + <Col className={img.className} xs={img.xs} md={img.md}>
  59 + <img src={img.children} width="100%" alt="img" />
  60 + </Col>
  61 + </Row>
  62 + )}
  63 + </TweenOne.TweenOneGroup>
  64 + </TabPane>
  65 + );
  66 + };
  67 +
  68 + render() {
  69 + const { ...props } = this.props;
  70 + const { dataSource } = props;
  71 + delete props.dataSource;
  72 + delete props.isMobile;
  73 + const tabsChildren = dataSource.block.children.map(this.getBlockChildren);
  74 + return (
  75 + <div {...props} {...dataSource.wrapper}>
  76 + <div {...dataSource.page}>
  77 + <div {...dataSource.titleWrapper}>
  78 + {dataSource.titleWrapper.children.map((item, i) => React.createElement(
  79 + item.name.indexOf('title') === 0 ? 'h1' : 'div',
  80 + { key: i.toString(), ...item },
  81 + item.children.match(
  82 + /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
  83 + )
  84 + ? React.createElement('img', {
  85 + src: item.children,
  86 + alt: 'img',
  87 + })
  88 + : item.children
  89 + )
  90 + )}
  91 + </div>
  92 +
  93 + <OverPack {...dataSource.OverPack}>
  94 + <TweenOne.TweenOneGroup
  95 + key="tabs"
  96 + enter={{
  97 + y: 30,
  98 + opacity: 0,
  99 + delay: 200,
  100 + type: 'from',
  101 + }}
  102 + leave={{ y: 30, opacity: 0 }}
  103 + {...dataSource.tabsWrapper}
  104 + >
  105 + <Tabs
  106 + key="tabs"
  107 + onChange={this.onChange}
  108 + activeKey={`${this.state.current}`}
  109 + {...dataSource.block}
  110 + >
  111 + {tabsChildren}
  112 + </Tabs>
  113 + </TweenOne.TweenOneGroup>
  114 + </OverPack>
  115 + </div>
  116 + </div>
  117 + );
  118 + }
  119 +}
  120 +
  121 +export default Content7;
... ...
front-end/landing-page/src/Page2/data.source.js 0 → 100755
  1 +import React from 'react';
  2 +
  3 +export const Nav00DataSource = {
  4 + wrapper: { className: 'header0 home-page-wrapper' },
  5 + page: { className: 'home-page' },
  6 + logo: {
  7 + className: 'header0-logo',
  8 + children: 'https://os.alipayobjects.com/rmsportal/mlcYmsRilwraoAe.svg',
  9 + },
  10 + Menu: {
  11 + className: 'header0-menu',
  12 + children: [
  13 + { name: 'item0', a: { children: '导航一', href: '' } },
  14 + { name: 'item1', a: { children: '导航二', href: '' } },
  15 + { name: 'item2', a: { children: '导航三', href: '' } },
  16 + { name: 'item3', a: { children: '导航四', href: '' } },
  17 + ],
  18 + },
  19 + mobileMenu: { className: 'header0-mobile-menu' },
  20 +};
  21 +export const Banner00DataSource = {
  22 + wrapper: { className: 'banner0' },
  23 + textWrapper: { className: 'banner0-text-wrapper' },
  24 + title: {
  25 + className: 'banner0-title',
  26 + children: 'https://zos.alipayobjects.com/rmsportal/HqnZZjBjWRbjyMr.png',
  27 + },
  28 + content: {
  29 + className: 'banner0-content',
  30 + children: (
  31 + <span>
  32 + <p>dsdf</p>
  33 + <p>aaaaa</p>
  34 + </span>
  35 + ),
  36 + },
  37 + button: { className: 'banner0-button', children: 'Learn More' },
  38 +};
  39 +export const Content00DataSource = {
  40 + wrapper: { className: 'home-page-wrapper content0-wrapper' },
  41 + page: { className: 'home-page content0' },
  42 + OverPack: { playScale: 0.3, className: '' },
  43 + titleWrapper: {
  44 + className: 'title-wrapper',
  45 + children: [{ name: 'title', children: '产品与服务' }],
  46 + },
  47 + block: {
  48 + className: 'block-wrapper',
  49 + children: [
  50 + {
  51 + name: 'block0',
  52 + className: 'block',
  53 + md: 8,
  54 + xs: 24,
  55 + children: {
  56 + icon: {
  57 + className: 'icon',
  58 + children:
  59 + 'https://zos.alipayobjects.com/rmsportal/WBnVOjtIlGWbzyQivuyq.png',
  60 + },
  61 + title: { children: '一站式业务接入' },
  62 + content: { children: '支付、结算、核算接入产品效率翻四倍' },
  63 + },
  64 + },
  65 + {
  66 + name: 'block1',
  67 + className: 'block',
  68 + md: 8,
  69 + xs: 24,
  70 + children: {
  71 + icon: {
  72 + className: 'icon',
  73 + children:
  74 + 'https://zos.alipayobjects.com/rmsportal/YPMsLQuCEXtuEkmXTTdk.png',
  75 + },
  76 + title: { children: '一站式事中风险监控' },
  77 + content: { children: '在所有需求配置环节事前风险控制和质量控制能力' },
  78 + },
  79 + },
  80 + {
  81 + name: 'block2',
  82 + className: 'block',
  83 + md: 8,
  84 + xs: 24,
  85 + children: {
  86 + icon: {
  87 + className: 'icon',
  88 + children:
  89 + 'https://zos.alipayobjects.com/rmsportal/EkXWVvAaFJKCzhMmQYiX.png',
  90 + },
  91 + title: { children: '一站式数据运营' },
  92 + content: { children: '沉淀产品接入效率和运营小二工作效率数据' },
  93 + },
  94 + },
  95 + ],
  96 + },
  97 +};
  98 +export const Content70DataSource = {
  99 + wrapper: { className: 'home-page-wrapper content7-wrapper' },
  100 + page: { className: 'home-page content7' },
  101 + OverPack: {},
  102 + titleWrapper: {
  103 + className: 'title-wrapper',
  104 + children: [
  105 + {
  106 + name: 'title',
  107 + children: '蚂蚁金融云提供专业的服务',
  108 + className: 'title-h1',
  109 + },
  110 + { name: 'content', children: '基于阿里云计算强大的基础资源' },
  111 + ],
  112 + },
  113 + tabsWrapper: { className: 'content7-tabs-wrapper' },
  114 + block: {
  115 + children: [
  116 + {
  117 + name: 'block0',
  118 + tag: {
  119 + className: 'content7-tag',
  120 + text: { children: 'PHONE', className: 'content7-tag-name' },
  121 + icon: { children: 'mobile' },
  122 + },
  123 + content: {
  124 + className: 'content7-content',
  125 + text: {
  126 + className: 'content7-text',
  127 + md: 14,
  128 + xs: 24,
  129 + children: (
  130 + <span>
  131 + <h3>技术</h3>
  132 + <p>
  133 + 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。
  134 + </p>
  135 + <br />
  136 + <h3>融合</h3>
  137 + <p>
  138 + 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。
  139 + </p>
  140 + <br />
  141 + <h3>
  142 + 开放
  143 + </h3>
  144 + 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。
  145 + </span>
  146 + ),
  147 + },
  148 + img: {
  149 + className: 'content7-img',
  150 + children:
  151 + 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png',
  152 + md: 10,
  153 + xs: 24,
  154 + },
  155 + },
  156 + },
  157 + {
  158 + name: 'block1',
  159 + tag: {
  160 + className: 'content7-tag',
  161 + icon: { children: 'tablet' },
  162 + text: { className: 'content7-tag-name', children: 'TABLET' },
  163 + },
  164 + content: {
  165 + className: 'content7-content',
  166 + text: {
  167 + className: 'content7-text',
  168 + md: 14,
  169 + xs: 24,
  170 + children: (
  171 + <span>
  172 + <h3>技术</h3>
  173 + <p>
  174 + 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。
  175 + </p>
  176 + <br />
  177 + <h3>融合</h3>
  178 + <p>
  179 + 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。
  180 + </p>
  181 + <br />
  182 + <h3>
  183 + 开放
  184 + </h3>
  185 + 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。
  186 + </span>
  187 + ),
  188 + },
  189 + img: {
  190 + className: 'content7-img',
  191 + md: 10,
  192 + xs: 24,
  193 + children:
  194 + 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png',
  195 + },
  196 + },
  197 + },
  198 + {
  199 + name: 'block2',
  200 + tag: {
  201 + className: 'content7-tag',
  202 + text: { children: 'DESKTOP', className: 'content7-tag-name' },
  203 + icon: { children: 'laptop' },
  204 + },
  205 + content: {
  206 + className: 'content7-content',
  207 + text: {
  208 + className: 'content7-text',
  209 + md: 14,
  210 + xs: 24,
  211 + children: (
  212 + <span>
  213 + <h3>技术</h3>
  214 + <p>
  215 + 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。
  216 + </p>
  217 + <br />
  218 + <h3>融合</h3>
  219 + <p>
  220 + 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。
  221 + </p>
  222 + <br />
  223 + <h3>
  224 + 开放
  225 + </h3>
  226 + 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。
  227 + </span>
  228 + ),
  229 + },
  230 + img: {
  231 + className: 'content7-img',
  232 + md: 10,
  233 + xs: 24,
  234 + children:
  235 + 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png',
  236 + },
  237 + },
  238 + },
  239 + ],
  240 + },
  241 +};
  242 +export const Content130DataSource = {
  243 + OverPack: {
  244 + className:
  245 + 'home-page-wrapper content13-wrapper home-page-wrapper content13-wrapper jnwq7vhwgqg-editor_css',
  246 + playScale: 0.3,
  247 + },
  248 + titleWrapper: {
  249 + className: 'title-wrapper',
  250 + children: [
  251 + { name: 'title', children: '丰富的特色展台', className: 'title-h1' },
  252 + {
  253 + name: 'content',
  254 + children:
  255 + '特色展台包括 Ant Design 、AntV、AntG、Egg 等明星产品,更有产品专家',
  256 + className: 'title-content',
  257 + },
  258 + {
  259 + name: 'content2',
  260 + children: '现场问诊,为你答疑解难',
  261 + className: 'title-content',
  262 + },
  263 + ],
  264 + },
  265 +};
  266 +export const Content120DataSource = {
  267 + wrapper: { className: 'home-page-wrapper content12-wrapper' },
  268 + page: { className: 'home-page content12' },
  269 + OverPack: { playScale: 0.3, className: '' },
  270 + titleWrapper: {
  271 + className: 'title-wrapper',
  272 + children: [{ name: 'title', children: '特别鸣谢', className: 'title-h1' }],
  273 + },
  274 + block: {
  275 + className: 'img-wrapper',
  276 + children: [
  277 + {
  278 + name: 'block0',
  279 + className: 'block',
  280 + md: 8,
  281 + xs: 24,
  282 + children: {
  283 + wrapper: { className: 'block-content' },
  284 + img: {
  285 + children:
  286 + 'https://gw.alipayobjects.com/zos/rmsportal/TFicUVisNHTOEeMYXuQF.svg',
  287 + },
  288 + },
  289 + },
  290 + {
  291 + name: 'block1',
  292 + className: 'block',
  293 + md: 8,
  294 + xs: 24,
  295 + children: {
  296 + wrapper: { className: 'block-content' },
  297 + img: {
  298 + children:
  299 + 'https://gw.alipayobjects.com/zos/rmsportal/hkLGkrlCEkGZeMQlnEkD.svg',
  300 + },
  301 + },
  302 + },
  303 + {
  304 + name: 'block2',
  305 + className: 'block',
  306 + md: 8,
  307 + xs: 24,
  308 + children: {
  309 + wrapper: { className: 'block-content' },
  310 + img: {
  311 + children:
  312 + 'https://gw.alipayobjects.com/zos/rmsportal/bqyPRSZmhvrsfJrBvASi.svg',
  313 + },
  314 + },
  315 + },
  316 + {
  317 + name: 'block3',
  318 + className: 'block',
  319 + md: 8,
  320 + xs: 24,
  321 + children: {
  322 + wrapper: { className: 'block-content' },
  323 + img: {
  324 + children:
  325 + 'https://gw.alipayobjects.com/zos/rmsportal/UcsyszzOabdCYDkoPPnM.svg',
  326 + },
  327 + },
  328 + },
  329 + {
  330 + name: 'block4',
  331 + className: 'block',
  332 + md: 8,
  333 + xs: 24,
  334 + children: {
  335 + wrapper: { className: 'block-content' },
  336 + img: {
  337 + children:
  338 + 'https://gw.alipayobjects.com/zos/rmsportal/kRBeaICGexAmVjqBEqgw.svg',
  339 + },
  340 + },
  341 + },
  342 + {
  343 + name: 'block5',
  344 + className: 'block',
  345 + md: 8,
  346 + xs: 24,
  347 + children: {
  348 + wrapper: { className: 'block-content' },
  349 + img: {
  350 + children:
  351 + 'https://gw.alipayobjects.com/zos/rmsportal/ftBIiyJcCHpHEioRvPsV.svg',
  352 + },
  353 + },
  354 + },
  355 + ],
  356 + },
  357 +};
  358 +export const Footer00DataSource = {
  359 + wrapper: { className: 'home-page-wrapper footer0-wrapper' },
  360 + OverPack: { className: 'home-page footer0', playScale: 0.05 },
  361 + // copyright: {
  362 + // className: 'copyright',
  363 + // children: (
  364 + // <span>
  365 + // ©2018
  366 + // {' '}
  367 + // <a href="https://motion.ant.design">Ant Motion</a>
  368 + // {' '}
  369 + // All Rights Reserved
  370 + // </span>
  371 + // ),
  372 + // },
  373 +};
... ...
front-end/landing-page/src/Page2/documentation.md 0 → 100755
  1 +# 如何使用:
  2 +
  3 +- umi 里如何使用[请查看](https://landing.ant.design/docs/use/umi)。
  4 +- 其它脚手架使用[请查看](https://landing.ant.design/docs/use/getting-started)。
... ...
front-end/landing-page/src/Page2/index.jsx 0 → 100755
  1 +/* eslint no-undef: 0 */
  2 +/* eslint arrow-parens: 0 */
  3 +import React from 'react';
  4 +import { enquireScreen } from 'enquire-js';
  5 +
  6 +// import Nav0 from './Nav0';
  7 +import Banner0 from './Banner0';
  8 +import Content0 from './Content0';
  9 +import Content7 from './Content7';
  10 +import Content13 from './Content13';
  11 +import Content12 from './Content12';
  12 +// import Footer0 from './Footer0';
  13 +
  14 +import {
  15 + // Nav00DataSource,
  16 + Banner00DataSource,
  17 + Content00DataSource,
  18 + Content70DataSource,
  19 + Content130DataSource,
  20 + Content120DataSource,
  21 + // Footer00DataSource,
  22 +} from './data.source.js';
  23 +
  24 +let isMobile;
  25 +enquireScreen((b) => {
  26 + isMobile = b;
  27 +});
  28 +
  29 +const location = window.location;
  30 +
  31 +export default class Home extends React.Component {
  32 + constructor(props) {
  33 + super(props);
  34 + this.state = {
  35 + isMobile,
  36 + show: !location.port, // 如果不是 dva 2.0 请删除
  37 + };
  38 + }
  39 +
  40 + componentDidMount() {
  41 + // 适配手机屏幕;
  42 + enquireScreen((b) => {
  43 + this.setState({ isMobile: !!b });
  44 + });
  45 + // dva 2.0 样式在组件渲染之后动态加载,导致滚动组件不生效;线上不影响;
  46 + /* 如果不是 dva 2.0 请删除 start */
  47 + if (location.port) {
  48 + // 样式 build 时间在 200-300ms 之间;
  49 + setTimeout(() => {
  50 + this.setState({
  51 + show: true,
  52 + });
  53 + }, 500);
  54 + }
  55 + /* 如果不是 dva 2.0 请删除 end */
  56 + }
  57 +
  58 + render() {
  59 + const children = [
  60 + // <Nav0
  61 + // id="Nav0_0"
  62 + // key="Nav0_0"
  63 + // dataSource={Nav00DataSource}
  64 + // isMobile={this.state.isMobile}
  65 + // />,
  66 + <Banner0
  67 + id="Banner0_0"
  68 + key="Banner0_0"
  69 + dataSource={Banner00DataSource}
  70 + isMobile={this.state.isMobile}
  71 + />,
  72 + <Content0
  73 + id="Content0_0"
  74 + key="Content0_0"
  75 + dataSource={Content00DataSource}
  76 + isMobile={this.state.isMobile}
  77 + />,
  78 + <Content7
  79 + id="Content7_0"
  80 + key="Content7_0"
  81 + dataSource={Content70DataSource}
  82 + isMobile={this.state.isMobile}
  83 + />,
  84 + <Content13
  85 + id="Content13_0"
  86 + key="Content13_0"
  87 + dataSource={Content130DataSource}
  88 + isMobile={this.state.isMobile}
  89 + />,
  90 + <Content12
  91 + id="Content12_0"
  92 + key="Content12_0"
  93 + dataSource={Content120DataSource}
  94 + isMobile={this.state.isMobile}
  95 + />,
  96 + // <Footer0
  97 + // id="Footer0_0"
  98 + // key="Footer0_0"
  99 + // dataSource={Footer00DataSource}
  100 + // isMobile={this.state.isMobile}
  101 + // />,
  102 + ];
  103 + return (
  104 + <div
  105 + className="templates-wrapper"
  106 + ref={(d) => {
  107 + this.dom = d;
  108 + }}
  109 + >
  110 + {/* 如果不是 dva 2.0 替换成 {children} start */}
  111 + {this.state.show && children}
  112 + {/* 如果不是 dva 2.0 替换成 {children} end */}
  113 + </div>
  114 + );
  115 + }
  116 +}
... ...
front-end/landing-page/src/Page2/less/antMotionStyle.less 0 → 100755
  1 +@import './common.less';
  2 +@import './custom.less';
  3 +@import './content.less';
  4 +@import './nav0.less';
  5 +@import './banner0.less';
  6 +@import './content0.less';
  7 +@import './content7.less';
  8 +@import './content13.less';
  9 +@import './content12.less';
  10 +@import './footer0.less';
  11 +@import './edit.less';
... ...
front-end/landing-page/src/Page2/less/banner0.less 0 → 100755
  1 +@import './custom.less';
  2 +@banner0: banner0;
  3 +.@{banner0} {
  4 + width: 100%; // 如果在第一屏且导航位置为 relative, 一屏为 height: calc(~"100vh - 64px");
  5 + height: 100vh;
  6 + position: relative;
  7 + text-align: center;
  8 + border-color: #666;
  9 + background-image: url("https://zos.alipayobjects.com/rmsportal/gGlUMYGEIvjDOOw.jpg");
  10 + background-size: cover;
  11 + background-attachment: fixed;
  12 + background-position: center;
  13 + & &-text-wrapper {
  14 + display: inline-block;
  15 + position: absolute;
  16 + top: 20%;
  17 + margin: auto;
  18 + left: 0;
  19 + right: 0;
  20 + font-size: 14px;
  21 + color: @template-text-color-light;
  22 + width: 550px;
  23 + >.queue-anim-leaving {
  24 + position: relative !important;
  25 + }
  26 + }
  27 + & &-title {
  28 + width: 350px;
  29 + left: 30px;
  30 + min-height: 60px;
  31 + margin: auto;
  32 + display: inline-block;
  33 + font-size: 40px;
  34 + position: relative;
  35 + }
  36 + & &-content {
  37 + margin-bottom: 20px;
  38 + word-wrap: break-word;
  39 + min-height: 24px;
  40 + }
  41 + & &-button {
  42 + border: 1px solid #fff;
  43 + color: #fff;
  44 + background: transparent;
  45 + box-shadow: 0 0 0 transparent;
  46 + line-height: 40px;
  47 + font-size: 16px;
  48 + height: 40px;
  49 + transition: background .45s @ease-out, box-shadow .45s @ease-out;
  50 + &:hover {
  51 + color: #fff;
  52 + border-color: #fff;
  53 + background: rgba(255, 255, 255, 0.1);
  54 + box-shadow: 0 0 10px rgba(50, 250, 255, 0.75);
  55 + }
  56 + &:focus {
  57 + color: #fff;
  58 + border-color: #fff;
  59 + }
  60 + &.queue-anim-leaving {
  61 + width: auto;
  62 + }
  63 + }
  64 + & &-icon {
  65 + bottom: 20px;
  66 + font-size: 24px;
  67 + position: absolute;
  68 + left: 50%;
  69 + margin-left: -12px;
  70 + color: @template-text-color-light;
  71 + }
  72 +}
  73 +
  74 +@media screen and (max-width: 767px) {
  75 + .@{banner0} {
  76 + background-attachment: inherit;
  77 + & &-text-wrapper {
  78 + width: 90%;
  79 + }
  80 + & &-title {
  81 + width: 90%;
  82 + left: 0;
  83 + }
  84 + }
  85 +}
... ...
front-end/landing-page/src/Page2/less/common.less 0 → 100755
  1 +body {
  2 + word-wrap: break-word;
  3 +}
  4 +
  5 +/* .content-wrapper > .tween-one-leaving,
  6 +.queue-anim-leaving {
  7 + // position: absolute !important;
  8 + // width: 100%;
  9 +} */
  10 +
  11 +.video {
  12 + max-width: 800px;
  13 +}
  14 +
  15 +#react-content {
  16 + min-height: 100%;
  17 +}
... ...
front-end/landing-page/src/Page2/less/content.less 0 → 100755
  1 +@homepage: home-page;
  2 +.@{homepage}-wrapper {
  3 + width: 100%;
  4 + position: relative;
  5 + overflow: hidden;
  6 + .@{homepage} {
  7 + height: 100%;
  8 + max-width: 1200px;
  9 + position: relative;
  10 + margin: auto;
  11 + will-change: transform;
  12 + }
  13 + .title-wrapper > h1, > h1 {
  14 + font-size: 32px;
  15 + color: @text-color;
  16 + margin-bottom: 16px;
  17 + }
  18 + .title-wrapper {
  19 + margin: 0 auto 64px;
  20 + text-align: center;
  21 + }
  22 +}
  23 +
  24 +.@{homepage} {
  25 + // padding: 128px 24px;
  26 + padding: 24px;
  27 +}
  28 +
  29 +@media screen and (max-width: 767px) {
  30 + .@{homepage}-wrapper {
  31 + .@{homepage} {
  32 + padding: 56px 24px;
  33 + >h1 {
  34 + font-size: 24px;
  35 + margin: 0 auto 32px;
  36 + &.title-h1 {
  37 + margin-bottom: 8px;
  38 + }
  39 + }
  40 + >p {
  41 + margin-bottom: 32px;
  42 + }
  43 + }
  44 + }
  45 +}
... ...
front-end/landing-page/src/Page2/less/content0.less 0 → 100755
  1 +@import './custom.less';
  2 +@content0: content0;
  3 +.@{content0}-wrapper {
  4 + height: 446px;
  5 + overflow: hidden;
  6 + .@{content0} {
  7 + overflow: hidden;
  8 + height: 100%;
  9 + padding: 64px 24px;
  10 + > .title-wrapper {
  11 + margin: 0 auto 48px;
  12 + }
  13 + .block-wrapper {
  14 + position: relative;
  15 + height: 100%;
  16 + overflow: hidden;
  17 + top: 25%;
  18 + padding: 20px 0;
  19 + .block {
  20 + padding: 0 4%;
  21 + display: inline-block;
  22 + text-align: center;
  23 + height: 200px;
  24 + margin-bottom: 48px;
  25 + &.queue-anim-leaving {
  26 + position: relative !important;
  27 + }
  28 + .icon {
  29 + width: 100px;
  30 + height: 100px;
  31 + margin: auto;
  32 + display: flex;
  33 + align-items: center;
  34 + }
  35 + >h3 {
  36 + line-height: 32px;
  37 + margin: 10px auto;
  38 + }
  39 + }
  40 + }
  41 + }
  42 +}
  43 +
  44 +@media screen and (max-width: 767px) {
  45 + .@{content0}-wrapper {
  46 + height: 880px;
  47 + }
  48 +}
... ...
front-end/landing-page/src/Page2/less/content12.less 0 → 100755
  1 +@import './custom.less';
  2 +@content12: content12;
  3 +.@{content12}-wrapper {
  4 + background-color: #fafafa;
  5 + min-height: 470px;
  6 + .@{content12} {
  7 + padding: 64px 24px;
  8 + >p {
  9 + text-align: center;
  10 + }
  11 + }
  12 + .img-wrapper {
  13 + margin: 0 auto;
  14 + left: 0;
  15 + right: 0;
  16 + .block {
  17 + margin-bottom: 40px;
  18 + .block-content {
  19 + display: flex;
  20 + border-radius: 4px;
  21 + text-align: center;
  22 + position: relative;
  23 + overflow: hidden;
  24 + border: none;
  25 + height: 64px;
  26 + align-items: center;
  27 + transition: box-shadow .3s @ease-out, transform .3s @ease-out;
  28 + & > span {
  29 + width: 100%;
  30 + display: block;
  31 + }
  32 + }
  33 + }
  34 + }
  35 +}
  36 +
  37 +@media screen and (max-width: 767px) {
  38 + .@{content12}-wrapper {
  39 + overflow: hidden;
  40 + .@{content12} {
  41 + ul {
  42 + li {
  43 + display: block;
  44 + width: 100%;
  45 + padding: 2%;
  46 + span {
  47 + height: 168px;
  48 + }
  49 + }
  50 + }
  51 + }
  52 + }
  53 +}
... ...
front-end/landing-page/src/Page2/less/content13.less 0 → 100755
  1 +@import './custom.less';
  2 +@content13: content13;
  3 +.@{content13}-wrapper {
  4 + min-height: 380px;
  5 + background: url("https://gw.alipayobjects.com/zos/rmsportal/ZsWYzLOItgeaWDSsXdZd.svg") no-repeat bottom;
  6 + background-size: cover;
  7 + background-size: 100%;
  8 + margin: 0 auto;
  9 + overflow: hidden;
  10 + padding: 96px 0;
  11 + &.home-page-wrapper {
  12 + .title-wrapper {
  13 + margin-bottom: 32px;
  14 + }
  15 + }
  16 + .title-content {
  17 + line-height: 32px;
  18 + }
  19 +}
  20 +
  21 +@media screen and (max-width: 767px) {
  22 + .@{content13}-wrapper {
  23 + padding-bottom: 0;
  24 + }
  25 +}
... ...
front-end/landing-page/src/Page2/less/content7.less 0 → 100755
  1 +@import './custom.less';
  2 +@content7: content7;
  3 +.@{content7}-wrapper {
  4 + min-height: 720px;
  5 + .@{content7} {
  6 + >h1,
  7 + >p {
  8 + text-align: center;
  9 + }
  10 + &-tag {
  11 + & i {
  12 + width: 12px;
  13 + height: 14px;
  14 + display: inline-block;
  15 + vertical-align: middle;
  16 + margin-right: 5px;
  17 + }
  18 + &-name {
  19 + display: inline-block;
  20 + }
  21 + }
  22 + .ant-tabs-bar {
  23 + text-align: center;
  24 + }
  25 + .ant-tabs {
  26 + .ant-tabs-nav {
  27 + float: none;
  28 + text-align: center;
  29 + }
  30 + }
  31 + &-tabs-wrapper {
  32 + position: relative;
  33 + margin-top: 24px;
  34 + }
  35 + &-content {
  36 + display: flex;
  37 + align-items: center;
  38 + }
  39 + &-text {
  40 + padding: 24px 48px;
  41 + }
  42 + &-img {
  43 + padding: 24px 48px;
  44 + }
  45 + .ant-tabs-tabpane {
  46 + margin-top: 40px;
  47 + }
  48 + }
  49 +}
  50 +
  51 +@media screen and (max-width: 767px) {
  52 + .@{content7}-wrapper {
  53 + min-height: 980px;
  54 + overflow: hidden;
  55 + .@{content7} {
  56 + max-width: 100%;
  57 + &-content {
  58 + display: block;
  59 + }
  60 + &-text,
  61 + &-img {
  62 + text-align: left;
  63 + padding: 0;
  64 + }
  65 + &-img {
  66 + margin-top: 32px;
  67 + }
  68 + .ant-tabs-bar {
  69 + width: auto;
  70 + .ant-tabs-nav {
  71 + float: left;
  72 + }
  73 + }
  74 + }
  75 + }
  76 +}
... ...
front-end/landing-page/src/Page2/less/custom.less 0 → 100755
  1 +@import "~antd/lib/style/v2-compatible-reset.less";
  2 +@import "~antd/lib/style/themes/default.less";
  3 +
  4 +@line-color: #e9e9e9;
  5 +
  6 +@shadow-color: rgba(0, 0, 0, 0.15);
  7 +
  8 +// @template-bg-color: #001529;
  9 +@template-bg-color: #fff;
  10 +@template-bg-color-light: #ececec;
  11 +@template-nav-bg-color: fade(@template-bg-color, 95%);
  12 +@template-text-color: #ccc;
  13 +@template-text-title-color: #bcbcbc;
  14 +@template-text-color-light: #fff;
  15 +@template-footer-text-color: #999;
  16 +
  17 +@animate-duration: .45s;
  18 +
  19 +// 详细页图片或框框的样式;
  20 +.page-shadow() {
  21 + box-shadow: 0 5px 8px @shadow-color;
  22 +}
  23 +
  24 +.page-pro() {
  25 + border-radius: 6px;
  26 + border: 1px solid @line-color;
  27 + transform: translateY(0);
  28 + transition: transform .3s @ease-out, box-shadow .3s @ease-out;
  29 + &:hover {
  30 + .page-shadow();
  31 + transform: translateY(-5px);
  32 + }
  33 +}
... ...
front-end/landing-page/src/Page2/less/edit.less 0 → 100755
  1 +div > .templates-wrapper > .jnwq7vhwgqg-editor_css {
  2 + background-image: none;
  3 +}
... ...
front-end/landing-page/src/Page2/less/footer0.less 0 → 100755
  1 +@import './custom.less';
  2 +.footer0-wrapper {
  3 + background-color: @template-bg-color;
  4 + height: 80px;
  5 + overflow: hidden;
  6 + .footer0 {
  7 + height: 100%;
  8 + padding: 0 24px;
  9 + line-height: 80px;
  10 + text-align: center;
  11 + color: @template-footer-text-color;
  12 + position: relative;
  13 + }
  14 +}
  15 +
  16 +@media screen and (max-width: 767px) {
  17 + .footer0-wrapper {
  18 + .footer0 {
  19 + font-size: 12px;
  20 + &.home-page {
  21 + padding: 0;
  22 + }
  23 + >div {
  24 + width: 90%;
  25 + margin: auto;
  26 + }
  27 + }
  28 + }
  29 +}
... ...
front-end/landing-page/src/Page2/less/nav0.less 0 → 100755
  1 +@import './custom.less';
  2 +@header: header0;
  3 +.@{header} {
  4 + background: @template-nav-bg-color;
  5 + width: 100%;
  6 + z-index: 1;
  7 + box-shadow: 0 5px 8px fade(#000, 15);
  8 + position: relative;
  9 + top: 0;
  10 + .home-page {
  11 + padding: 0 24px;
  12 + }
  13 + &-logo {
  14 + display: inline-block;
  15 + position: relative;
  16 + width: 150px;
  17 + line-height: 64px;
  18 + & img {
  19 + vertical-align: middle;
  20 + display: inline-block;
  21 + }
  22 + & a {
  23 + display: block;
  24 + }
  25 + }
  26 + &-menu {
  27 + float: right;
  28 + >.ant-menu {
  29 + line-height: 62px;
  30 + background: transparent;
  31 + color: @template-text-color-light;
  32 + height: 64px;
  33 + border-bottom-color: transparent;
  34 + position: relative;
  35 + a {
  36 + // color: @template-text-color-light;
  37 + &:hover {
  38 + color: @primary-color;
  39 + }
  40 + }
  41 + }
  42 + }
  43 + .ant-menu-item-selected a {
  44 + color: @primary-color;
  45 + }
  46 +}
  47 +
  48 +@media screen and (max-width: 767px) {
  49 + .@{header} {
  50 + &-logo {
  51 + z-index: 101;
  52 + }
  53 + &.home-page-wrapper .home-page {
  54 + padding: 0 24px;
  55 + }
  56 + & &-menu {
  57 + height: auto;
  58 + float: inherit;
  59 + position: relative;
  60 + left: -24px;
  61 + width: ~"calc(100% + 48px)";
  62 + opacity: 0;
  63 + transition: opacity .3s @ease-in-out, height .3s @ease-in-out;
  64 + & li {
  65 + padding: 0 24px;
  66 + &.ant-menu-submenu {
  67 + padding: 0;
  68 + }
  69 + }
  70 + & .ant-menu-submenu .ant-menu-sub {
  71 + padding: 0 24px;
  72 + }
  73 + }
  74 + &-mobile-menu {
  75 + width: 16px;
  76 + height: 14px;
  77 + cursor: pointer;
  78 + position: absolute;
  79 + top: 24px;
  80 + right: 24px;
  81 + z-index: 100;
  82 + em {
  83 + display: block;
  84 + width: 100%;
  85 + height: 2px;
  86 + background: #fff;
  87 + margin-top: 4px;
  88 + transition: transform .3s @ease-in-out, opacity .3s @ease-in-out;
  89 + }
  90 + :first-child {
  91 + margin-top: 0;
  92 + }
  93 + }
  94 + .ant-menu {
  95 + height: auto;
  96 + overflow: hidden;
  97 +
  98 + background: @template-bg-color;
  99 + .ant-menu-item-selected {
  100 + border: none;
  101 + }
  102 + a {
  103 + color: @template-text-color-light;
  104 + &:hover {
  105 + color: @template-text-color-light;
  106 + }
  107 + }
  108 + .ant-menu-item-selected a {
  109 + color: @template-text-color-light;
  110 + }
  111 + }
  112 + & .open {
  113 + height: auto;
  114 + .@{header}-mobile-menu {
  115 + em {
  116 + &:nth-child(1) {
  117 + transform: translateY(6px) rotate(45deg);
  118 + }
  119 + &:nth-child(2) {
  120 + opacity: 0;
  121 + }
  122 + &:nth-child(3) {
  123 + transform: translateY(-6px) rotate(-45deg);
  124 + }
  125 + }
  126 + }
  127 + >.@{header}-menu {
  128 + opacity: 1;
  129 + pointer-events: auto;
  130 + }
  131 + }
  132 + }
  133 +}
... ...
front-end/landing-page/src/assets/home/banner.svg 0 → 100644
  1 +<svg id="f2059cf3-5beb-4c16-b86e-a491cbb2d73f" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1096.46" height="805.97" viewBox="0 0 1096.46 805.97"><defs><linearGradient id="fe3366dc-1c26-4135-9415-0b0409d0ae5c" x1="699.46" y1="846.78" x2="699.46" y2="546.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="gray" stop-opacity="0.25"/><stop offset="0.54" stop-color="gray" stop-opacity="0.12"/><stop offset="1" stop-color="gray" stop-opacity="0.1"/></linearGradient></defs><title>mobile marketing</title><path d="M693.59,158.42c-64.72-2.25-126.36-23.14-185.22-46S391.21,64.23,328,52.12C287.41,44.33,240.94,43.23,208.2,65c-31.5,21-41.68,57.15-47.15,90.72-4.12,25.27-6.54,51.85,4.74,75.5,7.84,16.42,21.74,30.22,31.36,46,33.47,54.72,9.81,122.2-26.45,175.63-17,25.06-36.75,49-49.88,75.66s-19.2,57.25-7.71,84.46c11.38,27,38.51,47.24,67.9,61.5,59.69,28.94,130,37.23,198.61,41.92,151.83,10.39,304.46,5.89,456.69,1.39,56.34-1.67,112.92-3.36,168.34-12.07,30.78-4.84,62.55-12.52,84.89-31,28.37-23.53,35.4-63.38,16.39-92.88-31.88-49.49-120-61.79-142.31-114.9-12.26-29.23.33-61.8,18.16-88.91,38.24-58.17,102.33-109.19,105.7-175.68,2.32-45.66-28.49-91.39-76.13-113-49.93-22.65-119.18-19.8-156,17.69C817.4,145.55,750.74,160.4,693.59,158.42Z" transform="translate(-51.77 -47.02)" fill="#74adff" opacity="0.1"/><g opacity="0.9"><rect x="708.33" y="248.78" width="8.86" height="73.02" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="413.89" y="191.58" width="4.97" height="24.04" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="413.71" y="235.59" width="5.6" height="41.84" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="413.8" y="292.07" width="5.33" height="42.2" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="416.71" y="112.14" width="296.4" height="602.39" rx="38.99" ry="38.99" fill="#3a3768"/><rect x="536.31" y="130.12" width="41.39" height="8.4" rx="3.87" ry="3.87" fill="#e6e8ec"/><circle cx="588.73" cy="134.33" r="4.77" fill="#e6e8ec"/></g><ellipse cx="238.04" cy="728.39" rx="199.97" ry="20.38" fill="#74adff" opacity="0.1"/><ellipse cx="682.68" cy="796.42" rx="93.68" ry="9.55" fill="#74adff" opacity="0.1"/><ellipse cx="1002.78" cy="748.3" rx="93.68" ry="9.55" fill="#74adff" opacity="0.1"/><path d="M723,174.84H689.1v4.09a19.38,19.38,0,0,1-19.38,19.38H561.54a19.38,19.38,0,0,1-19.38-19.38v-4.09H510.32a23.53,23.53,0,0,0-23.53,23.54V722.31a23.53,23.53,0,0,0,23.53,23.54H723a23.54,23.54,0,0,0,23.54-23.54V198.38A23.54,23.54,0,0,0,723,174.84Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M867.49,132.73s-84.2-5.08-74.27,53.92c0,0-2,10.43,7.48,15.16,0,0,.15-4.37,8.63-2.89a38.44,38.44,0,0,0,9.15.44,19,19,0,0,0,11.19-4.61h0s23.66-9.78,32.87-48.46c0,0,6.81-8.44,6.54-10.61l-14.21,6.07s4.85,10.25,1,18.77c0,0-.46-18.4-3.19-18-.56.08-7.39,3.55-7.39,3.55s8.36,17.85,2,30.83c0,0,2.39-22-4.66-29.54l-10,5.84s9.76,18.44,3.15,33.49c0,0,1.69-23.08-5.25-32.07l-9.06,7.07s9.17,18.17,3.58,30.65c0,0-.74-26.86-5.55-28.89,0,0-7.93,7-9.14,9.86,0,0,6.28,13.2,2.39,20.16,0,0-2.39-17.9-4.35-18,0,0-7.9,11.86-8.72,20,0,0,.34-12.09,6.8-21.12,0,0-7.63,1.31-12.09,6.26,0,0,1.23-8.38,14-9.12,0,0,6.53-9,8.28-9.54,0,0-12.75-1.07-20.48,2.36,0,0,6.8-7.91,22.82-4.31l8.94-7.31s-16.78-2.29-23.9.24c0,0,8.2-7,26.32-1.9l9.74-5.82s-14.31-3.09-22.84-2c0,0,9-4.85,25.69.41l7-3.13s-10.49-2.06-13.56-2.39-3.23-1.17-3.23-1.17A36.35,36.35,0,0,1,853,139.19S867.74,133.66,867.49,132.73Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M781.13,106.49s-38-2.29-33.56,24.37c0,0-.89,4.71,3.38,6.85,0,0,.07-2,3.9-1.31a17.51,17.51,0,0,0,4.13.2,8.62,8.62,0,0,0,5.06-2.08h0s10.69-4.42,14.85-21.9c0,0,3.08-3.81,3-4.79l-6.42,2.74s2.19,4.63.46,8.48c0,0-.2-8.31-1.44-8.12-.25,0-3.33,1.61-3.33,1.61s3.77,8.06.92,13.93c0,0,1.08-9.94-2.1-13.35l-4.52,2.64s4.41,8.33,1.42,15.13c0,0,.77-10.43-2.37-14.49l-4.1,3.2s4.15,8.21,1.62,13.85c0,0-.33-12.14-2.5-13.06,0,0-3.59,3.16-4.13,4.46,0,0,2.83,6,1.07,9.11,0,0-1.08-8.09-2-8.13,0,0-3.57,5.36-3.94,9a19.46,19.46,0,0,1,3.07-9.54,10.71,10.71,0,0,0-5.46,2.83s.55-3.79,6.34-4.12c0,0,2.95-4.07,3.74-4.32,0,0-5.76-.48-9.25,1.07,0,0,3.07-3.57,10.31-2l4-3.3s-7.58-1-10.8.11c0,0,3.71-3.16,11.89-.86l4.4-2.63s-6.46-1.39-10.31-.89c0,0,4.06-2.19,11.6.18l3.15-1.41s-4.73-.93-6.12-1.08-1.46-.53-1.46-.53a16.36,16.36,0,0,1,8.89,1S781.24,106.91,781.13,106.49Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><ellipse cx="40.21" cy="678.57" rx="40.21" ry="6.8" fill="#74adff"/><path d="M108.6,714.46a11.63,11.63,0,0,0,3.84-5.78c.49-2.3-.49-5-2.68-5.89-2.46-.95-5.09.76-7.08,2.48s-4.28,3.69-6.89,3.32A10.47,10.47,0,0,0,99,698.78a4,4,0,0,0-.9-2c-1.36-1.46-3.84-.83-5.48.32-5.2,3.66-6.65,10.72-6.67,17.08-.53-2.3-.09-4.69-.1-7s-.66-5-2.64-6.22a8,8,0,0,0-4-.95c-2.34-.08-4.94.15-6.54,1.86-2,2.12-1.47,5.69.26,8s4.35,3.8,6.76,5.42a14.92,14.92,0,0,1,4.84,4.61,4.41,4.41,0,0,1,.36.82H99.54A40.77,40.77,0,0,0,108.6,714.46Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M882.34,630.54s8.65,11.32-4,28.4-23.07,31.5-18.85,42.15c0,0,19.08-31.72,34.61-32.17S899.42,649.62,882.34,630.54Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M882.34,630.54a14.25,14.25,0,0,1,1.77,3.55c15.15,17.8,23.22,34.42,8.65,34.83-13.56.39-29.84,24.65-33.73,30.77a11.46,11.46,0,0,0,.46,1.4s19.08-31.72,34.61-32.17S899.42,649.62,882.34,630.54Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M898.42,645c0,4-.45,7.21-1,7.21s-1-3.23-1-7.21.56-2.1,1.11-2.1S898.42,641,898.42,645Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M903.94,649.72c-3.5,1.9-6.54,3.06-6.81,2.57s2.36-2.42,5.86-4.33,2.11-.51,2.38,0S907.44,647.81,903.94,649.72Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M836.64,630.54s-8.65,11.32,4,28.4,23.07,31.5,18.86,42.15c0,0-19.08-31.72-34.61-32.17S819.56,649.62,836.64,630.54Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M836.64,630.54a13.85,13.85,0,0,0-1.77,3.55c-15.15,17.8-23.22,34.42-8.66,34.83,13.57.39,29.84,24.65,33.74,30.77a13.48,13.48,0,0,1-.46,1.4s-19.08-31.72-34.61-32.17S819.56,649.62,836.64,630.54Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M820.55,645c0,4,.45,7.21,1,7.21s1-3.23,1-7.21-.56-2.1-1.11-2.1S820.55,641,820.55,645Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M815,649.72c3.49,1.9,6.54,3.06,6.8,2.57s-2.35-2.42-5.85-4.33-2.12-.51-2.38,0S811.54,647.81,815,649.72Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M823.31,699.61s24.19-.75,31.48-5.94,37.21-11.39,39-3.06,36.35,41.41,9,41.63-63.46-4.26-70.73-8.69S823.31,699.61,823.31,699.61Z" transform="translate(-51.77 -47.02)" fill="#a8a8a8"/><path d="M903.34,729.34c-27.31.22-63.46-4.26-70.73-8.69-5.55-3.37-7.75-15.48-8.49-21.07l-.81,0s1.53,19.51,8.81,23.94,43.42,8.91,70.73,8.69c7.88-.07,10.61-2.87,10.46-7C912.21,727.72,909.21,729.29,903.34,729.34Z" transform="translate(-51.77 -47.02)" opacity="0.2"/><rect x="584.53" y="487.87" width="78.03" height="78.03" fill="#3a3768" opacity="0.3"/><rect x="469.53" y="384.87" width="78.03" height="78.03" fill="#3a3768" opacity="0.3"/><rect x="477.03" y="589.11" width="78.03" height="78.03" fill="#3a3768" opacity="0.3"/><rect x="459.62" y="193.28" width="78.03" height="78.03" fill="#fff"/><path d="M565.55,265.79l-2.77,2.76a9.77,9.77,0,0,1,0,13.83l2.77,2.78a13.7,13.7,0,0,0,0-19.37Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M571.09,260.46l-2.73,2.73a17.38,17.38,0,0,1,0,24.56l2.73,2.73a21.22,21.22,0,0,0,0-30Zm-13,10.22v-12.5h-3.85l-11.52,9.6H527.36l-3.84,1.92v13.45l3.84,1.92L537,300.44h5.76l-3.6-15.37h3.6l11.52,7.69h3.85v-12.5a4.91,4.91,0,0,0,0-9.58Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="656.92" y="522.77" width="78.03" height="78.03" transform="translate(-248.8 565.21) rotate(-42.14)" fill="#fff"/><path d="M673.34,551.14,679,546,710,580.17l-5.7,5.16Zm13.37,32,5.7-5.15,9,10-5.7,5.15Zm11.94-21.16,5.7-5.16,14.17,15.67-5.69,5.15Zm.81-16.28,5.7-5.16,21.91,24.21-5.7,5.16Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="583.24" y="287.31" width="78.03" height="78.03" fill="#fff"/><path d="M688.84,364l-10.47,16a5.7,5.7,0,0,1,1.3,3.64,5.77,5.77,0,0,1-11.53,0,6.36,6.36,0,0,1,.1-1.07l-6.92-4a5.79,5.79,0,0,1-6.83.86l-7.36,6.89v6.87a5.14,5.14,0,0,0,5.13,5.13H695.8a5.15,5.15,0,0,0,5.13-5.13V367.67l-7-4.67a5.7,5.7,0,0,1-3.53,1.22,5.87,5.87,0,0,1-1.52-.21Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M657.33,368.66a5.76,5.76,0,0,1,5.77,5.76c0,.25,0,.51-.05.75l7.22,4a5.67,5.67,0,0,1,3.65-1.3,5.54,5.54,0,0,1,1.24.14l10.5-16.26a5.76,5.76,0,1,1,10.46-3.34,6,6,0,0,1-.16,1.36l5,3.31v-9.62a5.14,5.14,0,0,0-5.13-5.12H652.26a5.13,5.13,0,0,0-5.13,5.12V381l4.8-4.6a5.82,5.82,0,0,1-.36-2A5.76,5.76,0,0,1,657.33,368.66Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="484.6" y="374.31" width="78.03" height="78.03" fill="#fff"/><path d="M598.93,435.49l-48,26a1,1,0,0,0,.07,1.79l8.19,3.09a2,2,0,0,1,1.08,1l6.36,13.1c.12.58,1.19.74,1.2.15l-1-10.83a3.85,3.85,0,0,1,.88-2.19l24.88-24.38a.62.62,0,0,1,.55-.16.57.57,0,0,1,.31.91L572,470.19a4.79,4.79,0,0,0-.84,2.16l-1.28,9.35c.1.82.74,1.13,1.26.4l4.62-5.43a1,1,0,0,1,1.36-.22l11.91,8.68a1,1,0,0,0,1.51-.59l9.77-48a1,1,0,0,0-1.4-1.08Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1023.61,779.61c4.54.59,9.25,1,13.6-.46.67-.21,1.44-.67,1.35-1.36a1.6,1.6,0,0,0-.31-.66,42.41,42.41,0,0,1-4.13-7.83.64.64,0,0,0-.25-.35.61.61,0,0,0-.44,0c-2,.52-3.74,1.82-5.74,2.37a8.2,8.2,0,0,1-3.12.24c-.9-.1-2.14-.85-2.95-.76C1022.12,773.77,1023.26,776.58,1023.61,779.61Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1109.54,772c3-2,6.1-4.22,7.87-7.39a1.21,1.21,0,0,0,.21-.63,1.3,1.3,0,0,0-.25-.62,25.62,25.62,0,0,0-6.39-6.9,18.89,18.89,0,0,0-3.57,3.29c-.75.79-2.83,2.09-2.85,3.27,0,.71.79,1.48,1.16,2,.5.74,1,1.5,1.43,2.26C1107.38,767.74,1109.76,771.88,1109.54,772Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1041.41,788.79a3,3,0,0,1-.54,2,2.67,2.67,0,0,1-1.15.67c-6.36,2.27-13.68-.57-20,1.68-1.31.46-2.54,1.12-3.85,1.56a20.85,20.85,0,0,1-4.77.85c-2.25.22-4.5.35-6.75.41a16.33,16.33,0,0,1-5.08-.44,6.15,6.15,0,0,1-3.9-3.09,3,3,0,0,1-.19-2.2,2.49,2.49,0,0,1,.41-.71,6.09,6.09,0,0,1,1.5-1.21l2.34-1.51a15.63,15.63,0,0,1,3.54-1.88c.92-.3,1.91-.43,2.84-.7,3.29-1,5.79-3.57,8.12-6.07l3.18-3.39a3.11,3.11,0,0,1,1.1-.88,3,3,0,0,1,1.36-.14,18.37,18.37,0,0,1,8.67,2.92,12.51,12.51,0,0,0,2.14,1.26,7.64,7.64,0,0,0,6-.75c.82-.43.64-.7,1-1.47s1.18-1.27,1.9-.56a2.09,2.09,0,0,1,.45.86c.7,2.27.43,4.7.43,7.07a3.14,3.14,0,0,0,.14,1.1,6.69,6.69,0,0,0,.62,1,1.58,1.58,0,0,1,.13.26A6.94,6.94,0,0,1,1041.41,788.79Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M1041.41,788.79a3,3,0,0,1-.54,2,2.67,2.67,0,0,1-1.15.67c-6.36,2.27-13.68-.57-20,1.68-1.31.46-2.54,1.12-3.85,1.56a20.85,20.85,0,0,1-4.77.85c-2.25.22-4.5.35-6.75.41a16.33,16.33,0,0,1-5.08-.44,6.15,6.15,0,0,1-3.9-3.09,3,3,0,0,1-.19-2.2,2.49,2.49,0,0,1,.41-.71c.38.78.65,1.8.88,2.17a4.44,4.44,0,0,0,3,2.15,7.61,7.61,0,0,0,2.71-.35c5.76-1.43,11.88-1.45,17.4-3.61a41.57,41.57,0,0,1,5.7-2.19,45.28,45.28,0,0,1,6.16-.5c3.25-.26,6.39-1.24,9.6-1.75A6.94,6.94,0,0,1,1041.41,788.79Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M1124.06,771.61c-.3,2.41-1.83,4.49-3.51,6.25a40.07,40.07,0,0,0-4.9,5.37c-1.66,2.52-2.39,5.63-4.53,7.76a12.27,12.27,0,0,1-2.72,2,18.8,18.8,0,0,1-3.53,1.62c-3.19,1-6.63.79-10,.55a8.89,8.89,0,0,1-3.16-.62,9.18,9.18,0,0,1-1.34-.81,6.36,6.36,0,0,1-2-2.07,2.08,2.08,0,0,1-.19-1.49,3.4,3.4,0,0,1,1-1.46,22.6,22.6,0,0,1,2.41-2.17,14.31,14.31,0,0,0,3.14-2.76,9,9,0,0,0,1.21-2.76,24.73,24.73,0,0,0,.88-5.25,16.54,16.54,0,0,1,.37-3.51c.51-1.8,1.85-3.43,1.69-5.3a1.36,1.36,0,0,1,.07-.8,1.25,1.25,0,0,1,.63-.39,11.4,11.4,0,0,1,3.28-.75,3.78,3.78,0,0,1,3,1.19c.47.56.77,1.34,1.46,1.59a2.42,2.42,0,0,0,1,0c1.68-.17,3.47-.38,4.76-1.47a6,6,0,0,0,2-4.37c0-.62-.28-1.27.67-1.4.73-.1,1.3.66,1.67,1.16a16.32,16.32,0,0,1,3.21,5.85,1.62,1.62,0,0,1,.61-.12,2.61,2.61,0,0,1,2.18,1.12A4.32,4.32,0,0,1,1124.06,771.61Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M1124.06,771.61c-.3,2.41-1.83,4.49-3.51,6.25a40.07,40.07,0,0,0-4.9,5.37c-1.66,2.52-2.39,5.63-4.53,7.76a12.27,12.27,0,0,1-2.72,2,18.8,18.8,0,0,1-3.53,1.62c-3.19,1-6.63.79-10,.55a8.89,8.89,0,0,1-3.16-.62,9.18,9.18,0,0,1-1.34-.81,6.36,6.36,0,0,1-2-2.07,4.87,4.87,0,0,1,2.06-.49c1.49.08,2.57,1.48,4,1.91,2,.61,4-.82,6.09-1.31,1.34-.31,2.76-.22,4.07-.65a10.05,10.05,0,0,0,3-1.82,15.23,15.23,0,0,0,3.21-3.1,19.76,19.76,0,0,0,1.89-3.76,53.71,53.71,0,0,1,3.81-7.29,4.84,4.84,0,0,1,.78-1c.31-.29.7-.5,1-.76,1.37-1,1.94-2.77,2.42-4.41a7.38,7.38,0,0,1,.54-1.47,2.61,2.61,0,0,1,2.18,1.12A4.32,4.32,0,0,1,1124.06,771.61Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M980.4,558a14.52,14.52,0,0,1,4.08,4.77c1,1.88,6.49,16.48,6.17,18.57,1.8-1.82,8.94-2.12,10.73-3.93.76-.76,4.87-4.56,5.48-5.44s5.19-2.77,5.69-3.67c1.87-3.35-13.26-16-11.33-19.36a.82.82,0,0,0,.16-.52.8.8,0,0,0-.25-.4,24.08,24.08,0,0,0-4.38-3,7,7,0,0,1-3.34-4,14.37,14.37,0,0,0-3.87,2.62q-4.15,3.55-8.18,7.28c-1.06,1-3.08,2.27-3.57,3.66S979.39,557.18,980.4,558Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M1004.89,552.61a43.84,43.84,0,0,0-6.48,5.3c-1.88,1.85-3.66,4-4.13,6.61-.19,1-.16,2.06-.32,3.09-.67,4.48-4.56,7.77-6.27,12a20.52,20.52,0,0,0-1.1,4,47.15,47.15,0,0,0-.78,7.86c0,2.56,2.46,4.32,3.38,6.71a40.7,40.7,0,0,1,1.63,7.27,88.58,88.58,0,0,0,4.09,13.5c3.38,9.33,14.33,35.13,17.71,44.47,10.35-2.6,37.91-8.57,47.07-14,3.06-1.82-21.2-22.38-17.93-23.8a1.65,1.65,0,0,0,.91-.69,1.58,1.58,0,0,0,0-1c-3.26-14.29-13.49-26-18.12-40-1.61-4.83-4.5-8.95-6.7-13.55-2-4.16-3.05-8.75-5.42-12.7a8.49,8.49,0,0,0-1.73-2.17,10.61,10.61,0,0,0-1.92-1.15C1007.47,553.66,1006.21,553.27,1004.89,552.61Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><circle cx="929.18" cy="493.15" r="16.2" fill="#a1616a"/><path d="M997.43,547.78a5.43,5.43,0,0,1,6.09-.87,3,3,0,0,1,1.81,2.92l8,.12a16.74,16.74,0,0,1,3.81.35,5.54,5.54,0,0,1,3.18,2c.1.13.21.28.37.31a.64.64,0,0,0,.37-.13,7.05,7.05,0,0,1,4-.72c4.34.28,8.36,2.46,11.76,5.17a3.81,3.81,0,0,1,1.4,1.71c.28.91,0,2.08.66,2.7,0,7.55,2.59,14.58,4.32,21.93.3,1.31,1.56,2.46,2.43,3.49a14,14,0,0,1,2.6,3.88c1.46,3.81-.56,8.28.87,12.11a19.5,19.5,0,0,0,2.76,4.35,11.21,11.21,0,0,1,2.35,5.62c.06.92-.06,1.84,0,2.77a16.88,16.88,0,0,0,.66,3.64c.58,2.21,1.2,4.42,1.84,6.62,1,3.56,2.4,7.41,5.59,9.31-7.71,1.31-15.83,2.58-23.18-.09a12,12,0,0,1-2.89-1.45c-2.65-1.89-3.93-5.13-5.07-8.18-1.28-3.43-2.58-6.91-2.84-10.56a12.08,12.08,0,0,0-.48-3.45c-.75-2-2.73-3.19-4.55-4.29a21.89,21.89,0,0,1-5.47-4.26,8.5,8.5,0,0,1-2.22-6.4c.14-1.13.58-2.22.63-3.36a2.69,2.69,0,0,0-1.56-2.77c-5.61-1.7-8.29-8.34-9.54-14.07a44.89,44.89,0,0,1-.72-9l-.07-5.79a7.68,7.68,0,0,1-2.52-5.54,6.22,6.22,0,0,0,0-1.83,5.13,5.13,0,0,0-1.28-2A16.9,16.9,0,0,1,997.43,547.78Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M980.17,566.31c-.18,1.81.23,3.66-.18,5.44-.16.68-.43,1.33-.63,2a11.8,11.8,0,0,0,.75,7.62,42.35,42.35,0,0,0,3.89,6.75,10.28,10.28,0,0,1,1.25,2.33,12.07,12.07,0,0,1,.48,2.67,81.32,81.32,0,0,0,1.91,10.74c.76,3.08,1.75,6.19,3.78,8.63a2.62,2.62,0,0,0,1.56,1.06,2.82,2.82,0,0,0,1.33-.28l4.14-1.57a2.89,2.89,0,0,0,1-.52,2.51,2.51,0,0,0,.58-1.62c.29-3.34-.71-6.65-1.82-9.81-3.36-9.54-7.82-18.73-10-28.6-.61-2.76-.93-7-2.94-9.15-.83-.9-.55-.52-1.54,0a12.54,12.54,0,0,0-1.45.77A4.75,4.75,0,0,0,980.17,566.31Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M1059.24,625.68" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M992.65,584.41q1.65,8.73,3.37,17.47l16.08-4.22c.13-1.68-.77-3.24-1.39-4.81-1.47-3.68-1.5-7.77-2.69-11.55-.9-2.88-2.46-5.53-3.3-8.43-.49-1.68-.73-3.44-1.21-5.13a39.19,39.19,0,0,0-1.89-4.89,31.16,31.16,0,0,0-3.51-6.51c-2.06.77-4.25,1.66-5.42,3.51a7.46,7.46,0,0,0-1,3.46c-.28,3.62,1,7.25.59,10.83A32,32,0,0,0,992.65,584.41Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1012.37,662c.9,3.44-.41,7-1.47,10.42a80.92,80.92,0,0,0-3.28,15.69,13,13,0,0,1-.81,4,37.42,37.42,0,0,1-1.95,3.2c-1.62,2.86-1.58,6.36-1.23,9.63.23,2.16.58,4.31,1,6.44.53,2.59,1.18,5.31.42,7.84,1.27-.28,2.14,1.36,2.09,2.67s-.51,2.71.11,3.86c1.58.57,1.6,2.74,1.55,4.41a37.19,37.19,0,0,0,1.09,8.64q3.58,17.19,7.6,34.29c5.79,1.8,12.55,3.67,18.07,1.18a3.55,3.55,0,0,0,2.29-2.3,4.14,4.14,0,0,0-.22-1.77l-2.62-9.52a17.53,17.53,0,0,1-.94-7c.26-1.77,1-3.67.16-5.22-.3-.53-.76-1-1.1-1.46-1.38-2-.66-4.69-.54-7.13a5.58,5.58,0,0,0-.12-1.63,8.56,8.56,0,0,0-.77-1.79,27.33,27.33,0,0,1-3-13.6,3.34,3.34,0,0,0-.24-1.78,4.08,4.08,0,0,1-.44-.72,1.93,1.93,0,0,1,.14-1.31,11.38,11.38,0,0,1-2.11-2,3,3,0,0,0,.5-4.62,1.54,1.54,0,0,0,.74-2.65c-.34-.24-.78-.34-1-.68-.37-.5-.07-1.21.23-1.75l1.6-2.89c1.19-2.14,1.46-4.79,2.74-6.88a51.62,51.62,0,0,0,4.22-9.63l4.56-12.7,3.1,2.69a9.71,9.71,0,0,1,2.55,2.91,12.28,12.28,0,0,1,.82,3.48c1.14,6.9,5.49,12.88,7.1,19.69a13.27,13.27,0,0,0,1.46,4.4,9.52,9.52,0,0,1,.84,1.26,6.64,6.64,0,0,1,.35,2.09,9.74,9.74,0,0,0,4.11,7c1.52,1,3.45,1.77,4.25,3.43a6.77,6.77,0,0,0,.7,1.46c.74.89,2.34,1,2.66,2.11.17.63-.16,1.37.2,1.92a1.75,1.75,0,0,0,.75.56l4.47,2.24c5,2.49,7.52,8.2,11.21,12.39a25.73,25.73,0,0,1,3.35,4.44c1.59,2.84,2.33,6.41,5,8.24a7.77,7.77,0,0,1,1.94,1.44c.85,1.11.54,2.67.61,4.07s1.15,3.06,2.48,2.64a9.65,9.65,0,0,0,0,5.17,26.06,26.06,0,0,0,15.8-6.4c1.3-1.14,2.56-2.59,2.57-4.31a1.67,1.67,0,0,0-.19-.86,2.34,2.34,0,0,0-1-.76c-4.17-2.26-5.43-7.5-7.52-11.76-1.85-3.75-4.57-7-6.88-10.48-5-7.5-8.34-16.57-15.85-21.53-1.65-1.09-3.57-2.06-4.39-3.86a30.79,30.79,0,0,1-.88-3.2,2.69,2.69,0,0,0-2.35-2,14.27,14.27,0,0,0,.54-5,6.22,6.22,0,0,0-.25-2.15,10.16,10.16,0,0,0-1.1-2.12,20.55,20.55,0,0,1-2.83-11c.06-2,.41-4-.19-5.91-.3-1-.82-1.83-1.19-2.76a17.21,17.21,0,0,1-.86-5.15l-.41-6.59a31.55,31.55,0,0,0-.85-6.51c-1.39-5.11-2.72-26.52-7.43-28.93s-12.75,14.06-18,14.39a24,24,0,0,0-6.88,1.32c-3.51,1.32-6.46,3.78-9.33,6.19l-9.72,8.16A35.42,35.42,0,0,1,1012.37,662Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M965.74,522.18a12.22,12.22,0,0,1,9.43-4.6,22,22,0,0,1,10.42,2.62,13.43,13.43,0,0,0,3,1.25c1.72.35,3.62-.12,5.17.7,2.06,1.09,2.45,3.87,2.27,6.19s-.61,4.86.62,6.85a19,19,0,0,1,1.19,1.78,5.94,5.94,0,0,1-.11,3.81,30.6,30.6,0,0,1-2-2.51c-.72-.79-1.95-1.33-2.83-.74s-.88,1.68-.92,2.65-.3,2.14-1.22,2.46a2,2,0,0,1-2-.8c-1.57-1.92-.94-5-2.49-6.92-.89-1.1-2.36-1.63-3.18-2.78-.64-.9-.8-2.07-1.36-3s-1.87-1.69-2.75-1a3.74,3.74,0,0,0-.73,1,4.21,4.21,0,0,1-5,1.5,8.77,8.77,0,0,0-2.17-.93,2.67,2.67,0,0,0-2.47,1.34,5.32,5.32,0,0,0-.65,2.86c0,1.35.24,2.83-.54,3.93a4.06,4.06,0,0,1-1.16,1c-1.15.73-2.72,1.22-3.8.39a2.86,2.86,0,0,1-.85-2.66,21.88,21.88,0,0,1,.81-2.81c.6-2.12-.18-4.51.48-6.51A20.49,20.49,0,0,1,965.74,522.18Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M974.42,570.51a2.5,2.5,0,0,0,.15,1.49,2.42,2.42,0,0,0,.81.78,16.78,16.78,0,0,0,7.64,2.47,2.3,2.3,0,0,1,1,.27,1.89,1.89,0,0,1,.45,2.13,5.67,5.67,0,0,0-.48,2.26c.2,1.43,1.89,2.08,3.33,2.26a7.72,7.72,0,0,0,5.79-1.12,8.93,8.93,0,0,0,2.39-3.59c3.93-9,5.31-19,9.29-28a5.69,5.69,0,0,0,.6-1.87,1.86,1.86,0,0,0-.74-1.73c-.74-.46-1.89-.2-2.39-.91-.25-.37-.22-.86-.44-1.24-.46-.82-1.66-.72-2.49-1.16-.64-.35-1.09-1-1.8-1.19a2.3,2.3,0,0,0-1.88.81c-2.33,2.18-3.56,5.27-4.86,8.19a97.27,97.27,0,0,1-7,12.91c.31-.48-1.48-4.13-2.18-4.27-1.22-.25-2.8,1.9-3.46,2.71A17.16,17.16,0,0,0,974.42,570.51Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="930.83" y="536.29" width="78.03" height="78.03" fill="#fff"/><path d="M1022.22,609.51V599.27H996.64v46.1h49.95V609.51Zm-15.35,30.73h-5.11v-5.12h5.11Zm0-10.24h-5.11v-5.12h5.11Zm0-10.24h-5.11v-5.13h5.11Zm0-10.25h-5.11v-5.13h5.11Zm10.23,30.73H1012v-5.12h5.11Zm0-10.24H1012v-5.12h5.11Zm0-10.24H1012v-5.13h5.11Zm0-10.25H1012v-5.13h5.11Zm24.38,30.73h-19.26v-5.12h5.11V630h-5.11v-5.12h5.11v-5.13h-5.11v-5.12h19.26ZM1037,619.76h-5.11v5.13H1037v-5.13Zm0,10.24h-5.11v5.13H1037Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1060,626.29a31.53,31.53,0,0,0-3.7,3.88,7.73,7.73,0,0,0-1.7,5,2.57,2.57,0,0,0,.48,1.46,1.25,1.25,0,0,0,1.39.43,2,2,0,0,0,.68-.61,32,32,0,0,1,2.3-2.5c.3-.29.68-.6,1.08-.49a1.14,1.14,0,0,1,.47.31,3.18,3.18,0,0,1,1,1.51,3.58,3.58,0,0,1-1.06,2.91,7.54,7.54,0,0,0-1.79,2.65,1.13,1.13,0,0,0,0,.85,1.39,1.39,0,0,0,.53.46,7.72,7.72,0,0,0,6.47.42c1.39-.55,2.59-1.51,4-2a9.61,9.61,0,0,0,1.77-.66,3.64,3.64,0,0,0,1.57-2.34,10,10,0,0,0,.11-2.89,33,33,0,0,0-2.41-10.9,1.3,1.3,0,0,0-.39-.58,1.37,1.37,0,0,0-.66-.19c-1.75-.18-4.63-1.08-6.32-.43a4.32,4.32,0,0,0-1.49,1.33C1061.94,624.26,1060,625.83,1060,626.29Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M1059.4,624.74c0-1.68-2.08-5.71,1.21-6,0-1.78-2.53-2.9-2.07-4.78.16-.64.67-1.15.75-1.79.21-1.83-3.09-2.82-2.55-4.58.2-.67.93-1.08,1.09-1.76.37-1.58-2.46-2.29-2.51-3.91,0-.55.3-1.07.28-1.61,0-.69-.6-1.21-.93-1.8-.85-1.53-.44-3.9-2-4.68,1,.08,1.39-1.45.95-2.39s-1.3-1.75-1.3-2.79a4.43,4.43,0,0,0,0-1.15c-.29-1-1.93-1.07-2.2-2.07a10.67,10.67,0,0,1,0-1.13c-.1-.78-.9-1.26-1.65-1.49a6.56,6.56,0,0,1-2.2-.78c-.48-.37-1-1-1.55-.65-.19.11-.29.33-.44.5-.61.71-1.78.4-2.56-.13-2.29-1.55-3.42-4.34-3.92-7.06s-.47-5.53-1.07-8.23A18.85,18.85,0,0,0,1036,564a12.73,12.73,0,0,1-1.16-2.46c-.12-1.57,3.14-.5,4.38-.34a19.44,19.44,0,0,1,3.56.67,37.65,37.65,0,0,1,3.63,1.59c5,2.19,10.92,2.46,14.9,6.13,1.31,1.21,2.41,2.79,4.1,3.33a20.93,20.93,0,0,1,2.3.6c1.89.89,2.18,3.39,3.21,5.2a11.11,11.11,0,0,1,.85,1.5,5.91,5.91,0,0,1,.27,1.92l.14,4.75c.23,8,.47,15.93-.38,23.84-.28,2.6-.67,5.29.09,7.8.2.68.49,1.33.66,2a13.62,13.62,0,0,1,.26,2.47l.11,3.07a1,1,0,0,1-.15.71,1,1,0,0,1-.83.2c-4.29-.38-8.61-2.8-12.66-1.34" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M979.66,612.21a1.32,1.32,0,0,0-.48.4,3.41,3.41,0,0,0,0,4.06,1.37,1.37,0,0,1,.24.4,1.18,1.18,0,0,1-.12.68,2.25,2.25,0,0,0,.31,2.52c.31.26.73.39.93.73.35.58-.14,1.32-.06,2,.1.89,1.15,1.33,2,1.44a2.13,2.13,0,0,0,1.95-.52,1.62,1.62,0,0,0,0-1.77,4.74,4.74,0,0,0-1.32-1.32A2,2,0,0,0,985,619a2.84,2.84,0,0,0-1.14-2.49c-.18-.15-.4-.3-.45-.54s.19-.57.41-.8c1-1,1.77-3.45-.11-4a4.63,4.63,0,0,0-2,.09c-.48.15-.48.44-.85.64S980.08,612,979.66,612.21Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M999.31,543.14a3.3,3.3,0,0,0-2.54,1.28,7.31,7.31,0,0,0-1.06,3.4,29.81,29.81,0,0,1-4,10.86" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M1002.81,545.88a3.88,3.88,0,0,0-3.32,2,11.1,11.1,0,0,0-.84,3.39,18.42,18.42,0,0,1-3.33,7.11" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M357.66,609.59c.58,6.32-4.19,12.44-2.8,18.62.3,1.32.87,2.57,1.08,3.9.57,3.67-1.62,7.15-3.71,10.22l-17.94,26.34a17.07,17.07,0,0,1-2.57,3.17c-3.44,3-8.58,2.73-13.09,3.64a22.45,22.45,0,0,0-8.76,3.88.57.57,0,0,0-.12.79,7.55,7.55,0,0,0,6.52,3.06c.47.62,0,1.53-.65,2-1,.67-2.29.84-2.48,2.48a2.68,2.68,0,0,0,.33,1.64,5.07,5.07,0,0,0,3.14,2.18c6.21,1.9,12.93-1.43,17.57-6s8-10.27,12.56-14.9c2.53-2.55,5.4-4.75,8-7.23,5.2-4.94,9.23-11,13.13-17a18.87,18.87,0,0,0,2.84-5.78c.48-2.06.26-4.23.82-6.27.72-2.66,2.68-4.79,4.3-7,3.19-4.38,5.31-9.75,4.89-15.15s-3.76-10.74-8.86-12.57a7.93,7.93,0,0,0-5-.31c-2.09.65-3.63,2.38-5.06,4l-3.4,3.94a9.08,9.08,0,0,0-2,3,3.15,3.15,0,0,0,.7,3.35" transform="translate(-51.77 -47.02)" fill="#fbbebe"/><path d="M357.66,609.59c.58,6.32-4.19,12.44-2.8,18.62.3,1.32.87,2.57,1.08,3.9.57,3.67-1.62,7.15-3.71,10.22l-17.94,26.34a17.07,17.07,0,0,1-2.57,3.17c-3.44,3-8.58,2.73-13.09,3.64a22.45,22.45,0,0,0-8.76,3.88.57.57,0,0,0-.12.79,7.55,7.55,0,0,0,6.52,3.06c.47.62,0,1.53-.65,2-1,.67-2.29.84-2.48,2.48a2.68,2.68,0,0,0,.33,1.64,5.07,5.07,0,0,0,3.14,2.18c6.21,1.9,12.93-1.43,17.57-6s8-10.27,12.56-14.9c2.53-2.55,5.4-4.75,8-7.23,5.2-4.94,9.23-11,13.13-17a18.87,18.87,0,0,0,2.84-5.78c.48-2.06.26-4.23.82-6.27.72-2.66,2.68-4.79,4.3-7,3.19-4.38,5.31-9.75,4.89-15.15s-3.76-10.74-8.86-12.57a7.93,7.93,0,0,0-5-.31c-2.09.65-3.63,2.38-5.06,4l-3.4,3.94a9.08,9.08,0,0,0-2,3,3.15,3.15,0,0,0,.7,3.35" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M221,636.44c1,3.16,2,6.32,3.21,9.4A79.54,79.54,0,0,0,232.52,661a109.23,109.23,0,0,0,6.87,9c3.06,3.61,6.48,7.24,7.56,11.85.63,2.66.42,5.45.68,8.17s1.15,5.61,3.35,7.24a12.45,12.45,0,0,0,5.52,1.82c1.38.22,3.11.29,3.83-.91a3.41,3.41,0,0,0,.38-1.58l.34-4c.07-.86.37-2,1.23-2s1.3,1.11,2,1.62a2.17,2.17,0,0,0,3-1,5,5,0,0,0,.08-3.5,16.62,16.62,0,0,0-8.53-10.57,25.64,25.64,0,0,1-4.16-2.17,14.15,14.15,0,0,1-3.27-4.12c-7.56-12.45-15.16-25-20.5-38.51a28.49,28.49,0,0,1-2.11-7.59,49,49,0,0,1,.33-8,45.79,45.79,0,0,0-1.32-14.28,11.23,11.23,0,0,0-1.37-3.47c-2.19-3.34-7.36-3.83-10.62-1.53a10.94,10.94,0,0,0-4.22,7.72c-.24,2.69,1.32,5.5,2.11,8Q217.37,624.81,221,636.44Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M221,636.44c1,3.16,2,6.32,3.21,9.4A79.54,79.54,0,0,0,232.52,661a109.23,109.23,0,0,0,6.87,9c3.06,3.61,6.48,7.24,7.56,11.85.63,2.66.42,5.45.68,8.17s1.15,5.61,3.35,7.24a12.45,12.45,0,0,0,5.52,1.82c1.38.22,3.11.29,3.83-.91a3.41,3.41,0,0,0,.38-1.58l.34-4c.07-.86.37-2,1.23-2s1.3,1.11,2,1.62a2.17,2.17,0,0,0,3-1,5,5,0,0,0,.08-3.5,16.62,16.62,0,0,0-8.53-10.57,25.64,25.64,0,0,1-4.16-2.17,14.15,14.15,0,0,1-3.27-4.12c-7.56-12.45-15.16-25-20.5-38.51a28.49,28.49,0,0,1-2.11-7.59,49,49,0,0,1,.33-8,45.79,45.79,0,0,0-1.32-14.28,11.23,11.23,0,0,0-1.37-3.47c-2.19-3.34-7.36-3.83-10.62-1.53a10.94,10.94,0,0,0-4.22,7.72c-.24,2.69,1.32,5.5,2.11,8Q217.37,624.81,221,636.44Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M372.75,755.18c-3.92,2.39-8.8,2.53-13.36,2-.73-.09-1.6-.15-2.07.42-.68.82.12,2,.95,2.7a19.88,19.88,0,0,0,9.18,3.77,62.62,62.62,0,0,0,9,.6c8.19.14,16.42.27,24.53-.91a3.25,3.25,0,0,0,1.34-.39,2.54,2.54,0,0,0,1-1.54,6.13,6.13,0,0,0-2.14-5.84,18,18,0,0,0-5.72-3.07l-7.12-2.77c-1.67-.65-4.36-2.38-6.17-2.24C378.81,748.13,375.58,753.52,372.75,755.18Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M390.64,771.91a17.49,17.49,0,0,1-11.95,4.46c-1.12,0-2.68.21-2.68,1.33a1.76,1.76,0,0,0,.32.93,11,11,0,0,0,6.18,4.84,22,22,0,0,0,7.46.47l7.3-.38c1.38-.07,2.77-.14,4.14-.31s2.86-.45,4.29-.67a57.22,57.22,0,0,1,10.63-.5,3.09,3.09,0,0,0,2.62-.7c.65-.82.27-2,.06-3-.44-2.11,0-4.33-.41-6.46-.7-3.72-3.9-6.58-7.45-7.93-3.28-1.25-9.1-2.68-12.21-.6C395.6,765.6,393.59,769.24,390.64,771.91Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M376.22,677.45c-3,3.95-6,8.51-5.3,13.39.4,2.63,1.87,4.95,2.95,7.39a52.09,52.09,0,0,1,3,10.38c1.11,5.17,2.22,10.35,2.91,15.59a97.36,97.36,0,0,1,.65,17.9c-.09,1.44-.25,3-1.25,4-.4.4-.92.73-1.09,1.27a2.15,2.15,0,0,0,.23,1.5,16.61,16.61,0,0,0,8.9,8.19,34.09,34.09,0,0,0,12.1,2.26,3.4,3.4,0,0,0,1.62-.21,3.12,3.12,0,0,0,1.25-1.43c3-5.7,1.33-12.58,1.38-19,0-5.37,1.3-10.69,1.07-16.06-.19-4.3-1.34-8.5-1.76-12.79-.69-7,.6-14.1,1.89-21.05,1-5.32,2-10.65,3.25-15.92a30.36,30.36,0,0,1,3.44-9.24c1.4-2.21,3.3-4.06,4.9-6.14a27.87,27.87,0,0,0,5.48-20.37c-.1-.72-10.3,2.58-11.18,3a34.66,34.66,0,0,0-10,6.41c-2.36,2.24-4.21,5.24-6.28,7.76Q390,659.61,385.76,665,380.92,671.18,376.22,677.45Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M376.22,677.45c-3,3.95-6,8.51-5.3,13.39.4,2.63,1.87,4.95,2.95,7.39a52.09,52.09,0,0,1,3,10.38c1.11,5.17,2.22,10.35,2.91,15.59a97.36,97.36,0,0,1,.65,17.9c-.09,1.44-.25,3-1.25,4-.4.4-.92.73-1.09,1.27a2.15,2.15,0,0,0,.23,1.5,16.61,16.61,0,0,0,8.9,8.19,34.09,34.09,0,0,0,12.1,2.26,3.4,3.4,0,0,0,1.62-.21,3.12,3.12,0,0,0,1.25-1.43c3-5.7,1.33-12.58,1.38-19,0-5.37,1.3-10.69,1.07-16.06-.19-4.3-1.34-8.5-1.76-12.79-.69-7,.6-14.1,1.89-21.05,1-5.32,2-10.65,3.25-15.92a30.36,30.36,0,0,1,3.44-9.24c1.4-2.21,3.3-4.06,4.9-6.14a27.87,27.87,0,0,0,5.48-20.37c-.1-.72-10.3,2.58-11.18,3a34.66,34.66,0,0,0-10,6.41c-2.36,2.24-4.21,5.24-6.28,7.76Q390,659.61,385.76,665,380.92,671.18,376.22,677.45Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M397.88,647.07c.64,3.06,3.61,5.4,3.69,8.53.07,2.5-1.71,4.6-3,6.75a45.27,45.27,0,0,0-3.06,6.94,105.82,105.82,0,0,1-9,17.87c-1.71,2.72-3.63,5.67-3.23,8.86a13.08,13.08,0,0,0,1.55,4.23l5.14,10.21a29.3,29.3,0,0,1,2.62,6.45c.45,1.94.49,4,.75,5.92.81,6.26,3.74,12.56,2,18.63-.15.52-.7,1.15-1.11.79,1.7,3.17,3.07,6.37,2.93,10-.06,1.89-.64,3.85.06,5.61A6.12,6.12,0,0,1,398,760c0,.51-.24,1-.29,1.51-.14,1.44,1.18,2.65,2.56,3.11s2.88.43,4.27.84c2.68.8,4.58,3.1,6.88,4.7a14.45,14.45,0,0,0,7.89,2.57,2,2,0,0,0,1.16-.23,1.9,1.9,0,0,0,.65-1.41,7.84,7.84,0,0,0-2.83-6.81,3.15,3.15,0,0,1-1-1.1,2.67,2.67,0,0,1-.1-1.23,91.21,91.21,0,0,0-.3-16.85,26,26,0,0,1-.26-5.36,21.91,21.91,0,0,0,.43-4.47,22.82,22.82,0,0,0-1.37-4.27c-.79-2.55-.57-5.29-.65-8a70.12,70.12,0,0,0-2.26-13.69,10.39,10.39,0,0,0-2.13-4.94c-1.07-1.12-2.8-2.18-2.39-3.67a4.24,4.24,0,0,1,1-1.46,5.86,5.86,0,0,0,1.23-4.47,2,2,0,0,0,2.3-1.08,36,36,0,0,0,18.08-20.56,6.68,6.68,0,0,1,.81-1.83c.77-1.08,2.12-1.55,3.31-2.15,3.74-1.88,6.32-5.41,8.69-8.86a20.61,20.61,0,0,0,3.36-6.43,21.18,21.18,0,0,0,.46-4.64l.21-8a4.59,4.59,0,0,0-.15-1.57,4,4,0,0,0-.87-1.28,15.53,15.53,0,0,0-8.54-4.6c-2.19-.39-4.43-.32-6.65-.5-4.3-.36-8.55-1.69-12.86-1.38-6.76.5-12.78,5.19-16,11.17C401.46,645.2,400.28,647,397.88,647.07Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M173.49,769.54a10.89,10.89,0,0,0,4.6.55c.11-1.27,1.82-1.55,3.09-1.49A3.55,3.55,0,0,1,183,769c.32.2.56.5.87.71a3.74,3.74,0,0,0,1.8.46l6.62.56c2.95.25,6,.48,8.78-.58a2.87,2.87,0,0,0,1.41-.94c.75-1.07,0-2.61-1-3.39s-2.37-1.14-3.41-1.94c-2.3-1.75-2.61-5-3.83-7.64a22.05,22.05,0,0,0-3.16-4.59,17.57,17.57,0,0,0-3.13-3.2c-2.65-1.92-5.71-1.88-8.82-2.15-2.2-.2-4.27-.33-5.85,1.62-1.95,2.42-1.17,7.3-1.05,10.19A72.94,72.94,0,0,0,173.49,769.54Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M173.49,769.54a10.89,10.89,0,0,0,4.6.55c.11-1.27,1.82-1.55,3.09-1.49A3.55,3.55,0,0,1,183,769c.32.2.56.5.87.71a3.74,3.74,0,0,0,1.8.46l6.62.56c2.95.25,6,.48,8.78-.58a2.87,2.87,0,0,0,1.41-.94c.75-1.07,0-2.61-1-3.39s-2.37-1.14-3.41-1.94c-2.3-1.75-2.61-5-3.83-7.64a22.05,22.05,0,0,0-3.16-4.59,17.57,17.57,0,0,0-3.13-3.2c-2.65-1.92-5.71-1.88-8.82-2.15-2.2-.2-4.27-.33-5.85,1.62-1.95,2.42-1.17,7.3-1.05,10.19A72.94,72.94,0,0,0,173.49,769.54Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M176.17,640.86c-2,.65-2.9,3.17-2.53,5.27s1.63,3.9,2.67,5.75c2.94,5.27,4.22,11.3,6.69,16.8,1.85,4.11,4.35,7.91,6.18,12s3,8.77,1.85,13.14c-.54,2.13-1.58,4.09-2.28,6.17a35,35,0,0,0-1.34,7,132.68,132.68,0,0,0-.48,24.16,7.34,7.34,0,0,0,.61,2.86c.41.8,1.13,1.64.78,2.47-.14.33-.44.57-.59.9-.42.92.43,1.88,1.2,2.53a2.07,2.07,0,0,1-1.3,1,3.07,3.07,0,0,1,1.31,3.42c-.69.1-.73,1.15-.29,1.7s1.11.9,1.42,1.52a2.13,2.13,0,0,1-1.17,2.68,5.48,5.48,0,0,1-3.19.24,34.58,34.58,0,0,1-5.34-1.17,4.8,4.8,0,0,1-1.64-.75,4.87,4.87,0,0,1-1.47-3.24,58.55,58.55,0,0,1-.37-10c.29-16.16,0-32.34-.7-48.49-.29-6.5-2.24-12.84-4.76-18.84a96.67,96.67,0,0,0-4.64-9c-3.62-6.66-6.84-14-6-21.55.09-.81.39-1.79,1.19-1.92a1.73,1.73,0,0,1,.92.15,42.53,42.53,0,0,1,4.85,2.68A18.38,18.38,0,0,0,176.17,640.86Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M176.17,640.86c-2,.65-2.9,3.17-2.53,5.27s1.63,3.9,2.67,5.75c2.94,5.27,4.22,11.3,6.69,16.8,1.85,4.11,4.35,7.91,6.18,12s3,8.77,1.85,13.14c-.54,2.13-1.58,4.09-2.28,6.17a35,35,0,0,0-1.34,7,132.68,132.68,0,0,0-.48,24.16,7.34,7.34,0,0,0,.61,2.86c.41.8,1.13,1.64.78,2.47-.14.33-.44.57-.59.9-.42.92.43,1.88,1.2,2.53a2.07,2.07,0,0,1-1.3,1,3.07,3.07,0,0,1,1.31,3.42c-.69.1-.73,1.15-.29,1.7s1.11.9,1.42,1.52a2.13,2.13,0,0,1-1.17,2.68,5.48,5.48,0,0,1-3.19.24,34.58,34.58,0,0,1-5.34-1.17,4.8,4.8,0,0,1-1.64-.75,4.87,4.87,0,0,1-1.47-3.24,58.55,58.55,0,0,1-.37-10c.29-16.16,0-32.34-.7-48.49-.29-6.5-2.24-12.84-4.76-18.84a96.67,96.67,0,0,0-4.64-9c-3.62-6.66-6.84-14-6-21.55.09-.81.39-1.79,1.19-1.92a1.73,1.73,0,0,1,.92.15,42.53,42.53,0,0,1,4.85,2.68A18.38,18.38,0,0,0,176.17,640.86Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M148.85,621.21a7.11,7.11,0,0,0-3.52-1.11A7.14,7.14,0,0,0,141.5,622a40.17,40.17,0,0,0-3.8,3.34,20.33,20.33,0,0,0-4.54,20.11c1.21,3.59,3.4,6.76,5.56,9.86l4.4,6.32c6.71,9.64,13.43,19.28,20.46,28.69a1.08,1.08,0,0,0,.76,1c.26.07.57.06.73.27a.78.78,0,0,1,.09.43,6.53,6.53,0,0,1-.39,2,.93.93,0,0,0-.08.69c.22.53,1.19.23,1.49.73.21.32,0,.75-.32,1s-.6.59-.55,1,.72.79.69,1.29c0,.28-.24.49-.41.71a1.81,1.81,0,0,0,.22,2.31c.46,4.6-2,8.95-2.53,13.55-.79,7.23,2.48,14.29,2.88,21.55a5.77,5.77,0,0,0,.45,2.38c.68,1.25,2.42,2,2.36,3.43a13.09,13.09,0,0,1-.49,1.73,13.91,13.91,0,0,0,.26,2.47c0,.83-.7,1.82-1.47,1.5q.87,2.88,1.54,5.81l15.4,1.27a13.83,13.83,0,0,0-.14-4.16c-.32-1.48-1-2.87-1.34-4.35a5.13,5.13,0,0,1,.61-4.35,1.7,1.7,0,0,1-1.7-1.4,6.86,6.86,0,0,1,0-2.39c.41-4-1.28-8-1.23-12,.05-3.18,1.16-6.23,1.73-9.35,1.2-6.68-.05-13.93,2.92-20,1.8-3.68,4.29-7.76,2.27-11.32-1-1.76-2.75-3-3.89-4.62a18.77,18.77,0,0,1-2.09-5c-2.38-7.36-6.21-14.15-9.58-21.12a22.23,22.23,0,0,1-2.06-5.55,28.21,28.21,0,0,1-.25-5.12,78.48,78.48,0,0,0-.57-9.2,8.61,8.61,0,0,0-1.12-3.81,8.53,8.53,0,0,0-2.4-2.19C160.32,626.07,154.3,624.08,148.85,621.21Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M167.3,775.18a10.89,10.89,0,0,0,4.6.55c.12-1.27,1.82-1.55,3.09-1.49a3.55,3.55,0,0,1,1.77.41c.32.2.56.5.88.71a3.68,3.68,0,0,0,1.8.46l6.61.56c2.95.25,6,.48,8.79-.58a2.89,2.89,0,0,0,1.4-.94c.75-1.07,0-2.61-1-3.39s-2.37-1.14-3.42-1.94c-2.29-1.75-2.61-5-3.83-7.64a22.05,22.05,0,0,0-3.16-4.59,17.52,17.52,0,0,0-3.12-3.2c-2.66-1.92-5.71-1.88-8.82-2.15-2.21-.2-4.28-.33-5.85,1.62-2,2.42-1.18,7.3-1.06,10.19A74.3,74.3,0,0,0,167.3,775.18Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><rect x="199.03" y="612.17" width="78.03" height="78.03" fill="#fff"/><path d="M312.87,695.59c0,8.9-4.17,14.5-10.76,14.5-3.37,0-5.94-1.8-6.39-4.47h-.48a7,7,0,0,1-6.93,4.31c-5.86,0-9.77-4.7-9.77-11.69,0-6.71,3.94-11.38,9.69-11.38a7,7,0,0,1,6.57,3.93h.48v-3.34h4.79V703a2.78,2.78,0,0,0,3,3.1c3.32,0,5.44-4,5.44-10.3,0-10-7.5-16.69-18.57-16.69s-18.75,8-18.75,19.28c0,11.55,7.72,18.93,19.74,18.93a36.21,36.21,0,0,0,6.53-.56,1.9,1.9,0,0,1,.8,3.71,33.24,33.24,0,0,1-7.52.82c-14.61,0-24-9-24-23,0-13.68,9.55-23.07,23.46-23.07C303.6,675.14,312.87,683.49,312.87,695.59Zm-29.15,2.76c0,4.44,2.08,7.13,5.48,7.13,3.58,0,5.84-2.76,5.84-7.13s-2.26-7.07-5.78-7.07S283.72,693.9,283.72,698.35Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><circle cx="183.77" cy="532.28" r="15.25" fill="#a1616a"/><path d="M221.16,583.82c-2.19,1.89-5.32,2-8.19,2.32a51.19,51.19,0,0,0-17.62,5.1,6.29,6.29,0,0,0-2,1.4,5.77,5.77,0,0,0-1,2.18,14.42,14.42,0,0,0-.58,5.3,15.28,15.28,0,0,0,1.47,5,26.84,26.84,0,0,0,9.46,10.78A6.87,6.87,0,0,0,205,617c2,.42,3.95-.75,5.92-1.27a9.7,9.7,0,0,1,5.47.18c1.66.55,3.41,1.56,5,.89a5.22,5.22,0,0,0,2.28-2.59,87.89,87.89,0,0,0,4.16-9.11,34.52,34.52,0,0,1,1.51-3.54c1.77-3.37,4.83-6,6.35-9.46a2.08,2.08,0,0,0,.14-1.78,2.47,2.47,0,0,0-1.12-.86,26.73,26.73,0,0,1-6.09-4.78c-1-1-2.85-3.56-4.29-3.79C222.75,580.68,222.26,582.88,221.16,583.82Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M221.52,614.81c-1.77.85-3.85.47-5.77.07-4.94-1-9.93-2.08-14.5-4.22a7.76,7.76,0,0,1-3.56-2.73,8.73,8.73,0,0,1-1-3.42l-.84-5.67c-.29-2,.22-3.82.26-5.82a1.7,1.7,0,0,0-.33-1.27,1.37,1.37,0,0,0-1-.31c-2.29,0-3.67,2.43-5.28,4.06a9.75,9.75,0,0,1-3.24,2.18c-1.47.6-3.28,1-3.87,2.49-.25.61-.22,1.31-.47,1.92-1,2.44-5.4,1.63-6.51,4-.32.68-.3,1.54-.83,2.08s-1.5.52-2.3.66c-3.18.52-4.73,4.2-7.45,5.93-2.29,1.46-5.24,1.43-7.7,2.57a29.48,29.48,0,0,1-4,2,18.9,18.9,0,0,1-4.64.23,1.25,1.25,0,0,0-.93.3,1.28,1.28,0,0,0-.15,1,28.07,28.07,0,0,0,17.35,21.73,6.12,6.12,0,0,1,1.48.71c1.39,1,1.63,3.27,3.2,4a3.31,3.31,0,0,0,3.34-.72,29.05,29.05,0,0,0,2.41-2.66,9.6,9.6,0,0,1,5.37-2.82c1.89-.3,4-.08,5.53-1.24a17,17,0,0,0,1.74-1.86,10.91,10.91,0,0,1,4-2.36A40,40,0,0,1,204.33,633c4-.23,8.15.14,11.94-1.17a7,7,0,0,0,2.66-1.5,8,8,0,0,0,1.78-3.09A23.59,23.59,0,0,0,221.52,614.81Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M201.86,592.34c1.13-.1,2.26,0,3.39,0,1.33,0,2.64-.32,4-.33a9.86,9.86,0,0,1,9.3,7.08,1.8,1.8,0,0,1,.06,1,.71.71,0,0,1-.77.52,16.9,16.9,0,0,0-1.71-3.43,9.71,9.71,0,0,0-5.12-3.56,13.29,13.29,0,0,0-6.3-.23c-.86.16-1.71.39-2.56.63L198,595.14c-.75.2-1.5.41-2.23.68-.56.2-1.53,1-2.08,1-.75,0-.14-.65.19-1.09a5.34,5.34,0,0,1,2.66-1.93A22.38,22.38,0,0,1,201.86,592.34Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M212.14,638.15c1,3.16,2,6.32,3.21,9.4a79.54,79.54,0,0,0,8.32,15.16,109.23,109.23,0,0,0,6.87,9c3.06,3.61,6.48,7.24,7.56,11.85.63,2.66.42,5.45.68,8.17s1.15,5.61,3.35,7.24a12.45,12.45,0,0,0,5.52,1.82c1.38.22,3.11.29,3.83-.91a3.41,3.41,0,0,0,.38-1.58l.33-4c.08-.86.38-2,1.24-2s1.3,1.11,2,1.62a2.17,2.17,0,0,0,3-1,5.07,5.07,0,0,0,.08-3.5A16.62,16.62,0,0,0,250,678.84a25.64,25.64,0,0,1-4.16-2.17,14,14,0,0,1-3.27-4.12c-7.57-12.45-15.17-25-20.5-38.51a28.49,28.49,0,0,1-2.11-7.59,49,49,0,0,1,.33-8A45.79,45.79,0,0,0,219,604.15a11.23,11.23,0,0,0-1.37-3.47c-2.19-3.34-7.36-3.83-10.62-1.53a10.94,10.94,0,0,0-4.22,7.72c-.24,2.69,1.32,5.5,2.11,8Q208.52,626.52,212.14,638.15Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M257.73,568.52c.12-1.27-1-2.42-2.31-3.23a32.25,32.25,0,0,1-3.92-2.4c-1.16-1-1.79-2.31-2.95-3.31a13,13,0,0,0-4.4-2.19,33.4,33.4,0,0,0-10.52-1.89,18.53,18.53,0,0,0-10.07,2.66,6,6,0,0,0-1.71,1.59,7,7,0,0,0-.83,2.53,50,50,0,0,1-2.63,8c-1.13,2.88-2.34,5.86-5,8.08-2.85,2.38-7.22,3.75-9.1,6.62a2.15,2.15,0,0,0-.41,1.85c.27.72,1.14,1.21,1.93,1.67,4.63,2.66,8.62,6.1,10.68,10.22a11.85,11.85,0,0,1-.94,12.75c-1.07,1.4-2.55,3.06-1.5,4.47,1.59,2.14,7.08.92,8.34,3.18a4.52,4.52,0,0,1,.17,2.34c0,2.37,2.29,4.49,5.07,5.58a28.27,28.27,0,0,0,9.12,1.5,7.88,7.88,0,0,0,.23-5.9,2.36,2.36,0,0,1-.23-1.34,3.22,3.22,0,0,1,1-1.29c3.35-3.16,2.64-7.81.63-11.56s-5.13-7.19-6.29-11.14c-.58-2-.59-4.17,1-5.8a20.2,20.2,0,0,1,2.87-2.1,10.91,10.91,0,0,0,4-5c.93-2.6.79-5.73,3.53-7.45s6.29-1.16,9.18-2.27C255,573.76,257.55,570.37,257.73,568.52Z" transform="translate(-51.77 -47.02)" fill="#464353"/><circle cx="291.47" cy="526.89" r="16.63" fill="#fbbebe"/><path d="M358.21,573.21a21.56,21.56,0,0,0,13.8,9.65l-1.25,4.54c-2.16,7.82-4.6,16.1-10.64,21.52a10.06,10.06,0,0,0-1.69-7.78,29.46,29.46,0,0,0-5.64-5.9l-9.57-8.33a2.61,2.61,0,0,1-.72-.8,2.44,2.44,0,0,1,0-1.82c1.22-3.8,4.7-6.17,7.52-8.73a26.52,26.52,0,0,0,3.79-4.41C355.77,568.45,357,571.18,358.21,573.21Z" transform="translate(-51.77 -47.02)" fill="#fbbebe"/><path d="M360.33,594.72a9,9,0,0,1-.49,3.67,2.58,2.58,0,0,1-3,1.54c.35-.79-.57-1.69-1.43-1.59a2.69,2.69,0,0,0-1.9,1.61,6,6,0,0,0-.55,3.72c.27,1.58,1.18,3.09.94,4.67-.19,1.31-1.16,2.62-.64,3.85a6.18,6.18,0,0,0,1.24,1.48,4.2,4.2,0,0,1-.45,5.76l13,.25c-.48,2.17.5,4.39,1.61,6.31a39.73,39.73,0,0,0,29.62,19.34,2.58,2.58,0,0,0-.62,3.94c1.06,1.05,2.84.92,4.16.24a31.58,31.58,0,0,0,3.57-2.67,10.91,10.91,0,0,1,7.32-2c1.63.15,3.2.67,4.83.76,4.8.26,8.93-3.2,13.52-4.61,3.37-1,7.18-1,10-3.14,1.22-.9,2.22-2.38,1.86-3.86a6.29,6.29,0,0,0-1.4-2.26c-1.63-2.11-2.58-4.64-3.75-7a41.79,41.79,0,0,0-9.37-12.54,82.71,82.71,0,0,0-9.28-7.05,15.71,15.71,0,0,0-2.52-1.51,25.81,25.81,0,0,1-3.44-1.4c-1.53-1-2.4-2.65-3.57-4-2.57-3-6.52-4.37-9.69-6.73-2.12-1.58-4-3.66-6.53-4.43-1.23-.37-2.55-.4-3.78-.77-2.8-.85-4.84-3.34-7.59-4.34-2.17-.8-4.57-.59-6.87-.88a16,16,0,0,1-7.06-2.67,8.49,8.49,0,0,0-2.28-1.34c-3.47-1-3.75,5.42-4.08,7.66C361.19,588,360.33,591.35,360.33,594.72Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M363.72,616.43c.58,6.31-4.19,12.43-2.8,18.62.3,1.32.86,2.57,1.07,3.9.58,3.67-1.61,7.14-3.7,10.21l-18,26.34a16,16,0,0,1-2.56,3.17c-3.44,3.05-8.58,2.73-13.09,3.65a22.41,22.41,0,0,0-8.77,3.88.57.57,0,0,0-.11.78,7.52,7.52,0,0,0,6.52,3.06c.47.62,0,1.54-.65,2-1,.67-2.29.85-2.48,2.48a2.78,2.78,0,0,0,.32,1.65,5.12,5.12,0,0,0,3.15,2.18c6.21,1.9,12.92-1.44,17.57-6s8-10.27,12.56-14.9c2.53-2.56,5.4-4.75,8-7.23,5.19-5,9.23-11,13.13-17a18.92,18.92,0,0,0,2.84-5.79c.48-2.05.26-4.23.82-6.26.72-2.67,2.67-4.8,4.3-7,3.19-4.39,5.31-9.75,4.89-15.16s-3.77-10.73-8.86-12.57a7.93,7.93,0,0,0-5-.3c-2.09.64-3.63,2.37-5.06,4l-3.41,3.94a9.36,9.36,0,0,0-2,3,3.15,3.15,0,0,0,.7,3.35" transform="translate(-51.77 -47.02)" fill="#fbbebe"/><path d="M372.8,590.5c-2.36.14-5,.37-6.63,2a9.26,9.26,0,0,0-1.66,2.62c-1.62,3.29-3.2,6.74-3.31,10.41-.1,2.93.75,5.8,1.2,8.7.37,2.41-.57,4.87-.75,7.31a49.91,49.91,0,0,0,9.44-3.63,31.56,31.56,0,0,1,5.53-2.87c2.81-.94,7.55.67,10.21,2,.15-1.88-1.26-5.15-1.11-7a7.67,7.67,0,0,1,.42-2.33,13.89,13.89,0,0,1,1.41-2.25,9.21,9.21,0,0,0-.83-10.81c-2.37-2.67-6.09-3.67-9.64-4.09a42.16,42.16,0,0,0-6.74-.23" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M321.33,557.19l-.38-3.13c2.63.67,5.12-1.55,6.8-3.86s3.23-5,5.78-6c3.11-1.17,6.4.7,9.37,2.24A29.33,29.33,0,0,0,353.65,550a7.61,7.61,0,0,1,1.78.29c1.93.69,2.85,3.11,3.13,5.31s.2,4.54,1.15,6.5c.73,1.48,2,2.59,2.72,4,2,3.93.07,9.31,2.22,13.17l-5.33-4.88c-.49-.45-1.18-.92-1.71-.54s-.46,1-.64,1.47a2.79,2.79,0,0,1-3.79,1.38,10.39,10.39,0,0,1-3.39-3.1,20.72,20.72,0,0,0-8.46-6.41,10.81,10.81,0,0,0-8.95.53c-2.49,1.41-4.31,4.68-7.36,4.79-4.18.16-5.92-7.62-7.85-10.69a3.79,3.79,0,0,0,1.1-4.72C318.56,557,321.27,556.71,321.33,557.19Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M770.23,840.52c-.81-3.43-1.3-6.43-1.3-6.43a13.32,13.32,0,0,0-1.49-6.53v-.94h0v-6.9a22.81,22.81,0,0,1,1.74-3.61c1.24-2.16,0-10.1,0-10.1s-4.6-11.19-3.49-18.29-9.44-31.53-9.44-31.53a31.15,31.15,0,0,1,1-7,5.05,5.05,0,0,0,.13-1.46,1.09,1.09,0,0,0,0-.18v.06c-.16-4.68-3.86-13.46-3.86-13.46l.5-16.72s2.36-9.87-1.49-23.11c-1.35-4.62-2.21-8.31-2.76-11.17-.06-.32-.12-.63-.17-.93,7.93-1.21,14-2.22,14-2.22s-4.6-19.25-7.71-22.62-5.59-13.95-5.59-13.95-1.62-13.6,1-17.57,3-10.83,3-10.83,6-4.33,6.71-6.26a31.7,31.7,0,0,0,2-8.54c0-2.29-.75-4.33-.5-5.54s-1.74-5.77-.74-7.94a5.81,5.81,0,0,0,.39-2.09.13.13,0,0,0,0-.06v0a29.73,29.73,0,0,0-.53-5.65,16,16,0,0,0-5.9-3.16l-.13-.51-.34-1.35a4.56,4.56,0,0,0-.59-.35v-.5l0-2,.93-4.4c1.84-7.63-8.36-8.77-8.36-8.77a5.38,5.38,0,0,0-2.89-2.54c-2-.72-.34,11.5.62,12.28.72.58,3,4.42,4,6.3h0l.18.31a4.06,4.06,0,0,0-.47.49l.39,2.65.06.41a10.89,10.89,0,0,0-1.63,2.77s1.87,2.05,1.49,4.34a13.6,13.6,0,0,0,.62,5.29c-.11-.13-1.42-1.55-2.73-1.2s-5,1.44-5,1.44-2.74.48-2.49,1.08-1.86,3.25-1.86,3.25l-7.35-7c-.08-.21-.15-.42-.22-.63a16.8,16.8,0,0,1-.63-3,16.33,16.33,0,0,0,2.34-.75,5.07,5.07,0,0,0,2-1.3,7.94,7.94,0,0,0,1.18-3.17c.58-2.14,1.83-4.05,2.73-6.08A19.78,19.78,0,0,0,739,562a7.22,7.22,0,0,0-1.12-3.2c-1.2-1.65-3.38-2.32-5-3.64s-2.6-3.32-4.45-4.31a8.77,8.77,0,0,0-5.58-.48,29.82,29.82,0,0,0-10.41,3.78c-1.08.64-2.25,1.37-3.49,1.15a4.71,4.71,0,0,1-2.51-1.84.49.49,0,0,1,0-.11l-.09-.09a13.17,13.17,0,0,0-1.14,5.5c0,.29,0,.58,0,.88,0,.1,0,.2,0,.3a2.26,2.26,0,0,1,0,.26h0a1.76,1.76,0,0,1-.06.39,2.83,2.83,0,0,1-.68,1,4.43,4.43,0,0,0-.6.82c0-.1.06-.2.1-.3a4.34,4.34,0,0,0-.77,2.31,2.3,2.3,0,0,0,.56,1.66,8,8,0,0,0,1.19,1,14,14,0,0,0-.21,2.44,14.22,14.22,0,0,0,6.92,12.13l.25.63a17.49,17.49,0,0,1,1.33,8c0,.2,0,.39-.09.59l-.26.3h0s-12.14.12-15-2.47-7.21,6.32-7.21,6.32-4.35.85-5.22,0-6-.12-6-.12a11,11,0,0,0-7.58-2.76,22.27,22.27,0,0,0-5.57-3.1h0l-.14-.05h0a6.22,6.22,0,0,0-2.74-.34s-6-4.94-7.7-7.58-10-12.47-10.07-12.52l0-.47-.1-1.43a5.58,5.58,0,0,1-.74.07c0-.15-.1-.31-.17-.5a27,27,0,0,0-1.76-4s0-1.8.53-2.25-.22-7.07-.22-7.07-5.38-12.57-10.19-3.19c0,0-9.11,6.07-1.47,13.15,0,0,3,1.47,3.48,2.64.29.76,1.32,2.89,2,4.3l.31.63-.09.07.12,1.18,0,.46c-1.44.81-2.41,1.62-2.18,2.24a13.16,13.16,0,0,1,.87,3.25s10.57,13.23,11.94,18.89c0,0,28.34,16.84,37.66,18.05l-1.61,8.42a66.59,66.59,0,0,0-.37,6.86c.12,1.8-1.12,10-1.12,10s-1.62,12-3,13.71-1.12,8.91-1.12,8.91a60.09,60.09,0,0,1-1.86,10.22c-1.37,4.58-.37,10.23-.37,10.23s-4.73,10.83,6.59,3.49c0,0,5.55-.34,12-.56,0,.21,0,.42,0,.64,0,.82,0,1.71,0,2.65-.08,6.2-.12,14.75.16,21.22.5,11.43,4,34,4,34v11.36a15.89,15.89,0,0,0-.32,3.25,21.06,21.06,0,0,0,3.06,11.38l.87,7.58s2,5,2.08,8a3.93,3.93,0,0,1-.09.72,5.38,5.38,0,0,0-.1,1.16c-.11,3.44,2,11.68,2,11.68s.13,8.3,1.37,8.78c1.06.41-1.42,4.79-2.16,6a2,2,0,0,1-.05-.24c-.09.16-.15.25-.15.25a5.83,5.83,0,0,0-.39,2.1,3,3,0,0,0,1.38,2.92c2.36,1.45,3.63,2.65,1.63,3.13a19.86,19.86,0,0,0-2.19.46c0-.09-.08-.19-.11-.28A1.34,1.34,0,0,0,705,824a6.15,6.15,0,0,0,.75,2.81,30,30,0,0,0,3.36,6.14l1-.11a4.72,4.72,0,0,1-.56,1,3.87,3.87,0,0,1-1.4,1.24,4.48,4.48,0,0,1-1.7.59,4.74,4.74,0,0,0-3.52,1.71c-1.24,1.6-2,3.79.43,5.71l8.89,3.06s15.29,2,14.48-1.44-1.3-6.43-1.3-6.43a13.57,13.57,0,0,0-1.25-6.09,6,6,0,0,0-.54-.9l.54-.06s1.12-7.58,2.61-9c.35-.33.43-.59.34-.79.16-.41-.23-.65-.73-.79l-.11.3a7.5,7.5,0,0,0-1.48-.16s-.5-4,1.11-5.42a1.53,1.53,0,0,0,.32-1.18,6.8,6.8,0,0,0-.17-1.62l-.06.1a57.75,57.75,0,0,0-3.57-9.33s-.12-3.61.87-5.06-.12-19.61-.12-19.61.37-8.78-.75-12.87,1.37-8.91,1.37-8.91l0-.26,0-.06s-.06-.54-.15-1.39l0,.09c-.25-2.33-.72-6.54-1.07-8.48-.5-2.77.12-16,.12-16l2.24-5.65,4,9.74,4.22,13a11.05,11.05,0,0,1,2.15,5.52c0,.14,0,.28,0,.41a6.53,6.53,0,0,0,0,.87,7.76,7.76,0,0,0,1.29,4.63s1.12,6.14,2.86,7.7,1.74,4.57,1.74,4.57,2.11,8.91,3.11,10.47c.84,1.32.88,4.94.87,6h0v.33s.29,3.18.28,5.86c0,.32,0,.65,0,1v-.07a9.32,9.32,0,0,1-.26,2.16l0,.13c0-.15,0-.31,0-.45a22.26,22.26,0,0,0-.64,5.55c-.06,3.2.43,7,2.37,9.21,3.36,3.85,5.47,3.37,5.47,3.37s-1.62,4.81-3.61,5.78a1.2,1.2,0,0,0-.21.13c0-.09,0-.19-.05-.28a2.35,2.35,0,0,0-.58,1.8,12.88,12.88,0,0,0,2.46,7.13,3.94,3.94,0,0,0,1.68,1l-.31.19a7,7,0,0,1-.69.33,3.26,3.26,0,0,1-1,.26,4.74,4.74,0,0,0-3.52,1.71c-1.24,1.6-2,3.79.43,5.71l8.89,3.06S771,844,770.23,840.52Z" transform="translate(-51.77 -47.02)" fill="url(#fe3366dc-1c26-4135-9415-0b0409d0ae5c)"/><path d="M711.83,846.2l-8.61-3.06c-2.37-1.92-1.61-4.11-.41-5.71a4.53,4.53,0,0,1,3.4-1.71,4.21,4.21,0,0,0,1.65-.59,3.9,3.9,0,0,0,1.36-1.24,6.33,6.33,0,0,0,1-3.33s9.45-2.76,12,0a7.06,7.06,0,0,1,1.15,1.68,14,14,0,0,1,1.2,6.09s.48,3,1.26,6.43S711.83,846.2,711.83,846.2Z" transform="translate(-51.77 -47.02)" fill="#2d293d"/><path d="M753.94,842l-8.6-3.06c-2.38-1.92-1.62-4.11-.42-5.7a4.52,4.52,0,0,1,3.41-1.72,3.11,3.11,0,0,0,1-.26,5.06,5.06,0,0,0,.66-.33c2.41-1.32,2.35-4.57,2.35-4.57s9.44-2.77,12,0a6.69,6.69,0,0,1,.9,1.23,13.74,13.74,0,0,1,1.45,6.54s.48,3,1.26,6.43S753.94,842,753.94,842Z" transform="translate(-51.77 -47.02)" fill="#2d293d"/><path d="M722.23,830.56a7.06,7.06,0,0,1,1.15,1.68h0l-14.16,1.64a6.33,6.33,0,0,0,1-3.33S719.65,827.8,722.23,830.56Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M765.25,827.55v2.65c-2.2,3.63-12.85,2.84-15.94,1a5.06,5.06,0,0,0,.66-.33c2.41-1.32,2.35-4.57,2.35-4.57s9.44-2.77,12,0A6.69,6.69,0,0,1,765.25,827.55Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M766.94,816.12a23.62,23.62,0,0,0-1.69,3.61v9.51c-2.4,4-14.92,2.65-16.6.48s-3.49-7.82-1.57-8.78,3.49-5.78,3.49-5.78-2,.48-5.29-3.37S743,799.4,743.6,797.35s0-8.9,0-8.9.12-4.81-.84-6.38-3-10.47-3-10.47,0-3-1.68-4.57-2.77-7.7-2.77-7.7a7.89,7.89,0,0,1-1.2-5.17c.36-3-2.05-6.26-2.05-6.26l-4.09-13-3.85-9.75-2.16,5.65s-.61,13.24-.12,16,1.2,10.1,1.2,10.1-2.41,4.82-1.32,8.91.72,12.87.72,12.87,1.08,18.17.12,19.62-.84,5-.84,5,4.93,10.59,3.36,12-1.08,5.42-1.08,5.42,3.37,0,1.93,1.44-2.53,9-2.53,9L708.83,833a30.8,30.8,0,0,1-3.26-6.14c-1.92-4.45.36-4,2.3-4.45s.71-1.68-1.58-3.13-1-4.69-1-4.69,3.49-5.9,2.29-6.38-1.33-8.78-1.33-8.78-2.4-9.87-1.8-12.51-1.93-9-1.93-9l-.84-7.58A20.84,20.84,0,0,1,699.08,756V744.29s-3.37-22.62-3.86-34c-.3-7.32-.22-17.31-.12-23.55.06-3.49.12-5.81.12-5.81l52-5.41a43.08,43.08,0,0,0,.95,7.72c.53,2.85,1.36,6.55,2.66,11.17,3.73,13.23,1.45,23.1,1.45,23.1l-.48,16.72s4.57,11.19,3.61,15a31.76,31.76,0,0,0-1,7s10.23,24.43,9.15,31.53S766.94,806,766.94,806,768.14,814,766.94,816.12Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M737.22,753.44,753,751.33S744.08,760.47,737.22,753.44Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M750.75,735.87s.55,5.59-2.88,7.7C747.87,743.57,754,742.61,750.75,735.87Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M749.78,718.06s-13.22,10.89-18,10S749.78,718.06,749.78,718.06Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M717.6,758.55s-10,2.29-10.34,6.32S717.6,758.55,717.6,758.55Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M719.81,808.72s-14.19,2.65-10.16,4.46a68.8,68.8,0,0,0,10.65,3.24S724.87,816.66,719.81,808.72Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><g opacity="0.05"><path d="M706.78,816a2.81,2.81,0,0,1-1.3-2.06l-.14.26s-1.33,3.24,1,4.69c.26.16.51.33.74.49.42-.08.88-.14,1.31-.25C710.29,818.69,709.07,817.48,706.78,816Z" transform="translate(-51.77 -47.02)"/><path d="M725.07,815.08c.39-.36.37-1.29.14-2.48a6.71,6.71,0,0,0-.81,3.49A2.67,2.67,0,0,1,725.07,815.08Z" transform="translate(-51.77 -47.02)"/><path d="M722.88,755.22a16.56,16.56,0,0,0-1,4.42,17.48,17.48,0,0,1,1.1-3S723,756.06,722.88,755.22Z" transform="translate(-51.77 -47.02)"/><path d="M755.39,748.9a5.72,5.72,0,0,0,.13-1.32c-.18.9-.3,1.74-.39,2.47C755.21,749.67,755.29,749.29,755.39,748.9Z" transform="translate(-51.77 -47.02)"/><path d="M722.54,798a7.57,7.57,0,0,0,.36-2.67,8.81,8.81,0,0,0-.69,3.37A3.24,3.24,0,0,1,722.54,798Z" transform="translate(-51.77 -47.02)"/><path d="M725.52,820.68a48.12,48.12,0,0,0-1.65,7.39l-14.55,1.69a30.14,30.14,0,0,1-3.26-6.14,10.72,10.72,0,0,1-.41-1.06c-.87.4-1.22,1.3-.07,4a29.79,29.79,0,0,0,3.26,6.13L723.38,831s1.09-7.58,2.53-9C726.62,821.23,726.17,820.87,725.52,820.68Z" transform="translate(-51.77 -47.02)"/><path d="M706.3,799.07s.12,8.31,1.32,8.79h0c.61-1.37,1-2.67.47-2.89-1.2-.48-1.32-8.78-1.32-8.78s-2.41-9.87-1.8-12.52-1.93-9-1.93-9l-.84-7.58a20.88,20.88,0,0,1-2.65-14.32V741.08s-3.37-22.62-3.85-34.05c-.31-7.32-.22-17.31-.12-23.55,0-1.12,0-2.12,0-3l-.41,0s-.06,2.31-.12,5.81c-.1,6.23-.19,16.23.12,23.55.48,11.43,3.85,34.05,3.85,34.05v11.67A20.81,20.81,0,0,0,701.73,770l.84,7.58s2.53,6.37,1.92,9S706.3,799.07,706.3,799.07Z" transform="translate(-51.77 -47.02)"/><path d="M749.13,826.51a14,14,0,0,1-2.3-5.72c-1.49,1.34.22,6.55,1.82,8.61s14.2,3.49,16.61-.49v-2.29C762,829.85,750.73,828.56,749.13,826.51Z" transform="translate(-51.77 -47.02)"/><path d="M767.42,812.91a24.05,24.05,0,0,0-1.68,3.61v1.69c.27-.62.66-1.44,1.2-2.41a7.29,7.29,0,0,0,.53-3Z" transform="translate(-51.77 -47.02)"/><path d="M749.87,814.81a23.17,23.17,0,0,0,1.19-2.86s-2,.48-5.3-3.37c-2.36-2.8-2.49-8.09-2.16-11.55-.6,2.05-1.57,10.59,1.68,14.44C747.41,814,749,814.65,749.87,814.81Z" transform="translate(-51.77 -47.02)"/><path d="M743.6,788.13a66.12,66.12,0,0,1,.24,7.13c.08-.47.17-.85.24-1.12.61-2,0-8.9,0-8.9s.12-4.82-.84-6.38-3-10.47-3-10.47,0-3-1.68-4.57-2.77-7.7-2.77-7.7a7.89,7.89,0,0,1-1.21-5.17c.37-3-2-6.26-2-6.26l-4.09-13L724.59,722l-2.17,5.65s0,.71-.07,1.83l1.76-4.59,3.85,9.74,4.09,13s2.4,3.25,2,6.25A7.91,7.91,0,0,0,735.3,759s1.08,6.13,2.76,7.7,1.69,4.57,1.69,4.57,2,8.9,3,10.47S743.6,788.13,743.6,788.13Z" transform="translate(-51.77 -47.02)"/></g><path d="M753.7,566.75l-.9,4.4.05,2,0,1.44-5,.52-.56-1h0c-1-1.88-3.2-5.71-3.9-6.3-.93-.78-2.58-13-.6-12.27a5.24,5.24,0,0,1,2.8,2.53S755.48,559.11,753.7,566.75Z" transform="translate(-51.77 -47.02)" fill="#ffcdd3"/><path d="M752.89,574.54l-5,.52-.56-1h0a4.42,4.42,0,0,1,5.54-.91Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M754.15,576.92l-6.61,1.54-.14-1-.38-2.65a4.55,4.55,0,0,1,6.41-.88l.33,1.35Z" transform="translate(-51.77 -47.02)" fill="#dce6f2"/><path d="M646.91,567.23l-7.06,3.8-.64-1.34c-.68-1.41-1.68-3.53-2-4.29-.42-1.17-3.37-2.65-3.37-2.65-7.4-7.07,1.41-13.14,1.41-13.14,4.67-9.39,9.87,3.18,9.87,3.18s.72,6.63.21,7.07-.51,2.26-.51,2.26a27.49,27.49,0,0,1,1.71,4C646.8,566.82,646.91,567.23,646.91,567.23Z" transform="translate(-51.77 -47.02)" fill="#ffcdd3"/><path d="M646.91,567.23l-7.06,3.8-.64-1.34c1-.83,4.53-3.7,5.69-3.57a8.28,8.28,0,0,0,1.68,0C646.8,566.82,646.91,567.23,646.91,567.23Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M647.63,569.37l-7.94,3.91-.16-1.71-.11-1.17s4.6-3.95,6-3.8a7.38,7.38,0,0,0,2.08,0l.09,1.43Z" transform="translate(-51.77 -47.02)" fill="#dce6f2"/><path d="M734.45,595.93s-34.63,3.91-28.16,1.81c4.51-1.47,6.3-4.33,6.68-7.51a18.29,18.29,0,0,0-1.29-8,34.77,34.77,0,0,0-3.1-6.26s26.47-14.56,21.18-1.32a20.76,20.76,0,0,0-1.5,6.27,17.68,17.68,0,0,0,.67,6.34A18.91,18.91,0,0,0,734.45,595.93Z" transform="translate(-51.77 -47.02)" fill="#ffcdd3"/><path d="M729.76,574.64a20.76,20.76,0,0,0-1.5,6.27c-2.5,2.09-5.23,2-8.74,2-2.7,0-5.69.66-7.84-.64a34.77,34.77,0,0,0-3.1-6.26S735.05,561.4,729.76,574.64Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><circle cx="667.28" cy="522.45" r="14.32" fill="#ffcdd3"/><path d="M734.45,595.93s-34.63,3.91-28.16,1.81c4.51-1.47,6.3-4.33,6.68-7.51,1.72-1.87,5.18-3.22,7.41-3.93a10.33,10.33,0,0,1,6.27-.1,8.36,8.36,0,0,1,2.28,1A18.91,18.91,0,0,0,734.45,595.93Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M754.15,576.92l-6.61,1.54-.14-1a5.84,5.84,0,0,1,6.36-2.18Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M647.63,569.37l-7.94,3.91-.16-1.71a58.44,58.44,0,0,1,8-3.54Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M748.15,683.19c-13.41,2.11-32.5,4.87-35.53,3.95-2.51-.77-10.53-.69-17.52-.45.06-3.49.12-5.81.12-5.81l52-5.41A43.08,43.08,0,0,0,748.15,683.19Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M761.52,680s-44.16,7.58-48.9,6.13-29.07.13-29.07.13c-10.95,7.33-6.37-3.49-6.37-3.49s-1-5.66.36-10.23a62.65,62.65,0,0,0,1.8-10.23s-.24-7.22,1.08-8.9,2.89-13.72,2.89-13.72,1.21-8.18,1.09-10,.36-6.85.36-6.85l1.56-8.43c-9-1.2-36.46-18.05-36.46-18.05-1.32-5.65-11.55-18.89-11.55-18.89a13.93,13.93,0,0,0-.84-3.25c-.72-1.92,10.11-5.77,10.11-5.77s8.06,9.87,9.74,12.51,7.46,7.58,7.46,7.58a5.83,5.83,0,0,1,2.65.35l.14,0h0a21.34,21.34,0,0,1,5.38,3.09,10.43,10.43,0,0,1,7.34,2.77s4.94-.72,5.78.12,5,0,5,0,4.22-8.9,7-6.32,14.51,2.47,14.51,2.47c1.57-2.08,5.37-3.57,7.76-4.34a10.33,10.33,0,0,1,6.27-.1,7.76,7.76,0,0,1,2.48,1.2l7.12,7s2-2.65,1.81-3.25,2.41-1.08,2.41-1.08,3.49-1.08,4.81-1.45,2.54,1.08,2.64,1.2a14.09,14.09,0,0,1-.6-5.29,6,6,0,0,0-1.44-4.33C750.09,570.3,759.6,579,759.6,579s1.08,5.65.12,7.82,1,6.74.72,7.94.48,3.25.48,5.53a32.9,32.9,0,0,1-1.92,8.55c-.73,1.92-6.5,6.25-6.5,6.25s-.36,6.86-2.89,10.83-1,17.57-1,17.57,2.4,10.59,5.41,14S761.52,680,761.52,680Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M697.15,600.87s-1.32-4-2.53-4.34a28.49,28.49,0,0,1-3.49-1.56l.78-1.48s4.52,1.24,5.24,2.56S697.15,600.87,697.15,600.87Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M673,592.08c-.24,1.21-10.94,2.29-10.94,2.29l5.41-5.43h0l.14.05h0A21.34,21.34,0,0,1,673,592.08Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><circle cx="590.21" cy="528.55" r="0.96" fill="#575988"/><circle cx="591.44" cy="530.48" r="0.96" fill="#575988"/><circle cx="592.65" cy="532.25" r="0.96" fill="#575988"/><circle cx="593.91" cy="534.18" r="0.96" fill="#575988"/><circle cx="707.33" cy="534.07" r="0.78" fill="#575988"/><circle cx="707.45" cy="535.85" r="0.78" fill="#575988"/><circle cx="707.55" cy="537.62" r="0.78" fill="#575988"/><path d="M697.21,633.47c-.11-.14,27,34.11,48.07,14.32C745.28,647.79,712,652.3,697.21,633.47Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M681.63,651.28s16.23.44,17.93,5.11v4.86a3.11,3.11,0,0,1-3,0c-1.64-.88-11.45-5.87-14.91-3.47Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M681.93,651.28s15.52.42,17.15,4.87v4.64a3,3,0,0,1-2.89,0c-1.57-.85-11-5.6-14.26-3.31Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M690.49,616a52.28,52.28,0,0,0,6.29,10.79,42.15,42.15,0,0,0,9.86,9.52S690.76,618.27,690.49,616Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M685.18,597.18s2.71,11.69,9.68,15.66Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M681,598.36c-.07-.22-2.41,9.24,9,14.48C690,612.84,685.18,611.2,681,598.36Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M751.9,590.52c-.18,0,5.62,3.7,7.2,5.41C759.1,595.93,755.33,590.28,751.9,590.52Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M715.18,582.44a3.05,3.05,0,0,0,1.11,1.94,3.13,3.13,0,0,0,1.35.3c4.37.27,8.91.46,13-1.22a4.84,4.84,0,0,0,2-1.31A7.79,7.79,0,0,0,733.7,579c.57-2.14,1.78-4,2.65-6.08A20.43,20.43,0,0,0,737.76,562a7.31,7.31,0,0,0-1.09-3.2c-1.16-1.65-3.27-2.32-4.8-3.64s-2.52-3.33-4.3-4.32a8.36,8.36,0,0,0-5.4-.48,28.53,28.53,0,0,0-10.08,3.79c-1,.64-2.18,1.37-3.37,1.15a4.63,4.63,0,0,1-2.48-1.9,13.32,13.32,0,0,0-1.07,6.23,3,3,0,0,1,0,.94,3,3,0,0,1-.67,1c-1.08,1.25-1.75,3.23-.69,4.49.47.55,1.18.85,1.63,1.41.81,1,.53,2.45.51,3.74a2,2,0,0,0,.32,1.27,1.86,1.86,0,0,0,1.77.42,4.84,4.84,0,0,1,1.88-.18,3.17,3.17,0,0,1,1.64,1.26C713.54,576.54,714.33,579.35,715.18,582.44Z" transform="translate(-51.77 -47.02)" fill="#2d293d"/><g opacity="0.1"><path d="M733,581.05a4.73,4.73,0,0,1-2,1.3c-4,1.69-8.58,1.49-12.94,1.22a2.94,2.94,0,0,1-1.35-.3,3,3,0,0,1-1.12-1.93c-.85-3.09-1.63-5.91-3.65-8.47a3.12,3.12,0,0,0-1.64-1.26,4.84,4.84,0,0,0-1.88.18,1.86,1.86,0,0,1-1.77-.42,1.94,1.94,0,0,1-.31-1.27c0-1.29.29-2.74-.52-3.74-.45-.56-1.16-.86-1.63-1.41a2.82,2.82,0,0,1-.27-2.88c-.77,1.22-1.1,2.78-.21,3.84.47.55,1.18.85,1.63,1.41.81,1,.53,2.45.51,3.74a2,2,0,0,0,.32,1.27,1.85,1.85,0,0,0,1.77.42,4.84,4.84,0,0,1,1.88-.18,3.17,3.17,0,0,1,1.64,1.26c2,2.57,2.8,5.38,3.65,8.47a3.05,3.05,0,0,0,1.11,1.94,3.13,3.13,0,0,0,1.35.3c4.37.27,8.91.46,13-1.22a4.91,4.91,0,0,0,2-1.31,3.81,3.81,0,0,0,.62-1.16C733.13,580.92,733.09,581,733,581.05Z" transform="translate(-51.77 -47.02)"/><path d="M705.18,560.19a2,2,0,0,0,.44-.73,3,3,0,0,0,0-.94,13.2,13.2,0,0,1,.67-5.18l-.08-.09a13.2,13.2,0,0,0-1.07,6.23A4.21,4.21,0,0,1,705.18,560.19Z" transform="translate(-51.77 -47.02)"/></g><path d="M712.62,591.12s17.89,2.37,19.5-.32" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M747.4,583.72s9.93,0,12.12,3.74" transform="translate(-51.77 -47.02)" opacity="0.1"/></svg>
0 2 \ No newline at end of file
... ...
front-end/landing-page/src/global.less 0 → 100644
  1 +@import './Page2/less/antMotionStyle.less';
  2 +@import './Page2/less/nav0.less';
  3 +@import './Page2/less/footer0.less';
... ...
front-end/landing-page/src/layouts/Footer0.jsx 0 → 100755
  1 +import React from 'react';
  2 +import TweenOne from 'rc-tween-one';
  3 +import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
  4 +
  5 +class Footer extends React.PureComponent {
  6 + render() {
  7 + const { ...props } = this.props;
  8 + const { dataSource } = props;
  9 + delete props.dataSource;
  10 + delete props.isMobile;
  11 + return (
  12 + <div {...props} {...dataSource.wrapper}>
  13 + <OverPack {...dataSource.OverPack}>
  14 + <TweenOne
  15 + animation={{ y: '+=30', opacity: 0, type: 'from' }}
  16 + key="footer"
  17 + {...dataSource.copyright}
  18 + >
  19 + {dataSource.copyright.children}
  20 + </TweenOne>
  21 + </OverPack>
  22 + </div>
  23 + );
  24 + }
  25 +}
  26 +
  27 +export default Footer;
... ...
front-end/landing-page/src/layouts/Nav0.jsx 0 → 100755
  1 +import React from 'react';
  2 +import { findDOMNode } from 'react-dom';
  3 +import TweenOne from 'rc-tween-one';
  4 +import { Menu, Popover, Icon } from 'antd';
  5 +import NavLink from 'umi/navlink';
  6 +
  7 +const Item = Menu.Item;
  8 +const { SubMenu } = Menu;
  9 +
  10 +class Header extends React.Component {
  11 + constructor(props) {
  12 + super(props);
  13 + this.state = {
  14 + phoneOpen: false,
  15 + menuHeight: 0,
  16 + };
  17 + }
  18 +
  19 + phoneClick = () => {
  20 + const menu = findDOMNode(this.menu);
  21 + const phoneOpen = !this.state.phoneOpen;
  22 + this.setState({
  23 + phoneOpen,
  24 + menuHeight: phoneOpen ? menu.scrollHeight : 0,
  25 + });
  26 + };
  27 +
  28 + render() {
  29 + const { ...props } = this.props;
  30 + const { dataSource, isMobile } = props;
  31 + delete props.dataSource;
  32 + delete props.isMobile;
  33 + const { menuHeight, phoneOpen } = this.state;
  34 + const navData = dataSource.Menu.children;
  35 + const navChildren = Object.keys(navData).map((key, i) => (
  36 + <Item key={i.toString()} {...navData[key]}>
  37 + <NavLink
  38 + {...navData[key].a}
  39 + href={navData[key].a.href}
  40 + to={navData[key].a.href}
  41 + target={navData[key].a.target}
  42 + >
  43 + {navData[key].a.children}
  44 + </NavLink>
  45 + </Item>
  46 + ));
  47 + return (
  48 + <TweenOne
  49 + component="header"
  50 + animation={{ opacity: 0, type: 'from' }}
  51 + {...dataSource.wrapper}
  52 + {...props}
  53 + >
  54 + <div
  55 + {...dataSource.page}
  56 + className={`${dataSource.page.className}${phoneOpen ? ' open' : ''}`}
  57 + >
  58 + <TweenOne
  59 + animation={{ x: -30, type: 'from', ease: 'easeOutQuad' }}
  60 + {...dataSource.logo}
  61 + >
  62 + {/* <img width="100%" src={dataSource.logo.children} alt="img" /> */}
  63 + <h1>
  64 + <a href="">Luban H5</a>
  65 + </h1>
  66 + </TweenOne>
  67 + <TweenOne
  68 + animation={{ x: -30, type: 'from', ease: 'easeOutQuad' }}
  69 + {...dataSource.logo}
  70 + >
  71 + <span style={{color: 'rgba(0,0,0,.65)'}}>移动建站平台</span>
  72 + </TweenOne>
  73 + {isMobile && (
  74 + <div
  75 + {...dataSource.mobileMenu}
  76 + onClick={() => {
  77 + this.phoneClick();
  78 + }}
  79 + >
  80 + <em />
  81 + <em />
  82 + <em />
  83 + </div>
  84 + )}
  85 + <TweenOne
  86 + {...dataSource.Menu}
  87 + animation={{ x: 30, type: 'from', ease: 'easeOutQuad' }}
  88 + ref={(c) => {
  89 + this.menu = c;
  90 + }}
  91 + style={isMobile ? { height: menuHeight } : null}
  92 + >
  93 + <Menu
  94 + mode={isMobile ? 'inline' : 'horizontal'}
  95 + defaultSelectedKeys={['0']}
  96 + theme={isMobile ? 'dark' : 'default'}
  97 + >
  98 + {/* {navChildren} */}
  99 + <SubMenu
  100 + style={{color: 'black'}}
  101 + title={
  102 + <span className="submenu-title-wrapper">
  103 + <Icon type="appstore" />
  104 + 相关链接
  105 + </span>
  106 + }
  107 + >
  108 + <Menu.ItemGroup title="项目地址">
  109 + <Menu.Item key="setting:3" onClick={() => {
  110 + window.open('https://api.luban-h5.wxjcart.com/main')
  111 + }}>Website</Menu.Item>
  112 + <Menu.Item key="setting:3.1" onClick={() => {
  113 + window.open('https://github.com/ly525/luban-h5')
  114 + }}>GitHub</Menu.Item>
  115 + <Menu.Item key="setting:4" onClick={() => {
  116 + window.open('https://gitee.com/ly525/luban-h5')
  117 + }}>Gitee</Menu.Item>
  118 + </Menu.ItemGroup>
  119 + <Menu.ItemGroup title="联系方式">
  120 + <Menu.Item key="setting:5.0" onClick={() => {
  121 + window.open('https://support.qq.com/products/93432/')
  122 + }}>论坛</Menu.Item>
  123 + <Menu.Item key="setting:5" onClick={() => {
  124 + window.open('https://gitee.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4')
  125 + }}>钉钉群</Menu.Item>
  126 + <Menu.Item key="setting:6" onClick={() => {
  127 + window.open('https://gitee.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4')
  128 + }}>微信群</Menu.Item>
  129 + </Menu.ItemGroup>
  130 + <Menu.ItemGroup title="Document">
  131 + <Menu.Item key="setting:1" onClick={() => {
  132 + window.open('https://ly525.github.io/luban-h5/zh/')
  133 + }}>中文文档</Menu.Item>
  134 + <Menu.Item key="setting:2" onClick={() => {
  135 + window.open('https://www.yuque.com/liuyan-ew1qk/oh5d0n?language=en-us')
  136 + }}>English Doc</Menu.Item>
  137 + </Menu.ItemGroup>
  138 + </SubMenu>
  139 + </Menu>
  140 + </TweenOne>
  141 + </div>
  142 + </TweenOne>
  143 + );
  144 + }
  145 +}
  146 +
  147 +export default Header;
... ...
front-end/landing-page/src/layouts/data.source.js 0 → 100755
  1 +import React from 'react';
  2 +
  3 +export const Nav00DataSource = {
  4 + wrapper: { className: 'header0 home-page-wrapper' },
  5 + page: { className: 'home-page' },
  6 + logo: {
  7 + className: 'header0-logo',
  8 + children: 'https://os.alipayobjects.com/rmsportal/mlcYmsRilwraoAe.svg',
  9 + },
  10 + Menu: {
  11 + className: 'header0-menu',
  12 + children: [
  13 + { name: 'item0', a: { children: '导航一', href: '/' } },
  14 + { name: 'item1', a: { children: '导航二', href: '/page2' } },
  15 + { name: 'item2', a: { children: '导航三', href: '' } },
  16 + { name: 'item3', a: { children: '导航四', href: '' } },
  17 + ],
  18 + },
  19 + mobileMenu: { className: 'header0-mobile-menu' },
  20 +};
  21 +
  22 +export const Footer00DataSource = {
  23 + wrapper: { className: 'home-page-wrapper footer0-wrapper' },
  24 + OverPack: { className: 'home-page footer0', playScale: 0.05 },
  25 + copyright: {
  26 + className: 'copyright',
  27 + children: (
  28 + <span>
  29 + ©2018
  30 + {' '}
  31 + <a href="https://motion.ant.design">Ant Motion</a>
  32 + {' '}
  33 + All Rights Reserved
  34 + </span>
  35 + ),
  36 + },
  37 +};
... ...
front-end/landing-page/src/layouts/footer0.less 0 → 100755
  1 +@import './custom.less';
  2 +.footer0-wrapper {
  3 + background-color: @template-bg-color;
  4 + height: 80px;
  5 + overflow: hidden;
  6 + .footer0 {
  7 + height: 100%;
  8 + padding: 0 24px;
  9 + line-height: 80px;
  10 + text-align: center;
  11 + color: @template-footer-text-color;
  12 + position: relative;
  13 + }
  14 +}
  15 +
  16 +@media screen and (max-width: 767px) {
  17 + .footer0-wrapper {
  18 + .footer0 {
  19 + font-size: 12px;
  20 + &.home-page {
  21 + padding: 0;
  22 + }
  23 + >div {
  24 + width: 90%;
  25 + margin: auto;
  26 + }
  27 + }
  28 + }
  29 +}
... ...
front-end/landing-page/src/layouts/index.js 0 → 100644
  1 +import React, { Component } from 'react';
  2 +import { enquireScreen } from 'enquire-js';
  3 +import Header from './Nav0';
  4 +import Footer from './Footer0';
  5 +
  6 +import {
  7 + Nav00DataSource,
  8 + Footer00DataSource,
  9 +} from './data.source.js';
  10 +
  11 +let isMobile;
  12 +class Layout extends Component {
  13 + constructor(props) {
  14 + super(props);
  15 + this.state = {
  16 + isMobile,
  17 + };
  18 + }
  19 +
  20 + componentDidMount() {
  21 + // 适配手机屏幕;
  22 + enquireScreen((b) => {
  23 + this.setState({ isMobile: !!b });
  24 + });
  25 + }
  26 +
  27 + render() {
  28 + return (
  29 + <>
  30 + <Header dataSource={Nav00DataSource} isMobile={this.state.isMobile} />
  31 + {this.props.children}
  32 + {/* <Footer dataSource={Footer00DataSource} isMobile={this.state.isMobile} /> */}
  33 + </>
  34 + );
  35 + }
  36 +}
  37 +
  38 +export default Layout;
0 39 \ No newline at end of file
... ...
front-end/landing-page/src/layouts/nav0.less 0 → 100755
  1 +@import './custom.less';
  2 +@header: header0;
  3 +.@{header} {
  4 + background: @template-nav-bg-color;
  5 + width: 100%;
  6 + z-index: 1;
  7 + box-shadow: 0 5px 8px fade(#000, 15);
  8 + position: relative;
  9 + top: 0;
  10 + .home-page {
  11 + padding: 0 24px;
  12 + }
  13 + &-logo {
  14 + display: inline-block;
  15 + position: relative;
  16 + width: 150px;
  17 + line-height: 64px;
  18 + & img {
  19 + vertical-align: middle;
  20 + display: inline-block;
  21 + }
  22 + & a {
  23 + display: block;
  24 + }
  25 + }
  26 + &-menu {
  27 + float: right;
  28 + >.ant-menu {
  29 + line-height: 62px;
  30 + background: transparent;
  31 + color: @template-text-color-light;
  32 + height: 64px;
  33 + border-bottom-color: transparent;
  34 + position: relative;
  35 + a {
  36 + color: @template-text-color-light;
  37 + &:hover {
  38 + color: @primary-color;
  39 + }
  40 + }
  41 + }
  42 + }
  43 + .ant-menu-item-selected a {
  44 + color: @primary-color;
  45 + }
  46 +}
  47 +
  48 +@media screen and (max-width: 767px) {
  49 + .@{header} {
  50 + &-logo {
  51 + z-index: 101;
  52 + }
  53 + &.home-page-wrapper .home-page {
  54 + padding: 0 24px;
  55 + }
  56 + & &-menu {
  57 + height: auto;
  58 + float: inherit;
  59 + position: relative;
  60 + left: -24px;
  61 + width: ~"calc(100% + 48px)";
  62 + opacity: 0;
  63 + transition: opacity .3s @ease-in-out, height .3s @ease-in-out;
  64 + & li {
  65 + padding: 0 24px;
  66 + &.ant-menu-submenu {
  67 + padding: 0;
  68 + }
  69 + }
  70 + & .ant-menu-submenu .ant-menu-sub {
  71 + padding: 0 24px;
  72 + }
  73 + }
  74 + &-mobile-menu {
  75 + width: 16px;
  76 + height: 14px;
  77 + cursor: pointer;
  78 + position: absolute;
  79 + top: 24px;
  80 + right: 24px;
  81 + z-index: 100;
  82 + em {
  83 + display: block;
  84 + width: 100%;
  85 + height: 2px;
  86 + background: #fff;
  87 + margin-top: 4px;
  88 + transition: transform .3s @ease-in-out, opacity .3s @ease-in-out;
  89 + }
  90 + :first-child {
  91 + margin-top: 0;
  92 + }
  93 + }
  94 + .ant-menu {
  95 + height: auto;
  96 + overflow: hidden;
  97 +
  98 + background: @template-bg-color;
  99 + .ant-menu-item-selected {
  100 + border: none;
  101 + }
  102 + a {
  103 + color: @template-text-color-light;
  104 + &:hover {
  105 + color: @template-text-color-light;
  106 + }
  107 + }
  108 + .ant-menu-item-selected a {
  109 + color: @template-text-color-light;
  110 + }
  111 + }
  112 + & .open {
  113 + height: auto;
  114 + .@{header}-mobile-menu {
  115 + em {
  116 + &:nth-child(1) {
  117 + transform: translateY(6px) rotate(45deg);
  118 + }
  119 + &:nth-child(2) {
  120 + opacity: 0;
  121 + }
  122 + &:nth-child(3) {
  123 + transform: translateY(-6px) rotate(-45deg);
  124 + }
  125 + }
  126 + }
  127 + >.@{header}-menu {
  128 + opacity: 1;
  129 + pointer-events: auto;
  130 + }
  131 + }
  132 + }
  133 +}
... ...
front-end/landing-page/src/pages/.umi/history.js 0 → 100644
  1 +// create history
  2 +const history = require('umi/lib/createHistory').default({
  3 + basename: window.routerBase,
  4 +});
  5 +window.g_history = history;
  6 +export default history;
... ...
front-end/landing-page/src/pages/.umi/polyfills.js 0 → 100644
  1 +import 'core-js';
  2 +import 'regenerator-runtime/runtime';
  3 +
... ...
front-end/landing-page/src/pages/.umi/router.js 0 → 100644
  1 +import React from 'react';
  2 +import { Router as DefaultRouter, Route, Switch } from 'react-router-dom';
  3 +import dynamic from 'umi/dynamic';
  4 +import renderRoutes from 'umi/lib/renderRoutes';
  5 +import history from '@tmp/history';
  6 +
  7 +const Router = DefaultRouter;
  8 +
  9 +const routes = [
  10 + {
  11 + path: '/',
  12 + component: require('../../layouts/index.js').default,
  13 + routes: [
  14 + {
  15 + path: '/',
  16 + exact: true,
  17 + component: require('../index.js').default,
  18 + },
  19 + {
  20 + path: '/page2',
  21 + exact: true,
  22 + component: require('../page2.js').default,
  23 + },
  24 + {
  25 + component: () =>
  26 + React.createElement(
  27 + require('/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/plugins/404/NotFound.js')
  28 + .default,
  29 + { pagesPath: 'src/pages', hasRoutesInConfig: false },
  30 + ),
  31 + },
  32 + ],
  33 + },
  34 + {
  35 + component: () =>
  36 + React.createElement(
  37 + require('/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/plugins/404/NotFound.js')
  38 + .default,
  39 + { pagesPath: 'src/pages', hasRoutesInConfig: false },
  40 + ),
  41 + },
  42 +];
  43 +window.g_routes = routes;
  44 +const plugins = require('umi/_runtimePlugin');
  45 +plugins.applyForEach('patchRoutes', { initialValue: routes });
  46 +
  47 +export { routes };
  48 +
  49 +export default class RouterWrapper extends React.Component {
  50 + unListen() {}
  51 +
  52 + constructor(props) {
  53 + super(props);
  54 +
  55 + // route change handler
  56 + function routeChangeHandler(location, action) {
  57 + plugins.applyForEach('onRouteChange', {
  58 + initialValue: {
  59 + routes,
  60 + location,
  61 + action,
  62 + },
  63 + });
  64 + }
  65 + this.unListen = history.listen(routeChangeHandler);
  66 + routeChangeHandler(history.location);
  67 + }
  68 +
  69 + componentWillUnmount() {
  70 + this.unListen();
  71 + }
  72 +
  73 + render() {
  74 + const props = this.props || {};
  75 + return <Router history={history}>{renderRoutes(routes, props)}</Router>;
  76 + }
  77 +}
... ...
front-end/landing-page/src/pages/.umi/umi.js 0 → 100644
  1 +import './polyfills';
  2 +import history from './history';
  3 +
  4 +import React from 'react';
  5 +import ReactDOM from 'react-dom';
  6 +import findRoute, {
  7 + getUrlQuery,
  8 +} from '/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/findRoute.js';
  9 +
  10 +// runtime plugins
  11 +const plugins = require('umi/_runtimePlugin');
  12 +window.g_plugins = plugins;
  13 +plugins.init({
  14 + validKeys: [
  15 + 'patchRoutes',
  16 + 'render',
  17 + 'rootContainer',
  18 + 'modifyRouteProps',
  19 + 'onRouteChange',
  20 + 'modifyInitialProps',
  21 + 'initialProps',
  22 + ],
  23 +});
  24 +
  25 +// render
  26 +let clientRender = async () => {
  27 + window.g_isBrowser = true;
  28 + let props = {};
  29 + // Both support SSR and CSR
  30 + if (window.g_useSSR) {
  31 + // 如果开启服务端渲染则客户端组件初始化 props 使用服务端注入的数据
  32 + props = window.g_initialData;
  33 + } else {
  34 + const pathname = location.pathname;
  35 + const activeRoute = findRoute(require('@tmp/router').routes, pathname);
  36 + // 在客户端渲染前,执行 getInitialProps 方法
  37 + // 拿到初始数据
  38 + if (
  39 + activeRoute &&
  40 + activeRoute.component &&
  41 + activeRoute.component.getInitialProps
  42 + ) {
  43 + const initialProps = plugins.apply('modifyInitialProps', {
  44 + initialValue: {},
  45 + });
  46 + props = activeRoute.component.getInitialProps
  47 + ? await activeRoute.component.getInitialProps({
  48 + route: activeRoute,
  49 + isServer: false,
  50 + location,
  51 + ...initialProps,
  52 + })
  53 + : {};
  54 + }
  55 + }
  56 + const rootContainer = plugins.apply('rootContainer', {
  57 + initialValue: React.createElement(require('./router').default, props),
  58 + });
  59 + ReactDOM[window.g_useSSR ? 'hydrate' : 'render'](
  60 + rootContainer,
  61 + document.getElementById('root'),
  62 + );
  63 +};
  64 +const render = plugins.compose(
  65 + 'render',
  66 + { initialValue: clientRender },
  67 +);
  68 +
  69 +const moduleBeforeRendererPromises = [];
  70 +// client render
  71 +if (__IS_BROWSER) {
  72 + Promise.all(moduleBeforeRendererPromises)
  73 + .then(() => {
  74 + render();
  75 + })
  76 + .catch(err => {
  77 + window.console && window.console.error(err);
  78 + });
  79 +}
  80 +
  81 +// export server render
  82 +let serverRender, ReactDOMServer;
  83 +if (!__IS_BROWSER) {
  84 + serverRender = async (ctx = {}) => {
  85 + // ctx.req.url may be `/bar?locale=en-US`
  86 + const [pathname] = (ctx.req.url || '').split('?');
  87 + const history = require('@tmp/history').default;
  88 + history.push(ctx.req.url);
  89 + let props = {};
  90 + const activeRoute =
  91 + findRoute(require('./router').routes, pathname) || false;
  92 + if (
  93 + activeRoute &&
  94 + activeRoute.component &&
  95 + activeRoute.component.getInitialProps
  96 + ) {
  97 + const initialProps = plugins.apply('modifyInitialProps', {
  98 + initialValue: {},
  99 + });
  100 + // patch query object
  101 + const location = history.location
  102 + ? { ...history.location, query: getUrlQuery(history.location.search) }
  103 + : {};
  104 + props = await activeRoute.component.getInitialProps({
  105 + route: activeRoute,
  106 + isServer: true,
  107 + location,
  108 + // only exist in server
  109 + req: ctx.req || {},
  110 + res: ctx.res || {},
  111 + ...initialProps,
  112 + });
  113 + props = plugins.apply('initialProps', {
  114 + initialValue: props,
  115 + });
  116 + } else {
  117 + // message activeRoute or getInitialProps not found
  118 + console.log(
  119 + !activeRoute
  120 + ? `${pathname} activeRoute not found`
  121 + : `${pathname} activeRoute's getInitialProps function not found`,
  122 + );
  123 + }
  124 + const rootContainer = plugins.apply('rootContainer', {
  125 + initialValue: React.createElement(require('./router').default, props),
  126 + });
  127 + const htmlTemplateMap = {};
  128 + return {
  129 + htmlElement:
  130 + activeRoute && activeRoute.path
  131 + ? htmlTemplateMap[activeRoute.path]
  132 + : '',
  133 + rootContainer,
  134 + matchPath: activeRoute && activeRoute.path,
  135 + g_initialData: props,
  136 + };
  137 + };
  138 + // using project react-dom version
  139 + // https://github.com/facebook/react/issues/13991
  140 + ReactDOMServer = require('react-dom/server');
  141 +}
  142 +
  143 +export { ReactDOMServer };
  144 +export default (__IS_BROWSER ? null : serverRender);
  145 +
  146 +require('../../global.less');
  147 +
  148 +// hot module replacement
  149 +if (__IS_BROWSER && module.hot) {
  150 + module.hot.accept('./router', () => {
  151 + clientRender();
  152 + });
  153 +}
... ...
front-end/landing-page/src/pages/.umi/umiExports.js 0 → 100644
front-end/landing-page/src/pages/index.css 0 → 100755
  1 +
  2 +.normal {
  3 + background: #C6F279;
  4 +}
... ...
front-end/landing-page/src/pages/index.js 0 → 100755
  1 +import Index from '../Index';
  2 +
  3 +export default function () {
  4 + return (
  5 + <Index />
  6 + );
  7 +}
0 8 \ No newline at end of file
... ...
front-end/landing-page/src/pages/page2.js 0 → 100644
  1 +import Page2 from '../Page2';
  2 +
  3 +export default function () {
  4 + return (
  5 + <Page2 />
  6 + );
  7 +}
... ...