feat: v1.0.0 (#1)
@ -0,0 +1,49 @@
|
|||||||
|
name: Publish Preview Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [main, "refactor/app-router"]
|
||||||
|
paths:
|
||||||
|
- "app/**"
|
||||||
|
- "next.config.js"
|
||||||
|
- "package.json"
|
||||||
|
- "tailwind.config.js"
|
||||||
|
- "Dockerfile"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
push_to_registry:
|
||||||
|
name: Push Image to Docker Hub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Log Into Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set Short SHA
|
||||||
|
id: short_sha
|
||||||
|
run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Build/Push Image
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
NEXT_PUBLIC_IS_PREVIEW=1
|
||||||
|
NEXT_PUBLIC_BUILD_SHA=${{ steps.short_sha.outputs.short_sha }}
|
||||||
|
NEXT_PUBLIC_BUILD_ID=${{ github.run_id }}
|
||||||
|
NEXT_PUBLIC_BUILD_NUM=${{ github.run_number }}
|
||||||
|
secrets: |
|
||||||
|
REPOS_READ_ONLY=${{ secrets.REPOS_READ_ONLY }}
|
||||||
|
tags: ${{ secrets.DOCKER_USERNAME }}/website:preview
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
@ -1,33 +0,0 @@
|
|||||||
name: Publish Docker Image
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
paths:
|
|
||||||
- '**.tsx'
|
|
||||||
- '**.js'
|
|
||||||
- 'package.json'
|
|
||||||
- 'Dockerfile'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
push_to_registry:
|
|
||||||
name: Push Image to Docker Hub
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Log Into Docker Hub
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_TOKEN }}
|
|
||||||
|
|
||||||
- name: Build/Push Image
|
|
||||||
uses: docker/build-push-action@v4
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
push: true
|
|
||||||
tags: ${{ secrets.DOCKER_USERNAME }}/website:latest
|
|
@ -0,0 +1,40 @@
|
|||||||
|
name: Publish Production Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "*"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
push_to_registry:
|
||||||
|
name: Push Image to Docker Hub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Log Into Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set Short SHA
|
||||||
|
id: short_sha
|
||||||
|
run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Build/Push Image
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
build-args:
|
||||||
|
NEXT_PUBLIC_BUILD_SHA=${{ steps.short_sha.outputs.short_sha }}
|
||||||
|
NEXT_PUBLIC_BUILD_ID=${{ github.run_id }}
|
||||||
|
NEXT_PUBLIC_BUILD_NUM=${{ github.run_number }}
|
||||||
|
secrets: |
|
||||||
|
REPOS_READ_ONLY=${{ secrets.REPOS_READ_ONLY }}
|
||||||
|
tags: ${{ secrets.DOCKER_USERNAME }}/website:${{ github.ref_name }}
|
@ -0,0 +1,3 @@
|
|||||||
|
nodeLinker: node-modules
|
||||||
|
|
||||||
|
yarnPath: .yarn/releases/yarn-3.6.1.cjs
|
@ -1,35 +1,58 @@
|
|||||||
# Installing Dependencies
|
# Dependencies Image
|
||||||
FROM node:18-alpine AS deps
|
FROM node:20-alpine AS deps
|
||||||
RUN apk add --no-cache libc6-compat
|
RUN apk add --no-cache libc6-compat
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json yarn.lock ./
|
|
||||||
RUN yarn install --frozen-lockfile
|
COPY package.json yarn.lock .yarnrc.yml ./
|
||||||
|
COPY .yarn ./.yarn
|
||||||
|
|
||||||
|
RUN yarn set version berry
|
||||||
|
RUN yarn install --immutable
|
||||||
RUN yarn add sharp
|
RUN yarn add sharp
|
||||||
|
|
||||||
# Building Website
|
# Build Image
|
||||||
FROM node:18-alpine AS builder
|
FROM node:20-alpine AS builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=deps /app/node_modules ./node_modules
|
COPY --from=deps /app/node_modules ./node_modules
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN yarn build
|
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
# Keep as empty string as Typescript parses empty strings as false
|
||||||
|
ARG NEXT_PUBLIC_IS_PREVIEW=""
|
||||||
|
ENV NEXT_PUBLIC_IS_PREVIEW=$NEXT_PUBLIC_IS_PREVIEW
|
||||||
|
ARG NEXT_PUBLIC_BUILD_SHA
|
||||||
|
ENV NEXT_PUBLIC_BUILD_SHA=$NEXT_PUBLIC_BUILD_SHA
|
||||||
|
ARG NEXT_PUBLIC_BUILD_ID
|
||||||
|
ENV NEXT_PUBLIC_BUILD_ID=$NEXT_PUBLIC_BUILD_ID
|
||||||
|
ARG NEXT_PUBLIC_BUILD_NUM
|
||||||
|
ENV NEXT_PUBLIC_BUILD_NUM=$NEXT_PUBLIC_BUILD_NUM
|
||||||
|
|
||||||
|
RUN --mount=type=secret,id=REPOS_READ_ONLY \
|
||||||
|
REPOS_READ_ONLY=$(cat /run/secrets/REPOS_READ_ONLY) \
|
||||||
|
yarn build
|
||||||
|
|
||||||
# Production Image
|
# Production Image
|
||||||
FROM node:18-alpine AS runner
|
FROM node:20-alpine AS runner
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
RUN addgroup -g 1001 -S nodejs
|
||||||
|
RUN adduser -S nextjs -u 1001
|
||||||
|
|
||||||
RUN addgroup --system --gid 1001 nextjsgroup
|
COPY --from=builder /app/public ./public
|
||||||
RUN adduser --system --uid 1001 nextjsuser
|
|
||||||
|
|
||||||
# Automatically leverage output traces to reduce image size
|
# Automatically leverage output traces to reduce image size
|
||||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||||
COPY --from=builder --chown=nextjsuser:nextjsgroup /app/public ./public
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||||
COPY --from=builder --chown=nextjsuser:nextjsgroup /app/package.json ./package.json
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||||
COPY --from=builder --chown=nextjsuser:nextjsgroup /app/.next/standalone ./
|
|
||||||
COPY --from=builder --chown=nextjsuser:nextjsgroup /app/.next/static ./.next/static
|
|
||||||
COPY --from=builder --chown=nextjsuser:nextjsgroup /app/node_modules/next/dist/compiled/jest-worker ./node_modules/next/dist/compiled/jest-worker
|
|
||||||
|
|
||||||
USER nextjsuser
|
USER nextjs
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
ENTRYPOINT ["node", "server.js"]
|
|
||||||
|
ENV PORT 3000
|
||||||
|
ENV HOSTNAME localhost
|
||||||
|
|
||||||
|
CMD ["node", "server.js"]
|
||||||
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
@ -0,0 +1,27 @@
|
|||||||
|
import { FancyUnderline, GroupedText, Text } from "./utils/Text";
|
||||||
|
|
||||||
|
export const About = () => {
|
||||||
|
return (
|
||||||
|
<GroupedText className="text-center">
|
||||||
|
<Text>
|
||||||
|
I am a{" "}
|
||||||
|
<FancyUnderline className="font-semibold" decoration="decoration-green">
|
||||||
|
software engineer
|
||||||
|
</FancyUnderline>{" "}
|
||||||
|
at the BBC and a{" "}
|
||||||
|
<FancyUnderline className="font-semibold" decoration="decoration-red">student</FancyUnderline>,
|
||||||
|
currently pursuing a BSc in Software Engineering at the University of
|
||||||
|
Glasgow.
|
||||||
|
</Text>
|
||||||
|
<Text>
|
||||||
|
You'll usually find me nerding out about technology and playing
|
||||||
|
video games. I also really enjoy contributing to open source projects,
|
||||||
|
mainly{" "}
|
||||||
|
<FancyUnderline className="font-semibold" decoration="decoration-peach">
|
||||||
|
Catppuccin
|
||||||
|
</FancyUnderline>
|
||||||
|
.
|
||||||
|
</Text>
|
||||||
|
</GroupedText>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,103 @@
|
|||||||
|
import { Text } from "./utils/Text";
|
||||||
|
import {
|
||||||
|
GitHub,
|
||||||
|
Gitea,
|
||||||
|
Instagram,
|
||||||
|
LinkedIn,
|
||||||
|
Twitter,
|
||||||
|
} from "./icons/SocialMedia";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { Heart } from "./icons/Heart";
|
||||||
|
import { ExternalLink } from "./icons/ExternalLink";
|
||||||
|
|
||||||
|
export const Footer = () => {
|
||||||
|
return (
|
||||||
|
<footer className="border-t-2 border-surface1 w-full text-subtext1">
|
||||||
|
<div className="flex flex-col justify-center items-center space-y-6 pt-10 pb-20">
|
||||||
|
<div className="text-center">
|
||||||
|
<p className="text-lg lg:text-xl xl:text-2xl">
|
||||||
|
Designed With <Heart />
|
||||||
|
</p>
|
||||||
|
<Text>© {new Date().getFullYear()} Goudham Suresh</Text>
|
||||||
|
</div>
|
||||||
|
<BuildInfo />
|
||||||
|
<SocialMediaRow />
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const BuildInfo = () => {
|
||||||
|
return (
|
||||||
|
<div className="text-center text-md lg:text-lg xl:text-xl">
|
||||||
|
<p>{process.env.NEXT_PUBLIC_IS_PREVIEW ? "Preview" : "Release"} Build</p>
|
||||||
|
<p>
|
||||||
|
GitHub SHA:{" "}
|
||||||
|
<Link
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
className="hocus:underline hocus:decoration-solid hocus:underline-offset-1"
|
||||||
|
href={`https://github.com/sgoudham/website/commit/${process.env.NEXT_PUBLIC_BUILD_SHA}`}
|
||||||
|
>
|
||||||
|
{process.env.NEXT_PUBLIC_BUILD_SHA} 
|
||||||
|
<ExternalLink />
|
||||||
|
</Link>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Build ID:{" "}
|
||||||
|
<Link
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
className="hocus:underline hocus:decoration-solid hocus:underline-offset-1"
|
||||||
|
href={`https://github.com/sgoudham/website/actions/runs/${process.env.NEXT_PUBLIC_BUILD_ID}`}
|
||||||
|
>
|
||||||
|
{process.env.NEXT_PUBLIC_BUILD_ID} 
|
||||||
|
<ExternalLink />
|
||||||
|
</Link>
|
||||||
|
</p>
|
||||||
|
<p>Build Num: #{process.env.NEXT_PUBLIC_BUILD_NUM}</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const SocialMediaRow = () => {
|
||||||
|
return (
|
||||||
|
<div className="flex gap-3 items-center">
|
||||||
|
<a
|
||||||
|
className="group focus:ring-2 focus:ring-blue ring-offset-0"
|
||||||
|
aria-label="Follow Me On GitHub"
|
||||||
|
href="https://github.com/sgoudham"
|
||||||
|
>
|
||||||
|
<GitHub />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
className="group focus:ring-2 focus:ring-blue ring-offset-0"
|
||||||
|
aria-label="Visit My Gitea Instance"
|
||||||
|
href="https://gitea.goudham.com"
|
||||||
|
>
|
||||||
|
<Gitea />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
className="group focus:ring-2 focus:ring-blue ring-offset-0"
|
||||||
|
aria-label="Follow Me On LinkedIn"
|
||||||
|
href="https://linkedin.com/in/sgoudham"
|
||||||
|
>
|
||||||
|
<LinkedIn />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
className="group focus:ring-2 focus:ring-blue ring-offset-0"
|
||||||
|
aria-label="Follow Me On Twitter"
|
||||||
|
href="https://twitter.com/RealGoudham"
|
||||||
|
>
|
||||||
|
<Twitter />
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
className="group focus:ring-2 focus:ring-blue ring-offset-0"
|
||||||
|
aria-label="Follow Me On Instagram"
|
||||||
|
href="https://instagram.com/sgoudham"
|
||||||
|
>
|
||||||
|
<Instagram />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,14 @@
|
|||||||
|
import { Wave } from "./icons/Wave";
|
||||||
|
import { H1 } from "./utils/Titles";
|
||||||
|
|
||||||
|
export const Header = () => {
|
||||||
|
return (
|
||||||
|
<H1>
|
||||||
|
Hiya{" "}
|
||||||
|
<div className="inline-block motion-safe:animate-waving-hand">
|
||||||
|
<Wave />
|
||||||
|
</div>
|
||||||
|
, I'm Goudham
|
||||||
|
</H1>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,72 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useRef, useState } from "react";
|
||||||
|
import { ProfilePicture } from "./images/ProfilePicture";
|
||||||
|
import { Hamburger } from "./nav/Hamburger";
|
||||||
|
import { Links } from "./nav/Links";
|
||||||
|
import { Close } from "./icons/Close";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { Dialog } from "@headlessui/react";
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
|
|
||||||
|
export const NavBar = () => {
|
||||||
|
const path = usePathname();
|
||||||
|
const focusedRef = useRef(null);
|
||||||
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
|
const checkPath = (href: string) => {
|
||||||
|
if (href === path) {
|
||||||
|
setIsOpen(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<nav className="self-center w-full max-w-xl lg:max-w-3xl xl:max-w-6xl">
|
||||||
|
<div className="p-4 flex flex-row items-center justify-between text-md lg:text-lg xl:text-xl">
|
||||||
|
<ProfilePicture />
|
||||||
|
<div className="hidden md:flex flex-row gap-x-4 font-bold tracking-tight">
|
||||||
|
<Links />
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
className="md:hidden px-4 py-2 hover:bg-crust dark:hover:bg-base rounded-lg"
|
||||||
|
onClick={() => setIsOpen((prev) => !prev)}
|
||||||
|
>
|
||||||
|
<Hamburger />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<Dialog
|
||||||
|
className={
|
||||||
|
isOpen
|
||||||
|
? "block w-full h-screen absolute overflow-hidden inset-0 bg-base dark:bg-crust z-10 flex-col items-center"
|
||||||
|
: "hidden"
|
||||||
|
}
|
||||||
|
open={isOpen}
|
||||||
|
onClose={() => setIsOpen(false)}
|
||||||
|
// initialFocus={focusedRef}
|
||||||
|
>
|
||||||
|
<div className="max-w-xl mx-auto">
|
||||||
|
<div className="p-4 w-full flex flex-row items-center justify-between">
|
||||||
|
<ProfilePicture />
|
||||||
|
<button
|
||||||
|
className="px-4 py-1 hover:bg-crust dark:hover:bg-base rounded-lg focus:bg-crust dark:focus:bg-base"
|
||||||
|
onClick={() => setIsOpen((prev) => !prev)}
|
||||||
|
ref={focusedRef}
|
||||||
|
>
|
||||||
|
<Close />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<ul className="flex flex-col space-y-6 items-center text-2xl font-semibold justify-center">
|
||||||
|
<Link href="/" onClick={() => checkPath("/")}>
|
||||||
|
< Home />
|
||||||
|
</Link>
|
||||||
|
<Link href="/projects" onClick={() => checkPath("/projects")}>
|
||||||
|
< Projects />
|
||||||
|
</Link>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</Dialog>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,69 @@
|
|||||||
|
import { fetchUserRepositories } from "@/app/lib/api";
|
||||||
|
import { Star } from "./icons/Star";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { H2 } from "./utils/Titles";
|
||||||
|
import { ExternalLink } from "./icons/ExternalLink";
|
||||||
|
import { Archived } from "./icons/Archived";
|
||||||
|
|
||||||
|
export const Projects = async () => {
|
||||||
|
const projects = await fetchUserRepositories().then((res) =>
|
||||||
|
res
|
||||||
|
.filter(
|
||||||
|
(data) =>
|
||||||
|
!data.fork &&
|
||||||
|
data.name !== "uwuifyy" &&
|
||||||
|
data.name !== "Enso-Bot" &&
|
||||||
|
!data.archived
|
||||||
|
)
|
||||||
|
.sort((a, b) => (b.stargazers_count ?? 0) - (a.stargazers_count ?? 0))
|
||||||
|
.slice(0, 6)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section className="flex flex-col items-center space-y-3 px-5">
|
||||||
|
<H2>Favourite Projects</H2>
|
||||||
|
<div className="rounded-lg text-md lg:text-lg xl:text-xl">
|
||||||
|
<div className="flex flex-col space-y-4">
|
||||||
|
{projects.map((project) => (
|
||||||
|
<Project key={project.name} project={project} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Project = ({ project }: { project: RepositoryData }) => {
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
href={project.html_url}
|
||||||
|
className="bg-base w-full rounded-xl outline-2 outline-mantle focus:ring-2 focus:ring-blue ring-offset-0 shadow-lg hover:scale-105 motion-safe:duration-300 p-3"
|
||||||
|
>
|
||||||
|
<div className="flex flex-col space-y-1 h-full justify-between">
|
||||||
|
<div>
|
||||||
|
<span className="font-semibold hover:underline">
|
||||||
|
{project.name} 
|
||||||
|
<ExternalLink />
|
||||||
|
</span>
|
||||||
|
{project.description && (
|
||||||
|
<div className="text-sm lg:text-md xl:text-lg text-subtext1">
|
||||||
|
{project.description}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="self-end flex flex-row gap-x-1">
|
||||||
|
{project.archived && (
|
||||||
|
<p className="text-md font-medium bg-mantle rounded-xl px-3">
|
||||||
|
<Archived />
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
<p className="text-md font-medium bg-mantle rounded-xl px-3">
|
||||||
|
{project.stargazers_count} <Star />
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,13 @@
|
|||||||
|
export const Archived = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-5 w-5 xl:h-6 xl:w-6 inline align-text-bottom fill-yellow"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
>
|
||||||
|
<path d="M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z"></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,13 @@
|
|||||||
|
export const Close = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-8 w-8 fill-overlay0 group-hover:bg-subtext1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
>
|
||||||
|
<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,13 @@
|
|||||||
|
export const ExternalLink = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-4 w-4 inline-block align-text-top fill-text opacity-50"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
>
|
||||||
|
<path d="M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,18 @@
|
|||||||
|
export const Heart = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-5 w-5 lg:h-6 lg:w-6 xl:h-7 xl:w-7 inline-block align-text-bottom"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M128,216S24,160,24,94A54,54,0,0,1,78,40c22.59,0,41.94,12.31,50,32,8.06-19.69,27.41-32,50-32a54,54,0,0,1,54,54C232,160,128,216,128,216Z"
|
||||||
|
fill="red"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="0"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,59 @@
|
|||||||
|
const socialMediaColours: string =
|
||||||
|
"h-8 w-8 lg:h-9 lg:w-9 xl:h-10 xl:w-10 fill-surface2 transition group-hover:fill-blue";
|
||||||
|
|
||||||
|
export const Gitea = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-10 w-10 lg:h-11 lg:w-11 xl:h-12 xl:w-12 transition group-hover:fill-blue"
|
||||||
|
aria-hidden="true"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 640 640"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
className="fill-base"
|
||||||
|
d="M395.9 484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8 17.2 8.3 27.1 13 27.1 13l-.1-109.2 16.7-.1.1 117.1s57.4 24.2 83.1 40.1c3.7 2.3 10.2 6.8 12.9 14.4 2.1 6.1 2 13.1-1 19.3l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12z"
|
||||||
|
/>
|
||||||
|
<g className="fill-surface2 group-hover:fill-blue">
|
||||||
|
<path d="M622.7 149.8c-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.3.3-26.5.6-39.6.7v117.2c-5.5-2.6-11.1-5.3-16.6-7.9 0-36.4-.1-109.2-.1-109.2-29 .4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5c-9.8-.6-22.5-2.1-39 1.5-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6zM125.6 353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1s7.1 59.4 15.7 94.2c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1zm300.3 107.6s-6.1 14.5-19.6 15.4c-5.8.4-10.3-1.2-10.3-1.2s-.3-.1-5.3-2.1l-112.9-55s-10.9-5.7-12.8-15.6c-2.2-8.1 2.7-18.1 2.7-18.1L322 273s4.8-9.7 12.2-13c.6-.3 2.3-1 4.5-1.5 8.1-2.1 18 2.8 18 2.8L467.4 315s12.6 5.7 15.3 16.2c1.9 7.4-.5 14-1.8 17.2-6.3 15.4-55 113.1-55 113.1z" />
|
||||||
|
<path d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const GitHub = () => {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true" className={socialMediaColours}>
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M12 2C6.475 2 2 6.588 2 12.253c0 4.537 2.862 8.369 6.838 9.727.5.09.687-.218.687-.487 0-.243-.013-1.05-.013-1.91C7 20.059 6.35 18.957 6.15 18.38c-.113-.295-.6-1.205-1.025-1.448-.35-.192-.85-.667-.013-.68.788-.012 1.35.744 1.538 1.051.9 1.551 2.338 1.116 2.912.846.088-.666.35-1.115.638-1.371-2.225-.256-4.55-1.14-4.55-5.062 0-1.115.387-2.038 1.025-2.756-.1-.256-.45-1.307.1-2.717 0 0 .837-.269 2.75 1.051.8-.23 1.65-.346 2.5-.346.85 0 1.7.115 2.5.346 1.912-1.333 2.75-1.05 2.75-1.05.55 1.409.2 2.46.1 2.716.637.718 1.025 1.628 1.025 2.756 0 3.934-2.337 4.806-4.562 5.062.362.32.675.936.675 1.897 0 1.371-.013 2.473-.013 2.82 0 .268.188.589.688.486a10.039 10.039 0 0 0 4.932-3.74A10.447 10.447 0 0 0 22 12.253C22 6.588 17.525 2 12 2Z"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Twitter = () => {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true" className={socialMediaColours}>
|
||||||
|
<path d="M20.055 7.983c.011.174.011.347.011.523 0 5.338-3.92 11.494-11.09 11.494v-.003A10.755 10.755 0 0 1 3 18.186c.308.038.618.057.928.058a7.655 7.655 0 0 0 4.841-1.733c-1.668-.032-3.13-1.16-3.642-2.805a3.753 3.753 0 0 0 1.76-.07C5.07 13.256 3.76 11.6 3.76 9.676v-.05a3.77 3.77 0 0 0 1.77.505C3.816 8.945 3.288 6.583 4.322 4.737c1.98 2.524 4.9 4.058 8.034 4.22a4.137 4.137 0 0 1 1.128-3.86A3.807 3.807 0 0 1 19 5.274a7.657 7.657 0 0 0 2.475-.98c-.29.934-.9 1.729-1.713 2.233A7.54 7.54 0 0 0 22 5.89a8.084 8.084 0 0 1-1.945 2.093Z"></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const LinkedIn = () => {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true" className={socialMediaColours}>
|
||||||
|
<path d="M18.335 18.339H15.67v-4.177c0-.996-.02-2.278-1.39-2.278-1.389 0-1.601 1.084-1.601 2.205v4.25h-2.666V9.75h2.56v1.17h.035c.358-.674 1.228-1.387 2.528-1.387 2.7 0 3.2 1.778 3.2 4.091v4.715zM7.003 8.575a1.546 1.546 0 01-1.548-1.549 1.548 1.548 0 111.547 1.549zm1.336 9.764H5.666V9.75H8.34v8.589zM19.67 3H4.329C3.593 3 3 3.58 3 4.297v15.406C3 20.42 3.594 21 4.328 21h15.338C20.4 21 21 20.42 21 19.703V4.297C21 3.58 20.4 3 19.666 3h.003z"></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Instagram = () => {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true" className={socialMediaColours}>
|
||||||
|
<path d="M12 3c-2.444 0-2.75.01-3.71.054-.959.044-1.613.196-2.185.418A4.412 4.412 0 0 0 4.51 4.511c-.5.5-.809 1.002-1.039 1.594-.222.572-.374 1.226-.418 2.184C3.01 9.25 3 9.556 3 12s.01 2.75.054 3.71c.044.959.196 1.613.418 2.185.23.592.538 1.094 1.039 1.595.5.5 1.002.808 1.594 1.038.572.222 1.226.374 2.184.418C9.25 20.99 9.556 21 12 21s2.75-.01 3.71-.054c.959-.044 1.613-.196 2.185-.419a4.412 4.412 0 0 0 1.595-1.038c.5-.5.808-1.002 1.038-1.594.222-.572.374-1.226.418-2.184.044-.96.054-1.267.054-3.711s-.01-2.75-.054-3.71c-.044-.959-.196-1.613-.419-2.185A4.412 4.412 0 0 0 19.49 4.51c-.5-.5-1.002-.809-1.594-1.039-.572-.222-1.226-.374-2.184-.418C14.75 3.01 14.444 3 12 3Zm0 1.622c2.403 0 2.688.009 3.637.052.877.04 1.354.187 1.67.31.421.163.72.358 1.036.673.315.315.51.615.673 1.035.123.317.27.794.31 1.671.043.95.052 1.234.052 3.637s-.009 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.67-.163.421-.358.72-.673 1.036a2.79 2.79 0 0 1-1.035.673c-.317.123-.794.27-1.671.31-.95.043-1.234.052-3.637.052s-2.688-.009-3.637-.052c-.877-.04-1.354-.187-1.67-.31a2.789 2.789 0 0 1-1.036-.673 2.79 2.79 0 0 1-.673-1.035c-.123-.317-.27-.794-.31-1.671-.043-.95-.052-1.234-.052-3.637s.009-2.688.052-3.637c.04-.877.187-1.354.31-1.67.163-.421.358-.72.673-1.036.315-.315.615-.51 1.035-.673.317-.123.794-.27 1.671-.31.95-.043 1.234-.052 3.637-.052Z"></path>
|
||||||
|
<path d="M12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6Zm0-7.622a4.622 4.622 0 1 0 0 9.244 4.622 4.622 0 0 0 0-9.244Zm5.884-.182a1.08 1.08 0 1 1-2.16 0 1.08 1.08 0 0 1 2.16 0Z"></path>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,19 @@
|
|||||||
|
export const Star = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-5 w-5 xl:h-6 xl:w-6 inline align-text-bottom"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
>
|
||||||
|
<rect width="256" height="256" fill="none" />
|
||||||
|
<path
|
||||||
|
d="M135.34,28.9l23.23,55.36a8,8,0,0,0,6.67,4.88l59.46,5.14a8,8,0,0,1,4.54,14.07L184.13,147.7a8.08,8.08,0,0,0-2.54,7.89l13.52,58.54a8,8,0,0,1-11.89,8.69l-51.1-31a7.93,7.93,0,0,0-8.24,0l-51.1,31a8,8,0,0,1-11.89-8.69l13.52-58.54a8.08,8.08,0,0,0-2.54-7.89L26.76,108.35A8,8,0,0,1,31.3,94.28l59.46-5.14a8,8,0,0,0,6.67-4.88L120.66,28.9A8,8,0,0,1,135.34,28.9Z"
|
||||||
|
fill="orange"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="0"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,51 @@
|
|||||||
|
export const Wave = () => {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="h-9 w-9 lg:h-10 lg:w-10 xl:h-12 xl:w-12 inline-block align-bottom text-peach"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
>
|
||||||
|
<rect width="256" height="256" fill="none" />
|
||||||
|
<path
|
||||||
|
d="M98,64.31a20,20,0,0,1,34.64-20l28,48.5"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="16"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M71.35,98.17l-16-27.71A20,20,0,0,1,90,50.46l34,58.89"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="16"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M156,164.77a40,40,0,0,1,14.64-54.64l-10-17.32a20,20,0,0,1,34.64-20l18,31.18A80,80,0,0,1,74.7,184l-38-65.82a20,20,0,0,1,34.65-20l22,38.1"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="16"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M192,32a52.12,52.12,0,0,1,32,24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="16"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M74.62,232c-11-8.69-19.39-19.48-26.62-32"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="16"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,15 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
|
||||||
|
export const ProfilePicture = ({}) => {
|
||||||
|
return (
|
||||||
|
<Image
|
||||||
|
src="/profile-picture.png"
|
||||||
|
width={64}
|
||||||
|
height={64}
|
||||||
|
alt="Goudham smiling at the camera"
|
||||||
|
className="motion-safe:hover:animate-spin w-12 h-12 lg:w-14 lg:h-14 xl:w-16 xl:h-16"
|
||||||
|
quality={100}
|
||||||
|
priority={true}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,9 @@
|
|||||||
|
export const Hamburger = () => {
|
||||||
|
return (
|
||||||
|
<div className="space-y-2">
|
||||||
|
<span className="block w-8 h-0.5 bg-overlay0 group-hover:bg-subtext1"></span>
|
||||||
|
<span className="block w-8 h-0.5 bg-overlay0 group-hover:bg-subtext1"></span>
|
||||||
|
<span className="block w-8 h-0.5 bg-overlay0 group-hover:bg-subtext1"></span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,30 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
|
export const Links = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<LinkWithAnimatedUnderline href="/" text="< Home />" />
|
||||||
|
<LinkWithAnimatedUnderline href="/projects" text="< Projects />" />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const LinkWithAnimatedUnderline = ({
|
||||||
|
href,
|
||||||
|
text,
|
||||||
|
}: {
|
||||||
|
href: string;
|
||||||
|
text: string;
|
||||||
|
}) => {
|
||||||
|
const animatedUnderline =
|
||||||
|
"md:block md:max-w-0 md:group-hover:max-w-full motion-safe:md:transition-all md:h-0.5 md:bg-blue motion-safe:md:duration-300";
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Link href={href} className="motion-safe:md:transition motion-safe:md:duration-300 group focus:text-blue">
|
||||||
|
<span className="group-hover:text-blue motion-safe:md:transition-all motion-safe:md:duration-300">
|
||||||
|
{text}
|
||||||
|
</span>
|
||||||
|
<span className={`${animatedUnderline}`}></span>
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,3 @@
|
|||||||
|
export const Navbar = () => {
|
||||||
|
return
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
|
export const StyledLink = ({
|
||||||
|
className,
|
||||||
|
href,
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
className?: string;
|
||||||
|
href: string;
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
href={href}
|
||||||
|
className={`font-medium text-blue underline text-lg lg:text-xl xl:text-2xl focus:ring-1 focus:ring-blue ${
|
||||||
|
className ?? ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,31 @@
|
|||||||
|
export const FancyUnderline = ({
|
||||||
|
decoration,
|
||||||
|
className,
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
decoration: string;
|
||||||
|
className?: string;
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<span className={`underline ${decoration} decoration-2 ${className ?? ""}`}>
|
||||||
|
{children}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Text = ({ className, children }: { className?: string, children: React.ReactNode }) => {
|
||||||
|
return <p className={`text-md lg:text-lg xl:text-xl ${className ?? ""}`}>{children}</p>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const GroupedText = ({
|
||||||
|
className,
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
className: string;
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<div className={`flex flex-col mx-3 gap-3 ${className}`}>{children}</div>
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,16 @@
|
|||||||
|
export const H1 = ({ children }: { children: React.ReactNode | string }) => {
|
||||||
|
return (
|
||||||
|
<h1 className="text-3xl lg:text-4xl xl:text-5xl font-bold tracking-tight text-center">
|
||||||
|
{children}
|
||||||
|
</h1>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const H2 = ({ children }: { children: React.ReactNode | string }) => {
|
||||||
|
return (
|
||||||
|
<h2 className="text-2xl lg:text-3xl xl:text-4xl font-bold">
|
||||||
|
{children}
|
||||||
|
</h2>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,12 @@
|
|||||||
|
@import "tailwindcss/base";
|
||||||
|
@import "tailwindcss/components";
|
||||||
|
@import "tailwindcss/utilities";
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
:focus-visible {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
:-moz-focusring {
|
||||||
|
outline: auto;
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
@ -0,0 +1,57 @@
|
|||||||
|
import "./globals.css";
|
||||||
|
import type { Metadata } from "next";
|
||||||
|
import { Raleway } from "next/font/google";
|
||||||
|
import { Footer } from "./components/Footer";
|
||||||
|
|
||||||
|
const raleway = Raleway({
|
||||||
|
subsets: ["latin"],
|
||||||
|
});
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Goudham Suresh",
|
||||||
|
description:
|
||||||
|
"I am a software engineer by day, and an open source enthusiast by night. Welcome to my corner of the internet where I write about my experiences, projects, and more.",
|
||||||
|
keywords: ["Next.js", "React", "Typescript", "Catppuccin", "Goudham"],
|
||||||
|
colorScheme: "light dark",
|
||||||
|
metadataBase: new URL(
|
||||||
|
process.env.NEXT_PUBLIC_IS_PREVIEW
|
||||||
|
? "https://preview.goudham.com"
|
||||||
|
: "https://goudham.com"
|
||||||
|
),
|
||||||
|
openGraph: {
|
||||||
|
url: process.env.NEXT_PUBLIC_IS_PREVIEW
|
||||||
|
? "https://preview.goudham.com"
|
||||||
|
: "https://goudham.com",
|
||||||
|
title: `Goudham Suresh${
|
||||||
|
process.env.NEXT_PUBLIC_IS_PREVIEW ? " (Preview)" : ""
|
||||||
|
}`,
|
||||||
|
description:
|
||||||
|
"I am a software engineer by day, and an open source enthusiast by night. Welcome to my corner of the internet where I write about my experiences, projects, and more.",
|
||||||
|
locale: "en_GB",
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
creator: "@RealGoudham",
|
||||||
|
card: "summary_large_image",
|
||||||
|
},
|
||||||
|
themeColor: [
|
||||||
|
{ media: "(prefers-color-scheme: dark)", color: "#11111b" },
|
||||||
|
{ media: "(prefers-color-scheme: light)", color: "#eff1f5" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body
|
||||||
|
className={`${raleway.className} latte dark:mocha bg-base dark:bg-crust text-text flex flex-col h-screen overflow-auto space-y-10 pb-10`}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
<Footer />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
import { Octokit } from "octokit";
|
||||||
|
|
||||||
|
const octokit = new Octokit({
|
||||||
|
auth: process.env.REPOS_READ_ONLY,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fetchUserRepositories = async (): Promise<RepositoryData[]> => {
|
||||||
|
return await octokit.paginate(
|
||||||
|
octokit.rest.repos.listForAuthenticatedUser,
|
||||||
|
{
|
||||||
|
per_page: 100,
|
||||||
|
visibility: "public",
|
||||||
|
affiliation: "owner",
|
||||||
|
},
|
||||||
|
(response) =>
|
||||||
|
response.data.map((data) => {
|
||||||
|
return {
|
||||||
|
name: data.name,
|
||||||
|
description: data.description,
|
||||||
|
html_url: data.html_url,
|
||||||
|
size: data.size,
|
||||||
|
archived: data.archived,
|
||||||
|
fork: data.fork,
|
||||||
|
stargazers_count: data.stargazers_count,
|
||||||
|
open_issues_count: data.open_issues,
|
||||||
|
created_at: data.created_at,
|
||||||
|
updated_at: data.updated_at,
|
||||||
|
topics: data.topics,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
@ -0,0 +1,13 @@
|
|||||||
|
type RepositoryData = {
|
||||||
|
name: string;
|
||||||
|
description: string | null;
|
||||||
|
html_url: string;
|
||||||
|
size?: number;
|
||||||
|
archived?: boolean;
|
||||||
|
fork: boolean;
|
||||||
|
stargazers_count?: number;
|
||||||
|
open_issues_count?: number;
|
||||||
|
created_at: string | null | undefined;
|
||||||
|
updated_at: string | null | undefined;
|
||||||
|
topics?: string[];
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
Goudham standing in the BBC Scotland Building
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
@ -0,0 +1,18 @@
|
|||||||
|
import { Header } from "./components/Header";
|
||||||
|
import { About } from "./components/About";
|
||||||
|
import { Projects } from "./components/Projects";
|
||||||
|
import { NavBar } from "./components/Navigation";
|
||||||
|
|
||||||
|
export default function Home() {
|
||||||
|
return (
|
||||||
|
/* Inherits from the RootLayout */
|
||||||
|
<div className="flex flex-col">
|
||||||
|
<NavBar />
|
||||||
|
<div className="self-center max-w-md lg:max-w-lg xl:max-w-xl flex flex-col space-y-10 grow">
|
||||||
|
<Header />
|
||||||
|
<About />
|
||||||
|
<Projects />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
import { Metadata } from "next";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Projects by Goudham Suresh",
|
||||||
|
description:
|
||||||
|
"I am a software engineer by day, and an open source enthusiast by night. Welcome to my corner of the internet where I write about my experiences, projects, and more.",
|
||||||
|
openGraph: {
|
||||||
|
url: process.env.NEXT_PUBLIC_IS_PREVIEW
|
||||||
|
? "https://preview.goudham.com/projects"
|
||||||
|
: "https://goudham.com/projects",
|
||||||
|
title: `Projects by Goudham Suresh${
|
||||||
|
process.env.NEXT_PUBLIC_IS_PREVIEW ? " (Preview)" : ""
|
||||||
|
}`,
|
||||||
|
description:
|
||||||
|
"I am a software engineer by day, and an open source enthusiast by night. Welcome to my corner of the internet where I write about my experiences, projects, and more.",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function ProjectsLayout({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) {
|
||||||
|
return <section>{children}</section>;
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
import { fetchUserRepositories } from "../lib/api";
|
||||||
|
import { Project } from "../components/Projects";
|
||||||
|
import { Text } from "../components/utils/Text";
|
||||||
|
import { H1 } from "../components/utils/Titles";
|
||||||
|
import { NavBar } from "../components/Navigation";
|
||||||
|
|
||||||
|
export default async function Projects() {
|
||||||
|
const projects = await fetchUserRepositories().then((res) =>
|
||||||
|
res
|
||||||
|
.filter((data) => !data.fork)
|
||||||
|
.sort((a, b) => (b.stargazers_count ?? 0) - (a.stargazers_count ?? 0))
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
/* Inherits from the RootLayout */
|
||||||
|
<div className="flex flex-col">
|
||||||
|
<NavBar />
|
||||||
|
<div className="self-center max-w-md lg:max-w-lg xl:max-w-xl 2xl:max-w-4xl flex flex-col space-y-10 grow">
|
||||||
|
<H1>All Projects</H1>
|
||||||
|
<div className="flex flex-col mx-3 gap-3 text-center">
|
||||||
|
<Text>
|
||||||
|
Here's a list of all my public projects, they are sorted by
|
||||||
|
most starred. Note that some projects are still under development
|
||||||
|
and/or unfinished, but I'd like to get around to finishing them
|
||||||
|
at some point in the future!
|
||||||
|
</Text>
|
||||||
|
<Text>
|
||||||
|
I promise I'll implement sorting options soon
|
||||||
|
<span className="text-blue font-bold">™</span>
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
<div className="grid grid-cols-1 2xl:grid-cols-2 gap-y-4 gap-x-6 px-5">
|
||||||
|
{projects.map((project) => (
|
||||||
|
<div
|
||||||
|
key={project.name}
|
||||||
|
className="rounded-lg text-md lg:text-lg xl:text-xl flex justify-center"
|
||||||
|
>
|
||||||
|
<Project key={project.name} project={project} />
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
import { MetadataRoute } from 'next'
|
||||||
|
|
||||||
|
export default function robots(): MetadataRoute.Robots {
|
||||||
|
return {
|
||||||
|
rules: {
|
||||||
|
userAgent: '*',
|
||||||
|
allow: '/',
|
||||||
|
disallow: '/private/',
|
||||||
|
},
|
||||||
|
sitemap: process.env.NEXT_PUBLIC_IS_PREVIEW ? 'https://preview.goudham.com/sitemap.xml' : 'https://goudham.com/sitemap.xml',
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import { MetadataRoute } from "next";
|
||||||
|
|
||||||
|
export default function sitemap(): MetadataRoute.Sitemap {
|
||||||
|
return ["goudham.com", "goudham.com/projects"].map((url) => {
|
||||||
|
return {
|
||||||
|
url: process.env.NEXT_PUBLIC_IS_PREVIEW ? `https://preview.${url}` : `https://${url}`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
@ -1,13 +1,6 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
reactStrictMode: true,
|
|
||||||
output: "standalone",
|
output: "standalone",
|
||||||
i18n: {
|
};
|
||||||
defaultLocale: "en",
|
|
||||||
locales: [
|
|
||||||
"en"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = nextConfig
|
module.exports = nextConfig;
|
||||||
|
@ -1,31 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "goudham",
|
"name": "website",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint"
|
"lint": "next lint",
|
||||||
|
"docker:preview:build": "docker build --secret id=REPOS_READ_ONLY --build-arg='NEXT_PUBLIC_IS_PREVIEW=1' --build-arg='NEXT_PUBLIC_BUILD_SHA=5266152' --build-arg='NEXT_PUBLIC_BUILD_ID=4716419565' --build-arg='NEXT_PUBLIC_BUILD_NUM=1' -t website-preview .",
|
||||||
|
"docker:preview": "yarn docker:preview:build && docker run --rm -it -p 3000:3000 --name website website-preview:latest",
|
||||||
|
"docker:release:build": "docker build --secret id=REPOS_READ_ONLY -t website-release .",
|
||||||
|
"docker:release": "yarn docker:release:build && docker run --rm -it -p 3000:3000 --name website website-release:latest"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "18.15.11",
|
"@headlessui/react": "^1.7.16",
|
||||||
"@types/react": "18.0.35",
|
"@types/node": "20.4.5",
|
||||||
"@types/react-dom": "18.0.11",
|
"@types/react": "18.2.17",
|
||||||
"autoprefixer": "^10.4.14",
|
"@types/react-dom": "18.2.7",
|
||||||
"eslint": "8.38.0",
|
"autoprefixer": "10.4.14",
|
||||||
"eslint-config-next": "13.3.0",
|
"eslint": "8.46.0",
|
||||||
"keen-slider": "^6.8.5",
|
"eslint-config-next": "13.4.12",
|
||||||
"next": "13.3.0",
|
"next": "13.4.12",
|
||||||
"next-seo": "^6.0.0",
|
"octokit": "^3.0.0",
|
||||||
"postcss": "8.4.21",
|
"postcss": "8.4.27",
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "18.2.0",
|
"react-dom": "18.2.0",
|
||||||
"tailwindcss": "3.3.1",
|
"tailwindcss": "3.3.3",
|
||||||
"tailwindcss-animate": "^1.0.5",
|
"typescript": "5.1.6"
|
||||||
"typescript": "5.0.4"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@catppuccin/tailwindcss": "^0.1.1"
|
"@catppuccin/tailwindcss": "^0.1.6"
|
||||||
}
|
},
|
||||||
|
"packageManager": "yarn@3.6.1"
|
||||||
}
|
}
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
import { pacifico } from "@/pages/index";
|
|
||||||
import Link from "next/link";
|
|
||||||
|
|
||||||
export default function Custom404() {
|
|
||||||
return (
|
|
||||||
<div className={`flex flex-col items-center ${pacifico.variable} justify-center h-screen`}>
|
|
||||||
<div className="font-pacifico text-center leading-relaxed md:leading-normal">
|
|
||||||
<h1 className="text-3xl text-base mb-10">
|
|
||||||
404 | Page Not Found
|
|
||||||
</h1>
|
|
||||||
<h2 className="text-2xl text-crust underline">
|
|
||||||
<Link href="/">Go Back Home</Link>
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
import '@/styles/globals.css'
|
|
||||||
import type { AppProps } from 'next/app'
|
|
||||||
|
|
||||||
export const gradient: string = "bg-gradient-to-r from-red via-green to-sky animate-bg-scroll bg-600"
|
|
||||||
|
|
||||||
export default function App({ Component, pageProps }: AppProps) {
|
|
||||||
return (
|
|
||||||
<main className={`w-full h-screen ${gradient}`}>
|
|
||||||
<Component {...pageProps} />
|
|
||||||
</main>
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
import { NextSeo } from "next-seo";
|
|
||||||
|
|
||||||
export default function SEO() {
|
|
||||||
return (
|
|
||||||
<NextSeo
|
|
||||||
title="Goudham's Website"
|
|
||||||
description="Just a silly little guy living in a serious big world."
|
|
||||||
canonical="https://goudham.com"
|
|
||||||
openGraph={{
|
|
||||||
url: 'https://goudham.com',
|
|
||||||
title: "Goudham's Website",
|
|
||||||
description: "Just a silly little guy living in a serious big world.",
|
|
||||||
locale: 'en_GB',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: 'https://goudham.com/og_banner.jpeg',
|
|
||||||
alt: 'Goudham standing in the BBC Scotland Building',
|
|
||||||
type: 'image/jpeg',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
twitter={{
|
|
||||||
handle: '@RealGoudham',
|
|
||||||
cardType: 'summary_large_image',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
import { Pacifico } from 'next/font/google'
|
|
||||||
import { gradient } from "@/pages/_app";
|
|
||||||
import Head from "next/head";
|
|
||||||
import SEO from "@/pages/_seo";
|
|
||||||
|
|
||||||
export const pacifico = Pacifico({
|
|
||||||
weight: '400',
|
|
||||||
variable: '--font-pacifico',
|
|
||||||
subsets: [ 'latin' ]
|
|
||||||
})
|
|
||||||
|
|
||||||
export default function Home() {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<Head>
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/>
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/>
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/>
|
|
||||||
<link rel="manifest" href="/site.webmanifest"/>
|
|
||||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#000000"/>
|
|
||||||
<meta name="msapplication-TileColor" content="#da532c"/>
|
|
||||||
<meta name="theme-color" content="#1e1e2e"/>
|
|
||||||
</Head>
|
|
||||||
<SEO/>
|
|
||||||
<div className={`flex flex-col items-center ${pacifico.variable} justify-center h-screen`}>
|
|
||||||
<div className="font-extrabold">
|
|
||||||
<div>
|
|
||||||
<Title/>
|
|
||||||
<Body/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Title() {
|
|
||||||
return (
|
|
||||||
<div className="text-center">
|
|
||||||
<h1 className={`font-pacifico text-5xl text-crust leading-relaxed md:leading-normal mb-10`}>
|
|
||||||
Hiya 👋, I'm Goudham
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function Body() {
|
|
||||||
return (
|
|
||||||
<div className="flex flex-col items-center text-text bg-mantle rounded-lg p-5">
|
|
||||||
<div className="mb-5">
|
|
||||||
<p className={`text-transparent bg-clip-text ${gradient}`}>
|
|
||||||
<a href="https://fun.goudham.com">[Work-In-Progress]</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<SocialMedia/>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
function SocialMedia() {
|
|
||||||
const imgs: { name: string, link: string }[] = [
|
|
||||||
{
|
|
||||||
name: "GitHub",
|
|
||||||
link: "https://github.com/sgoudham",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Twitter",
|
|
||||||
link: "https://twitter.com/RealGoudham",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Twitch",
|
|
||||||
link: "https://twitch.tv/goudham",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "LinkedIn",
|
|
||||||
link: "https://linkedin.com/in/sgoudham",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className="w-full">
|
|
||||||
<ul className="flex flex-wrap items-center justify-around text-overlay2 max-[260px]:flex-col">
|
|
||||||
{imgs.map(({ name, link }) => {
|
|
||||||
return (
|
|
||||||
<li key={name}>
|
|
||||||
<a href={link} className="hover:underline">{name}</a>
|
|
||||||
</li>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 200 KiB |
@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<browserconfig>
|
|
||||||
<msapplication>
|
|
||||||
<tile>
|
|
||||||
<square150x150logo src="/mstile-150x150.png"/>
|
|
||||||
<TileColor>#da532c</TileColor>
|
|
||||||
</tile>
|
|
||||||
</msapplication>
|
|
||||||
</browserconfig>
|
|
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 282 KiB After Width: | Height: | Size: 282 KiB |
@ -1,2 +0,0 @@
|
|||||||
User-agent: *
|
|
||||||
Disallow:
|
|
@ -1,441 +0,0 @@
|
|||||||
<?xml version="1.0" standalone="no"?>
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
|
||||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
|
||||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
|
|
||||||
preserveAspectRatio="xMidYMid meet">
|
|
||||||
<metadata>
|
|
||||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
|
||||||
</metadata>
|
|
||||||
<g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)"
|
|
||||||
fill="#000000" stroke="none">
|
|
||||||
<path d="M2030 3989 c0 -4 -17 -10 -37 -14 -21 -4 -44 -11 -51 -17 -6 -6 -25
|
|
||||||
-8 -41 -5 -19 4 -33 1 -41 -8 -7 -8 -15 -13 -19 -10 -4 2 -15 -5 -24 -16 -9
|
|
||||||
-10 -13 -19 -9 -19 4 -1 -8 -7 -26 -15 -18 -8 -67 -17 -110 -21 -42 -3 -93
|
|
||||||
-14 -112 -22 -40 -19 -102 -71 -95 -82 5 -9 -60 -40 -85 -40 -10 0 -22 -4 -25
|
|
||||||
-10 -3 -5 -14 -10 -23 -10 -15 0 -16 10 -12 89 l5 88 -35 -12 -35 -12 -2 -97
|
|
||||||
c-1 -84 -4 -102 -25 -132 -12 -18 -26 -34 -29 -34 -12 0 -109 -103 -109 -115
|
|
||||||
0 -6 -22 -33 -50 -59 -43 -41 -50 -53 -50 -86 0 -21 -5 -51 -11 -67 -6 -15
|
|
||||||
-12 -37 -13 -48 -4 -33 -28 -99 -41 -115 -19 -23 -25 -70 -9 -70 8 0 14 -9 14
|
|
||||||
-20 0 -11 -4 -20 -8 -20 -4 0 -14 -15 -20 -34 -7 -19 -20 -37 -28 -40 -8 -3
|
|
||||||
-12 -10 -9 -16 4 -6 11 -8 16 -5 5 4 9 -5 9 -19 0 -14 4 -26 10 -26 5 0 7 -6
|
|
||||||
4 -13 -4 -12 -7 -35 -15 -122 -4 -41 0 -47 26 -41 14 4 25 2 25 -4 0 -5 -5
|
|
||||||
-10 -11 -10 -7 0 -9 -10 -5 -24 3 -14 2 -28 -4 -31 -5 -3 -10 -16 -10 -28 0
|
|
||||||
-12 -3 -75 -6 -141 -4 -78 -3 -116 4 -112 17 10 30 -17 41 -88 6 -44 7 -75 1
|
|
||||||
-87 -6 -10 -10 -29 -10 -43 0 -14 -5 -28 -12 -32 -7 -4 -8 -3 -4 4 4 7 2 12
|
|
||||||
-3 12 -6 0 -11 -6 -11 -14 0 -8 -2 -20 -3 -28 -2 -7 -2 -10 0 -6 2 4 11 4 20
|
|
||||||
1 12 -5 11 -8 -8 -19 -13 -7 -24 -18 -25 -26 0 -7 -2 -23 -2 -35 -2 -26 -47
|
|
||||||
-71 -79 -79 -12 -3 -24 -12 -27 -20 -7 -20 -33 -18 -44 4 -5 9 -9 115 -8 234
|
|
||||||
1 120 -2 218 -5 218 -13 0 -32 130 -36 255 -11 300 -21 638 -22 750 -2 147 -8
|
|
||||||
162 -52 118 l-32 -31 12 -274 c7 -150 16 -304 21 -343 17 -140 24 -419 10
|
|
||||||
-445 -9 -17 -12 -85 -11 -256 l2 -233 -23 -5 c-13 -3 -51 -7 -85 -9 -78 -6
|
|
||||||
-94 8 -96 87 -1 30 -7 60 -14 67 -9 9 -11 -4 -11 -54 2 -91 -5 -97 -111 -97
|
|
||||||
-49 0 -97 6 -111 13 -23 12 -25 18 -27 87 -7 301 -10 367 -21 387 -7 13 -17
|
|
||||||
66 -22 119 -5 53 -11 98 -13 100 -8 8 -35 -128 -36 -174 0 -24 -5 -49 -10 -56
|
|
||||||
-14 -16 -28 -565 -16 -613 5 -22 9 -22 178 -26 94 -2 184 -6 200 -10 20 -6 29
|
|
||||||
-3 33 8 5 12 24 15 93 15 l87 0 -4 -62 c-2 -35 -11 -82 -19 -106 -15 -41 -15
|
|
||||||
-98 2 -178 6 -29 4 -32 -24 -42 -18 -6 -44 -20 -60 -31 -23 -17 -103 -46 -247
|
|
||||||
-91 -17 -6 -40 -10 -52 -10 -34 0 -28 -23 34 -134 150 -267 317 -460 553 -639
|
|
||||||
141 -106 251 -170 268 -155 17 14 85 131 103 178 8 19 28 59 47 87 42 67 65
|
|
||||||
122 56 136 -3 6 -1 7 6 3 21 -13 63 96 61 161 -3 93 -1 103 15 103 13 0 19
|
|
||||||
-12 16 -32 0 -4 8 -9 18 -13 10 -3 21 -19 25 -35 5 -27 18 -35 48 -32 3 1 9
|
|
||||||
-6 12 -14 4 -11 2 -15 -8 -11 -20 8 -26 -14 -9 -31 7 -7 13 -19 13 -25 0 -7
|
|
||||||
-5 -6 -11 3 -9 12 -10 12 -5 -3 3 -10 6 -25 6 -33 0 -8 7 -14 17 -14 14 0 14
|
|
||||||
-2 -3 -21 -10 -11 -14 -19 -9 -17 6 2 12 -1 13 -7 2 -5 8 -18 13 -27 6 -12 6
|
|
||||||
-25 -1 -39 -22 -40 -4 -40 70 1 41 22 87 46 103 53 15 6 27 19 27 30 0 9 7 20
|
|
||||||
15 23 8 4 12 10 9 15 -3 6 0 16 6 24 18 21 -5 19 -26 -2 -10 -10 -20 -16 -23
|
|
||||||
-15 -29 18 -39 20 -49 10 -9 -9 -12 -9 -12 -1 0 7 5 15 10 18 5 3 10 11 10 17
|
|
||||||
0 7 -4 7 -13 0 -14 -12 -43 1 -34 15 3 5 -7 8 -24 7 -19 -1 -29 3 -29 12 0 8
|
|
||||||
6 14 13 14 6 1 3 6 -9 13 -12 7 -19 18 -16 26 3 8 0 11 -7 7 -6 -4 -11 -1 -11
|
|
||||||
8 0 9 -6 16 -12 16 -9 0 -8 4 2 10 8 5 11 10 5 11 -5 0 -1 4 10 9 19 8 19 9
|
|
||||||
-3 9 -13 1 -20 5 -17 11 3 6 2 10 -3 10 -14 0 -21 48 -8 54 6 2 4 5 -5 5 -19
|
|
||||||
1 -35 31 -16 31 8 0 8 3 -2 9 -7 5 -10 14 -7 20 4 6 0 11 -9 11 -9 0 -14 4
|
|
||||||
-10 9 3 5 1 12 -5 16 -6 4 -8 11 -4 16 3 5 9 7 13 5 4 -3 8 1 8 9 0 8 -4 15
|
|
||||||
-9 15 -4 0 -8 -4 -8 -9 0 -5 -7 -12 -16 -15 -12 -5 -14 -3 -8 6 16 22 16 65 0
|
|
||||||
80 -12 13 -13 19 -1 41 7 14 11 27 9 29 -2 3 0 19 5 36 7 23 6 32 -2 32 -8 0
|
|
||||||
-8 3 1 12 8 8 8 17 1 30 -7 14 -7 23 1 33 7 8 9 19 5 25 -8 13 8 13 20 1 6 -5
|
|
||||||
28 -11 50 -13 35 -3 40 -6 42 -28 2 -41 4 -46 12 -26 7 17 9 16 38 -8 34 -29
|
|
||||||
55 -34 47 -11 -4 9 -12 14 -18 13 -14 -4 -66 46 -66 63 0 8 14 10 48 6 38 -5
|
|
||||||
43 -4 25 5 -14 7 -23 20 -22 32 0 21 1 21 9 1 5 -11 9 -15 9 -10 1 6 13 11 29
|
|
||||||
12 15 1 54 5 87 8 34 4 79 2 105 -5 65 -16 90 -18 84 -9 -11 18 7 47 39 64 18
|
|
||||||
9 43 23 57 30 14 8 50 14 81 14 34 -1 69 5 87 15 36 18 39 23 17 23 -8 0 -15
|
|
||||||
-4 -15 -9 0 -4 -36 -8 -81 -8 -73 0 -85 -3 -123 -29 -35 -25 -49 -29 -83 -24
|
|
||||||
-34 4 -46 13 -71 48 -25 36 -37 44 -74 50 -23 4 -58 16 -76 27 -43 27 -51 17
|
|
||||||
-12 -15 28 -24 29 -26 8 -25 -13 1 -32 8 -43 15 -27 18 -33 16 -37 -9 -2 -13
|
|
||||||
-9 -22 -16 -20 -7 1 -13 -10 -13 -25 -2 -24 -2 -25 -6 -5 -2 12 -9 22 -14 22
|
|
||||||
-5 0 -14 10 -18 23 l-9 22 -10 -26 c-6 -14 -17 -26 -26 -26 -8 0 -13 5 -9 10
|
|
||||||
3 5 -3 6 -16 2 -15 -4 -21 -3 -19 7 2 8 -4 12 -16 10 -19 -4 -19 -2 -3 22 26
|
|
||||||
40 20 44 -12 8 -17 -17 -37 -32 -45 -32 -9 0 -16 -5 -16 -11 0 -6 -11 -25 -25
|
|
||||||
-41 -20 -24 -23 -33 -14 -44 10 -12 9 -13 -5 -8 -12 5 -17 2 -15 -7 2 -8 0
|
|
||||||
-31 -5 -53 -6 -33 -10 -37 -30 -34 -19 4 -22 1 -18 -14 2 -10 9 -15 15 -11 6
|
|
||||||
4 7 1 1 -8 -5 -8 -9 -18 -9 -23 0 -5 -6 -11 -12 -13 -16 -6 -17 9 -1 25 9 9 9
|
|
||||||
12 -3 12 -16 0 -44 39 -34 48 3 4 10 0 15 -8 6 -9 10 -10 10 -3 0 6 -5 15 -11
|
|
||||||
19 -6 3 -8 17 -4 33 5 21 4 24 -7 13 -7 -7 -13 -26 -14 -43 -1 -17 -6 -35 -11
|
|
||||||
-40 -11 -11 -11 20 0 38 4 7 0 16 -10 22 -17 10 -17 10 0 11 10 0 15 5 12 10
|
|
||||||
-4 6 -11 8 -16 5 -10 -7 -12 8 -2 18 3 4 11 -1 18 -10 11 -14 12 -14 19 3 4
|
|
||||||
10 4 15 0 11 -4 -4 -12 1 -19 9 -10 15 -14 13 -33 -11 -24 -31 -30 -22 -7 9 8
|
|
||||||
11 15 28 15 37 0 10 8 23 18 28 12 8 13 10 3 11 -8 0 -23 -7 -33 -17 -21 -19
|
|
||||||
-35 -12 -16 9 17 18 21 38 7 38 -8 0 -8 5 1 15 7 8 9 15 5 15 -4 0 -2 7 5 15
|
|
||||||
17 21 6 30 -13 10 -19 -19 -24 -19 -24 0 0 8 4 12 8 9 4 -2 10 0 14 6 3 5 -1
|
|
||||||
10 -11 10 -15 0 -15 2 0 25 15 23 15 25 0 25 -12 0 -15 6 -10 28 3 15 3 22 0
|
|
||||||
16 -5 -12 -44 -7 -44 5 1 12 27 41 33 36 4 -3 5 -2 3 1 -3 3 0 18 5 33 l9 26
|
|
||||||
-19 -25 c-11 -14 -23 -21 -28 -17 -4 5 -1 12 6 16 8 5 10 14 6 21 -6 9 -11 6
|
|
||||||
-20 -10 -12 -22 -12 -22 -11 9 0 17 6 31 11 31 6 0 3 5 -5 10 -13 8 -13 10 1
|
|
||||||
10 9 0 22 7 29 15 10 12 10 15 -4 15 -9 0 -16 -5 -16 -11 0 -5 -5 -7 -12 -3
|
|
||||||
-8 5 -2 12 17 20 25 11 20 20 -7 15 -5 0 -8 5 -8 13 0 8 -6 17 -12 19 -10 4
|
|
||||||
-9 8 2 16 13 9 13 11 -2 11 -13 0 -16 7 -13 28 2 15 6 50 9 77 5 43 29 139 67
|
|
||||||
261 5 17 9 38 9 47 0 9 6 17 14 17 9 0 12 7 9 20 -3 11 0 20 6 20 6 0 11 6 11
|
|
||||||
13 0 19 37 89 52 99 10 6 10 8 1 8 -19 0 -16 21 5 36 10 8 12 13 5 14 -16 0
|
|
||||||
-5 32 16 44 13 8 12 10 -4 17 -20 7 -20 8 0 9 l20 1 -20 9 c-17 7 -17 9 -2 9
|
|
||||||
22 1 22 18 0 25 -10 3 -6 4 9 2 36 -4 61 12 31 20 -19 5 -20 9 -10 25 6 10 17
|
|
||||||
19 24 19 7 0 13 5 13 10 0 6 -7 10 -16 10 -13 0 -14 3 -5 14 9 11 9 15 -1 19
|
|
||||||
-10 4 -10 6 0 6 7 1 20 8 28 16 9 8 24 15 35 15 10 0 19 7 19 15 0 8 3 14 8
|
|
||||||
13 4 0 15 2 26 7 21 9 36 -8 36 -42 0 -23 20 -33 20 -10 0 9 2 9 8 -1 7 -10
|
|
||||||
14 -10 38 3 16 8 43 15 59 16 24 0 26 2 11 8 -19 7 -19 8 0 16 20 9 34 11 99
|
|
||||||
14 35 2 37 3 18 11 -33 13 -29 16 20 15 39 -1 97 -21 97 -34 0 -3 38 -6 85 -6
|
|
||||||
71 0 82 -2 68 -12 -15 -12 -15 -13 4 -13 19 0 47 22 39 31 -2 2 10 5 27 5 18
|
|
||||||
1 57 3 87 4 63 3 135 -11 129 -24 -2 -5 4 -10 14 -12 9 -1 17 4 17 12 0 9 -4
|
|
||||||
12 -10 9 -5 -3 -10 1 -10 10 0 9 5 13 11 10 15 -10 79 4 79 17 0 5 -7 7 -15 4
|
|
||||||
-11 -4 -15 0 -13 11 2 9 -3 18 -10 20 -8 3 -10 -1 -5 -14 3 -10 3 -15 -1 -12
|
|
||||||
-4 4 -11 20 -15 37 -9 29 -8 30 12 23 12 -5 27 -18 33 -29 6 -12 14 -19 17
|
|
||||||
-16 4 4 21 -10 39 -30 33 -37 55 -45 76 -24 9 9 12 8 12 -7 0 -10 3 -15 7 -11
|
|
||||||
4 4 8 17 8 29 0 14 7 23 20 25 16 3 17 1 5 -7 -12 -9 -11 -11 8 -11 12 0 22
|
|
||||||
-4 22 -9 0 -13 42 -22 55 -11 6 5 17 3 28 -5 16 -11 16 -15 4 -26 -12 -11 -10
|
|
||||||
-15 11 -26 30 -16 27 -16 46 3 15 14 16 14 16 -5 0 -12 5 -18 13 -15 17 6 55
|
|
||||||
-22 43 -33 -5 -4 -11 -2 -13 5 -6 14 -23 16 -23 2 0 -10 36 -50 45 -50 3 0 5
|
|
||||||
9 5 21 0 37 20 9 21 -29 0 -29 2 -33 8 -17 7 17 9 16 15 -12 4 -18 12 -33 17
|
|
||||||
-33 5 0 9 -5 9 -10 0 -6 12 -23 26 -37 18 -18 22 -28 14 -33 -9 -6 -8 -14 5
|
|
||||||
-34 10 -14 20 -26 24 -26 4 0 7 -9 8 -20 1 -11 -2 -20 -8 -20 -5 0 -9 -7 -9
|
|
||||||
-15 0 -8 5 -15 10 -15 6 0 10 -10 9 -22 l0 -23 -9 21 c-5 12 -13 25 -18 28
|
|
||||||
-12 7 -3 -75 10 -91 5 -7 7 -17 4 -22 -4 -5 -2 -12 4 -16 5 -3 10 -15 10 -26
|
|
||||||
0 -10 6 -19 13 -19 9 0 9 -2 -1 -8 -13 -9 -7 -42 8 -42 8 0 18 -39 26 -102 3
|
|
||||||
-21 11 -55 19 -77 7 -21 10 -42 7 -46 -8 -8 -10 -105 -2 -105 8 0 5 -134 -4
|
|
||||||
-148 -4 -7 -16 -12 -27 -12 -11 0 -17 -4 -14 -10 3 -5 1 -10 -5 -10 -7 0 -10
|
|
||||||
-6 -7 -14 8 -20 -4 -28 -20 -15 -9 9 -13 8 -13 0 0 -6 5 -11 10 -11 6 0 10 -7
|
|
||||||
10 -15 0 -8 5 -15 12 -15 9 0 9 -3 1 -11 -9 -9 -8 -15 3 -26 15 -15 10 -38 -7
|
|
||||||
-28 -5 4 -9 2 -9 -4 0 -5 -8 -12 -17 -14 -11 -3 -7 -5 10 -6 28 -1 39 -21 12
|
|
||||||
-21 -8 0 -15 -4 -15 -10 0 -5 4 -10 10 -10 5 0 7 -7 4 -15 -8 -20 -24 -9 -24
|
|
||||||
16 0 10 -4 19 -10 19 -5 0 -10 -11 -10 -25 0 -14 5 -25 10 -25 6 0 10 -6 10
|
|
||||||
-14 0 -8 6 -17 13 -19 7 -4 6 -6 -5 -6 -9 -1 -18 5 -21 12 -8 22 -15 3 -10
|
|
||||||
-26 3 -15 10 -27 15 -27 5 0 6 5 2 12 -4 6 -3 8 4 5 5 -4 9 -15 7 -25 -2 -9
|
|
||||||
-4 -26 -4 -37 -1 -17 -3 -17 -11 -5 -7 12 -10 8 -10 -14 0 -16 -3 -27 -6 -23
|
|
||||||
-6 5 -9 31 -13 92 -1 15 -3 17 -10 6 -5 -7 -14 -10 -20 -7 -6 4 -9 11 -6 16 3
|
|
||||||
5 -4 8 -15 7 -19 -1 -34 -29 -29 -53 1 -5 1 -19 0 -31 -1 -17 -5 -21 -18 -16
|
|
||||||
-11 4 -14 3 -9 -5 4 -7 2 -12 -5 -12 -8 0 -9 -3 0 -13 6 -8 7 -17 3 -21 -7 -8
|
|
||||||
-9 -13 -11 -48 -2 -21 -3 -22 -15 -5 -18 23 -25 21 -19 -5 3 -16 2 -19 -4 -10
|
|
||||||
-7 8 -9 1 -9 -23 1 -21 5 -33 12 -31 6 2 11 -2 11 -10 0 -7 -4 -11 -8 -8 -4 2
|
|
||||||
-10 -2 -13 -8 -3 -9 -11 -6 -24 9 -11 12 -23 19 -27 15 -5 -4 -5 -1 -1 6 4 7
|
|
||||||
12 10 17 7 12 -8 11 6 -1 25 -6 9 -10 11 -10 3 0 -7 -7 -10 -16 -6 -13 5 -14
|
|
||||||
0 -8 -33 4 -22 11 -40 15 -42 13 -5 11 -22 -5 -37 -9 -10 -16 -11 -24 -3 -8 8
|
|
||||||
-9 5 -6 -9 3 -11 -1 -25 -10 -32 -9 -8 -16 -21 -16 -31 0 -21 -18 -30 -44 -20
|
|
||||||
-13 4 -16 9 -8 14 6 3 9 14 6 24 -2 9 2 4 10 -13 13 -26 15 -27 16 -8 0 12 7
|
|
||||||
29 16 38 21 20 10 32 -13 14 -15 -13 -16 -12 -8 6 5 11 10 40 11 64 1 24 6 46
|
|
||||||
11 50 12 8 25 41 15 40 -19 -3 -23 2 -12 17 11 13 10 16 -8 21 -12 3 -22 13
|
|
||||||
-22 23 0 10 -4 20 -8 22 -4 2 -28 29 -52 60 -24 32 -45 56 -47 54 -2 -1 3 -20
|
|
||||||
11 -42 8 -22 15 -31 15 -20 1 11 4 17 7 13 4 -3 3 -14 0 -24 -7 -17 -8 -17
|
|
||||||
-22 1 -8 11 -14 14 -14 8 0 -22 -16 -13 -28 16 -8 18 -10 20 -6 5 6 -24 -11
|
|
||||||
-32 -19 -10 -3 7 -6 5 -6 -5 -1 -9 7 -22 17 -27 9 -6 13 -10 7 -10 -23 0 -44
|
|
||||||
26 -38 48 5 21 4 22 -14 13 -22 -12 -43 1 -43 26 0 8 -9 12 -22 10 -15 -2 -26
|
|
||||||
4 -34 20 -9 18 -13 20 -17 8 -3 -8 -1 -17 6 -19 7 -3 4 -8 -7 -13 -13 -5 -21
|
|
||||||
-3 -24 4 -5 16 -29 15 -35 0 -3 -8 -6 -6 -6 5 -1 16 -3 17 -32 1 -23 -11 -34
|
|
||||||
-13 -39 -4 -5 8 -11 6 -20 -5 -7 -8 -20 -13 -30 -10 -16 5 -75 -18 -84 -34 -5
|
|
||||||
-8 30 -42 36 -35 3 2 23 -5 46 -16 22 -11 45 -20 49 -20 12 0 59 -43 66 -60 4
|
|
||||||
-11 6 -11 6 -2 1 7 9 21 18 30 15 16 16 15 10 -16 -4 -21 -3 -32 5 -32 6 0 9
|
|
||||||
3 5 6 -9 9 15 31 35 31 9 0 14 -6 11 -14 -3 -8 6 -15 26 -19 23 -5 31 -12 31
|
|
||||||
-27 0 -16 3 -18 11 -10 16 16 39 5 33 -15 -4 -13 -2 -12 11 3 16 20 16 20 21
|
|
||||||
-3 4 -12 10 -19 15 -16 5 3 9 -2 9 -11 0 -8 -7 -18 -15 -21 -8 -4 -15 -12 -15
|
|
||||||
-20 0 -8 -3 -13 -7 -13 -5 1 -15 1 -23 0 -13 -1 -13 -3 0 -10 8 -6 17 -8 21
|
|
||||||
-5 14 8 4 -135 -11 -154 -19 -23 -23 -42 -10 -42 5 0 10 7 10 16 0 9 6 14 13
|
|
||||||
12 15 -6 22 -58 7 -58 -6 0 -8 5 -5 10 15 24 -23 7 -43 -19 -18 -25 -19 -31
|
|
||||||
-7 -41 18 -15 0 -61 -21 -53 -8 3 -12 9 -9 13 3 4 -2 10 -10 14 -8 3 -12 12
|
|
||||||
-9 20 3 8 2 16 -3 19 -10 6 -11 -69 0 -79 4 -4 7 -11 7 -16 0 -4 -3 -7 -7 -6
|
|
||||||
-5 1 -20 -6 -35 -15 -14 -10 -35 -19 -46 -20 -12 0 -18 -6 -15 -14 4 -9 -6
|
|
||||||
-13 -36 -13 -23 0 -41 -3 -41 -7 0 -5 27 -8 61 -8 56 0 63 -3 85 -30 18 -23
|
|
||||||
24 -26 24 -12 0 22 32 22 65 1 27 -17 32 -51 15 -84 -10 -18 -13 -17 -47 18
|
|
||||||
-20 20 -30 28 -22 17 51 -73 47 -85 -38 -105 -32 -8 -72 -22 -90 -33 -17 -10
|
|
||||||
-44 -20 -59 -23 -16 -3 -31 -8 -34 -12 -3 -4 -17 -13 -32 -21 -33 -17 -31 -25
|
|
||||||
3 -13 48 18 117 -17 143 -73 16 -33 16 -40 2 -88 -18 -60 -23 -68 -54 -89 -22
|
|
||||||
-15 -20 -16 41 -14 52 1 69 -3 87 -19 34 -30 52 -74 48 -111 -4 -34 -4 -34 31
|
|
||||||
-28 95 15 291 67 378 100 476 177 867 523 1088 964 98 196 150 347 133 389
|
|
||||||
-19 46 -29 103 -38 201 -4 52 -13 117 -20 143 -13 51 -7 88 11 70 10 -10 16
|
|
||||||
-29 40 -128 5 -22 12 -47 16 -55 4 -8 8 -24 9 -35 1 -11 6 -42 12 -70 l9 -50
|
|
||||||
7 50 c4 28 11 68 16 90 20 90 30 303 21 433 -14 180 -20 214 -38 208 -8 -4
|
|
||||||
-19 -6 -24 -6 -6 0 -8 -4 -5 -8 7 -12 -45 -8 -70 6 -17 9 -22 24 -27 74 -6 70
|
|
||||||
-59 261 -78 285 -7 8 -18 25 -24 37 -6 11 -20 22 -33 24 -18 3 -23 -3 -28 -37
|
|
||||||
-6 -35 -9 -39 -24 -31 -20 11 -70 104 -70 130 0 21 -23 70 -32 70 -5 0 -8 9
|
|
||||||
-8 19 0 11 -7 32 -15 48 -8 15 -28 60 -45 98 -17 39 -39 88 -49 110 -29 60
|
|
||||||
-42 110 -35 128 8 21 6 21 56 -3 23 -11 43 -20 45 -20 2 0 3 16 3 36 0 32 -10
|
|
||||||
46 -93 128 -51 50 -105 97 -120 105 -15 8 -46 32 -67 53 -39 36 -101 77 -72
|
|
||||||
47 6 -7 12 -22 12 -32 0 -10 9 -21 20 -24 20 -5 24 -22 20 -72 -1 -13 3 -21 8
|
|
||||||
-17 15 9 62 -58 62 -89 0 -8 -6 -15 -12 -15 -19 0 -78 76 -78 99 0 12 -5 21
|
|
||||||
-11 21 -15 0 -56 44 -64 69 -3 10 -12 22 -20 25 -8 3 -15 15 -15 27 0 12 -8
|
|
||||||
29 -18 38 -10 9 -28 31 -41 49 -12 18 -44 43 -70 56 -42 22 -48 23 -57 9 -9
|
|
||||||
-14 -13 -14 -43 2 -26 13 -31 19 -20 26 10 6 11 11 3 19 -23 23 -414 150 -414
|
|
||||||
134 0 -3 11 -16 25 -29 l26 -23 -33 3 c-49 5 -88 22 -88 40 0 8 -9 15 -19 15
|
|
||||||
-11 0 -22 6 -24 13 -4 8 -6 7 -6 -3 -1 -9 -12 -17 -27 -18 -14 -1 -23 2 -19 8
|
|
||||||
3 6 -1 10 -9 10 -9 0 -16 4 -16 9 0 5 -41 11 -90 13 -50 2 -90 0 -90 -3z m145
|
|
||||||
-69 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z
|
|
||||||
m-327 -32 c-2 -6 -10 -14 -16 -16 -7 -2 -10 2 -6 12 7 18 28 22 22 4z m586
|
|
||||||
-54 c3 -8 2 -12 -4 -9 -6 3 -10 10 -10 16 0 14 7 11 14 -7z m100 -10 c3 -8 2
|
|
||||||
-12 -4 -9 -6 3 -10 10 -10 16 0 14 7 11 14 -7z m-411 -1 c-7 -2 -21 -2 -30 0
|
|
||||||
-10 3 -4 5 12 5 17 0 24 -2 18 -5z m-56 -9 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6
|
|
||||||
6 11 1 17 -2 13 -5z m393 -25 c0 -6 -4 -7 -10 -4 -5 3 -10 11 -10 16 0 6 5 7
|
|
||||||
10 4 6 -3 10 -11 10 -16z m54 13 c3 -5 -1 -9 -9 -9 -8 0 -12 4 -9 9 3 4 7 8 9
|
|
||||||
8 2 0 6 -4 9 -8z m-747 -18 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13
|
|
||||||
-5z m1151 -91 c-6 -31 -27 -24 -37 13 -6 20 -8 41 -5 46 8 13 46 -39 42 -59z
|
|
||||||
m-61 25 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-20 -11 c-6
|
|
||||||
-20 -27 -19 -27 2 0 14 5 19 15 14 9 -3 14 -10 12 -16z m59 -75 c-4 -3 -11 0
|
|
||||||
-16 8 -15 24 -11 33 6 15 9 -9 13 -19 10 -23z m54 8 c0 -5 -4 -10 -10 -10 -5
|
|
||||||
0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m-453 -46 c-3 -3 -12 -4 -19
|
|
||||||
-1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m23 -24 c0 -5 -2 -10 -4 -10 -3 0 -8 5
|
|
||||||
-11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m-949 -23 c-10 -9 -11 -8 -5 6 3 10
|
|
||||||
9 15 12 12 3 -3 0 -11 -7 -18z m929 -28 c0 -6 -4 -7 -10 -4 -5 3 -10 11 -10
|
|
||||||
16 0 6 5 7 10 4 6 -3 10 -11 10 -16z m-481 -79 c-1 -11 -3 -10 -6 3 -2 9 -13
|
|
||||||
17 -23 17 -10 0 -22 5 -26 12 -5 8 -2 9 10 5 14 -6 17 -3 12 10 -4 11 1 8 14
|
|
||||||
-7 11 -14 19 -32 19 -40z m374 20 c-7 -8 -22 24 -16 34 4 5 10 1 13 -10 4 -10
|
|
||||||
6 -21 3 -24z m101 24 c5 -14 4 -15 -9 -4 -17 14 -19 20 -6 20 5 0 12 -7 15
|
|
||||||
-16z m-381 -21 c-7 -2 -19 -2 -25 0 -7 3 -2 5 12 5 14 0 19 -2 13 -5z m-65
|
|
||||||
-44 c-3 -8 -7 -3 -11 10 -4 17 -3 21 5 13 5 -5 8 -16 6 -23z m292 5 c0 -8 4
|
|
||||||
-13 8 -10 5 3 9 -2 9 -11 0 -12 -5 -11 -19 7 -19 24 -24 45 -8 35 6 -3 10 -13
|
|
||||||
10 -21z m-820 2 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0
|
|
||||||
10 -2 10 -4z m54 -9 c-3 -8 -11 -14 -18 -14 -8 0 -12 6 -9 14 3 7 11 13 19 13
|
|
||||||
7 0 11 -6 8 -13z m323 -9 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z
|
|
||||||
m-230 6 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m-197 -24 c-20
|
|
||||||
-13 -33 -13 -25 0 3 6 14 10 23 10 15 0 15 -2 2 -10z m208 -5 c-2 -1 -13 -7
|
|
||||||
-25 -14 -19 -9 -22 -8 -20 7 1 14 7 17 24 14 13 -2 23 -6 21 -7z m559 9 c-3
|
|
||||||
-3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m817 -9 c3 -8 1 -15 -4 -15
|
|
||||||
-6 0 -10 7 -10 15 0 8 2 15 4 15 2 0 6 -7 10 -15z m-1771 -32 c-7 -3 -15 -4
|
|
||||||
-18 -3 -3 0 -13 -6 -21 -15 -9 -8 -20 -15 -26 -15 -13 0 30 35 52 42 8 3 17 3
|
|
||||||
20 0 3 -2 -1 -7 -7 -9z m638 -10 c13 -16 12 -17 -3 -4 -10 7 -18 15 -18 17 0
|
|
||||||
8 8 3 21 -13z m789 -13 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10
|
|
||||||
6 0 11 -4 11 -10z m-1060 -15 c0 -8 -8 -15 -17 -14 -11 0 -13 3 -5 6 6 2 10 9
|
|
||||||
6 14 -3 5 0 9 5 9 6 0 11 -7 11 -15z m-450 -5 c0 -5 -4 -10 -10 -10 -5 0 -10
|
|
||||||
5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m474 -46 c8 -21 -12 -17 -24 6 -8
|
|
||||||
16 -8 18 4 14 8 -3 17 -12 20 -20z m1686 -74 c5 0 11 -13 15 -30 4 -16 11 -32
|
|
||||||
16 -35 5 -4 9 -15 9 -26 0 -10 4 -19 8 -19 5 0 15 -19 22 -42 7 -24 15 -50 18
|
|
||||||
-58 3 -8 6 -21 8 -29 1 -7 7 -18 13 -24 6 -6 11 -19 11 -29 0 -10 4 -18 10
|
|
||||||
-18 5 0 13 -18 16 -40 4 -22 9 -40 13 -40 4 0 13 -21 20 -47 7 -27 16 -59 21
|
|
||||||
-73 8 -24 54 -176 100 -327 13 -40 20 -82 17 -93 -3 -11 -1 -23 4 -26 5 -3 9
|
|
||||||
-16 9 -30 0 -14 7 -48 16 -75 14 -43 15 -60 4 -126 -8 -54 -9 -78 -1 -86 6 -6
|
|
||||||
11 -19 11 -28 0 -10 10 -25 22 -33 l22 -16 -22 0 c-19 0 -22 -5 -22 -46 0 -49
|
|
||||||
13 -84 33 -84 24 -1 54 -37 60 -73 5 -30 3 -37 -11 -37 -10 0 -23 10 -30 21
|
|
||||||
-14 21 -14 21 -33 -10 -21 -35 -42 -40 -59 -13 -10 15 -11 14 -6 -7 7 -34 -13
|
|
||||||
-71 -39 -71 -25 0 -49 40 -60 103 -4 20 -11 40 -17 43 -5 3 -7 13 -4 22 14 52
|
|
||||||
15 72 6 72 -5 0 -10 -8 -11 -17 0 -14 -2 -15 -6 -3 -13 32 -63 54 -63 27 0 -8
|
|
||||||
-9 -22 -20 -32 -20 -18 -21 -18 -53 17 -17 19 -45 42 -62 50 -33 17 -223 33
|
|
||||||
-241 21 -6 -5 -17 -25 -24 -46 -14 -43 -21 -42 -27 5 -17 122 9 251 48 241 14
|
|
||||||
-4 19 0 19 16 0 12 11 32 24 44 13 12 31 37 40 55 14 27 20 31 36 22 30 -16
|
|
||||||
35 -31 36 -108 0 -42 5 -77 12 -84 7 -7 12 -21 12 -33 0 -16 2 -17 10 -5 8 12
|
|
||||||
10 11 10 -7 0 -16 6 -23 20 -23 11 0 20 -5 20 -11 0 -6 -6 -9 -14 -6 -8 3 -17
|
|
||||||
-1 -20 -9 -3 -9 1 -14 13 -14 10 0 24 -7 31 -15 10 -12 10 -15 0 -15 -10 0 -9
|
|
||||||
-4 1 -16 12 -14 14 -14 25 1 9 12 10 25 3 42 -5 13 -9 42 -9 64 0 21 -4 39 -9
|
|
||||||
39 -5 0 -11 15 -14 33 -3 17 -10 61 -17 97 -7 36 -13 81 -14 101 0 21 -9 46
|
|
||||||
-18 56 -10 11 -18 25 -18 31 0 7 -5 12 -11 12 -7 0 -9 9 -6 22 4 14 0 26 -11
|
|
||||||
34 -16 12 -16 13 2 14 18 0 18 1 1 27 -16 23 -16 32 -5 79 11 46 16 53 34 50
|
|
||||||
12 -2 15 -1 9 1 -19 7 -16 40 6 62 10 10 20 38 23 64 5 39 3 45 -11 39 -15 -5
|
|
||||||
-15 -4 0 14 9 11 14 32 13 51 -4 36 21 54 31 22 4 -10 12 -19 18 -19 11 0 28
|
|
||||||
-45 92 -245 84 -264 101 -331 150 -615 33 -193 52 -232 74 -152 9 30 8 39 -5
|
|
||||||
49 -10 7 -20 44 -28 105 -8 52 -19 104 -25 115 -6 12 -13 49 -15 83 -3 35 -9
|
|
||||||
66 -14 69 -4 3 -9 15 -9 26 -3 33 -14 78 -29 112 -17 38 -36 132 -29 143 3 5
|
|
||||||
-1 15 -9 23 -8 8 -13 16 -11 19 5 5 -16 64 -37 104 -10 17 -29 80 -44 140 -15
|
|
||||||
60 -32 116 -39 124 -7 8 -18 62 -24 120 -9 74 -18 113 -32 132 -10 15 -19 36
|
|
||||||
-19 48 0 11 -4 20 -10 20 -18 0 -10 22 10 27 13 3 21 15 22 32 1 22 2 21 5 -6
|
|
||||||
2 -18 8 -33 13 -33z m-1678 0 c-1 -13 2 -27 8 -30 7 -4 5 -12 -6 -21 -12 -9
|
|
||||||
-15 -10 -10 -1 4 6 5 12 2 12 -2 0 -11 3 -19 6 -9 3 -17 0 -20 -8 -2 -7 -2 -2
|
|
||||||
1 12 3 14 4 32 4 41 0 11 7 16 21 15 17 -1 21 -7 19 -26z m594 -1 c14 -15 15
|
|
||||||
-20 4 -17 -16 3 -30 18 -30 31 0 11 6 8 26 -14z m808 15 c20 -8 11 -24 -12
|
|
||||||
-23 -12 0 -13 2 -3 6 11 5 11 7 0 14 -16 10 -8 12 15 3z m6 -79 c11 -13 10
|
|
||||||
-14 -4 -9 -9 3 -16 10 -16 15 0 13 6 11 20 -6z m-1422 -25 c-7 -11 -19 -20
|
|
||||||
-27 -20 -9 0 -6 7 9 20 13 11 25 20 27 20 2 0 -2 -9 -9 -20z m-518 -4 c0 -3
|
|
||||||
-4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m545 -26
|
|
||||||
c-3 -5 -14 -10 -23 -10 -15 0 -15 2 -2 10 20 13 33 13 25 0z m-8 -26 c-3 -3
|
|
||||||
-12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m353 -28 c0 -2 -11 -6 -25 -8
|
|
||||||
-13 -3 -22 -1 -19 3 5 9 44 13 44 5z m1055 -104 c-7 -8 -35 13 -35 26 0 13 3
|
|
||||||
12 19 -4 10 -10 17 -20 16 -22z m-253 -124 c-7 -7 -12 -8 -12 -2 0 6 3 14 7
|
|
||||||
17 3 4 9 5 12 2 2 -3 -1 -11 -7 -17z m168 -73 c0 -2 -10 -9 -22 -15 -22 -11
|
|
||||||
-22 -10 -4 4 21 17 26 19 26 11z m760 -380 c0 -18 -5 -25 -19 -25 -14 0 -17 6
|
|
||||||
-13 25 2 14 11 25 18 25 8 0 14 -10 14 -25z m190 -85 c0 -5 -4 -10 -10 -10 -5
|
|
||||||
0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m-100 -322 c0 -4 -7 -8 -15
|
|
||||||
-8 -10 0 -15 10 -15 28 1 26 1 26 15 8 8 -11 15 -23 15 -28z m-2986 -159 c-3
|
|
||||||
-5 -10 -7 -15 -3 -5 3 -7 10 -3 15 3 5 10 7 15 3 5 -3 7 -10 3 -15z m2631
|
|
||||||
-125 c3 -20 9 -43 12 -52 4 -13 2 -12 -10 3 -15 19 -16 18 -6 -18 6 -22 8 -41
|
|
||||||
5 -45 -8 -7 -7 -8 -35 71 -18 54 -21 70 -11 82 17 21 36 3 45 -41z m-565 -28
|
|
||||||
c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z
|
|
||||||
m-1178 -16 c9 0 31 -18 48 -40 24 -30 27 -38 13 -33 -10 3 -25 11 -33 18 -31
|
|
||||||
24 -40 27 -35 8 3 -10 -2 -3 -12 15 -12 23 -23 32 -35 29 -10 -3 -15 -1 -12 5
|
|
||||||
3 5 16 7 28 4 11 -3 28 -6 38 -6z m-865 -16 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6
|
|
||||||
6 11 1 17 -2 13 -5z m3 -24 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10
|
|
||||||
4 10 6 0 11 -4 11 -10z m620 0 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1
|
|
||||||
10 4 10 6 0 11 -4 11 -10z m1280 -57 c0 -13 -3 -13 -15 -3 -8 7 -15 16 -15 21
|
|
||||||
0 5 7 6 15 3 8 -4 15 -13 15 -21z m-1270 -12 c-7 -14 -7 -21 0 -21 5 0 10 -6
|
|
||||||
10 -14 0 -11 -5 -12 -25 -3 -19 9 -22 14 -12 22 7 6 16 19 20 29 4 10 10 16
|
|
||||||
13 13 3 -3 1 -15 -6 -26z m-183 -13 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4
|
|
||||||
-12 1 -19z m563 13 c0 -5 -9 -7 -20 -4 -11 3 -20 7 -20 9 0 2 9 4 20 4 11 0
|
|
||||||
20 -4 20 -9z m-20 -21 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2
|
|
||||||
0 4 -4 4 -10z m1716 -16 c50 6 90 -8 97 -34 3 -10 1 -38 -4 -62 -5 -23 -6 -96
|
|
||||||
-2 -160 6 -128 5 -132 -49 -107 -21 9 -23 16 -21 72 1 33 7 85 13 113 10 45 9
|
|
||||||
57 -6 79 -16 25 -22 26 -76 23 l-58 -3 0 42 c0 44 13 57 44 40 10 -5 39 -7 62
|
|
||||||
-3z m-1189 -46 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-107
|
|
||||||
-61 c0 -14 -4 -16 -19 -8 -10 6 -21 8 -23 5 -3 -3 -8 2 -12 11 -4 13 -2 14 14
|
|
||||||
5 16 -9 20 -8 20 5 0 9 -4 14 -8 11 -4 -2 -8 4 -8 15 0 19 1 18 18 -3 10 -13
|
|
||||||
18 -31 18 -41z m-1118 28 c3 -14 2 -27 -1 -30 -4 -2 -8 10 -9 26 -3 36 4 38
|
|
||||||
10 4z m82 -22 c-11 -42 -35 -74 -53 -70 -9 1 -21 -6 -27 -16 -10 -17 -11 -16
|
|
||||||
-12 12 0 17 2 30 6 29 16 -4 72 39 72 55 0 9 5 17 10 17 6 0 8 -11 4 -27z
|
|
||||||
m1436 -53 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4
|
|
||||||
10 -10z m-1410 -96 c-1 -5 -12 5 -25 21 -20 23 -27 27 -34 16 -5 -8 -11 -9
|
|
||||||
-15 -3 -4 6 1 15 10 20 13 7 23 3 41 -18 12 -15 23 -32 23 -36z m1355 26 c3
|
|
||||||
-5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m911 -27
|
|
||||||
c14 -25 12 -78 -3 -77 -7 1 -22 2 -33 3 -14 1 -20 8 -20 27 0 14 -4 23 -10 19
|
|
||||||
-5 -3 -10 0 -10 7 0 8 10 15 22 15 13 1 24 7 26 13 5 15 16 12 28 -7z m-2201
|
|
||||||
-13 c-3 -5 -10 -10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z
|
|
||||||
m-103 -41 c-9 -10 -20 -15 -25 -12 -6 3 -3 11 6 18 10 7 17 18 17 26 0 12 2
|
|
||||||
12 9 0 6 -8 3 -20 -7 -32z m1363 11 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6
|
|
||||||
2 10 4 10 3 0 8 -4 11 -10z m-128 -93 c-2 -6 -10 -13 -18 -15 -8 -3 -11 -1 -7
|
|
||||||
3 4 5 3 14 -3 21 -8 9 -5 11 11 7 11 -3 19 -10 17 -16z m-107 -39 c0 -4 -4 -8
|
|
||||||
-9 -8 -6 0 -12 4 -15 8 -3 5 1 9 9 9 8 0 15 -4 15 -9z m-60 -98 c0 -5 -5 -10
|
|
||||||
-11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m-880 -54 c0 -2 -7
|
|
||||||
-6 -15 -10 -8 -3 -15 -1 -15 4 0 6 7 10 15 10 8 0 15 -2 15 -4z m985 -416 c-3
|
|
||||||
-5 -16 -10 -28 -10 -18 0 -19 2 -7 10 20 13 43 13 35 0z"/>
|
|
||||||
<path d="M3325 3180 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
|
|
||||||
-7 -4 -4 -10z"/>
|
|
||||||
<path d="M3335 2448 c4 -18 13 -63 19 -99 12 -73 27 -98 60 -100 17 -1 17 -2
|
|
||||||
4 -6 -22 -6 -22 -18 0 -129 10 -49 19 -111 20 -138 1 -34 8 -56 21 -70 11 -12
|
|
||||||
23 -33 26 -48 8 -30 25 -38 25 -13 0 8 5 15 10 15 6 0 10 16 10 36 0 21 -4 33
|
|
||||||
-10 29 -6 -4 -10 11 -10 39 0 24 -5 57 -11 73 -13 33 -22 87 -21 123 0 14 -7
|
|
||||||
33 -16 44 -12 12 -17 37 -18 80 -1 69 -26 132 -68 171 -37 35 -50 32 -41 -7z"/>
|
|
||||||
<path d="M3182 2055 c0 -16 2 -22 5 -12 2 9 2 23 0 30 -3 6 -5 -1 -5 -18z"/>
|
|
||||||
<path d="M3147 1893 c-4 -3 -7 -11 -7 -17 0 -6 5 -5 12 2 6 6 9 14 7 17 -3 3
|
|
||||||
-9 2 -12 -2z"/>
|
|
||||||
<path d="M3110 3559 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
|
|
||||||
-5 -10 -11z"/>
|
|
||||||
<path d="M2120 2975 c0 -8 4 -15 10 -15 5 0 7 7 4 15 -4 8 -8 15 -10 15 -2 0
|
|
||||||
-4 -7 -4 -15z"/>
|
|
||||||
<path d="M2489 2982 c11 -8 11 -10 0 -15 -10 -4 -8 -6 4 -6 21 -1 18 21 -4 27
|
|
||||||
-12 3 -12 2 0 -6z"/>
|
|
||||||
<path d="M3715 2980 c-9 -15 -1 -23 21 -18 15 3 16 4 1 16 -11 9 -17 10 -22 2z"/>
|
|
||||||
<path d="M2068 2963 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
|
|
||||||
<path d="M3591 2957 c-16 -16 -13 -41 7 -68 10 -13 26 -43 36 -66 11 -24 22
|
|
||||||
-43 27 -43 10 0 17 93 8 105 -4 6 -9 23 -11 39 -2 22 -10 31 -30 37 -15 4 -31
|
|
||||||
2 -37 -4z"/>
|
|
||||||
<path d="M2058 2933 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
|
|
||||||
<path d="M2681 2884 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
|
|
||||||
<path d="M3837 2745 c7 -64 12 -83 26 -97 22 -24 36 -77 27 -106 -5 -15 -11
|
|
||||||
-39 -14 -54 -4 -16 -13 -28 -21 -28 -18 0 -20 -17 -2 -23 9 -3 9 -7 -1 -19
|
|
||||||
-11 -14 -9 -17 15 -25 37 -13 83 2 83 27 0 29 -68 254 -94 312 l-24 53 5 -40z"/>
|
|
||||||
<path d="M1373 2423 c9 -2 23 -2 30 0 6 3 -1 5 -18 5 -16 0 -22 -2 -12 -5z"/>
|
|
||||||
<path d="M1267 2398 c-31 -11 -55 -24 -52 -29 3 -5 -7 -7 -22 -5 -15 2 -20 1
|
|
||||||
-10 -1 27 -7 20 -23 -10 -24 -16 0 -22 -3 -15 -6 8 -3 5 -11 -12 -24 -25 -20
|
|
||||||
-31 -53 -13 -76 5 -7 6 -20 3 -29 -9 -22 47 -76 70 -67 13 5 16 3 11 -10 -3
|
|
||||||
-9 -2 -17 2 -17 5 0 11 7 15 15 4 11 13 14 29 9 14 -3 44 0 68 7 24 7 66 12
|
|
||||||
93 11 27 -1 56 4 64 11 11 8 14 8 9 0 -4 -6 -3 -14 2 -17 5 -4 12 -2 16 4 3 5
|
|
||||||
13 10 21 10 10 0 12 -5 8 -12 -6 -10 -4 -10 7 -2 16 13 48 11 134 -6 62 -12
|
|
||||||
121 -47 98 -57 -7 -2 -13 -10 -13 -16 0 -6 12 0 26 14 19 16 28 20 31 11 7
|
|
||||||
-18 23 -4 23 20 0 45 -100 113 -112 76 -3 -8 -19 -5 -54 12 -43 21 -63 23
|
|
||||||
-174 23 -132 0 -133 0 -194 -26 -47 -21 -52 -21 -60 -1 -9 22 -8 24 10 24 13
|
|
||||||
0 14 3 5 13 -13 17 -5 27 22 27 12 0 17 5 14 14 -7 17 35 30 64 21 12 -4 18
|
|
||||||
-2 17 5 -2 7 7 16 20 21 12 4 22 5 22 1 0 -4 32 -6 71 -5 63 2 74 -1 95 -23
|
|
||||||
14 -13 31 -24 39 -24 9 0 32 -9 52 -20 41 -22 73 -26 73 -10 0 6 9 1 20 -10
|
|
||||||
22 -22 40 -26 40 -10 0 6 -4 10 -10 10 -5 0 -7 7 -4 15 4 8 13 15 21 15 8 0
|
|
||||||
12 -4 9 -9 -3 -5 5 -11 18 -13 31 -6 24 15 -9 30 -17 8 -26 8 -31 1 -3 -6 -12
|
|
||||||
-2 -21 10 -8 12 -18 19 -23 16 -4 -3 -10 0 -12 6 -2 6 -25 13 -52 16 -31 4
|
|
||||||
-43 9 -34 14 10 7 9 9 -4 9 -10 0 -18 5 -18 11 0 6 -9 8 -21 4 -15 -5 -19 -4
|
|
||||||
-15 4 4 6 2 11 -3 11 -6 0 -11 -6 -11 -12 0 -7 -5 -5 -11 5 -6 9 -14 15 -19
|
|
||||||
12 -5 -3 -20 -1 -32 6 -30 16 -151 23 -142 8 4 -8 1 -8 -12 -1 -11 5 -25 7
|
|
||||||
-33 4 -10 -3 -12 0 -8 12 8 20 -1 19 -76 -6z m188 -28 c4 -6 -6 -10 -22 -9
|
|
||||||
-25 0 -26 1 -8 9 11 5 21 9 22 9 1 1 5 -3 8 -9z m35 0 c0 -5 -5 -10 -11 -10
|
|
||||||
-5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m-147 -17 c-7 -2 -19 -2 -25
|
|
||||||
0 -7 3 -2 5 12 5 14 0 19 -2 13 -5z m17 -17 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1
|
|
||||||
-10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m438 -84 c6 -18 -15 -14 -22 4 -4 10
|
|
||||||
-1 14 6 12 6 -2 14 -10 16 -16z m-128 -82 c13 -8 13 -10 -2 -10 -9 0 -20 5
|
|
||||||
-23 10 -8 13 5 13 25 0z m143 -24 c3 -7 2 -18 -3 -25 -6 -10 -14 -7 -34 10
|
|
||||||
-36 32 -35 51 3 38 16 -6 32 -16 34 -23z"/>
|
|
||||||
<path d="M2428 2278 c-2 -5 -37 -9 -78 -11 -49 -2 -74 -7 -73 -14 2 -7 -6 -14
|
|
||||||
-16 -18 -10 -3 -26 -13 -34 -23 -15 -17 -14 -18 16 -19 26 -2 28 0 12 7 -18 8
|
|
||||||
-17 9 7 7 15 -1 24 -5 22 -9 -6 -9 71 1 104 13 15 6 21 5 17 -1 -3 -6 -2 -10
|
|
||||||
4 -10 5 0 14 7 19 16 9 15 12 15 40 1 18 -8 41 -13 53 -10 17 5 20 3 14 -7 -6
|
|
||||||
-10 -1 -12 20 -7 18 3 34 -1 42 -9 8 -8 26 -17 41 -20 15 -4 48 -19 73 -35 25
|
|
||||||
-16 49 -29 53 -29 4 0 14 -7 22 -15 14 -13 12 -15 -18 -16 -28 -2 -29 -2 -8
|
|
||||||
-7 23 -4 24 -5 5 -13 -18 -7 -18 -8 5 -9 l25 -2 -25 -8 c-23 -7 -23 -8 -3 -9
|
|
||||||
12 -1 24 -5 27 -9 3 -5 -20 -8 -52 -6 -49 2 -58 6 -62 24 -5 21 -43 39 -161
|
|
||||||
76 -46 14 -139 25 -210 25 -52 0 -149 -62 -149 -96 0 -32 8 -32 20 1 6 14 14
|
|
||||||
22 20 19 5 -3 10 -1 10 5 0 11 114 13 134 2 4 -2 33 -5 63 -6 40 -1 58 -6 68
|
|
||||||
-19 7 -10 16 -14 19 -9 4 6 21 7 43 2 21 -5 39 -7 41 -5 2 2 15 -3 29 -10 15
|
|
||||||
-8 30 -12 35 -9 4 3 8 1 8 -5 0 -13 53 -24 111 -24 65 0 126 43 125 87 -1 17
|
|
||||||
-5 37 -9 44 -5 6 -5 12 0 13 4 1 -3 4 -16 8 -13 3 -29 15 -35 26 -19 34 -69
|
|
||||||
76 -83 70 -8 -3 -18 -5 -21 -6 -4 -1 4 -5 18 -10 l25 -8 -25 2 c-36 2 -54 -11
|
|
||||||
-39 -29 8 -10 8 -14 0 -14 -6 0 -11 5 -11 11 0 5 -4 7 -10 4 -5 -3 -10 -1 -10
|
|
||||||
5 0 6 -5 8 -10 5 -13 -8 -38 16 -33 31 2 7 -3 14 -12 17 -8 4 -15 1 -15 -6 0
|
|
||||||
-7 -5 -4 -11 6 -5 9 -15 17 -20 17 -6 0 -7 -5 -4 -11 4 -5 -9 -3 -28 5 -20 8
|
|
||||||
-39 11 -43 8 -4 -4 -5 0 -1 9 4 13 -2 18 -29 21 -18 2 -35 0 -36 -4z m338 -97
|
|
||||||
c-3 -5 -15 -7 -26 -4 -28 7 -25 13 6 13 14 0 23 -4 20 -9z m-1 -31 c3 -5 2
|
|
||||||
-10 -4 -10 -5 0 -13 5 -16 10 -3 6 -2 10 4 10 5 0 13 -4 16 -10z"/>
|
|
||||||
<path d="M2510 2286 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
|
|
||||||
13z"/>
|
|
||||||
<path d="M2670 2286 c0 -1 11 -15 25 -30 22 -24 45 -34 45 -20 0 10 -28 34
|
|
||||||
-39 34 -6 0 -11 5 -11 10 0 6 -4 10 -10 10 -5 0 -10 -2 -10 -4z"/>
|
|
||||||
<path d="M2650 2240 c0 -5 7 -10 15 -10 8 0 15 5 15 10 0 6 -7 10 -15 10 -8 0
|
|
||||||
-15 -4 -15 -10z"/>
|
|
||||||
<path d="M2690 2220 c0 -6 -8 -10 -17 -8 -10 1 -20 -1 -23 -6 -3 -5 5 -10 16
|
|
||||||
-12 25 -4 51 20 34 31 -5 3 -10 1 -10 -5z"/>
|
|
||||||
<path d="M2152 2194 c-7 -8 -8 -14 -3 -14 10 0 25 19 20 25 -2 1 -10 -3 -17
|
|
||||||
-11z"/>
|
|
||||||
<path d="M2154 2113 c-26 -28 -31 -43 -13 -43 6 0 13 9 16 20 3 10 17 23 31
|
|
||||||
28 22 7 23 9 8 15 -11 5 -25 -2 -42 -20z"/>
|
|
||||||
<path d="M1380 2120 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
|
|
||||||
-4 -4 -4 -10z"/>
|
|
||||||
<path d="M2727 2089 c7 -7 15 -10 18 -7 3 3 -2 9 -12 12 -14 6 -15 5 -6 -5z"/>
|
|
||||||
<path d="M1820 2048 c0 -19 2 -20 10 -8 13 19 13 30 0 30 -5 0 -10 -10 -10
|
|
||||||
-22z"/>
|
|
||||||
<path d="M2120 2039 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
|
|
||||||
-5 -10 -11z"/>
|
|
||||||
<path d="M1453 1694 c-15 -16 -16 -24 -4 -24 8 0 24 30 19 35 -2 2 -9 -3 -15
|
|
||||||
-11z"/>
|
|
||||||
<path d="M2825 1679 c-11 -16 -1 -19 13 -3 7 8 8 14 3 14 -5 0 -13 -5 -16 -11z"/>
|
|
||||||
<path d="M1440 1625 c7 -8 20 -14 29 -14 13 1 13 2 -1 6 -10 2 -18 9 -18 14 0
|
|
||||||
5 -5 9 -11 9 -8 0 -8 -5 1 -15z"/>
|
|
||||||
<path d="M1531 1614 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
|
|
||||||
<path d="M1250 1540 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
|
|
||||||
-10 -4 -10 -10z"/>
|
|
||||||
<path d="M1235 1481 c-9 -40 -8 -44 8 -47 9 -1 12 9 10 34 -3 46 -10 50 -18
|
|
||||||
13z"/>
|
|
||||||
<path d="M1690 1399 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
|
|
||||||
-5 -10 -11z"/>
|
|
||||||
<path d="M2585 1370 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
|
|
||||||
-8 -4 -11 -10z"/>
|
|
||||||
<path d="M1670 1310 c0 -7 -7 -9 -16 -6 -14 5 -15 4 -4 -9 7 -9 16 -12 19 -8
|
|
||||||
3 4 10 11 15 14 4 4 3 10 -3 13 -6 4 -11 2 -11 -4z"/>
|
|
||||||
<path d="M2213 1274 c-4 -10 -10 -11 -25 -3 -13 7 -24 7 -30 1 -17 -17 35 -22
|
|
||||||
82 -7 25 7 41 15 35 16 -37 7 -57 5 -62 -7z"/>
|
|
||||||
<path d="M2562 1255 c0 -16 2 -22 5 -12 2 9 2 23 0 30 -3 6 -5 -1 -5 -18z"/>
|
|
||||||
<path d="M1738 1263 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
|
|
||||||
<path d="M2085 1240 c-4 -6 2 -9 14 -7 29 4 39 17 13 17 -11 0 -24 -5 -27 -10z"/>
|
|
||||||
<path d="M1940 1220 c0 -5 7 -10 15 -10 8 0 15 5 15 10 0 6 -7 10 -15 10 -8 0
|
|
||||||
-15 -4 -15 -10z"/>
|
|
||||||
<path d="M2038 1223 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
|
|
||||||
<path d="M2030 1170 c-9 -6 -10 -10 -3 -10 6 0 15 5 18 10 8 12 4 12 -15 0z"/>
|
|
||||||
<path d="M1630 980 c-8 -5 -10 -10 -5 -10 6 0 17 5 25 10 8 5 11 10 5 10 -5 0
|
|
||||||
-17 -5 -25 -10z"/>
|
|
||||||
<path d="M1900 951 c0 -6 -8 -11 -17 -11 -13 0 -14 -3 -6 -11 9 -9 16 -8 27 4
|
|
||||||
10 10 12 18 6 22 -5 3 -10 1 -10 -4z"/>
|
|
||||||
<path d="M2272 928 c1 -20 5 -35 9 -33 7 5 3 54 -6 63 -3 3 -5 -10 -3 -30z"/>
|
|
||||||
<path d="M1990 930 c6 -11 13 -20 16 -20 2 0 0 9 -6 20 -6 11 -13 20 -16 20
|
|
||||||
-2 0 0 -9 6 -20z"/>
|
|
||||||
<path d="M2086 931 c-3 -5 1 -11 9 -14 9 -4 12 -1 8 9 -6 16 -10 17 -17 5z"/>
|
|
||||||
<path d="M1922 922 c-9 -6 -7 -14 8 -30 33 -35 56 -21 29 18 -8 11 -9 9 -3
|
|
||||||
-10 6 -22 5 -24 -10 -11 -9 8 -15 20 -12 28 6 15 5 15 -12 5z"/>
|
|
||||||
<path d="M1856 911 c-3 -5 1 -11 9 -15 8 -3 15 -1 15 4 0 13 -18 22 -24 11z"/>
|
|
||||||
<path d="M2028 915 c-11 -11 3 -35 21 -35 10 0 12 3 5 8 -6 4 -13 13 -15 20
|
|
||||||
-3 7 -7 10 -11 7z"/>
|
|
||||||
<path d="M1900 890 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
|
|
||||||
-4 -4 -4 -10z"/>
|
|
||||||
<path d="M2295 889 c-4 -6 -5 -12 -2 -15 2 -3 7 2 10 11 7 17 1 20 -8 4z"/>
|
|
||||||
<path d="M2010 740 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
|
|
||||||
-4 -4 -4 -10z"/>
|
|
||||||
<path d="M1891 731 c-14 -4 -26 -12 -29 -20 -3 -10 0 -11 17 -2 12 7 25 10 30
|
|
||||||
7 5 -3 14 1 21 9 14 17 4 18 -39 6z"/>
|
|
||||||
<path d="M1798 713 c-16 -4 -33 -32 -24 -40 2 -3 13 0 23 6 10 6 14 11 9 11
|
|
||||||
-5 0 -3 7 4 15 7 8 11 14 9 14 -2 -1 -11 -3 -21 -6z"/>
|
|
||||||
<path d="M1700 654 c0 -13 3 -14 15 -4 8 6 20 8 26 4 8 -4 9 -3 5 4 -11 18
|
|
||||||
-46 14 -46 -4z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 30 KiB |
@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Goudham's Website",
|
|
||||||
"short_name": "Goudham's Website",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "/android-chrome-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "/android-chrome-384x384.png",
|
|
||||||
"sizes": "384x384",
|
|
||||||
"type": "image/png"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"theme_color": "#1e1e2e",
|
|
||||||
"background_color": "#1e1e2e",
|
|
||||||
"display": "standalone"
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
@tailwind base;
|
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
|
@ -1,40 +1,38 @@
|
|||||||
|
const plugin = require("tailwindcss/plugin");
|
||||||
|
|
||||||
/** @type {import('tailwindcss').Config} */
|
/** @type {import('tailwindcss').Config} */
|
||||||
module.exports = {
|
module.exports = {
|
||||||
content: [
|
content: [
|
||||||
'./pages/**/*.{js,ts,jsx,tsx}',
|
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
|
||||||
'./components/**/*.{js,ts,jsx,tsx}',
|
"./components/**/*.{js,ts,jsx,tsx,mdx}",
|
||||||
'./app/**/*.{js,ts,jsx,tsx}',
|
"./app/**/*.{js,ts,jsx,tsx,mdx}",
|
||||||
],
|
],
|
||||||
|
|
||||||
theme: {
|
theme: {
|
||||||
extend: {
|
extend: {
|
||||||
fontFamily: {
|
keyframes: {
|
||||||
pacifico: ['var(--font-pacifico)', 'cursive']
|
wave: {
|
||||||
|
"0%": { transform: "rotate(0.0deg)" },
|
||||||
|
"10%": { transform: "rotate(14deg)" },
|
||||||
|
"20%": { transform: "rotate(-8deg)" },
|
||||||
|
"30%": { transform: "rotate(14deg)" },
|
||||||
|
"40%": { transform: "rotate(-4deg)" },
|
||||||
|
"50%": { transform: "rotate(10.0deg)" },
|
||||||
|
"60%": { transform: "rotate(0.0deg)" },
|
||||||
|
"100%": { transform: "rotate(0.0deg)" },
|
||||||
},
|
},
|
||||||
|
|
||||||
"backgroundSize": {
|
|
||||||
"600": "600%"
|
|
||||||
},
|
},
|
||||||
animation: {
|
animation: {
|
||||||
"bg-scroll": "bgscroll 15s ease infinite"
|
"waving-hand": "wave 2s linear infinite",
|
||||||
},
|
},
|
||||||
keyframes: {
|
|
||||||
"bgscroll": {
|
|
||||||
"0%, 100%": {
|
|
||||||
"background-position": "0 50%"
|
|
||||||
},
|
|
||||||
"50%": {
|
|
||||||
"background-position": "100% 50%"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
require('@catppuccin/tailwindcss')({
|
require("@catppuccin/tailwindcss")({
|
||||||
prefix: false,
|
// which flavour of colours to use by default, in the `:root`
|
||||||
defaultFlavour: "mocha"
|
defaultFlavour: "latte",
|
||||||
|
}),
|
||||||
|
plugin(function ({ addVariant }) {
|
||||||
|
addVariant("hocus", ["&:hover", "&:focus"]);
|
||||||
}),
|
}),
|
||||||
require('tailwindcss-animate')
|
|
||||||
],
|
],
|
||||||
}
|
};
|
||||||
|