Initial commit

This commit is contained in:
2026-01-14 13:53:06 +02:00
commit 8e8a1aa71f
68 changed files with 2391 additions and 0 deletions

1
.env.production Normal file
View File

@@ -0,0 +1 @@
DISABLE_ESLINT_PLUGIN=true

View File

@@ -0,0 +1,62 @@
name: Build
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to build'
required: true
default: 'main'
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout branch
uses: actions/checkout@v3
with:
ref: ${{ gitea.event.inputs.branch }}
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 24
- name: Install dependencies
run: |
set -euo pipefail
npm install --no-audit --silent 2>&1 | tee install.log
env:
NODE_OPTIONS: '--max-old-space-size=4096'
- name: Build (react-scripts build)
env:
CI: 'false'
NODE_OPTIONS: '--max-old-space-size=4096'
run: |
set -euo pipefail
npm run build 2>&1 | tee build.log
timeout-minutes: 5
- name: Verify build folder exists
run: test -d build || (echo "No build folder. Check build logs above."; exit 1)
- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v3
with:
name: build-logs
path: |
install.log
build.log
npm-debug.log*
if-no-files-found: ignore
- name: Build completed
if: success()
run: echo "Build completed successfully"

41
package.json Normal file
View File

@@ -0,0 +1,41 @@
{
"name": "nestjs-website",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-scripts": "^5.0.1",
"framer-motion": "^11.0.0",
"lucide-react": "^0.400.0"
},
"devDependencies": {
"tailwindcss": "^3.4.0",
"postcss": "^8.4.0",
"autoprefixer": "^10.4.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

6
postcss.config.js Normal file
View File

@@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIuMDAxIDUxMi4wMDEiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAlIiB4Mj0iMTAwJSIgeTE9IjAlIiB5Mj0iMCUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2VhMjg0NSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2VhMjg2OCIvPjwvbGluZWFyR3JhZGllbnQ+PGcgZmlsbD0idXJsKCNhKSI+PGcgc3Ryb2tlLXdpZHRoPSIxLjAzNSI+PHBhdGggZD0iTTI2Ni45NDIgMTEzLjkxVjUyLjY3YzAtNS42NDUtNC42ODktMTAuMjIyLTEwLjQ3LTEwLjIyMlMyNDYgNDcuMDI1IDI0NiA1Mi42N3Y2MS4yNEMyNTUuMTkgMTA5Ljk5IDI1OS4zNTkgMTExLjc1NCAyNjYuOTQxIDExMy45MSIvPjxwYXRoIGQ9Im00MDkuMTczIDQwNS44NzUgNTIuNDE2IDMxLjY2N2M0LjgzMiAyLjkxOSAxMS4xNzQgMS4yNzIgMTQuMTY0LTMuNjc2IDIuOTktNC45NSAxLjQ5Ny0xMS4zMjktMy4zMzUtMTQuMjQ4TDQyMCAzODcuOTUxYy0xLjM5NiA5Ljg5Mi01LjA2MiAxMi41NDgtMTAuODI4IDE3LjkyNCIvPjxwYXRoIGQ9Ik05Ny44NjkgNDA5LjU0MyA0NS40NTIgNDQxLjIxYy00LjgzMiAyLjkyLTExLjE3NCAxLjI3My0xNC4xNjMtMy42NzZzLTEuNDk3LTExLjMyOCAzLjMzNS0xNC4yNDhMODcuMDQgMzkxLjYyYzEuMzk2IDkuODkzIDUuMDYxIDEyLjU0OSAxMC44MjggMTcuOTI0Ii8+PC9nPjxwYXRoIGQ9Ik01MDIuMDAxIDQzOGMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTAiLz48cGF0aCBkPSJNMjU2LjAwMSAwYy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTAtNC40OC0xMC0xMC0xMCIvPjxwYXRoIGQ9Ik0xMC4wMDEgNDM4Yy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTAtNC40OC0xMC0xMC0xMCIvPjwvZz48cGF0aCBkPSJNNDI2LjAwMSAzOTMuOTUxVjE5OC42NWMwLTMuNzQtMi4wODctNy4xNjgtNS40MS04Ljg4NWwtMTU0LjU5LTc5Ljg1NUMyNTguMTg0IDEwNi44NDIgMjU2LjUwMyAxMDMuOTY2IDI0Ni4wMDEgMTA5LjkxTDkxLjQxMiAxODkuNzY1YTEwIDEwIDAgMCAwLTUuNDExIDguODg1djE5NS4zMDFjLjA4NSAxMS4zMy42NSAxMC4zODggMTAuMDM2IDE3LjMwOGwxNTQuNTY1IDk5LjE1OWE5Ljk5IDkuOTkgMCAwIDAgMTAuODE1LS4wMTFsMTU0LjU0Ny05OS4xNDhjOS45NjEtNi4zNDUgOS45NTEtNi4zNjEgMTAuMDM3LTE3LjMwOG0tMTgwIDg5Ljc1My0xMzEuMDQ3LTg0LjA3MiA5NC44MjQtNTguMjgyYzQuNzA0LTIuODkyIDYuMTc1LTkuMDUxIDMuMjgzLTEzLjc1Ni0yLjg5Mi00LjcwNi05LjA1Mi02LjE3NC0xMy43NTYtMy4yODNsLTkzLjMwNCA1Ny4zNDd2LTE2My44NmwxNDAgODMuODY5Wm0xMC0xOTkuMzYxLTE0MC44MDctODQuMzUyIDEzMC44MDctNjcuNTdWMjM2YzAgNS41MjMgNC40NzggMTAgMTAgMTBzMTAtNC40NzcgMTAtMTBWMTMyLjQyMWwxMzAuODA3IDY3LjU3Wm0xNTAgOTcuMzE1LTkzLjMwNC01Ny4zNDhjLTQuNzAzLTIuODkyLTEwLjg2Mi0xLjQyMS0xMy43NTYgMy4yODMtMi44OTIgNC43MDUtMS40MjIgMTAuODY0IDMuMjgzIDEzLjc1Nmw5NC44MjQgNTguMjgyLTEzMS4wNDcgODQuMDcyVjMwMS42NjZsMTQwLTgzLjg2OVoiLz48L3N2Zz4=

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS13ZWJob29rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZCIgeDE9IjAlIiB4Mj0iMTAwJSIgeTE9IjAlIiB5Mj0iMCUiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNlYTI4NDUiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlYTI4NjgiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBkPSJNMTggMTYuOThoLTUuOTljLTEuMSAwLTEuOTUuOTQtMi40OCAxLjlBNCA0IDAgMCAxIDIgMTdjLjAxLS43LjItMS40LjU3LTIiLz48cGF0aCBkPSJtNiAxNyAzLjEzLTUuNzhjLjUzLS45Ny4xLTIuMTgtLjUtMy4xYTQgNCAwIDEgMSA2Ljg5LTQuMDYiLz48cGF0aCBzdHJva2U9InVybCgjZ3JhZCkiIGQ9Im0xMiA2IDMuMTMgNS43M0MxNS42NiAxMi43IDE2LjkgMTMgMTggMTNhNCA0IDAgMCAxIDAgOCIvPjwvc3ZnPg==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDQwIiBoZWlnaHQ9IjQ2MCIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDEwNDAgNDYwIj48cGF0aCBmaWxsPSIjMDAwIiBkPSJNNzMwLjM1NiAyODcuODExYy0yMy43NDEgMC00MC43OS0xNy42ODYtNDAuNzktNDIuMDY0IDAtMjQuMjE5IDE3LjA0OS00MS43NDUgNDAuMTUyLTQxLjc0NXM0MC4zMTIgMTcuNTI2IDQwLjMxMiA0MS43NDVjMCAxLjI3NC0uMTYgMy4xODYtLjMxOSA0Ljc4SDcwNy44OWMxLjc1MiAxMy4wNjUgMTAuOTk0IDIyLjE0NyAyMy4xMDMgMjIuMTQ3IDguNjA0IDAgMTYuNTcxLTQuNjIxIDIwLjU1NC0xMS40NzJsMTQuMzQgOS4yNDFjLTcuMTcgMTAuMzU3LTIxLjAzMiAxNy4zNjgtMzUuNTMxIDE3LjM2OG0tMjEuNjctNTAuODI3aDQyLjIyNGMtMi44NjgtMTAuNjc2LTEwLjk5NC0xNy44NDYtMjEuMTkyLTE3Ljg0Ni0xMC4xOTcgMC0xOC4xNjQgNy4xNy0yMS4wMzIgMTcuODQ2TTY1NC4yOTkgMjg3LjU0MnYtODEuNDUxaDE4LjQ3N3Y4NS44MThjMCAxMS4yNTQtMi4xODMgMTkuNDg1LTYuNzE5IDI0LjM1Ni01LjIwNyA1Ljg3OS0xMi40MyA4LjczNS0yMS42NjggOC43MzVsLTUuMDQtMTYuNjI5cTguMzE2IDAgMTEuNTkxLTQuNTM2YzIuMTgzLTMuMTkxIDMuMzU5LTguNTY2IDMuMzU5LTE2LjI5M002NzUuMTEgMTc1LjY3NWMwIDYuNDExLTUuMTk3IDExLjYwOC0xMS42MDkgMTEuNjA4cy0xMS42MDgtNS4xOTctMTEuNjA4LTExLjYwOCA1LjE5Ny0xMS42MDkgMTEuNjA4LTExLjYwOSAxMS42MDkgNS4xOTcgMTEuNjA5IDExLjYwOU03OTIuMjEyIDE3NS42N2gxOC40ODJ2MzAuNDAzaDE2LjA5M3YxNS4xMzdoLTE2LjA5M3Y2NC41MjloLTE4LjQ4MlYyMjEuMjFoLTEzLjAxM3YtMTUuMTM3aDEzLjAxM1oiLz48cGF0aCBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zOTguMDk2IDI4NS43MzkgMTQuOTQ0LTMwLjI1MWg1Ni44MDhsMTQuNzYxIDMwLjI1MWgxOS4yNzZMNDQxLjQ0MiAxNTggMzc5IDI4NS43MzlabTIyLjY4Ni00Ni4wNzIgMjAuNjYtNDIuMSAyMC42NjEgNDIuMVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiMwMDAiIGQ9Ik02MzYuNTkzIDIzMy4yNzZjLTUuNzgzLTcuMzc0LTEyLjc2Ni0xMy4zNTMtMjUuODA3LTEzLjM1My0xMy41NDQgMC0yMy40MjIgMTAuODQ2LTIzLjQyMiAyNS45ODMgMCAxNC45NzcgOS44NzggMjUuOTcxIDIzLjQyMiAyNS45NzEgMTMuMDQxIDAgMjAuMDI0LTYuMTE3IDI1LjgwNy0xMy40NzV2MjAuOTU5Yy02Ljk0NyA1LjMyMi0xNS43OTUgOC40NS0yNS44MDcgOC40NS0yNC4wNiAwLTQxLjQyNy0xNy42ODYtNDEuNDI3LTQxLjkwNSAwLTI0LjM3OCAxNy4zNjctNDEuOTA0IDQxLjQyNy00MS45MDQgOS45NzggMCAxOC44NzIgMy4wMzQgMjUuODA3IDguMzI0Wk01MzMuMDUxIDI4NS43MzloLTE4LjQzNnYtNzkuNjI3aDE4LjQzNnY3LjYyOWMzLjU1Mi0zLjk3OSA2LjUwOC02LjMwNSA4LjkwOS03LjQzNyAyLjg0My0xLjMzOSA1Ljk4My0yLjIwMyA5LjY3LTIuMjAzczkuOTE0IDEuNTA4IDE1LjExIDQuNjkzbC04LjM4IDE2Ljc2Yy0zLjUyLTIuNTE0LTYuODcyLTMuNjg3LTEwLjIyNC0zLjY4N3EtMTUuMDg1IDAtMTUuMDg1IDIyLjYyNlpNMjg1LjI2NCAyMjkuMDUyYzEyLjYxMyAzLjIyMyAyMy4wMzggNS44MDYgNDQuNzM2IDEwLjYxOC0yMS42OTggNC44MTItMzIuMTIzIDcuMzk1LTQ0LjczNiAxMC42MThhMTEuOTkgMTEuOTkgMCAwIDAtOC42NDYgOC42NDZjLTMuMjIzIDEyLjYwOS01LjgwNyAyMy4wMzktMTAuNjE4IDQ0LjczNi00LjgxMS0yMS42OTctNy4zOTUtMzIuMTI3LTEwLjYxOC00NC43MzZhMTEuOTkgMTEuOTkgMCAwIDAtOC42NDYtOC42NDZjLTEyLjYxMy0zLjIyMy0yMy4wMzgtNS44MDYtNDQuNzM2LTEwLjYxOCAyMS42OTgtNC44MTIgMzIuMTIzLTcuMzk1IDQ0LjczNi0xMC42MThhMTEuOTkgMTEuOTkgMCAwIDAgOC42NDYtOC42NDZjMy4yMjMtMTIuNjA5IDUuODA3LTIzLjAzOSAxMC42MTgtNDQuNzM2IDQuODExIDIxLjY5NyA3LjM5NSAzMi4xMjcgMTAuNjE4IDQ0LjczNmExMS45OSAxMS45OSAwIDAgMCA4LjY0NiA4LjY0NiIvPjxwYXRoIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0ibTE3NC40OTkgMjM2LjE3IDMuNTAxIDMuNTAxLTMuNTAxIDMuNTAxYy0zMi4yMzctMi4zNjgtNjIuNjA4LTIuNzAzLTExMS41NDItMy4yNDItNy4yMjYtLjA4LTE0Ljg1Ni0uMTY0LTIyLjk1Ny0uMjU5IDcuOTc5LS4wOTQgMTUuNTAyLS4xNzcgMjIuNjMtLjI1NiA0OS4xMjYtLjU0MSA3OS41Ni0uODc3IDExMS44NjktMy4yNDVNOTU2IDIzMGMwIDc5LjY0Mi03Mi45OTggMTQ1LjczNS0xNTEuNTEgMTQ1Ljc1aC0uMDU0cS0uNTkzIDAtMS4xODUtLjAwNUM4ODMuMTcgMzc1LjA3MyA5NDcuNzUgMzEwLjA3OCA5NDcuNzUgMjMwUzg4My4xNyA4NC45MjcgODAzLjI1IDg0LjI1NXEuNTg2LS4wMDUgMS4xNzItLjAwNWguMDgyQzg4My4wMTEgODQuMjczIDk1NiAxNTAuMzYzIDk1NiAyMzAiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jcHUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHgyPSIxMDAlIiB5MT0iMCUiIHkyPSIwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2VhMjg0NSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VhMjg2OCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgeD0iNCIgeT0iNCIgcng9IjIiLz48cGF0aCBzdHJva2U9InVybCgjZ3JhZCkiIGQ9Ik05IDloNnY2SDlaIi8+PHBhdGggZD0iTTE1IDJ2Mk0xNSAyMHYyTTIgMTVoMk0yIDloMk0yMCAxNWgyTTIwIDloMk05IDJ2Mk05IDIwdjIiLz48L3N2Zz4=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8xIiBkYXRhLW5hbWU9IkxheWVyIDEiIHZpZXdCb3g9IjAgMCA1NzkuMjIgMTEzLjAyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzFjNGY3Yn0uY2xzLTJ7ZmlsbDojMzJiMGQyfTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJrZjBnT3YudGlmIj48cGF0aCBkPSJtMTEuNDkgMTcuNjEgMzMuMTMgMzYuNDRjNy45OSAxMi44IDIuMjYgMjguMTEtMTEuOTYgMzIuODItNy4yNiAyLjQtMTUuNzYgMy40LTIzLjE5IDUuNUwwIDc1LjQ5YzQuMjktMS41NiAyNy4yMy00Ljg0IDI5LjE0LTcuMDggMS4yMS0xLjQyLjkyLTMuNDEtLjE5LTQuODJMLjg0IDMzLjQ2Wk05Ny43NCA5My41IDc4Ljk4IDcyLjJjLTMuNzgtMi4wNC00Ljc5Ljk1LTUuODkgMy43NC00LjU3IDExLjU0LTcuMjIgMjUuMjYtMTEuNCAzNy4wOGwtMTkuMTQtLjM2IDE0LjQ5LTQ1Ljg3YzIuNi02LjQ2IDguNDQtMTEuNjggMTUuMzItMTMuMDQgMTcuODMtMy41MyAyNC42OCAxMi42NyAzNS41NSAyMi45TDk3Ljc1IDkzLjVaTTY0LjM3IDBjLjg2IDEuMTktOC44NCAyNC40NS04LjM0IDI4LjA2LjMgMS4zOCAyLjA3IDIuNTEgMy40NiAyLjVsNDEuNDYtOS4xNSA4LjI4IDE2Ljg5LTQ4LjExIDEwLjM0Yy03LjE0LjY1LTE0Ljg3LTIuNzQtMTkuMTItOC40Ni05LjY3LTEzLjAxLS4wMi0yNi43MiAzLjE0LTQwLjExbDE5LjIyLS4wOFoiIGNsYXNzPSJjbHMtMiIvPjwvZz48cGF0aCBkPSJNMTQwLjExIDU4LjdjMC0xNS44NiAxMS4zOC0yNi41NiAyNy4zMy0yNi41NiAyLjMzIDAgNS4wNi4xOSA4LjA3LjU4djEzLjkxYy0yLjMzLS4yOS00LjU3LS40OS02LjMyLS40OS04Ljk1IDAtMTMuNzIgNS4yNS0xMy43MiAxMi41NXM0Ljc3IDEyLjQ1IDEzLjcyIDEyLjQ1YzEuNzUgMCAzLjk5LS4xOSA2LjMyLS40OXYxNC4wMWMtMy4wMi4zOS01Ljc0LjU4LTguMDcuNTgtMTUuOTUgMC0yNy4zMy0xMC43LTI3LjMzLTI2LjU2Wk0yMDQuMzcgMzIuODJoNi42MXYxMy44MWgtNS4xNmMtMy4xMSAwLTQuNDcgMS4zNi00LjQ3IDQuNDd2MzMuMjdoLTE1LjM3VjUxLjQ5YzAtMTIuOTQgNi45MS0xOC42OCAxOC4zOC0xOC42OFpNMjE2LjQyIDU4LjZjMC0xNS44NiAxMS43Ny0yNi43NSAyNS42OC0yNi43NSA1Ljc0IDAgMTEuMzggMS45NSAxNC44OCA1LjY0bC4xLTQuNjdoMTMuNjJ2NTEuNTZoLTEzLjYybC0uMS00LjY3Yy0zLjUgMy43LTkuMTQgNS42NC0xNC44OCA1LjY0LTEzLjkxIDAtMjUuNjgtMTAuODktMjUuNjgtMjYuNzVtMjcuNzMgMTIuNzVjNyAwIDEyLjE2LTQuOTYgMTIuMTYtMTIuNzRzLTUuMTYtMTIuNzQtMTIuMTYtMTIuNzQtMTIuMzUgNC45Ni0xMi4zNSAxMi43NCA1LjI1IDEyLjc0IDEyLjM1IDEyLjc0TTI3Ny44OSAzMi44MmgxNi4wNWw4Ljk1IDMxLjAzIDkuNDQtMzEuMDNoMTQuMmw5LjM0IDI5Ljk2IDkuMTQtMjkuOTZoMTUuNjZsLTE3LjMxIDUxLjU2aC0xNC4xbC0xMC4xMi0zMC4yNS0xMC4wMiAzMC4yNWgtMTUuMDhaTTM2Ny42OSA5LjE5aDE1LjM3djc1LjE5aC0xNS4zN1pNMzg3LjU2IDg5LjYzaDIuNDNjMy44OSAwIDUuNTQtMS42NSA1LjU0LTUuNTRWMzIuODNoMTUuMzd2NTEuOTRjMCAxMi4wNi02LjkxIDE5LjA3LTE5LjM2IDE5LjA3aC0zLjk5di0xNC4yWm03Ljk4LTgwLjQ0aDE1LjM3djE1Ljc2aC0xNS4zN1pNNDIwLjY2IDU4LjdjMC0xNS44NiAxMi4yNi0yNy4xNCAyNy41My0yNy4xNHMyNy41MyAxMS4yOCAyNy41MyAyNy4xNC0xMi4yNiAyNy4xNC0yNy41MyAyNy4xNC0yNy41My0xMS4yOC0yNy41My0yNy4xNG0yNy41MyAxMi44NGM2LjkxIDAgMTIuMTYtNS4xNiAxMi4xNi0xMi44NHMtNS4yNS0xMi44NC0xMi4xNi0xMi44NC0xMi4xNiA1LjE2LTEyLjE2IDEyLjg0IDUuMjUgMTIuODQgMTIuMTYgMTIuODRNNDk5LjE1IDc5LjcxbC0uMSA0LjY3aC0xMy42MlY5LjE5aDE1LjM3VjIzYzAgNC4yOC0uMSA4Ljk1LS4yOSAxMy4yMyAzLjUtMi45MiA4LjQ2LTQuMzggMTMuNTItNC4zOCAxMy45MSAwIDI1LjY4IDEwLjg5IDI1LjY4IDI2Ljc1cy0xMS43NyAyNi43NS0yNS42OCAyNi43NWMtNS43NCAwLTExLjM4LTEuOTUtMTQuODgtNS42NG0xMi44NC04LjM2YzcuMSAwIDEyLjM1LTQuOTYgMTIuMzUtMTIuNzRzLTUuMjUtMTIuNzQtMTIuMzUtMTIuNzQtMTIuMTYgNC45Ni0xMi4xNiAxMi43NCA1LjE2IDEyLjc0IDEyLjE2IDEyLjc0TTU0OC4wOSA4NC4zOFY3MS4zNWM0LjI4LjU4IDcuMzkuODggOS42My44OCAzLjk5IDAgNS42NC0uOTcgNS42NC0zLjAyIDAtMS42NS0xLjE3LTMuMTEtNC40Ny01LjU0bC0zLjAyLTIuMjRjLTUuOTMtNC4zOC04LjM3LTguNDYtOC4zNy0xNC4yIDAtOS41MyA2LjkxLTE1LjA4IDE4Ljk3LTE1LjA4IDIuNTMgMCA1LjI1LjE5IDguMjcuNjh2MTEuOTZjLTIuODItLjM5LTUuMDYtLjQ5LTYuMzItLjQ5LTQuMDkgMC02LjAzLjk3LTYuMDMgMi42MyAwIDEuMTcuOTcgMi4yNCA0LjE4IDQuNDdsMi43MiAxLjk1YzcgNC45NiA5LjkyIDkuNjMgOS45MiAxNS43NiAwIDEwLjEyLTcuNTkgMTYuMDUtMjAuNjIgMTYuMDUtMi45MiAwLTYuNzEtLjI5LTEwLjUxLS43OFoiIGNsYXNzPSJjbHMtMSIvPjwvc3ZnPg==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1zZWFyY2gtY29kZSIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQiIHgxPSIwJSIgeDI9IjEwMCUiIHkxPSIwJSIgeTI9IjAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZWEyODQ1Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZWEyODY4Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggc3Ryb2tlPSJ1cmwoI2dyYWQpIiBkPSJtOSA5LTIgMiAyIDIiLz48cGF0aCBkPSJtMTMgMTMgMi0yLTItMiIvPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiLz48cGF0aCBkPSJtMjEgMjEtNC4zLTQuMyIvPjwvc3ZnPg==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jYWtlLXNsaWNlIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZCIgeDE9IjAlIiB4Mj0iMTAwJSIgeTE9IjAlIiB5Mj0iMCUiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNlYTI4NDUiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlYTI4NjgiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSI5IiBjeT0iNyIgcj0iMiIgc3Ryb2tlPSJ1cmwoI2dyYWQpIi8+PHBhdGggZD0iTTcuMiA3LjkgMyAxMXY5YzAgLjYuNCAxIDEgMWgxNmMuNiAwIDEtLjQgMS0xdi05YzAtMi0zLTYtNy04bC0zLjYgMi42TTE2IDEzSDNNMTYgMTdIMyIvPjwvc3ZnPg==

View File

@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5QIECQU6y1Xy3gAAASlQTFRFAAAA4CNO4SNO4CVN4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNOJy2kWgAAAGJ0Uk5TAAAAAAhJKw0BAwaKz5MKGWugrp5xsvVFvv79+l0eBDGJ2NlEtDuU13qlB8fu9OjpNjNfMD6D5PxuQd6LZoIaojUJXt/xVC6WnPLbl63VWKj58IwiUk4dSNOznbaGNCkUOAKbjrXdAAAAyklEQVR42j3P1XrCQBRF4dkU0qFCXTKU1IVKqKfF3d1dzvs/BAwJ7Lv135zvMGuwO5RN2MzYAHfyre2dXRdkAnv7B4dHxyd0eoZlK+cqEQk3iQuPBnZ5dU3Wbm7v7sEeVqk+PnnJ+8yUF/frmypB96mkvzN8fH59//ySOeOPARzAv9+SwPKOXUPQMCEkIRyJxuK+xIJEMiUhrWeyuXxBECWyYQmuIhmlcoWqtbqHS0Cj2Wp3uqLXbwCrZ52OwXA0XrcNk9RUm3EwNgeq2irhwZ7gjgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wMi0wNFQwOTowNTo1OCswMTowMBk+ro4AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDItMDRUMDk6MDU6NTgrMDE6MDBoYxYyAAAAV3pUWHRSYXcgcHJvZmlsZSB0eXBlIGlwdGMAAHic4/IMCHFWKCjKT8vMSeVSAAMjCy5jCxMjE0uTFAMTIESANMNkAyOzVCDL2NTIxMzEHMQHy4BIoEouAOoXEXTyQjWVAAAAAElFTkSuQmCC

View File

@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5QIECQU6y1Xy3gAAAg1QTFRFAAAA4CNO4CdK4CNP4CJO3yRP4CRO4B5P4CJP4SBP4SNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO4CNO5YwiPwAAAK50Uk5TAAAAAAAAAAAAAAACFQcEgZMgQw1e23/rph5uqeSqBSFEYG9fQgpp4/hVATWd4ff+9t6niPGZYeX7sWXunj8bRfOUzh953PW7ES7gjwM+7P29Kbk6/NCCPJpS7dLiJvJigHFGQFB6vJsSNwtLwsEZoNYarCzd1xzED12rTjRrBhOcy7r6VoQz3/S0xyjGjIaXMVpRI/CjkfkITKLvtq3Nv35nr1R12hA4ha5tIiUJXUXpVgAAAfRJREFUeNp1k+lfUkEUhnnbCyFvZGSB5YLaSI1tRmZFKFpJIqFWloWZpantZYtpRWVZWWkLRav7ev5GB8QL9154Ptz74X1mfnPmnNGpgT7NAOhSA+P6dGmDKbUDbMzYZN6cCaQUtmy1EFlNSmEZsrZtz87Jyc3LtOUXEFHhDsUWYEX2nbs4ES/evWfvPhLsX47Ek5ccIBkHJ8FBo55hKc8qPURqypB3GIiWdeSo3anJHbk45iqPCIYKdyVpqTp+4iRVe4Rxqoa0eGt90mkisx8rdP4CTVxX33CmxEWCs2ILdq5Rs95y3uKgCBeaIEpouEi8sNhBSeCXIMowBFzNl1uutF51ao1rTAhoa/dA/K53dHK10GVStOnGTa9KuHVbl8BKtN1RCW5J1eq795TC/QfxTA+Ib0ApdD+UB+3R4ycAVvWYqTLhYuxsSWg301P09uU/y6DnL2Jp0Mmz5Y6/9NIr4+vqfh6kCmtM6K91S7LQU0Nv3g5ErrPz3fuYYP0wCFno/UiL1H8qalycq+DnoWHEh7I0Oolfvvr036L5wPeuvhCLC6vTfgz+LGv1hzAU5kL4lR7uUD2NNWsZA1hL1e8/RN3+v/88ilyeX1/5/3DdyPBowCZyLetgGwuPN0+EJpPnYE1T0zMSA2NI/jA9s3PzyrMtAB0jNGhboExjAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAyLTA0VDA5OjA1OjU4KzAxOjAwGT6ujgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMi0wNFQwOTowNTo1OCswMTowMGhjFjIAAABXelRYdFJhdyBwcm9maWxlIHR5cGUgaXB0YwAAeJzj8gwIcVYoKMpPy8xJ5VIAAyMLLmMLEyMTS5MUAxMgRIA0w2QDI7NUIMvY1MjEzMQcxAfLgEigSi4A6hcRdPJCNZUAAAAASUVORK5CYII=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxODAiIGhlaWdodD0iMTgwIiB2aWV3Qm94PSIwIDAgMTgwIDE4MCI+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iMzIuNjQiIHgyPSI4Mi43NyIgeTE9IjYxLjE2IiB5Mj0iODUuNTQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4yMSIgc3RvcC1jb2xvcj0iI2ZlMjg1NyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzI5Mzg5NiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMTcuMzgiIHgyPSI4Mi45NSIgeTE9IjY5Ljg2IiB5Mj0iMjEuMjMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZTI4NTciLz48c3RvcCBvZmZzZXQ9Ii4wMSIgc3RvcC1jb2xvcj0iI2ZlMjg1NyIvPjxzdG9wIG9mZnNldD0iLjg2IiBzdG9wLWNvbG9yPSIjZmYzMThjIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSI3NC4xNyIgeDI9IjE2MC4yNyIgeTE9IjIxLjU4IiB5Mj0iOTkuNzYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4wMiIgc3RvcC1jb2xvcj0iI2ZmMzE4YyIvPjxzdG9wIG9mZnNldD0iLjIxIiBzdG9wLWNvbG9yPSIjZmUyODU3Ii8+PHN0b3Agb2Zmc2V0PSIuODYiIHN0b3AtY29sb3I9IiNmZGI2MGQiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE1NS40NiIgeDI9IjU1LjA3IiB5MT0iODkuOCIgeTI9IjE1OC45IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMDEiIHN0b3AtY29sb3I9IiNmZGI2MGQiLz48c3RvcCBvZmZzZXQ9Ii44NiIgc3RvcC1jb2xvcj0iI2ZjZjg0YSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZmlsbD0idXJsKCNhKSIgZD0ibTgxLjU2IDgzLjcxLTQxLjM1LTM1YTE1IDE1IDAgMSAwLTE0LjQ3IDI1LjdoLjE1bC4zOS4xMiA1Mi4xNiAxNS44OWEzLjUgMy41IDAgMCAwIDEuMTguMjEgMy43MyAzLjczIDAgMCAwIDEuOTMtNi45MVoiLz48cGF0aCBmaWxsPSJ1cmwoI2IpIiBkPSJNODkuODUgMjUuOTNBMTAuODkgMTAuODkgMCAwIDAgNzMgMTYuNzVMMjIuNSA0Ny40MWExNSAxNSAwIDEgMCAxNy45IDI0bDQ1LjI3LTM2Ljg5LjM2LS4zYTEwLjkzIDEwLjkzIDAgMCAwIDMuODItOC4yOSIvPjxwYXRoIGZpbGw9InVybCgjYykiIGQ9Ik0xNjMuMjkgOTIgODYuNjcgMTguMjFhMTAuOTEgMTAuOTEgMCAxIDAtMTQuODEgMTZsLjE0LjEyIDgxLjQgNjguNThhNy4zNiA3LjM2IDAgMCAwIDEyLjA5LTUuNjUgNy40IDcuNCAwIDAgMC0yLjItNS4yNiIvPjxwYXRoIGZpbGw9InVybCgjZCkiIGQ9Ik0xNjUuNSA5Ny4yOWE3LjM1IDcuMzUgMCAwIDAtMTEuNjctNmwtOTIuNzEgNDUuM2ExNSAxNSAwIDEgMCAxNS40OCAyNS41OWw4NS43My01OC44NGE3LjM1IDcuMzUgMCAwIDAgMy4xNy02LjA1Ii8+PHBhdGggZD0iTTYwIDYwaDYwdjYwSDYwWiIvPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Ik02Ni41MyAxMDguNzVoMjIuNXYzLjc1aC0yMi41Wk02NS41OSA3NS40N2wxLjY3LTEuNThhMS44OCAxLjg4IDAgMCAwIDEuNDcuODdjLjY0IDAgMS4wNi0uNDUgMS4wNi0xLjMydi01LjkyaDIuNTh2NS45NGEzLjQ0IDMuNDQgMCAwIDEtLjkyIDIuNjMgMy41MiAzLjUyIDAgMCAxLTIuNTcgMSAzLjg0IDMuODQgMCAwIDEtMy4yOS0xLjYyIi8+PHBhdGggZD0iTTczLjUzIDY3LjUyaDcuNTN2Mi4xOWgtNXYxLjQzaDQuNDl2Mkg3Ni4xdjEuNDloNXYyLjJoLTcuNlpNODQuNzMgNjkuNzloLTIuOHYtMi4yN2g4LjIxdjIuMjdoLTIuODF2Ny4wOWgtMi42Wk02Ni42MyA4MC41OGg0LjQyYTMuNDcgMy40NyAwIDAgMSAyLjU1LjgzIDIuMSAyLjEgMCAwIDEgLjYxIDEuNTIgMi4xOCAyLjE4IDAgMCAxLTEuNDUgMi4wOSAyLjI3IDIuMjcgMCAwIDEgMS44NiAyLjI5YzAgMS42OS0xLjMxIDIuNjktMy41NSAyLjY5aC00LjQ0Wm01IDIuODljMC0uNTItLjQyLS44LTEuMTgtLjhoLTEuMjl2MS42NGgxLjI1Yy43OCAwIDEuMjQtLjI3IDEuMjQtLjgxWm0tLjkgMi42NmgtMS41N3YxLjczaDEuNjJjLjggMCAxLjI0LS4zMSAxLjI0LS44Ni0uMDItLjUzLS40LS44Ny0xLjI3LS44N1oiLz48cGF0aCBkPSJNNzUuNDUgODAuNThoNC4xNWE0LjE0IDQuMTQgMCAwIDEgMy4wNSAxIDIuOTIgMi45MiAwIDAgMSAuODMgMi4xOCAzIDMgMCAwIDEtMS45MyAyLjg5TDgzLjc5IDkwaC0zbC0xLjg5LTIuODRoLS44N1Y5MGgtMi42Wm00IDQuNWMuODcgMCAxLjQtLjQzIDEuNC0xLjEyIDAtLjc1LS41NS0xLjEzLTEuNDEtMS4xM2gtMS4zOXYyLjI3WiIvPjxwYXRoIGQ9Ik04Ny4wOSA4MC41MWgyLjVsNCA5LjQ0SDkwLjhsLS42Ny0xLjY5SDg2LjVMODUuODMgOTBoLTIuNzFabTIuMjggNS43My0xLjA1LTIuNjUtMS4wNiAyLjY1Wk05NCA4MC41NWgyLjZ2OS4zN0g5NFpNOTcuNTYgODAuNTVIMTAwbDMuMzcgNXYtNWgyLjU3djkuMzdoLTIuMjdsLTMuNTMtNS4xNHY1LjE0aC0yLjU4WiIvPjxwYXRoIGQ9Im0xMDYuMzcgODguNTMgMS40NC0xLjczYTQuODYgNC44NiAwIDAgMCAzIDEuMTNjLjcxIDAgMS4wOC0uMjUgMS4wOC0uNjUgMC0uNDEtLjMtLjYxLTEuNTktLjkxLTItLjQ2LTMuNTMtMS0zLjUzLTIuOTMgMC0xLjc0IDEuMzgtMyAzLjYzLTNhNS44OCA1Ljg4IDAgMCAxIDMuODUgMS4yNUwxMTMgODMuNDdhNC41NiA0LjU2IDAgMCAwLTIuNjItLjkyYy0uNjMgMC0uOTQuMjUtLjk0LjYgMCAuNDMuMzIuNjIgMS42My45MSAyLjE1LjQ3IDMuNDggMS4xNyAzLjQ4IDIuOTIgMCAxLjkxLTEuNTEgMy0zLjc4IDNhNi41NiA2LjU2IDAgMCAxLTQuNC0xLjQ1Ii8+PC9nPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMTgwdjE4MEgwWiIvPjwvc3ZnPg==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTEuOTk4IDUxMS45OTgiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAlIiB4Mj0iMTAwJSIgeTE9IjAlIiB5Mj0iMCUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2VhMjg0NSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2VhMjg2OCIvPjwvbGluZWFyR3JhZGllbnQ+PGcgZmlsbD0idXJsKCNhKSI+PHBhdGggZD0iTTUwMS45OTggMTcwYy01LjUyIDAtMTAgNC40OC0xMCAxMHM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTAtNC40OC0xMC0xMC0xMCIvPjxwYXRoIGQ9Ik00NTkuMjc4IDUyLjcyYy0zLjkxLTMuOS0xMC4yNC0zLjktMTQuMTQgMC0zLjkxIDMuOTEtMy45MSAxMC4yNCAwIDE0LjE0IDMuOSAzLjkxIDEwLjIzIDMuOTEgMTQuMTQgMCAzLjktMy45IDMuOS0xMC4yMyAwLTE0LjE0Ii8+PHBhdGggZD0iTTQ1OS4yNzggMjkzLjE0Yy0zLjkxLTMuOTEtMTAuMjQtMy45MS0xNC4xNCAwLTMuOTEgMy45LTMuOTEgMTAuMjMgMCAxNC4xNCAzLjkgMy45IDEwLjIzIDMuOSAxNC4xNCAwIDMuOS0zLjkxIDMuOS0xMC4yNCAwLTE0LjE0Ii8+PHBhdGggZD0iTTMzMS45OTggMGMtNS41MiAwLTEwIDQuNDgtMTAgMTBzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwLTQuNDgtMTAtMTAtMTAiLz48cGF0aCBkPSJNMzMxLjk5OCAzNDBjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwIi8+PHBhdGggZD0iTTIxOC44NTggNTIuNzJjLTMuOS0zLjktMTAuMjMtMy45LTE0LjE0IDAtMy45IDMuOTEtMy45IDEwLjI0IDAgMTQuMTQgMy45MSAzLjkxIDEwLjI0IDMuOTEgMTQuMTQgMCAzLjkxLTMuOSAzLjkxLTEwLjIzIDAtMTQuMTQiLz48cGF0aCBkPSJNMTYxLjk5OCAxNzBjLTUuNTIgMC0xMCA0LjQ4LTEwIDEwczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMC00LjQ4LTEwLTEwLTEwIi8+PC9nPjxwYXRoIGQ9Im0zNzYuOTU5IDE0Ny45NjktMTQuMTQtMTQuMTRjLTUuNjY2LTUuNjY2LTEzLjItOC43ODctMjEuMjE2LTguNzg3cy0xNS41NTEgMy4xMjEtMjEuMjMgOC44bC05NC43ODMgOTUuMTU1YTEwIDEwIDAgMCAwLTEuNzgyIDEuNDExIDEwIDEwIDAgMCAwLTEuNDEzIDEuNzk3TDguNzg4IDQ0Ni42NDlDMy4xMjEgNDUyLjMxNCAwIDQ1OS44NDggMCA0NjcuODZzMy4xMjEgMTUuNTQ1IDguNzg3IDIxLjIxMWwxNC4xNCAxNC4xMzljNS42NjYgNS42NjcgMTMuMTk4IDguNzg4IDIxLjIxMSA4Ljc4OHMxNS41NDYtMy4xMjEgMjEuMjI2LTguODAxbDIxNS4yMjktMjE2LjA1IDk2LjM2Ni05Ni43NDZjNS42NjYtNS42NjYgOC43ODctMTMuMjAxIDguNzg3LTIxLjIxNnMtMy4xMjEtMTUuNTUtOC43ODctMjEuMjE2TTUxLjIwNyA0ODkuMDY4Yy0xLjg4OSAxLjg4OS00LjM5OSAyLjkzLTcuMDY5IDIuOTNzLTUuMTgtMS4wNDEtNy4wNjgtMi45M2wtMTQuMTQtMTQuMTRDMjEuMDQxIDQ3My4wNCAyMCA0NzAuNTMgMjAgNDY3Ljg2czEuMDQxLTUuMTggMi45NDMtNy4wODNMMjMxLjA5IDI1MS44MTRsMjguMjg4IDI4LjI4OFptMzExLjU5Ni0zMTIuNzk1LTg5LjMwOCA4OS42NjEtMjguMjg5LTI4LjI4OCA4OS4zMjQtODkuNjc0YTkuOTQgOS45NCAwIDAgMSA3LjA3NC0yLjkyOCA5Ljk0IDkuOTQgMCAwIDEgNy4wNzMgMi45MjhsMTQuMTQgMTQuMTQxYzEuODg5IDEuODg5IDIuOTMgNC40MDEgMi45MyA3LjA3NHMtMS4wNDIgNS4xODMtMi45NDQgNy4wODYiLz48ZyBmaWxsPSIjZWEyODQ1Ij48cGF0aCBkPSJNMzMxLjk5OCA0MGMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHY0MGMwIDUuNTIzIDQuNDc4IDEwIDEwIDEwczEwLTQuNDc3IDEwLTEwVjUwYzAtNS41MjMtNC40NzgtMTAtMTAtMTBNMzMxLjk5OCAyNjBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTB2NDBjMCA1LjUyMyA0LjQ3OCAxMCAxMCAxMHMxMC00LjQ3NyAxMC0xMHYtNDBjMC01LjUyMy00LjQ3Ny0xMC0xMC0xME0yNzUuNDI5IDEwOS4yODlsLTI4LjI4LTI4LjI4Yy0zLjkwNi0zLjkwNS0xMC4yMzYtMy45MDUtMTQuMTQzIDAtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQybDI4LjI4MSAyOC4yOGMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOC0uOTc3IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0Mk00MzAuOTg4IDI2NC44NDlsLTI4LjI3OS0yOC4yOGMtMy45MDYtMy45MDUtMTAuMjM2LTMuOTA1LTE0LjE0MyAwLTMuOTA1IDMuOTA1LTMuOTA1IDEwLjIzNyAwIDE0LjE0MmwyOC4yOCAyOC4yOGMxLjk1MyAxLjk1MyA0LjUxMiAyLjkyOSA3LjA3MSAyLjkyOXM1LjExOC0uOTc3IDcuMDcxLTIuOTI5YzMuOTA1LTMuOTA1IDMuOTA1LTEwLjIzNyAwLTE0LjE0Mk00MzAuOTg5IDgxLjAwOWMtMy45MDUtMy45MDUtMTAuMjM1LTMuOTA1LTE0LjE0MyAwbC0yOC4yOCAyOC4yOGMtMy45MDUgMy45MDUtMy45MDUgMTAuMjM3IDAgMTQuMTQyYTkuOTcgOS45NyAwIDAgMCA3LjA3MiAyLjkyOSA5Ljk3IDkuOTcgMCAwIDAgNy4wNzEtMi45MjlsMjguMjgtMjguMjhjMy45MDUtMy45MDUgMy45MDUtMTAuMjM3IDAtMTQuMTQyTTI0MS45OTggMTcwaC00MGMtNS41MjIgMC0xMCA0LjQ3Ny0xMCAxMHM0LjQ3OCAxMCAxMCAxMGg0MGM1LjUyMiAwIDEwLTQuNDc3IDEwLTEwcy00LjQ3OC0xMC0xMC0xME00NjEuOTk4IDE3MGgtNDBjLTUuNTIyIDAtMTAgNC40NzctMTAgMTBzNC40NzggMTAgMTAgMTBoNDBjNS41MjIgMCAxMC00LjQ3NyAxMC0xMHMtNC40NzctMTAtMTAtMTAiLz48L2c+PC9zdmc+

View File

@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAAMAAAABOCAMAAABBuOmdAAAAUVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcqRVCAAAAG3RSTlMAExoZBgEWCg4JBxENFwUYFAgEAhUDCxIPEAyRMnWOAAADbklEQVR4AdXZiZaDLAwF4GsQVBBcALf3f89/X9syQ+zgsd8LzD0xhDAFU0VXEDX+JRWlNeBp6RId/kNTmgFPQ5foc4umJFg0lZQoq7SUpMHiBrrCKPFfEyX1YJmvya88/sdQSgUWGegKwuF//EAJQwSHvGiAavzfQikTWFa6RJd98fRgMXSJBQ+coNdWcEhG/ZUitnRVe3rN+kL9M2o90FktHkmbOupF+sca/c62tOFJ9xMrkM+MNC4RwE5nmfzdcQNDHCmD3WqZmnrn8zvx/gGeQ0b6dZJPf5FplXi20SvBI19t6TvrEvEXr97Mn3ML24h8naAviXFxiZZlMRIvLOnHTqaDvjJUx8x97jDqD6neHEDSUJrdl5n/3OHUH9ObG4QLlCDUpiMe1eL8/H9pfG+ATgO9pNbDSTyLls5pGe8/g2w9vTCsvZZ4yQc6p2fsL5VEprl6cWR7Pf/8ur0gwSUfmxm64aHn1157fGWjczqk7PRIReTx+/9avm0cY96yDBops6AHdkYW+Xf5RTDH5DwydHSKckjaGfmfwqhxbZvaS2Sa6JQxIv8DDA6ZYuc8WGpx9vrK/wDWoRgnzo7/tFlclz8qOkE0nKE23C6/rTkfVc0oJgY6oYqcfyKEiGL8eL790+rr8gfiEx3rZ6DR36z+o2NdK0aiGFkR3y7xnXBq/+eLI7ENDb618N9fp8yK2KoZ34pDYte+wfxskWGjvw0dynGKuNTEW0yUQzl6IK7d835JrzzKmdj5bQewXhabRDkNcRmPLN5ecHxxEJPqkJA4wVajoI2YNo9Mjv4wzijHV8QzamQby7f/HIhFHJLZm0ODgrQlFjMjIfWODA4FNYI4xgkcFat9yh9fu0hwLETDhILiSgxii2CJgqoZBdWWGFYHJkUHSjoE5atqMMnW1ijI77yzy+Z6j4JqxYjf4QR/l/YJncTdRMOovsTtTJYyrR3ux2+UR5gaN6QDZbG7ww3JlrKEI+KOJkUZRDV54GO7X20z8LnlN43EPc0mp/Mdbkouw7fp91rirqZAX7PbhJthdI9qdcR9xV5Qmhg3LXFnjaUkaxaHW2E0/1AddcTN6TXR9FU7edxebeiZCPuhPT6AM+IxuzKHniU+Qr2L/yS3YW2X2kt8im79O/lo2qOrIz6K20L4Pbd2c5T4PL8CZ4RJFXACysgAAAAASUVORK5CYII=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1uZXR3b3JrIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHg9IjE2IiB5PSIxNiIgcng9IjEiLz48cmVjdCB3aWR0aD0iNiIgaGVpZ2h0PSI2IiB4PSIyIiB5PSIxNiIgcng9IjEiLz48cmVjdCB3aWR0aD0iNiIgaGVpZ2h0PSI2IiB4PSI5IiB5PSIyIiByeD0iMSIvPjxwYXRoIGQ9Ik01IDE2di0zYTEgMSAwIDAgMSAxLTFoMTJhMSAxIDAgMCAxIDEgMXYzTTEyIDEyVjgiLz48L3N2Zz4=

View File

@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAANgAAAAuCAYAAABK69fpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTAwQkM2Mzk4NDBBMTFFNjhDQkVCOTdDMjE1NkM3RkQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTAwQkM2Mzg4NDBBMTFFNjhDQkVCOTdDMjE1NkM3RkQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBMkM5MzFBNDcwQTExMUU2QUVERkExNDU3ODU1M0I3QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBMkM5MzFBNTcwQTExMUU2QUVERkExNDU3ODU1M0I3QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgQJy/MAAAn4SURBVHja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

View File

@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEABAMAAACuXLVVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAALVBMVEVT8M5O4cFJ0rRI0rRDw6gqeGcfWk0aS0AVPDMUPDMQLSYKHhoKHhkFDw0AAACJsYIBAAACEElEQVR42u3QsandQBCF4ZHBim/kQCUYB9uIQRUIVyBwI+7hNqBk+3glOLPh3YWp4aVPO4jVgmaU/H8D5+MIERERERERERERERERERERERER0clm6eyrXNs/6WyRa9O58wC9GtB5wXI5QOe+Ay4H9F2wOAB07jnAAdBzweIC0LnjAAdAxwWLB6DjglE9AB0XrG4A/XXuAD/A/1MH+ABOXzCqD+D0BasroH3BqK6A9gWrK6B9waiugPYFqyugfcGoroD2BasroH3BN/UEtC8YthCA/paDJo0BvB6NA7wB+mwc4AJoXzBsroD2BZO6ApoXDJsvoHnBpJEAe8GwhQLsBZNGAuwFwxYKsBdMGgmwF3zZQgH2gh8aDyjp0wFvNwA0mwOCASWZA2IBms0BwYCSzAH+gPJ3d4E5oLw5A95/7i4wB+Q/3oD9nDkguQOqvfoAcQfUgxXIH1AvVp4IwH5yz4kAVBdUBwQAqguqAwIA1QXVAQGAwwtKigEcXpAlBnB0QUlBgKMLskQC7AUlhQLsBVkiAfaCkkIB9oIskQB7QUmhAHtBlkiAvaCkUIC9IEskwF5QUijAXpAlEmAvKCkUYC/IEgowF5R0G0C+mwOCAcOm+nrcCJBJ9Sl3Aobt9bgVINNT7gUMj3BAHQAAAAAAAAAAAAAAAAAAAHAIICIiIiIiIiIiIiIiIiIiIiIiIjrXBy4S/Wh2vQfjAAAAAElFTkSuQmCC

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJ2LWxvZ28gbWFpbi1sb2dvIiB2aWV3Qm94PSIwIDAgOTUgMjIiPjxwYXRoIGQ9Ik0zOC43NjEgNC45MmE0LjA4IDQuMDggMCAwIDEgMi40MiAyLjM4NWMuMjQuNjA4LjM1MyAxLjI3NC4zNDIgMS45Mjl2Ni40OThoLTIuNzk2VjkuNzQ4YzAtLjgwNi0uMTkzLTEuNDI2LS41NjgtMS44NThzLS45NTQtLjY1NS0xLjczOS0uNjU1YTIuMjMgMi4yMyAwIDAgMC0xLjc3Mi44MThjLS40NzguNTUtLjcwNSAxLjI3NC0uNzA1IDIuMTg2djUuNDgyaC0yLjgwN1Y5Ljc0OGMwLS44MDYtLjE5My0xLjQyNi0uNTY4LTEuODU4cy0uOTU0LS42NTUtMS43MzgtLjY1NWEyLjIzIDIuMjMgMCAwIDAtMS43NzMuODE4Yy0uNDc3LjU1LS43MDUgMS4yNzQtLjcwNSAyLjE4NnY1LjQ4MmgtMi43OTVWNC44OTdoMi43OTV2LjgxOWEzLjcgMy43IDAgMCAxIDEuMjM5LS43ODQgNC42IDQuNiAwIDAgMSAxLjc3My0uMzI3IDYgNiAwIDAgMSAyLjIxNi4zODZjLjYyNS4yNTcgMS4xNy42OSAxLjU1NiAxLjI1LjQxLS41MDIuOTEtLjkgMS40ODktMS4xNjguNjM2LS4zMTYgMS4zOTgtLjQ4IDIuMjg0LS40OC42MjUgMCAxLjI2MS4xMTcgMS44NTIuMzI4Wm0xMi4wOTEuMTE4QTUuNCA1LjQgMCAwIDEgNTIuNjcgNi4yM2MuNTEyLjUxNC45MiAxLjEzNCAxLjE5NCAxLjgxMi4yOTUuNzI0LjQ0MyAxLjQ5Ni40MzEgMi4yNzlhNS43IDUuNyAwIDAgMS0uNDMxIDIuMjY3IDUuNiA1LjYgMCAwIDEtMS4xOTQgMS44IDUuNCA1LjQgMCAwIDEtMS44MTggMS4xOTMgNi4yMyA2LjIzIDAgMCAxLTQuNTQ1IDAgNS40IDUuNCAwIDAgMS0xLjgxOC0xLjE5MyA1LjQgNS40IDAgMCAxLTEuMTk0LTEuOCA1Ljc1IDUuNzUgMCAwIDEtLjQzMS0yLjI2NyA1LjggNS44IDAgMCAxIC40MzEtMi4yOEE1LjUgNS41IDAgMCAxIDQ0LjQ5IDYuMjNhNS40IDUuNCAwIDAgMSAxLjgxOC0xLjE5MiA2LjIzIDYuMjMgMCAwIDEgNC41NDUgMFpNNDcuNDIgNy40OGMtLjM0LjE1MS0uNjU5LjM2Mi0uOTMxLjYzYTMgMyAwIDAgMC0uNjI1Ljk3IDMuNiAzLjYgMCAwIDAtLjIyOCAxLjI1MWMwIC40MjEuMDY5Ljg0Mi4yMjggMS4yNC4xMzYuMzYyLjM1Mi42ODkuNjI1Ljk1OGEyLjk0IDIuOTQgMCAwIDAgNC4xNyAwIDIuOCAyLjggMCAwIDAgLjYyNS0uOTU5Yy4xNDgtLjM5Ny4yMjctLjgxOC4yMjctMS4yMzkgMC0uNDMyLS4wNjgtLjg1My0uMjI3LTEuMjVhMi44IDIuOCAwIDAgMC0uNjI1LS45NyAyLjk4IDIuOTggMCAwIDAtMy4yMzktLjYzMW0xMS41IDguMjY0TDU0LjA1NyA0LjkxaDMuMDhsMy4xNDcgNi45NzggMy4xNDgtNi45OWgyLjk3N2wtNC44NjQgMTAuODM1Wm03LjcyOC03LjU1YTUuNyA1LjcgMCAwIDEgMS4wNTctMS44MjQgNS4yIDUuMiAwIDAgMSAxLjY5My0xLjI3NCA1LjMgNS4zIDAgMCAxIDIuMjcyLS40OGMuNTggMCAxLjE3LjA5NCAxLjcxNi4yOTMuNTEyLjE3NS45NzguNDU2IDEuMzY0Ljg0MnYtLjg0MmgyLjc5NXYxMC44MzVINzQuNzV2LS44MThhMy40IDMuNCAwIDAgMS0xLjM2NC44MyA1LjQxIDUuNDEgMCAwIDEtMy45ODgtLjE5OSA1LjEgNS4xIDAgMCAxLTEuNjkzLTEuMjYyIDUuNSA1LjUgMCAwIDEtMS4wNTctMS44MTIgNi40NiA2LjQ2IDAgMCAxIDAtNC4yOVptMi42MzYgMy4zMDdxLjIwNC41NDQuNTguOTgyYy4yNS4yOC41NDUuNTE0Ljg4Ni42NjYuMzY0LjE2NC43NS4yNDYgMS4xMzYuMjQ2LjM3NSAwIC43MzktLjA3IDEuMDkxLS4xOTlhMi45IDIuOSAwIDAgMCAuOTU1LS41NzNjLjI5NS0uMjU3LjUyMy0uNTg0LjY4Mi0uOTQ2YTMuMiAzLjIgMCAwIDAgLjI1LTEuMzQ1IDMuNCAzLjQgMCAwIDAtLjI1LTEuMzQ0IDMgMyAwIDAgMC0uNjgyLS45NTggMi44IDIuOCAwIDAgMC0uOTU1LS41ODUgMy4yIDMuMiAwIDAgMC0xLjA4LS4xOTggMi41NCAyLjU0IDAgMCAwLTEuMTM2LjI1N2MtLjM0LjE2NC0uNjQ3LjM5Ny0uODk3LjY3OC0uNzczLjkxMi0xIDIuMTk3LS41OCAzLjMyWm0xNC4xMzYgNC4yNDNMNzguNTU3IDQuOTFoMy4wOGwzLjE0NyA2Ljk3OCAzLjE0OC02Ljk5aDIuOTc3bC00Ljg2NCAxMC44MzVaTTk0Ljk0My4wMTJ2My4xMzJoLTMuMDU3Vi4wMTJabS0uMTM2IDE1LjczMkg5Mi4wMVY0Ljg5N2gyLjc5NloiLz48ZWxsaXBzZSBjeD0iOS4xMTQiIGN5PSI0LjY1MiIgcng9IjMuMzE4IiByeT0iMy40MTMiLz48ZWxsaXBzZSBjeD0iOS4xMTQiIGN5PSIxNi40MzQiIHJ4PSIzLjMxOCIgcnk9IjMuNDEzIi8+PGVsbGlwc2UgY3g9IjE0Ljg0MSIgY3k9IjEwLjU0MyIgcng9IjMuMzE4IiByeT0iMy40MTMiLz48ZWxsaXBzZSBjeD0iMy4zODYiIGN5PSIxMC41NDMiIHJ4PSIzLjMxOCIgcnk9IjMuNDEzIi8+PC9zdmc+

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
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

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
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

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1wdXp6bGUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5LjQzOSA3Ljg1Yy0uMDQ5LjMyMi4wNTkuNjQ4LjI4OS44NzhsMS41NjggMS41NjhjLjQ3LjQ3LjcwNiAxLjA4Ny43MDYgMS43MDRzLS4yMzUgMS4yMzMtLjcwNiAxLjcwNGwtMS42MTEgMS42MTFhLjk4Ljk4IDAgMCAxLS44MzcuMjc2Yy0uNDctLjA3LS44MDItLjQ4LS45NjgtLjkyNWEyLjUwMSAyLjUwMSAwIDEgMC0zLjIxNCAzLjIxNGMuNDQ2LjE2Ni44NTUuNDk3LjkyNS45NjhhLjk4Ljk4IDAgMCAxLS4yNzYuODM3bC0xLjYxIDEuNjFhMi40IDIuNCAwIDAgMS0xLjcwNS43MDcgMi40IDIuNCAwIDAgMS0xLjcwNC0uNzA2bC0xLjU2OC0xLjU2OGExLjAzIDEuMDMgMCAwIDAtLjg3Ny0uMjljLS40OTMuMDc0LS44NC41MDQtMS4wMi45NjhhMi41IDIuNSAwIDEgMS0zLjIzNy0zLjIzN2MuNDY0LS4xOC44OTQtLjUyNy45NjctMS4wMmExLjAzIDEuMDMgMCAwIDAtLjI4OS0uODc3bC0xLjU2OC0xLjU2OEEyLjQgMi40IDAgMCAxIDEuOTk4IDEyYzAtLjYxNy4yMzYtMS4yMzQuNzA2LTEuNzA0TDQuMjMgOC43N2MuMjQtLjI0LjU4MS0uMzUzLjkxNy0uMzAzLjUxNS4wNzcuODc3LjUyOCAxLjA3MyAxLjAxYTIuNSAyLjUgMCAxIDAgMy4yNTktMy4yNTljLS40ODItLjE5Ni0uOTMzLS41NTgtMS4wMS0xLjA3My0uMDUtLjMzNi4wNjItLjY3Ni4zMDMtLjkxN2wxLjUyNS0xLjUyNUEyLjQgMi40IDAgMCAxIDEyIDEuOTk4Yy42MTcgMCAxLjIzNC4yMzYgMS43MDQuNzA2bDEuNTY4IDEuNTY4Yy4yMy4yMy41NTYuMzM4Ljg3Ny4yOS40OTMtLjA3NC44NC0uNTA0IDEuMDItLjk2OGEyLjUgMi41IDAgMSAxIDMuMjM3IDMuMjM3Yy0uNDY0LjE4LS44OTQuNTI3LS45NjcgMS4wMloiLz48L3N2Zz4=

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJiNmJkZDJiNC01MmFiLTQ4OGEtOWEzMC0xZTZkMWQ3ZGQyZDQiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDYxMS44IDE0NCI+PHBhdGggZD0iTTU3OS4yIDkyLjNjMCAxMS45IDcuMiAxNy43IDIwLjIgMTcuN2E1My40IDUzLjQgMCAwIDAgMTEuOS0xLjdWOTQuNWEyNS4zIDI1LjMgMCAwIDEtNy43IDEuMmMtNS40IDAtNy40LTEuNy03LjQtNi43VjY3LjhoMTUuNlY1My42aC0xNS42di0xOGwtMTcgMy43djE0LjNoLTExLjN2MTQuMmgxMS4yWm0tNTMgLjNjMC0zLjcgMy43LTUuNSA5LjMtNS41YTM4LjQgMzguNCAwIDAgMSAxMC4xIDEuM3Y3LjJhMjAuOCAyMC44IDAgMCAxLTEwLjYgMi42Yy01LjUgMC04LjgtMi4xLTguOC01LjZtNS4yIDE3LjZhMjYuNyAyNi43IDAgMCAwIDE1LjQtNC4zdjMuNGgxNi44VjczLjZjMC0xMy42LTkuMS0yMS0yNC40LTIxLTguNSAwLTE2LjkgMi0yNiA2LjFsNi4xIDEyLjVjNi41LTIuNyAxMi00LjQgMTYuOC00LjQgNyAwIDEwLjYgMi43IDEwLjYgOC4zdjIuN2E0OSA0OSAwIDAgMC0xMi42LTEuNmMtMTQuMyAwLTIyLjkgNi0yMi45IDE2LjcgMCA5LjggNy44IDE3LjMgMjAuMiAxNy4zbS05Mi40LS45aDE4LjFWODAuNGgzMC4zdjI4LjhoMTguMVYzNS42aC0xOC4xdjI4LjNoLTMwLjNWMzUuNkg0MzlabS02OC45LTI3LjljMC04IDYuMy0xNC4xIDE0LjYtMTQuMWExNy43MiAxNy43MiAwIDAgMSAxMS44IDQuM3YxOS41YTE2LjYyIDE2LjYyIDAgMCAxLTExLjggNC41Yy04LjItLjEtMTQuNi02LjItMTQuNi0xNC4ybTI2LjYgMjcuOWgxNi44VjMxLjlsLTE3IDMuN3YyMC45YTI4LjE0IDI4LjE0IDAgMCAwLTE0LjItMy43Yy0xNi4yIDAtMjguOSAxMi41LTI4LjkgMjguNWEyOC4yNSAyOC4yNSAwIDAgMCAyNy45IDI4LjZoLjVhMjUuNDYgMjUuNDYgMCAwIDAgMTQuOS00LjhabS03Ny4yLTQyLjhjNS40IDAgOS45IDMuNSAxMS43IDguOEgzMDhhMTEuNTYgMTEuNTYgMCAwIDEgMTEuNS04LjhtLTI4LjcgMTVjMCAxNi4yIDEzLjIgMjguOCAzMC4zIDI4LjggOS40IDAgMTYuMi0yLjUgMjMuMi04LjRsLTExLjMtMTBjLTIuNiAyLjctNi41IDQuMi0xMS4xIDQuMmExNC4zNyAxNC4zNyAwIDAgMS0xMy43LTguOGgzOS42di00LjJjMC0xNy43LTExLjktMzAuNC0yOC4xLTMwLjRhMjguNTggMjguNTggMCAwIDAtMjkgMjguMSAxLjUgMS41IDAgMCAxIC4xLjdtLTI5LjMtMzAuNGM2IDAgOS40IDMuOCA5LjQgOC4zcy0zLjQgOC4zLTkuNCA4LjNoLTE3LjlWNTEuMVptLTM2IDU4LjFoMTguMVY4Mi40aDEzLjhsMTMuOSAyNi44aDIwLjJsLTE2LjItMjkuNUEyMi4zMiAyMi4zMiAwIDAgMCAyODkuMiA1OWMwLTEzLjItMTAuNC0yMy41LTI2LTIzLjVoLTM3LjdaIi8+PHBhdGggZD0iTTEyNy4xIDgzYzEyLjUgMCAzMC42LTIuNiAzMC42LTE3LjVhMTkuNSAxOS41IDAgMCAwLS4zLTMuNEwxNTAgMjkuN2MtMS43LTcuMS0zLjItMTAuNC0xNS43LTE2LjZDMTI0LjYgOC4xIDEwMy41IDAgOTcuMiAwYy01LjkgMC03LjYgNy41LTE0LjUgNy41LTYuNyAwLTExLjYtNS42LTE3LjktNS42LTYgMC05LjkgNC4xLTEyLjkgMTIuNSAwIDAtOC40IDIzLjctOS41IDI3LjJhNi4yIDYuMiAwIDAgMC0uMiAxLjljLS4xIDkuMiAzNi4yIDM5LjQgODQuOSAzOS41bTMyLjUtMTEuNGMxLjcgOC4yIDEuNyA5LjEgMS43IDEwLjEgMCAxNC0xNS43IDIxLjgtMzYuNCAyMS44LTQ2LjggMC04Ny43LTI3LjQtODcuNy00NS41YTE4LjM1IDE4LjM1IDAgMCAxIDEuNS03LjNDMjEuOSA1MS41LjEgNTQuNS4xIDczLjdjMCAzMS41IDc0LjYgNzAuMyAxMzMuNiA3MC4zIDQ1LjMgMCA1Ni43LTIwLjUgNTYuNy0zNi43IDAtMTIuNy0xMS0yNy4xLTMwLjgtMzUuNyIgc3R5bGU9ImZpbGw6I2UwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS4xKSIvPjxwYXRoIGQ9Ik0xNTkuNSA3MS42YzEuNyA4LjIgMS43IDkuMSAxLjcgMTAuMSAwIDE0LTE1LjcgMjEuOC0zNi40IDIxLjgtNDYuOCAwLTg3LjctMjcuNC04Ny43LTQ1LjVhMTguMzUgMTguMzUgMCAwIDEgMS41LTcuM2wzLjctOS4xYTYuMiA2LjIgMCAwIDAtLjIgMS45YzAgOS4yIDM2LjMgMzkuNCA4NC45IDM5LjQgMTIuNSAwIDMwLjYtMi42IDMwLjYtMTcuNWExOS41IDE5LjUgMCAwIDAtLjMtMy40WiIvPjwvc3ZnPg==

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1yb2NrZXQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHgyPSIxMDAlIiB5MT0iMCUiIHkyPSIwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2VhMjg0NSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VhMjg2OCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxwYXRoIHN0cm9rZT0idXJsKCNncmFkKSIgZD0iTTQuNSAxNi41Yy0xLjUgMS4yNi0yIDUtMiA1czMuNzQtLjUgNS0yYy43MS0uODQuNy0yLjEzLS4wOS0yLjkxYTIuMTggMi4xOCAwIDAgMC0yLjkxLS4wOSIvPjxwYXRoIGQ9Im0xMiAxNS0zLTNhMjIgMjIgMCAwIDEgMi0zLjk1QTEyLjg4IDEyLjg4IDAgMCAxIDIyIDJjMCAyLjcyLS43OCA3LjUtNiAxMWEyMi40IDIyLjQgMCAwIDEtNCAyIi8+PHBhdGggZD0iTTkgMTJINHMuNTUtMy4wMyAyLTRjMS42Mi0xLjA4IDUgMCA1IDBNMTIgMTV2NXMzLjAzLS41NSA0LTJjMS4wOC0xLjYyIDAtNSAwLTUiLz48L3N2Zz4=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDgiIGhlaWdodD0iMzgiIHZpZXdCb3g9IjAgMCAxNDggMzgiPjxwYXRoIGQ9Ik0zLjkzIDI1LjIzMkMtMTkuNDAzIDMyLjg5OS03LjczNyAyOS4wNjUgMy45MyAyNS4yMzJtLTIuMSAwQy0yMC4xMDMgMzIuODk5LTkuMTM3IDI5LjA2NSAxLjgzIDI1LjIzMm03NC40LTE1LjhoLTIuMXYxOS43aDIuMVptLTYwLjctNy43Yy02LjQgMC0xMS42IDUuMS0xMS42IDExLjV2MjMuNWgxMzAuOWM2LjQgMCAxMS41LTUuMSAxMS42LTExLjV2LTIzLjVabTEyOC44IDIzLjVjMCA1LjItNC4zIDkuNC05LjUgOS40SDYuMDN2LTIxLjRjMC01LjIgNC4zLTkuNCA5LjUtOS40aDEyOC44Wm0tNTUuNC0xMi4yIDExLjEgMTZoMi4xdi0xOS42aC0yLjF2MTZsLTExLjEtMTZoLTIuMXYxOS43aDIuMVptLTQ1IDE1LjQuMi42aDIuMWwuMi0uNiA1LTE1LjUgNSAxNS41LjIuNmgyLjFsLjItLjYgNi4yLTE5aC0yLjJsLTUuMyAxNi4xLTUuMS0xNi4xaC0yLjFsLTUuMyAxNi4xLTUuMS0xNi4xaC0yLjJabTk0LjEtMTMuMWMuNi0uNyAxLTEuNiAxLTIuNSAwLTEuOS0xLjUtMy40LTMuMy0zLjRoLTIuN3Y2LjloMi41Yy45IDAgMS45LS4zIDIuNS0xbS0zLjctNC42aDEuMWMxLjEtLjEgMi4xLjggMi4xIDEuOXYuMmMwIC42LS4yIDEuMi0uNiAxLjZzLTEgLjYtMS42LjZoLTEuMXYtNC4zWm0tMTA4LjQgMTYuM2MtMi42LjYtNi4xLjItOC4xLTIuNC0uMS0uMS0uMy0uNS0uNC0uN2wtMS45LjljLjIuNC41LjkuNiAxIDEuOCAyLjMgNC43IDMuNiA3LjYgMy41LjkgMCAxLjgtLjEgMi42LS4zIDMuOC0uOCA1LjMtMy44IDQuOC02LjJzLTEuOC0zLjktNy40LTVjLTUuMy0xLjEtNS4zLTIuMy01LjMtMy40IDAtLjcuMi0xLjQuNy0ybC4xLS4xYzEuNC0xLjQgNC4yLTEuMyA0LjMtMS4zIDMuNyAwIDQuNyAxLjUgNS40IDIuM2wuMS4xIDEuNy0xLjItLjEtLjFjLS43LTEtMi4zLTMuMi03LjEtMy4yLS40IDAtMy44LS4xLTUuOCAxLjktMSAuOS0xLjUgMi4yLTEuNSAzLjYgMCAyLjkgMS45IDQuNCA3IDUuNCA1LjMgMSA1LjUgMi4xIDUuNyAzLjQuNSAxLjUtLjUgMy4zLTMgMy44bTk0LjEgMi4zaC40YzIuNS0uMSA0LjgtMS4xIDYuNi0yLjhsLjMtLjN2LTcuN2gtOC40djIuMWg2LjN2NC43Yy0yLjYgMi4yLTUgMi01IDJoLS4xYy0yIC4xLTMuOS0uNi01LjQtMi0xLjQtMS42LTIuMy0zLjctMi4zLTUuOXMuOC00LjMgMi4yLTZjMS41LTEuNCAzLjQtMi4xIDUuNC0yLjEgMy43IDAgNC43IDEuNSA1LjQgMi4zbC4xLjEgMS43LTEuMi0uMS0uMWMtLjctMS0yLjMtMy4yLTctMy4yLTIuNiAwLTUuMSAxLTYuOSAyLjctMS45IDItMi45IDQuNi0yLjggNy40LjEgMi43IDEuMSA1LjQgMi45IDcuNCAxLjcgMS43IDQuMiAyLjcgNi43IDIuNiIvPjwvc3ZnPg==

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCAzOS42ODcgMTMuMjI5Ij48cGF0aCBmaWxsPSIjZTYxMjg0IiBkPSJNMzcuMzE1IDcuMTk0di45MWgtLjk0NHYtLjkxWiIvPjxwYXRoIGZpbGw9IiM3YjEyNGMiIGQ9Ik02Ljc3OCA2LjQ5NiA4LjY3IDUuNDMxdi0yLjEzTDYuNzc4IDQuMzY3WiIvPjxwYXRoIGZpbGw9IiNiMzFjZTciIGQ9Ik00LjA2OCAxMC4yMjIgMi4xNzQgOS4xNTd2LTIuMTNsMS44OTQgMS4wNjVaTTQuMDY0IDcuNjg4IDIuMTcxIDYuNjIzdi0yLjEzbDEuODkzIDEuMDY1WiIvPjxwYXRoIGZpbGw9IiNlNjEyODQiIGQ9Ik00LjA2NCA1LjE3NiAyLjE3MSA0LjExMnYtMi4xM2wxLjg5MyAxLjA2NVpNNi4zODggMTEuNTNsLTEuODkzLTEuMDY2di0yLjEzTDYuMzg4IDkuNFoiLz48cGF0aCBmaWxsPSIjNTgxNjhiIiBkPSJNMTAuODAzIDEuNyA4LjkxIDIuNzY1IDcuMDE2IDEuN1oiLz48cGF0aCBmaWxsPSIjZTYxMjg0IiBkPSJNNi4zODggOS4wMDEgNC40OTUgNy45MzZ2LTIuMTNsMS44OTMgMS4wNjVaTTYuMzg4IDYuNDczIDQuNDk1IDUuNDA4di0yLjEzbDEuODkzIDEuMDY1WiIvPjxnIGZpbGw9IiM1YjEwOTYiPjxwYXRoIGQ9Ik04LjQ3OCAyLjkzMSA2LjU4NSAxLjg2NiA0LjY5MiAyLjkzMWwxLjg5MyAxLjA2NVpNMi40NDYgMS43IDQuMzQgMi43NjUgNi4yMzMgMS43Wk05LjA5OCAxMC4yNDZsMS44OTMtMS4wNjVWNy4wNUw5LjA5OCA4LjExNlpNOS4xMDEgNy43MTJsMS44OTMtMS4wNjV2LTIuMTNMOS4xMDEgNS41ODJaIi8+PC9nPjxwYXRoIGZpbGw9IiM3YjEyNGMiIGQ9Im05LjEwMSA1LjIgMS44OTMtMS4wNjV2LTIuMTNMOS4xMDEgMy4wN1pNNi43NzggMTEuNTUzbDEuODkzLTEuMDY1di0yLjEzTDYuNzc4IDkuNDIzWk02Ljc3OCA5LjAyNSA4LjY3IDcuOTZWNS44M0w2Ljc3OCA2Ljg5NVoiLz48ZyBmaWxsPSIjMDgwYzFkIj48cGF0aCBkPSJNMTguNDYgNC4yMDR2Ljk3aC0xLjAzN1Y4LjExaC0xLjIyNVY1LjE3NWgtMS4wMjZ2LS45NzFaTTIwLjc1MSA4LjExbC0uNzQtMS40MDJWOC4xMWgtMS4yMjRWNC4yMDRoMS44MnEuNDc1IDAgLjgxMi4xNy4zMzYuMTY2LjUwMi40NTkuMTcuMjg3LjE3LjY1IDAgLjM5Mi0uMjIuNjk2LS4yMTUuMzAzLS42MjMuNDM2bC44NSAxLjQ5NVptLS43NC0yLjIxOGguNDg2cS4xNzcgMCAuMjY1LS4wNzcuMDg4LS4wODMuMDg4LS4yNTQgMC0uMTU0LS4wOTMtLjI0My0uMDg5LS4wODgtLjI2LS4wODhoLS40ODVaTTIzLjcwOCA0LjIwNFY4LjExaC0xLjIyNVY0LjIwNFpNMjUuNDg1IDcuMTgzaDEuMTgxdi45MjdoLTIuNDA1VjQuMjA0aDEuMjI0Wk0yOC45NTUgNC4xMzhxLjU1MSAwIDEuMDEuMjU5LjQ1Ny4yNTQuNzIyLjcxMi4yNy40NTcuMjcgMS4wMzF0LS4yNyAxLjAzMnEtLjI2NS40NTgtLjcyOC43MTctLjQ1OC4yNi0xLjAwNC4yNi0uNTUyIDAtMS4wMTUtLjI2LS40NTgtLjI2LS43MjktLjcxNy0uMjctLjQ1OC0uMjctMS4wMzJ0LjI3LTEuMDMxLjcyOS0uNzEycS40NjMtLjI2IDEuMDE1LS4yNm0wIDEuMTNxLS4zNyAwLS41NjkuMjM4LS4xOTguMjMyLS4xOTguNjM0IDAgLjM5Ny4xOTguNjM1LjE5OS4yMzEuNTY5LjIzMS4zNjQgMCAuNTYyLS4yMzEuMTk5LS4yMzguMTk5LS42MzUgMC0uNDAyLS4xOTktLjYzNC0uMTk4LS4yMzctLjU2Mi0uMjM3TTM1LjE0IDguMTFoLTEuMjI1bC0xLjI5Ny0xLjk2NFY4LjExaC0xLjIyNFY0LjIwNGgxLjIyNEwzMy45MTUgNi4yVjQuMjA0aDEuMjI1WiIvPjwvZz48L3N2Zz4=

View File

@@ -0,0 +1 @@
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjI1IiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1yZXBsYWNlLWFsbCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQiIHgxPSIwJSIgeDI9IjEwMCUiIHkxPSIwJSIgeTI9IjAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZWEyODQ1Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZWEyODY4Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggc3Ryb2tlPSJ1cmwoI2dyYWQpIiBkPSJNMTQgNGMwLTEuMS45LTIgMi0yIi8+PHBhdGggc3Ryb2tlPSJ1cmwoI2dyYWQpIiBkPSJNMjAgMmMxLjEgMCAyIC45IDIgMiIvPjxwYXRoIHN0cm9rZT0idXJsKCNncmFkKSIgZD0iTTIyIDhjMCAxLjEtLjkgMi0yIDIiLz48cGF0aCBzdHJva2U9InVybCgjZ3JhZCkiIGQ9Ik0xNiAxMGMtMS4xIDAtMi0uOS0yLTIiLz48cGF0aCBkPSJtMyA3IDMgMyAzLTMiLz48cGF0aCBkPSJNNiAxMFY1YzAtMS43IDEuMy0zIDMtM2gxIi8+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgeD0iMiIgeT0iMTQiIHJ4PSIyIi8+PHBhdGggZD0iTTE0IDE0YzEuMSAwIDIgLjkgMiAydjRjMCAxLjEtLjkgMi0yIDJNMjAgMTRjMS4xIDAgMiAuOSAyIDJ2NGMwIDEuMS0uOSAyLTIgMiIvPjwvc3ZnPg==

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1235
public/index.html Normal file

File diff suppressed because it is too large Load Diff

30
src/App.js Normal file
View File

@@ -0,0 +1,30 @@
import React from 'react';
import Header from './components/Header';
import Hero from './components/Hero';
import Features from './components/Features';
import EverythingYouNeed from './components/EverythingYouNeed';
import CallToAction from './components/CallToAction';
import Courses from './components/Courses';
import Enterprise from './components/Enterprise';
import LivePreview from './components/LivePreview';
import Support from './components/Support';
import Footer from './components/Footer';
function App() {
return (
<div className="App">
<Header />
<Hero />
<Features />
<EverythingYouNeed />
<CallToAction />
<Courses />
<Enterprise />
<LivePreview />
<Support />
<Footer />
</div>
);
}
export default App;

View File

@@ -0,0 +1,80 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const CallToAction = () => {
const shouldReduce = useReducedMotion();
if (shouldReduce) {
return (
<section className="py-20">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8">
<div className="bg-nest-dark text-white p-12 rounded-lg">
<h3 className="text-3xl font-bold mb-4">Deploy, mind!</h3>
<p className="text-gray-300 mb-8">
Nest is framework-agnostic, so you can use any HTTP library you want. Express and Fastify are supported out of the box.
</p>
<button className="btn-primary">
Get started
</button>
</div>
<div className="bg-nest-red text-white p-12 rounded-lg">
<h3 className="text-3xl font-bold mb-4">Explore your graph</h3>
<p className="text-gray-100 mb-8">
Nest provides a powerful CLI that helps you scaffold, develop, and maintain your Nest applications.
</p>
<button className="bg-white text-nest-red px-6 py-3 rounded-full font-medium hover:bg-gray-100 transition-colors duration-200">
Get started
</button>
</div>
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8">
<motion.div
{...fadeUpPreset(0.2, 0.8)}
className="bg-nest-dark text-white p-12 rounded-lg"
>
<h3 className="text-3xl font-bold mb-4">Deploy, mind!</h3>
<p className="text-gray-300 mb-8">
Nest is framework-agnostic, so you can use any HTTP library you want. Express and Fastify are supported out of the box.
</p>
<button className="btn-primary">
Get started
</button>
</motion.div>
<motion.div
{...fadeUpPreset(0.3, 0.8)}
className="bg-nest-red text-white p-12 rounded-lg"
>
<h3 className="text-3xl font-bold mb-4">Explore your graph</h3>
<p className="text-gray-100 mb-8">
Nest provides a powerful CLI that helps you scaffold, develop, and maintain your Nest applications.
</p>
<button className="bg-white text-nest-red px-6 py-3 rounded-full font-medium hover:bg-gray-100 transition-colors duration-200">
Get started
</button>
</motion.div>
</div>
</div>
</motion.section>
);
};
export default CallToAction;

59
src/components/Courses.js Normal file
View File

@@ -0,0 +1,59 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const Courses = () => {
const shouldReduce = useReducedMotion();
if (shouldReduce) {
return (
<section className="py-20 bg-nest-light-gray">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="bg-white rounded-lg p-12 text-center">
<h2 className="text-3xl font-bold text-nest-dark mb-4">
Official NestJS Courses
</h2>
<p className="text-nest-gray mb-8 max-w-2xl mx-auto">
Learn NestJS from the ground up with our comprehensive courses. From beginner to advanced topics, we've got you covered.
</p>
<button className="btn-primary">
Get started
</button>
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20 bg-nest-light-gray"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<motion.div
{...fadeUpPreset(0.2, 0.8)}
className="bg-white rounded-lg p-12 text-center"
>
<h2 className="text-3xl font-bold text-nest-dark mb-4">
Official NestJS Courses
</h2>
<p className="text-nest-gray mb-8 max-w-2xl mx-auto">
Learn NestJS from the ground up with our comprehensive courses. From beginner to advanced topics, we've got you covered.
</p>
<button className="btn-primary">
Get started
</button>
</motion.div>
</div>
</motion.section>
);
};
export default Courses;

View File

@@ -0,0 +1,73 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const Enterprise = () => {
const shouldReduce = useReducedMotion();
if (shouldReduce) {
return (
<section className="py-20 bg-nest-red text-white relative overflow-hidden">
<div className="absolute right-0 top-0 h-full w-1/2 opacity-20">
<img
src="https://nestjs.com/img/banner-background.png"
alt=""
className="h-full w-full object-cover"
/>
</div>
<div className="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="max-w-2xl">
<h2 className="text-4xl md:text-5xl font-bold mb-6">
The open source platform designed for the future. Build enterprise.
</h2>
<p className="text-xl mb-8 opacity-90">
A complete development kit for every occasion. Meet the modern Node.js framework for everyone.
</p>
<button className="bg-white text-nest-red px-8 py-4 rounded-full font-medium hover:bg-gray-100 transition-colors duration-200">
Contact us
</button>
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20 bg-nest-red text-white relative overflow-hidden"
>
<div className="absolute right-0 top-0 h-full w-1/2 opacity-20">
<img
src="https://nestjs.com/img/banner-background.png"
alt=""
className="h-full w-full object-cover"
/>
</div>
<div className="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<motion.div
{...fadeUpPreset(0.2, 0.8)}
className="max-w-2xl"
>
<h2 className="text-4xl md:text-5xl font-bold mb-6">
The open source platform designed for the future. Build enterprise.
</h2>
<p className="text-xl mb-8 opacity-90">
A complete development kit for every occasion. Meet the modern Node.js framework for everyone.
</p>
<button className="bg-white text-nest-red px-8 py-4 rounded-full font-medium hover:bg-gray-100 transition-colors duration-200">
Contact us
</button>
</motion.div>
</div>
</motion.section>
);
};
export default Enterprise;

View File

@@ -0,0 +1,126 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const EverythingYouNeed = () => {
const shouldReduce = useReducedMotion();
const features = [
{
icon: "📝",
title: "DECORATORS",
description: "Highly useful feature that allows you to add metadata to classes and their members using a clean, declarative syntax."
},
{
icon: "⚡",
title: "PERFORMANCE",
description: "Fastify under the hood which provides up to 20x faster JSON serialization."
},
{
icon: "🔍",
title: "DEPENDENCY INJECTION",
description: "Nest makes it easy to create scalable, loosely coupled, and easily testable applications."
},
{
icon: "📊",
title: "FIRST-CLASS",
description: "Nest provides an out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications."
},
{
icon: "🛡️",
title: "BUILT-IN SECURITY",
description: "Nest comes with built-in security features like authentication, authorization, rate limiting, and more."
},
{
icon: "📚",
title: "EXTENSIVE DOCS",
description: "Nest has extensive documentation and a large community of developers who contribute to the ecosystem."
},
{
icon: "🔧",
title: "MICROSERVICES",
description: "Nest provides a dedicated microservices package that allows you to build distributed systems."
},
{
icon: "🚀",
title: "PRODUCTION READY",
description: "Nest is production-ready and has been used by many companies to build large-scale applications."
}
];
if (shouldReduce) {
return (
<section className="py-20 bg-white">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center mb-16">
<h2 className="text-4xl md:text-5xl font-bold text-nest-dark mb-4">
Everything you need.
</h2>
<p className="text-xl text-nest-gray max-w-3xl mx-auto">
Nest offers powerful, extensible and modular architecture with dependency injection, making it easy to build scalable applications.
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
{features.map((feature, index) => (
<div key={index} className="text-center p-6">
<div className="text-4xl mb-4">{feature.icon}</div>
<h3 className="text-lg font-bold text-nest-dark mb-3">
{feature.title}
</h3>
<p className="text-nest-gray text-sm leading-relaxed">
{feature.description}
</p>
</div>
))}
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20 bg-white"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<motion.div
{...fadeUpPreset(0.2, 0.8)}
className="text-center mb-16"
>
<h2 className="text-4xl md:text-5xl font-bold text-nest-dark mb-4">
Everything you need.
</h2>
<p className="text-xl text-nest-gray max-w-3xl mx-auto">
Nest offers powerful, extensible and modular architecture with dependency injection, making it easy to build scalable applications.
</p>
</motion.div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
{features.map((feature, index) => (
<motion.div
key={index}
{...fadeUpPreset(0.3 + index * 0.05, 0.6)}
className="text-center p-6"
>
<div className="text-4xl mb-4">{feature.icon}</div>
<h3 className="text-lg font-bold text-nest-dark mb-3">
{feature.title}
</h3>
<p className="text-nest-gray text-sm leading-relaxed">
{feature.description}
</p>
</motion.div>
))}
</div>
</div>
</motion.section>
);
};
export default EverythingYouNeed;

110
src/components/Features.js Normal file
View File

@@ -0,0 +1,110 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const Features = () => {
const shouldReduce = useReducedMotion();
const features = [
{
icon: (
<svg className="feature-icon" viewBox="0 0 64 64" fill="none">
<path d="M32 8L8 20v24l24 12 24-12V20L32 8z" stroke="#e0234e" strokeWidth="2" fill="none"/>
<path d="M32 32L8 20" stroke="#e0234e" strokeWidth="2"/>
<path d="M32 32L56 20" stroke="#e0234e" strokeWidth="2"/>
<path d="M32 32v20" stroke="#e0234e" strokeWidth="2"/>
</svg>
),
title: "EXTENSIBLE",
description: "Provides unparalleled flexibility through its meticulously crafted modular architecture."
},
{
icon: (
<svg className="feature-icon" viewBox="0 0 64 64" fill="none">
<path d="M32 8l8 8-8 8-8-8 8-8z" stroke="#e0234e" strokeWidth="2" fill="none"/>
<path d="M16 24l8 8-8 8-8-8 8-8z" stroke="#e0234e" strokeWidth="2" fill="none"/>
<path d="M48 24l8 8-8 8-8-8 8-8z" stroke="#e0234e" strokeWidth="2" fill="none"/>
<path d="M32 40l8 8-8 8-8-8 8-8z" stroke="#e0234e" strokeWidth="2" fill="none"/>
<circle cx="32" cy="16" r="2" fill="#e0234e"/>
<circle cx="16" cy="32" r="2" fill="#e0234e"/>
<circle cx="48" cy="32" r="2" fill="#e0234e"/>
<circle cx="32" cy="48" r="2" fill="#e0234e"/>
</svg>
),
title: "VERSATILE",
description: "Serves as a robust, elegant, and well-structured foundation for all kinds of server-side applications."
},
{
icon: (
<svg className="feature-icon" viewBox="0 0 64 64" fill="none">
<path d="M32 8L16 24v24l16 8 16-8V24L32 8z" stroke="#e0234e" strokeWidth="2" fill="none"/>
<path d="M32 24L16 32" stroke="#e0234e" strokeWidth="2"/>
<path d="M32 24L48 32" stroke="#e0234e" strokeWidth="2"/>
<path d="M32 24v24" stroke="#e0234e" strokeWidth="2"/>
<circle cx="32" cy="16" r="3" fill="#e0234e"/>
<circle cx="24" cy="28" r="2" fill="#e0234e"/>
<circle cx="40" cy="28" r="2" fill="#e0234e"/>
</svg>
),
title: "PROGRESSIVE",
description: "Introduces design patterns and well-established solutions to the Node.js landscape."
}
];
if (shouldReduce) {
return (
<section className="py-20 bg-nest-light-gray">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="grid grid-cols-1 md:grid-cols-3 gap-12">
{features.map((feature, index) => (
<div key={index} className="feature-card">
{feature.icon}
<h3 className="text-xl font-bold text-nest-red mb-4">
{feature.title}
</h3>
<p className="text-nest-gray leading-relaxed">
{feature.description}
</p>
</div>
))}
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20 bg-nest-light-gray"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="grid grid-cols-1 md:grid-cols-3 gap-12">
{features.map((feature, index) => (
<motion.div
key={index}
{...fadeUpPreset(index * 0.1, 0.8)}
className="feature-card"
>
{feature.icon}
<h3 className="text-xl font-bold text-nest-red mb-4">
{feature.title}
</h3>
<p className="text-nest-gray leading-relaxed">
{feature.description}
</p>
</motion.div>
))}
</div>
</div>
</motion.section>
);
};
export default Features;

68
src/components/Footer.js Normal file
View File

@@ -0,0 +1,68 @@
import React from 'react';
import { Github, X } from 'lucide-react';
const Footer = () => {
return (
<footer className="bg-white border-t border-gray-200 py-12">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex flex-col items-center space-y-6">
<div className="flex items-center space-x-6">
<a
href="#"
className="text-gray-400 hover:text-nest-red transition-colors"
>
<Github className="w-6 h-6" />
</a>
<a
href="#"
className="text-gray-400 hover:text-nest-red transition-colors"
>
<X className="w-6 h-6" />
</a>
<a
href="#"
className="text-gray-400 hover:text-nest-red transition-colors"
>
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
</a>
</div>
<div className="text-center space-y-2">
<p className="text-gray-500 text-sm">
Released under the MIT License
</p>
<p className="text-gray-500 text-sm">
Official NestJS Consulting{' '}
<a href="#" className="text-nest-red hover:underline">
Trilon.io
</a>
</p>
<p className="text-gray-500 text-sm">
Copyright © 2017- 2024{' '}
<a href="#" className="text-nest-red hover:underline">
Kamil Mysliwiec
</a>
</p>
<p className="text-gray-500 text-sm">
Designed by{' '}
<a href="#" className="text-nest-red hover:underline">
Jakub Staron
</a>
, hosted by{' '}
<a href="#" className="text-nest-red hover:underline">
Netlify
</a>
</p>
<p className="text-nest-red text-sm">
中文说明
</p>
</div>
</div>
</div>
</footer>
);
};
export default Footer;

96
src/components/Header.js Normal file
View File

@@ -0,0 +1,96 @@
import React, { useState } from 'react';
import { Menu, X, ChevronDown, Github } from 'lucide-react';
const Header = () => {
const [isMenuOpen, setIsMenuOpen] = useState(false);
const [isResourcesOpen, setIsResourcesOpen] = useState(false);
return (
<header className="fixed top-0 left-0 right-0 z-50 bg-nest-dark border-b border-gray-800">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex items-center justify-between h-16">
<div className="flex items-center">
<div className="flex-shrink-0">
<img
className="h-8 w-auto"
src="https://nestjs.com/img/logo-small.svg"
alt="NestJS"
/>
</div>
</div>
<nav className="hidden md:flex items-center space-x-8">
<a href="#" className="text-white hover:text-nest-red transition-colors">
DOCUMENTATION
</a>
<a href="#" className="text-white hover:text-nest-red transition-colors">
ENTERPRISE
</a>
<div className="relative">
<button
className="flex items-center text-white hover:text-nest-red transition-colors"
onClick={() => setIsResourcesOpen(!isResourcesOpen)}
>
<span className="bg-nest-red text-white text-xs px-2 py-1 rounded mr-2">
NEW
</span>
RESOURCES
<ChevronDown className="ml-1 w-4 h-4" />
</button>
</div>
</nav>
<div className="hidden md:flex items-center space-x-4">
<a
href="#"
className="text-white hover:text-nest-red transition-colors"
>
<Github className="w-5 h-5" />
</a>
<a
href="#"
className="text-white hover:text-nest-red transition-colors"
>
<X className="w-5 h-5" />
</a>
<a
href="#"
className="text-white hover:text-nest-red transition-colors"
>
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
</a>
</div>
<div className="md:hidden">
<button
onClick={() => setIsMenuOpen(!isMenuOpen)}
className="text-white hover:text-nest-red transition-colors"
>
{isMenuOpen ? <X className="w-6 h-6" /> : <Menu className="w-6 h-6" />}
</button>
</div>
</div>
</div>
{isMenuOpen && (
<div className="md:hidden bg-nest-dark border-t border-gray-800">
<div className="px-2 pt-2 pb-3 space-y-1">
<a href="#" className="block px-3 py-2 text-white hover:text-nest-red transition-colors">
DOCUMENTATION
</a>
<a href="#" className="block px-3 py-2 text-white hover:text-nest-red transition-colors">
ENTERPRISE
</a>
<a href="#" className="block px-3 py-2 text-white hover:text-nest-red transition-colors">
RESOURCES
</a>
</div>
</div>
)}
</header>
);
};
export default Header;

92
src/components/Hero.js Normal file
View File

@@ -0,0 +1,92 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
import { Github } from 'lucide-react';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const Hero = () => {
const shouldReduce = useReducedMotion();
if (shouldReduce) {
return (
<section className="relative min-h-screen bg-nest-dark flex items-center overflow-hidden">
<div className="absolute inset-0">
<img
src="https://nestjs.com/img/banner-background.png"
alt=""
className="w-full h-full object-cover opacity-30"
/>
</div>
<div className="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="max-w-3xl">
<h1 className="text-5xl md:text-7xl font-bold text-white mb-6">
Hello, nest!
</h1>
<p className="text-xl md:text-2xl text-gray-300 mb-8 leading-relaxed">
A progressive Node.js framework for building efficient, reliable and scalable server-side applications.
</p>
<div className="flex flex-col sm:flex-row gap-4">
<button className="btn-primary">
Documentation
</button>
<button className="btn-secondary flex items-center justify-center">
<Github className="w-5 h-5 mr-2" />
Source code
</button>
</div>
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 0.8)}
className="relative min-h-screen bg-nest-dark flex items-center overflow-hidden"
>
<div className="absolute inset-0">
<img
src="https://nestjs.com/img/banner-background.png"
alt=""
className="w-full h-full object-cover opacity-30"
/>
</div>
<div className="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="max-w-3xl">
<motion.h1
{...fadeUpPreset(0.2, 0.8)}
className="text-5xl md:text-7xl font-bold text-white mb-6"
>
Hello, nest!
</motion.h1>
<motion.p
{...fadeUpPreset(0.3, 0.8)}
className="text-xl md:text-2xl text-gray-300 mb-8 leading-relaxed"
>
A progressive Node.js framework for building efficient, reliable and scalable server-side applications.
</motion.p>
<motion.div
{...fadeUpPreset(0.4, 0.8)}
className="flex flex-col sm:flex-row gap-4"
>
<button className="btn-primary">
Documentation
</button>
<button className="btn-secondary flex items-center justify-center">
<Github className="w-5 h-5 mr-2" />
Source code
</button>
</motion.div>
</div>
</div>
</motion.section>
);
};
export default Hero;

View File

@@ -0,0 +1,67 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const LivePreview = () => {
const shouldReduce = useReducedMotion();
if (shouldReduce) {
return (
<section className="py-20 bg-nest-dark text-white">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<h2 className="text-3xl font-bold mb-4">Live preview</h2>
<p className="text-gray-300 mb-8">
See how fast you can build and deploy a NestJS application with our interactive playground.
</p>
<div className="bg-gray-800 rounded-lg p-8 max-w-4xl mx-auto">
<div className="text-left">
<div className="text-green-400 mb-2">$ npm i -g @nestjs/cli</div>
<div className="text-green-400 mb-2">$ nest new project-name</div>
<div className="text-gray-400">Creating a new NestJS application...</div>
</div>
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20 bg-nest-dark text-white"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<motion.h2
{...fadeUpPreset(0.2, 0.8)}
className="text-3xl font-bold mb-4"
>
Live preview
</motion.h2>
<motion.p
{...fadeUpPreset(0.3, 0.8)}
className="text-gray-300 mb-8"
>
See how fast you can build and deploy a NestJS application with our interactive playground.
</motion.p>
<motion.div
{...fadeUpPreset(0.4, 0.8)}
className="bg-gray-800 rounded-lg p-8 max-w-4xl mx-auto"
>
<div className="text-left">
<div className="text-green-400 mb-2">$ npm i -g @nestjs/cli</div>
<div className="text-green-400 mb-2">$ nest new project-name</div>
<div className="text-gray-400">Creating a new NestJS application...</div>
</div>
</motion.div>
</div>
</motion.section>
);
};
export default LivePreview;

115
src/components/Support.js Normal file
View File

@@ -0,0 +1,115 @@
import React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
const fadeUpPreset = (delay = 0, duration = 1.2) => ({
initial: { opacity: 0, y: 20 },
whileInView: { opacity: 1, y: 0 },
viewport: { once: true, amount: 0.2 },
transition: { delay, duration, ease: "easeOut" }
});
const Support = () => {
const shouldReduce = useReducedMotion();
const supportOptions = [
{
title: "PRINCIPAL SPONSORS",
description: "Support us by becoming a sponsor. Your logo will show up here with a link to your website."
},
{
title: "GOLD SPONSORS",
description: "Support us by becoming a sponsor. Your logo will show up here with a link to your website."
},
{
title: "SILVER SPONSORS",
description: "Support us by becoming a sponsor. Your logo will show up here with a link to your website."
},
{
title: "BRONZE SPONSORS",
description: "Support us by becoming a sponsor. Your logo will show up here with a link to your website."
}
];
if (shouldReduce) {
return (
<section className="py-20 bg-white">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center mb-16">
<h2 className="text-4xl font-bold text-nest-dark mb-4">Support us</h2>
<p className="text-xl text-nest-gray max-w-3xl mx-auto">
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers.
</p>
</div>
<div className="space-y-12">
{supportOptions.map((option, index) => (
<div key={index} className="text-center">
<h3 className="text-lg font-bold text-nest-dark mb-4">
{option.title}
</h3>
<p className="text-nest-gray mb-8">
{option.description}
</p>
<div className="h-24 bg-gray-100 rounded-lg flex items-center justify-center">
<span className="text-gray-400">Your logo here</span>
</div>
</div>
))}
</div>
<div className="text-center mt-16">
<button className="btn-primary">
Become a sponsor
</button>
</div>
</div>
</section>
);
}
return (
<motion.section
{...fadeUpPreset(0.1, 1.0)}
className="py-20 bg-white"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<motion.div
{...fadeUpPreset(0.2, 0.8)}
className="text-center mb-16"
>
<h2 className="text-4xl font-bold text-nest-dark mb-4">Support us</h2>
<p className="text-xl text-nest-gray max-w-3xl mx-auto">
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers.
</p>
</motion.div>
<div className="space-y-12">
{supportOptions.map((option, index) => (
<motion.div
key={index}
{...fadeUpPreset(0.3 + index * 0.1, 0.6)}
className="text-center"
>
<h3 className="text-lg font-bold text-nest-dark mb-4">
{option.title}
</h3>
<p className="text-nest-gray mb-8">
{option.description}
</p>
<div className="h-24 bg-gray-100 rounded-lg flex items-center justify-center">
<span className="text-gray-400">Your logo here</span>
</div>
</motion.div>
))}
</div>
<motion.div
{...fadeUpPreset(0.7, 0.8)}
className="text-center mt-16"
>
<button className="btn-primary">
Become a sponsor
</button>
</motion.div>
</div>
</motion.section>
);
};
export default Support;

41
src/index.css Normal file
View File

@@ -0,0 +1,41 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
html {
scroll-behavior: smooth;
}
body {
font-family: 'Inter', system-ui, sans-serif;
line-height: 1.6;
}
}
@layer components {
.btn-primary {
@apply bg-nest-red text-white px-6 py-3 rounded-full font-medium hover:bg-red-600 transition-colors duration-200;
}
.btn-secondary {
@apply border border-white text-white px-6 py-3 rounded-full font-medium hover:bg-white hover:text-nest-dark transition-colors duration-200;
}
.feature-card {
@apply text-center p-8;
}
.feature-icon {
@apply w-16 h-16 mx-auto mb-6;
}
}
@layer utilities {
.text-gradient {
background: linear-gradient(135deg, #e0234e 0%, #ff6b6b 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
}

13
src/index.js Normal file
View File

@@ -0,0 +1,13 @@
import React from 'react';
import { createRoot } from 'react-dom/client';
import './index.css';
import App from './App';
const container = document.getElementById('root');
const root = createRoot(container);
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);

23
tailwind.config.js Normal file
View File

@@ -0,0 +1,23 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {
colors: {
'nest-red': '#e0234e',
'nest-dark': '#1a1a1a',
'nest-gray': '#666666',
'nest-light-gray': '#f5f5f5'
},
fontFamily: {
'sans': ['Inter', 'system-ui', 'sans-serif']
},
backgroundImage: {
'hero-pattern': "url('https://nestjs.com/img/logo-small.svg')"
}
},
},
plugins: [],
}

5
vercel.json Normal file
View File

@@ -0,0 +1,5 @@
{
"installCommand": "npm install",
"buildCommand": "CI=false npm run build",
"outputDirectory": "build"
}