Compare commits
5 Commits
170ede89f8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61f7e20dbd | ||
|
|
f72038a76e | ||
|
|
d2cd2affd4 | ||
|
|
95d9a50c02 | ||
|
|
463540770a |
2
.github/workflows/deploy.yml
vendored
2
.github/workflows/deploy.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
- name: install
|
||||
run: |
|
||||
APP_DIR=/var/docker-web/store/${GITHUB_REPOSITORY##*/}
|
||||
APP_DIR=/var/docker-web/apps/${GITHUB_REPOSITORY##*/}
|
||||
mkdir -p $APP_DIR
|
||||
cp -a $(find . -mindepth 1 -maxdepth 1 ! -name '.git' ! -name 'node_modules') "$APP_DIR/"
|
||||
- name: up
|
||||
|
||||
78
README.md
78
README.md
@@ -1,75 +1,5 @@
|
||||
# Nuxt Minimal Starter
|
||||
# TODO
|
||||
|
||||
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure to install dependencies:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm install
|
||||
|
||||
# pnpm
|
||||
pnpm install
|
||||
|
||||
# yarn
|
||||
yarn install
|
||||
|
||||
# bun
|
||||
bun install
|
||||
```
|
||||
|
||||
## Development Server
|
||||
|
||||
Start the development server on `http://localhost:3000`:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run dev
|
||||
|
||||
# pnpm
|
||||
pnpm dev
|
||||
|
||||
# yarn
|
||||
yarn dev
|
||||
|
||||
# bun
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Production
|
||||
|
||||
Build the application for production:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run build
|
||||
|
||||
# pnpm
|
||||
pnpm build
|
||||
|
||||
# yarn
|
||||
yarn build
|
||||
|
||||
# bun
|
||||
bun run build
|
||||
```
|
||||
|
||||
Locally preview production build:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run preview
|
||||
|
||||
# pnpm
|
||||
pnpm preview
|
||||
|
||||
# yarn
|
||||
yarn preview
|
||||
|
||||
# bun
|
||||
bun run preview
|
||||
```
|
||||
|
||||
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
||||
- [ ] boost SEO with AI (générer du contenu)
|
||||
- [ ] animate logo
|
||||
- [ ] Draw UI
|
||||
|
||||
595
app/components/huggingFace.vue
Normal file
595
app/components/huggingFace.vue
Normal file
@@ -0,0 +1,595 @@
|
||||
<template>
|
||||
<div class="w-1/2 flex flex-wrap items-center gap-7 p-32">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M24.4 16.83c-.4-1.74-2.9-1.73-3.28.02a5.58 5.58 0 0 1-4.43 4.4c-1.82.31-1.82 2.92 0 3.24a5.55 5.55 0 0 1 4.43 4.4c.36 1.68 2.9 1.7 3.27.01a5.6 5.6 0 0 1 4.46-4.4c1.75-.31 1.75-2.95 0-3.26a5.68 5.68 0 0 1-4.46-4.4Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M1.83 5.84a4 4 0 0 1 4-4h14.2a4 4 0 0 1 4 4v7.9a3.66 3.66 0 0 0-4.86 2.68 3.68 3.68 0 0 1-2.22 2.7A12.76 12.76 0 0 0 3.83 13.5v5.66c0 1.1.9 2 2 2h7.9a3.82 3.82 0 0 0-.4 2h-7.5a4 4 0 0 1-4-4V5.84Zm18.88 2.44a2.82 2.82 0 1 1-5.64 0 2.82 2.82 0 0 1 5.64 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Image Generation
|
||||
</div>
|
||||
<label id="category-1" class="select-none"><input class="form-input peer sr-only hidden" type="radio" value="1">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M1.83 5.84a4 4 0 0 1 4-4h14.2a4 4 0 0 1 4 4v7.9a3.66 3.66 0 0 0-4.86 2.68 3.58 3.58 0 0 1-2.83 2.86 3.57 3.57 0 0 0-3 3.88h-7.5a4 4 0 0 1-4-4V5.84Zm8.43 10.66v-8c0-.45.52-.73.9-.5l5.97 3.65a1 1 0 0 1 0 1.7l-5.98 3.64a.59.59 0 0 1-.89-.5Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M24.4 16.83c-.4-1.74-2.9-1.73-3.28.02a5.58 5.58 0 0 1-4.43 4.4c-1.82.31-1.82 2.92 0 3.24a5.55 5.55 0 0 1 4.43 4.4c.36 1.68 2.9 1.7 3.27.01a5.6 5.6 0 0 1 4.46-4.4c1.75-.31 1.75-2.95 0-3.26a5.68 5.68 0 0 1-4.46-4.4Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Video Generation
|
||||
</div>
|
||||
</label><label id="category-2" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="2">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="m13.5 24.48-.57.01a11.55 11.55 0 1 1 11.46-10.15 3.67 3.67 0 0 0-5.22 2.52 3.58 3.58 0 0 1-2.83 2.86c-2.5.44-3.44 2.84-2.84 4.76ZM7.14 7.84a1 1 0 0 1 1-1h9.57a1 1 0 0 1 1 1V9.3a1 1 0 1 1-2 0v-.47h-2.78v8.2h.98a1 1 0 0 1 0 2H10.9a1 1 0 1 1 0-2h1.03v-8.2H9.14v.47a1 1 0 0 1-2 0V7.84Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M24.47 17.27c-.4-1.74-2.9-1.73-3.27.02a5.58 5.58 0 0 1-4.44 4.4c-1.82.32-1.82 2.93 0 3.24a5.55 5.55 0 0 1 4.43 4.4c.36 1.69 2.9 1.7 3.28.01a5.6 5.6 0 0 1 4.45-4.4c1.75-.3 1.76-2.95 0-3.25a5.68 5.68 0 0 1-4.45-4.42Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Text Generation
|
||||
</div>
|
||||
</label><label id="category-3" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="3">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M8.47 20.68v5.11a4 4 0 0 0 4 4h13.22a4 4 0 0 0 4-4V12.56a4 4 0 0 0-4-4h-4.34v5.76h6.37v2h-3.3a15 15 0 0 1-3.38 5.58c1.28 1 2.93 1.9 5.08 2.5l.97.27c-.36.77-.48 1.2-.54 1.93l-.96-.27c-2.54-.71-4.5-1.8-5.99-3.02-1.73 1.53-3.77 2.72-5.75 3.04l-.99.16c0-.85-.1-1.3-.32-1.97l.99-.16c1.45-.24 3.1-1.15 4.61-2.45-.38-.41-.72-.84-1.03-1.25H8.47Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path d="m19.27 20.19.3.35a13.84 13.84 0 0 0 2.74-4.22h-.95v.36a4 4 0 0 1-2.1 3.5Z" fill="currentColor"
|
||||
fill-opacity=".5"></path>
|
||||
<path d="m11.56 8.17 1.36 4.04h-2.81l1.35-4.04h.1Z" fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M1.77 5.84a4 4 0 0 1 4-4h11.59a4 4 0 0 1 4 4v10.84a4 4 0 0 1-4 4H5.77a4 4 0 0 1-4-4V5.84Zm7.01 10.42.87-2.57h3.7l.88 2.57h2.33l-3.7-10h-2.57l-3.73 10h2.22Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Language Translation
|
||||
</div>
|
||||
</label><label id="category-4" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="4">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="m13.52 15.5 8-8a11.32 11.32 0 1 0 0 16.01l-8-8.01Zm-.16-4.94a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M25.49 7.89a1 1 0 0 1 1.41 0 11 11 0 0 1 0 15.55 1 1 0 1 1-1.42-1.41 9 9 0 0 0 0-12.73 1 1 0 0 1 0-1.41Zm-3.78 3.78a1 1 0 0 1 1.41-.02 5.67 5.67 0 0 1 .04 8.06 1 1 0 1 1-1.41-1.42 3.67 3.67 0 0 0-.03-5.2 1 1 0 0 1-.01-1.42Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Speech Synthesis
|
||||
</div>
|
||||
</label><label id="category-5" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="5">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="m22.32 27.79 5.32-3.08v-6.25l-5.82-3.38a1 1 0 0 1-.5-.87V7.68c0-.18-.1-.35-.25-.44l-4.81-2.8a.51.51 0 0 0-.52 0l-.5-.87.5.86-4.8 2.81a.51.51 0 0 0-.26.44v6.51a1 1 0 0 1-.5.87L4.62 18.3a.51.51 0 0 0-.25.45v5.65c0 .18.1.35.26.45l4.8 2.78c.16.09.36.09.52 0l.5.86-.5-.86 5.56-3.22a1 1 0 0 1 1 0l5.82 3.37Zm.75 1.87a1.5 1.5 0 0 1-1.5 0L16 26.44l-5.06 2.93c-.78.45-1.74.45-2.52 0l.5-.86-.5.86-4.8-2.78a2.51 2.51 0 0 1-1.26-2.18v-5.65c0-.9.47-1.72 1.24-2.17l5.08-2.97V7.68c0-.89.47-1.71 1.24-2.16l4.81-2.82a2.51 2.51 0 0 1 2.54 0l4.8 2.82a2.51 2.51 0 0 1 1.25 2.16v5.96l5.57 3.24c.47.27.75.76.75 1.3V25a1.5 1.5 0 0 1-.75 1.3l-5.82 3.36Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M16 22.59a1 1 0 0 1-1-1v-3.14l-2.66-1.54a1 1 0 0 1 1-1.73L16 16.7l2.66-1.53a1 1 0 1 1 1 1.73L17 18.45v3.14a1 1 0 0 1-1 1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="m22.32 27.79 5.32-3.08v-6.25l-5.82-3.38a1 1 0 0 1-.5-.87V7.68c0-.18-.1-.35-.25-.44l-4.81-2.8a.51.51 0 0 0-.52 0l-4.8 2.8a.51.51 0 0 0-.26.44v6.51a1 1 0 0 1-.5.87L4.62 18.3a.51.51 0 0 0-.25.45v5.65c0 .18.1.35.26.45l4.8 2.78c.16.09.36.09.52 0l5.56-3.22a1 1 0 0 1 1 0l5.82 3.37ZM15 21.59a1 1 0 1 0 2 0v-3.14l2.66-1.54a1 1 0 0 0-1-1.73L16 16.7l-2.66-1.53a1 1 0 1 0-1 1.73L15 18.45v3.14Z"
|
||||
fill="currentColor" fill-opacity=".1"></path>
|
||||
</svg> 3D Modeling
|
||||
</div>
|
||||
</label><label id="category-6" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="6">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M14.83 12.09a2.74 2.74 0 0 0-2.74 2.74v6.78a2.74 2.74 0 0 0 2.74 2.75h6.78a2.74 2.74 0 0 0 2.75-2.75v-6.78a2.74 2.74 0 0 0-2.75-2.74h-6.78Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M10.6 7.64h6.6a2.72 2.72 0 0 1 2.71 2.71v1.74h-5.08a2.74 2.74 0 0 0-2.74 2.74v5.08h-1.74a2.72 2.72 0 0 1-2.7-2.7V10.6a2.96 2.96 0 0 1 2.95-2.96Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 1 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Object Detection
|
||||
</div>
|
||||
</label><label id="category-7" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="7">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M9.05 9.65a1 1 0 0 1 1-1h11.9a1 1 0 0 1 1 1v1.83a1 1 0 0 1-2 0v-.83H17v10.7h1.47a1 1 0 1 1 0 2h-5a1 1 0 0 1 0-2H15v-10.7h-3.95v.83a1 1 0 0 1-2 0V9.65Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 1 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Text Analysis
|
||||
</div>
|
||||
</label><label id="category-8" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="8">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M5.83 1.84a4 4 0 0 0-4 4v13.32a4 4 0 0 0 4 4h8.83v-.3c0-.64.24-1.24.66-1.7H5.83a2 2 0 0 1-2-2V13.5a12.84 12.84 0 0 1 13.28 5.88l3.74-3.7a5.85 5.85 0 0 1 3.17-1.64v-8.2a4 4 0 0 0-4-4H5.83Zm12.06 9.27a2.82 2.82 0 1 0 0-5.65 2.82 2.82 0 0 0 0 5.65Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M23.32 15.8a4.35 4.35 0 0 1 4.74 7.09l-5.4 5.45a1 1 0 0 1-.72.3h-4.78a1 1 0 0 1-1-1v-4.79a1 1 0 0 1 .3-.7l5.45-5.41c.4-.4.88-.73 1.4-.94Zm1.66 1.67a2.35 2.35 0 0 0-1.66.68l-5.16 5.12v3.37h3.37l5.11-5.16a2.35 2.35 0 0 0-1.66-4.01Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Image Editing
|
||||
</div>
|
||||
</label><label id="category-9" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="9">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M24.4 16.83c-.4-1.74-2.9-1.73-3.28.02a5.58 5.58 0 0 1-4.43 4.4c-1.82.31-1.82 2.92 0 3.24a5.55 5.55 0 0 1 4.43 4.4c.36 1.68 2.9 1.7 3.27.01a5.6 5.6 0 0 1 4.46-4.4c1.75-.31 1.75-2.95 0-3.26a5.68 5.68 0 0 1-4.46-4.4Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M7.06 7.94a1 1 0 0 1 1.42 0l3.44 3.44a1 1 0 0 1 0 1.42l-3.44 3.44a1 1 0 0 1-1.42-1.42L9.8 12.1 7.06 9.36a1 1 0 0 1 0-1.42Zm5.73 7.59a1 1 0 0 1 1-1h4.3a1 1 0 1 1 0 2h-4.3a1 1 0 0 1-1-1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M5.83 3.84h14.2a2 2 0 0 1 2 2v7.73c.66-.1 1.36-.02 2 .23V5.84a4 4 0 0 0-4-4H5.82a4 4 0 0 0-4 4v13.32a4 4 0 0 0 4 4h7.35c-.06-.69.07-1.39.39-2H5.83a2 2 0 0 1-2-2V5.84c0-1.1.9-2 2-2Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Code Generation
|
||||
</div>
|
||||
</label><label id="category-10" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="10">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M20.23 17.68a1.27 1.27 0 1 1-2.54 0 1.27 1.27 0 0 1 2.54 0ZM14.32 17.68a1.27 1.27 0 1 1-2.54 0 1.27 1.27 0 0 1 2.54 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M24.17 22.24h-2.59a7.87 7.87 0 0 0 2-7.8A9.93 9.93 0 0 1 13.3 10.5a9.93 9.93 0 0 1-5.15 5.3 7.9 7.9 0 0 0 5.11 8.26 3.52 3.52 0 0 0 .27 2.18 9.9 9.9 0 1 1 10.64-4Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M3.98 16.05a11.98 11.98 0 0 1 23.96.14v5.55a2 2 0 0 1-2 2h-5.88a2 2 0 0 0-1.74-1H16.7a2 2 0 0 0 0 4h1.62a2 2 0 0 0 1.74-1h5.88a4 4 0 0 0 4-4v-2.72a1.5 1.5 0 0 0 1.04-1.43v-2.66c0-.76-.57-1.4-1.31-1.49a13.98 13.98 0 0 0-27.42 0 1.5 1.5 0 0 0-1.27 1.5v2.65a1.5 1.5 0 1 0 3 0v-1.54Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Question Answering
|
||||
</div>
|
||||
</label><label id="category-11" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="11">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M11.6 12.38c-.25-.25-.6-.4-.95-.4H9.32a1.34 1.34 0 0 0-1.34 1.35v9.35a1.34 1.34 0 0 0 1.34 1.34h1.33A1.34 1.34 0 0 0 12 22.68v-9.35c0-.36-.14-.7-.4-.95ZM17.61 8.37c-.25-.25-.59-.4-.94-.4h-1.34A1.34 1.34 0 0 0 14 9.33v13.36a1.34 1.34 0 0 0 1.34 1.34h1.34A1.34 1.34 0 0 0 18 22.68V9.32c0-.36-.15-.7-.4-.95ZM23.63 16.4c-.25-.26-.6-.4-.95-.4h-1.33A1.34 1.34 0 0 0 20 17.34v5.34a1.34 1.34 0 0 0 1.34 1.34h1.33a1.34 1.34 0 0 0 1.34-1.34v-5.34c0-.36-.14-.7-.39-.95Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M7.65 2.36a5.29 5.29 0 0 0-5.29 5.29v16.7a5.29 5.29 0 0 0 5.29 5.29h16.7a5.29 5.29 0 0 0 5.29-5.29V7.65a5.29 5.29 0 0 0-5.29-5.29H7.65Zm9.96 6.01c-.25-.25-.59-.4-.94-.4h-1.34A1.34 1.34 0 0 0 14 9.33v13.36a1.34 1.34 0 0 0 1.34 1.34h1.34A1.34 1.34 0 0 0 18 22.68V9.32c0-.36-.15-.7-.4-.95Zm-6.01 4.01c-.25-.25-.6-.4-.95-.4H9.32a1.34 1.34 0 0 0-1.34 1.35v9.35a1.34 1.34 0 0 0 1.34 1.34h1.33A1.34 1.34 0 0 0 12 22.68v-9.35c0-.36-.14-.7-.4-.95ZM22.68 16a1.34 1.34 0 0 1 1.34 1.34v5.34a1.34 1.34 0 0 1-1.34 1.34h-1.33A1.34 1.34 0 0 1 20 22.68v-5.34A1.34 1.34 0 0 1 21.35 16h1.33Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
</svg> Data Visualization
|
||||
</div>
|
||||
</label><label id="category-12" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="12">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M9.95 3.85a5 5 0 0 0-5 5v6a5 5 0 0 0 7.08 4.55 10.93 10.93 0 0 1-.91-3.33 2.92 2.92 0 0 1 2.93-3.21c.32 0 .62.04.9.13V8.85a5 5 0 0 0-5-5Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M13.03 21.14a7 7 0 0 1-10-5.3c-.09-.53-.53-.99-1.08-.99s-1 .45-.95 1a9 9 0 0 0 7.95 7.95v4.34a1 1 0 1 0 2 0V23.8a8.94 8.94 0 0 0 3.4-1.1c-.49-.47-.93-1-1.32-1.56Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M21.05 23.8a9 9 0 0 1-7.94-7.95c-.06-.55.39-1 .94-1 .55 0 1 .46 1.07 1a7 7 0 0 0 13.86 0c.08-.54.52-1 1.07-1s1 .45.95 1a9 9 0 0 1-7.95 7.95v4.35a1 1 0 1 1-2 0V23.8Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M25.05 14.86v-6a3 3 0 0 0-6 0v6a3 3 0 0 0 6 0Zm-3-11a5 5 0 0 0-5 5v6a5 5 0 1 0 10 0v-6a5 5 0 0 0-5-5Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Voice Cloning
|
||||
</div>
|
||||
</label><label id="category-13" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="13">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M2.62 13.04v2.82L16.55 1.93h-2.83l-11.1 11.1ZM2.62 18.66v2.83l1.27-1.27a12.6 12.6 0 0 1 8.75-8.75l9.54-9.54h-2.83L2.62 18.66ZM3.43 23.47l-.8.82v.4c0 .7.17 1.36.49 1.93l.56-.56a12.63 12.63 0 0 1-.25-2.59ZM18.48 11.26a12.63 12.63 0 0 0-2.59-.25l9.09-9.08h.4c.7 0 1.36.18 1.93.5l-8.83 8.83ZM22.52 12.84c-.6-.37-1.22-.68-1.88-.94l8.11-8.12c.4.62.63 1.36.63 2.15v.05l-6.86 6.86ZM25.56 15.42c-.43-.5-.9-.98-1.41-1.4l5.23-5.24v2.83l-3.82 3.81ZM27.68 18.93c-.26-.66-.58-1.29-.94-1.88l2.64-2.65v2.83l-1.7 1.7ZM28.57 23.67a13.9 13.9 0 0 0-.25-2.58l1.06-1.06v2.83l-.81.81ZM27.82 27.86c.11-.31.21-.62.3-.94l1.1-1.1a4 4 0 0 1-1.4 2.04ZM10.93 1.93l-8.3 8.3V7.42L8.1 1.93h2.83ZM2.99 4.26c.4-.87 1.1-1.57 1.96-1.96L2.99 4.26Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path
|
||||
d="M20.51 24.67a1.35 1.35 0 1 1-2.7 0 1.35 1.35 0 0 1 2.7 0ZM14.2 24.67a1.35 1.35 0 1 1-2.7 0 1.35 1.35 0 0 1 2.7 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M24.57 23.58c0 1.56-.42 3.02-1.15 4.28h2.24a10.53 10.53 0 0 0 .46-7.32 10.57 10.57 0 1 0-19.79 7.32h2.25a8.53 8.53 0 0 1-1.1-5.12A10.6 10.6 0 0 0 13.11 17a10.55 10.55 0 0 0 11.1 4.18c.23.76.35 1.56.35 2.39Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Background Removal
|
||||
</div>
|
||||
</label><label id="category-14" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="14">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M22.07 2.61a1 1 0 0 1 1-1h6.3a1 1 0 0 1 1 1v6.3a1 1 0 1 1-2 0V5.04l-6.1 6.11a1 1 0 0 1-1.42-1.41l6.12-6.12h-3.9a1 1 0 0 1-1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path
|
||||
d="M23 28.39a1 1 0 1 0 0 2h6.38a1 1 0 0 0 1-1V16a1 1 0 0 0-2 0v12.39h-5.39ZM16 1.61a1 1 0 1 1 0 2H3.61v5.95a1 1 0 0 1-2 0V2.6a1 1 0 0 1 1-1H16Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M1.62 16.28c0-1.5 1.2-2.7 2.7-2.7h12.1c1.5 0 2.7 1.2 2.7 2.7v11.41c0 1.5-1.2 2.7-2.7 2.7H4.32a2.7 2.7 0 0 1-2.7-2.7V16.28Zm15.5 8.02c-1.5.47-2.9 1.22-4.1 2.18a10.06 10.06 0 0 0-9.4-3.78v5c0 .38.31.7.7.7h12.1a.7.7 0 0 0 .7-.7v-3.4Zm-.61-5.64a2.23 2.23 0 1 1-4.46 0 2.23 2.23 0 0 1 4.46 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Image Upscaling
|
||||
</div>
|
||||
</label><label id="category-15" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="15">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M5.84 1.84a4 4 0 0 0-4 4v13.32a4 4 0 0 0 4 4h14.04V19.4a3 3 0 0 1-2.08 1.25l.22.5H5.84a2 2 0 0 1-2-2V13.5a12.84 12.84 0 0 1 10.59 2.76V16a3 3 0 0 1 3-3h6.6V5.84a4 4 0 0 0-4-4H5.82Zm12.05 9.27a2.82 2.82 0 1 0 0-5.65 2.82 2.82 0 0 0 0 5.65Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M16.43 16a1 1 0 0 1 1-1h10.9a1 1 0 0 1 1 1v1.68a1 1 0 1 1-2 0V17h-3.45v9.64h1.26a1 1 0 1 1 0 2h-4.57a1 1 0 1 1 0-2h1.3V17h-3.44v.68a1 1 0 1 1-2 0V16Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> OCR
|
||||
</div>
|
||||
</label><label id="category-16" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="16">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M22.07 7.93H9.93a2 2 0 0 0-2 2v12.14c0 1.1.9 2 2 2h12.14a2 2 0 0 0 2-2V9.93a2 2 0 0 0-2-2Zm-12.14-2a4 4 0 0 0-4 4v12.14a4 4 0 0 0 4 4h12.14a4 4 0 0 0 4-4V9.93a4 4 0 0 0-4-4H9.93Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M10.8 12.02a1 1 0 0 1 1-1h8.4a1 1 0 1 1 0 2h-8.4a1 1 0 0 1-1-1ZM10.8 16a1 1 0 0 1 1-1h8.4a1 1 0 1 1 0 2h-8.4a1 1 0 0 1-1-1ZM10.8 19.98a1 1 0 0 1 1-1H16a1 1 0 1 1 0 2h-4.2a1 1 0 0 1-1-1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 1 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Document Analysis
|
||||
</div>
|
||||
</label><label id="category-17" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="17">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M20.95 18.18c-.6-.25-.85-1-.5-1.53a4.15 4.15 0 0 1 3.53-1.86c1.75 0 2.95.8 3.56 1.8.53.86.83 2.46.03 3.65-.9 1.32-1.75 1.73-2.22 2.58-.1.2-.18.36-.22.7-.07.54-.52.97-1.07.97a1.1 1.1 0 0 1-1.1-1.21c.04-.38.13-.78.34-1.15.58-1.04 1.68-1.65 2.32-2.56.68-.97.3-2.76-1.62-2.76-.88 0-1.44.45-1.8 1-.25.42-.8.56-1.25.37Zm4.53 9.29a1.5 1.5 0 0 1-2.98 0c0-.82.67-1.5 1.49-1.5s1.49.68 1.49 1.5Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M5.83 1.84a4 4 0 0 0-4 4v13.32a4 4 0 0 0 4 4h14.2a4 4 0 0 0 .94-.12 5.02 5.02 0 0 1 1.33-2.93c-.7.23-1.47.18-2.11-.08h-.01l-.02-.01a3.05 3.05 0 0 1-1.37-4.48 6.15 6.15 0 0 1 5.2-2.75h.03V5.84a4 4 0 0 0-4-4H5.83Zm.39 11.44c5.32 0 9.88 3.25 11.8 7.88H5.83a2 2 0 0 1-2-2V13.5c.78-.14 1.57-.22 2.39-.22Zm11.67-2.17a2.82 2.82 0 1 0 0-5.65 2.82 2.82 0 0 0 0 5.65Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Visual QA
|
||||
</div>
|
||||
</label><label id="category-18" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="18">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M11.4 21.75a3 3 0 0 1 3-3H27a3 3 0 0 1 3 3v5.04a3 3 0 0 1-3 3H14.4a3 3 0 0 1-3-3v-5.04Zm6.78 1.48a1.03 1.03 0 1 0 .52 1.93.75.75 0 0 1 .76 1.3 2.53 2.53 0 0 1-3.81-2.2 2.53 2.53 0 0 1 3.81-2.18.75.75 0 0 1-.76 1.3 1.03 1.03 0 0 0-.52-.15Zm4.9 1.04a1.03 1.03 0 0 1 1.55-.9.75.75 0 1 0 .76-1.29 2.53 2.53 0 0 0-3.81 2.19 2.53 2.53 0 0 0 3.81 2.19.75.75 0 0 0-.76-1.3 1.03 1.03 0 0 1-1.56-.9Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M2.08 5.84a4 4 0 0 1 4-4h14.19a4 4 0 0 1 4 4v10.9h-9.05A12.73 12.73 0 0 0 4.08 13.5v5.66c0 1.1.9 2 2 2h3.36c-.02.2-.04.39-.04.59v1.4H6.08a4 4 0 0 1-4-4V5.85Zm18.88 2.44a2.82 2.82 0 1 1-5.65 0 2.82 2.82 0 0 1 5.65 0ZM18.18 23.23a1.03 1.03 0 1 0 .53 1.93.75.75 0 0 1 .75 1.3 2.53 2.53 0 0 1-3.81-2.2 2.53 2.53 0 0 1 3.81-2.18.75.75 0 1 1-.75 1.3 1.03 1.03 0 0 0-.53-.15ZM24.11 23.23a1.03 1.03 0 1 0 .52 1.93.75.75 0 0 1 .76 1.3 2.53 2.53 0 0 1-3.81-2.2 2.53 2.53 0 0 1 3.81-2.18.75.75 0 0 1-.76 1.3 1.03 1.03 0 0 0-.52-.15Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Image Captioning
|
||||
</div>
|
||||
</label><label id="category-19" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="19">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.9 3.81a5.32 5.32 0 0 1 3.67-1.45h16.86c1.36 0 2.68.52 3.67 1.45a4.93 4.93 0 0 1 1.54 3.57V20.6c0 1.35-.56 2.63-1.54 3.57a5.32 5.32 0 0 1-3.67 1.45h-6.76l-6.79 3.89a1 1 0 0 1-1.5-.87v-3.02h-1.8a5.32 5.32 0 0 1-3.68-1.45 4.93 4.93 0 0 1-1.54-3.57V7.38c0-1.35.56-2.63 1.54-3.57Zm17.14 6.34a1.27 1.27 0 1 1-2.54 0 1.27 1.27 0 0 1 2.54 0Zm-10.81 3a1 1 0 0 1 1.41.02 6.1 6.1 0 0 0 8.72 0 1 1 0 0 1 1.43 1.4 8.1 8.1 0 0 1-11.58 0 1 1 0 0 1 .02-1.42Zm2-1.73a1.27 1.27 0 1 0 0-2.54 1.27 1.27 0 0 0 0 2.54Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M10.23 13.15a1 1 0 0 1 1.41.02 6.1 6.1 0 0 0 8.72 0 1 1 0 0 1 1.43 1.4 8.1 8.1 0 0 1-11.58 0 1 1 0 0 1 .02-1.42Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M21.04 10.15a1.27 1.27 0 1 1-2.54 0 1.27 1.27 0 0 1 2.54 0ZM13.5 10.15a1.27 1.27 0 1 1-2.54 0 1.27 1.27 0 0 1 2.54 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Chatbots
|
||||
</div>
|
||||
</label><label id="category-20" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="20">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path d="M12.67 14.32a1.03 1.03 0 1 1-2.05 0 1.03 1.03 0 0 1 2.05 0Z" fill="currentColor" fill-opacity=".8">
|
||||
</path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M15.5 5.82a1 1 0 1 0-2 0v1.06a9 9 0 0 0 0 17.88v1.05a1 1 0 1 0 2 0V5.82Zm-2 11.99V8.89a7 7 0 0 0 0 13.85v-2.9a7.53 7.53 0 0 1-3.48-1.43 1 1 0 1 1 1.2-1.6c.67.5 1.45.84 2.28 1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path d="M24.5 15.82a7 7 0 0 0-7-7v-2a9 9 0 0 1 0 17.99v-2a7 7 0 0 0 7-7Z" fill="currentColor"
|
||||
fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M18.97 15.2A1.38 1.38 0 0 0 20 12.9l-2.41.91c0 .77.62 1.38 1.38 1.38ZM17.59 19.25c.97 0 2.04.03 2.86.69a1 1 0 0 0 1.25-1.56c-1.4-1.13-3.14-1.13-4.05-1.13h-.06v2Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 1 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Sentiment Analysis
|
||||
</div>
|
||||
</label><label id="category-21" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="21">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path opacity=".5" fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M7.65 4.36a3.29 3.29 0 0 0-3.29 3.29v16.7a3.29 3.29 0 0 0 3.29 3.29h16.7a3.29 3.29 0 0 0 3.29-3.29V16a1 1 0 1 1 2 0v8.35a5.29 5.29 0 0 1-5.29 5.29H7.65a5.29 5.29 0 0 1-5.29-5.29V7.65a5.29 5.29 0 0 1 5.29-5.29H16a1 1 0 1 1 0 2H7.65Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M27.54 11.77a1 1 0 0 1-1 1h-6.31a1 1 0 0 1-1-1v-6.3a1 1 0 1 1 2 0v3.89l6.12-6.12a1 1 0 1 1 1.41 1.41l-6.12 6.12h3.9a1 1 0 0 1 1 1ZM7.67 15.64a1 1 0 0 1 1-1h8.42a1 1 0 1 1 0 2H8.67a1 1 0 0 1-1-1ZM7.67 19.62a1 1 0 0 1 1-1h8.42a1 1 0 1 1 0 2H8.67a1 1 0 0 1-1-1ZM7.67 23.6a1 1 0 0 1 1-1h4.21a1 1 0 1 1 0 2h-4.2a1 1 0 0 1-1-1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Text Summarization
|
||||
</div>
|
||||
</label><label id="category-22" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="22">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M24.16 13.86V4.19a2.22 2.22 0 0 0-2.59-2.22l-9.86 1.82a3.43 3.43 0 0 0-2.82 3.4v7.96a4.63 4.63 0 1 0 1.98 3.79V9.52l11.3-2.07v6.1c.67-.07 1.37.03 2 .31Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M15.27 19.55a4.63 4.63 0 0 1 6.42-5.92 3.55 3.55 0 0 0-2.68 2.79 3.58 3.58 0 0 1-2.83 2.86c-.33.06-.63.15-.9.27Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M24.24 16.83c-.4-1.74-2.89-1.73-3.27.02a5.58 5.58 0 0 1-4.44 4.4c-1.81.31-1.81 2.92 0 3.24a5.55 5.55 0 0 1 4.44 4.4c.36 1.68 2.9 1.7 3.27.01a5.6 5.6 0 0 1 4.46-4.4c1.75-.31 1.75-2.95 0-3.26a5.68 5.68 0 0 1-4.46-4.4Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Music Generation
|
||||
</div>
|
||||
</label><label id="category-23" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="23">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M17 6.89a1 1 0 1 0-2 0v2.3c-.35.46-.7.6-.95.6-.29 0-.7-.19-1.1-.83a1 1 0 0 0-1.7 1.06c.6.97 1.57 1.77 2.8 1.77.34 0 .65-.06.95-.16v1.31a3.7 3.7 0 0 1-4.81-.26 1 1 0 0 0-1.4 1.44A5.68 5.68 0 0 0 15 15.24V18c-.8-.05-1.55-.16-2.25-.32-1.67-.39-3.6.8-3.6 2.75 0 .85.36 1.48.87 1.93a5.68 5.68 0 0 0 1.82 1.02c.38.17.7.3 1 .47.33.2.5.39.58.57a2.83 2.83 0 0 0 5.16 0c.08-.17.25-.36.6-.56a8.86 8.86 0 0 1 1.29-.62 5.89 5.89 0 0 0 1.5-.9c.51-.44.89-1.07.89-1.9 0-1.96-1.94-3.15-3.61-2.76-.7.16-1.45.27-2.25.32v-2.76a5.72 5.72 0 0 0 6.2-1.12 1 1 0 0 0-1.38-1.44 3.7 3.7 0 0 1-4.82.26v-1.31c.3.1.61.16.95.16 1.24 0 2.2-.8 2.8-1.77a1 1 0 1 0-1.7-1.06c-.4.64-.81.83-1.1.83-.25 0-.6-.14-.95-.6v-2.3Zm2.7 12.74c.61-.15 1.16.33 1.16.8 0 .53-.66.78-1.16.97l-.29.12c-.39.17-.86.38-1.27.62-.52.31-1.07.76-1.38 1.46-.29.63-1.23.64-1.51 0a3.31 3.31 0 0 0-1.4-1.46 10.89 10.89 0 0 0-1.54-.73c-.5-.19-1.17-.43-1.17-.98 0-.47.55-.94 1.16-.8 1.14.26 2.39.4 3.7.4s2.57-.14 3.7-.4Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M20.86 20.43c0-.47-.55-.95-1.16-.8-1.13.26-2.39.4-3.7.4s-2.56-.14-3.7-.4c-.61-.14-1.16.33-1.16.8 0 .55.66.8 1.17.98l.27.11c.39.17.86.37 1.28.62.51.3 1.07.76 1.39 1.46.28.64 1.22.63 1.5 0 .32-.7.87-1.15 1.39-1.46.41-.24.88-.45 1.27-.63l.29-.1c.5-.2 1.16-.45 1.16-.98Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M7.65 2.36a5.29 5.29 0 0 0-5.29 5.29v16.7a5.29 5.29 0 0 0 5.29 5.29h16.7a5.29 5.29 0 0 0 5.29-5.29V7.65a5.29 5.29 0 0 0-5.29-5.29H7.65ZM16 5.9a1 1 0 0 1 1 1v2.3c.35.46.7.6.95.6.3 0 .7-.19 1.1-.83a1 1 0 0 1 1.7 1.06c-.6.97-1.56 1.77-2.8 1.77-.34 0-.65-.06-.95-.16v1.31a3.7 3.7 0 0 0 4.82-.26 1 1 0 0 1 1.38 1.44 5.68 5.68 0 0 1-6.2 1.12V18c.8-.05 1.55-.16 2.25-.32 1.67-.39 3.6.8 3.6 2.75 0 .84-.37 1.47-.87 1.91a5.89 5.89 0 0 1-1.8 1.03c-.4.17-.72.31-1 .49-.35.2-.52.39-.6.56a2.83 2.83 0 0 1-5.16 0c-.08-.18-.25-.36-.59-.57-.29-.17-.6-.3-1-.47l-.29-.13a5.68 5.68 0 0 1-1.52-.89 2.5 2.5 0 0 1-.88-1.93c0-1.95 1.94-3.14 3.61-2.75.7.16 1.45.27 2.25.32v-2.76a5.72 5.72 0 0 1-6.2-1.12 1 1 0 0 1 1.39-1.44 3.7 3.7 0 0 0 4.82.26v-1.31c-.3.1-.62.16-.96.16-1.23 0-2.2-.8-2.8-1.77a1 1 0 1 1 1.7-1.06c.4.64.81.83 1.1.83.25 0 .6-.14.95-.6v-2.3a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
</svg> Medical Imaging
|
||||
</div>
|
||||
</label><label id="category-24" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="24">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M16 26.57a10.57 10.57 0 1 0 0-21.14 10.57 10.57 0 0 0 0 21.14Zm.98-17.12a1 1 0 1 0-2 0v.7c-.5.12-1 .32-1.42.64a3.05 3.05 0 0 0-1.24 2.52c0 1.16.56 1.95 1.3 2.46.63.42 1.4.68 2.03.9l.14.04c.73.24 1.26.44 1.63.72.3.23.48.5.48 1.03 0 .63-.23.95-.49 1.13-.3.22-.78.34-1.36.3-1-.08-1.8-.6-2.04-1.1a1 1 0 1 0-1.81.85 4.15 4.15 0 0 0 2.78 2.08v.83a1 1 0 1 0 2 0v-.7a3.24 3.24 0 0 0 2.92-3.38c0-1.2-.51-2.05-1.26-2.62a7.51 7.51 0 0 0-2.21-1.04h-.02a6.98 6.98 0 0 1-1.65-.69c-.3-.2-.44-.4-.44-.8 0-.47.18-.74.43-.93.29-.21.72-.34 1.22-.34.78 0 1.33.31 1.5.58a1 1 0 0 0 1.7-1.06 3.38 3.38 0 0 0-2.2-1.41v-.71Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 1 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 0 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Financial Analysis
|
||||
</div>
|
||||
</label><label id="category-25" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="25">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M1.45 15.28a4.78 4.78 0 0 0 9.02 2.67l.76-1.5h4.47l.76 1.5c.18.37.4.7.67 1a3.7 3.7 0 0 0 1.88-2.53c.7-3.22 4.65-3.75 6.42-1.6l-.87-8.26a5.18 5.18 0 0 0-5.15-4.63H7.55c-2.65 0-4.86 2-5.15 4.62l-.95 8.73Zm17-3.96a2.19 2.19 0 1 0 0-4.38 2.19 2.19 0 0 0 0 4.38ZM9.73 6.67a1.35 1.35 0 1 0-2.7 0v1.1H5.91a1.35 1.35 0 0 0 0 2.71h1.1v1.11a1.35 1.35 0 1 0 2.71 0v-1.1h1.1a1.35 1.35 0 1 0 0-2.71h-1.1V6.67Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M24.24 16.83c-.4-1.74-2.89-1.73-3.27.02a5.58 5.58 0 0 1-4.44 4.4c-1.81.31-1.81 2.92 0 3.24a5.55 5.55 0 0 1 4.43 4.4c.37 1.68 2.9 1.7 3.28.01a5.6 5.6 0 0 1 4.46-4.4c1.75-.31 1.75-2.95 0-3.26a5.68 5.68 0 0 1-4.46-4.4Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Game AI
|
||||
</div>
|
||||
</label><label id="category-26" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="26">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<g opacity=".5" fill="currentColor" fill-opacity=".5">
|
||||
<path
|
||||
d="M12.8 15.18c0-1.1.9-2 2-2h2.47a2 2 0 0 1 2 2v13.37a2 2 0 0 1-2 2H14.8a2 2 0 0 1-2-2V15.18ZM22.18 22.67c0-1.1.9-2 2-2h2.46a2 2 0 0 1 2 2v5.88a2 2 0 0 1-2 2h-2.46a2 2 0 0 1-2-2v-5.88ZM3.36 19.92c0-1.1.9-2 2-2h2.46a2 2 0 0 1 2 2v8.63a2 2 0 0 1-2 2H5.36a2 2 0 0 1-2-2v-8.63Z">
|
||||
</path>
|
||||
</g>
|
||||
<path
|
||||
d="m16.48 2.23 1.13 2.28 2.5.35c.43.08.62.62.3.95L18.6 7.55l.43 2.48a.55.55 0 0 1-.8.58L16 9.45l-2.23 1.18a.56.56 0 0 1-.8-.58l.43-2.48L11.6 5.8a.55.55 0 0 1 .3-.95l2.49-.35 1.12-2.28c.2-.4.79-.4.97 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Model Benchmarking
|
||||
</div>
|
||||
</label><label id="category-27" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="27">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M15.85 8.22a2.9 2.9 0 0 1 4.79 1.06h2.99a1 1 0 1 1 0 2h-3a2.9 2.9 0 0 1-5.45 0h-6.8a1 1 0 1 1 0-2h6.8c.14-.4.37-.75.67-1.06Zm2.06 1.15a.9.9 0 1 0 0 1.82.9.9 0 0 0 0-1.82Zm-7.78 4.57A2.9 2.9 0 0 1 14.92 15h8.7a1 1 0 1 1 0 2h-8.7a2.9 2.9 0 0 1-5.46 0H8.37a1 1 0 1 1 0-2h1.09c.14-.4.37-.75.67-1.06Zm2.06 1.15a.9.9 0 1 0 0 1.82.9.9 0 0 0 0-1.82Zm6.52 4.57a2.9 2.9 0 0 1 4.79 1.06h.13a1 1 0 0 1 0 2h-.13a2.9 2.9 0 0 1-5.46 0H8.37a1 1 0 1 1 0-2h9.67c.14-.4.37-.75.67-1.05Zm2.06 1.15a.9.9 0 1 0 0 1.82.9.9 0 0 0 0-1.82Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M17.27 9.64a.9.9 0 1 1 1.28 1.28.9.9 0 0 1-1.28-1.28ZM11.54 15.36a.9.9 0 1 1 1.29 1.28.9.9 0 0 1-1.29-1.28ZM20.13 21.08a.9.9 0 1 1 1.28 1.28.9.9 0 0 1-1.28-1.28Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M2.36 7.65a5.29 5.29 0 0 1 5.29-5.29h16.7a5.29 5.29 0 0 1 5.29 5.29v16.7a5.29 5.29 0 0 1-5.29 5.29H7.65a5.29 5.29 0 0 1-5.29-5.29V7.65Zm15.55-.28a2.9 2.9 0 0 0-2.73 1.9h-6.8a1 1 0 1 0 0 2h6.8a2.9 2.9 0 0 0 5.46 0h2.99a1 1 0 1 0 0-2h-3a2.9 2.9 0 0 0-2.72-1.9Zm-5.72 5.72A2.9 2.9 0 0 0 9.46 15H8.37a1 1 0 1 0 0 2h1.09a2.9 2.9 0 0 0 5.46 0h8.7a1 1 0 1 0 0-2h-8.7a2.9 2.9 0 0 0-2.73-1.9Zm8.58 5.72a2.9 2.9 0 0 0-2.73 1.91H8.37a1 1 0 0 0 0 2h9.67a2.9 2.9 0 0 0 5.46 0h.13a1 1 0 1 0 0-2h-.13a2.9 2.9 0 0 0-2.73-1.9Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
</svg> Fine Tuning Tools
|
||||
</div>
|
||||
</label><label id="category-28" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="28">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M16 3c-3.42 0-6.56.61-8.9 1.65a9.05 9.05 0 0 0-2.88 1.92A4.02 4.02 0 0 0 3 9.33v13.34c0 1.06.49 2 1.22 2.76.72.76 1.73 1.4 2.89 1.92A22.53 22.53 0 0 0 16 29a1 1 0 1 0 0-2c-3.2 0-6.06-.58-8.08-1.48a7.1 7.1 0 0 1-2.25-1.47c-.49-.5-.67-.97-.67-1.38v-3.2c.6.46 1.32.87 2.1 1.22a22.53 22.53 0 0 0 8.9 1.64 1 1 0 1 0 0-2c-3.2 0-6.06-.58-8.08-1.47a7.1 7.1 0 0 1-2.25-1.47C5.18 16.88 5 16.4 5 16v-3.2c.6.46 1.32.87 2.1 1.22a22.53 22.53 0 0 0 8.9 1.65c3.42 0 6.56-.62 8.9-1.65.78-.35 1.5-.76 2.1-1.22V16a1 1 0 1 0 2 0V9.33c0-1.06-.49-2-1.22-2.76a9.05 9.05 0 0 0-2.89-1.92A22.53 22.53 0 0 0 16 3Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path d="M24 20v4m0 0v4m0-4h4m-4 0h-4" stroke="currentColor" stroke-opacity=".5" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg> Dataset Creation
|
||||
</div>
|
||||
</label><label id="category-29" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="29">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M20.1 13.7a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM9.92 16.02l3.34-.12-3.07 5.88a3.5 3.5 0 0 0 6.2 3.24l2.72-5.2 1.45 2.92a1 1 0 0 0 1.5.35l3.16-2.39a1 1 0 0 0-1.2-1.6l-2.2 1.67-1.87-3.78a3.5 3.5 0 0 0-3.86-3.14 1 1 0 0 0-.29-.03l-6.64.22a1 1 0 0 0-.91.68l-1.45 4.3a1 1 0 0 0 1.9.63l1.22-3.63Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 1 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Pose Estimation
|
||||
</div>
|
||||
</label><label id="category-30" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="30">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M16 5.43a10.57 10.57 0 1 0 0 21.14 10.57 10.57 0 0 0 0-21.14Zm-8.53 9.74a8.57 8.57 0 1 0 16.76-1.57 10.57 10.57 0 0 1-11.1-4.16 10.57 10.57 0 0 1-5.66 5.73Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M20.51 17.1a1.35 1.35 0 1 1-2.7 0 1.35 1.35 0 0 1 2.7 0ZM14.2 17.1a1.35 1.35 0 1 1-2.7 0 1.35 1.35 0 0 1 2.7 0Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h4.12a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v5.13a1 1 0 1 0 2 0V3.6Zm19.64-1a1 1 0 0 1 1-1h5.12a1 1 0 0 1 1 1v5.13a1 1 0 1 1-2 0V3.61h-4.12a1 1 0 0 1-1-1ZM2.62 23.28a1 1 0 0 1 1 1v4.12h4.12a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-5.12a1 1 0 0 1 1-1Zm26.76 0a1 1 0 0 1 1 1v5.12a1 1 0 0 1-1 1h-5.12a1 1 0 0 1 0-2h4.12v-4.12a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Face Recognition
|
||||
</div>
|
||||
</label><label id="category-31" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="31">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M3.62 3.6h1.56a1 1 0 0 0 0-2H2.62a1 1 0 0 0-1 1v2.57a1 1 0 1 0 2 0V3.6Zm8.82-1a1 1 0 0 1 1-1H16a1 1 0 0 1 1 1v2.57a1 1 0 1 1-2 0V3.61h-1.56a1 1 0 0 1-1-1Zm-9.82 9.84a1 1 0 0 1 1 1V15h1.56a1 1 0 1 1 0 2H2.62a1 1 0 0 1-1-1v-2.56a1 1 0 0 1 1-1Zm13.38 0a1 1 0 0 1 1 1V16a1 1 0 0 1-1 1h-2.56a1 1 0 1 1 0-2H15v-1.56a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<circle cx="9.45" cy="9.11" r="2.62" fill="currentColor" fill-opacity=".8"></circle>
|
||||
<circle cx="24.32" cy="9.11" r="2.62" fill="currentColor" fill-opacity=".5"></circle>
|
||||
<circle cx="24.32" cy="24.36" r="2.62" fill="currentColor" fill-opacity=".5"></circle>
|
||||
<circle cx="8.53" cy="23.99" r="2.62" fill="currentColor" fill-opacity=".5"></circle>
|
||||
</svg> Anomaly Detection
|
||||
</div>
|
||||
</label><label id="category-32" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="32">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="m5.68 9.45 3.95-6.32a1.7 1.7 0 0 1 1.46-.8 1.73 1.73 0 0 1 1.79 1.7v4.53h5.74a1.79 1.79 0 0 1 1.71 2.05l-.32 2.1a1 1 0 0 0-.16.17l-3.7 4.98h-3.22a1.79 1.79 0 0 0-1.78 1.8v.53H8.2c-.48 0-.96-.1-1.4-.33l-1.11-.55-.02-9.86ZM3.2 9.1a1 1 0 0 1 1 1v8.93a1 1 0 1 1-2 0V10.1a1 1 0 0 1 1-1Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="m19.83 12.91-3.67 4.95h-3.23c-.98 0-1.78.8-1.78 1.79V27c0 .98.8 1.78 1.78 1.79l3.23.04.03.02c.92.57 1.44.9 3.04.88h7.31a2.81 2.81 0 0 0 2.77-2.42l.43-2.37c.3-1.58.59-3.16.82-4.75a2.84 2.84 0 0 0-2.68-3.22c-.98-.03-1.96 0-2.94 0v-2.58a2.73 2.73 0 0 0-2.07-2.6 2.76 2.76 0 0 0-3.04 1.12Zm1.68 1.1c.15-.25.47-.39.85-.28.37.1.58.35.58.67v3.57a1 1 0 0 0 1 1h3.89c.45.02.82.47.76.91l-1.26 7.1v.05c-.05.39-.4.7-.79.7h-7.32c-.5 0-.93-.2-1.54-.51l-.02-7.06v-.97l1.7-2.29 2.1-2.83.05-.07Zm-5.85 5.85v.33l.02 6.63-2.53-.03v-6.93h2.51Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Recommendation Systems
|
||||
</div>
|
||||
</label><label id="category-33" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="33">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path
|
||||
d="M16 8c-.73 0-1.36-.26-1.88-.78a2.57 2.57 0 0 1-.79-1.89c0-.73.26-1.36.79-1.88A2.58 2.58 0 0 1 16 2.67c.73 0 1.36.26 1.88.78.53.53.79 1.15.79 1.88a2.6 2.6 0 0 1-.79 1.89c-.52.52-1.14.78-1.88.78Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
<path
|
||||
d="M12 12v16a1.33 1.33 0 0 0 2.67 0v-6.67h2.66V28A1.33 1.33 0 0 0 20 28V12a53.4 53.4 0 0 0 6.69-1c.73-.18 1.16-.92.98-1.64a1.42 1.42 0 0 0-1.7-1.03c-1.32.3-2.72.53-4.17.69a54.36 54.36 0 0 1-11.6 0 37.59 37.59 0 0 1-4.18-.69 1.42 1.42 0 0 0-1.7 1.03c-.17.72.26 1.46 1 1.63A53.39 53.39 0 0 0 12 12Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
</svg> Character Animation
|
||||
</div>
|
||||
</label><label id="category-34" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="34">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M16 1.67a9 9 0 1 0 7.97 13.18 7 7 0 1 1-6.47 12.34 9 9 0 0 1-1.5 1.4 9 9 0 1 0 8.7-15.6A9 9 0 0 0 16 1.66Zm-4.95 4.05a7 7 0 1 1 9.9 9.9 7 7 0 0 1-9.9-9.9Z"
|
||||
fill="currentColor" fill-opacity=".5"></path>
|
||||
<path d="M17.5 27.19a9 9 0 1 1-10.2-14.2A9 9 0 0 0 19.36 19a9 9 0 0 1-1.86 8.18Z" fill="currentColor"
|
||||
fill-opacity=".8"></path>
|
||||
</svg> Style Transfer
|
||||
</div>
|
||||
</label><label id="category-35" class="select-none"><input class="form-input peer sr-only hidden" type="radio"
|
||||
value="35">
|
||||
<div
|
||||
class="flex flex-col items-center justify-center gap-1.5 text-[.82rem] leading-tight text-gray-500 hover:text-gray-700 peer-checked:text-indigo-700 hover:peer-checked:text-indigo-700 dark:text-gray-300 dark:hover:text-gray-100 dark:peer-checked:text-yellow-500 dark:hover:peer-checked:text-yellow-500">
|
||||
<svg class="text-2xl" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet"
|
||||
viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M11.4 21.75a3 3 0 0 1 3-3H27a3 3 0 0 1 3 3v5.04a3 3 0 0 1-3 3H14.4a3 3 0 0 1-3-3v-5.04Zm6.78 1.48a1.03 1.03 0 1 0 .52 1.93.75.75 0 0 1 .76 1.3 2.53 2.53 0 0 1-3.81-2.2 2.53 2.53 0 0 1 3.81-2.18.75.75 0 0 1-.76 1.3 1.03 1.03 0 0 0-.52-.15Zm4.9 1.04a1.03 1.03 0 0 1 1.55-.9.75.75 0 1 0 .76-1.29 2.53 2.53 0 0 0-3.81 2.19 2.53 2.53 0 0 0 3.81 2.19.75.75 0 0 0-.76-1.3 1.03 1.03 0 0 1-1.56-.9Z"
|
||||
fill="currentColor" fill-opacity=".15"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||
d="M2.08 5.84a4 4 0 0 1 4-4h14.19a4 4 0 0 1 4 4v10.9h-9.05A12.73 12.73 0 0 0 4.08 13.5v5.66c0 1.1.9 2 2 2h3.36c-.02.2-.04.39-.04.59v1.4H6.08a4 4 0 0 1-4-4V5.85Zm18.88 2.44a2.82 2.82 0 1 1-5.65 0 2.82 2.82 0 0 1 5.65 0ZM18.18 23.23a1.03 1.03 0 1 0 .53 1.93.75.75 0 0 1 .75 1.3 2.53 2.53 0 0 1-3.81-2.2 2.53 2.53 0 0 1 3.81-2.18.75.75 0 1 1-.75 1.3 1.03 1.03 0 0 0-.53-.15ZM24.11 23.23a1.03 1.03 0 1 0 .52 1.93.75.75 0 0 1 .76 1.3 2.53 2.53 0 0 1-3.81-2.2 2.53 2.53 0 0 1 3.81-2.18.75.75 0 0 1-.76 1.3 1.03 1.03 0 0 0-.52-.15Z"
|
||||
fill="currentColor" fill-opacity=".8"></path>
|
||||
</svg> Image
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,36 +0,0 @@
|
||||
<template>
|
||||
<div class="bg-slate-100 w-screen h-screen">
|
||||
<div id="logo-container">
|
||||
...
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { gsap } from 'gsap'
|
||||
import { onMounted } from 'vue'
|
||||
onMounted(() => {
|
||||
const tl = gsap.timeline({ defaults: { ease: "power2.out " } });
|
||||
|
||||
// B2 -> x: 95, y: 75
|
||||
tl.to("#B2", { x: 95, y: 75 });
|
||||
// B3 -> x: 115, y: 55
|
||||
tl.to("#B3", { x: 115, y: 55 });
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#logo-container {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
transform-origin: top left;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
#logo-vb .bar {
|
||||
opacity: 0;
|
||||
transform: translateY(20px);
|
||||
}
|
||||
</style>
|
||||
@@ -1,91 +1,3 @@
|
||||
<template>
|
||||
<div class="card-container flex flex-col justify-center items-center dark:bg-slate-900">
|
||||
<section class="flex items-center p-8 max-w-screen-lg flex-col md:flex-row">
|
||||
<div class="flex flex-col items-center">
|
||||
<img src="/profil.jpg" class="max-w-96 p-2 rounded-full">
|
||||
<div class="flex">
|
||||
<img src="/tools/javascript.svg" title="javascript"
|
||||
class="bg-white w-16 h-16 p-2 m-2 flex -mt-10 rounded-full -top-6 relative">
|
||||
<img src="/tools/vue.svg" title="vue" class="bg-white w-16 h-16 p-2 m-2 flex -mt-10 rounded-full">
|
||||
<img src="/tools/react.svg" title="pinia"
|
||||
class="bg-white w-16 h-16 p-2 m-2 flex -mt-10 rounded-full relative">
|
||||
<img src="/tools/tailwind.svg" title="tailwind"
|
||||
class="bg-white w-16 h-16 p-2 m-2 flex -mt-10 rounded-full -top-6 relative">
|
||||
</div>
|
||||
</div>
|
||||
<div class="ml-12 text-center">
|
||||
<h1 class="mt-5 text-slate-800 font-extrabold text-5xl leading-relaxed text-left dark:text-slate-50">
|
||||
Valère BRON
|
||||
</h1>
|
||||
<h2 class="text-yellow-700 dark:text-esyellow text-2xl leading-relaxed mb-8 font-mono text-left">
|
||||
Développeur Front-end
|
||||
</h2>
|
||||
<p class="text-slate-800 dark:text-slate-100 text-lg font-mono text-left">
|
||||
Développeur JavaScript Front-end avec une expertise en React & en Vue, je vous propose mes services
|
||||
pour la réalisation de vos projets web.<br><br> Fort de 12 ans d'expérience sur divers projets, je maîtrise la
|
||||
création
|
||||
d’applications interactives et performantes, en respectant les meilleures pratiques de développement.
|
||||
</p>
|
||||
<a href="https://www.malt.fr/profile/valerebron"
|
||||
class="text-black font-bold bg-esyellow p-6 ring-1 rounded-lg inline-block mt-12 hover:text-xl transition-all">
|
||||
<img src="/malt.svg" class="inline pr-3">
|
||||
Discutons de votre projet
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="w-screen flex flex-col items-center">
|
||||
<p class="text-lg leading-relaxed font-mono p-8 max-w-screen-lg dark:text-white">
|
||||
Les clients avec qui j'ai travaillé :
|
||||
</p>
|
||||
<div class="flex overflow-x-scroll w-screen">
|
||||
<project @click="openProject(project)" v-if="folio && folio.projects" v-for="project in folio.projects"
|
||||
:project="project">
|
||||
</project>
|
||||
</div>
|
||||
</section>
|
||||
<clientDialog :project="currentProject" :open="isDialogOpen" @closeDialog="closeProject()"></clientDialog>
|
||||
<footer class="flex mt-8 [&>a>img]:h-9 [&>a>img]:w-9 [&>a>img]:p-1 dark:bg-slate-50 [&>a]:p-4 rounded-t-xl">
|
||||
<a href="https://linkedin.com/in/valere-bron">
|
||||
<img src="/linkedin.svg">
|
||||
</a>
|
||||
<a href="https://www.malt.fr/profile/valerebron">
|
||||
<img src="/malt.svg">
|
||||
</a>
|
||||
<a href="https://github.com/valerebron">
|
||||
<img src="/github.svg">
|
||||
</a>
|
||||
</footer>
|
||||
</div>
|
||||
<div>Home</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const folio = ref(null)
|
||||
onMounted(async () => {
|
||||
const res = await fetch('/folio.json')
|
||||
folio.value = await res.json()
|
||||
})
|
||||
useHead({
|
||||
title: 'valère BRON - Developpeur web',
|
||||
meta: [
|
||||
{ name: 'description', content: 'Découvrez mon profil de développeur web et explorez mes compétences et expériences dans le domaine du développement web.' },
|
||||
{ name: 'keywords', content: 'développeur web, Valère BRON, Lyon, France, HTML, CSS, JavaScript, Typescript, Tailwind, React, Vue' }
|
||||
]
|
||||
})
|
||||
const isDialogOpen = ref(false)
|
||||
const currentProject = ref({})
|
||||
|
||||
|
||||
const openProject = function (project: project) {
|
||||
currentProject.value = project
|
||||
isDialogOpen.value = true
|
||||
}
|
||||
const closeProject = function () {
|
||||
isDialogOpen.value = false
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
</style>
|
||||
15
home/.vscode/launch.json
vendored
Normal file
15
home/.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "chrome",
|
||||
"request": "launch",
|
||||
"name": "Launch Chrome against localhost",
|
||||
"url": "http://localhost:8080",
|
||||
"webRoot": "${workspaceFolder}"
|
||||
}
|
||||
]
|
||||
}
|
||||
246
home/adb-music-sync/adb-music-sync.py
Normal file
246
home/adb-music-sync/adb-music-sync.py
Normal file
@@ -0,0 +1,246 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import shlex
|
||||
import subprocess
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
from typing import List, Tuple, Optional
|
||||
|
||||
# --- Configuration ---
|
||||
HOME = Path.home()
|
||||
SOURCES = [
|
||||
HOME / "Music",
|
||||
HOME / "Downloads",
|
||||
]
|
||||
DEST_ON_PHONE = "/sdcard/Music"
|
||||
# Model tag as seen in `adb devices -l` (e.g., ... model:AGM_M7 ...)
|
||||
ADB_MODEL_MATCH = ["AGM_M7", "AGM", "M7"]
|
||||
POLL_INTERVAL_SEC = 60
|
||||
SIZE_LIMIT_BYTES = 7 * 1024 ** 3 # 7 GiB
|
||||
MUSIC_EXTS = {".mp3", ".m4a", ".ogg", ".aac", ".opus", ".alac", ".flac"}
|
||||
|
||||
# If you have a static Wi-Fi ADB endpoint, set it here (e.g., "192.168.1.50:5555").
|
||||
ADB_IP_PORT: Optional[str] = None
|
||||
|
||||
# --- Helpers ---
|
||||
def run(cmd: List[str], check: bool = False, text: bool = True, timeout: Optional[int] = None) -> subprocess.CompletedProcess:
|
||||
try:
|
||||
return subprocess.run(cmd, check=check, text=text, capture_output=True, timeout=timeout)
|
||||
except Exception as e:
|
||||
return subprocess.CompletedProcess(cmd, returncode=1, stdout="", stderr=str(e))
|
||||
|
||||
|
||||
def ensure_adb_server() -> None:
|
||||
run(["adb", "start-server"]) # best-effort
|
||||
|
||||
|
||||
def list_adb_devices() -> List[str]:
|
||||
proc = run(["adb", "devices", "-l"]) # do not check, we parse regardless
|
||||
if proc.returncode != 0:
|
||||
return []
|
||||
lines = [ln.strip() for ln in proc.stdout.splitlines()]
|
||||
# skip header line: "List of devices attached"
|
||||
if lines and lines[0].lower().startswith("list of devices"):
|
||||
lines = lines[1:]
|
||||
return [ln for ln in lines if ln]
|
||||
|
||||
|
||||
def adb_connect_if_needed():
|
||||
if not ADB_IP_PORT:
|
||||
return
|
||||
devices = list_adb_devices()
|
||||
if any(ADB_IP_PORT in ln for ln in devices):
|
||||
return # already connected
|
||||
run(["adb", "connect", ADB_IP_PORT])
|
||||
|
||||
|
||||
def is_agm_connected() -> bool:
|
||||
devices = list_adb_devices()
|
||||
for ln in devices:
|
||||
if "device" in ln and not ln.endswith("offline"):
|
||||
if any(tag in ln for tag in ADB_MODEL_MATCH):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def gather_music_files() -> List[Tuple[Path, Path, float, int]]:
|
||||
# Returns list of tuples: (root_dir, file_path, mtime, size)
|
||||
entries: List[Tuple[Path, Path, float, int]] = []
|
||||
for root in SOURCES:
|
||||
try:
|
||||
if not root.exists():
|
||||
continue
|
||||
for dirpath, _, filenames in os.walk(root):
|
||||
dpath = Path(dirpath)
|
||||
for fn in filenames:
|
||||
p = dpath / fn
|
||||
if p.suffix.lower() not in MUSIC_EXTS:
|
||||
continue
|
||||
try:
|
||||
st = p.stat()
|
||||
entries.append((root, p, st.st_mtime, st.st_size))
|
||||
except Exception:
|
||||
continue
|
||||
except Exception:
|
||||
continue
|
||||
# newest first by mtime
|
||||
entries.sort(key=lambda t: t[2], reverse=True)
|
||||
return entries
|
||||
|
||||
|
||||
def select_up_to_size(entries: List[Tuple[Path, Path, float, int]], limit_bytes: int) -> List[Tuple[Path, Path, int]]:
|
||||
selected: List[Tuple[Path, Path, int]] = []
|
||||
total = 0
|
||||
for root, p, _mt, sz in entries:
|
||||
if total >= limit_bytes:
|
||||
break
|
||||
selected.append((root, p, sz))
|
||||
total += sz
|
||||
return selected
|
||||
|
||||
|
||||
def adb_shell(cmd: str) -> subprocess.CompletedProcess:
|
||||
# Single string executed via adb shell
|
||||
return run(["adb", "shell", cmd])
|
||||
|
||||
|
||||
def remote_size(adb_path: str) -> Optional[int]:
|
||||
# Uses stat if available; returns None if missing
|
||||
# Escape path for shell
|
||||
qpath = shlex.quote(adb_path)
|
||||
proc = adb_shell(f"stat -c %s {qpath}")
|
||||
if proc.returncode != 0 or not proc.stdout.strip():
|
||||
return None
|
||||
out = proc.stdout.strip()
|
||||
if "No such file" in out or "not found" in out:
|
||||
return None
|
||||
try:
|
||||
return int(out.splitlines()[-1].strip())
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
def ensure_remote_dir(adb_path: str) -> None:
|
||||
# mkdir -p dirname
|
||||
dirname = os.path.dirname(adb_path)
|
||||
if not dirname:
|
||||
return
|
||||
adb_shell(f"mkdir -p {shlex.quote(dirname)}")
|
||||
|
||||
|
||||
def have_ffmpeg() -> bool:
|
||||
proc = run(["ffmpeg", "-version"])
|
||||
return proc.returncode == 0
|
||||
|
||||
|
||||
def transcode_flac_to_mp3(src: Path) -> Optional[Path]:
|
||||
try:
|
||||
tmp = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
|
||||
tmp_path = Path(tmp.name)
|
||||
tmp.close()
|
||||
except Exception:
|
||||
return None
|
||||
cmd = [
|
||||
"ffmpeg",
|
||||
"-y",
|
||||
"-i",
|
||||
str(src),
|
||||
"-vn",
|
||||
"-c:a",
|
||||
"libmp3lame",
|
||||
"-q:a",
|
||||
"2",
|
||||
str(tmp_path),
|
||||
]
|
||||
proc = run(cmd)
|
||||
if proc.returncode != 0:
|
||||
try:
|
||||
tmp_path.unlink(missing_ok=True) # type: ignore[arg-type]
|
||||
except Exception:
|
||||
pass
|
||||
return None
|
||||
return tmp_path
|
||||
|
||||
|
||||
def push_file(local_path: Path, remote_path: str, size: int) -> bool:
|
||||
# Skip if same size exists
|
||||
rsz = remote_size(remote_path)
|
||||
if rsz is not None and rsz == size:
|
||||
print(f"[=] Skip (same size): {local_path} -> {remote_path}")
|
||||
return True
|
||||
ensure_remote_dir(remote_path)
|
||||
proc = run(["adb", "push", "-p", str(local_path), remote_path])
|
||||
if proc.returncode == 0:
|
||||
print(f"[+] Pushed: {local_path} -> {remote_path}")
|
||||
return True
|
||||
else:
|
||||
print(f"[!] Push failed: {local_path}\n{proc.stderr}")
|
||||
return False
|
||||
|
||||
|
||||
def sync_latest_batch():
|
||||
entries = gather_music_files()
|
||||
if not entries:
|
||||
print("[i] No music files found.")
|
||||
return
|
||||
batch = select_up_to_size(entries, SIZE_LIMIT_BYTES)
|
||||
print(f"[i] Selected {len(batch)} files up to {SIZE_LIMIT_BYTES/(1024**3):.2f} GiB")
|
||||
for root, p, sz in batch:
|
||||
try:
|
||||
rel = p.relative_to(root)
|
||||
except Exception:
|
||||
rel = p.name # fallback
|
||||
if p.suffix.lower() == ".flac":
|
||||
if not have_ffmpeg():
|
||||
print(f"[!] ffmpeg not available, skipping: {p}")
|
||||
continue
|
||||
mp3_tmp = transcode_flac_to_mp3(p)
|
||||
if not mp3_tmp:
|
||||
print(f"[!] Transcode failed, skipping: {p}")
|
||||
continue
|
||||
try:
|
||||
if isinstance(rel, Path):
|
||||
rel_mp3 = rel.with_suffix(".mp3")
|
||||
remote = f"{DEST_ON_PHONE.rstrip('/')}/{rel_mp3.as_posix()}"
|
||||
else:
|
||||
remote = f"{DEST_ON_PHONE.rstrip('/')}/{Path(rel).with_suffix('.mp3').as_posix()}"
|
||||
msz = mp3_tmp.stat().st_size
|
||||
push_file(mp3_tmp, remote, msz)
|
||||
finally:
|
||||
try:
|
||||
mp3_tmp.unlink()
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
remote = f"{DEST_ON_PHONE.rstrip('/')}/{rel.as_posix()}"
|
||||
push_file(p, remote, sz)
|
||||
|
||||
|
||||
def main():
|
||||
print("[i] adb-music-sync daemon starting...")
|
||||
ensure_adb_server()
|
||||
connected_prev = False
|
||||
while True:
|
||||
try:
|
||||
ensure_adb_server()
|
||||
adb_connect_if_needed()
|
||||
connected = is_agm_connected()
|
||||
if connected and not connected_prev:
|
||||
print("[+] AGM M7 connected. Starting sync of latest ~7 GiB...")
|
||||
sync_latest_batch()
|
||||
elif not connected and connected_prev:
|
||||
print("[-] AGM M7 disconnected.")
|
||||
connected_prev = connected
|
||||
time.sleep(POLL_INTERVAL_SEC)
|
||||
except KeyboardInterrupt:
|
||||
print("[i] Exiting on user interrupt.")
|
||||
sys.exit(0)
|
||||
except Exception as e:
|
||||
print(f"[!] Error in main loop: {e}")
|
||||
time.sleep(POLL_INTERVAL_SEC)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
78
home/adb-music-sync/install.sh
Normal file
78
home/adb-music-sync/install.sh
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SILENT=false
|
||||
LOG_PREFIX="[adb-music-sync]"
|
||||
|
||||
PYTHON_SCRIPT="$HOME/.linux-env/adb-music-sync/adb-music-sync.py"
|
||||
INSTALL_TARGET="$HOME/.local/bin/adb-music-sync.py"
|
||||
AUTOSTART_DIR="$HOME/.config/autostart"
|
||||
AUTOSTART_FILE="$AUTOSTART_DIR/adb-music-sync.desktop"
|
||||
|
||||
log() {
|
||||
if [ "$SILENT" = true ]; then return; fi
|
||||
echo "$LOG_PREFIX $*"
|
||||
}
|
||||
|
||||
check_and_install_deps() {
|
||||
# Minimal dependency: adb
|
||||
if ! command -v adb >/dev/null 2>&1; then
|
||||
if command -v apt >/dev/null 2>&1; then
|
||||
log "[+] Installation d'adb (apt) ..."
|
||||
sudo apt update -y && sudo apt install -y adb
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
log "[+] Installation d'adb (dnf) ..."
|
||||
sudo dnf install -y android-tools
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
log "[+] Installation d'adb (pacman) ..."
|
||||
sudo pacman -Sy --noconfirm android-tools
|
||||
else
|
||||
log "[!] adb introuvable et gestionnaire de paquets inconnu. Installez adb manuellement."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
install_script() {
|
||||
check_and_install_deps
|
||||
|
||||
log "[+] Copie du script Python..."
|
||||
mkdir -p "$(dirname "$INSTALL_TARGET")"
|
||||
cp "$PYTHON_SCRIPT" "$INSTALL_TARGET"
|
||||
chmod +x "$INSTALL_TARGET"
|
||||
|
||||
log "[+] Création du fichier autostart..."
|
||||
mkdir -p "$AUTOSTART_DIR"
|
||||
cat > "$AUTOSTART_FILE" <<EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Exec=$INSTALL_TARGET
|
||||
Hidden=false
|
||||
NoDisplay=false
|
||||
X-GNOME-Autostart-enabled=true
|
||||
Name=ADB Music Sync
|
||||
Comment=Lance la synchronisation de ~5GiB de musique vers l'AGM M7 à la connexion ADB
|
||||
EOF
|
||||
|
||||
log "[✓] Installation terminée. Le script se lancera automatiquement à l'ouverture de session."
|
||||
}
|
||||
|
||||
uninstall_script() {
|
||||
log "[+] Suppression du script Python et autostart..."
|
||||
rm -f "$INSTALL_TARGET"
|
||||
rm -f "$AUTOSTART_FILE"
|
||||
log "[✓] Désinstallation terminée."
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
uninstall)
|
||||
uninstall_script
|
||||
;;
|
||||
silent)
|
||||
SILENT=true
|
||||
uninstall_script &>/dev/null || true
|
||||
install_script &>/dev/null
|
||||
;;
|
||||
*)
|
||||
install_script
|
||||
;;
|
||||
esac
|
||||
9
home/applications/android-wifi/android-wifi.desktop
Normal file
9
home/applications/android-wifi/android-wifi.desktop
Normal file
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Name=Android WiFi
|
||||
Comment=Mirror and control Android devices over Wi-Fi
|
||||
Exec=/home/valere/.local/bin/android-wifi.sh
|
||||
Icon=/home/valere/.local/share/icons/android-wifi.svg
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Utility;
|
||||
StartupNotify=true
|
||||
10
home/applications/android-wifi/android-wifi.sh
Normal file
10
home/applications/android-wifi/android-wifi.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! scrcpy; then
|
||||
adb tcpip 5555 >/dev/null 2>&1 || true
|
||||
|
||||
ip=$(ip neighbor | grep -i "0e:52:03:1e:89:9a" | awk '{print $1}')
|
||||
|
||||
adb connect "${ip}:5555"
|
||||
scrcpy
|
||||
fi
|
||||
16
home/applications/android-wifi/android-wifi.svg
Normal file
16
home/applications/android-wifi/android-wifi.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" version="1.1">
|
||||
<path style="opacity:0.2" d="m 16.846877,12 c -1.116351,0 -2.227419,0.912229 -2.015075,2 l 3.122973,16 -5.596557,11.109375 C 11.959876,41.871734 11.885244,42.336988 12.177176,43 c 0.278672,0.632897 0.998812,1 1.747448,1 H 24 34.075375 c 0.748637,0 1.468777,-0.367103 1.747448,-1 0.291932,-0.663012 0.217302,-1.128266 -0.181041,-1.890625 L 30.045225,30 33.168198,14 c 0.212344,-1.087771 -0.898724,-2 -2.015075,-2 H 24 Z"/>
|
||||
<path style="fill:#cccccc" d="m 16.846877,11 c -1.116351,0 -2.227419,0.912229 -2.015075,2 l 3.122973,16 -5.596557,11.109375 C 11.959876,40.871734 11.885244,41.336988 12.177176,42 c 0.278672,0.632897 0.998812,1 1.747448,1 H 24 34.075375 c 0.748637,0 1.468777,-0.367103 1.747448,-1 0.291932,-0.663012 0.217302,-1.128266 -0.181041,-1.890625 L 30.045225,29 33.168198,13 c 0.212344,-1.087771 -0.898724,-2 -2.015075,-2 H 24 Z"/>
|
||||
<rect style="opacity:0.2" width="40" height="32" x="4" y="6" rx="2" ry="2"/>
|
||||
<path style="fill:#e4e4e4" d="m 4,33 v 2 c 0,1.108 0.892,2 2,2 h 36 c 1.108,0 2,-0.892 2,-2 v -2 z"/>
|
||||
<path style="opacity:0.1" d="m 11.494141,15 a 1.5,1.5 0 0 0 -0.832032,0.255859 1.5,1.5 0 0 0 -0.40625,2.082032 l 3.13086,4.654297 C 10.404945,24.606192 8.4012371,28.299159 8.0019531,32.460938 7.9284599,34.000879 9.5546875,34 9.5546875,34 H 38.40625 c 0,0 1.672856,-3.38e-4 1.591797,-1.617188 -0.416529,-4.131451 -2.415618,-7.796833 -5.380859,-10.394531 l 3.126953,-4.65039 a 1.5,1.5 0 0 0 -0.40625,-2.082032 1.5,1.5 0 0 0 -1.125,-0.228515 1.5,1.5 0 0 0 -0.957032,0.634765 l -3.072265,4.566407 C 29.78649,18.814887 26.990024,18 24.001953,18 c -2.989385,0 -5.786177,0.815488 -8.183594,2.230469 l -3.074218,-4.56836 A 1.5,1.5 0 0 0 11.787109,15.027344 1.5,1.5 0 0 0 11.494141,15 Z"/>
|
||||
<path style="fill:#077063" d="M 6,5 C 4.892,5 4,5.892 4,7 V 33 H 44 V 7 C 44,5.892 43.108,5 42,5 Z"/>
|
||||
<path style="opacity:0.1;fill:#ffffff" d="M 6,5 C 4.892,5 4,5.892 4,7 V 8 C 4,6.892 4.892,6 6,6 h 36 c 1.108,0 2,0.892 2,2 V 7 C 44,5.892 43.108,5 42,5 Z"/>
|
||||
<path style="fill:none;stroke:#30dd81;stroke-width:3;stroke-linecap:round" d="M 15.1998,21.000026 11.5,15.5"/>
|
||||
<path style="fill:none;stroke:#30dd81;stroke-width:3;stroke-linecap:round" d="M 32.799764,21.000026 36.5,15.5"/>
|
||||
<path style="fill:#30dd81" d="m 24.002386,17.000034 c -8.355868,0 -15.2214979,6.346843 -15.9999669,14.460906 C 7.9289259,33.000882 9.5544999,33 9.5544999,33 H 38.406003 c 0,0 1.672201,-3.35e-4 1.591142,-1.617185 C 39.182807,23.305596 32.331836,17.000034 24.002386,17.000034 Z"/>
|
||||
<path style="opacity:0.2" d="m 16,25 a 1.9999959,1.9999959 0 0 0 -2,2 1.9999959,1.9999959 0 0 0 2,2 1.9999959,1.9999959 0 0 0 2,-2 1.9999959,1.9999959 0 0 0 -2,-2 z m 16,0 a 1.9999959,1.9999959 0 0 0 -2,2 1.9999959,1.9999959 0 0 0 2,2 1.9999959,1.9999959 0 0 0 2,-2 1.9999959,1.9999959 0 0 0 -2,-2 z"/>
|
||||
<path style="fill:#ffffff" d="M 15.999996,24.000008 A 1.9999959,1.9999959 0 0 1 17.999992,26.000004 1.9999959,1.9999959 0 0 1 15.999996,28 1.9999959,1.9999959 0 0 1 14,26.000004 1.9999959,1.9999959 0 0 1 15.999996,24.000008 Z"/>
|
||||
<path style="fill:#ffffff" d="M 31.999996,24.000008 A 1.9999959,1.9999959 0 0 1 33.999991,26.000004 1.9999959,1.9999959 0 0 1 31.999996,28 1.9999959,1.9999959 0 0 1 30,26.000004 1.9999959,1.9999959 0 0 1 31.999996,24.000008 Z"/>
|
||||
<path style="fill:#ffffff;opacity:0.2" d="M 11.494141 14 A 1.5 1.5 0 0 0 10.662109 14.255859 A 1.5 1.5 0 0 0 10.115234 16.001953 A 1.5 1.5 0 0 1 10.662109 15.255859 A 1.5 1.5 0 0 1 11.494141 15 A 1.5 1.5 0 0 1 11.787109 15.027344 A 1.5 1.5 0 0 1 12.744141 15.662109 L 15.818359 20.230469 C 18.215776 18.815488 21.012568 18 24.001953 18 C 26.990024 18 29.78649 18.814887 32.183594 20.228516 L 35.255859 15.662109 A 1.5 1.5 0 0 1 36.212891 15.027344 A 1.5 1.5 0 0 1 37.337891 15.255859 A 1.5 1.5 0 0 1 37.910156 16.001953 A 1.5 1.5 0 0 0 37.337891 14.255859 A 1.5 1.5 0 0 0 36.212891 14.027344 A 1.5 1.5 0 0 0 35.255859 14.662109 L 32.183594 19.228516 C 29.78649 17.814887 26.990024 17 24.001953 17 C 21.012568 17 18.215776 17.815488 15.818359 19.230469 L 12.744141 14.662109 A 1.5 1.5 0 0 0 11.787109 14.027344 A 1.5 1.5 0 0 0 11.494141 14 z M 35.033203 21.369141 L 34.617188 21.988281 C 37.477056 24.493668 39.433905 27.993356 39.943359 31.945312 C 39.986866 31.783283 40.008864 31.598575 39.998047 31.382812 C 39.601372 27.448291 37.768055 23.938648 35.033203 21.369141 z M 12.970703 21.373047 C 10.220358 23.959215 8.3822757 27.496796 8.0019531 31.460938 C 7.9920657 31.668114 8.0150508 31.844846 8.0585938 32 C 8.5570234 28.027243 10.515755 24.509049 13.386719 21.992188 L 12.970703 21.373047 z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
11
home/applications/install.sh
Normal file
11
home/applications/install.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
# desktop apps
|
||||
cp ~/.linux-env/applications/*/*.desktop ~/.local/share/applications/
|
||||
cp ~/.linux-env/applications/*/*.sh ~/.local/bin/
|
||||
cp ~/.linux-env/applications/*/*.svg ~/.local/share/icons/
|
||||
|
||||
chmod +x ~/.local/share/applications/*.desktop
|
||||
chmod +x ~/.local/bin/*.sh
|
||||
|
||||
update-desktop-database ~/.local/share/applications/
|
||||
gtk-update-icon-cache ~/.local/share/icons/ # inutile sauf si tu fais un vrai thème d'icônes
|
||||
BIN
home/applications/ratio-master/RM.exe
Normal file
BIN
home/applications/ratio-master/RM.exe
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/blingring.torrent
Normal file
BIN
home/applications/ratio-master/blingring.torrent
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
<client name="Azureus 3.0.5.0" author="seba14.org" version="1.0" processname="azureus"> <query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 3.0.5.0;Windows XP;Java 1.6.0_05_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_Content-type: application/x-www-form-urlencoded_nl_</headers>
|
||||
<peer_id prefix="-AZ3050-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="BitComet 1.07" author="seba14.org" version="1.0" processname="bitcomet">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&natmapped=1&localip={localip}&port_type=wan&uploaded={uploaded}&downloaded={downloaded}&left={left}&numwant={numwant}&compact=1&no_peer_id=1&key={key}{event}</query>
|
||||
<headers>Host: {host}_nl_Connection: close_nl_Accpet: */*_nl_Accept-Encoding: gzip_nl_User-Agent: BitComet/1.7.12.3_nl_Pragma: no-cache_nl_Cache-Control: no-cache_nl_</headers>
|
||||
<peer_id prefix="-BC0107-" type="random" length="12" urlencoding="true" upperCase="true" value="" />
|
||||
<key type="numeric" length="5" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="BitComet 1.13" author="seba14.org" version="1.0" processname="bitcomet">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&natmapped=1&localip={localip}&port_type=wan&uploaded={uploaded}&downloaded={downloaded}&left={left}&numwant={numwant}&compact=1&no_peer_id=1&key={key}{event}</query>
|
||||
<headers>Host: {host}_nl_Connection: close_nl_Accept: */*_nl_Accept-Encoding: gzip_nl_User-Agent: BitComet/1.13.6.22_nl_Pragma: no-cache_nl_Cache-Control: no-cache_nl_</headers>
|
||||
<peer_id prefix="-BC0113-" type="random" length="12" urlencoding="true" upperCase="true" value="" />
|
||||
<key type="numeric" length="5" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<client name="BitTorrent 6.0.3 (8642)" author="Rebound" version="1.0" processname="bittorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: BitTorrent/6030_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="M6-0-3--" type="random" length="12" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="BitTyrant 1.1" author="res0r9lm" version="1.0" processname="Azureus">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}</query>
|
||||
<headers>User-Agent: AzureusBitTyrant 2.5.0.0BitTyrant;Windows XP;Java 1.5.0_10_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_Proxy-Connection: keep-alive_nl_Content-type: application/x-www-form-urlencoded_nl_</headers>
|
||||
<peer_id prefix="AZ2500BT" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="Deluge 1.1.7" author="seba14.org" version="1.0">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}{event}&key={key}&compact=1&numwant={numwant}&supportcrypto=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: Deluge 1.1.7_nl_Connection: close_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-DE1170-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value="" />
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.0"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,9 @@
|
||||
<client name="Deluge 1.1.9" author="seba14.org" version="1.0">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}{event}&key={key}&compact=1&numwant={numwant}&supportcrypto=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: Deluge 1.1.9_nl_Connection: close_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-DE1190-" type="printable" length="12" urlencoding="false" upperCase="false" value="" />
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="false" lowerCase="true" value=""/>
|
||||
<protocol value="HTTP/1.0"/>
|
||||
<hash upperCase="false"/>
|
||||
<urlencoding exceptions="." />
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="Halite 0.3.1.1" author="seba14.org" version="2.0"> <query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}{event}&key={key}&compact=1&numwant={numwant}&supportcrypto=1&no_peer_id=1</query>
|
||||
<headers>Accept-Encoding: gzip_nl_User-Agent: Halite v 0.3.1.1_nl_Host: {host}_nl_</headers>
|
||||
<peer_id prefix="-HL0311-" type="printable" length="12" urlencoding="false"/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.0"/>
|
||||
<hash upperCase="false"/>
|
||||
<urlencoding exceptions="_-()~!*."/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="Transmission 1.06 (Build 5136)" author="seba14.org" version="1.0">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&corrupt=0&left={left}&compact=1&numwant={numwant}&key={key}&supportcrypto=1&requirecrypto=0{event}</query>
|
||||
<headers>Host: {host}_nl_Connection: close_nl_User-Agent: Transmission/1.06 (5136)_nl_</headers>
|
||||
<peer_id prefix="-TR1060-" type="alphanumeric" length="12" urlencoding="false" lowerCase="true" value=""/>
|
||||
<key type="alphanumeric" length="10" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
8
home/applications/ratio-master/clients/Vuze_4202.client
Normal file
8
home/applications/ratio-master/clients/Vuze_4202.client
Normal file
@@ -0,0 +1,8 @@
|
||||
<client name="Vuze 4.2.0.2" author="seba14.org" version="1.0" processname="azureus"> <query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 4.2.0.2;Windows XP;Java 1.6.0_13_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_</headers>
|
||||
<peer_id prefix="-AZ4202-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
<urlencoding exceptions="*-._" />
|
||||
</client>
|
||||
9
home/applications/ratio-master/clients/Vuze_4204.client
Normal file
9
home/applications/ratio-master/clients/Vuze_4204.client
Normal file
@@ -0,0 +1,9 @@
|
||||
<client name="Vuze 4.2.0.4" author="Ratiomaster" version="1.0" processname="azureus">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 4.2.0.4;{osver};{javaver}_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_</headers>
|
||||
<peer_id prefix="-AZ4204-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
<urlencoding exceptions="*-._" />
|
||||
</client>
|
||||
9
home/applications/ratio-master/clients/Vuze_4208.client
Normal file
9
home/applications/ratio-master/clients/Vuze_4208.client
Normal file
@@ -0,0 +1,9 @@
|
||||
<client name="Vuze 4.2.0.8" author="KTC" version="1.0" processname="azureus">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 4.2.0.8;{osver};{javaver}_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_</headers>
|
||||
<peer_id prefix="-AZ4208-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
<urlencoding exceptions="*-._" />
|
||||
</client>
|
||||
8
home/applications/ratio-master/clients/Vuze_4306.client
Normal file
8
home/applications/ratio-master/clients/Vuze_4306.client
Normal file
@@ -0,0 +1,8 @@
|
||||
<client name="Vuze 4.3.0.6" author="seba14.org" version="1.0" processname="azureus"> <query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 4.3.0.6;{osver};{javaver}_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_</headers>
|
||||
<peer_id prefix="-AZ4306-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
<urlencoding exceptions="*-._" />
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="Vuze 4.4.0.4" author="seba14.org" version="2.0" processname="azureus"> <query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 4.4.0.4;{osver};{javaver}_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_</headers>
|
||||
<peer_id prefix="-AZ4404-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
<urlencoding exceptions="*-._" />
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="Vuze 4.5.0.0" author="seba14.org" version="2.0" processname="azureus"> <query>info_hash={infohash}&peer_id={peerid}&supportcrypto=1&port={port}&azudp={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0{event}&numwant={numwant}&no_peer_id=1&compact=1&key={key}&azver=3</query>
|
||||
<headers>User-Agent: Azureus 4.5.0.0;{osver};{javaver}_nl_Connection: close_nl_Accept-Encoding: gzip_nl_Host: {host}_nl_Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2_nl_</headers>
|
||||
<peer_id prefix="-AZ4500-" type="alphanumeric" length="12" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="alphanumeric" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="true"/>
|
||||
<urlencoding exceptions="*-._" />
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="BitLord 1.1" author="Ratiomaster" version="1.0" processname="bitlord">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&natmapped=1&uploaded={uploaded}&downloaded={downloaded}&left={left}&numwant={numwant}&compact=1&no_peer_id=1&key={key}{event}</query>
|
||||
<headers>User-Agent: BitTorrent/3.4.2_nl_Connection: close_nl_Accept-Encoding: gzip, deflate_nl_Host: {host}_nl_Cache-Control: no-cache_nl_</headers>
|
||||
<peer_id prefix="exbc%01%01LORDCz%03%92" type="random" length="6" urlencoding="true" upperCase="true" value="" />
|
||||
<key type="numeric" length="4" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.0"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
8
home/applications/ratio-master/clients/burst_310b.client
Normal file
8
home/applications/ratio-master/clients/burst_310b.client
Normal file
@@ -0,0 +1,8 @@
|
||||
<client name="Burst 3.1.0b" author="RatioMaster" version="1.0" processname="btdownloadheadless">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&key={key}&uploaded={uploaded}&downloaded={downloaded}&left={left}&compact=1{event}</query>
|
||||
<headers>Host: {host}_nl_Accept-Encoding: gzip_nl_User-Agent: BitTorrent/brst1.1.3_nl_</headers>
|
||||
<peer_id prefix="Mbrst1-1-3" type="hex" length="10" urlencoding="false" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="false" value=""/>
|
||||
<protocol value="HTTP/1.0"/>
|
||||
<hash upperCase="true"/>
|
||||
</client>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<client name="uTorrent 1.7.7 build (8179)" author="uk10" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1770_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1770-%f3%9f" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="uTorrent 1.8.1 (build 12616)" author="SpongeBob101" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1810_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1810-H1" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="uTorrent 1.8.1 (build 12639)" author="MurderTR" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1810_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1810-_1" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="uTorrent 1.8.2 (build 15227)" author="Gox" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1820_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1820-%7b%3b" type="random" length="10" urlencoding="true" upperCase="false" value="" />
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<client name="utorrent 1.8.2 (build 14153)" author="rogeruk" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>User-Agent: uTorrent/1820_nl_Accept-Encoding: gzip, deflate_nl_Host: {host}_nl_Cache-Control: no-cache_nl_</headers>
|
||||
<peer_id prefix="-UT1820-I7" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="utorrent 1.8.2 (build 14458)" author="MurderTR" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>User-Agent: uTorrent/1820_nl_Accept-Encoding: gzip, deflate_nl_Host: {host}_nl_Cache-Control: no-cache_nl_</headers>
|
||||
<peer_id prefix="-UT1820-z8" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,8 @@
|
||||
<client name="uTorrent 1.8.2 Build (15167)" author="seba14.org" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1820_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1820-%3f%3b" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,9 @@
|
||||
<client name="uTorrent 1.8.3 Build (15728)" author="seba14.org" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1830(15728)_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1830-p%3d" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
<urlencoding exceptions="_()~._-" />
|
||||
</client>
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
<client name="uTorrent 1.8.4 Build (16150)" author="seba14.org" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1840(16150)_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1840-%16%3f" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
<urlencoding exceptions="_-~!*."/>
|
||||
</client>
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<client name="uTorrent 1.8 (build 11813)" author="SpongeBob101" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/1800_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT1800-%25." type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
</client>
|
||||
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
<client name="uTorrent 2.0.4 Build (21431)" author="CoreCore and Anon" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/2040(21431)_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT2040-%b7S" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
<urlencoding exceptions="-._~"/>
|
||||
<numwant value="200" randomize="false"/>
|
||||
</client>
|
||||
@@ -0,0 +1,10 @@
|
||||
<client name="uTorrent 2.0.4 Build (21515)" author="CoreCore and Anon" version="1.0" processname="utorrent">
|
||||
<query>info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1</query>
|
||||
<headers>Host: {host}_nl_User-Agent: uTorrent/2040(21515)_nl_Accept-Encoding: gzip_nl_</headers>
|
||||
<peer_id prefix="-UT2040-%0bT" type="random" length="10" urlencoding="true" upperCase="false" value=""/>
|
||||
<key type="hex" length="8" urlencoding="false" upperCase="true" value=""/>
|
||||
<protocol value="HTTP/1.1"/>
|
||||
<hash upperCase="false"/>
|
||||
<urlencoding exceptions="-._~"/>
|
||||
<numwant value="200" randomize="false"/>
|
||||
</client>
|
||||
BIN
home/applications/ratio-master/lng/1english.lng
Normal file
BIN
home/applications/ratio-master/lng/1english.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/Arabic.lng
Normal file
BIN
home/applications/ratio-master/lng/Arabic.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/Armenian.lng
Normal file
BIN
home/applications/ratio-master/lng/Armenian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/Danish.lng
Normal file
BIN
home/applications/ratio-master/lng/Danish.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/Korean.lng
Normal file
BIN
home/applications/ratio-master/lng/Korean.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/bulgarian.lng
Normal file
BIN
home/applications/ratio-master/lng/bulgarian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/chinese.lng
Normal file
BIN
home/applications/ratio-master/lng/chinese.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/french.lng
Normal file
BIN
home/applications/ratio-master/lng/french.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/german.lng
Normal file
BIN
home/applications/ratio-master/lng/german.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/hebrew.lng
Normal file
BIN
home/applications/ratio-master/lng/hebrew.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/hungarian.lng
Normal file
BIN
home/applications/ratio-master/lng/hungarian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/italian.lng
Normal file
BIN
home/applications/ratio-master/lng/italian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/lithuanian.lng
Normal file
BIN
home/applications/ratio-master/lng/lithuanian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/polish.lng
Normal file
BIN
home/applications/ratio-master/lng/polish.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/portuguese.lng
Normal file
BIN
home/applications/ratio-master/lng/portuguese.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/romanian.lng
Normal file
BIN
home/applications/ratio-master/lng/romanian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/russian.lng
Normal file
BIN
home/applications/ratio-master/lng/russian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/slovenian.lng
Normal file
BIN
home/applications/ratio-master/lng/slovenian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/spanish.lng
Normal file
BIN
home/applications/ratio-master/lng/spanish.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/swedish.lng
Normal file
BIN
home/applications/ratio-master/lng/swedish.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/thai.lng
Normal file
BIN
home/applications/ratio-master/lng/thai.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/turkish.lng
Normal file
BIN
home/applications/ratio-master/lng/turkish.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/ukrainian.lng
Normal file
BIN
home/applications/ratio-master/lng/ukrainian.lng
Normal file
Binary file not shown.
BIN
home/applications/ratio-master/lng/vietnamese.lng
Normal file
BIN
home/applications/ratio-master/lng/vietnamese.lng
Normal file
Binary file not shown.
10
home/applications/ratio-master/ratio-master.desktop
Executable file
10
home/applications/ratio-master/ratio-master.desktop
Executable file
@@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Name=RatioMaster
|
||||
Comment=Ratio spoofing tool for torrents
|
||||
Exec=wine /home/valere/.local/bin/RatioMaster/RM.exe
|
||||
Path=/home/valere/.local/bin/RatioMaster
|
||||
Icon=/home/valere/.local/bin/RatioMaster/logo.svg
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Network;P2P;
|
||||
StartupNotify=true
|
||||
65
home/applications/ratio-master/ratio-master.svg
Normal file
65
home/applications/ratio-master/ratio-master.svg
Normal file
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
|
||||
<svg
|
||||
width="773.29401"
|
||||
height="773.29401"
|
||||
viewBox="0 -28.5 247.45409 247.45409"
|
||||
version="1.1"
|
||||
preserveAspectRatio="xMidYMid"
|
||||
id="svg3"
|
||||
sodipodi:docname="logo.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs3" />
|
||||
<sodipodi:namedview
|
||||
id="namedview3"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="0.48911087"
|
||||
inkscape:cx="-24.534315"
|
||||
inkscape:cy="80.758786"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1132"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg3" />
|
||||
<g
|
||||
id="g3"
|
||||
transform="translate(5.5656067,239.04617)">
|
||||
<rect
|
||||
style="fill:#eb001b;fill-opacity:1;stroke-width:11.3833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2.3;paint-order:fill markers stroke"
|
||||
id="rect3"
|
||||
width="112.2394"
|
||||
height="112.45076"
|
||||
x="-105.21542"
|
||||
y="-209.79523"
|
||||
transform="rotate(45)" />
|
||||
<rect
|
||||
style="fill:#f79e1b;fill-opacity:1;stroke-width:11.3833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2.3;paint-order:fill markers stroke"
|
||||
id="rect3-6"
|
||||
width="112.2394"
|
||||
height="112.45076"
|
||||
x="-42.293499"
|
||||
y="-272.13583"
|
||||
transform="rotate(45)" />
|
||||
<rect
|
||||
style="fill:#ff5f00;fill-opacity:1;stroke-width:5.03456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2.3;paint-order:fill markers stroke"
|
||||
id="rect3-6-5"
|
||||
width="49.315277"
|
||||
height="50.120525"
|
||||
x="-42.293499"
|
||||
y="-209.80559"
|
||||
transform="rotate(45)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
42
home/applications/ratio-master/ratiomaster.config
Normal file
42
home/applications/ratio-master/ratiomaster.config
Normal file
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ApplicationSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<textStopMinLeecher>0</textStopMinLeecher>
|
||||
<updateAnnounceParamsOnStart>true</updateAnnounceParamsOnStart>
|
||||
<finishedPercent>100</finishedPercent>
|
||||
<uploadRate>55003.37</uploadRate>
|
||||
<downloadRate>0.21</downloadRate>
|
||||
<interval>1800</interval>
|
||||
<TorrentClientsIndex>11</TorrentClientsIndex>
|
||||
<checkLogEnabled>true</checkLogEnabled>
|
||||
<checkRequestScrap>true</checkRequestScrap>
|
||||
<checkShowTrayBaloon>true</checkShowTrayBaloon>
|
||||
<checkTCPListen>false</checkTCPListen>
|
||||
<customPort />
|
||||
<customKey>WMAAIhLqVx</customKey>
|
||||
<customPeersNum />
|
||||
<customPeerID>-TR1060-pauut3h9agwn</customPeerID>
|
||||
<textProxyHost />
|
||||
<textProxyPort />
|
||||
<textProxyPass />
|
||||
<textProxyUser />
|
||||
<comboProxyTypeIndex>0</comboProxyTypeIndex>
|
||||
<checkNewVersion>true</checkNewVersion>
|
||||
<checkRandomUpload>true</checkRandomUpload>
|
||||
<checkRandomDownload>true</checkRandomDownload>
|
||||
<RandomUploadFrom>50000</RandomUploadFrom>
|
||||
<RandomUploadTo>100000</RandomUploadTo>
|
||||
<RandomDownloadFrom>0</RandomDownloadFrom>
|
||||
<RandomDownloadTo>4</RandomDownloadTo>
|
||||
<ignoreFailureReason>false</ignoreFailureReason>
|
||||
<torrentFilePath>C:\users\valere\Desktop\Downloads\l.horloger.de.saint-paul.1974.VOF RESTAUREE.1080p.BDrip.x265.FLAC-AZAZE.mkv.torrent</torrentFilePath>
|
||||
<torrentHash>1164387932F4CB6B1267B3ABA7E0A4CD26593E14</torrentHash>
|
||||
<stopProcessActionBox>0</stopProcessActionBox>
|
||||
<stopProcessValue>1000</stopProcessValue>
|
||||
<stopProcessUnitsBox>-1</stopProcessUnitsBox>
|
||||
<selectedLanguage>Z:\home\valere\.local\bin\RatioMaster\lng\1english.lng</selectedLanguage>
|
||||
<bindToIp>default</bindToIp>
|
||||
<minimizeTotray>true</minimizeTotray>
|
||||
<ignoreTimeout>false</ignoreTimeout>
|
||||
<useUPnP>false</useUPnP>
|
||||
<savePeerList>false</savePeerList>
|
||||
</ApplicationSettings>
|
||||
0
home/applications/ratio-master/rm_updates.xml
Normal file
0
home/applications/ratio-master/rm_updates.xml
Normal file
BIN
home/applications/ratio-master/torrent.torrent
Normal file
BIN
home/applications/ratio-master/torrent.torrent
Normal file
Binary file not shown.
106
home/bashrc/.bashrc
Normal file
106
home/bashrc/.bashrc
Normal file
@@ -0,0 +1,106 @@
|
||||
# .linux-env
|
||||
VIDEO_PATH_LOCAL="/home/valere/Downloads"
|
||||
IMAGE_PATH_LOCAL="/home/valere/Downloads"
|
||||
MUSIC_PATH_LOCAL="/home/valere/evilspins/web/mnt/media/files/music"
|
||||
|
||||
VIDEO_PATH="/home/root/media/video/autre"
|
||||
IMAGE_PATH="/home/root/media/image/screenshit"
|
||||
MUSIC_PATH="/home/root/media/files/music"
|
||||
|
||||
dlvideo() {
|
||||
cd "$VIDEO_PATH" || return
|
||||
pip install -U yt-dlp
|
||||
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4" --merge-output-format mp4 "$@"
|
||||
}
|
||||
|
||||
dlimage() {
|
||||
wget -P "$IMAGE_PATH" "$1"
|
||||
}
|
||||
|
||||
dlcover() {
|
||||
query_or_file="$1"
|
||||
manual_url="$2"
|
||||
|
||||
|
||||
if [ -f "$query_or_file" ]; then
|
||||
file="$query_or_file"
|
||||
elif echo "$query_or_file" | grep -q '%(ext)'; then
|
||||
file="$query_or_file"
|
||||
else
|
||||
file=$(find "$MUSIC_PATH" -type f \
|
||||
\( -iname "*${query_or_file}*.mp3" -o -iname "*${query_or_file}*.m4a" -o -iname "*${query_or_file}*.flac" -o -iname "*${query_or_file}*.wav" -o -iname "*${query_or_file}*.ogg" \) \
|
||||
| head -n 1)
|
||||
fi
|
||||
|
||||
if [ -z "$file" ]; then
|
||||
echo "❌ Aucun fichier trouvé pour: $query_or_file"
|
||||
return 1
|
||||
fi
|
||||
|
||||
base="${file%.*}"
|
||||
|
||||
if [ -n "$manual_url" ]; then
|
||||
curl -s "$manual_url" -o "${base}.jpg"
|
||||
echo "✅ ${base}.jpg saved from manual URL (fichier: $file)"
|
||||
return
|
||||
fi
|
||||
|
||||
artist_raw=$(echo "$base" | awk -F'__' '{print $2}')
|
||||
title_raw=$(echo "$base" | awk -F'__' '{for(i=3;i<=NF;i++){printf (i>3?" ":""); printf $i}}')
|
||||
artist=$(echo "$artist_raw" | tr '_' ' ')
|
||||
title=$(echo "$title_raw" | tr '_' ' ')
|
||||
query_enc=$(jq -rn --arg s "$artist $title" '$s|@uri')
|
||||
|
||||
it_url="https://itunes.apple.com/search?term=${query_enc}&entity=song&limit=1"
|
||||
art=$(curl -s "$it_url" | jq -r '.results[0].artworkUrl100')
|
||||
if [ -n "$art" ] && [ "$art" != "null" ]; then
|
||||
art_hi=$(echo "$art" | sed 's/100x100bb/1000x1000bb/')
|
||||
curl -s "$art_hi" -o "${base}.jpg"
|
||||
echo "✅ ${base}.jpg saved from iTunes (fichier: $file)"
|
||||
return
|
||||
fi
|
||||
|
||||
api_key="5ae5d1212599f96ffa799e21da1b2a7a38274c94bb5ae8ad26ce8d5b08528aaa"
|
||||
url=$(curl -s "https://serpapi.com/search.json?engine=google&q=${query_enc}&tbm=isch&api_key=${api_key}" \
|
||||
| jq -r '.images_results[0].original')
|
||||
|
||||
if [ -n "$url" ] && [ "$url" != "null" ]; then
|
||||
curl -s "$url" -o "${base}.jpg"
|
||||
echo "✅ ${base}.jpg saved from Google Images (fichier: $file)"
|
||||
else
|
||||
echo "❌ No cover found for $artist - $title (fichier: $file)"
|
||||
fi
|
||||
}
|
||||
|
||||
dlmusic() {
|
||||
mkdir -p "$MUSIC_PATH"
|
||||
|
||||
NOW=$(date +"%Y%m%d%H")
|
||||
URL="$1"
|
||||
|
||||
# Récupère le titre
|
||||
TITLE=$(yt-dlp --get-title "$URL")
|
||||
|
||||
# Transforme le titre pour le nom de fichier
|
||||
SAFE_TITLE="${TITLE// - /__}"
|
||||
SAFE_TITLE="${SAFE_TITLE// /_}"
|
||||
|
||||
TRACK_NAME="$MUSIC_PATH/${NOW}__${SAFE_TITLE}.%(ext)s"
|
||||
|
||||
# Téléchargement
|
||||
yt-dlp -x --audio-format mp3 -o $TRACK_NAME "$URL"
|
||||
dlcover $TRACK_NAME
|
||||
}
|
||||
|
||||
search() {
|
||||
find ./ -iname "*$1*"
|
||||
}
|
||||
|
||||
searchinside() {
|
||||
grep -rwl "$1" ./
|
||||
}
|
||||
|
||||
alias evilsync='rsync -avz --delete -e ssh $MUSIC_PATH_LOCAL root@erudi.fr:$MUSIC_PATH'
|
||||
alias evildiff='rsync -avzn --delete -e ssh $MUSIC_PATH_LOCAL root@erudi.fr:$MUSIC_PATH'
|
||||
|
||||
# end .linux-env
|
||||
4
home/bashrc/install.sh
Normal file
4
home/bashrc/install.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -i '/# .linux-env/,/# .linux-env/d' ~/.bashrc
|
||||
cat ~/.linux-env/bashrc/.bashrc >> ~/.bashrc
|
||||
94
home/gamecube-pad/gamecube-pad.py
Normal file
94
home/gamecube-pad/gamecube-pad.py
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env python3
|
||||
import evdev
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
DEVICE_NAMES = ["8BitDo NGC Modkit"]
|
||||
BUTTON_MAP = {
|
||||
"304": "Return", # A
|
||||
"305": None, # B (non utilisé)
|
||||
"311": "Alt_L", # R
|
||||
"307": "Right", # X
|
||||
"308": "Left", # Y
|
||||
# 318 (BTN_THUMBR) sera géré à part
|
||||
}
|
||||
|
||||
def find_device():
|
||||
for path in evdev.list_devices():
|
||||
try:
|
||||
dev = evdev.InputDevice(path)
|
||||
if any(dn in dev.name for dn in DEVICE_NAMES):
|
||||
return path
|
||||
except Exception:
|
||||
continue
|
||||
return None
|
||||
|
||||
def is_dolphin_running():
|
||||
try:
|
||||
output = subprocess.check_output(["flatpak", "ps"]).decode()
|
||||
return "org.DolphinEmu.dolphin-emu" in output
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def press_key(key, press):
|
||||
# press=True -> key down, press=False -> key up
|
||||
action = "keydown" if press else "keyup"
|
||||
subprocess.run(["xdotool", action, key])
|
||||
|
||||
def handle_device(dev_path):
|
||||
dev = evdev.InputDevice(dev_path)
|
||||
try:
|
||||
for event in dev.read_loop():
|
||||
if event.type != evdev.ecodes.EV_KEY:
|
||||
continue
|
||||
|
||||
key_code = str(event.code)
|
||||
|
||||
# cas spécial : joystick jaune (BTN_THUMBR, code 318)
|
||||
if key_code == "318" and event.value == 1: # pression
|
||||
press_key("Alt_L", True)
|
||||
time.sleep(0.02)
|
||||
press_key("Escape", True)
|
||||
time.sleep(0.05)
|
||||
press_key("Escape", False)
|
||||
press_key("Alt_L", False)
|
||||
continue
|
||||
|
||||
if key_code in BUTTON_MAP:
|
||||
mapped_key = BUTTON_MAP[key_code]
|
||||
if mapped_key is not None:
|
||||
press_key(mapped_key, event.value == 1)
|
||||
|
||||
except OSError:
|
||||
dev.close()
|
||||
raise
|
||||
|
||||
def main():
|
||||
connected = False
|
||||
time.sleep(5) # délai pour que le serveur graphique soit prêt
|
||||
while True:
|
||||
dev_path = find_device()
|
||||
if dev_path and not connected:
|
||||
print(f"[+] Manette connectée: {dev_path}")
|
||||
connected = True
|
||||
if not is_dolphin_running():
|
||||
try:
|
||||
subprocess.Popen(["flatpak", "run", "org.DolphinEmu.dolphin-emu"])
|
||||
except Exception as e:
|
||||
print(f"[!] Impossible de lancer Dolphin: {e}")
|
||||
try:
|
||||
handle_device(dev_path)
|
||||
except OSError:
|
||||
print("[-] Manette déconnectée")
|
||||
connected = False
|
||||
try:
|
||||
subprocess.Popen(["flatpak", "kill", "org.DolphinEmu.dolphin-emu"])
|
||||
except Exception as e:
|
||||
print(f"[!] Impossible de tuer Dolphin: {e}")
|
||||
elif not dev_path and connected:
|
||||
print("[-] Manette déconnectée")
|
||||
connected = False
|
||||
time.sleep(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
77
home/gamecube-pad/install.sh
Executable file
77
home/gamecube-pad/install.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
PYTHON_SCRIPT="$HOME/.local/bin/gamecube-pad.py"
|
||||
AUTOSTART_DIR="$HOME/.config/autostart"
|
||||
AUTOSTART_FILE="$AUTOSTART_DIR/gamecube-pad.desktop"
|
||||
|
||||
SILENT=false
|
||||
if [[ "$1" == "silent" ]]; then
|
||||
SILENT=true
|
||||
fi
|
||||
|
||||
log() {
|
||||
if [ "$SILENT" = false ]; then
|
||||
echo "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
check_and_install_deps() {
|
||||
for pkg in evdev uinput; do
|
||||
if ! python3 -c "import $pkg" &>/dev/null; then
|
||||
log "[!] Dépendance manquante : $pkg. Installation avec pip..."
|
||||
python3 -m pip install --user "$pkg" &>/dev/null
|
||||
fi
|
||||
done
|
||||
|
||||
for cmd in xdotool wmctrl; do
|
||||
if ! command -v "$cmd" &>/dev/null; then
|
||||
log "[!] Commande manquante : $cmd. Merci de l’installer via votre gestionnaire de paquets."
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
install_script() {
|
||||
check_and_install_deps
|
||||
|
||||
log "[+] Copie du script Python..."
|
||||
mkdir -p "$(dirname "$PYTHON_SCRIPT")"
|
||||
cp "$HOME/.linux-env/gamecube-pad/gamecube-pad.py" "$PYTHON_SCRIPT"
|
||||
chmod +x "$PYTHON_SCRIPT"
|
||||
|
||||
log "[+] Création du fichier autostart..."
|
||||
mkdir -p "$AUTOSTART_DIR"
|
||||
cat > "$AUTOSTART_FILE" <<EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Exec=$PYTHON_SCRIPT
|
||||
Hidden=false
|
||||
NoDisplay=false
|
||||
X-GNOME-Autostart-enabled=true
|
||||
Name=GameCube Pad
|
||||
Comment=Lance le script GameCube Pad au démarrage
|
||||
EOF
|
||||
|
||||
log "[✓] Installation terminée. Le script se lancera automatiquement à l'ouverture de session."
|
||||
}
|
||||
|
||||
uninstall_script() {
|
||||
log "[+] Suppression du script Python et autostart..."
|
||||
rm -f "$PYTHON_SCRIPT"
|
||||
rm -f "$AUTOSTART_FILE"
|
||||
log "[✓] Désinstallation terminée."
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
uninstall)
|
||||
uninstall_script
|
||||
;;
|
||||
silent)
|
||||
SILENT=true
|
||||
uninstall_script &>/dev/null
|
||||
install_script &>/dev/null
|
||||
;;
|
||||
*)
|
||||
install_script
|
||||
;;
|
||||
esac
|
||||
16
home/install.sh
Executable file
16
home/install.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Chemin de base : le dossier où se trouve ce script
|
||||
BASE_DIR="$(dirname "$(realpath "$0")")"
|
||||
|
||||
echo "[+] Recherche et exécution des install.sh..."
|
||||
|
||||
# Boucle récursive sur tous les fichiers install.sh
|
||||
find "$BASE_DIR" -type f -name "install.sh" ! -path "$BASE_DIR/install.sh" | while read -r script; do
|
||||
echo "[+] Lancement : $script"
|
||||
chmod +x "$script"
|
||||
"$script"
|
||||
done
|
||||
|
||||
echo "[✓] Tous les install.sh ont été exécutés."
|
||||
BIN
lettre-free.pdf
Normal file
BIN
lettre-free.pdf
Normal file
Binary file not shown.
7
pre-commit
Normal file
7
pre-commit
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# install bashrc if bashrc git edited
|
||||
if git diff --quiet home/bashrc/.bashrc; then
|
||||
else
|
||||
./home/bashrc/install.sh
|
||||
fi
|
||||
BIN
public/cv/UTIgroup.pdf
Normal file
BIN
public/cv/UTIgroup.pdf
Normal file
Binary file not shown.
@@ -1,97 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Technicien Support Applicatif Niveau 2 | Windows, Linux, SQL & SaaS**
|
||||
|
||||
Autonome, rigoureux et curieux, je dispose d’une expérience technique polyvalente combinant développement, administration de systèmes et support applicatif.
|
||||
Je souhaite mettre mes compétences au service d’un rôle de **support niveau 2**, assurant la résolution d’incidents complexes et l’accompagnement des utilisateurs.
|
||||
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron/)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences principales
|
||||
|
||||
### Support Applicatif & Technique
|
||||
|
||||
- Analyse, diagnostic et résolution d’incidents applicatifs complexes (niveau 2)
|
||||
- Lecture et croisement de logs applicatifs, scripts et fichiers de configuration
|
||||
- Installation, configuration et maintenance de logiciels métiers
|
||||
- Interface avec utilisateurs finaux et équipes métiers pour assurer la continuité opérationnelle
|
||||
- Documentation des procédures et suivi des tickets via outils de ticketing
|
||||
|
||||
### Environnements & Réseaux
|
||||
|
||||
- Systèmes : Windows, Linux (Ubuntu, Debian, Zorin OS), macOS
|
||||
- Réseau : protocole TCP/IP, VPN, configurations LAN/Wi-Fi
|
||||
- SaaS & architecture web : compréhension des flux, APIs REST et bases de données SQL
|
||||
- Serveurs personnels et professionnels : Docker, Gitea, Jellyfin
|
||||
|
||||
### Développement & Automatisation
|
||||
|
||||
- Scripting Bash / Node.js pour diagnostic et automatisation
|
||||
- Lecture et compréhension de code existant pour analyse d’incidents
|
||||
- Connaissances en Vue.js, Nuxt, TypeScript, NestJS pour support applicatif et debugging
|
||||
|
||||
### Relation & Support utilisateur
|
||||
|
||||
- Communication claire avec utilisateurs métiers et équipes IT
|
||||
- Pédagogie, sens du service et accompagnement technique
|
||||
- Rigueur et autonomie en environnement exigeant
|
||||
|
||||
---
|
||||
|
||||
## 🧰 Expériences professionnelles
|
||||
|
||||
### 2025 – **Groupama** | Développeur Vue.js
|
||||
|
||||
Support technique interne, participation à la résolution d’incidents applicatifs et coordination avec l’équipe métier.
|
||||
|
||||
> 🔹 Diagnostic des anomalies, tests et validation des correctifs
|
||||
|
||||
### 2024 – **Fitarena** | Développeur Vue.js
|
||||
|
||||
Maintenance applicative, suivi des bugs et assistance aux utilisateurs lors des évolutions du front-end.
|
||||
|
||||
> 🔹 Lecture des logs, vérification des flux API et tests fonctionnels
|
||||
|
||||
### 2021–2023 – **Potager City** | Développeur Vue.js
|
||||
|
||||
Développement et optimisation d’applications web.
|
||||
|
||||
> 🔹 Mise en place de tests E2E, support applicatif interne, documentation technique
|
||||
|
||||
### 2018–2020 – **Projets personnels & freelances**
|
||||
|
||||
Gestion et maintenance de serveurs personnels et professionnels : NAS, mini-serveurs Linux, Raspberry Pi.
|
||||
|
||||
> 🔹 Analyse des logs, correction de dysfonctionnements et administration système
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ Projets techniques personnels
|
||||
|
||||
- **docker-web** : outil Bash pour orchestrer Docker et microservices
|
||||
- **Serveurs Linux & NAS** : configuration, sécurité, supervision, flux applicatifs
|
||||
- **Veille technique** : suivi des innovations hardware, software et cybersécurité
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Diplômes
|
||||
|
||||
- 2011 – Licence Ingénierie de l’Internet
|
||||
- 2010 – BTS Communication et Industries Graphiques
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Profil humain
|
||||
|
||||
- Rigueur, autonomie et réactivité
|
||||
- Sens du service et pédagogie pour les utilisateurs métiers
|
||||
- Capacité à travailler en environnement exigeant et en évolution rapide
|
||||
|
||||
---
|
||||
|
||||
**Souhait :** Rejoindre **Manpower / client secteur IT Marseille** pour assurer le support applicatif de niveau 2, contribuer à la résolution d’incidents complexes et accompagner les utilisateurs dans leurs outils métiers.
|
||||
@@ -1,77 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Développeur Front-End & Fullstack | Vue.js, Angular, Node.js, TypeScript**
|
||||
|
||||
Développeur web expérimenté, spécialisé dans la création d’interfaces performantes et engageantes, avec un intérêt marqué pour l’expérience utilisateur, les performances logicielles et la qualité des composants. Je combine expertise front-end et back-end pour contribuer à des plateformes digitales complexes.
|
||||
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron/)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences
|
||||
|
||||
- **Front-end :** Angular 15, Vue 2/3, Nuxt, React.js, Tailwind, SCSS, Storybook, optimisation des performances, UI/UX
|
||||
- **Back-end :** Node.js, NestJS, Express, GraphQL, Prisma, REST API, Websockets, MongoDB, PostgreSQL
|
||||
- **DevOps & CI/CD :** Docker, Docker Compose, Git, GitHub Actions, GitLab CI, KeyCloak, Cloud AWS
|
||||
- **Tests & qualité :** Jest, tests unitaires et d’intégration, automatisation E2E
|
||||
- **Méthodologies :** Scrum Agile, architecture modulaire, industrialisation des composants
|
||||
|
||||
---
|
||||
|
||||
## 🏢 Expériences
|
||||
|
||||
### 2025 – Groupama | Développeur Vue.js / Front-End
|
||||
|
||||
- Développement et maintenance front-end (Vue 3) et intégration avec API REST
|
||||
- Optimisation des performances et respect des bonnes pratiques d’accessibilité
|
||||
- Mob & pair programming, participation aux orientations produit et backlog
|
||||
- Tests fonctionnels et unitaires pour sécuriser les déploiements
|
||||
|
||||
### 2024 – Fitarena | Développeur Vue.js & UI
|
||||
|
||||
- Création de composants UI réutilisables et performants
|
||||
- Refactorisation du code existant et optimisation front-end
|
||||
- Collaboration étroite pour améliorer l’expérience utilisateur
|
||||
|
||||
### 2021–2023 – Potager City | Développeur Front-End
|
||||
|
||||
- Optimisation front-end et SEO, mise en place de tests E2E
|
||||
- Coordination avec les équipes produit pour des interfaces intuitives
|
||||
- Gestion de la qualité et des performances logicielles
|
||||
|
||||
### 2020–2021 – MassiveMusic | Développeur Fullstack
|
||||
|
||||
- Architecture front-end avec Atomic Design et SCSS normalisé
|
||||
- Développement back-end Node.js et Prisma, CI/CD via Docker Compose
|
||||
- Gestion des données et API sécurisées
|
||||
|
||||
### 2020–2021 – Analytics | Développeur Node.js
|
||||
|
||||
- API GraphQL & TypeScript, suivi CI/CD et modélisation Prisma
|
||||
|
||||
### 2020 – Studiolab | Développeur React.js
|
||||
|
||||
- Création de composants React & Ant Design pour projets web interactifs
|
||||
|
||||
### 2019 – Euronews | Développeur Vue.js
|
||||
|
||||
- Intégration SCSS normalisée (ITCSS) pour la refonte du site
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Diplômes
|
||||
|
||||
- 2011 – Licence Ingénierie de l’Internet
|
||||
- 2010 – BTS Communication et Industries Graphiques
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Projets personnels & Compétences Visuelles
|
||||
|
||||
- Création de micro-animations front et effets visuels interactifs (SVG, CSS keyframes, transitions)
|
||||
- Surcouche Docker Compose et microservices pour projets fullstack ([docker-web.valere.dev](https://docker-web.valere.dev))
|
||||
- Développement de kits front-end Nuxt et Vue orientés UI/UX ([sidebase.io](https://sidebase.io))
|
||||
- Expérimentation et optimisation d’interfaces utilisateurs pour des applications web et SaaS
|
||||
@@ -1,96 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Technicien Informatique Polyvalent | Systèmes, Réseaux & Applicatifs**
|
||||
|
||||
Autonome, rigoureux et curieux, j’ai passé plus de 10 ans dans le développement web avant d’élargir mes compétences à l’administration, au support et à la maintenance.
|
||||
Aujourd’hui, je souhaite mettre à profit mon expérience technique dans un rôle de **technicien polyvalent**, au croisement du matériel, des systèmes et des applications métiers.
|
||||
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron/)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences principales
|
||||
|
||||
### Gestion du parc informatique
|
||||
|
||||
- Installation, configuration et maintenance de postes Windows, macOS et Linux
|
||||
- Gestion des comptes utilisateurs (Active Directory, Office 365)
|
||||
- Sauvegarde, restauration et mise à jour du parc logiciel et matériel
|
||||
- Maintenance matérielle (diagnostic, remplacement, optimisation)
|
||||
- Mise en place et suivi de procédures de sécurité et de sauvegarde
|
||||
|
||||
### Gestion des applicatifs métiers
|
||||
|
||||
- Analyse des besoins utilisateurs et rédaction de cahiers de tests
|
||||
- Participation aux phases de recette et validation des évolutions
|
||||
- Suivi de la conformité fonctionnelle des mises à jour
|
||||
- Interface avec prestataires et DSI pour le support applicatif
|
||||
- Notions de SQL, APIs REST et intégration ERP
|
||||
|
||||
### Réseau & Sécurité
|
||||
|
||||
- Configuration de réseaux locaux et VPN
|
||||
- Surveillance des performances, sécurisation des accès
|
||||
- Déploiement de solutions Docker, Gitea, Jellyfin sur serveurs Linux
|
||||
- Veille permanente sur les systèmes et la cybersécurité
|
||||
|
||||
### Développement & Automatisation
|
||||
|
||||
- Scripting Bash / Node.js pour tâches automatisées
|
||||
- Connaissances en développement (Vue.js, Nuxt, TypeScript, NestJS)
|
||||
- Outils CI/CD : Docker, GitLab, Drone
|
||||
|
||||
---
|
||||
|
||||
## 🧰 Expériences professionnelles
|
||||
|
||||
### 2025 – **Groupama** | Développeur Vue.js
|
||||
|
||||
Collaboration étroite avec l’équipe métier pour la mise en place d’une nouvelle architecture applicative en micro-frontends.
|
||||
|
||||
> 🔹 Coordination technique et support utilisateur lors des phases de recette
|
||||
|
||||
### 2024 – **Fitarena** | Développeur Vue.js
|
||||
|
||||
Développement d’un agenda interactif et optimisation de la communication entre front et back.
|
||||
|
||||
> 🔹 Participation aux tests, à la validation fonctionnelle et à la maintenance des environnements
|
||||
|
||||
### 2021–2023 – **Potager City** | Développeur Vue.js
|
||||
|
||||
Développement et maintien d’une application Vue 2 performante et accessible.
|
||||
|
||||
> 🔹 Automatisation de tests E2E, gestion des déploiements et support technique aux équipes
|
||||
|
||||
### 2018–2020 – **Projets personnels & freelances**
|
||||
|
||||
Mise en place et gestion de serveurs personnels et professionnels : NAS, mini-serveurs Linux, Raspberry Pi, Docker Compose, CI/CD.
|
||||
|
||||
> 🔹 Maintenance complète du matériel, sécurité et gestion des utilisateurs
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ Projets techniques personnels
|
||||
|
||||
- **docker-web** : outil Bash d’orchestration Docker (CI/CD et microservices)
|
||||
- **NAS et serveurs Linux** : installation, configuration, sauvegardes et surveillance
|
||||
- **Veille hardware & software** : suivi constant des innovations techniques et sécurité systèmes
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Diplômes
|
||||
|
||||
- 2011 – Licence Ingénierie de l’Internet
|
||||
- 2010 – BTS Communication et Industries Graphiques
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Profil humain
|
||||
|
||||
- Esprit d’analyse, rigueur et adaptabilité
|
||||
- Autonomie dans la gestion d’un parc ou d’un projet technique
|
||||
- Pédagogie et sens du service utilisateur
|
||||
- Capacité à faire le lien entre technique et besoins métier
|
||||
@@ -1,74 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Technicien Helpdesk / Support Informatique N0/N1**
|
||||
📍 Marseille – Permis B
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Profil
|
||||
|
||||
Technicien informatique passionné, issu du développement web, je mets aujourd’hui mon expérience technique au service du support et de l’assistance utilisateur.
|
||||
Habitué à diagnostiquer, réparer et configurer des systèmes variés (Windows, Linux, macOS), je recherche un poste de proximité où la réactivité, la rigueur et le sens du service sont essentiels.
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences techniques
|
||||
|
||||
- **Systèmes :** Windows 10/11, Linux (Debian/Ubuntu), macOS
|
||||
- **Réseaux & Support :** Active Directory, DHCP, VPN, sauvegardes, prise en main à distance
|
||||
- **Postes de travail :** installation, déploiement d’image, maintenance hardware et software
|
||||
- **Outils :** GLPI, Gitea, GitLab, outils de supervision et ticketing
|
||||
- **Langues :** Français (natif), Anglais technique (niveau B2)
|
||||
|
||||
---
|
||||
|
||||
## 🏢 Expériences professionnelles
|
||||
|
||||
### 2025 – Groupama | Développeur Vue.js
|
||||
|
||||
- Développement et maintenance d’une application Vue 3 en environnement Agile.
|
||||
- Tests fonctionnels et collaboration avec les équipes métiers et techniques.
|
||||
- Support technique ponctuel auprès des utilisateurs internes.
|
||||
|
||||
### 2024 – Fitarena | Développeur Vue.js
|
||||
|
||||
- Développement d’un agenda interactif et intégration d’API.
|
||||
- Support aux utilisateurs et correction d’incidents fonctionnels.
|
||||
|
||||
### 2021–2023 – Potager City | Développeur Vue.js
|
||||
|
||||
- Développement front-end, maintenance applicative et optimisation des performances.
|
||||
- Tests E2E et prévention des régressions techniques.
|
||||
|
||||
### Projets personnels (2020–2025)
|
||||
|
||||
- Montage, configuration et maintenance de serveurs NAS, mini-PC et Raspberry Pi.
|
||||
- Déploiement d’infrastructures Docker (Gitea, Nginx Proxy, Jellyfin).
|
||||
- Dépannage matériel et assistance technique pour particuliers et TPE.
|
||||
- Développement d’un outil Bash d’orchestration Docker : [docker-web.valere.dev](https://docker-web.valere.dev).
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Formation
|
||||
|
||||
- 2011 – Licence Ingénierie de l’Internet
|
||||
- 2010 – BTS Communication & Industries Graphiques
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Points forts
|
||||
|
||||
- Esprit d’analyse et méthode dans la résolution d’incidents
|
||||
- Polyvalence : développement, systèmes, réseaux, matériel
|
||||
- Habitude du travail en autonomie et du contact direct avec les utilisateurs
|
||||
- Curiosité technique et veille active sur le hardware et la sécurité
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Objectif
|
||||
|
||||
Mettre mes compétences techniques et ma rigueur au service du support de proximité, dans un environnement exigeant comme celui du transport maritime, au sein de **REACTIS**.
|
||||
@@ -1,92 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Technicien Maintenance & Support Utilisateurs | Windows, Linux, Hardware**
|
||||
|
||||
Autonome, rigoureux et passionné d’informatique, j’ai acquis au fil des années une expérience complète en développement, administration de systèmes et support utilisateurs.
|
||||
Je souhaite aujourd’hui mettre mon expertise technique et ma polyvalence au service d’un rôle concret de maintenance et assistance sur site.
|
||||
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron/)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences principales
|
||||
|
||||
### Support & Maintenance
|
||||
|
||||
- Support technique de niveau 1 et 2 pour utilisateurs finaux
|
||||
- Dépannage matériel : PC, écrans, imprimantes, PXI
|
||||
- Installation et configuration d’applications métiers et open source
|
||||
- Gestion des mesures de sécurité : BIOS, GPO, KB, MCS
|
||||
- Inventaire matériel et suivi via GLPI
|
||||
|
||||
### Systèmes & Réseaux
|
||||
|
||||
- Maîtrise de Windows XP, 7, 10 et Linux (Ubuntu, Debian, Zorin OS)
|
||||
- Réseaux locaux : configuration, dépannage et partage de ressources
|
||||
- Déploiement et maintenance de serveurs personnels et professionnels (Docker, NAS, mini-serveurs)
|
||||
|
||||
### Développement & Automatisation
|
||||
|
||||
- Scripting Bash / Node.js pour automatiser tâches et diagnostics
|
||||
- Lecture et compréhension de logs applicatifs et flux API
|
||||
- Connaissances de base en SQL, REST API et intégration front-end (Vue.js, Nuxt, TypeScript)
|
||||
|
||||
### Relation & Support utilisateur
|
||||
|
||||
- Communication claire et pédagogie avec utilisateurs industriels et équipes IT
|
||||
- Suivi et documentation des interventions et procédures
|
||||
- Capacité à travailler sur site, autonome et organisé
|
||||
|
||||
---
|
||||
|
||||
## 🧰 Expériences professionnelles
|
||||
|
||||
### 2025 – **Groupama** | Développeur Vue.js
|
||||
|
||||
Support interne, diagnostic et résolution de problèmes techniques sur l’application interne.
|
||||
|
||||
> 🔹 Assistance aux utilisateurs, tests fonctionnels et suivi des correctifs
|
||||
|
||||
### 2024 – **Fitarena** | Développeur Vue.js
|
||||
|
||||
Maintenance applicative et coordination avec le back-end pour résoudre incidents et bugs.
|
||||
|
||||
> 🔹 Lecture de logs, tests et optimisation des flux
|
||||
|
||||
### 2021–2023 – **Potager City** | Développeur Vue.js
|
||||
|
||||
Développement et maintenance d’applications web.
|
||||
|
||||
> 🔹 Mise en place de tests, support technique et documentation interne
|
||||
|
||||
### 2018–2020 – **Projets personnels & freelances**
|
||||
|
||||
Administration de serveurs Linux, NAS et mini-serveurs, dépannage matériel et logiciel, configuration et sécurité.
|
||||
|
||||
> 🔹 Gestion complète des équipements, inventaire, sauvegardes et mises à jour
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ Projets techniques personnels
|
||||
|
||||
- **docker-web** : orchestration Docker & microservices via Bash
|
||||
- Serveurs Linux et NAS : installation, supervision et maintenance
|
||||
- Veille technique : suivi du hardware, software et sécurité
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Diplômes
|
||||
|
||||
- 2011 – Licence Ingénierie de l’Internet
|
||||
- 2010 – BTS Communication et Industries Graphiques
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Profil humain
|
||||
|
||||
- Autonomie, rigueur et sens du service
|
||||
- Capacité à intervenir sur site et à expliquer clairement les solutions
|
||||
- Polyvalence hardware, software et réseau
|
||||
@@ -1,90 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Technicien Systèmes, Réseaux & Support IT – Marseille**
|
||||
Polyvalent, autonome et passionné d’infrastructure, j’interviens sur tous les aspects techniques : systèmes, réseaux, stockage et virtualisation.
|
||||
J’allie expérience en développement et en administration Linux/Docker à une vraie rigueur opérationnelle sur le terrain.
|
||||
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
🌐 [valere.dev](https://valere.dev)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron/)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences principales
|
||||
|
||||
### 🖥️ Systèmes & Virtualisation
|
||||
|
||||
- Administration Linux (Ubuntu, Debian, Zorin OS) & Windows Server
|
||||
- Gestion et maintenance d’environnements virtualisés (Docker, VMware)
|
||||
- Sauvegarde, supervision et restauration des systèmes
|
||||
- Gestion des comptes utilisateurs, permissions et scripts Bash
|
||||
|
||||
### 🌐 Réseaux & Sécurité
|
||||
|
||||
- Installation, configuration et diagnostic d’équipements Cisco / Fortinet / Alcatel
|
||||
- Configuration de VLAN, VPN, DHCP, DNS, routage et pare-feux
|
||||
- Surveillance de la performance réseau et sécurité (logs, monitoring)
|
||||
- Mise en place de NAS et solutions de stockage partagées
|
||||
|
||||
### 🧰 Support & Maintenance
|
||||
|
||||
- Support technique niveau 2/3 auprès d’utilisateurs et équipes locales
|
||||
- Diagnostic des incidents systèmes, réseaux et applicatifs
|
||||
- Documentation technique et procédures d’intervention
|
||||
- Préparation et maintenance d’équipements pour déploiement international
|
||||
|
||||
---
|
||||
|
||||
## 🧭 Expériences professionnelles
|
||||
|
||||
### 2025 – **Développeur & Administrateur Linux freelance**
|
||||
|
||||
Conception et maintenance d’environnements Docker, scripts Bash et automatisations réseau.
|
||||
|
||||
> 🔹 Supervision de serveurs, NAS et configurations VPN
|
||||
> 🔹 Support technique à distance et sur site
|
||||
|
||||
### 2024 – **Fitarena** | Développeur Vue.js / Support applicatif
|
||||
|
||||
Participation à la maintenance et au support des applications internes.
|
||||
|
||||
> 🔹 Lecture de logs, diagnostic d’erreurs, mise en place de correctifs
|
||||
|
||||
### 2021–2023 – **Potager City** | Développeur & Support IT
|
||||
|
||||
Suivi technique, support utilisateur et gestion du déploiement applicatif.
|
||||
|
||||
> 🔹 Coordination entre les équipes métiers et IT
|
||||
> 🔹 Documentation et assistance en production
|
||||
|
||||
### 2018–2020 – **Projets personnels & freelance**
|
||||
|
||||
Mise en place d’infrastructures locales (NAS, mini-serveurs, Docker, réseau).
|
||||
|
||||
> 🔹 Administration Linux et virtualisation
|
||||
> 🔹 Automatisation via scripts Bash
|
||||
|
||||
---
|
||||
|
||||
## 🚢 Objectif professionnel
|
||||
|
||||
Intégrer le **service IT d’une compagnie de croisières** pour assurer la maintenance et le support des infrastructures à bord et à terre.
|
||||
Allier **mobilité internationale**, **expertise technique** et **réactivité terrain** pour garantir la fiabilité des systèmes en environnement exigeant.
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Formation
|
||||
|
||||
- **Licence Ingénierie de l’Internet** – 2011
|
||||
- **BTS Communication & Industries Graphiques** – 2010
|
||||
|
||||
---
|
||||
|
||||
## 🧠 Points forts
|
||||
|
||||
- Polyvalence : systèmes, réseaux, développement, stockage
|
||||
- Autonomie et rigueur sur le terrain
|
||||
- Aisance en diagnostic et résolution d’incidents complexes
|
||||
- Goût du voyage et disponibilité pour interventions à bord
|
||||
@@ -1,100 +0,0 @@
|
||||
# Valère BRON
|
||||
|
||||
**Technicien & Conseiller Informatique | Polyvalent systèmes, réseaux et développement**
|
||||
|
||||
Passionné par l’informatique depuis toujours, j’ai d’abord évolué comme développeur web avant d’élargir mes compétences vers le support, l’administration système et la maintenance de postes.
|
||||
Curieux, rigoureux et orienté utilisateur, j’aime autant **résoudre des pannes matérielles** qu’**accompagner les utilisateurs** pour qu’ils tirent le meilleur de leurs outils.
|
||||
|
||||
📞 [06 81 84 77 37](tel:+33681847737)
|
||||
📧 [contact@valere.dev](mailto:contact@valere.dev)
|
||||
🔗 [LinkedIn](https://www.linkedin.com/in/valere-bron/)
|
||||
💻 [GitHub](https://github.com/valerebron)
|
||||
|
||||
---
|
||||
|
||||
## 💡 Compétences principales
|
||||
|
||||
### Support & Maintenance
|
||||
|
||||
- Déploiement, installation et configuration de postes Windows, macOS et Linux
|
||||
- Maintenance matérielle (diagnostic, remplacement de composants, optimisation des performances)
|
||||
- Sécurisation et mise à jour des systèmes
|
||||
- Sauvegarde, restauration et clonage de disques (NAS, SSD, Raspberry Pi, mini-ATX, etc.)
|
||||
- Suivi et résolution d’incidents logiciels et matériels
|
||||
|
||||
### Réseau & Systèmes
|
||||
|
||||
- Paramétrage réseau local et distant, partage de ressources, VPN
|
||||
- Administration légère de serveurs Linux (Ubuntu, Debian, Zorin OS)
|
||||
- Mise en place et supervision de NAS et serveurs personnels (Docker, Gitea, Jellyfin, etc.)
|
||||
- Surveillance et optimisation des performances système
|
||||
|
||||
### Développement & Automatisation
|
||||
|
||||
- Scripting Bash et automatisation (outil personnel [docker-web](https://docker-web.valere.dev))
|
||||
- Notions en Node.js, Vue.js et CI/CD (GitLab, Docker, etc.)
|
||||
- Conception d’outils internes simples pour améliorer la productivité
|
||||
|
||||
### Relation client & conseil
|
||||
|
||||
- Écoute, pédagogie et accompagnement des utilisateurs
|
||||
- Expérience en support technique et collaboration avec équipes pluridisciplinaires
|
||||
- Capacité à vulgariser les problèmes et proposer des solutions concrètes
|
||||
|
||||
---
|
||||
|
||||
## 🧰 Expériences professionnelles
|
||||
|
||||
### 2025 – **Groupama** | Développeur Vue.js
|
||||
|
||||
Collaboration avec les équipes métier et techniques sur une architecture micro-frontend.
|
||||
Mise en place de pratiques de travail collectives (pair/mob programming, suivi des priorités).
|
||||
|
||||
> 🔹 Coordination technique, support et communication avec les utilisateurs internes
|
||||
|
||||
### 2024 – **Fitarena** | Développeur Vue.js
|
||||
|
||||
Refonte d’un agenda interactif et optimisation du code existant.
|
||||
|
||||
> 🔹 Gestion d’environnements de développement, paramétrage des postes et assistance technique
|
||||
|
||||
### 2021–2023 – **Potager City** | Développeur Vue.js
|
||||
|
||||
Maintenance et optimisation d’une application web et de ses performances.
|
||||
|
||||
> 🔹 Veille sur la fiabilité des outils, tests techniques et amélioration continue des process
|
||||
|
||||
### 2018–2020 – **Projets personnels & freelances**
|
||||
|
||||
Mise en place et administration de serveurs personnels :
|
||||
NAS, serveurs Docker, Raspberry Pi, machines mini-ATX pour usage personnel et professionnel.
|
||||
|
||||
> 🔹 Configuration matérielle, virtualisation, sauvegardes et sécurité des systèmes
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ Projets techniques personnels
|
||||
|
||||
- **docker-web** : surcouche Bash pour orchestrer des applications web Docker
|
||||
- **Serveurs personnels** : NAS, mini-serveurs Linux et Raspberry Pi
|
||||
- **Maintenance & assistance** : accompagnement technique de particuliers et d’entreprises locales
|
||||
- **Veille hardware & software** : suivi des innovations matérielles et logicielles grand public
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Diplômes
|
||||
|
||||
- 2011 – Licence Ingénierie de l’Internet
|
||||
- 2010 – BTS Communication et Industries Graphiques
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Profil humain
|
||||
|
||||
- Esprit d’équipe, sens du service et communication claire
|
||||
- Curiosité technique et autonomie
|
||||
- Passion pour la compréhension et la transmission des savoirs informatiques
|
||||
|
||||
---
|
||||
|
||||
**Souhait :** Rejoindre **XEFI** pour mettre à profit mon expérience technique et mon sens du service dans un rôle concret et polyvalent au contact des utilisateurs.
|
||||
156
public/cv/cv.css
Normal file
156
public/cv/cv.css
Normal file
@@ -0,0 +1,156 @@
|
||||
/* Default styles for https://apitemplate.io/pdf-tools/convert-markdown-to-pdf/ */
|
||||
pre {
|
||||
background: #2d2d2d;
|
||||
border-radius: 4px;
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: 'Fira Code', Consolas, Monaco, monospace;
|
||||
}
|
||||
|
||||
/* Custom CSS */
|
||||
/* ====== Markdown PDF Pro Theme ====== */
|
||||
|
||||
@page {
|
||||
margin: 25mm 20mm;
|
||||
margin-top: 0mm;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
||||
font-size: 11pt;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: white;
|
||||
max-width: 800px;
|
||||
margin: auto;
|
||||
padding: 60px;
|
||||
}
|
||||
|
||||
/* Headings */
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: "Segoe UI Semibold", "Helvetica Neue", Arial, sans-serif;
|
||||
font-weight: 600;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 0.6em;
|
||||
line-height: 1.3;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 24pt;
|
||||
border-bottom: 2px solid #000;
|
||||
/* accent color */
|
||||
padding-bottom: 0.3em;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18pt;
|
||||
border-left: 4px solid #000;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 14pt;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-size: 12pt;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
/* Paragraphs */
|
||||
p {
|
||||
margin: 0.5em 0;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
/* Links */
|
||||
a {
|
||||
color: #1e7fce;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul,
|
||||
ol {
|
||||
margin: 0.5em 0 0.5em 2em;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
|
||||
/* Blockquote */
|
||||
blockquote {
|
||||
border-left: 4px solid #0078D7;
|
||||
margin: 1em 0;
|
||||
padding: 0.5em 1em;
|
||||
color: #555;
|
||||
background: #f9f9f9;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* Code */
|
||||
code {
|
||||
font-family: "Fira Code", "Consolas", monospace;
|
||||
background: #f4f4f4;
|
||||
padding: 0.2em 0.4em;
|
||||
border-radius: 4px;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
|
||||
pre {
|
||||
background: #1e1e1e;
|
||||
color: #dcdcdc;
|
||||
padding: 1em;
|
||||
border-radius: 6px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.9em;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin: 1em 0;
|
||||
width: 100%;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #ccc;
|
||||
padding: 0.6em 0.8em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f0f0f0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
tr:nth-child(even) td {
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
/* Horizontal rule */
|
||||
hr {
|
||||
border: none;
|
||||
border-top: 2px solid #eee;
|
||||
margin: 2em 0;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user