first commit

This commit is contained in:
Xander 2025-02-17 18:18:14 +02:00
commit bfd6ff7f71
294 changed files with 313252 additions and 0 deletions

15
.gitignore vendored Normal file
View File

@ -0,0 +1,15 @@
# Python-generated files
__pycache__/
*.py[oc]
build/
wheels/
*.egg-info
# Virtual environments
.venv
.env
alembic.ini
/alembic
/files
hello.py
/test

1
.python-version Normal file
View File

@ -0,0 +1 @@
3.12

BIN
123users.db Normal file

Binary file not shown.

29
Dockerfile Normal file
View File

@ -0,0 +1,29 @@
FROM python:3.12-slim-bookworm
# The installer requires curl (and certificates) to download the release archive
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates nano
# Download the latest installer
ADD https://astral.sh/uv/install.sh /uv-installer.sh
# Run the installer then remove it
RUN sh /uv-installer.sh && rm /uv-installer.sh
# Ensure the installed binary is on the `PATH`
ENV PATH="/root/.local/bin/:$PATH"
# Copy the project into the image
ADD . /app
# Sync the project into a new environment, using the frozen lockfile
WORKDIR /app
RUN uv sync --frozen
# Expose port 8000
EXPOSE 8024
# Presuming there is a `my_app` command provided by the project uvicorn main:app --reload
CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8025"]

0
README.md Normal file
View File

11
docker-compose.yml Normal file
View File

@ -0,0 +1,11 @@
services:
link_admin:
build: .
container_name: link_admin
restart: always
env_file: .env
ports:
- "8024:8024"
volumes:
- .:/app
command: ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8025"]

11554
logs/app.log Normal file

File diff suppressed because one or more lines are too long

47
main.py Normal file
View File

@ -0,0 +1,47 @@
from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import RedirectResponse
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from model.database import init_db
from routers import index, logins, users, product, profile, jobs
import logging
# Создаём таблицы в БД
init_db()
# Инициализация приложения
app = FastAPI()
# Настройка шаблонов
templates = Jinja2Templates(directory="templates")
# Подключение статики (делаем это ОДИН раз)
app.mount("/static", StaticFiles(directory="static"), name="static")
# Подключение маршрутов
app.include_router(index.router, tags=["callback"])
app.include_router(logins.router, tags=["login"])
app.include_router(users.router, tags=["users"])
app.include_router(product.router, tags=["product"])
# Подключение роутеров
app.include_router(profile.router, tags=["Profile"])
app.include_router(jobs.router, tags=["Jobs"])
# Обработка 404
@app.exception_handler(404)
async def not_found(request: Request, exc: HTTPException):
return templates.TemplateResponse("working.html", {"request": request}, status_code=404)
@app.exception_handler(HTTPException)
async def auth_exception_handler(request: Request, exc: HTTPException):
if exc.status_code == 401:
return RedirectResponse(url="/login")
return RedirectResponse(url="/error")
@app.on_event("startup")
async def startup():
await init_db()

110
model/database.py Normal file
View File

@ -0,0 +1,110 @@
from sqlalchemy import Column, Integer, String, Text, DateTime, Float, Boolean, BigInteger
from sqlalchemy.dialects.mysql import JSON
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from sqlalchemy.sql import func
from passlib.context import CryptContext
from dotenv import load_dotenv
from sqlalchemy.future import select
import os
# Загружаем переменные окружения
load_dotenv()
# Правильная строка подключения
DATABASE_URL = os.getenv('DATABASE_URL') # Должно быть "mysql+aiomysql://..." или "postgresql+asyncpg://..."
# Создаём асинхронный движок
async_engine = create_async_engine(DATABASE_URL, echo=True)
# Создаём фабрику сессий
async_session = sessionmaker(async_engine, class_=AsyncSession, expire_on_commit=False)
# Базовый класс для моделей
Base = declarative_base()
# Контекст хеширования паролей
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
# Функция для инициализации базы данных
async def init_db():
async with async_engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
async with async_session() as session:
# Проверяем, есть ли уже данные в таблице пользователей
result = await session.execute(select(User).limit(1))
user_exists = result.scalars().first()
if not user_exists:
new_user = User(
username="admin",
hashed_password=hash_password("admin123"), # Пароль хешируем
role="admin",
is_active=True
)
session.add(new_user)
await session.commit()
# Зависимость FastAPI для работы с БД
async def get_async_session() -> AsyncSession:
async with async_session() as session:
yield session
# Функции для хеширования паролей
def hash_password(password: str) -> str:
return pwd_context.hash(password)
def verify_password(plain_password: str, hashed_password: str) -> bool:
return pwd_context.verify(plain_password, hashed_password)
# async def get_db():
# async with SessionLocal() as session:
# yield session
# Модель пользователя
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
username = Column(String(55), unique=True, index=True, nullable=False) # ✅ Правильно
hashed_password = Column(String(255), nullable=False)
role = Column(String(55), default="user")
is_active = Column(Boolean, default=True)
# Модель профиля
class Profile(Base):
__tablename__ = "profile"
id = Column(Integer, primary_key=True, index=True)
link = Column(String(255), unique=True, nullable=True)
first_name = Column(String(255), nullable=False)
last_name = Column(String(255), nullable=False)
pronouns = Column(String(50), nullable=True)
email = Column(String(255), nullable=True)
telephone = Column(String(20), nullable=True)
location = Column(String(255), nullable=True)
statement = Column(Text, nullable=True)
skills = Column(JSON, nullable=True) # JSON-поле для списка навыков
websites = Column(JSON, nullable=True) # JSON-поле для списка сайтов
languages = Column(JSON, nullable=True) # JSON-поле для языков
date = Column(DateTime, server_default=func.now())
# Модель вакансий
class Job(Base):
__tablename__ = "jobs"
job_id = Column(BigInteger, primary_key=True, index=True)
job_title = Column(String(255), nullable=False)
job_company = Column(String(255), nullable=True)
minimum_annual_salary = Column(Float, nullable=True)
salary_currency = Column(String(10), nullable=True)
location_type = Column(String(50), nullable=True) # Remote, On-site, Hybrid
location = Column(String(255), nullable=True)
job_level = Column(String(50), nullable=True) # Entry-level, Junior, Mid
job_type = Column(String(50), nullable=True) # Full-time, Part-time
days_posted = Column(Integer, nullable=True)
hourly_rate = Column(Float, nullable=True)
link = Column(String(2083), nullable=True) # URL вакансии
link_company = Column(String(2083), nullable=True) # URL компании
active = Column(Boolean, default=True) # Вакансия активна?

8
model/user.py Normal file
View File

@ -0,0 +1,8 @@
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True, index=True, nullable=False)
hashed_password = Column(String, nullable=False)
role = Column(String, default="user")
is_active = Column(Boolean, default=True)

22
pyproject.toml Normal file
View File

@ -0,0 +1,22 @@
[project]
name = "admins"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"aiomysql>=0.2.0",
"aiosqlite>=0.21.0",
"alembic>=1.14.1",
"fastapi>=0.115.8",
"jinja2>=3.1.5",
"linkedin-api>=2.3.1",
"passlib[bcrypt]>=1.7.4",
"pyjwt>=2.10.1",
"pymysql>=1.1.1",
"python-dotenv>=1.0.1",
"python-multipart>=0.0.20",
"schedule>=1.2.2",
"sqlalchemy>=2.0.38",
"uvicorn>=0.34.0",
]

33
routers/auth.py Normal file
View File

@ -0,0 +1,33 @@
from fastapi import Depends, HTTPException, Request
from fastapi.responses import RedirectResponse
import jwt
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from model.database import get_async_session, User
SECRET_KEY = "your_secret_key"
ALGORITHM = "HS256"
async def get_current_user(request: Request,db: AsyncSession = Depends(get_async_session)):
token = request.cookies.get("access_token")
print(token)
if not token:
raise HTTPException(status_code=401, detail="Unauthorized")
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
print(payload)
username = payload.get("sub")
if not username:
raise HTTPException(status_code=401, detail="Unauthorized")
# Получаем роль из БД
result = await db.execute(select(User).filter(User.username == username))
user = result.scalars().first()
if not user:
return RedirectResponse(url="/login")
return {"username": user.username, "role": user.role}
except (jwt.ExpiredSignatureError, jwt.InvalidTokenError):
raise HTTPException(status_code=401, detail="Unauthorized")

20
routers/index.py Normal file
View File

@ -0,0 +1,20 @@
from fastapi import FastAPI, APIRouter, Depends, Request, HTTPException, Form
from fastapi.templating import Jinja2Templates
from fastapi.responses import RedirectResponse, HTMLResponse
from fastapi.responses import JSONResponse
import jwt
from routers.auth import get_current_user
router = APIRouter()
templates = Jinja2Templates(directory="templates")
@router.get("/")
async def home(request: Request, username: dict = Depends(get_current_user)):
size = "Dashboard"
username = username
return templates.TemplateResponse("index.html", {"request": request, "size": size, "role": username["role"], "username": username['username'], "current_path": request.url.path })#

107
routers/jobs.py Normal file
View File

@ -0,0 +1,107 @@
from fastapi import FastAPI, APIRouter, Depends, Request, HTTPException, Form
from datetime import datetime
from dotenv import load_dotenv
import os
from fastapi.responses import HTMLResponse
from fastapi.responses import JSONResponse
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from pydantic import BaseModel, HttpUrl
from urllib.parse import urlparse, parse_qs
from linkedin_api import Linkedin
import logging
from utils.logging_setup import configure_global_logging
load_dotenv()
# # Ваши учетные данные LinkedIn
configure_global_logging()
router = APIRouter()
username = os.getenv('USERNAME')
password = os.getenv('PASSWD')
api = Linkedin(username, password)
DATABASE_URL = os.getenv('DATABASE_URL') # Ваши параметры подключения
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
class UrlModel(BaseModel):
link_profile: HttpUrl # Используем HttpUrl для проверки валидности URL
async def get_session() -> AsyncSession:
async with async_session() as session:
yield session
@router.post("/link_vacancy")
async def vacancy_url(data: UrlModel):
if not str(data.link_profile).startswith("https://www.linkedin.com/"):
# Возвращаем исключение с кодом 400 и сообщением об ошибке
raise HTTPException(status_code=400, detail="Неправильная ссылка")
query_params = parse_qs(urlparse(str(data.link_profile)).query)
current_job_id = query_params.get("currentJobId", [None])[0]
jobs = api.get_job(current_job_id)
location = jobs['formattedLocation']
title = jobs['title']
listedAt = jobs['listedAt']
# Преобразование из миллисекунд в секунды и конвертация
future_date = datetime.fromtimestamp(listedAt / 1000)
# Текущая дата
current_date = datetime.now()
# Разница в днях
difference = abs((future_date - current_date).days)
# print(f"Разница в днях: {difference}")
jobPostingId = jobs['jobPostingId']
# workplaceTypesResolutionResults = jobs['workplaceTypesResolutionResults']
# Извлекаем все localizedName
# localized_names = [value['localizedName'] for value in workplaceTypesResolutionResults.values()]
# print(localized_names)
# localized_name = workplaceTypesResolutionResults['urn:li:fs_workplaceType:2']['localizedName']
link = f'https://www.linkedin.com/jobs/view/{current_job_id}/'
return {"job_id": current_job_id,
"job_title": title,
"minimum_annual_salary": f"minimum_annual_salary",
"salary_currency": 'salary_currency',
'location_type': "location_type",
'location': location,
"job_level": "job_level",
"job_type": 'job_type',
"days_posted": difference,
"hourly_rate": "hourly_rate",
"link": link}

63
routers/logins.py Normal file
View File

@ -0,0 +1,63 @@
from fastapi import APIRouter, Depends, HTTPException, Request, Form, Response
from fastapi.responses import RedirectResponse
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from fastapi.security import OAuth2PasswordBearer
from fastapi.templating import Jinja2Templates
from passlib.context import CryptContext
from datetime import datetime, timedelta
import jwt
from model.database import get_async_session, User
# from model.models import User
router = APIRouter()
templates = Jinja2Templates(directory="templates")
SECRET_KEY = "your_secret_key"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
def create_access_token(data: dict, expires_delta: timedelta = None):
to_encode = data.copy()
expire = datetime.utcnow() + (expires_delta or timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES))
to_encode.update({"exp": expire})
return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
async def authenticate_user(db: AsyncSession, username: str, password: str):
stmt = select(User).where(User.username == username)
result = await db.execute(stmt)
user = result.scalar_one_or_none()
if not user or not pwd_context.verify(password, user.hashed_password):
return None
return user
@router.get("/login")
async def login_page(request: Request):
return templates.TemplateResponse("login.html", {"request": request})
@router.post("/login")
async def login(
response: Response,
username: str = Form(...),
password: str = Form(...),
db: AsyncSession = Depends(get_async_session)
):
user = await authenticate_user(db, username, password)
if not user:
return Response(content="Неправильный логин или пароль", media_type="text/html")
access_token = create_access_token(data={"sub": username, "role": user.role})
response = RedirectResponse(url="/", status_code=303)
response.set_cookie(key="access_token", value=access_token, httponly=True)
return response
@router.get("/logout")
async def logout():
response = RedirectResponse(url="/login", status_code=303)
response.delete_cookie("access_token")
return response

36
routers/product.py Normal file
View File

@ -0,0 +1,36 @@
from fastapi import FastAPI, APIRouter, Depends, Request, HTTPException, Form
from fastapi.templating import Jinja2Templates
from fastapi.responses import RedirectResponse, HTMLResponse
from fastapi.responses import JSONResponse
import jwt
from sqlalchemy.future import select
from sqlalchemy.ext.asyncio import AsyncSession
from routers.auth import get_current_user
from model.database import get_async_session, Job
router = APIRouter()
templates = Jinja2Templates(directory="templates")
@router.get("/product")
async def product(request: Request,
username: str = Depends(get_current_user),
session: AsyncSession = Depends(get_async_session)):
size = "Work"
username = username
query = select(Job)
result = await session.execute(query)
jobs = result.scalars().all()
return templates.TemplateResponse("product.html", {"request": request, "size": size,
"jobs": jobs, "role": username["role"],
"username": username['username'],
"current_path": request.url.path })#

200
routers/profile.py Normal file
View File

@ -0,0 +1,200 @@
from fastapi import FastAPI, APIRouter, Depends, Request, HTTPException, Form
from datetime import datetime
from dotenv import load_dotenv
import os
from fastapi.responses import HTMLResponse
from fastapi.responses import JSONResponse
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from pydantic import BaseModel, HttpUrl
from urllib.parse import urlparse, parse_qs
from linkedin_api import Linkedin
import logging
from utils.logging_setup import configure_global_logging
from model.database import async_session, Job, Profile
load_dotenv()
# # Ваши учетные данные LinkedIn
configure_global_logging()
router = APIRouter()
username = os.getenv('USERNAME')
password = os.getenv('PASSWD')
api = Linkedin(username, password)
DATABASE_URL = os.getenv('DATABASE_URL') # Ваши параметры подключения
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
class UrlModel(BaseModel):
link_profile: HttpUrl # Используем HttpUrl для проверки валидности URL
async def get_session() -> AsyncSession:
async with async_session() as session:
yield session
async def get_or_create_profile(
db: AsyncSession, link: str, first_name: str, last_name: str, geoLocationName: str, all_skills: list, all_languages: list
):
# Проверяем, существует ли запись с таким first_name и last_name
query = select(Profile).filter(Profile.link == link)
result = await db.execute(query)
profile = result.scalars().first()
# Если профиля нет, создаём новый
if not profile:
profile = Profile(
link = link,
first_name=first_name,
last_name=last_name,
location=geoLocationName,
skills=all_skills,
languages=all_languages
)
db.add(profile)
await db.commit()
# await db.refresh(profile)
return profile
@router.post("/link_profile")
async def profile_url(data: UrlModel, db: AsyncSession = Depends(get_session)):
# Проверяем, что ссылка начинается с "https://xander"
if not str(data.link_profile).startswith("https://www.linkedin.com/"):
# Возвращаем исключение с кодом 400 и сообщением об ошибке
raise HTTPException(status_code=400, detail="Incorrect link")
url_profiles = str(data.link_profile)
path = urlparse(url_profiles).path
# print(path)
# Пропускаем '/in/' и получаем последнюю часть
profiles = path.split("/")[2]
# print(profiles)
profile = api.get_profile(profiles)
print(profile)
logging.info(f"{profile}")
try:
firstName = profile['firstName']
lastName = profile['lastName']
locationName = profile['locationName']
# geoLocationName = profile['geoLocationName']
geoLocationName = profile.get('geoLocationName', '') if profile else ''
# logging.info(f"{geoLocationName}")
headline = profile['headline']
educations = profile['education']
education = [
{
"schoolName": item.get("schoolName"),
"Field_of_Study": item.get("fieldOfStudy"),
"Degree": item.get('degreeName'),
"Grade": "??",
"Start Date": item.get("timePeriod", {}).get("startDate", {}).get("year"),
"End Date": item.get("timePeriod", {}).get("endDate", {}).get("year"),
"Currently study here": '??',
"Description": "??"
}
for item in educations
]
experiences = profile['experience']
experience = [
{
"companyName": item.get("companyName"),
"title": item.get("title"),
"Employment type": "??",
"Location": item.get('geoLocationName'),
"Location Type": "??",
"Start Date": {
"month": item.get("timePeriod", {}).get("startDate", {}).get("month"),
"year": item.get("timePeriod", {}).get("startDate", {}).get("year"),
},
"End Date":{
"month": item.get("timePeriod", {}).get("endDate", {}).get("month"),
"year": item.get("timePeriod", {}).get("endDate", {}).get("year"),
},
"Currently study here": '??',
"Description": item.get('description')
}
for item in experiences
]
volunteers = profile['volunteer']
volunteer = [
{
"Organization": item.get("companyName"),
"Role": item.get("role"),
"Cause": item.get("cause"),
"Location": item.get('geoLocationName'),
"Start Date": {
"month": item.get("timePeriod", {}).get("startDate", {}).get("month"),
"year": item.get("timePeriod", {}).get("startDate", {}).get("year"),
},
"End Date":{
"month": item.get("timePeriod", {}).get("endDate", {}).get("month"),
"year": item.get("timePeriod", {}).get("endDate", {}).get("year"),
},
"Currently study here": '??',
"Description": item.get('description')
}
for item in volunteers
]
all_skills = profile['skills']
skills = [item['name'] for item in all_skills]
all_languages = profile['languages']
languages = [item['name'] for item in all_languages]
profile = await get_or_create_profile(
db, data.link_profile, firstName, lastName, f"{geoLocationName} {locationName}", skills, languages
)
# Если профиль не в виде словаря, возвращаем его напрямую
return {"FirstName": firstName,
"LastName":lastName,
"Location": f"{geoLocationName} {locationName}",
"Statement":headline,
'Education - list': education,
'Experience - list': experience,
"Volunteering - list": volunteer,
"skills": skills,
"languages":languages}
except Exception as e:
logging.error(e)
return "NOT date"

88
routers/users.py Normal file
View File

@ -0,0 +1,88 @@
from fastapi import APIRouter, Depends, HTTPException, Request, Form
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from model.database import get_async_session, User, hash_password
from fastapi.templating import Jinja2Templates
from fastapi.responses import RedirectResponse
from routers.auth import get_current_user
router = APIRouter()
templates = Jinja2Templates(directory="templates")
# 🔹 Список пользователей (доступно только авторизованным)
@router.get("/users")
async def users_list(
request: Request,
db: AsyncSession = Depends(get_async_session),
username: dict = Depends(get_current_user)
):
result = await db.execute(select(User))
users = result.scalars().all()
username = username
size = "Users"
if username["role"] != "admin":
raise HTTPException(status_code=403, detail="Access forbidden")
return templates.TemplateResponse("users.html", {"request": request, "users":users, "role": username["role"], "username": username["username"], "size": size, "current_path": request.url.path})
# 🔹 Создание пользователя (доступно только администраторам)
@router.post("/users/create")
async def create_user(
request: Request,
username: str = Form(...),
password: str = Form(...),
role: str = Form("user"),
db: AsyncSession = Depends(get_async_session),
current_user: dict = Depends(get_current_user) # Проверяем авторизацию
):
# Проверяем, является ли пользователь администратором
result = await db.execute(select(User).filter(User.username == current_user['username']))
user = result.scalars().first()
if not user or user.role != "admin":
raise HTTPException(status_code=403, detail="Доступ запрещен")
# Проверяем, есть ли уже такой пользователь
result = await db.execute(select(User).filter(User.username == username))
existing_user = result.scalars().first()
if existing_user:
raise HTTPException(status_code=400, detail="Пользователь уже существует")
hashed_password = hash_password(password)
new_user = User(username=username, hashed_password=hashed_password, role=role)
db.add(new_user)
await db.commit()
return RedirectResponse(url="/users", status_code=303)
# 🔹 Обновление пароля (доступно только для администраторов или самого пользователя)
@router.post("/users/update_password")
async def update_password(
request: Request,
user_id: int = Form(...),
new_password: str = Form(...),
db: AsyncSession = Depends(get_async_session),
current_user: dict = Depends(get_current_user) # Проверяем авторизацию
):
result = await db.execute(select(User).filter(User.id == user_id))
user = result.scalars().first()
if not user:
raise HTTPException(status_code=404, detail="Пользователь не найден")
# Получаем данные текущего пользователя
result = await db.execute(select(User).filter(User.username == current_user['username']))
current_user_obj = result.scalars().first()
# Только админ или сам пользователь могут менять пароль
if not current_user_obj or (current_user_obj.role != "admin" and current_user_obj.id != user.id):
raise HTTPException(status_code=403, detail="Доступ запрещен")
user.hashed_password = hash_password(new_password)
await db.commit()
return RedirectResponse(url="/users", status_code=303)

2346
search_jobes2.json Normal file

File diff suppressed because it is too large Load Diff

BIN
static/dist/css/ajax-loader.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

162979
static/dist/css/app.css vendored Normal file

File diff suppressed because it is too large Load Diff

BIN
static/dist/fonts/.DS_Store vendored Normal file

Binary file not shown.

202
static/dist/fonts/roboto/LICENSE.txt vendored Normal file
View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Binary file not shown.

Binary file not shown.

BIN
static/dist/fonts/roboto/Roboto-Bold.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
static/dist/fonts/roboto/Roboto-Thin.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
static/dist/images/.DS_Store vendored Normal file

Binary file not shown.

17
static/dist/images/bg-login-page.svg vendored Normal file
View File

@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="6395" height="1079" viewBox="0 0 6395 1079">
<defs>
<clipPath id="clip-path">
<rect id="Rectangle_73" data-name="Rectangle 73" width="6395" height="1079" transform="translate(-5391)" fill="#fff"/>
</clipPath>
<linearGradient id="linear-gradient" x1="0.747" y1="0.222" x2="0.973" y2="0.807" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#2b51b4"/>
<stop offset="1" stop-color="#1c3faa"/>
</linearGradient>
</defs>
<g id="Mask_Group_1" data-name="Mask Group 1" transform="translate(5391)" clip-path="url(#clip-path)">
<g id="Group_118" data-name="Group 118" transform="translate(-419.333 -1.126)">
<path id="Path_142" data-name="Path 142" d="M6271.734-6.176s-222.478,187.809-55.349,583.254c44.957,106.375,81.514,205.964,84.521,277,8.164,192.764-156.046,268.564-156.046,268.564l-653.53-26.8L5475.065-21.625Z" transform="translate(-4876.383 0)" fill="#f1f5f8"/>
<path id="Union_6" data-name="Union 6" d="M-2631.1,1081.8v-1.6H-8230.9V.022H-2631.1V0H-1871.4s-187.845,197.448-91.626,488.844c49.167,148.9,96.309,256.289,104.683,362.118,7.979,100.852-57.98,201.711-168.644,254.286-65.858,31.29-144.552,42.382-223.028,42.383C-2441.2,1147.632-2631.1,1081.8-2631.1,1081.8Z" transform="translate(3259.524 0.803)" fill="url(#linear-gradient)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,73 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="840" height="726.849" viewBox="0 0 840 726.849">
<defs>
<linearGradient id="linear-gradient" x1="0.5" y1="1" x2="0.5" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="gray" stop-opacity="0.251"/>
<stop offset="0.54" stop-color="gray" stop-opacity="0.122"/>
<stop offset="1" stop-color="gray" stop-opacity="0.102"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="-0.512" y1="7.758" x2="-0.512" y2="6.717" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="-1.386" y1="7.85" x2="-1.386" y2="6.809" xlink:href="#linear-gradient"/>
</defs>
<g id="undraw_Taken_if77" transform="translate(0 -0.001)">
<g id="Group_1" data-name="Group 1" opacity="0.8">
<ellipse id="Ellipse_1" data-name="Ellipse 1" cx="146.46" cy="113.46" rx="146.46" ry="113.46" transform="translate(285.54 18.85)" fill="url(#linear-gradient)"/>
</g>
<ellipse id="Ellipse_2" data-name="Ellipse 2" cx="143.21" cy="110.94" rx="143.21" ry="110.94" transform="translate(288.79 21.37)" fill="#565472"/>
<path id="Path_1" data-name="Path 1" d="M491.94,231.21c0-61.27,64.11-110.94,143.2-110.94A175.54,175.54,0,0,1,706.5,135c-25.17-17-58.1-27.33-94.14-27.33-79.09,0-143.21,49.67-143.21,110.94,0,41.14,28.91,77.05,71.86,96.21C510.94,294.48,491.94,264.57,491.94,231.21Z" transform="translate(-180 -86.57)" fill="#fff" opacity="0.1"/>
<path id="Path_2" data-name="Path 2" d="M432,176.9,590.76,451.88,749.52,726.85H114.48L273.24,451.88Z" fill="#ededf4" opacity="0.2"/>
<g id="Group_2" data-name="Group 2" opacity="0.3">
<path id="Path_3" data-name="Path 3" d="M649.67,652.79,662,616.2a62.66,62.66,0,0,0-23.2-70.89l.1-.06a61.48,61.48,0,0,0-15.79-8h0l-.17-.06-.19-.06h0a61.549,61.549,0,0,0-16.9-3.18,59.275,59.275,0,0,0-6.11,0,62.323,62.323,0,0,0-10.49,1.45c-1,.22-2,.47-2.91.74s-1.93.56-2.88.87c-1.9.63-3.77,1.34-5.6,2.15-.92.4-1.83.82-2.72,1.27a61.467,61.467,0,0,0-7.75,4.56c-.83.57-1.64,1.16-2.44,1.76a62,62,0,0,0-21.24,29.6L524.33,634a61.861,61.861,0,0,0-2.68,28.12c.2,1.45.45,2.89.74,4.32s.65,2.84,1,4.24c.27.93.55,1.86.86,2.78.46,1.37,1,2.74,1.51,4.08.37.89.76,1.78,1.17,2.66.81,1.75,1.71,3.46,2.68,5.13a54.1,54.1,0,0,0,3.16,4.88c.84,1.18,1.73,2.34,2.65,3.46a52.233,52.233,0,0,0,3.92,4.33,61.809,61.809,0,0,0,21,13.89h0l.34.14a21.659,21.659,0,0,1,1.4-2.17c3-4.11,8.22-7,13.19-5.92.36.08.72.19,1.08.3,2.52.89,5,2.48,7.43,3.26a6.66,6.66,0,0,0,5.61-.07c4.86-2.59,3.06-10.76,7.23-14.34a6.5,6.5,0,0,1,.61-.46,1.885,1.885,0,0,1-.16-.23c3.22-2,7.68-.67,11.39.62,4,1.41,9.22,2.36,12-.91,1.88-2.24,1.74-5.65,3.53-8,2.08-2.7,6-3,9.39-2.52l.17.05c6.5,2.68,13.6-1.77,13.1-8.78A54.765,54.765,0,0,1,649.67,652.79Z" transform="translate(-180 -86.57)" fill="url(#linear-gradient-2)"/>
</g>
<path id="Path_4" data-name="Path 4" d="M563.21,706.78c2.92-4,7.93-6.8,12.73-5.71s9.35,5.66,13.62,3.37c5.84-3.12,1.7-14.59,11.18-15.44a12.441,12.441,0,0,1,5.77,1c4,1.63,10.26,3.47,13.34-.2,1.81-2.16,1.68-5.45,3.41-7.69,2-2.6,5.81-2.93,9.06-2.43l.16.05c6.27,2.59,13.13-1.71,12.64-8.47-.63-9,2.23-17.48,2.85-19.32l11.88-35.31A60.38,60.38,0,0,0,622,540.34h0a60.38,60.38,0,0,0-76.27,37.86L527,633.73a60.39,60.39,0,0,0,34.82,75.15,21.457,21.457,0,0,1,1.39-2.1Z" transform="translate(-180 -86.57)" fill="#fff"/>
<circle id="Ellipse_3" data-name="Ellipse 3" cx="6.51" cy="6.51" r="6.51" transform="translate(398.84 479.57)" opacity="0.2"/>
<circle id="Ellipse_4" data-name="Ellipse 4" cx="6.51" cy="6.51" r="6.51" transform="translate(435.86 492.02)" opacity="0.2"/>
<ellipse id="Ellipse_5" data-name="Ellipse 5" cx="9.76" cy="6.51" rx="9.76" ry="6.51" transform="matrix(0.319, -0.948, 0.948, 0.319, 406.3, 524.221)" fill="#e0e0e0"/>
<circle id="Ellipse_6" data-name="Ellipse 6" cx="9.76" cy="9.76" r="9.76" transform="translate(542.77 477.76)" fill="#fff"/>
<circle id="Ellipse_7" data-name="Ellipse 7" cx="4.88" cy="4.88" r="4.88" transform="translate(578.57 467.29)" fill="#fff"/>
<g id="Group_4" data-name="Group 4" opacity="0.5">
<g id="Group_3" data-name="Group 3" opacity="0.3">
<path id="Path_5" data-name="Path 5" d="M662.67,259.79,675,223.2a62.66,62.66,0,0,0-23.2-70.89l.1-.06a61.479,61.479,0,0,0-15.79-8h0l-.17-.06-.19-.06h0a61.55,61.55,0,0,0-16.9-3.18,59.273,59.273,0,0,0-6.11,0,62.319,62.319,0,0,0-10.49,1.45c-1,.22-2,.47-2.91.74s-1.93.56-2.88.87c-1.9.63-3.77,1.34-5.6,2.15-.92.4-1.83.82-2.72,1.27a61.472,61.472,0,0,0-7.75,4.56c-.83.57-1.64,1.16-2.44,1.76a62,62,0,0,0-21.24,29.6L537.33,241a61.858,61.858,0,0,0-2.68,28.12c.2,1.45.45,2.89.74,4.32s.65,2.84,1,4.24c.27.93.55,1.86.86,2.78.46,1.37,1,2.74,1.51,4.08.37.89.76,1.78,1.17,2.66.81,1.75,1.71,3.46,2.68,5.13a54.1,54.1,0,0,0,3.16,4.88c.84,1.18,1.73,2.34,2.65,3.46,1.24,1.5,2.54,2.95,3.92,4.33a61.81,61.81,0,0,0,21,13.89h0l.34.14a21.648,21.648,0,0,1,1.4-2.17c3-4.11,8.22-7,13.19-5.92.36.08.72.19,1.08.3,2.52.89,5,2.48,7.43,3.26a6.66,6.66,0,0,0,5.61-.07c4.86-2.59,3.06-10.76,7.23-14.34a6.509,6.509,0,0,1,.61-.46,1.884,1.884,0,0,1-.16-.23c3.22-2,7.68-.67,11.39.62,4,1.41,9.22,2.36,12-.91,1.88-2.24,1.74-5.65,3.53-8,2.08-2.7,6-3,9.39-2.52h.17c6.5,2.68,13.6-1.77,13.1-8.78C659.06,270.51,662,261.7,662.67,259.79Z" transform="translate(-180 -86.57)" fill="url(#linear-gradient-3)"/>
</g>
<path id="Path_6" data-name="Path 6" d="M576.21,313.78c2.92-4,7.93-6.8,12.73-5.71s9.35,5.66,13.62,3.37c5.84-3.12,1.7-14.59,11.18-15.44a12.44,12.44,0,0,1,5.77,1c4,1.63,10.26,3.47,13.34-.2,1.81-2.16,1.68-5.45,3.41-7.69,2-2.6,5.81-2.93,9.06-2.43l.16.05c6.27,2.59,13.13-1.71,12.64-8.47-.63-9,2.23-17.48,2.85-19.32l11.88-35.31A60.38,60.38,0,0,0,635,147.34h0a60.38,60.38,0,0,0-76.27,37.86L540,240.73a60.39,60.39,0,0,0,34.82,75.15,21.462,21.462,0,0,1,1.39-2.1Z" transform="translate(-180 -86.57)" fill="#fff"/>
<circle id="Ellipse_8" data-name="Ellipse 8" cx="6.51" cy="6.51" r="6.51" transform="translate(411.84 86.57)" opacity="0.2"/>
<circle id="Ellipse_9" data-name="Ellipse 9" cx="6.51" cy="6.51" r="6.51" transform="translate(448.86 99.02)" opacity="0.2"/>
</g>
<path id="Path_7" data-name="Path 7" d="M749.52,186a87.518,87.518,0,0,1,2.79,22c0,61.27-64.11,110.94-143.2,110.94C544.38,318.9,489.69,285.64,472,240c13.14,50.77,71,89,140.41,89,79.09,0,143.21-49.67,143.21-110.94a88.159,88.159,0,0,0-6.1-32.06Z" transform="translate(-180 -86.57)" opacity="0.1"/>
<g id="Group_5" data-name="Group 5" opacity="0.8">
<ellipse id="Ellipse_10" data-name="Ellipse 10" cx="296.18" cy="77.41" rx="296.18" ry="77.41" transform="translate(135.82 103.27)" fill="url(#linear-gradient)"/>
</g>
<path id="Path_8" data-name="Path 8" d="M612,192.4c-158.18,0-286.42,33.51-286.42,74.86H898.42C898.42,225.91,770.18,192.4,612,192.4Z" transform="translate(-180 -86.57)" fill="#fff"/>
<path id="Path_9" data-name="Path 9" d="M612,342.11c158.18,0,286.42-33.51,286.42-74.85H325.58C325.58,308.6,453.82,342.11,612,342.11Z" transform="translate(-180 -86.57)" fill="#fff"/>
<path id="Path_10" data-name="Path 10" d="M612,342.11c158.18,0,286.42-33.51,286.42-74.85H325.58C325.58,308.6,453.82,342.11,612,342.11Z" transform="translate(-180 -86.57)" opacity="0.05"/>
<rect id="Rectangle_1" data-name="Rectangle 1" width="273.4" height="39.06" rx="17.22" transform="translate(295.3 161.15)" opacity="0.05"/>
<path id="Path_11" data-name="Path 11" d="M313.89,144.38a3.68,3.68,0,0,1-2.05-4.44,1.86,1.86,0,0,0,.08-.41h0a1.84,1.84,0,0,0-3.31-1.22h0a1.82,1.82,0,0,0-.2.36,3.67,3.67,0,0,1-4.44,2.05,2,2,0,0,0-.41-.08h0a1.84,1.84,0,0,0-1.22,3.31h0a1.619,1.619,0,0,0,.36.21,3.68,3.68,0,0,1,2.05,4.44,1.889,1.889,0,0,0-.08.4h0a1.84,1.84,0,0,0,3.31,1.23h0a1.649,1.649,0,0,0,.2-.37,3.67,3.67,0,0,1,4.44-2,2,2,0,0,0,.41.08h0a1.84,1.84,0,0,0,1.22-3.31h0A1.621,1.621,0,0,0,313.89,144.38Z" transform="translate(-180 -86.57)" fill="#fff" opacity="0.5"/>
<path id="Path_12" data-name="Path 12" d="M822.89,450.38a3.68,3.68,0,0,1-2-4.44,1.854,1.854,0,0,0,.08-.41h0a1.84,1.84,0,0,0-3.31-1.22h0a1.818,1.818,0,0,0-.2.36,3.67,3.67,0,0,1-4.44,2.05,2,2,0,0,0-.41-.08h0a1.84,1.84,0,0,0-1.22,3.31h0a1.622,1.622,0,0,0,.36.21,3.68,3.68,0,0,1,2,4.44,1.893,1.893,0,0,0-.08.4h0a1.84,1.84,0,0,0,3.31,1.23h0a1.648,1.648,0,0,0,.2-.37,3.67,3.67,0,0,1,4.44-2,2,2,0,0,0,.41.08h0a1.84,1.84,0,0,0,1.22-3.31h0a1.619,1.619,0,0,0-.36-.25Z" transform="translate(-180 -86.57)" fill="#fff" opacity="0.5"/>
<path id="Path_13" data-name="Path 13" d="M260.89,592.38a3.68,3.68,0,0,1-2.05-4.44,1.859,1.859,0,0,0,.08-.41h0a1.84,1.84,0,0,0-3.31-1.22h0a1.818,1.818,0,0,0-.2.36,3.67,3.67,0,0,1-4.44,2.05,2,2,0,0,0-.41-.08h0a1.84,1.84,0,0,0-1.22,3.31h0a1.619,1.619,0,0,0,.36.21,3.68,3.68,0,0,1,2.05,4.44,1.891,1.891,0,0,0-.08.4h0a1.84,1.84,0,0,0,3.31,1.23h0a1.649,1.649,0,0,0,.2-.37,3.67,3.67,0,0,1,4.44-2,2,2,0,0,0,.41.08h0a1.84,1.84,0,0,0,1.22-3.31h0A1.619,1.619,0,0,0,260.89,592.38Z" transform="translate(-180 -86.57)" fill="#fff" opacity="0.5"/>
<path id="Path_14" data-name="Path 14" d="M205.89,261.38a3.68,3.68,0,0,1-2-4.44,1.859,1.859,0,0,0,.08-.41h0a1.84,1.84,0,0,0-3.31-1.22h0a1.82,1.82,0,0,0-.2.36,3.67,3.67,0,0,1-4.44,2.05,2,2,0,0,0-.41-.08h0a1.84,1.84,0,0,0-1.22,3.31h0a1.621,1.621,0,0,0,.36.21,3.68,3.68,0,0,1,2.05,4.44,1.889,1.889,0,0,0-.08.4h0a1.84,1.84,0,0,0,3.31,1.23h0a1.65,1.65,0,0,0,.2-.37,3.67,3.67,0,0,1,4.44-2,2,2,0,0,0,.41.08h0a1.84,1.84,0,0,0,1.22-3.31h0A1.62,1.62,0,0,0,205.89,261.38Z" transform="translate(-180 -86.57)" fill="#fff" opacity="0.5"/>
<path id="Path_15" data-name="Path 15" d="M812.89,93.38a3.68,3.68,0,0,1-2-4.44,1.855,1.855,0,0,0,.08-.41h0a1.84,1.84,0,0,0-3.31-1.22h0a1.818,1.818,0,0,0-.2.36,3.67,3.67,0,0,1-4.44,2,2,2,0,0,0-.41-.08h0A1.84,1.84,0,0,0,801.34,93h0a1.618,1.618,0,0,0,.36.21,3.68,3.68,0,0,1,2,4.44,1.886,1.886,0,0,0-.08.4h0A1.84,1.84,0,0,0,807,99.23h0a1.65,1.65,0,0,0,.2-.37,3.67,3.67,0,0,1,4.44-2,2,2,0,0,0,.41.08h0a1.84,1.84,0,0,0,1.22-3.31h0a1.62,1.62,0,0,0-.38-.25Z" transform="translate(-180 -86.57)" fill="#fff" opacity="0.5"/>
<g id="Group_6" data-name="Group 6" opacity="0.5">
<rect id="Rectangle_2" data-name="Rectangle 2" width="3" height="17" transform="translate(110 257.85)" fill="#fff"/>
<rect id="Rectangle_3" data-name="Rectangle 3" width="3" height="17" transform="translate(120 264.85) rotate(90)" fill="#fff"/>
</g>
<g id="Group_7" data-name="Group 7" opacity="0.5">
<rect id="Rectangle_4" data-name="Rectangle 4" width="3" height="17" transform="translate(830 177.85)" fill="#fff"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="3" height="17" transform="translate(840 184.85) rotate(90)" fill="#fff"/>
</g>
<g id="Group_8" data-name="Group 8" opacity="0.5">
<rect id="Rectangle_6" data-name="Rectangle 6" width="3" height="17" transform="translate(730 456.85)" fill="#fff"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="3" height="17" transform="translate(740 463.85) rotate(90)" fill="#fff"/>
</g>
<circle id="Ellipse_11" data-name="Ellipse 11" cx="6" cy="6" r="6" transform="translate(717 75.85)" fill="#fff" opacity="0.5"/>
<circle id="Ellipse_12" data-name="Ellipse 12" cx="6" cy="6" r="6" transform="translate(0 6.85)" fill="#fff" opacity="0.5"/>
<circle id="Ellipse_13" data-name="Ellipse 13" cx="6" cy="6" r="6" transform="translate(180 351.85)" fill="#fff" opacity="0.5"/>
<ellipse id="Ellipse_14" data-name="Ellipse 14" cx="34" cy="7" rx="34" ry="7" transform="translate(200 147.43)" opacity="0.05"/>
<ellipse id="Ellipse_15" data-name="Ellipse 15" cx="34" cy="7" rx="34" ry="7" transform="translate(200 200.43)" opacity="0.05"/>
<ellipse id="Ellipse_16" data-name="Ellipse 16" cx="34" cy="7" rx="34" ry="7" transform="translate(587 147.43)" opacity="0.05"/>
<ellipse id="Ellipse_17" data-name="Ellipse 17" cx="34" cy="7" rx="34" ry="7" transform="translate(587 200.43)" opacity="0.05"/>
<ellipse id="Ellipse_18" data-name="Ellipse 18" cx="34" cy="7" rx="34" ry="7" transform="translate(398 117.43)" opacity="0.05"/>
<ellipse id="Ellipse_19" data-name="Ellipse 19" cx="34" cy="7" rx="34" ry="7" transform="translate(423 44.43)" opacity="0.05"/>
<ellipse id="Ellipse_20" data-name="Ellipse 20" cx="34" cy="7" rx="34" ry="7" transform="translate(358 74.43)" opacity="0.05"/>
<ellipse id="Ellipse_21" data-name="Ellipse 21" cx="34" cy="7" rx="34" ry="7" transform="translate(483 87.43)" opacity="0.05"/>
<ellipse id="Ellipse_22" data-name="Ellipse 22" cx="34" cy="7" rx="34" ry="7" transform="translate(398 221.43)" opacity="0.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

BIN
static/dist/images/food-beverage-1.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-10.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-11.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-12.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-13.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-14.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-15.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-16.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-17.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-18.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-19.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-2.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-3.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-4.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-5.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-6.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-7.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-8.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/food-beverage-9.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

121
static/dist/images/illustration.svg vendored Normal file
View File

@ -0,0 +1,121 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="330.653" height="229.984" viewBox="0 0 330.653 229.984">
<defs>
<linearGradient id="linear-gradient" x1="0.5" y1="1" x2="0.5" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="gray" stop-opacity="0.251"/>
<stop offset="0.54" stop-color="gray" stop-opacity="0.122"/>
<stop offset="1" stop-color="gray" stop-opacity="0.102"/>
</linearGradient>
</defs>
<g id="undraw_press_play_bx2d" transform="translate(0 -33.899)">
<circle id="Ellipse_37" data-name="Ellipse 37" cx="3.972" cy="3.972" r="3.972" transform="translate(302.377 33.899)" fill="#6c63ff" opacity="0.1"/>
<ellipse id="Ellipse_38" data-name="Ellipse 38" cx="27.882" cy="2.78" rx="27.882" ry="2.78" transform="translate(200.471 258.323)" fill="#6c63ff" opacity="0.1"/>
<path id="Path_65" data-name="Path 65" d="M136.394,487.31l-.122,6.6-.98,53.523L126.9,567.077l-28.9.331V490.352l30.166-2.39Z" transform="translate(-65.564 -326.011)" fill="#5f5d7e"/>
<path id="Path_66" data-name="Path 66" d="M136.394,487.31l-.122,6.6-.98,53.523L126.9,567.077l-28.9.331V490.352l30.166-2.39Z" transform="translate(-65.564 -326.011)" opacity="0.1"/>
<path id="Path_67" data-name="Path 67" d="M194.819,487.31l-.122,6.6-.98,53.523-8.387,19.641,2.208-73.038-.007-.046-.94-6.031Z" transform="translate(-123.989 -326.011)" fill="#5f5d7e"/>
<path id="Path_68" data-name="Path 68" d="M128.166,487.962l8.228-.652-.122,6.6-7.166.079L98,494.34v-3.988Z" transform="translate(-65.564 -326.011)" opacity="0.1"/>
<path id="Path_69" data-name="Path 69" d="M930.981,487.562v76.613h-6.729L897.33,544.538V485.4l24.053-2.261,1.476.679,1.393.642Z" transform="translate(-600.328 -323.222)" fill="#5f5d7e"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="6.729" height="80.356" transform="translate(323.924 160.597)" opacity="0.1"/>
<path id="Path_70" data-name="Path 70" d="M930.981,483.819v4.405l-6.729.076-26.922.3v-3.2l24.053-2.261,1.476.679,1.393.642v-.642Z" transform="translate(-600.328 -323.222)" opacity="0.1"/>
<path id="Path_71" data-name="Path 71" d="M330.653,464.929v6.242L0,474.858v-7.944l31.113-6.289,270.745-1.986Z" transform="translate(0 -306.831)" fill="#5f5d7e"/>
<path id="Path_72" data-name="Path 72" d="M330.653,477.64v6.242L0,487.57v-7.944Z" transform="translate(0 -319.542)" opacity="0.1"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="115.818" height="89.925" rx="22.82" transform="translate(120.975 64.539)" fill="#474157"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="97.349" height="73.356" transform="translate(130.295 72.651)" fill="#ededf4"/>
<circle id="Ellipse_39" data-name="Ellipse 39" cx="1.595" cy="1.595" r="1.595" transform="translate(124.9 107.732)" fill="#e6e8ec"/>
<circle id="Ellipse_40" data-name="Ellipse 40" cx="2.631" cy="2.631" r="2.631" transform="translate(229.326 106.868)" fill="#e6e8ec"/>
<path id="Path_73" data-name="Path 73" d="M620.934,349.638l-12.448-7.566a1.7,1.7,0,0,0-2.525,1.483V358.27a1.7,1.7,0,0,0,2.525,1.483l12.448-7.143a1.7,1.7,0,0,0,0-2.972Zm9.36,1.274a17.542,17.542,0,1,0-17.542,17.542A17.542,17.542,0,0,0,630.294,350.912Zm-31.688,0a14.146,14.146,0,1,1,14.146,14.146,14.146,14.146,0,0,1-14.146-14.146Z" transform="translate(-431.469 -240.026)" fill="#474157"/>
<path id="Path_74" data-name="Path 74" d="M736.127,405.782a4.14,4.14,0,0,0-.374-1.165c.251-.857.414-1.384.414-1.384a1.934,1.934,0,0,0-.04-.331,5.081,5.081,0,0,0-5.147-4.263c-1.986.036-5.753.169-9.93.639.238-1.671.523-3.671.821-5.729l.546.06a2.617,2.617,0,0,1,.391.02h.175a1.8,1.8,0,0,0,1.211-.371.715.715,0,0,0-.222-1.172A2.952,2.952,0,0,0,726.565,391a2.317,2.317,0,0,0,0-2.694c-.7-.993-2.178-1.655-2.257-2.823a3.449,3.449,0,0,1,.748-1.844,7.7,7.7,0,0,0-1.215-9.251,18.114,18.114,0,0,0-1.47-1.307c-.728-2.674-1.489-5.064-1.714-5.14-.291-.1-.791-.725-1.268-1.264a6.084,6.084,0,0,0-.023-1.367c-.351-2.317-2.648-3.972-3.912-6.017a10.388,10.388,0,0,1-1.168-6.894,49.322,49.322,0,0,1,1.807-6.9,8.782,8.782,0,0,0,.354-5.187,9.428,9.428,0,0,0-2.135-3.217,24.318,24.318,0,0,0-7.586-5.958,15.076,15.076,0,0,0-6.716-1.436h-.023l-.364.02-.258.017-.258.026-.275.026h0c-.281.036-.559.079-.837.136a28.9,28.9,0,0,0-6.14-.688h-.268a3.144,3.144,0,0,0-1.754.414c-.735.513-.828,1.433-1.049,2.234a6.2,6.2,0,0,1-2.383,3.31c-.791.569-1.721.993-2.476,1.589a2.522,2.522,0,0,0-1.142,2.37,2.586,2.586,0,0,0,1.655,1.622c-.1.119-.2.235-.288.357.156.063.331.119.473.165.993.295,2.062.331,3.068.6a6.722,6.722,0,0,1,.814.275,11.624,11.624,0,0,0-1.36,5.468,11.78,11.78,0,0,0,6.163,10.333v.331c.1,3.455-.159,7.659-1.926,8.371s-3.459,1.516-4.5,2.036l-.331.175c-.275-.126-.549-.258-.818-.4,0,0-1.407-.166-1.162.907,0,0-4.253-.662-6.587,1.155a60.655,60.655,0,0,0-6.914,6.6c-.751.99-6.56,3.154-6.56,3.154a7.448,7.448,0,0,0,1.039-5.693s-.874-3.78-.457-5.3,1.5-7.143,1.5-7.143.152-5.938-3.088-8.662-5.494-4.965-4.243-2.317a36.89,36.89,0,0,0,1.834,3.545s-7.748,1.84-5,4.713,3.5,2.876,3.5,2.876-.917,7.093-1.086,8.414-1.655,11.383-1.655,11.383-.083,4.786.751,5.527a3.765,3.765,0,0,0,4,2.979s6.58-.166,8.414-.907,8.162-4.7,8.831-4.455a.379.379,0,0,1,.129.086.945.945,0,0,1,.1.1c-.662,1.466-2.231,6.444-1.562,8.89,0,0-.583,6.927,2.916,9.155,0,0,5.081,8.579,3.164,13.2-.152.374-.288.718-.414,1.053-2.909-2.413-7.348-4.634-14.126-5.862-.692-.126-1.38-.278-2.062-.444-1.926-.467-7.225-.894-9.747,7.484a36.856,36.856,0,0,1-2.237,5.667,18.711,18.711,0,0,0-2.118,7.745c-.056,4,2.012,7.973,9.519,9.43a28.567,28.567,0,0,0,1.443,9.079c2.082,5.2,5.415,13.61,5.415,13.61s4,8.579,4.25,12.041a55.282,55.282,0,0,1,.235,7.282,3.246,3.246,0,0,1-.033.364,8.779,8.779,0,0,1-1.119,1.016c-.583.331-2.5,2.393-2.5,2.886a8.82,8.82,0,0,0,.126,1.41,3.474,3.474,0,0,0-1.4,2.515c0,4.475,12.7,8.1,28.365,8.1s28.362-3.641,28.362-8.1c0-4.084-10.592-7.46-24.354-8.016,2.87-1.145,5.418-2.347,6.474-3.31a1.549,1.549,0,0,0,.5-.682L705.5,473.78s-.208.046-.516.136l-.185-.278c-1.185-1.8-3.465-5.4-3.465-6.375,0-.361-.6-2.668-1.476-5.829V451.289c8.692,1.324,19.892-.477,19.892-.477l.05-.026h.218v-.119c1.506-.834,9.039-5.246,11.273-11.1.662-1.708-.162-4.154-1.8-6.769,1.145-2.843,3.972-10.188,3.69-13.117,0-.156-.02-.331-.02-.5a8.657,8.657,0,0,0,.033-.9c.331-4.3,2.979-12.164,2.979-12.164S736.16,405.981,736.127,405.782ZM679.86,386.665c.6,1.059,1.248,2.413,1.5,2.962h0s-.88-1.622-1.486-2.962Zm.629,92.709-.063.023v-.331a19.677,19.677,0,0,1,.063-2.588,3.032,3.032,0,0,0-.285-1.344,31.771,31.771,0,0,1-2.029-7.987,40.053,40.053,0,0,1-.434-6.835,121.041,121.041,0,0,0,.149-15.113l5.124,1.152,5.958,12.147s3.833,5.931,5.021,10.611V473.8a11.451,11.451,0,0,1-1.791,3.886c-.791,1.082-1.562,2.178-2.277,3.31-.218.351-.46.712-.7,1.049-.079,0-3.995.228-4.66.963a4.449,4.449,0,0,0-1.245,1.887l-.169.026a39.5,39.5,0,0,0-2.645-5.544Z" transform="translate(-470.055 -237.258)" fill="url(#linear-gradient)"/>
<path id="Path_75" data-name="Path 75" d="M775.915,767.873l-1.324,4.3-5.627,4.882-8.275,2.376s-3.889-2.128-2.565-2.542a3.266,3.266,0,0,0,1.248-1.086c-.463,1.688,3.22-.487,3.22-.487s9.516-6.785,10.509-7.53a7.484,7.484,0,0,1,2.118-.97C775.634,767.465,775.915,767.873,775.915,767.873Z" transform="translate(-540.277 -530.011)" opacity="0.1"/>
<path id="Path_76" data-name="Path 76" d="M757.738,692.923l-1.324,4.3-5.627,4.882-8.275,2.376s-3.889-2.128-2.565-2.542a3.264,3.264,0,0,0,1.248-1.086,16.54,16.54,0,0,0,1.105-1.6c.708-1.139,1.476-2.237,2.261-3.31a11.914,11.914,0,0,0,2.089-5.5c.579-4.551-5.3-13.736-5.3-13.736L730.68,654.79l14.894,1.82s8.026,27.555,8.026,28.878c0,.993,2.264,4.584,3.442,6.395C757.457,692.516,757.738,692.923,757.738,692.923Z" transform="translate(-522.1 -455.061)" fill="#fdc2cc"/>
<ellipse id="Ellipse_41" data-name="Ellipse 41" cx="28.173" cy="8.126" rx="28.173" ry="8.126" transform="translate(199.203 247.086)" fill="#5f5d7e"/>
<path id="Path_77" data-name="Path 77" d="M770.57,773.456a1.589,1.589,0,0,1-.5.685c-2.045,1.877-9.695,4.667-14.421,6.183a33.453,33.453,0,0,1-3.783,1.076,11.218,11.218,0,0,1-5.213-1.678c-1.655-1.016-.165-2.459.5-3.2s4.634-.966,4.634-.966c-1.9,3.167,2.81.387,2.81.387s9.516-6.785,10.509-7.53a9.134,9.134,0,0,1,2.813-1.158Z" transform="translate(-532.285 -530.298)" fill="#fff"/>
<path id="Path_79" data-name="Path 79" d="M789.781,788.09c-2.045,1.877-9.694,4.667-14.421,6.183C779.643,790.645,786.825,788.749,789.781,788.09Z" transform="translate(-551.992 -544.241)" opacity="0.1"/>
<ellipse id="Ellipse_42" data-name="Ellipse 42" cx="5.637" cy="1.625" rx="5.637" ry="1.625" transform="translate(221.74 250.969)" opacity="0.1"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.792" height="42.862" transform="translate(224.242 209.732)" fill="#5f5d7e"/>
<path id="Path_80" data-name="Path 80" d="M783.792,687.128v4.965A40.735,40.735,0,0,1,778,689.045V685h1.208Z" transform="translate(-553.758 -475.272)" opacity="0.1"/>
<path id="Path_81" data-name="Path 81" d="M754.27,610.208s19.124-4.922,23.884-8.606,23.45,13.65,20.981,20.19-11.459,11.277-11.459,11.277-24.86,4.045-29.094-4.392S754.27,610.208,754.27,610.208Z" transform="translate(-537.882 -419.138)" fill="#474157"/>
<path id="Path_82" data-name="Path 82" d="M754.27,610.208s19.124-4.922,23.884-8.606,23.45,13.65,20.981,20.19-11.459,11.277-11.459,11.277-24.86,4.045-29.094-4.392S754.27,610.208,754.27,610.208Z" transform="translate(-537.882 -419.138)" opacity="0.1"/>
<path id="Path_83" data-name="Path 83" d="M749.27,604.208s19.124-4.922,23.884-8.606,23.45,13.65,20.981,20.19-11.459,11.277-11.459,11.277-24.86,4.045-29.094-4.392S749.27,604.208,749.27,604.208Z" transform="translate(-534.537 -415.124)" fill="#474157"/>
<path id="Path_84" data-name="Path 84" d="M673.421,423.313l-2.069-.751a7.524,7.524,0,0,0,1.036-5.709s-.87-3.793-.457-5.329,1.489-7.166,1.489-7.166.152-5.958-3.068-8.688-5.455-4.965-4.213-2.317a36.873,36.873,0,0,0,1.82,3.558s-7.7,1.844-4.965,4.73,3.475,2.883,3.475,2.883-.91,7.116-1.076,8.44-1.655,11.419-1.655,11.419-.083,4.8.745,5.544a3.744,3.744,0,0,0,3.972,2.979C669.046,432.9,676.069,425.134,673.421,423.313Z" transform="translate(-476.426 -279.362)" fill="#fdc2cc"/>
<path id="Path_85" data-name="Path 85" d="M784.127,413.249v4.634l-4.8,1.566-8.175,6.017-2.168,1.6-9.681-3.889-6.123-6.454s.3-.162.814-.43l.331-.175c1.036-.52,2.668-1.324,4.472-2.042s2.016-4.928,1.913-8.4v-.331c-.083-2.433-.331-4.422-.331-4.422s1.009-.192,2.479-.41c4.074-.606,11.677-1.423,11.009,1.072a5.75,5.75,0,0,0,0,2.578c.02.093.04.189.063.281a21.834,21.834,0,0,0,2.82,6.16l6.62,2.383.185.066Z" transform="translate(-537.153 -284.522)" fill="#fdc2cc"/>
<path id="Path_86" data-name="Path 86" d="M838.485,441.541v-1.407a4.635,4.635,0,0,1,1.572,0c.579.166,1.678,1.9,2.175,2.069s3.535,11.5,3.2,12.495-3.459,23.411-3.459,23.411l-6.305,6.951-1.241-19.114,4.055-11.336Z" transform="translate(-591.511 -311.408)" fill="#fdc2cc"/>
<path id="Path_87" data-name="Path 87" d="M737.631,601.77s-5.762,1.241-5.031,3.062,3.955,1.9,3.955,1.9Z" transform="translate(-523.342 -419.59)" fill="#fdc2cc"/>
<path id="Path_88" data-name="Path 88" d="M710.965,463.909l-4.385,9.45-5.213,3.806-.91-5.882s-1.761-3.889-2.519-4.548a.381.381,0,0,0-.129-.086c-.662-.248-6.951,3.724-8.771,4.468s-8.357.91-8.357.91l2.9-10.343s5.792-2.151,6.537-3.144a60.24,60.24,0,0,1,6.868-6.62c2.317-1.82,6.544-1.158,6.544-1.158l.066.027,1.086.47,3.144,7.7Z" transform="translate(-488.65 -318.485)" fill="#fdc2cc"/>
<path id="Path_89" data-name="Path 89" d="M701.066,669.314a19.745,19.745,0,0,0-.063,2.595c.023.923.063,1.708.063,1.708l-1.9,3.972s-6.537,2.151-5.461,1.241a3.6,3.6,0,0,0,.662-2.214,56.151,56.151,0,0,0-.235-7.3c-.248-3.475-4.22-12.081-4.22-12.081s-3.31-8.44-5.378-13.653-1.324-14.646-1.324-14.646.331-7.116,1.82-9.268,7.282-2.9,7.282-2.9l2.717,9.013s2.234,8.44,3.062,9.681.579,16.053.248,17.625a42.153,42.153,0,0,0,.434,6.858,32.21,32.21,0,0,0,2.012,8.01A3.058,3.058,0,0,1,701.066,669.314Z" transform="translate(-490.252 -429.625)" fill="#fdc2cc"/>
<path id="Path_90" data-name="Path 90" d="M722.3,785.068l-1.9,3.972s-6.537,2.151-5.461,1.241a3.6,3.6,0,0,0,.662-2.214c.235-.235.487-.493.745-.758a16.712,16.712,0,0,1,5.908-3.949h0C722.263,784.283,722.3,785.068,722.3,785.068Z" transform="translate(-511.489 -541.076)" opacity="0.1"/>
<path id="Path_91" data-name="Path 91" d="M719.522,791.588a.19.19,0,0,1,0,.046c-.331,1.572-5.792,3.724-5.792,3.724s-3.475.579-5.461,1.076a1.374,1.374,0,0,1-.467.043c-1.532-.116-1.6-3.065-1.6-3.518a9.406,9.406,0,0,1,2.482-2.9,17.731,17.731,0,0,0,1.84-1.764,17.078,17.078,0,0,1,6.031-4.028h0S719.787,789.956,719.522,791.588Z" transform="translate(-505.723 -541.685)" fill="#fff"/>
<path id="Path_93" data-name="Path 93" d="M722.76,806.268a.2.2,0,0,1,0,.046c-.331,1.572-5.792,3.724-5.792,3.724s-3.475.579-5.461,1.076a1.373,1.373,0,0,1-.467.043c1.8-1.235,6.166-4.2,6.755-4.263S721.287,805.993,722.76,806.268Z" transform="translate(-508.961 -556.365)" opacity="0.1"/>
<path id="Path_94" data-name="Path 94" d="M788.514,404.442c-2.045,1.685-3.925,1.443-6.782,1.443-2.065,0-4.75.725-6.441-.205-.07-2.585-.331-4.76-.331-4.76s14.4-2.731,13.488.662A6.018,6.018,0,0,0,788.514,404.442Z" transform="translate(-551.724 -284.523)" opacity="0.1"/>
<path id="Path_95" data-name="Path 95" d="M781.1,361.146a11.833,11.833,0,0,1-11.833,11.833,8.249,8.249,0,0,1-.907-.033h0a11.833,11.833,0,1,1,12.743-11.8Z" transform="translate(-540.003 -250.694)" fill="#fdc2cc"/>
<path id="Path_96" data-name="Path 96" d="M742.7,459.252l3.144,4.965-4.385,9.45-5.213,3.806-.91-5.9s-1.761-3.889-2.519-4.548c.218-.533.367-.778.367-.583,0,.827,2.036,4.551,2.036,4.551,6.289-2.151,4.336-10.509,4.336-10.509s-.781-7.447-1.086-9.407l1.086.47Z" transform="translate(-523.532 -318.776)" opacity="0.1"/>
<path id="Path_97" data-name="Path 97" d="M784.127,439.869V444.5l-4.8,1.566-8.175,6.017-2.168,1.6-9.681-3.889-6.123-6.454s.3-.162.814-.43l.331-.175a40.413,40.413,0,0,0,16.718,3.005c12.468-1.986,12.839-5,12.528-6.067Z" transform="translate(-537.153 -311.142)" opacity="0.1"/>
<path id="Path_98" data-name="Path 98" d="M743.016,514.772a92.77,92.77,0,0,1-9.6,4.055c-5.709,2.069-18.287-.662-19.859-1.076s-13.653-5.213-18.287-7.033-5.792-.331-6.868-.5-1.82-2.234-1.986-2.813,2.979-5.627,4.717-8.192,6.951-2.069,7.7-2.234,5.958,0,5.958,0-.331-1.655,1.572-6.289-3.144-13.239-3.144-13.239c-3.475-2.234-2.9-9.185-2.9-9.185-.827-3.062,1.82-10.1,1.82-9.268s2.036,4.551,2.036,4.551c6.289-2.151,4.336-10.509,4.336-10.509s-.91-8.688-1.152-9.764,1.152-.91,1.152-.91q.4.209.814.4a40.229,40.229,0,0,0,17.059,3.161c15.116-2.439,12.438-6.328,12.339-6.467l.735.261c5.461,3.972,3.806,17.128,3.806,17.128l-2.046,9.82-1.519,7.315s5.378,32.6,5.875,34.257S743.016,514.772,743.016,514.772Z" transform="translate(-492.484 -311.002)" fill="#be7575"/>
<path id="Path_99" data-name="Path 99" d="M730.994,622c-.331.248-4.055,7.944-1.324,10.095S730.994,622,730.994,622Z" transform="translate(-520.759 -433.124)" opacity="0.1"/>
<path id="Path_100" data-name="Path 100" d="M743.68,625.27c.083.248,7.778,12.495,12,13.488Z" transform="translate(-530.798 -435.311)" opacity="0.1"/>
<path id="Path_101" data-name="Path 101" d="M797.2,332.386l-1.231.261a8.3,8.3,0,0,1,1.039-.308Z" transform="translate(-565.78 -239.337)" opacity="0.1"/>
<path id="Path_102" data-name="Path 102" d="M783.931,396.545l-2.317,9.814A11.986,11.986,0,0,1,778.4,404.2a9.8,9.8,0,0,0-2.35-1.966,10.2,10.2,0,0,0-4.081-.563,19.632,19.632,0,0,1-5.1-.874,3.6,3.6,0,0,1-1.324-.642,3.217,3.217,0,0,1-.662-2.8,42.889,42.889,0,0,0,.05-5.723c-.02-.357-.046-.715-.076-1.072-.132-1.6-.563-3.452-2.2-4.137-.841-.331-1.844-.3-2.648-.7a2.184,2.184,0,0,1-.331-.205c-1.192-.834-1.3-2.506-1.254-3.912q.106-2.9.2-5.8a16.857,16.857,0,0,0-.063-2.863h0a6.355,6.355,0,0,0-.516-1.827c-.718-1.536-2.214-2.817-2.482-4.438a1.8,1.8,0,0,1-.03-.228c-.139-1.45.774-2.8,1.1-4.227.642-2.87-1.516-6.014-4.69-6.838-.993-.258-2.059-.308-3.048-.6a4.9,4.9,0,0,1-.467-.165,13.894,13.894,0,0,1,11.167-5.3c7.391,0,13.385,5.3,13.385,11.833a11.356,11.356,0,0,1-4.945,9.185c.02.093.043.189.07.281a20.819,20.819,0,0,0,3.191,6.16l7.493,2.383.834.265C785.8,383.395,783.931,396.545,783.931,396.545Z" transform="translate(-533.969 -250.697)" opacity="0.1"/>
<path id="Path_103" data-name="Path 103" d="M867.572,520.655a1.126,1.126,0,0,1-.212-.03A.44.44,0,0,1,867.572,520.655Z" transform="translate(-613.541 -365.301)" opacity="0.1"/>
<path id="Path_104" data-name="Path 104" d="M759.671,330a28.465,28.465,0,0,0-6.315-.738,3.5,3.5,0,0,0-1.986.417c-.732.513-.824,1.44-1.043,2.241a6.216,6.216,0,0,1-2.367,3.31c-.784.573-1.708.993-2.459,1.6a2.566,2.566,0,0,0-1.135,2.376,2.938,2.938,0,0,0,2.171,1.84c.993.281,2.049.331,3.048.6,3.174.824,5.329,3.972,4.687,6.835-.331,1.427-1.235,2.777-1.1,4.227.162,1.731,1.761,3.065,2.512,4.67a10.092,10.092,0,0,1,.586,4.687l-.2,5.805c-.053,1.529.079,3.369,1.589,4.117.808.4,1.814.354,2.648.705,1.635.682,2.065,2.539,2.2,4.134a42.728,42.728,0,0,1,.026,6.8,3.187,3.187,0,0,0,.662,2.8,3.549,3.549,0,0,0,1.324.642,19.634,19.634,0,0,0,5.1.874,10.307,10.307,0,0,1,4.081.563,9.879,9.879,0,0,1,2.35,1.966,12.988,12.988,0,0,0,7.672,3.359,2.285,2.285,0,0,0,1.734-.354c.427-.394.175-1.244-.434-1.195a2.943,2.943,0,0,0,2.787-1.066,2.35,2.35,0,0,0,0-2.7c-.692-.993-2.161-1.655-2.241-2.833a3.5,3.5,0,0,1,.741-1.85,7.781,7.781,0,0,0-1.2-9.268c-1.552-1.605-3.879-2.823-4.422-4.882-.361-1.377.185-2.823-.023-4.223-.331-2.317-2.625-3.972-3.886-6.037a10.5,10.5,0,0,1-1.162-6.914,49.178,49.178,0,0,1,1.8-6.918,8.928,8.928,0,0,0,.351-5.206,9.539,9.539,0,0,0-2.122-3.227,23.894,23.894,0,0,0-7.533-5.958,13.774,13.774,0,0,0-9.837-.907" transform="translate(-531.233 -237.276)" fill="#474157"/>
<path id="Path_105" data-name="Path 105" d="M759.671,330a28.465,28.465,0,0,0-6.315-.738,3.5,3.5,0,0,0-1.986.417c-.732.513-.824,1.44-1.043,2.241a6.216,6.216,0,0,1-2.367,3.31c-.784.573-1.708.993-2.459,1.6a2.566,2.566,0,0,0-1.135,2.376,2.938,2.938,0,0,0,2.171,1.84c.993.281,2.049.331,3.048.6,3.174.824,5.329,3.972,4.687,6.835-.331,1.427-1.235,2.777-1.1,4.227.162,1.731,1.761,3.065,2.512,4.67a10.092,10.092,0,0,1,.586,4.687l-.2,5.805c-.053,1.529.079,3.369,1.589,4.117.808.4,1.814.354,2.648.705,1.635.682,2.065,2.539,2.2,4.134a42.728,42.728,0,0,1,.026,6.8,3.187,3.187,0,0,0,.662,2.8,3.549,3.549,0,0,0,1.324.642,19.634,19.634,0,0,0,5.1.874,10.307,10.307,0,0,1,4.081.563,9.879,9.879,0,0,1,2.35,1.966,12.988,12.988,0,0,0,7.672,3.359,2.285,2.285,0,0,0,1.734-.354c.427-.394.175-1.244-.434-1.195a2.943,2.943,0,0,0,2.787-1.066,2.35,2.35,0,0,0,0-2.7c-.692-.993-2.161-1.655-2.241-2.833a3.5,3.5,0,0,1,.741-1.85,7.781,7.781,0,0,0-1.2-9.268c-1.552-1.605-3.879-2.823-4.422-4.882-.361-1.377.185-2.823-.023-4.223-.331-2.317-2.625-3.972-3.886-6.037a10.5,10.5,0,0,1-1.162-6.914,49.178,49.178,0,0,1,1.8-6.918,8.928,8.928,0,0,0,.351-5.206,9.539,9.539,0,0,0-2.122-3.227,23.894,23.894,0,0,0-7.533-5.958,13.774,13.774,0,0,0-9.837-.907" transform="translate(-531.233 -237.276)" opacity="0.1"/>
<path id="Path_106" data-name="Path 106" d="M737.18,548.476s2.813,1.076,5.792-1.9S737.18,548.476,737.18,548.476Z" transform="translate(-526.449 -382.018)" opacity="0.1"/>
<g id="Group_116" data-name="Group 116" transform="translate(213.048 92.004)" opacity="0.1">
<path id="Path_107" data-name="Path 107" d="M793.1,330.871a11.772,11.772,0,0,1,1.655-.209,12.553,12.553,0,0,0-2.317.073Z" transform="translate(-776.467 -330.203)"/>
<path id="Path_108" data-name="Path 108" d="M777.411,390.5a9.9,9.9,0,0,0-2.353-1.966,10.3,10.3,0,0,0-4.081-.563,19.527,19.527,0,0,1-5.1-.874,3.548,3.548,0,0,1-1.324-.642,3.225,3.225,0,0,1-.662-2.8,42.729,42.729,0,0,0-.026-6.8c-.136-1.6-.563-3.452-2.2-4.134-.837-.351-1.84-.308-2.648-.7-1.509-.748-1.655-2.588-1.592-4.117q.1-2.9.2-5.8a10.059,10.059,0,0,0-.586-4.69c-.751-1.605-2.35-2.936-2.512-4.67-.136-1.446.778-2.8,1.1-4.227.642-2.87-1.516-6.011-4.69-6.835-.993-.258-2.059-.311-3.048-.6a2.905,2.905,0,0,1-2.155-1.82,2.52,2.52,0,0,1,1.132-2.38c.751-.606,1.675-1.023,2.463-1.6a6.193,6.193,0,0,0,2.363-3.31,3.713,3.713,0,0,1,1.043-2.241,2.648,2.648,0,0,1,1.357-.4c-.295,0-.589-.017-.88-.017a3.521,3.521,0,0,0-1.986.414c-.732.516-.824,1.44-1.043,2.241a6.216,6.216,0,0,1-2.367,3.31c-.784.573-1.708.993-2.459,1.6a2.568,2.568,0,0,0-1.135,2.38,2.92,2.92,0,0,0,2.158,1.82c.99.295,2.049.331,3.048.6,3.174.824,5.329,3.972,4.687,6.835-.331,1.427-1.235,2.78-1.1,4.227.162,1.734,1.761,3.065,2.512,4.67a10.057,10.057,0,0,1,.586,4.69q-.1,2.9-.2,5.8c-.053,1.529.079,3.369,1.589,4.117.808.4,1.814.354,2.648.7,1.635.682,2.065,2.539,2.2,4.134a42.743,42.743,0,0,1,.026,6.8,3.187,3.187,0,0,0,.662,2.8,3.548,3.548,0,0,0,1.324.642,19.5,19.5,0,0,0,5.1.874,10.308,10.308,0,0,1,4.081.563A9.959,9.959,0,0,1,775.9,390.5a12.968,12.968,0,0,0,7.669,3.36,3.544,3.544,0,0,0,1.109-.043A12.945,12.945,0,0,1,777.411,390.5Z" transform="translate(-744.18 -329.32)"/>
</g>
<path id="Path_109" data-name="Path 109" d="M684.782,484s-2.648,2.429-2.261,3.422S684.782,484,684.782,484Z" transform="translate(-489.856 -340.8)" opacity="0.1"/>
<path id="Path_110" data-name="Path 110" d="M668.535,577.927c-1.91-.467-7.176-.9-9.681,7.507a37.18,37.18,0,0,1-2.221,5.683c-2.4,4.935-5.508,15.083,8.146,17.317l32.767,7.447s17.542,2.151,18.7,1.324a3.207,3.207,0,0,0,.993-2.648s-19.363,0-23.169-5.958-3.972-14.067-3.972-14.067.477-12.521-19.528-16.159C669.908,578.248,669.213,578.092,668.535,577.927Z" transform="translate(-471.152 -403.498)" fill="#474157"/>
<path id="Path_111" data-name="Path 111" d="M668.535,578.1c-1.91-.467-7.176-.9-9.681,7.51a37.185,37.185,0,0,1-2.221,5.683c-2.4,4.932-5.508,15.08,8.146,17.314l32.767,7.447s17.542,2.151,18.7,1.324a3.207,3.207,0,0,0,.993-2.648s-19.363,0-23.169-5.958S690.1,594.7,690.1,594.7s.477-12.521-19.528-16.159C669.908,578.418,669.213,578.256,668.535,578.1Z" transform="translate(-471.152 -403.612)" opacity="0.1"/>
<path id="Path_112" data-name="Path 112" d="M811.958,543.834a5.061,5.061,0,0,0-5.114-4.276c-4.713.086-19.22.715-25.959,5.117,0,0-5.13,3.31-6.62,3.31s-21.68,17.211,8.275,32.6c0,0,16.053,4.568,22.341-6.156,0,0,4.468-11.518,4.137-15.507S812,544.178,812,544.178,811.991,544.049,811.958,543.834Z" transform="translate(-545.886 -377.968)" fill="#474157"/>
<path id="Path_113" data-name="Path 113" d="M811.958,553.257a4.963,4.963,0,0,0-5.114-3.949c-4.713.079-19.22.662-25.959,4.723,0,0-5.13,3.055-6.62,3.055s-21.68,15.887,8.275,30.1c0,0,16.053,4.217,22.341-5.683,0,0,4.468-10.635,4.137-14.315S812,553.575,812,553.575,811.991,553.456,811.958,553.257Z" transform="translate(-545.886 -384.491)" opacity="0.1"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.296" height="11.277" transform="translate(244.763 202.615)" fill="#5f5d7e"/>
<ellipse id="Ellipse_43" data-name="Ellipse 43" cx="14.908" cy="0.957" rx="14.908" ry="0.957" transform="translate(41.439 154.848)" opacity="0.1"/>
<path id="Path_114" data-name="Path 114" d="M266.794,405.634a5.687,5.687,0,0,0-.755,1.42c-.046.126-.093.265-.139.4a1.22,1.22,0,0,0-.262-.089,3.753,3.753,0,0,0-1.182-.1c0-.152.02-.331.023-.483.05-1.744-.156-4.177-1.82-3.148-1.6.993-.457,2.648.573,3.71l.265.258c-.94.662-1.119,2.228-1.274,3.853s-1.536,3.406-2.453,4.415c-.093.1-.175.2-.258.281a3.346,3.346,0,0,0-2.664-.685c-.036-.142-.079-.291-.122-.45-.741-2.674-2.28-7.311-4.243-8.328l.258-.331c.834-1.092,1.774-2.711.387-3.128s-1.513,1.407-1.436,2.77c0,.172.026.331.04.483a2.042,2.042,0,0,0-1.45.708l-.215-.252c-1.125-1.324-3.187-3.432-3.813-1.84-.583,1.483,1.235,3.406,2.512,4.521l.079.07c-.857,3.485,2.876,6.332,4.9,7.563l.261.159c-2.78,3.277-4.5,9.417-4.5,9.417l7.785,1.39s5.163-4.452,4.5-8.635h.053c5.16-1.033,6.332-6.534,5.527-9.8l.093-.036a5.871,5.871,0,0,0,2.39-1.807C271.3,405.928,268.271,403.664,266.794,405.634Z" transform="translate(-197.937 -286.721)" fill="#2b4ca5"/>
<path id="Path_115" data-name="Path 115" d="M266.794,405.634a5.687,5.687,0,0,0-.755,1.42c-.046.126-.093.265-.139.4a1.22,1.22,0,0,0-.262-.089,3.753,3.753,0,0,0-1.182-.1c0-.152.02-.331.023-.483.05-1.744-.156-4.177-1.82-3.148-1.6.993-.457,2.648.573,3.71l.265.258c-.94.662-1.119,2.228-1.274,3.853s-1.536,3.406-2.453,4.415c-.093.1-.175.2-.258.281a3.346,3.346,0,0,0-2.664-.685c-.036-.142-.079-.291-.122-.45-.741-2.674-2.28-7.311-4.243-8.328l.258-.331c.834-1.092,1.774-2.711.387-3.128s-1.513,1.407-1.436,2.77c0,.172.026.331.04.483a2.042,2.042,0,0,0-1.45.708l-.215-.252c-1.125-1.324-3.187-3.432-3.813-1.84-.583,1.483,1.235,3.406,2.512,4.521l.079.07c-.857,3.485,2.876,6.332,4.9,7.563l.261.159c-2.78,3.277-4.5,9.417-4.5,9.417l7.785,1.39s5.163-4.452,4.5-8.635h.053c5.16-1.033,6.332-6.534,5.527-9.8l.093-.036a5.871,5.871,0,0,0,2.39-1.807C271.3,405.928,268.271,403.664,266.794,405.634Z" transform="translate(-197.937 -286.721)" fill="none" opacity="0.1"/>
<path id="Path_116" data-name="Path 116" d="M252.281,410.632l-.9,2.664s-.506-.357-1.145-.92c-1.278-1.115-3.095-3.038-2.512-4.521.626-1.592,2.688.51,3.813,1.84C251.98,410.222,252.281,410.632,252.281,410.632Z" transform="translate(-198.92 -289.475)" fill="#fff"/>
<path id="Path_117" data-name="Path 117" d="M265.366,406.372a12.872,12.872,0,0,1-.887,1.043,13.968,13.968,0,0,1-.162-1.4c-.076-1.364.069-3.174,1.436-2.77S266.187,405.279,265.366,406.372Z" transform="translate(-210.085 -286.734)" fill="#fff"/>
<path id="Path_118" data-name="Path 118" d="M297.718,407.222c-.026.877-.113,1.576-.113,1.576a11.251,11.251,0,0,1-1.135-1.013c-1.029-1.069-2.168-2.717-.573-3.71C297.559,403.045,297.765,405.477,297.718,407.222Z" transform="translate(-230.694 -287.164)" fill="#fff"/>
<path id="Path_119" data-name="Path 119" d="M310.61,411.379a5.872,5.872,0,0,1-2.4,1.8,6.68,6.68,0,0,1-.8.288l-1.072-1.506a10.932,10.932,0,0,1,.444-1.463,5.687,5.687,0,0,1,.755-1.42A1.919,1.919,0,0,1,310.61,411.379Z" transform="translate(-238.21 -290.173)" fill="#fff"/>
<path id="Path_120" data-name="Path 120" d="M256.831,414.57c.453.526.755.937.755.937l-.9,2.664s-.506-.357-1.145-.92a5.213,5.213,0,0,1,1.026-2.34A3.1,3.1,0,0,1,256.831,414.57Z" transform="translate(-204.224 -294.35)" opacity="0.1"/>
<path id="Path_121" data-name="Path 121" d="M265.4,412.088a12.888,12.888,0,0,1-.887,1.043,13.977,13.977,0,0,1-.162-1.4A1.807,1.807,0,0,1,265.4,412.088Z" transform="translate(-210.118 -292.45)" opacity="0.1"/>
<path id="Path_122" data-name="Path 122" d="M263.826,423.624l-2.264.993s-.493-.238-1.2-.682c-2.38-1.466-7.162-5.15-3.955-9.493s5.882,3.449,6.934,7.255C263.671,422.84,263.826,423.624,263.826,423.624Z" transform="translate(-204.084 -293.409)" fill="#fff"/>
<path id="Path_123" data-name="Path 123" d="M299.22,414.643a1.844,1.844,0,0,1,1.248-.563c-.026.877-.113,1.575-.113,1.575A11.259,11.259,0,0,1,299.22,414.643Z" transform="translate(-233.447 -294.022)" opacity="0.1"/>
<path id="Path_124" data-name="Path 124" d="M308.213,417.581a6.68,6.68,0,0,1-.8.288l-1.072-1.506a10.935,10.935,0,0,1,.444-1.463A3.83,3.83,0,0,1,308.213,417.581Z" transform="translate(-238.21 -294.571)" opacity="0.1"/>
<path id="Path_125" data-name="Path 125" d="M285.8,427.814l-.381.066c-7.589,1.155-2.5-2.939-2.5-2.939s.331-.314.8-.831c.917-1.009,2.294-2.78,2.453-4.415.238-2.459.513-4.766,3.416-4.088C292.452,416.272,293,426.374,285.8,427.814Z" transform="translate(-221.423 -294.963)" fill="#fff"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="14.5" height="3.813" transform="translate(49.747 151.743)" fill="#474157"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="18.946" height="13.306" transform="translate(47.443 139.351)" fill="#474157"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="14.5" height="3.813" transform="translate(49.608 151.743)" opacity="0.1"/>
<rect id="Rectangle_63" data-name="Rectangle 63" width="18.946" height="13.306" transform="translate(47.384 139.354)" opacity="0.1"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="14.5" height="3.813" transform="translate(50.7 151.743)" fill="#474157"/>
<path id="Path_126" data-name="Path 126" d="M273.539,439c.331,1.139.49,1.923.49,1.923l-2.264.993s-.493-.238-1.2-.682A5.677,5.677,0,0,1,273.539,439Z" transform="translate(-214.273 -310.694)" opacity="0.1"/>
<path id="Path_127" data-name="Path 127" d="M285.8,445.244l-.381.066c-7.589,1.155-2.5-2.939-2.5-2.939s.331-.314.8-.831A5,5,0,0,1,285.8,445.244Z" transform="translate(-221.423 -312.393)" opacity="0.1"/>
<path id="Path_128" data-name="Path 128" d="M257.76,451.555s4.25-15.225,10.211-10.525-2.426,11.915-2.426,11.915Z" transform="translate(-205.709 -311.449)" fill="#fff"/>
<circle id="Ellipse_44" data-name="Ellipse 44" cx="0.477" cy="0.477" r="0.477" transform="translate(53.719 122.944)" opacity="0.1"/>
<circle id="Ellipse_45" data-name="Ellipse 45" cx="0.477" cy="0.477" r="0.477" transform="translate(53.679 125.172)" opacity="0.1"/>
<circle id="Ellipse_46" data-name="Ellipse 46" cx="0.477" cy="0.477" r="0.477" transform="translate(67.504 123.381)" opacity="0.1"/>
<circle id="Ellipse_47" data-name="Ellipse 47" cx="0.477" cy="0.477" r="0.477" transform="translate(56.38 134.783)" opacity="0.1"/>
<circle id="Ellipse_48" data-name="Ellipse 48" cx="0.477" cy="0.477" r="0.477" transform="translate(66.511 127.078)" opacity="0.1"/>
<circle id="Ellipse_49" data-name="Ellipse 49" cx="0.477" cy="0.477" r="0.477" transform="translate(61.586 132.003)" opacity="0.1"/>
<circle id="Ellipse_50" data-name="Ellipse 50" cx="0.477" cy="0.477" r="0.477" transform="translate(55.347 123.897)" opacity="0.1"/>
<circle id="Ellipse_51" data-name="Ellipse 51" cx="0.477" cy="0.477" r="0.477" transform="translate(66.194 124.814)" opacity="0.1"/>
<circle id="Ellipse_52" data-name="Ellipse 52" cx="0.477" cy="0.477" r="0.477" transform="translate(64.565 128.508)" opacity="0.1"/>
<circle id="Ellipse_53" data-name="Ellipse 53" cx="0.477" cy="0.477" r="0.477" transform="translate(59.557 134.426)" opacity="0.1"/>
<circle id="Ellipse_54" data-name="Ellipse 54" cx="0.477" cy="0.477" r="0.477" transform="translate(58.525 132.083)" opacity="0.1"/>
<circle id="Ellipse_55" data-name="Ellipse 55" cx="0.477" cy="0.477" r="0.477" transform="translate(56.062 126.8)" opacity="0.1"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="14.5" height="1.393" transform="translate(50.7 151.743)" opacity="0.1"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="18.946" height="13.306" transform="translate(48.397 139.351)" fill="#474157"/>
<circle id="Ellipse_56" data-name="Ellipse 56" cx="0.477" cy="0.477" r="0.477" transform="translate(60.193 136.571)" opacity="0.1"/>
<circle id="Ellipse_57" data-name="Ellipse 57" cx="0.477" cy="0.477" r="0.477" transform="translate(57.333 137.167)" opacity="0.1"/>
<path id="Path_129" data-name="Path 129" d="M399.263,626s2.36,3.088-1.089,7.748-6.289,8.606-5.15,11.505c0,0,5.21-8.659,9.45-8.778S403.927,631.21,399.263,626Z" transform="translate(-296.032 -435.8)" fill="#fff"/>
<path id="Path_130" data-name="Path 130" d="M399.525,626a3.8,3.8,0,0,1,.483.967c4.134,4.859,6.338,9.393,2.363,9.509-3.7.116-8.146,6.736-9.211,8.39.036.129.079.258.126.381,0,0,5.21-8.659,9.45-8.778S404.188,631.21,399.525,626Z" transform="translate(-296.294 -435.8)" opacity="0.1"/>
<path id="Path_131" data-name="Path 131" d="M424.553,636.492c0,1.086-.122,1.966-.271,1.966s-.271-.88-.271-1.966.152-.576.3-.576S424.553,635.4,424.553,636.492Z" transform="translate(-316.933 -442.353)" fill="#ffd037"/>
<path id="Path_132" data-name="Path 132" d="M426.437,640.312c-.953.52-1.784.834-1.857.7s.642-.662,1.6-1.182.576-.142.662,0S427.393,639.793,426.437,640.312Z" transform="translate(-317.311 -444.876)" fill="#ffd037"/>
<path id="Path_133" data-name="Path 133" d="M363.985,626s-2.36,3.088,1.089,7.748,6.289,8.606,5.147,11.505c0,0-5.206-8.659-9.446-8.778S359.321,631.21,363.985,626Z" transform="translate(-273.229 -435.8)" fill="#fff"/>
<path id="Path_134" data-name="Path 134" d="M363.985,626a3.8,3.8,0,0,0-.483.967c-4.134,4.859-6.338,9.393-2.363,9.509,3.7.116,8.146,6.736,9.211,8.39a3.672,3.672,0,0,1-.129.381s-5.206-8.655-9.446-8.768S359.321,631.21,363.985,626Z" transform="translate(-273.229 -435.8)" opacity="0.1"/>
<path id="Path_135" data-name="Path 135" d="M361.44,636.492c0,1.086.122,1.966.271,1.966s.271-.88.271-1.966-.152-.576-.3-.576S361.44,635.4,361.44,636.492Z" transform="translate(-275.073 -442.353)" fill="#ffd037"/>
<path id="Path_136" data-name="Path 136" d="M355.691,640.312c.953.52,1.784.834,1.857.7s-.642-.662-1.6-1.182-.576-.142-.662,0S354.734,639.793,355.691,640.312Z" transform="translate(-270.83 -444.876)" fill="#ffd037"/>
<ellipse id="Ellipse_58" data-name="Ellipse 58" cx="24.691" cy="3.79" rx="24.691" ry="3.79" transform="translate(72.3 225.503)" fill="#6c63ff" opacity="0.1"/>
<path id="Path_137" data-name="Path 137" d="M380.556,668.693l-.119.963-.166,1.364-.066.566-.169,1.364-.07.569-.165,1.36-1.873,15.49c-.169,1.383-2.429,2.459-5.153,2.459h-9.837c-2.727,0-4.965-1.076-5.15-2.459l-1.893-15.49-.165-1.36-.069-.569-.169-1.364-.066-.566-.165-1.364-.119-.963c-.1-.781,1.125-1.443,2.671-1.443h20.077C379.427,667.25,380.652,667.912,380.556,668.693Z" transform="translate(-270.854 -463.397)" fill="#65617d"/>
<path id="Path_138" data-name="Path 138" d="M280.188,623.15l-.165,1.36H255.176l-.165-1.36Z" transform="translate(-170.606 -416.891)" fill="#9d9cb5"/>
<path id="Path_139" data-name="Path 139" d="M280.425,628.98l-.165,1.364h-24.38l-.169-1.364Z" transform="translate(-171.074 -420.791)" fill="#9d9cb5"/>
<path id="Path_140" data-name="Path 140" d="M280.668,634.81l-.165,1.364H256.6l-.165-1.364Z" transform="translate(-171.556 -424.691)" fill="#9d9cb5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 33 KiB

9
static/dist/images/logo.svg vendored Normal file
View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="311.983" height="311.929" viewBox="0 0 311.983 311.929">
<g id="Icon_ionic-ios-apps" data-name="Icon ionic-ios-apps" transform="translate(-4.494 -4.496)">
<path id="Path_9" data-name="Path 9" d="M305.678,64.318,184.327,9a65.721,65.721,0,0,0-47.842,0L15.22,64.318c-14.293,6.5-14.293,17.117,0,23.639l120.221,54.826a69.059,69.059,0,0,0,50.033,0L305.687,87.956C319.971,81.46,319.971,70.822,305.678,64.318Z" transform="translate(0.07 0)" fill="#b5c8ff"/>
<g id="Group_1" data-name="Group 1" transform="translate(4.493 135.941)">
<path id="Path_10" data-name="Path 10" d="M135.441,61.195,54.375,24.239a13.18,13.18,0,0,0-10.8,0L15.22,37.154C.927,43.65.927,54.271,15.22,60.792l120.221,54.826a69.058,69.058,0,0,0,50.033,0L305.687,60.792c14.293-6.5,14.293-17.117,0-23.639L277.341,24.239a13.18,13.18,0,0,0-10.8,0L185.474,61.195A69.058,69.058,0,0,1,135.441,61.195Z" transform="translate(-4.423 60.176)" fill="#fff"/>
<path id="Path_11" data-name="Path 11" d="M305.757,28.732,280,17.033a12.992,12.992,0,0,0-10.724,0l-87.724,39.72a71.712,71.712,0,0,1-42.159,0L51.681,17.033a12.992,12.992,0,0,0-10.724,0l-25.744,11.7C.92,35.228.92,45.849,15.213,52.371L135.426,107.2a69.058,69.058,0,0,0,50.033,0L305.671,52.371C320.049,45.866,320.049,35.228,305.757,28.732Z" transform="translate(-4.493 -15.875)" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/dist/images/map-marker-region.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
static/dist/images/map-marker.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-1.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-10.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-11.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-12.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-13.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-14.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-15.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-16.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-17.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-18.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-19.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-2.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-3.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-4.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-5.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-6.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-7.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-8.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/preview-9.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/dist/images/profile-1.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-10.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-11.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-12.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-13.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-14.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-15.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-16.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-17.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-18.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-19.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-2.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-3.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-4.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-5.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/dist/images/profile-6.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Some files were not shown because too many files have changed in this diff Show More