diff --git a/src/problem1/REQUIREMENT.MD b/src/problem1/REQUIREMENT.MD
new file mode 100644
index 0000000000..00d9a4f0b9
--- /dev/null
+++ b/src/problem1/REQUIREMENT.MD
@@ -0,0 +1,21 @@
+Provide 3 unique implementations of the following function in JavaScript.
+
+**Input**: `n` - any integer
+
+_Assuming this input will always produce a result lesser than `Number.MAX_SAFE_INTEGER`_.
+
+**Output**: `return` - summation to `n`, i.e. `sum_to_n(5) === 1 + 2 + 3 + 4 + 5 === 15`.
+
+```jsx
+var sum_to_n_a = function (n) {
+ // your code here
+};
+
+var sum_to_n_b = function (n) {
+ // your code here
+};
+
+var sum_to_n_c = function (n) {
+ // your code here
+};
+```
diff --git a/src/problem1/SCRIPT.MD b/src/problem1/SCRIPT.MD
new file mode 100644
index 0000000000..5626d4e792
--- /dev/null
+++ b/src/problem1/SCRIPT.MD
@@ -0,0 +1,47 @@
+# Run TypeScript Solution
+
+## Compile TypeScript to JavaScript
+
+Run the following command:
+
+```bash
+npx tsc solution.ts
+```
+
+This will generate:
+
+```bash
+solution.js
+```
+
+---
+
+## Run the JavaScript file
+
+```bash
+node solution.js
+```
+
+---
+
+## Example Output
+
+```bash
+Iterative:
+sum_to_n(1) = 1
+sum_to_n(5) = 15
+sum_to_n(10) = 55
+sum_to_n(100) = 5050
+
+Functional:
+sum_to_n(1) = 1
+sum_to_n(5) = 15
+sum_to_n(10) = 55
+sum_to_n(100) = 5050
+
+Recursive:
+sum_to_n(1) = 1
+sum_to_n(5) = 15
+sum_to_n(10) = 55
+sum_to_n(100) = 5050
+```
\ No newline at end of file
diff --git a/src/problem1/solution.ts b/src/problem1/solution.ts
new file mode 100644
index 0000000000..0ebd06d1f5
--- /dev/null
+++ b/src/problem1/solution.ts
@@ -0,0 +1,46 @@
+// Iterative
+var sum_to_n_a = function (n: number) : number {
+ let sum = 0;
+
+ for (let i = 1; i <= n; i++) {
+ sum += i;
+ }
+
+ return sum;
+};
+
+// Functional (reduce)
+var sum_to_n_b = function (n : number) : number {
+ return Array.from({ length: n }, (_, i) => i + 1).reduce(
+ (a, b) => a + b,
+ 0
+ );
+};
+
+// Recursive
+var sum_to_n_c = function (n: number) : number {
+ if(n === 1) return 1
+
+ return n + sum_to_n_c(n - 1);
+};
+
+// Test cases
+function runTests() {
+ const testCases = [1, 5, 10, 100];
+
+ const functions = [
+ { name: "Iterative", fn: sum_to_n_a },
+ { name: "Functional", fn: sum_to_n_b },
+ { name: "Recursive", fn: sum_to_n_c },
+ ];
+
+ functions.forEach(({ name, fn }) => {
+ console.log(`\n${name}:`);
+
+ testCases.forEach((n) => {
+ console.log(`sum_to_n(${n}) = ${fn(n)}`);
+ });
+ });
+}
+
+runTests();
\ No newline at end of file
diff --git a/src/problem2/fancy-form/.gitignore b/src/problem2/fancy-form/.gitignore
new file mode 100644
index 0000000000..00d926aa93
--- /dev/null
+++ b/src/problem2/fancy-form/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+yarn.lock
+package-lock.json
+.pnp.*
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/src/problem2/fancy-form/README.md b/src/problem2/fancy-form/README.md
new file mode 100644
index 0000000000..4c21086e25
--- /dev/null
+++ b/src/problem2/fancy-form/README.md
@@ -0,0 +1,109 @@
+# Currency Swap UI
+
+A modern currency swap interface built with React, TypeScript, and Vite.
+
+The application allows users to:
+
+- View available token balances
+- Swap between different currencies
+- Simulate swap transactions
+- Experience smooth animations and responsive UI interactions
+
+## Tech Stack
+
+- React
+- TypeScript
+- Vite
+- TailwindCSS
+- Framer Motion
+- Lucide React
+
+## Features
+
+- Token balance management
+- Swap direction toggle
+- Animated UI interactions
+- Responsive design
+- Mock transaction confirmation flow
+- Dynamic token icons
+- Loading states and validations
+
+## API
+
+Token prices are fetched from:
+
+```txt
+https://interview.switcheo.com/prices.json
+```
+
+Token icons are loaded from:
+
+```txt
+https://github.com/Switcheo/token-icons
+```
+
+---
+
+# Getting Started
+
+## Install dependencies
+
+### Using npm
+
+```bash
+npm install
+```
+
+### Using yarn
+
+```bash
+yarn
+```
+
+---
+
+# Run Development Server
+
+### Using npm
+
+```bash
+npm run dev
+```
+
+### Using yarn
+
+```bash
+yarn dev
+```
+
+---
+
+# Build Project
+
+### Using npm
+
+```bash
+npm run build
+```
+
+### Using yarn
+
+```bash
+yarn build
+```
+
+---
+
+# Preview Production Build
+
+### Using npm
+
+```bash
+npm run preview
+```
+
+### Using yarn
+
+```bash
+yarn preview
+```
\ No newline at end of file
diff --git a/src/problem2/fancy-form/eslint.config.js b/src/problem2/fancy-form/eslint.config.js
new file mode 100644
index 0000000000..f84f3c1638
--- /dev/null
+++ b/src/problem2/fancy-form/eslint.config.js
@@ -0,0 +1,21 @@
+import js from '@eslint/js'
+import globals from 'globals'
+import reactHooks from 'eslint-plugin-react-hooks'
+import reactRefresh from 'eslint-plugin-react-refresh'
+import tseslint from 'typescript-eslint'
+import { defineConfig, globalIgnores } from 'eslint/config'
+
+export default defineConfig([
+ globalIgnores(['dist']),
+ {
+ files: ['**/*.{ts,tsx}'],
+ extends: [
+ js.configs.recommended,
+ tseslint.configs.recommended,
+ reactRefresh.configs.vite,
+ ],
+ languageOptions: {
+ globals: globals.browser,
+ },
+ },
+])
diff --git a/src/problem2/fancy-form/index.html b/src/problem2/fancy-form/index.html
new file mode 100644
index 0000000000..53f5518f5a
--- /dev/null
+++ b/src/problem2/fancy-form/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ swap-app
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/package.json b/src/problem2/fancy-form/package.json
new file mode 100644
index 0000000000..9713e418d1
--- /dev/null
+++ b/src/problem2/fancy-form/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "fancy-form",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@radix-ui/react-dialog": "^1.1.15",
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
+ "@radix-ui/react-select": "^2.2.6",
+ "@radix-ui/react-slot": "^1.2.4",
+ "@radix-ui/react-tooltip": "^1.2.8",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "framer-motion": "^12.38.0",
+ "lucide-react": "^1.14.0",
+ "react": "^19.2.6",
+ "react-dom": "^19.2.6",
+ "tailwind-merge": "^3.6.0"
+ },
+ "devDependencies": {
+ "@eslint/js": "^10.0.1",
+ "@types/node": "^24.12.3",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^6.0.1",
+ "autoprefixer": "^10.5.0",
+ "eslint": "^10.3.0",
+ "eslint-plugin-react-hooks": "^7.1.1",
+ "eslint-plugin-react-refresh": "^0.5.2",
+ "globals": "^17.6.0",
+ "postcss": "^8.5.14",
+ "tailwindcss": "^3.4.19",
+ "typescript": "~6.0.2",
+ "typescript-eslint": "^8.59.2",
+ "vite": "^8.0.12"
+ }
+}
diff --git a/src/problem2/fancy-form/postcss.config.js b/src/problem2/fancy-form/postcss.config.js
new file mode 100644
index 0000000000..2e7af2b7f1
--- /dev/null
+++ b/src/problem2/fancy-form/postcss.config.js
@@ -0,0 +1,6 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/src/problem2/fancy-form/public/assets/tokens/1INCH.svg b/src/problem2/fancy-form/public/assets/tokens/1INCH.svg
new file mode 100644
index 0000000000..5970f7bd55
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/1INCH.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AAVE.svg b/src/problem2/fancy-form/public/assets/tokens/AAVE.svg
new file mode 100644
index 0000000000..10e65a3210
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AAVE.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ACT.svg b/src/problem2/fancy-form/public/assets/tokens/ACT.svg
new file mode 100644
index 0000000000..2415fef55c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ACT.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ADA.svg b/src/problem2/fancy-form/public/assets/tokens/ADA.svg
new file mode 100644
index 0000000000..c57bee9598
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ADA.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AEVO.svg b/src/problem2/fancy-form/public/assets/tokens/AEVO.svg
new file mode 100644
index 0000000000..26c36a62dd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AEVO.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AGI.svg b/src/problem2/fancy-form/public/assets/tokens/AGI.svg
new file mode 100644
index 0000000000..2617764b4c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AGI.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AI16Z.svg b/src/problem2/fancy-form/public/assets/tokens/AI16Z.svg
new file mode 100644
index 0000000000..d6b38455f9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AI16Z.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AIXBT.svg b/src/problem2/fancy-form/public/assets/tokens/AIXBT.svg
new file mode 100644
index 0000000000..2fd4c736d7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AIXBT.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AKRO.svg b/src/problem2/fancy-form/public/assets/tokens/AKRO.svg
new file mode 100644
index 0000000000..33501e5c2e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AKRO.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AKT.svg b/src/problem2/fancy-form/public/assets/tokens/AKT.svg
new file mode 100644
index 0000000000..a0733cd5e8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AKT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ALGO.svg b/src/problem2/fancy-form/public/assets/tokens/ALGO.svg
new file mode 100644
index 0000000000..0c79ab88fd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ALGO.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ALPHA.svg b/src/problem2/fancy-form/public/assets/tokens/ALPHA.svg
new file mode 100644
index 0000000000..9d916fb949
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ALPHA.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ALT.svg b/src/problem2/fancy-form/public/assets/tokens/ALT.svg
new file mode 100644
index 0000000000..fb551dfa7d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ALT.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AMP.svg b/src/problem2/fancy-form/public/assets/tokens/AMP.svg
new file mode 100644
index 0000000000..71bec9f9b4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AMP.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ANC.svg b/src/problem2/fancy-form/public/assets/tokens/ANC.svg
new file mode 100644
index 0000000000..bd414783cf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ANC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ANDR.svg b/src/problem2/fancy-form/public/assets/tokens/ANDR.svg
new file mode 100644
index 0000000000..fc7e23b4ef
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ANDR.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ANIME.svg b/src/problem2/fancy-form/public/assets/tokens/ANIME.svg
new file mode 100644
index 0000000000..975db35cd4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ANIME.svg
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ANKR.svg b/src/problem2/fancy-form/public/assets/tokens/ANKR.svg
new file mode 100644
index 0000000000..b8599f0165
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ANKR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ANT.svg b/src/problem2/fancy-form/public/assets/tokens/ANT.svg
new file mode 100644
index 0000000000..f805ff79f5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ANT.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ANY.svg b/src/problem2/fancy-form/public/assets/tokens/ANY.svg
new file mode 100644
index 0000000000..c504391175
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ANY.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/APE.svg b/src/problem2/fancy-form/public/assets/tokens/APE.svg
new file mode 100644
index 0000000000..26ff9cfd4e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/APE.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/APOLLO.svg b/src/problem2/fancy-form/public/assets/tokens/APOLLO.svg
new file mode 100644
index 0000000000..852aa5cea2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/APOLLO.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/APT.svg b/src/problem2/fancy-form/public/assets/tokens/APT.svg
new file mode 100644
index 0000000000..df0a169047
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/APT.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AR.svg b/src/problem2/fancy-form/public/assets/tokens/AR.svg
new file mode 100644
index 0000000000..5efc91fdb4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AR.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ARB.svg b/src/problem2/fancy-form/public/assets/tokens/ARB.svg
new file mode 100644
index 0000000000..2666c28ab2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ARB.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ARCH.svg b/src/problem2/fancy-form/public/assets/tokens/ARCH.svg
new file mode 100644
index 0000000000..b6deb843a1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ARCH.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ASA.svg b/src/problem2/fancy-form/public/assets/tokens/ASA.svg
new file mode 100644
index 0000000000..7023a06245
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ASA.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ASTRO.svg b/src/problem2/fancy-form/public/assets/tokens/ASTRO.svg
new file mode 100644
index 0000000000..23047ab947
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ASTRO.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ATOM-dATOM.svg b/src/problem2/fancy-form/public/assets/tokens/ATOM-dATOM.svg
new file mode 100644
index 0000000000..07e4a7d4c2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ATOM-dATOM.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ATOM.svg b/src/problem2/fancy-form/public/assets/tokens/ATOM.svg
new file mode 100644
index 0000000000..f3f9d10429
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ATOM.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AUDIO.svg b/src/problem2/fancy-form/public/assets/tokens/AUDIO.svg
new file mode 100644
index 0000000000..527d7ae79e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AUDIO.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AUT.svg b/src/problem2/fancy-form/public/assets/tokens/AUT.svg
new file mode 100644
index 0000000000..4f442bcfe1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AUT.svg
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AVA.svg b/src/problem2/fancy-form/public/assets/tokens/AVA.svg
new file mode 100644
index 0000000000..b88859ee56
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AVA.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AVAIL.svg b/src/problem2/fancy-form/public/assets/tokens/AVAIL.svg
new file mode 100644
index 0000000000..6b011a7f67
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AVAIL.svg
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AVAX.svg b/src/problem2/fancy-form/public/assets/tokens/AVAX.svg
new file mode 100644
index 0000000000..e85981529c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AVAX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AXL.svg b/src/problem2/fancy-form/public/assets/tokens/AXL.svg
new file mode 100644
index 0000000000..a0d81a72ff
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AXL.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AXS.svg b/src/problem2/fancy-form/public/assets/tokens/AXS.svg
new file mode 100644
index 0000000000..ab64a1a097
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AXS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/AXT.svg b/src/problem2/fancy-form/public/assets/tokens/AXT.svg
new file mode 100644
index 0000000000..a0be2a7e32
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/AXT.svg
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BAKE.svg b/src/problem2/fancy-form/public/assets/tokens/BAKE.svg
new file mode 100644
index 0000000000..48e18cc4c8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BAKE.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BAL.svg b/src/problem2/fancy-form/public/assets/tokens/BAL.svg
new file mode 100644
index 0000000000..274d48692b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BAL.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BAND.svg b/src/problem2/fancy-form/public/assets/tokens/BAND.svg
new file mode 100644
index 0000000000..fe0b053178
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BAND.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BAT.svg b/src/problem2/fancy-form/public/assets/tokens/BAT.svg
new file mode 100644
index 0000000000..6bea15edba
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BAT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BCD.svg b/src/problem2/fancy-form/public/assets/tokens/BCD.svg
new file mode 100644
index 0000000000..2eae4d86ac
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BCD.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BCH.svg b/src/problem2/fancy-form/public/assets/tokens/BCH.svg
new file mode 100644
index 0000000000..c1b2185860
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BCH.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BCHA.svg b/src/problem2/fancy-form/public/assets/tokens/BCHA.svg
new file mode 100644
index 0000000000..d1c50093bd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BCHA.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BCN.svg b/src/problem2/fancy-form/public/assets/tokens/BCN.svg
new file mode 100644
index 0000000000..446afbc222
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BCN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BCNA.svg b/src/problem2/fancy-form/public/assets/tokens/BCNA.svg
new file mode 100644
index 0000000000..81cb2950dc
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BCNA.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BELT.svg b/src/problem2/fancy-form/public/assets/tokens/BELT.svg
new file mode 100644
index 0000000000..0711b1485c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BELT.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/assets/tokens/BERA.svg b/src/problem2/fancy-form/public/assets/tokens/BERA.svg
new file mode 100644
index 0000000000..e77de0c563
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BERA.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BETH.svg b/src/problem2/fancy-form/public/assets/tokens/BETH.svg
new file mode 100644
index 0000000000..46a2401959
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BETH.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BHC.svg b/src/problem2/fancy-form/public/assets/tokens/BHC.svg
new file mode 100644
index 0000000000..c1b2185860
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BHC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BIT.svg b/src/problem2/fancy-form/public/assets/tokens/BIT.svg
new file mode 100644
index 0000000000..123a839eb5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BIT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BLAST.svg b/src/problem2/fancy-form/public/assets/tokens/BLAST.svg
new file mode 100644
index 0000000000..d931df3f89
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BLAST.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BLD.svg b/src/problem2/fancy-form/public/assets/tokens/BLD.svg
new file mode 100644
index 0000000000..1674899d4e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BLD.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BLOX.svg b/src/problem2/fancy-form/public/assets/tokens/BLOX.svg
new file mode 100644
index 0000000000..7a3045c57f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BLOX.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BLUR.svg b/src/problem2/fancy-form/public/assets/tokens/BLUR.svg
new file mode 100644
index 0000000000..bf1e280984
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BLUR.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BNB.svg b/src/problem2/fancy-form/public/assets/tokens/BNB.svg
new file mode 100644
index 0000000000..a7c6699768
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BNB.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BNT.svg b/src/problem2/fancy-form/public/assets/tokens/BNT.svg
new file mode 100644
index 0000000000..4c29bec3c9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BNT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BOLT.svg b/src/problem2/fancy-form/public/assets/tokens/BOLT.svg
new file mode 100644
index 0000000000..a74a21608e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BOLT.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BONK.svg b/src/problem2/fancy-form/public/assets/tokens/BONK.svg
new file mode 100644
index 0000000000..5df777e894
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BONK.svg
@@ -0,0 +1,424 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BOOT.svg b/src/problem2/fancy-form/public/assets/tokens/BOOT.svg
new file mode 100644
index 0000000000..2469b80cfd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BOOT.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BRAINS.svg b/src/problem2/fancy-form/public/assets/tokens/BRAINS.svg
new file mode 100644
index 0000000000..5c6a1d4184
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BRAINS.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BRETT.svg b/src/problem2/fancy-form/public/assets/tokens/BRETT.svg
new file mode 100644
index 0000000000..a799d64779
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BRETT.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BRKL.svg b/src/problem2/fancy-form/public/assets/tokens/BRKL.svg
new file mode 100644
index 0000000000..5963d18244
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BRKL.svg
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTC.svg b/src/problem2/fancy-form/public/assets/tokens/BTC.svg
new file mode 100644
index 0000000000..cd3b1e78e2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTC.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTCST.svg b/src/problem2/fancy-form/public/assets/tokens/BTCST.svg
new file mode 100644
index 0000000000..63d5b3c441
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTCST.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTG.svg b/src/problem2/fancy-form/public/assets/tokens/BTG.svg
new file mode 100644
index 0000000000..41629e7d6a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTG.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTM.svg b/src/problem2/fancy-form/public/assets/tokens/BTM.svg
new file mode 100644
index 0000000000..16fdbdfda4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTM.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTMX.svg b/src/problem2/fancy-form/public/assets/tokens/BTMX.svg
new file mode 100644
index 0000000000..5e4a26a71e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTMX.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTSG.svg b/src/problem2/fancy-form/public/assets/tokens/BTSG.svg
new file mode 100644
index 0000000000..9b82cf6a0b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTSG.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BTT.svg b/src/problem2/fancy-form/public/assets/tokens/BTT.svg
new file mode 100644
index 0000000000..736450a2db
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BTT.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BUNNY.svg b/src/problem2/fancy-form/public/assets/tokens/BUNNY.svg
new file mode 100644
index 0000000000..4bed16291f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BUNNY.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BUSD.svg b/src/problem2/fancy-form/public/assets/tokens/BUSD.svg
new file mode 100644
index 0000000000..b992764bd1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BUSD.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/BUSDT.svg b/src/problem2/fancy-form/public/assets/tokens/BUSDT.svg
new file mode 100644
index 0000000000..08bbf0587d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/BUSDT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/C98.svg b/src/problem2/fancy-form/public/assets/tokens/C98.svg
new file mode 100644
index 0000000000..3a0ff2bb70
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/C98.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CAKE.svg b/src/problem2/fancy-form/public/assets/tokens/CAKE.svg
new file mode 100644
index 0000000000..ce45fbe253
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CAKE.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CANTO.svg b/src/problem2/fancy-form/public/assets/tokens/CANTO.svg
new file mode 100644
index 0000000000..d2758becf9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CANTO.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CARB.svg b/src/problem2/fancy-form/public/assets/tokens/CARB.svg
new file mode 100644
index 0000000000..02e14d0bfe
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CARB.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CAT.svg b/src/problem2/fancy-form/public/assets/tokens/CAT.svg
new file mode 100644
index 0000000000..8f81af95be
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CAT.svg
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CEL.svg b/src/problem2/fancy-form/public/assets/tokens/CEL.svg
new file mode 100644
index 0000000000..02cfbd269c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CEL.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CELO.svg b/src/problem2/fancy-form/public/assets/tokens/CELO.svg
new file mode 100644
index 0000000000..5ff3c6c83c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CELO.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CETH.svg b/src/problem2/fancy-form/public/assets/tokens/CETH.svg
new file mode 100644
index 0000000000..448a94a7a7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CETH.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CFX.svg b/src/problem2/fancy-form/public/assets/tokens/CFX.svg
new file mode 100644
index 0000000000..07e8c434db
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CFX.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CGAS.svg b/src/problem2/fancy-form/public/assets/tokens/CGAS.svg
new file mode 100644
index 0000000000..3c31d75c0c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CGAS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CHEQ.svg b/src/problem2/fancy-form/public/assets/tokens/CHEQ.svg
new file mode 100644
index 0000000000..ed1621a482
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CHEQ.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CHOG.svg b/src/problem2/fancy-form/public/assets/tokens/CHOG.svg
new file mode 100644
index 0000000000..adee63f975
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CHOG.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CHSB.svg b/src/problem2/fancy-form/public/assets/tokens/CHSB.svg
new file mode 100644
index 0000000000..0118cfce5c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CHSB.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CHT.svg b/src/problem2/fancy-form/public/assets/tokens/CHT.svg
new file mode 100644
index 0000000000..19d6392712
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CHT.svg
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CHZ.svg b/src/problem2/fancy-form/public/assets/tokens/CHZ.svg
new file mode 100644
index 0000000000..68897c58f1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CHZ.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CKB.svg b/src/problem2/fancy-form/public/assets/tokens/CKB.svg
new file mode 100644
index 0000000000..888ff3323e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CKB.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CMDX.svg b/src/problem2/fancy-form/public/assets/tokens/CMDX.svg
new file mode 100644
index 0000000000..028d44e951
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CMDX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CMST.svg b/src/problem2/fancy-form/public/assets/tokens/CMST.svg
new file mode 100644
index 0000000000..cd6cb419eb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CMST.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CNT.svg b/src/problem2/fancy-form/public/assets/tokens/CNT.svg
new file mode 100644
index 0000000000..c098860f72
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CNT.svg
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/COIN.svg b/src/problem2/fancy-form/public/assets/tokens/COIN.svg
new file mode 100644
index 0000000000..098ee36d37
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/COIN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/COMP.svg b/src/problem2/fancy-form/public/assets/tokens/COMP.svg
new file mode 100644
index 0000000000..563bf3af25
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/COMP.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/COOK.svg b/src/problem2/fancy-form/public/assets/tokens/COOK.svg
new file mode 100644
index 0000000000..615625b404
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/COOK.svg
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CRBRUS.svg b/src/problem2/fancy-form/public/assets/tokens/CRBRUS.svg
new file mode 100644
index 0000000000..d847b37b3c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CRBRUS.svg
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CRE.svg b/src/problem2/fancy-form/public/assets/tokens/CRE.svg
new file mode 100644
index 0000000000..4008331be2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CRE.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CRO.svg b/src/problem2/fancy-form/public/assets/tokens/CRO.svg
new file mode 100644
index 0000000000..75ddad7d51
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CRO.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CRV.svg b/src/problem2/fancy-form/public/assets/tokens/CRV.svg
new file mode 100644
index 0000000000..f9fa597fac
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CRV.svg
@@ -0,0 +1,790 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CTK.svg b/src/problem2/fancy-form/public/assets/tokens/CTK.svg
new file mode 100644
index 0000000000..96bfa4f618
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CTK.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/CW.svg b/src/problem2/fancy-form/public/assets/tokens/CW.svg
new file mode 100644
index 0000000000..e0d8eef0af
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/CW.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DAG.svg b/src/problem2/fancy-form/public/assets/tokens/DAG.svg
new file mode 100644
index 0000000000..a06db4c405
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DAG.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DAI.svg b/src/problem2/fancy-form/public/assets/tokens/DAI.svg
new file mode 100644
index 0000000000..00fdd7ae1b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DAI.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DAK.svg b/src/problem2/fancy-form/public/assets/tokens/DAK.svg
new file mode 100644
index 0000000000..bbfa1b2640
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DAK.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DARC.svg b/src/problem2/fancy-form/public/assets/tokens/DARC.svg
new file mode 100644
index 0000000000..8e131ded9b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DARC.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DASH.svg b/src/problem2/fancy-form/public/assets/tokens/DASH.svg
new file mode 100644
index 0000000000..17e5eb7146
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DASH.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DBC.svg b/src/problem2/fancy-form/public/assets/tokens/DBC.svg
new file mode 100644
index 0000000000..91e7b72378
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DBC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DCR.svg b/src/problem2/fancy-form/public/assets/tokens/DCR.svg
new file mode 100644
index 0000000000..d97040bcfe
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DCR.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DEC.svg b/src/problem2/fancy-form/public/assets/tokens/DEC.svg
new file mode 100644
index 0000000000..025f6329b0
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DEC.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DEGEN.svg b/src/problem2/fancy-form/public/assets/tokens/DEGEN.svg
new file mode 100644
index 0000000000..44233e8e9d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DEGEN.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DENT.svg b/src/problem2/fancy-form/public/assets/tokens/DENT.svg
new file mode 100644
index 0000000000..10035d5a1a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DENT.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DGB.svg b/src/problem2/fancy-form/public/assets/tokens/DGB.svg
new file mode 100644
index 0000000000..ecf85eb29f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DGB.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DIG.svg b/src/problem2/fancy-form/public/assets/tokens/DIG.svg
new file mode 100644
index 0000000000..b75f6740df
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DIG.svg
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DKT.svg b/src/problem2/fancy-form/public/assets/tokens/DKT.svg
new file mode 100644
index 0000000000..8d1d5a5604
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DKT.svg
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DODO.svg b/src/problem2/fancy-form/public/assets/tokens/DODO.svg
new file mode 100644
index 0000000000..514dd23b5e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DODO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DOGE.svg b/src/problem2/fancy-form/public/assets/tokens/DOGE.svg
new file mode 100644
index 0000000000..f019ca4b5e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DOGE.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DOT.svg b/src/problem2/fancy-form/public/assets/tokens/DOT.svg
new file mode 100644
index 0000000000..db6de54b24
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DOT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DPL.svg b/src/problem2/fancy-form/public/assets/tokens/DPL.svg
new file mode 100644
index 0000000000..e511541f14
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DPL.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DPX.svg b/src/problem2/fancy-form/public/assets/tokens/DPX.svg
new file mode 100644
index 0000000000..d96e812979
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DPX.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DRFT.svg b/src/problem2/fancy-form/public/assets/tokens/DRFT.svg
new file mode 100644
index 0000000000..3f64fd9620
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DRFT.svg
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DROP.svg b/src/problem2/fancy-form/public/assets/tokens/DROP.svg
new file mode 100644
index 0000000000..dbb6c318b4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DROP.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DSM.svg b/src/problem2/fancy-form/public/assets/tokens/DSM.svg
new file mode 100644
index 0000000000..b305f5f5ea
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DSM.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DUVT.svg b/src/problem2/fancy-form/public/assets/tokens/DUVT.svg
new file mode 100644
index 0000000000..4bced3bdb9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DUVT.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DVPN.svg b/src/problem2/fancy-form/public/assets/tokens/DVPN.svg
new file mode 100644
index 0000000000..cb35dbc086
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DVPN.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DYDX.svg b/src/problem2/fancy-form/public/assets/tokens/DYDX.svg
new file mode 100644
index 0000000000..7977307c0f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DYDX.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/DYM.svg b/src/problem2/fancy-form/public/assets/tokens/DYM.svg
new file mode 100644
index 0000000000..e696de4fd5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/DYM.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EEUR.svg b/src/problem2/fancy-form/public/assets/tokens/EEUR.svg
new file mode 100644
index 0000000000..25f940a5b3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EEUR.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EIGEN.svg b/src/problem2/fancy-form/public/assets/tokens/EIGEN.svg
new file mode 100644
index 0000000000..350b748dd4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EIGEN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ELA.svg b/src/problem2/fancy-form/public/assets/tokens/ELA.svg
new file mode 100644
index 0000000000..7612168452
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ELA.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ELF.svg b/src/problem2/fancy-form/public/assets/tokens/ELF.svg
new file mode 100644
index 0000000000..fd3bc6cfe8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ELF.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ENA.svg b/src/problem2/fancy-form/public/assets/tokens/ENA.svg
new file mode 100644
index 0000000000..2445033b08
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ENA.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ENJ.svg b/src/problem2/fancy-form/public/assets/tokens/ENJ.svg
new file mode 100644
index 0000000000..7b832779f7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ENJ.svg
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ENS.svg b/src/problem2/fancy-form/public/assets/tokens/ENS.svg
new file mode 100644
index 0000000000..94d385bc10
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ENS.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EOS.svg b/src/problem2/fancy-form/public/assets/tokens/EOS.svg
new file mode 100644
index 0000000000..61de71db6d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EOS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EPS.svg b/src/problem2/fancy-form/public/assets/tokens/EPS.svg
new file mode 100644
index 0000000000..ef8bb614e1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EPS.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ETC.svg b/src/problem2/fancy-form/public/assets/tokens/ETC.svg
new file mode 100644
index 0000000000..7b3e8b3869
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ETC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ETH.svg b/src/problem2/fancy-form/public/assets/tokens/ETH.svg
new file mode 100644
index 0000000000..6a7cd5afc4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ETH.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ETHBTC.svg b/src/problem2/fancy-form/public/assets/tokens/ETHBTC.svg
new file mode 100644
index 0000000000..bd01fc187e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ETHBTC.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ETN.svg b/src/problem2/fancy-form/public/assets/tokens/ETN.svg
new file mode 100644
index 0000000000..a13bc14247
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ETN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EUROC.svg b/src/problem2/fancy-form/public/assets/tokens/EUROC.svg
new file mode 100644
index 0000000000..81134495c6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EUROC.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EUT.svg b/src/problem2/fancy-form/public/assets/tokens/EUT.svg
new file mode 100644
index 0000000000..56c4d324a5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EUT.svg
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EVMOS.svg b/src/problem2/fancy-form/public/assets/tokens/EVMOS.svg
new file mode 100644
index 0000000000..8d0b90acb4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EVMOS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/EWT.svg b/src/problem2/fancy-form/public/assets/tokens/EWT.svg
new file mode 100644
index 0000000000..db6e0ec632
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/EWT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FARTCOIN.svg b/src/problem2/fancy-form/public/assets/tokens/FARTCOIN.svg
new file mode 100644
index 0000000000..9fa8534fdc
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FARTCOIN.svg
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FBTC.svg b/src/problem2/fancy-form/public/assets/tokens/FBTC.svg
new file mode 100644
index 0000000000..89b376bbf9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FBTC.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FEES.svg b/src/problem2/fancy-form/public/assets/tokens/FEES.svg
new file mode 100644
index 0000000000..f31a2e1f85
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FEES.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FET.svg b/src/problem2/fancy-form/public/assets/tokens/FET.svg
new file mode 100644
index 0000000000..20b53be3d1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FET.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FIL.svg b/src/problem2/fancy-form/public/assets/tokens/FIL.svg
new file mode 100644
index 0000000000..a875441006
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FIL.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FIS.svg b/src/problem2/fancy-form/public/assets/tokens/FIS.svg
new file mode 100644
index 0000000000..ae28f926c9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FIS.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FLIX.svg b/src/problem2/fancy-form/public/assets/tokens/FLIX.svg
new file mode 100644
index 0000000000..962e47fb2d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FLIX.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FLM.svg b/src/problem2/fancy-form/public/assets/tokens/FLM.svg
new file mode 100644
index 0000000000..73ba619981
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FLM.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FLOW.svg b/src/problem2/fancy-form/public/assets/tokens/FLOW.svg
new file mode 100644
index 0000000000..7cf7e32db2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FLOW.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FLUID.svg b/src/problem2/fancy-form/public/assets/tokens/FLUID.svg
new file mode 100644
index 0000000000..9202222f8f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FLUID.svg
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FLUO.svg b/src/problem2/fancy-form/public/assets/tokens/FLUO.svg
new file mode 100644
index 0000000000..d4e4c7f345
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FLUO.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FRANK.svg b/src/problem2/fancy-form/public/assets/tokens/FRANK.svg
new file mode 100644
index 0000000000..6a49dcfec1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FRANK.svg
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FSGLP.svg b/src/problem2/fancy-form/public/assets/tokens/FSGLP.svg
new file mode 100644
index 0000000000..1392a246bb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FSGLP.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FTM.svg b/src/problem2/fancy-form/public/assets/tokens/FTM.svg
new file mode 100644
index 0000000000..0f46c6923c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FTM.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FTT.svg b/src/problem2/fancy-form/public/assets/tokens/FTT.svg
new file mode 100644
index 0000000000..fcd829ef4f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FTT.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FTTC.svg b/src/problem2/fancy-form/public/assets/tokens/FTTC.svg
new file mode 100644
index 0000000000..b53103bc49
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FTTC.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/FUN.svg b/src/problem2/fancy-form/public/assets/tokens/FUN.svg
new file mode 100644
index 0000000000..59cdc4bf25
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/FUN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GALA.svg b/src/problem2/fancy-form/public/assets/tokens/GALA.svg
new file mode 100644
index 0000000000..58a423f8bb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GALA.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GAMBIT.svg b/src/problem2/fancy-form/public/assets/tokens/GAMBIT.svg
new file mode 100644
index 0000000000..b2ef5aadb3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GAMBIT.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GAS.svg b/src/problem2/fancy-form/public/assets/tokens/GAS.svg
new file mode 100644
index 0000000000..3c31d75c0c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GAS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GBT.svg b/src/problem2/fancy-form/public/assets/tokens/GBT.svg
new file mode 100644
index 0000000000..7dcf617c3e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GBT.svg
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GLP.svg b/src/problem2/fancy-form/public/assets/tokens/GLP.svg
new file mode 100644
index 0000000000..c5eefed0ad
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GLP.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GM.svg b/src/problem2/fancy-form/public/assets/tokens/GM.svg
new file mode 100644
index 0000000000..7739426dcb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GM.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GMX.svg b/src/problem2/fancy-form/public/assets/tokens/GMX.svg
new file mode 100644
index 0000000000..80a8c19e74
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GMX.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GNO.svg b/src/problem2/fancy-form/public/assets/tokens/GNO.svg
new file mode 100644
index 0000000000..b53b4961bc
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GNO.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GNS.svg b/src/problem2/fancy-form/public/assets/tokens/GNS.svg
new file mode 100644
index 0000000000..f47eaabf71
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GNS.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GOAT.svg b/src/problem2/fancy-form/public/assets/tokens/GOAT.svg
new file mode 100644
index 0000000000..f52285aaa9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GOAT.svg
@@ -0,0 +1,2174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GRASS.svg b/src/problem2/fancy-form/public/assets/tokens/GRASS.svg
new file mode 100644
index 0000000000..caa370fffe
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GRASS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GRAV.svg b/src/problem2/fancy-form/public/assets/tokens/GRAV.svg
new file mode 100644
index 0000000000..658e155072
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GRAV.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GRT.svg b/src/problem2/fancy-form/public/assets/tokens/GRT.svg
new file mode 100644
index 0000000000..2d283004da
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GRT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/GT.svg b/src/problem2/fancy-form/public/assets/tokens/GT.svg
new file mode 100644
index 0000000000..6cb00ff5c5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/GT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HBAR.svg b/src/problem2/fancy-form/public/assets/tokens/HBAR.svg
new file mode 100644
index 0000000000..62d8831906
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HBAR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HDN.png b/src/problem2/fancy-form/public/assets/tokens/HDN.png
new file mode 100644
index 0000000000..fd7e612922
Binary files /dev/null and b/src/problem2/fancy-form/public/assets/tokens/HDN.png differ
diff --git a/src/problem2/fancy-form/public/assets/tokens/HDN.svg b/src/problem2/fancy-form/public/assets/tokens/HDN.svg
new file mode 100644
index 0000000000..f5fb0b1a70
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HDN.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HELMET.svg b/src/problem2/fancy-form/public/assets/tokens/HELMET.svg
new file mode 100644
index 0000000000..1a50859878
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HELMET.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HKT.svg b/src/problem2/fancy-form/public/assets/tokens/HKT.svg
new file mode 100644
index 0000000000..d2f5c930a7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HKT.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HNT.svg b/src/problem2/fancy-form/public/assets/tokens/HNT.svg
new file mode 100644
index 0000000000..402e236890
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HNT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HOPE.svg b/src/problem2/fancy-form/public/assets/tokens/HOPE.svg
new file mode 100644
index 0000000000..b7541ae4a9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HOPE.svg
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HOT.svg b/src/problem2/fancy-form/public/assets/tokens/HOT.svg
new file mode 100644
index 0000000000..eab9101a1f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HOT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HT.svg b/src/problem2/fancy-form/public/assets/tokens/HT.svg
new file mode 100644
index 0000000000..72cdfdd097
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HUAHUA.svg b/src/problem2/fancy-form/public/assets/tokens/HUAHUA.svg
new file mode 100644
index 0000000000..e94cd98d8d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HUAHUA.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HUNY.svg b/src/problem2/fancy-form/public/assets/tokens/HUNY.svg
new file mode 100644
index 0000000000..b06f2f5457
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HUNY.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/assets/tokens/HUSD.svg b/src/problem2/fancy-form/public/assets/tokens/HUSD.svg
new file mode 100644
index 0000000000..30b26c0373
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HUSD.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/HYPE.svg b/src/problem2/fancy-form/public/assets/tokens/HYPE.svg
new file mode 100644
index 0000000000..24eb8536f1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/HYPE.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IBCX.svg b/src/problem2/fancy-form/public/assets/tokens/IBCX.svg
new file mode 100644
index 0000000000..061c6ccefe
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IBCX.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ICP.svg b/src/problem2/fancy-form/public/assets/tokens/ICP.svg
new file mode 100644
index 0000000000..c7a99ba9bd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ICP.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ICX.svg b/src/problem2/fancy-form/public/assets/tokens/ICX.svg
new file mode 100644
index 0000000000..53efc54ef9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ICX.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IDT.svg b/src/problem2/fancy-form/public/assets/tokens/IDT.svg
new file mode 100644
index 0000000000..91288c58bf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IDT.svg
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/INIT.svg b/src/problem2/fancy-form/public/assets/tokens/INIT.svg
new file mode 100644
index 0000000000..47395f6439
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/INIT.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/INJ.svg b/src/problem2/fancy-form/public/assets/tokens/INJ.svg
new file mode 100644
index 0000000000..b6d304e498
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/INJ.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/INT.svg b/src/problem2/fancy-form/public/assets/tokens/INT.svg
new file mode 100644
index 0000000000..9ab0d29f35
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/INT.svg
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ION.svg b/src/problem2/fancy-form/public/assets/tokens/ION.svg
new file mode 100644
index 0000000000..adad5f300f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ION.svg
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IOST.svg b/src/problem2/fancy-form/public/assets/tokens/IOST.svg
new file mode 100644
index 0000000000..8f791796a3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IOST.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IOTX.svg b/src/problem2/fancy-form/public/assets/tokens/IOTX.svg
new file mode 100644
index 0000000000..97a8461838
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IOTX.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IOV.svg b/src/problem2/fancy-form/public/assets/tokens/IOV.svg
new file mode 100644
index 0000000000..2c37835fff
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IOV.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IP.svg b/src/problem2/fancy-form/public/assets/tokens/IP.svg
new file mode 100644
index 0000000000..be63bba6d7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IP.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IRIS.svg b/src/problem2/fancy-form/public/assets/tokens/IRIS.svg
new file mode 100644
index 0000000000..59b13b5aa6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IRIS.svg
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/IXO.svg b/src/problem2/fancy-form/public/assets/tokens/IXO.svg
new file mode 100644
index 0000000000..0d1fb10136
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/IXO.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/JPT.svg b/src/problem2/fancy-form/public/assets/tokens/JPT.svg
new file mode 100644
index 0000000000..14014e4cb8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/JPT.svg
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/JTO.svg b/src/problem2/fancy-form/public/assets/tokens/JTO.svg
new file mode 100644
index 0000000000..3ce7f51587
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/JTO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/JUNO.svg b/src/problem2/fancy-form/public/assets/tokens/JUNO.svg
new file mode 100644
index 0000000000..d65fb3da31
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/JUNO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/JUP.svg b/src/problem2/fancy-form/public/assets/tokens/JUP.svg
new file mode 100644
index 0000000000..adf9284819
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/JUP.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KAITO.svg b/src/problem2/fancy-form/public/assets/tokens/KAITO.svg
new file mode 100644
index 0000000000..f51471047a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KAITO.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KAS.svg b/src/problem2/fancy-form/public/assets/tokens/KAS.svg
new file mode 100644
index 0000000000..1c9ea6bc49
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KAS.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KBONK.svg b/src/problem2/fancy-form/public/assets/tokens/KBONK.svg
new file mode 100644
index 0000000000..5df777e894
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KBONK.svg
@@ -0,0 +1,424 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KCS.svg b/src/problem2/fancy-form/public/assets/tokens/KCS.svg
new file mode 100644
index 0000000000..a4b333dfb8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KCS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KFLOKI.svg b/src/problem2/fancy-form/public/assets/tokens/KFLOKI.svg
new file mode 100644
index 0000000000..d35699e87e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KFLOKI.svg
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KLAY.svg b/src/problem2/fancy-form/public/assets/tokens/KLAY.svg
new file mode 100644
index 0000000000..6f1d4cabef
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KLAY.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KMD.svg b/src/problem2/fancy-form/public/assets/tokens/KMD.svg
new file mode 100644
index 0000000000..62598658bb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KMD.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KNC.svg b/src/problem2/fancy-form/public/assets/tokens/KNC.svg
new file mode 100644
index 0000000000..d9ed00657f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KNC.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KPEPE.svg b/src/problem2/fancy-form/public/assets/tokens/KPEPE.svg
new file mode 100644
index 0000000000..92665e5502
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KPEPE.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KRT.svg b/src/problem2/fancy-form/public/assets/tokens/KRT.svg
new file mode 100644
index 0000000000..e6ea416cf6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KRT.svg
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KSHIB.svg b/src/problem2/fancy-form/public/assets/tokens/KSHIB.svg
new file mode 100644
index 0000000000..adbb2f009b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KSHIB.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KSM.svg b/src/problem2/fancy-form/public/assets/tokens/KSM.svg
new file mode 100644
index 0000000000..771f73596e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KSM.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/KUJI.svg b/src/problem2/fancy-form/public/assets/tokens/KUJI.svg
new file mode 100644
index 0000000000..7c169dd724
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/KUJI.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LAYER.svg b/src/problem2/fancy-form/public/assets/tokens/LAYER.svg
new file mode 100644
index 0000000000..9e9036df30
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LAYER.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LBTC.svg b/src/problem2/fancy-form/public/assets/tokens/LBTC.svg
new file mode 100644
index 0000000000..1476de62ab
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LBTC.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LDO.svg b/src/problem2/fancy-form/public/assets/tokens/LDO.svg
new file mode 100644
index 0000000000..c8860768cf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LDO.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LEO.svg b/src/problem2/fancy-form/public/assets/tokens/LEO.svg
new file mode 100644
index 0000000000..f94a11c945
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LEO.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LET.svg b/src/problem2/fancy-form/public/assets/tokens/LET.svg
new file mode 100644
index 0000000000..8f6a4a06e6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LET.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LIKE.svg b/src/problem2/fancy-form/public/assets/tokens/LIKE.svg
new file mode 100644
index 0000000000..a0ac6ac6ac
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LIKE.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LINK.svg b/src/problem2/fancy-form/public/assets/tokens/LINK.svg
new file mode 100644
index 0000000000..8484106a43
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LINK.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LKT.svg b/src/problem2/fancy-form/public/assets/tokens/LKT.svg
new file mode 100644
index 0000000000..f224ae0ff2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LKT.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LOOM.svg b/src/problem2/fancy-form/public/assets/tokens/LOOM.svg
new file mode 100644
index 0000000000..5ad0435613
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LOOM.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LOOP.svg b/src/problem2/fancy-form/public/assets/tokens/LOOP.svg
new file mode 100644
index 0000000000..6c69420439
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LOOP.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LOTA.svg b/src/problem2/fancy-form/public/assets/tokens/LOTA.svg
new file mode 100644
index 0000000000..10c742ae6d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LOTA.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LPLBTC_29MAY2025.svg b/src/problem2/fancy-form/public/assets/tokens/LPLBTC_29MAY2025.svg
new file mode 100644
index 0000000000..d75f81bcd5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LPLBTC_29MAY2025.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LPT.svg b/src/problem2/fancy-form/public/assets/tokens/LPT.svg
new file mode 100644
index 0000000000..c026842d93
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LPT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LPberaSTONE_10APR2025.svg b/src/problem2/fancy-form/public/assets/tokens/LPberaSTONE_10APR2025.svg
new file mode 100644
index 0000000000..24fd8ebe9a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LPberaSTONE_10APR2025.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LPcmETH_26JUN2025.svg b/src/problem2/fancy-form/public/assets/tokens/LPcmETH_26JUN2025.svg
new file mode 100644
index 0000000000..dd4bb6fbbc
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LPcmETH_26JUN2025.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LRC.svg b/src/problem2/fancy-form/public/assets/tokens/LRC.svg
new file mode 100644
index 0000000000..2319bb063d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LRC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LSI.svg b/src/problem2/fancy-form/public/assets/tokens/LSI.svg
new file mode 100644
index 0000000000..48618f66b3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LSI.svg
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LSK.svg b/src/problem2/fancy-form/public/assets/tokens/LSK.svg
new file mode 100644
index 0000000000..d7b38f123e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LSK.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LTC.svg b/src/problem2/fancy-form/public/assets/tokens/LTC.svg
new file mode 100644
index 0000000000..d734c3ac54
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LTC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUM.svg b/src/problem2/fancy-form/public/assets/tokens/LUM.svg
new file mode 100644
index 0000000000..8994d02ad5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUM.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUNA.svg b/src/problem2/fancy-form/public/assets/tokens/LUNA.svg
new file mode 100644
index 0000000000..6a839981dd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUNA.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUNAX.svg b/src/problem2/fancy-form/public/assets/tokens/LUNAX.svg
new file mode 100644
index 0000000000..afc19e17de
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUNAX.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUNC.svg b/src/problem2/fancy-form/public/assets/tokens/LUNC.svg
new file mode 100644
index 0000000000..fe40173c96
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUNC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUNI.svg b/src/problem2/fancy-form/public/assets/tokens/LUNI.svg
new file mode 100644
index 0000000000..1721643744
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUNI.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUNR.svg b/src/problem2/fancy-form/public/assets/tokens/LUNR.svg
new file mode 100644
index 0000000000..1b8b15237f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUNR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LUV.svg b/src/problem2/fancy-form/public/assets/tokens/LUV.svg
new file mode 100644
index 0000000000..0f7342c490
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LUV.svg
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/LVN.svg b/src/problem2/fancy-form/public/assets/tokens/LVN.svg
new file mode 100644
index 0000000000..65aac46ea5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/LVN.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/Liquid Staking Index.svg b/src/problem2/fancy-form/public/assets/tokens/Liquid Staking Index.svg
new file mode 100644
index 0000000000..58533746be
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/Liquid Staking Index.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/M87.svg b/src/problem2/fancy-form/public/assets/tokens/M87.svg
new file mode 100644
index 0000000000..77f8c882b5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/M87.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MANA.svg b/src/problem2/fancy-form/public/assets/tokens/MANA.svg
new file mode 100644
index 0000000000..0629467224
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MANA.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MANTA.svg b/src/problem2/fancy-form/public/assets/tokens/MANTA.svg
new file mode 100644
index 0000000000..1970537a1f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MANTA.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MARBLE.svg b/src/problem2/fancy-form/public/assets/tokens/MARBLE.svg
new file mode 100644
index 0000000000..4e9c2214f2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MARBLE.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MATH.svg b/src/problem2/fancy-form/public/assets/tokens/MATH.svg
new file mode 100644
index 0000000000..144d40f0bb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MATH.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MATIC.svg b/src/problem2/fancy-form/public/assets/tokens/MATIC.svg
new file mode 100644
index 0000000000..98d07c7d95
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MATIC.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MDX.svg b/src/problem2/fancy-form/public/assets/tokens/MDX.svg
new file mode 100644
index 0000000000..8f3b267801
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MDX.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ME.svg b/src/problem2/fancy-form/public/assets/tokens/ME.svg
new file mode 100644
index 0000000000..f354182728
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ME.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MED.svg b/src/problem2/fancy-form/public/assets/tokens/MED.svg
new file mode 100644
index 0000000000..900d139258
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MED.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MEME.svg b/src/problem2/fancy-form/public/assets/tokens/MEME.svg
new file mode 100644
index 0000000000..d784304a65
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MEME.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/METIS.svg b/src/problem2/fancy-form/public/assets/tokens/METIS.svg
new file mode 100644
index 0000000000..3bd43ffadb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/METIS.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MEW.svg b/src/problem2/fancy-form/public/assets/tokens/MEW.svg
new file mode 100644
index 0000000000..dc9532c537
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MEW.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MIAW.svg b/src/problem2/fancy-form/public/assets/tokens/MIAW.svg
new file mode 100644
index 0000000000..ddf46721c7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MIAW.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MILK.svg b/src/problem2/fancy-form/public/assets/tokens/MILK.svg
new file mode 100644
index 0000000000..e6a434e9c1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MILK.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MINA.svg b/src/problem2/fancy-form/public/assets/tokens/MINA.svg
new file mode 100644
index 0000000000..d5aafd7398
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MINA.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MINE.svg b/src/problem2/fancy-form/public/assets/tokens/MINE.svg
new file mode 100644
index 0000000000..ff71cab9e7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MINE.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MIOTA.svg b/src/problem2/fancy-form/public/assets/tokens/MIOTA.svg
new file mode 100644
index 0000000000..3d3c08c604
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MIOTA.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MIR.svg b/src/problem2/fancy-form/public/assets/tokens/MIR.svg
new file mode 100644
index 0000000000..0247791318
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MIR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MKR.svg b/src/problem2/fancy-form/public/assets/tokens/MKR.svg
new file mode 100644
index 0000000000..9a639d1374
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MKR.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MMOG.svg b/src/problem2/fancy-form/public/assets/tokens/MMOG.svg
new file mode 100644
index 0000000000..6bb1f33b10
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MMOG.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MNT.svg b/src/problem2/fancy-form/public/assets/tokens/MNT.svg
new file mode 100644
index 0000000000..1aa231ddd4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MNT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MNTA.svg b/src/problem2/fancy-form/public/assets/tokens/MNTA.svg
new file mode 100644
index 0000000000..e3b7cfa957
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MNTA.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MNTL.svg b/src/problem2/fancy-form/public/assets/tokens/MNTL.svg
new file mode 100644
index 0000000000..71e1c497e9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MNTL.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MON.svg b/src/problem2/fancy-form/public/assets/tokens/MON.svg
new file mode 100644
index 0000000000..be988333af
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MON.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MOODENG.svg b/src/problem2/fancy-form/public/assets/tokens/MOODENG.svg
new file mode 100644
index 0000000000..679ffc5b35
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MOODENG.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MORPHO.svg b/src/problem2/fancy-form/public/assets/tokens/MORPHO.svg
new file mode 100644
index 0000000000..a27a0fb363
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MORPHO.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/MYT.svg b/src/problem2/fancy-form/public/assets/tokens/MYT.svg
new file mode 100644
index 0000000000..92cbc6468d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/MYT.svg
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NANO.svg b/src/problem2/fancy-form/public/assets/tokens/NANO.svg
new file mode 100644
index 0000000000..9ed54dd843
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NANO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NAS.svg b/src/problem2/fancy-form/public/assets/tokens/NAS.svg
new file mode 100644
index 0000000000..071766c17c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NAS.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NAT.svg b/src/problem2/fancy-form/public/assets/tokens/NAT.svg
new file mode 100644
index 0000000000..d72f7e18fc
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NAT.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NEAR.svg b/src/problem2/fancy-form/public/assets/tokens/NEAR.svg
new file mode 100644
index 0000000000..7bc784c808
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NEAR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NEIROETH.svg b/src/problem2/fancy-form/public/assets/tokens/NEIROETH.svg
new file mode 100644
index 0000000000..3ced226feb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NEIROETH.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NEO.svg b/src/problem2/fancy-form/public/assets/tokens/NEO.svg
new file mode 100644
index 0000000000..d4a90e1b27
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NEO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NETA.svg b/src/problem2/fancy-form/public/assets/tokens/NETA.svg
new file mode 100644
index 0000000000..b617dbef98
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NETA.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NEX.svg b/src/problem2/fancy-form/public/assets/tokens/NEX.svg
new file mode 100644
index 0000000000..34be620b9e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NEX.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NEXO.svg b/src/problem2/fancy-form/public/assets/tokens/NEXO.svg
new file mode 100644
index 0000000000..4f8507a40f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NEXO.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NGM.svg b/src/problem2/fancy-form/public/assets/tokens/NGM.svg
new file mode 100644
index 0000000000..ebdc8a035d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NGM.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NIM.svg b/src/problem2/fancy-form/public/assets/tokens/NIM.svg
new file mode 100644
index 0000000000..ec74006b7c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NIM.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NKN.svg b/src/problem2/fancy-form/public/assets/tokens/NKN.svg
new file mode 100644
index 0000000000..e008ac5d71
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NKN.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NMR.svg b/src/problem2/fancy-form/public/assets/tokens/NMR.svg
new file mode 100644
index 0000000000..fcb458cafa
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NMR.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NOT.svg b/src/problem2/fancy-form/public/assets/tokens/NOT.svg
new file mode 100644
index 0000000000..5561ccec77
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NOT.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NOTE.svg b/src/problem2/fancy-form/public/assets/tokens/NOTE.svg
new file mode 100644
index 0000000000..9f44e1971f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NOTE.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NTRN-dATOM.svg b/src/problem2/fancy-form/public/assets/tokens/NTRN-dATOM.svg
new file mode 100644
index 0000000000..5b3303f21b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NTRN-dATOM.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NTRN.svg b/src/problem2/fancy-form/public/assets/tokens/NTRN.svg
new file mode 100644
index 0000000000..150a6137d2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NTRN.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/NXM.svg b/src/problem2/fancy-form/public/assets/tokens/NXM.svg
new file mode 100644
index 0000000000..165bc3b984
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/NXM.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OCEAN.svg b/src/problem2/fancy-form/public/assets/tokens/OCEAN.svg
new file mode 100644
index 0000000000..ad0f99d6ae
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OCEAN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OCH.svg b/src/problem2/fancy-form/public/assets/tokens/OCH.svg
new file mode 100644
index 0000000000..51c3f8e039
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OCH.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OGN.svg b/src/problem2/fancy-form/public/assets/tokens/OGN.svg
new file mode 100644
index 0000000000..e15dbac858
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OGN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OKB.svg b/src/problem2/fancy-form/public/assets/tokens/OKB.svg
new file mode 100644
index 0000000000..786f75ba42
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OKB.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OKT.svg b/src/problem2/fancy-form/public/assets/tokens/OKT.svg
new file mode 100644
index 0000000000..0afcd8a1cf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OKT.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OM.svg b/src/problem2/fancy-form/public/assets/tokens/OM.svg
new file mode 100644
index 0000000000..6305bd1560
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OM.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OMG.svg b/src/problem2/fancy-form/public/assets/tokens/OMG.svg
new file mode 100644
index 0000000000..2d3d8ae8e6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OMG.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OMG_2.svg b/src/problem2/fancy-form/public/assets/tokens/OMG_2.svg
new file mode 100644
index 0000000000..5735f9f726
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OMG_2.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OMI.svg b/src/problem2/fancy-form/public/assets/tokens/OMI.svg
new file mode 100644
index 0000000000..b1d5020084
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OMI.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OMNI.svg b/src/problem2/fancy-form/public/assets/tokens/OMNI.svg
new file mode 100644
index 0000000000..ea1ce8353d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OMNI.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ONDO.svg b/src/problem2/fancy-form/public/assets/tokens/ONDO.svg
new file mode 100644
index 0000000000..84482f794d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ONDO.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ONE.svg b/src/problem2/fancy-form/public/assets/tokens/ONE.svg
new file mode 100644
index 0000000000..63c1260c06
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ONE.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ONT.svg b/src/problem2/fancy-form/public/assets/tokens/ONT.svg
new file mode 100644
index 0000000000..93378b4745
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ONT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OP.svg b/src/problem2/fancy-form/public/assets/tokens/OP.svg
new file mode 100644
index 0000000000..b5feac7946
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OP.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OPUL.svg b/src/problem2/fancy-form/public/assets/tokens/OPUL.svg
new file mode 100644
index 0000000000..c7ae4dbf3e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OPUL.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ORDI.svg b/src/problem2/fancy-form/public/assets/tokens/ORDI.svg
new file mode 100644
index 0000000000..380181270d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ORDI.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ORION.svg b/src/problem2/fancy-form/public/assets/tokens/ORION.svg
new file mode 100644
index 0000000000..b5f9ba6fff
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ORION.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ORNE.svg b/src/problem2/fancy-form/public/assets/tokens/ORNE.svg
new file mode 100644
index 0000000000..d986b3f31e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ORNE.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OSMO.svg b/src/problem2/fancy-form/public/assets/tokens/OSMO.svg
new file mode 100644
index 0000000000..e98545517b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OSMO.svg
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OXT.svg b/src/problem2/fancy-form/public/assets/tokens/OXT.svg
new file mode 100644
index 0000000000..bba9547da1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OXT.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/OXY.svg b/src/problem2/fancy-form/public/assets/tokens/OXY.svg
new file mode 100644
index 0000000000..9175a0b900
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/OXY.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PAX.svg b/src/problem2/fancy-form/public/assets/tokens/PAX.svg
new file mode 100644
index 0000000000..32b0ef8211
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PAX.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PAXG.svg b/src/problem2/fancy-form/public/assets/tokens/PAXG.svg
new file mode 100644
index 0000000000..5ff89051f8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PAXG.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PENDLE.svg b/src/problem2/fancy-form/public/assets/tokens/PENDLE.svg
new file mode 100644
index 0000000000..367540fbb0
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PENDLE.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PENGU.svg b/src/problem2/fancy-form/public/assets/tokens/PENGU.svg
new file mode 100644
index 0000000000..a5c99add38
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PENGU.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PEPE.svg b/src/problem2/fancy-form/public/assets/tokens/PEPE.svg
new file mode 100644
index 0000000000..1e6ba151a3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PEPE.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PHT.svg b/src/problem2/fancy-form/public/assets/tokens/PHT.svg
new file mode 100644
index 0000000000..d515118058
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PHT.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PLAY.svg b/src/problem2/fancy-form/public/assets/tokens/PLAY.svg
new file mode 100644
index 0000000000..bae2577420
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PLAY.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PLQ.svg b/src/problem2/fancy-form/public/assets/tokens/PLQ.svg
new file mode 100644
index 0000000000..31b353bb45
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PLQ.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PLY.svg b/src/problem2/fancy-form/public/assets/tokens/PLY.svg
new file mode 100644
index 0000000000..c79b320445
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PLY.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PNUT.svg b/src/problem2/fancy-form/public/assets/tokens/PNUT.svg
new file mode 100644
index 0000000000..90abdb384d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PNUT.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/POL.svg b/src/problem2/fancy-form/public/assets/tokens/POL.svg
new file mode 100644
index 0000000000..ceff03709c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/POL.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/POLY.svg b/src/problem2/fancy-form/public/assets/tokens/POLY.svg
new file mode 100644
index 0000000000..b894fef5d5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/POLY.svg
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/POPCAT.svg b/src/problem2/fancy-form/public/assets/tokens/POPCAT.svg
new file mode 100644
index 0000000000..ab8fa4c5e5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/POPCAT.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PORT.svg b/src/problem2/fancy-form/public/assets/tokens/PORT.svg
new file mode 100644
index 0000000000..d846537361
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PORT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PROM.svg b/src/problem2/fancy-form/public/assets/tokens/PROM.svg
new file mode 100644
index 0000000000..044c9e3576
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PROM.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PSI.svg b/src/problem2/fancy-form/public/assets/tokens/PSI.svg
new file mode 100644
index 0000000000..674744b4e5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PSI.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PSTAKE.svg b/src/problem2/fancy-form/public/assets/tokens/PSTAKE.svg
new file mode 100644
index 0000000000..caf13d8d63
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PSTAKE.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PTLBTC_29MAY2025.svg b/src/problem2/fancy-form/public/assets/tokens/PTLBTC_29MAY2025.svg
new file mode 100644
index 0000000000..afb01c923b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PTLBTC_29MAY2025.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PTMETH_26DEC2024.svg b/src/problem2/fancy-form/public/assets/tokens/PTMETH_26DEC2024.svg
new file mode 100644
index 0000000000..3256ec9f5f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PTMETH_26DEC2024.svg
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PTberaSTONE_10APR2025.svg b/src/problem2/fancy-form/public/assets/tokens/PTberaSTONE_10APR2025.svg
new file mode 100644
index 0000000000..1444e75dfb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PTberaSTONE_10APR2025.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PTcmETH_26JUN2025.svg b/src/problem2/fancy-form/public/assets/tokens/PTcmETH_26JUN2025.svg
new file mode 100644
index 0000000000..860a1e3892
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PTcmETH_26JUN2025.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PUDGY.svg b/src/problem2/fancy-form/public/assets/tokens/PUDGY.svg
new file mode 100644
index 0000000000..239424d8cd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PUDGY.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PUMP.svg b/src/problem2/fancy-form/public/assets/tokens/PUMP.svg
new file mode 100644
index 0000000000..3b8ac28fda
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PUMP.svg
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PUNDIX.svg b/src/problem2/fancy-form/public/assets/tokens/PUNDIX.svg
new file mode 100644
index 0000000000..a522d0d26e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PUNDIX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PURR.svg b/src/problem2/fancy-form/public/assets/tokens/PURR.svg
new file mode 100644
index 0000000000..c8b82375cb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PURR.svg
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PURSE.svg b/src/problem2/fancy-form/public/assets/tokens/PURSE.svg
new file mode 100644
index 0000000000..9188e092de
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PURSE.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/PYTH.svg b/src/problem2/fancy-form/public/assets/tokens/PYTH.svg
new file mode 100644
index 0000000000..b34cc9ea3d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/PYTH.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/QCK.svg b/src/problem2/fancy-form/public/assets/tokens/QCK.svg
new file mode 100644
index 0000000000..358cb7dbbf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/QCK.svg
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/QKC.svg b/src/problem2/fancy-form/public/assets/tokens/QKC.svg
new file mode 100644
index 0000000000..e312777506
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/QKC.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/QNT.svg b/src/problem2/fancy-form/public/assets/tokens/QNT.svg
new file mode 100644
index 0000000000..a611eaa24a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/QNT.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/QTUM.svg b/src/problem2/fancy-form/public/assets/tokens/QTUM.svg
new file mode 100644
index 0000000000..e96f6cf2ca
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/QTUM.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RAY.svg b/src/problem2/fancy-form/public/assets/tokens/RAY.svg
new file mode 100644
index 0000000000..e769284e27
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RAY.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RBN.svg b/src/problem2/fancy-form/public/assets/tokens/RBN.svg
new file mode 100644
index 0000000000..ef40c376d8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RBN.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/REEF.svg b/src/problem2/fancy-form/public/assets/tokens/REEF.svg
new file mode 100644
index 0000000000..5c777f840f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/REEF.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/REGEN.svg b/src/problem2/fancy-form/public/assets/tokens/REGEN.svg
new file mode 100644
index 0000000000..242a4c66c9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/REGEN.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/REN.svg b/src/problem2/fancy-form/public/assets/tokens/REN.svg
new file mode 100644
index 0000000000..bae08ca56f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/REN.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/REP.svg b/src/problem2/fancy-form/public/assets/tokens/REP.svg
new file mode 100644
index 0000000000..c311970b6d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/REP.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/REV.svg b/src/problem2/fancy-form/public/assets/tokens/REV.svg
new file mode 100644
index 0000000000..6dcaa131aa
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/REV.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RLB.svg b/src/problem2/fancy-form/public/assets/tokens/RLB.svg
new file mode 100644
index 0000000000..344fe8e022
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RLB.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RLC.svg b/src/problem2/fancy-form/public/assets/tokens/RLC.svg
new file mode 100644
index 0000000000..c816edf016
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RLC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RNDR.svg b/src/problem2/fancy-form/public/assets/tokens/RNDR.svg
new file mode 100644
index 0000000000..031e8816b3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RNDR.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ROAR.svg b/src/problem2/fancy-form/public/assets/tokens/ROAR.svg
new file mode 100644
index 0000000000..d29ab09634
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ROAR.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ROWAN.svg b/src/problem2/fancy-form/public/assets/tokens/ROWAN.svg
new file mode 100644
index 0000000000..6b395742d4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ROWAN.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RSR.svg b/src/problem2/fancy-form/public/assets/tokens/RSR.svg
new file mode 100644
index 0000000000..f85bb78c23
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RSR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RUNE.svg b/src/problem2/fancy-form/public/assets/tokens/RUNE.svg
new file mode 100644
index 0000000000..ccbb65ceff
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RUNE.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/RVN.svg b/src/problem2/fancy-form/public/assets/tokens/RVN.svg
new file mode 100644
index 0000000000..4d6d30eeef
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/RVN.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/S.svg b/src/problem2/fancy-form/public/assets/tokens/S.svg
new file mode 100644
index 0000000000..b216a1804f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/S.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SAFEMOON.svg b/src/problem2/fancy-form/public/assets/tokens/SAFEMOON.svg
new file mode 100644
index 0000000000..9ff12873a5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SAFEMOON.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SAGA.svg b/src/problem2/fancy-form/public/assets/tokens/SAGA.svg
new file mode 100644
index 0000000000..53455ea0dd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SAGA.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SAND.svg b/src/problem2/fancy-form/public/assets/tokens/SAND.svg
new file mode 100644
index 0000000000..4e01196b45
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SAND.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SAYVE.svg b/src/problem2/fancy-form/public/assets/tokens/SAYVE.svg
new file mode 100644
index 0000000000..2cea35fc51
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SAYVE.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SC.svg b/src/problem2/fancy-form/public/assets/tokens/SC.svg
new file mode 100644
index 0000000000..aebc27644b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SCRT.svg b/src/problem2/fancy-form/public/assets/tokens/SCRT.svg
new file mode 100644
index 0000000000..9451de4116
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SCRT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SDT.svg b/src/problem2/fancy-form/public/assets/tokens/SDT.svg
new file mode 100644
index 0000000000..222a72897f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SDT.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SEI.svg b/src/problem2/fancy-form/public/assets/tokens/SEI.svg
new file mode 100644
index 0000000000..65ea99277e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SEI.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SET.svg b/src/problem2/fancy-form/public/assets/tokens/SET.svg
new file mode 100644
index 0000000000..f46a6ba24f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SET.svg
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SGT.svg b/src/problem2/fancy-form/public/assets/tokens/SGT.svg
new file mode 100644
index 0000000000..a975dece90
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SGT.svg
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SHD.svg b/src/problem2/fancy-form/public/assets/tokens/SHD.svg
new file mode 100644
index 0000000000..bdb7e6c29c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SHD.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SHIB.svg b/src/problem2/fancy-form/public/assets/tokens/SHIB.svg
new file mode 100644
index 0000000000..adbb2f009b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SHIB.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SHIDO.svg b/src/problem2/fancy-form/public/assets/tokens/SHIDO.svg
new file mode 100644
index 0000000000..bd7deeeb4b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SHIDO.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SITY.svg b/src/problem2/fancy-form/public/assets/tokens/SITY.svg
new file mode 100644
index 0000000000..7cfb8209bf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SITY.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SLERF.svg b/src/problem2/fancy-form/public/assets/tokens/SLERF.svg
new file mode 100644
index 0000000000..713f29af95
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SLERF.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SNT.svg b/src/problem2/fancy-form/public/assets/tokens/SNT.svg
new file mode 100644
index 0000000000..cc8ad2df4c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SNT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SNX.svg b/src/problem2/fancy-form/public/assets/tokens/SNX.svg
new file mode 100644
index 0000000000..14e0591389
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SNX.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SOL.svg b/src/problem2/fancy-form/public/assets/tokens/SOL.svg
new file mode 100644
index 0000000000..0568e80881
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SOL.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SOLETH.svg b/src/problem2/fancy-form/public/assets/tokens/SOLETH.svg
new file mode 100644
index 0000000000..c7f81893f8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SOLETH.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SOM.svg b/src/problem2/fancy-form/public/assets/tokens/SOM.svg
new file mode 100644
index 0000000000..778bf9b5c9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SOM.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SOMM.svg b/src/problem2/fancy-form/public/assets/tokens/SOMM.svg
new file mode 100644
index 0000000000..fa82d261ee
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SOMM.svg
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SPEC.svg b/src/problem2/fancy-form/public/assets/tokens/SPEC.svg
new file mode 100644
index 0000000000..75c9b37b2b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SPEC.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SRM.svg b/src/problem2/fancy-form/public/assets/tokens/SRM.svg
new file mode 100644
index 0000000000..e488de82db
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SRM.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SRV.svg b/src/problem2/fancy-form/public/assets/tokens/SRV.svg
new file mode 100644
index 0000000000..b15a61c77f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SRV.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STARS.svg b/src/problem2/fancy-form/public/assets/tokens/STARS.svg
new file mode 100644
index 0000000000..de6d376db8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STARS.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STEEM.svg b/src/problem2/fancy-form/public/assets/tokens/STEEM.svg
new file mode 100644
index 0000000000..503009b90d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STEEM.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STMX.svg b/src/problem2/fancy-form/public/assets/tokens/STMX.svg
new file mode 100644
index 0000000000..976e86474b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STMX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STORJ.svg b/src/problem2/fancy-form/public/assets/tokens/STORJ.svg
new file mode 100644
index 0000000000..85a332a6ce
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STORJ.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STRAX.svg b/src/problem2/fancy-form/public/assets/tokens/STRAX.svg
new file mode 100644
index 0000000000..a34822931d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STRAX.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STRD.svg b/src/problem2/fancy-form/public/assets/tokens/STRD.svg
new file mode 100644
index 0000000000..f25a48536c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STRD.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STREAM.svg b/src/problem2/fancy-form/public/assets/tokens/STREAM.svg
new file mode 100644
index 0000000000..fba4ce0609
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STREAM.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STRK.svg b/src/problem2/fancy-form/public/assets/tokens/STRK.svg
new file mode 100644
index 0000000000..22c139824d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STRK.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STT.svg b/src/problem2/fancy-form/public/assets/tokens/STT.svg
new file mode 100644
index 0000000000..d37590a8d3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/STX.svg b/src/problem2/fancy-form/public/assets/tokens/STX.svg
new file mode 100644
index 0000000000..ed89fc9276
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/STX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SUI.svg b/src/problem2/fancy-form/public/assets/tokens/SUI.svg
new file mode 100644
index 0000000000..7687a88042
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SUI.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SUN.svg b/src/problem2/fancy-form/public/assets/tokens/SUN.svg
new file mode 100644
index 0000000000..1159b6cbfd
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SUN.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SUSHI.svg b/src/problem2/fancy-form/public/assets/tokens/SUSHI.svg
new file mode 100644
index 0000000000..e118f213b5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SUSHI.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SWTH-LEGACY.svg b/src/problem2/fancy-form/public/assets/tokens/SWTH-LEGACY.svg
new file mode 100644
index 0000000000..60ba0650e1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SWTH-LEGACY.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SWTH.svg b/src/problem2/fancy-form/public/assets/tokens/SWTH.svg
new file mode 100644
index 0000000000..353c1b5bcc
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SWTH.svg
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/SXP.svg b/src/problem2/fancy-form/public/assets/tokens/SXP.svg
new file mode 100644
index 0000000000..89fd3b147e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/SXP.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TAO.svg b/src/problem2/fancy-form/public/assets/tokens/TAO.svg
new file mode 100644
index 0000000000..9f0dbfcf8e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TAO.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TEL.svg b/src/problem2/fancy-form/public/assets/tokens/TEL.svg
new file mode 100644
index 0000000000..2992514bf1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TEL.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TFUEL.svg b/src/problem2/fancy-form/public/assets/tokens/TFUEL.svg
new file mode 100644
index 0000000000..d57d7d9493
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TFUEL.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/THETA.svg b/src/problem2/fancy-form/public/assets/tokens/THETA.svg
new file mode 100644
index 0000000000..8ff93f4019
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/THETA.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/THT.svg b/src/problem2/fancy-form/public/assets/tokens/THT.svg
new file mode 100644
index 0000000000..8ee5eb9ff3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/THT.svg
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TIA.svg b/src/problem2/fancy-form/public/assets/tokens/TIA.svg
new file mode 100644
index 0000000000..41d8ab96c1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TIA.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TICK.svg b/src/problem2/fancy-form/public/assets/tokens/TICK.svg
new file mode 100644
index 0000000000..3be70db269
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TICK.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TITAN.svg b/src/problem2/fancy-form/public/assets/tokens/TITAN.svg
new file mode 100644
index 0000000000..d52faa138c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TITAN.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TLAND.svg b/src/problem2/fancy-form/public/assets/tokens/TLAND.svg
new file mode 100644
index 0000000000..9f9e3e2330
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TLAND.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TLM.svg b/src/problem2/fancy-form/public/assets/tokens/TLM.svg
new file mode 100644
index 0000000000..1fe3283fee
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TLM.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TOMO.svg b/src/problem2/fancy-form/public/assets/tokens/TOMO.svg
new file mode 100644
index 0000000000..45bda83d4b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TOMO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TON.svg b/src/problem2/fancy-form/public/assets/tokens/TON.svg
new file mode 100644
index 0000000000..c1e0b91485
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TON.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TPC.svg b/src/problem2/fancy-form/public/assets/tokens/TPC.svg
new file mode 100644
index 0000000000..29f8a4af8d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TPC.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TRAXX.svg b/src/problem2/fancy-form/public/assets/tokens/TRAXX.svg
new file mode 100644
index 0000000000..05c2ec0999
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TRAXX.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TRB.svg b/src/problem2/fancy-form/public/assets/tokens/TRB.svg
new file mode 100644
index 0000000000..e319e65d7e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TRB.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TRU.svg b/src/problem2/fancy-form/public/assets/tokens/TRU.svg
new file mode 100644
index 0000000000..29ddc8ac24
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TRU.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TRUMP.svg b/src/problem2/fancy-form/public/assets/tokens/TRUMP.svg
new file mode 100644
index 0000000000..2571b5e20f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TRUMP.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TRX.svg b/src/problem2/fancy-form/public/assets/tokens/TRX.svg
new file mode 100644
index 0000000000..c105ddc307
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TRX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TTT.svg b/src/problem2/fancy-form/public/assets/tokens/TTT.svg
new file mode 100644
index 0000000000..13e6080a8a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TTT.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TUSD.svg b/src/problem2/fancy-form/public/assets/tokens/TUSD.svg
new file mode 100644
index 0000000000..712ec923da
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TUSD.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TWD.svg b/src/problem2/fancy-form/public/assets/tokens/TWD.svg
new file mode 100644
index 0000000000..014f525557
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TWD.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/TWT.svg b/src/problem2/fancy-form/public/assets/tokens/TWT.svg
new file mode 100644
index 0000000000..b67bf37535
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/TWT.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/Token.svg b/src/problem2/fancy-form/public/assets/tokens/Token.svg
new file mode 100644
index 0000000000..bed64e2942
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/Token.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/UBQ.svg b/src/problem2/fancy-form/public/assets/tokens/UBQ.svg
new file mode 100644
index 0000000000..139af049ce
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/UBQ.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/UMEE.svg b/src/problem2/fancy-form/public/assets/tokens/UMEE.svg
new file mode 100644
index 0000000000..f9243257df
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/UMEE.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/UNA.svg b/src/problem2/fancy-form/public/assets/tokens/UNA.svg
new file mode 100644
index 0000000000..077c1555e7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/UNA.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/UNI.svg b/src/problem2/fancy-form/public/assets/tokens/UNI.svg
new file mode 100644
index 0000000000..37996b6c05
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/UNI.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/UOS.svg b/src/problem2/fancy-form/public/assets/tokens/UOS.svg
new file mode 100644
index 0000000000..eb07c3cce8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/UOS.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USC-Minted.svg b/src/problem2/fancy-form/public/assets/tokens/USC-Minted.svg
new file mode 100644
index 0000000000..466cda74f0
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USC-Minted.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USC.svg b/src/problem2/fancy-form/public/assets/tokens/USC.svg
new file mode 100644
index 0000000000..32bd9541f5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USC.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USD.svg b/src/problem2/fancy-form/public/assets/tokens/USD.svg
new file mode 100644
index 0000000000..abf67ab105
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USD.svg
@@ -0,0 +1,8 @@
+
+
+ Token Symbol/USD
+
+
+
+
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDC-dATOM.svg b/src/problem2/fancy-form/public/assets/tokens/USDC-dATOM.svg
new file mode 100644
index 0000000000..7202b50ae7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDC-dATOM.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDC.e.svg b/src/problem2/fancy-form/public/assets/tokens/USDC.e.svg
new file mode 100644
index 0000000000..eee4251a7b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDC.e.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDC.grv.svg b/src/problem2/fancy-form/public/assets/tokens/USDC.grv.svg
new file mode 100644
index 0000000000..458ab4901a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDC.grv.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDC.svg b/src/problem2/fancy-form/public/assets/tokens/USDC.svg
new file mode 100644
index 0000000000..eee4251a7b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDP.svg b/src/problem2/fancy-form/public/assets/tokens/USDP.svg
new file mode 100644
index 0000000000..b7e76ff9d1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDP.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDT.svg b/src/problem2/fancy-form/public/assets/tokens/USDT.svg
new file mode 100644
index 0000000000..8b3986d057
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USDY.svg b/src/problem2/fancy-form/public/assets/tokens/USDY.svg
new file mode 100644
index 0000000000..118da5939c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USDY.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USK.svg b/src/problem2/fancy-form/public/assets/tokens/USK.svg
new file mode 100644
index 0000000000..15ba03fe9d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USK.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/UST.svg b/src/problem2/fancy-form/public/assets/tokens/UST.svg
new file mode 100644
index 0000000000..2a0a597074
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/UST.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/USUAL.svg b/src/problem2/fancy-form/public/assets/tokens/USUAL.svg
new file mode 100644
index 0000000000..1bdf52827d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/USUAL.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/VDL.svg b/src/problem2/fancy-form/public/assets/tokens/VDL.svg
new file mode 100644
index 0000000000..d839e0da4d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/VDL.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/VET.svg b/src/problem2/fancy-form/public/assets/tokens/VET.svg
new file mode 100644
index 0000000000..88ebf982a5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/VET.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/VIRTUAL.svg b/src/problem2/fancy-form/public/assets/tokens/VIRTUAL.svg
new file mode 100644
index 0000000000..7d623039a9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/VIRTUAL.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/VKR.svg b/src/problem2/fancy-form/public/assets/tokens/VKR.svg
new file mode 100644
index 0000000000..cb3c68d595
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/VKR.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/VRTX.svg b/src/problem2/fancy-form/public/assets/tokens/VRTX.svg
new file mode 100644
index 0000000000..8cb3dc30ef
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/VRTX.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/W.svg b/src/problem2/fancy-form/public/assets/tokens/W.svg
new file mode 100644
index 0000000000..95823f2252
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/W.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WAL.svg b/src/problem2/fancy-form/public/assets/tokens/WAL.svg
new file mode 100644
index 0000000000..8d06c07e14
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WAL.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WAVAX.svg b/src/problem2/fancy-form/public/assets/tokens/WAVAX.svg
new file mode 100644
index 0000000000..e244ad3aa6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WAVAX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WAVE.svg b/src/problem2/fancy-form/public/assets/tokens/WAVE.svg
new file mode 100644
index 0000000000..2ca6ac0708
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WAVE.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WBNB.svg b/src/problem2/fancy-form/public/assets/tokens/WBNB.svg
new file mode 100644
index 0000000000..e45c696b5c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WBNB.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WBTC.svg b/src/problem2/fancy-form/public/assets/tokens/WBTC.svg
new file mode 100644
index 0000000000..b597b84a4a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WBTC.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WETH.svg b/src/problem2/fancy-form/public/assets/tokens/WETH.svg
new file mode 100644
index 0000000000..cba6f1d783
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WETH.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WHALE.svg b/src/problem2/fancy-form/public/assets/tokens/WHALE.svg
new file mode 100644
index 0000000000..a42a2449d8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WHALE.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WIF.svg b/src/problem2/fancy-form/public/assets/tokens/WIF.svg
new file mode 100644
index 0000000000..6df4ea15a2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WIF.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WIN.svg b/src/problem2/fancy-form/public/assets/tokens/WIN.svg
new file mode 100644
index 0000000000..bc2435409b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WIN.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WLD.svg b/src/problem2/fancy-form/public/assets/tokens/WLD.svg
new file mode 100644
index 0000000000..62191032d6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WLD.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WMATIC.svg b/src/problem2/fancy-form/public/assets/tokens/WMATIC.svg
new file mode 100644
index 0000000000..ba0630b510
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WMATIC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WMNT.svg b/src/problem2/fancy-form/public/assets/tokens/WMNT.svg
new file mode 100644
index 0000000000..8b8784b36a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WMNT.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/WMON.png b/src/problem2/fancy-form/public/assets/tokens/WMON.png
new file mode 100644
index 0000000000..452cae24b2
Binary files /dev/null and b/src/problem2/fancy-form/public/assets/tokens/WMON.png differ
diff --git a/src/problem2/fancy-form/public/assets/tokens/WRX.svg b/src/problem2/fancy-form/public/assets/tokens/WRX.svg
new file mode 100644
index 0000000000..543f570909
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/WRX.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XCAD.svg b/src/problem2/fancy-form/public/assets/tokens/XCAD.svg
new file mode 100644
index 0000000000..545a88d1b9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XCAD.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XDC.svg b/src/problem2/fancy-form/public/assets/tokens/XDC.svg
new file mode 100644
index 0000000000..c90381022e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XDC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XEM.svg b/src/problem2/fancy-form/public/assets/tokens/XEM.svg
new file mode 100644
index 0000000000..da54e72a22
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XEM.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XKI.svg b/src/problem2/fancy-form/public/assets/tokens/XKI.svg
new file mode 100644
index 0000000000..dd5fea7cf0
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XKI.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XLM.svg b/src/problem2/fancy-form/public/assets/tokens/XLM.svg
new file mode 100644
index 0000000000..d836619c15
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XLM.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XMR.svg b/src/problem2/fancy-form/public/assets/tokens/XMR.svg
new file mode 100644
index 0000000000..475a95cb7d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XMR.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XPRT.svg b/src/problem2/fancy-form/public/assets/tokens/XPRT.svg
new file mode 100644
index 0000000000..7ecd4ace95
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XPRT.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XRP.svg b/src/problem2/fancy-form/public/assets/tokens/XRP.svg
new file mode 100644
index 0000000000..b3d441bf40
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XRP.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XSGD.svg b/src/problem2/fancy-form/public/assets/tokens/XSGD.svg
new file mode 100644
index 0000000000..f04caab93b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XSGD.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XTRA.svg b/src/problem2/fancy-form/public/assets/tokens/XTRA.svg
new file mode 100644
index 0000000000..1c6367d3be
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XTRA.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XTZ.svg b/src/problem2/fancy-form/public/assets/tokens/XTZ.svg
new file mode 100644
index 0000000000..28b924e5c7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XTZ.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XVG.svg b/src/problem2/fancy-form/public/assets/tokens/XVG.svg
new file mode 100644
index 0000000000..537378cff6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XVG.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/XVS.svg b/src/problem2/fancy-form/public/assets/tokens/XVS.svg
new file mode 100644
index 0000000000..3176f9fb66
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/XVS.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/YAKI.svg b/src/problem2/fancy-form/public/assets/tokens/YAKI.svg
new file mode 100644
index 0000000000..5179eb95aa
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/YAKI.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/YAM.svg b/src/problem2/fancy-form/public/assets/tokens/YAM.svg
new file mode 100644
index 0000000000..2e8a654216
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/YAM.svg
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/YFI.svg b/src/problem2/fancy-form/public/assets/tokens/YFI.svg
new file mode 100644
index 0000000000..b7674608b7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/YFI.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/YieldUSD.svg b/src/problem2/fancy-form/public/assets/tokens/YieldUSD.svg
new file mode 100644
index 0000000000..e435a687c9
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/YieldUSD.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZCH.svg b/src/problem2/fancy-form/public/assets/tokens/ZCH.svg
new file mode 100644
index 0000000000..1e9d4250d4
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZCH.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZEC.svg b/src/problem2/fancy-form/public/assets/tokens/ZEC.svg
new file mode 100644
index 0000000000..b6b86dcc1d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZEC.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZEN.svg b/src/problem2/fancy-form/public/assets/tokens/ZEN.svg
new file mode 100644
index 0000000000..b305169acb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZEN.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZIL.svg b/src/problem2/fancy-form/public/assets/tokens/ZIL.svg
new file mode 100644
index 0000000000..c89e8ce16f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZIL.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZRO.svg b/src/problem2/fancy-form/public/assets/tokens/ZRO.svg
new file mode 100644
index 0000000000..e485e3b2ab
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZRO.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZRX.svg b/src/problem2/fancy-form/public/assets/tokens/ZRX.svg
new file mode 100644
index 0000000000..f42e914a6a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZRX.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ZWAP.svg b/src/problem2/fancy-form/public/assets/tokens/ZWAP.svg
new file mode 100644
index 0000000000..130d14d73b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ZWAP.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ampKUJI.svg b/src/problem2/fancy-form/public/assets/tokens/ampKUJI.svg
new file mode 100644
index 0000000000..2692787da5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ampKUJI.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ampLUNA.svg b/src/problem2/fancy-form/public/assets/tokens/ampLUNA.svg
new file mode 100644
index 0000000000..ebeab58687
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ampLUNA.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/axlUSDC.svg b/src/problem2/fancy-form/public/assets/tokens/axlUSDC.svg
new file mode 100644
index 0000000000..fc879f679a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/axlUSDC.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/bCFX.svg b/src/problem2/fancy-form/public/assets/tokens/bCFX.svg
new file mode 100644
index 0000000000..07e8c434db
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/bCFX.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/bNEO.svg b/src/problem2/fancy-form/public/assets/tokens/bNEO.svg
new file mode 100644
index 0000000000..561b2282d8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/bNEO.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/beraSTONE.svg b/src/problem2/fancy-form/public/assets/tokens/beraSTONE.svg
new file mode 100644
index 0000000000..3da255f504
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/beraSTONE.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/cUSD.svg b/src/problem2/fancy-form/public/assets/tokens/cUSD.svg
new file mode 100644
index 0000000000..33407ebc96
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/cUSD.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/cbBTC.svg b/src/problem2/fancy-form/public/assets/tokens/cbBTC.svg
new file mode 100644
index 0000000000..77fee5c013
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/cbBTC.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/cbETH.svg b/src/problem2/fancy-form/public/assets/tokens/cbETH.svg
new file mode 100644
index 0000000000..5a18b92644
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/cbETH.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/cmETH.svg b/src/problem2/fancy-form/public/assets/tokens/cmETH.svg
new file mode 100644
index 0000000000..0a82791d04
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/cmETH.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/dATOM.svg b/src/problem2/fancy-form/public/assets/tokens/dATOM.svg
new file mode 100644
index 0000000000..b73e04155e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/dATOM.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/dGLP.svg b/src/problem2/fancy-form/public/assets/tokens/dGLP.svg
new file mode 100644
index 0000000000..84cac9cdeb
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/dGLP.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/dINJ.svg b/src/problem2/fancy-form/public/assets/tokens/dINJ.svg
new file mode 100644
index 0000000000..05b1763cc2
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/dINJ.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/dXCAD.svg b/src/problem2/fancy-form/public/assets/tokens/dXCAD.svg
new file mode 100644
index 0000000000..881f50fd02
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/dXCAD.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/eGLD.svg b/src/problem2/fancy-form/public/assets/tokens/eGLD.svg
new file mode 100644
index 0000000000..e42ad2510e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/eGLD.svg
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/ePLAY.svg b/src/problem2/fancy-form/public/assets/tokens/ePLAY.svg
new file mode 100644
index 0000000000..bae2577420
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/ePLAY.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/esFLUO.svg b/src/problem2/fancy-form/public/assets/tokens/esFLUO.svg
new file mode 100644
index 0000000000..0b69ed3189
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/esFLUO.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/gZIL.svg b/src/problem2/fancy-form/public/assets/tokens/gZIL.svg
new file mode 100644
index 0000000000..27334389ba
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/gZIL.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/iSEI.svg b/src/problem2/fancy-form/public/assets/tokens/iSEI.svg
new file mode 100644
index 0000000000..246b86f8a1
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/iSEI.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/iUSD.svg b/src/problem2/fancy-form/public/assets/tokens/iUSD.svg
new file mode 100644
index 0000000000..ca263a0474
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/iUSD.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/mETH.svg b/src/problem2/fancy-form/public/assets/tokens/mETH.svg
new file mode 100644
index 0000000000..6d6d5d0762
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/mETH.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/milkTIA.svg b/src/problem2/fancy-form/public/assets/tokens/milkTIA.svg
new file mode 100644
index 0000000000..d595abfa30
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/milkTIA.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/nLEND.svg b/src/problem2/fancy-form/public/assets/tokens/nLEND.svg
new file mode 100644
index 0000000000..d5c91b274f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/nLEND.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/nNEO.svg b/src/problem2/fancy-form/public/assets/tokens/nNEO.svg
new file mode 100644
index 0000000000..d4a90e1b27
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/nNEO.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/rATOM.svg b/src/problem2/fancy-form/public/assets/tokens/rATOM.svg
new file mode 100644
index 0000000000..8cd5f8056f
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/rATOM.svg
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/rSWTH.svg b/src/problem2/fancy-form/public/assets/tokens/rSWTH.svg
new file mode 100644
index 0000000000..d5250ff90d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/rSWTH.svg
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/sARCH.svg b/src/problem2/fancy-form/public/assets/tokens/sARCH.svg
new file mode 100644
index 0000000000..3ec2b656f0
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/sARCH.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stATOM.svg b/src/problem2/fancy-form/public/assets/tokens/stATOM.svg
new file mode 100644
index 0000000000..c3e505f8b3
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stATOM.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stDYDX.svg b/src/problem2/fancy-form/public/assets/tokens/stDYDX.svg
new file mode 100644
index 0000000000..6d851637a8
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stDYDX.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stDYM.svg b/src/problem2/fancy-form/public/assets/tokens/stDYM.svg
new file mode 100644
index 0000000000..d961755725
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stDYM.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stETH.svg b/src/problem2/fancy-form/public/assets/tokens/stETH.svg
new file mode 100644
index 0000000000..8c490e47f0
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stETH.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stEVMOS.svg b/src/problem2/fancy-form/public/assets/tokens/stEVMOS.svg
new file mode 100644
index 0000000000..a2a8888208
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stEVMOS.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/assets/tokens/stFLUO.svg b/src/problem2/fancy-form/public/assets/tokens/stFLUO.svg
new file mode 100644
index 0000000000..bf182c96de
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stFLUO.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stIBCX.svg b/src/problem2/fancy-form/public/assets/tokens/stIBCX.svg
new file mode 100644
index 0000000000..8a10d241d5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stIBCX.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stINJ.svg b/src/problem2/fancy-form/public/assets/tokens/stINJ.svg
new file mode 100644
index 0000000000..6b97bec4f7
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stINJ.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stJUNO.svg b/src/problem2/fancy-form/public/assets/tokens/stJUNO.svg
new file mode 100644
index 0000000000..8d92f375c6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stJUNO.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stLUNA.svg b/src/problem2/fancy-form/public/assets/tokens/stLUNA.svg
new file mode 100644
index 0000000000..606be7947d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stLUNA.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/assets/tokens/stOKT.svg b/src/problem2/fancy-form/public/assets/tokens/stOKT.svg
new file mode 100644
index 0000000000..33b541d11d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stOKT.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stOSMO.svg b/src/problem2/fancy-form/public/assets/tokens/stOSMO.svg
new file mode 100644
index 0000000000..73d296046b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stOSMO.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stSAGA.svg b/src/problem2/fancy-form/public/assets/tokens/stSAGA.svg
new file mode 100644
index 0000000000..d6092fc7cf
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stSAGA.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stSTARS.svg b/src/problem2/fancy-form/public/assets/tokens/stSTARS.svg
new file mode 100644
index 0000000000..ffc7def96a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stSTARS.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stTIA.svg b/src/problem2/fancy-form/public/assets/tokens/stTIA.svg
new file mode 100644
index 0000000000..3d3e28470d
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stTIA.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stZIL.svg b/src/problem2/fancy-form/public/assets/tokens/stZIL.svg
new file mode 100644
index 0000000000..81323f746a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stZIL.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stkATOM.svg b/src/problem2/fancy-form/public/assets/tokens/stkATOM.svg
new file mode 100644
index 0000000000..1e6c7a2b2c
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stkATOM.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stkDYDX.svg b/src/problem2/fancy-form/public/assets/tokens/stkDYDX.svg
new file mode 100644
index 0000000000..2d2883a9e6
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stkDYDX.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/stkSTARS.svg b/src/problem2/fancy-form/public/assets/tokens/stkSTARS.svg
new file mode 100644
index 0000000000..97e87da6ea
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/stkSTARS.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/vZWAP.svg b/src/problem2/fancy-form/public/assets/tokens/vZWAP.svg
new file mode 100644
index 0000000000..0874b89e8b
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/vZWAP.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/veFLUO.svg b/src/problem2/fancy-form/public/assets/tokens/veFLUO.svg
new file mode 100644
index 0000000000..3624b5647a
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/veFLUO.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/wKAS.svg b/src/problem2/fancy-form/public/assets/tokens/wKAS.svg
new file mode 100644
index 0000000000..14185747c5
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/wKAS.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/assets/tokens/wstETH.svg b/src/problem2/fancy-form/public/assets/tokens/wstETH.svg
new file mode 100644
index 0000000000..15c8a9716e
--- /dev/null
+++ b/src/problem2/fancy-form/public/assets/tokens/wstETH.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/public/favicon.svg b/src/problem2/fancy-form/public/favicon.svg
new file mode 100644
index 0000000000..6893eb1323
--- /dev/null
+++ b/src/problem2/fancy-form/public/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/icons.svg b/src/problem2/fancy-form/public/icons.svg
new file mode 100644
index 0000000000..e9522193d9
--- /dev/null
+++ b/src/problem2/fancy-form/public/icons.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/src/App.tsx b/src/problem2/fancy-form/src/App.tsx
new file mode 100644
index 0000000000..74f4fafbf3
--- /dev/null
+++ b/src/problem2/fancy-form/src/App.tsx
@@ -0,0 +1,26 @@
+import { SwapCard } from "./components/swap/swap-card";
+
+function App() {
+ return (
+
+ );
+}
+
+export default App;
diff --git a/src/problem2/fancy-form/src/components/swap/amount-panel.tsx b/src/problem2/fancy-form/src/components/swap/amount-panel.tsx
new file mode 100644
index 0000000000..2b31b53e7c
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/swap/amount-panel.tsx
@@ -0,0 +1,109 @@
+import { useRef } from "react";
+import { Token } from "../../types";
+import { TokenSelector } from "./token-selector";
+import { cn, parseAmount } from "../../utils";
+import { formatUSDValue } from "../../utils/format";
+
+interface AmountPanelProps {
+ label: string;
+ sublabel: string;
+ amount: string;
+ token: Token;
+ onAmountChange?: (value: string) => void;
+ onTokenChange: (token: Token) => void;
+ readonly?: boolean;
+ excludeSymbol?: string;
+ isLoading?: boolean;
+}
+
+export function AmountPanel({
+ label,
+ sublabel,
+ amount,
+ token,
+ onAmountChange,
+ onTokenChange,
+ readonly = false,
+ excludeSymbol,
+ isLoading = false,
+}: AmountPanelProps) {
+ const inputRef = useRef(null);
+ const usdValue = formatUSDValue(parseAmount(amount), token?.price);
+
+ const handleInput = (e: React.ChangeEvent) => {
+ const val = e.target.value;
+ if (/^[\d.]*$/.test(val)) {
+ onAmountChange?.(val);
+ }
+ };
+
+ return (
+ !readonly && inputRef.current?.focus()}
+ >
+
+
+ {label}
+
+
+ {sublabel}
+
+ {(token?.balance ?? 0).toLocaleString("en-US", {
+ maximumFractionDigits: 4,
+ })}
+
+
+
+
+ {/* Input row */}
+
+
+ {isLoading ? (
+
+
+ {[0, 1, 2].map((i) => (
+
+ ))}
+
+
+ ) : (
+
+ )}
+
+
+ {parseAmount(amount) > 0 && !isLoading && usdValue}
+
+
+
+
+
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/swap/success-modal.tsx b/src/problem2/fancy-form/src/components/swap/success-modal.tsx
new file mode 100644
index 0000000000..497ad6ee7e
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/swap/success-modal.tsx
@@ -0,0 +1,107 @@
+import { CheckCircle, X } from "lucide-react";
+import { Token } from "../../types";
+import { TokenIcon } from "./token-icon";
+import { Button } from "../ui/button";
+import { motion } from "framer-motion";
+import { cn } from "../../utils";
+
+interface SuccessModalProps {
+ fromAmount: string;
+ toAmount: string;
+ fromToken: Token;
+ toToken: Token;
+ onClose: () => void;
+}
+
+export function SuccessModal({
+ fromAmount,
+ toAmount,
+ fromToken,
+ toToken,
+ onClose,
+}: SuccessModalProps) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Swap Confirmed!
+
+ Your transaction was submitted successfully
+
+
+
+
+
+
+
+
+ -{fromAmount}
+
+
+ {fromToken.symbol}
+
+
+
+
+ →
+
+
+
+
+
+ +{parseFloat(toAmount).toFixed(4)}
+
+
+ {toToken.symbol}
+
+
+
+
+
+
+
+
+ Done
+
+
+
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/swap/swap-card.tsx b/src/problem2/fancy-form/src/components/swap/swap-card.tsx
new file mode 100644
index 0000000000..c58164ade6
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/swap/swap-card.tsx
@@ -0,0 +1,338 @@
+import { useCallback, useEffect, useMemo, useState } from "react";
+
+import { ArrowUpDown, EqualApproximatelyIcon } from "lucide-react";
+import { motion, AnimatePresence } from "framer-motion";
+
+import { Token, SwapStatus } from "../../types";
+
+import { AmountPanel } from "./amount-panel";
+import { SuccessModal } from "./success-modal";
+
+import { Button } from "../ui/button";
+
+import { calculateSwapQuote, cn, debounce } from "../../utils";
+
+import { useTokenContext } from "../../provider/token-prices-provider";
+
+import { useBalances } from "../../hooks/use-balances";
+import { formatTokenAmount } from "../../utils/format";
+import { DEFAULT_SLIPPAGE } from "../../constants/tokens";
+import { Loading } from "../ui/loading";
+
+export function SwapCard() {
+ const { tokens: tokensApi, loading } = useTokenContext();
+
+ const { balances, updateBalance } = useBalances();
+
+ const tokens = useMemo(() => {
+ return tokensApi.map((token) => ({
+ ...token,
+ balance: balances[token.symbol] || 0,
+ }));
+ }, [tokensApi, balances]);
+
+ const [fromToken, setFromToken] = useState(null);
+
+ const [toToken, setToToken] = useState(null);
+
+ const [fromAmount, setFromAmount] = useState("");
+
+ const [toAmount, setToAmount] = useState("");
+
+ const [status, setStatus] = useState("idle");
+
+ const [isFlipping, setIsFlipping] = useState(false);
+
+ useEffect(() => {
+ if (tokens.length >= 2 && !fromToken && !toToken) {
+ setFromToken(tokens[0]);
+ setToToken(tokens[1]);
+ }
+ }, [tokens, fromToken, toToken]);
+
+ const fetchQuote = useCallback(
+ debounce((amount: string, fToken: Token, tToken: Token) => {
+ const q = calculateSwapQuote(amount, fToken, tToken);
+ setToAmount(q ? q.toAmount : "");
+ }, 400),
+ [],
+ );
+
+ useEffect(() => {
+ if (!fromToken || !toToken) {
+ return;
+ }
+
+ if (fromAmount && parseFloat(fromAmount) > 0) {
+ fetchQuote(fromAmount, fromToken, toToken);
+ } else {
+ setToAmount("");
+ }
+ }, [fromAmount, fromToken, toToken, fetchQuote]);
+
+ const exchangeRate = useMemo(() => {
+ return fromToken && toToken ? fromToken.price / toToken.price : null;
+ }, [fromToken, toToken]);
+
+ const handleFlip = () => {
+ if (!fromToken || !toToken) {
+ return;
+ }
+
+ setIsFlipping(true);
+
+ setTimeout(() => {
+ setFromToken(toToken);
+ setToToken(fromToken);
+
+ setFromAmount(toAmount);
+ setToAmount(fromAmount);
+
+ setIsFlipping(false);
+ }, 150);
+ };
+
+ const handleFromTokenChange = (token: Token) => {
+ setFromToken(token);
+ setFromAmount("");
+ setToAmount("");
+ };
+
+ const handleToTokenChange = (token: Token) => {
+ setToToken(token);
+ setToAmount("");
+ };
+
+ const handleSwap = async () => {
+ if (!canSwap || !fromToken || !toToken) {
+ return;
+ }
+
+ setStatus("confirming");
+
+ await new Promise((r) => setTimeout(r, 2000));
+
+ setStatus("success");
+
+ updateBalance(fromToken!.symbol, -parseFloat(fromAmount));
+ updateBalance(toToken!.symbol, parseFloat(toAmount));
+
+ setFromToken((prev) => {
+ if (prev) {
+ return {
+ ...prev,
+ balance: (prev.balance || 0) - parseFloat(fromAmount),
+ };
+ }
+ return prev;
+ });
+
+ setToToken((prev) => {
+ if (prev) {
+ return {
+ ...prev,
+ balance: (prev.balance || 0) + parseFloat(toAmount),
+ };
+ }
+ return prev;
+ });
+ };
+
+ const handleCloseSuccess = () => {
+ setStatus("idle");
+ setFromAmount("");
+ setToAmount("");
+ };
+
+ const insufficientBalance =
+ !!fromAmount &&
+ !!fromToken &&
+ fromToken?.balance !== undefined &&
+ parseFloat(fromAmount) > fromToken?.balance;
+
+ const canSwap =
+ !!fromAmount &&
+ !!toAmount &&
+ parseFloat(fromAmount) > 0 &&
+ !insufficientBalance &&
+ status !== "confirming";
+
+ const getButtonLabel = () => {
+ if (status === "confirming") {
+ return "Confirming...";
+ }
+
+ if (!fromAmount || parseFloat(fromAmount) === 0) {
+ return "Enter Amount";
+ }
+
+ if (insufficientBalance) {
+ return `Insufficient ${fromToken?.symbol} Balance`;
+ }
+
+ return "Confirm Swap";
+ };
+
+ if (loading || !fromToken || !toToken) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+ <>
+
+ Swap Tokens
+
+
+
+
+
+
+
+
+ {exchangeRate && fromToken && toToken && (
+
+
+ 1 {fromToken?.symbol}
+
+
+ {formatTokenAmount(exchangeRate)} {toToken?.symbol}
+
+
+
+ Slippage: {DEFAULT_SLIPPAGE}%
+
+
+ )}
+
+
+
+ {insufficientBalance && (
+
+
+ Insufficient {fromToken.symbol} balance. You have{" "}
+ {fromToken.balance} {fromToken.symbol}.
+
+
+ )}
+
+
+
+
+ {status === "confirming" ? (
+
+
+ Confirming...
+
+ ) : (
+ getButtonLabel()
+ )}
+
+
+
+
+
+ {status === "success" && (
+
+ )}
+
+ >
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/swap/token-icon.tsx b/src/problem2/fancy-form/src/components/swap/token-icon.tsx
new file mode 100644
index 0000000000..78eb69aa80
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/swap/token-icon.tsx
@@ -0,0 +1,33 @@
+import { cn } from "../../utils";
+import { Token } from "../../types";
+
+interface TokenIconProps {
+ token: Token;
+ size?: "sm" | "md" | "lg";
+ className?: string;
+}
+
+const sizeMap = {
+ sm: "w-6 h-6 text-[10px]",
+ md: "w-8 h-8 text-xs",
+ lg: "w-10 h-10 text-sm",
+};
+
+export function TokenIcon({ token, size = "md", className }: TokenIconProps) {
+ return (
+
+
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/swap/token-selector.tsx b/src/problem2/fancy-form/src/components/swap/token-selector.tsx
new file mode 100644
index 0000000000..87ebba4a10
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/swap/token-selector.tsx
@@ -0,0 +1,164 @@
+import { useState } from "react";
+import { ChevronDown, Search, X } from "lucide-react";
+import { Token } from "../../types";
+import { TokenIcon } from "./token-icon";
+import { cn } from "../../utils";
+import { motion, AnimatePresence } from "framer-motion";
+import { useTokenContext } from "../../provider/token-prices-provider";
+import { formatNumber } from "../../utils/format";
+
+interface TokenSelectorProps {
+ value: Token;
+ onChange: (token: Token) => void;
+ excludeSymbol?: string;
+ label?: string;
+}
+
+export function TokenSelector({
+ value,
+ onChange,
+ excludeSymbol,
+ label,
+}: TokenSelectorProps) {
+ const { tokens } = useTokenContext();
+ const [open, setOpen] = useState(false);
+ const [search, setSearch] = useState("");
+
+ const filteredTokens = tokens?.filter(
+ (t) =>
+ t.symbol !== excludeSymbol &&
+ (t.symbol.toLowerCase().includes(search.toLowerCase()) ||
+ t.name.toLowerCase().includes(search.toLowerCase())),
+ );
+
+ const handleSelect = (token: Token) => {
+ onChange(token);
+ setOpen(false);
+ setSearch("");
+ };
+
+ return (
+
+ {label && (
+
+ {label}
+
+ )}
+
+
setOpen(true)}
+ className={cn(
+ "flex items-center gap-2 px-3 py-2 rounded-xl bg-secondary/80 border border-border/50",
+ "hover:bg-secondary hover:border-border transition-all duration-200",
+ "focus:outline-none focus:ring-0 outline-none min-w-[120px]",
+ )}
+ >
+
+
+ {value?.symbol}
+
+
+
+
+
+ {open && (
+ <>
+ {
+ setOpen(false);
+ setSearch("");
+ }}
+ />
+
+
+
+ Select Token
+
+ {
+ setOpen(false);
+ setSearch("");
+ }}
+ className="text-muted-foreground hover:text-foreground transition-colors"
+ >
+
+
+
+
+
+
+
+ setSearch(e.target.value)}
+ placeholder="Search tokens..."
+ className="bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none w-full"
+ />
+
+
+
+
+ {filteredTokens.length === 0 ? (
+
+ No tokens found
+
+ ) : (
+ filteredTokens?.map((token) => (
+
handleSelect(token)}
+ className={cn(
+ "w-full flex items-center gap-3 px-4 py-2.5 transition-colors text-left",
+ "hover:bg-secondary/70",
+ token?.symbol === value?.symbol && "bg-primary/10",
+ )}
+ >
+
+
+
+ {token?.symbol}
+
+
+ {token.name}
+
+
+
+
+ {formatNumber(token?.balance ?? 0, { decimals: 4 })}
+
+
+ $
+ {formatNumber(
+ (token?.balance ?? 0) * (token?.price ?? 0),
+ { decimals: 2 },
+ )}
+
+
+
+ ))
+ )}
+
+
+ >
+ )}
+
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/ui/button.tsx b/src/problem2/fancy-form/src/components/ui/button.tsx
new file mode 100644
index 0000000000..e53059818e
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/ui/button.tsx
@@ -0,0 +1,56 @@
+import * as React from "react";
+import { Slot } from "@radix-ui/react-slot";
+import { cva, type VariantProps } from "class-variance-authority";
+import { cn } from "../../utils";
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center whitespace-nowrap rounded-xl text-sm font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 active:scale-[0.98]",
+ {
+ variants: {
+ variant: {
+ default: "bg-primary text-primary-foreground shadow hover:opacity-90",
+ destructive: "bg-red-600 text-white hover:bg-red-700",
+ outline:
+ "border border-border bg-transparent hover:bg-secondary text-foreground",
+ secondary: "bg-secondary text-secondary-foreground hover:bg-muted",
+ ghost: "hover:bg-secondary text-muted-foreground hover:text-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ swap: "w-full bg-gradient-to-r from-violet-600 to-purple-600 text-white font-semibold text-base shadow-lg shadow-violet-900/30 hover:from-violet-500 hover:to-purple-500 hover:shadow-violet-900/50",
+ },
+ size: {
+ default: "h-10 px-4 py-2",
+ sm: "h-8 rounded-lg px-3 text-xs",
+ lg: "h-12 rounded-xl px-8 text-base",
+ xl: "h-14 rounded-2xl px-10 text-lg",
+ icon: "h-9 w-9",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ },
+);
+
+export interface ButtonProps
+ extends
+ React.ButtonHTMLAttributes,
+ VariantProps {
+ asChild?: boolean;
+}
+
+const Button = React.forwardRef(
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
+ const Comp = asChild ? Slot : "button";
+ return (
+
+ );
+ },
+);
+Button.displayName = "Button";
+
+export { Button, buttonVariants };
diff --git a/src/problem2/fancy-form/src/components/ui/loading.tsx b/src/problem2/fancy-form/src/components/ui/loading.tsx
new file mode 100644
index 0000000000..0200060557
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/ui/loading.tsx
@@ -0,0 +1,23 @@
+import { LoaderIcon } from "lucide-react";
+import { cn } from "../../utils";
+import { Button } from "./button";
+
+function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
+ return (
+
+ );
+}
+
+export function Loading() {
+ return (
+
+
+ Loading...
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/constants/balances.ts b/src/problem2/fancy-form/src/constants/balances.ts
new file mode 100644
index 0000000000..4372077aab
--- /dev/null
+++ b/src/problem2/fancy-form/src/constants/balances.ts
@@ -0,0 +1,34 @@
+export const MOCKUP_BALANCES: Record = {
+ BLUR: 320,
+ bNEO: 1.25,
+ BUSD: 180,
+ USD: 450,
+ ETH: 1.42,
+ GMX: 2.8,
+ STEVMOS: 850,
+ LUNA: 120,
+ RATOM: 4.6,
+ STRD: 35,
+ EVMOS: 920,
+ IBCX: 0.18,
+ IRIS: 2400,
+ ampLUNA: 75,
+ KUJI: 48,
+ STOSMO: 90,
+ USDC: 1250,
+ axlUSDC: 340,
+ ATOM: 6.8,
+ STATOM: 1.75,
+ OSMO: 210,
+ rSWTH: 18000,
+ STLUNA: 40,
+ LSI: 0.12,
+ OKB: 0.9,
+ OKT: 3.2,
+ SWTH: 25000,
+ USC: 520,
+ WBTC: 0.032,
+ wstETH: 0.42,
+ YieldUSD: 680,
+ ZIL: 5200,
+};
diff --git a/src/problem2/fancy-form/src/constants/tokens.ts b/src/problem2/fancy-form/src/constants/tokens.ts
new file mode 100644
index 0000000000..1c2f9f3a93
--- /dev/null
+++ b/src/problem2/fancy-form/src/constants/tokens.ts
@@ -0,0 +1,3 @@
+export const DEFAULT_SLIPPAGE = 0.3;
+
+export const FEE_PERCENT = 0.3;
diff --git a/src/problem2/fancy-form/src/constants/url.ts b/src/problem2/fancy-form/src/constants/url.ts
new file mode 100644
index 0000000000..3b62399e44
--- /dev/null
+++ b/src/problem2/fancy-form/src/constants/url.ts
@@ -0,0 +1 @@
+export const PRICES_URL = "https://interview.switcheo.com/prices.json";
diff --git a/src/problem2/fancy-form/src/hooks/use-balances.ts b/src/problem2/fancy-form/src/hooks/use-balances.ts
new file mode 100644
index 0000000000..352f92d1ba
--- /dev/null
+++ b/src/problem2/fancy-form/src/hooks/use-balances.ts
@@ -0,0 +1,23 @@
+import { useCallback, useState } from "react";
+import { MOCKUP_BALANCES } from "../constants/balances";
+
+export function useBalances() {
+ const [balances, setBalances] =
+ useState>(MOCKUP_BALANCES);
+
+ const updateBalance = useCallback((symbol: string, amount: number) => {
+ setBalances((prev) => {
+ const currentSymbolBalance = prev[symbol] || 0;
+
+ return {
+ ...prev,
+ [symbol]: currentSymbolBalance + amount,
+ };
+ });
+ }, []);
+
+ return {
+ balances,
+ updateBalance,
+ };
+}
diff --git a/src/problem2/fancy-form/src/index.css b/src/problem2/fancy-form/src/index.css
new file mode 100644
index 0000000000..3b3df8494c
--- /dev/null
+++ b/src/problem2/fancy-form/src/index.css
@@ -0,0 +1,56 @@
+@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=DM+Mono:wght@400;500&display=swap");
+
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+ :root {
+ --background: 0 0% 96%;
+ --foreground: 0 0% 10%;
+ --card: 0 0% 100%;
+ --card-foreground: 0 0% 10%;
+ --primary: 263 70% 58%;
+ --primary-foreground: 0 0% 100%;
+ --secondary: 0 0% 92%;
+ --secondary-foreground: 0 0% 25%;
+ --muted: 0 0% 88%;
+ --muted-foreground: 0 0% 50%;
+ --accent: 165 70% 40%;
+ --accent-foreground: 0 0% 100%;
+ --border: 0 0% 82%;
+ --input: 0 0% 82%;
+ --ring: 263 70% 58%;
+ --radius: 0.75rem;
+ }
+}
+
+@layer base {
+ * {
+ @apply border-border;
+ }
+ body {
+ @apply bg-background text-foreground font-sans antialiased;
+ }
+}
+
+::-webkit-scrollbar {
+ width: 4px;
+}
+::-webkit-scrollbar-track {
+ background: hsl(var(--background));
+}
+::-webkit-scrollbar-thumb {
+ background: hsl(var(--border));
+ border-radius: 2px;
+}
+
+/* Number input hide arrows */
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+input[type="number"] {
+ -moz-appearance: textfield;
+}
diff --git a/src/problem2/fancy-form/src/main.tsx b/src/problem2/fancy-form/src/main.tsx
new file mode 100644
index 0000000000..de90e218e8
--- /dev/null
+++ b/src/problem2/fancy-form/src/main.tsx
@@ -0,0 +1,10 @@
+import { createRoot } from "react-dom/client";
+import "./index.css";
+import App from "./App.tsx";
+import { TokenProvider } from "./provider/token-prices-provider.tsx";
+
+createRoot(document.getElementById("root")!).render(
+
+
+ ,
+);
diff --git a/src/problem2/fancy-form/src/provider/token-prices-provider.tsx b/src/problem2/fancy-form/src/provider/token-prices-provider.tsx
new file mode 100644
index 0000000000..584f5033a9
--- /dev/null
+++ b/src/problem2/fancy-form/src/provider/token-prices-provider.tsx
@@ -0,0 +1,89 @@
+/* eslint-disable react-refresh/only-export-components */
+import {
+ createContext,
+ useContext,
+ useEffect,
+ useState,
+ ReactNode,
+} from "react";
+
+import { DefaultToken, Token } from "../types";
+import { PRICES_URL } from "../constants/url";
+import { removeDuplicatePrices } from "../utils";
+import { MOCKUP_BALANCES } from "../constants/balances";
+
+type TokenContextType = {
+ tokens: Token[];
+ loading: boolean;
+ error: string | null;
+};
+
+const TokenContext = createContext(undefined);
+
+type Props = {
+ children: ReactNode;
+};
+
+export function TokenProvider({ children }: Props) {
+ const [tokens, setTokens] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+
+ useEffect(() => {
+ const fetchPrices = async () => {
+ try {
+ setLoading(true);
+
+ const res = await fetch(PRICES_URL);
+
+ if (!res.ok) {
+ throw new Error("Get prices failed");
+ }
+
+ const data: DefaultToken[] = await res.json();
+
+ const tokensPricesFormatted = removeDuplicatePrices(
+ data.filter((p) => p.price > 0),
+ );
+
+ const tokenList: Token[] = tokensPricesFormatted?.map((tokenPrice) => ({
+ name: tokenPrice?.currency,
+ symbol: tokenPrice?.currency,
+ price: tokenPrice?.price,
+ icon: `/assets/tokens/${tokenPrice?.currency}.svg`,
+ balance: MOCKUP_BALANCES[tokenPrice?.currency] || 0,
+ }));
+
+ setTokens(tokenList);
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "Unknown error");
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchPrices();
+ }, []);
+
+ return (
+
+ {children}
+
+ );
+}
+
+export const useTokenContext = () => {
+ const context = useContext(TokenContext);
+
+ if (!context) {
+ throw new Error("useTokenContext must be used within TokenProvider");
+ }
+
+ return context;
+};
diff --git a/src/problem2/fancy-form/src/types/index.ts b/src/problem2/fancy-form/src/types/index.ts
new file mode 100644
index 0000000000..332f31a53b
--- /dev/null
+++ b/src/problem2/fancy-form/src/types/index.ts
@@ -0,0 +1,52 @@
+export interface DefaultToken {
+ currency: string;
+ date: string;
+ price: number;
+}
+
+export interface Token {
+ symbol: string;
+ name: string;
+ icon: string;
+ price: number;
+ balance?: number;
+}
+
+export interface SwapState {
+ fromToken: Token;
+ toToken: Token;
+ fromAmount: string;
+ toAmount: string;
+ slippage: number;
+ isLoading: boolean;
+ priceImpact: number;
+}
+
+export interface SwapQuote {
+ fromAmount: string;
+ toAmount: string;
+}
+
+export type SwapStatus =
+ | "idle"
+ | "loading"
+ | "confirming"
+ | "success"
+ | "error";
+
+export interface TokenSelectProps {
+ value: Token;
+ onChange: (token: Token) => void;
+ excludeSymbol?: string;
+}
+
+export interface AmountInputProps {
+ label: string;
+ direction: "from" | "to";
+ amount: string;
+ token: Token;
+ onAmountChange?: (value: string) => void;
+ onTokenChange: (token: Token) => void;
+ readonly?: boolean;
+ excludeSymbol?: string;
+}
diff --git a/src/problem2/fancy-form/src/utils/format.ts b/src/problem2/fancy-form/src/utils/format.ts
new file mode 100644
index 0000000000..58d3d70615
--- /dev/null
+++ b/src/problem2/fancy-form/src/utils/format.ts
@@ -0,0 +1,24 @@
+export function formatNumber(
+ value: number,
+ options: { decimals?: number; compact?: boolean; prefix?: string } = {}
+): string {
+ const { decimals = 2, compact = false, prefix = "" } = options;
+ if (isNaN(value) || value === 0) return `${prefix}0`;
+ if (compact && value >= 1_000_000) return `${prefix}${(value / 1_000_000).toFixed(2)}M`;
+ if (compact && value >= 1_000) return `${prefix}${(value / 1_000).toFixed(2)}K`;
+ return `${prefix}${value.toLocaleString("en-US", { minimumFractionDigits: 0, maximumFractionDigits: decimals })}`;
+}
+
+export function formatTokenAmount(amount: number): string {
+ if (amount === 0) return "0.00";
+ if (amount < 0.0001) return "< 0.0001";
+ const decimals = amount < 1 ? 6 : 4;
+ return amount.toFixed(decimals).replace(/\.?0+$/, "");
+}
+
+export function formatUSDValue(amount: number, price: number): string {
+ const usdValue = amount * price;
+ if (usdValue === 0) return "$0.00";
+ if (usdValue < 0.01) return "< $0.01";
+ return formatNumber(usdValue, { decimals: 2, prefix: "$" });
+}
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/utils/index.ts b/src/problem2/fancy-form/src/utils/index.ts
new file mode 100644
index 0000000000..69fc899d93
--- /dev/null
+++ b/src/problem2/fancy-form/src/utils/index.ts
@@ -0,0 +1,58 @@
+import { type ClassValue, clsx } from "clsx";
+import { twMerge } from "tailwind-merge";
+import { Token, SwapQuote, DefaultToken } from "../types";
+import { FEE_PERCENT } from "../constants/tokens";
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs));
+}
+
+export const removeDuplicatePrices = (data: DefaultToken[]) =>
+ data.reduce((acc, current) => {
+ const existing = acc.find((item) => item.currency === current.currency);
+
+ if (!existing) {
+ acc.push(current);
+ return acc;
+ }
+
+ if (new Date(current.date) > new Date(existing.date)) {
+ Object.assign(existing, current);
+ }
+
+ return acc;
+ }, []);
+
+export function parseAmount(value: string): number {
+ const parsed = parseFloat(value);
+ return isNaN(parsed) ? 0 : parsed;
+}
+
+export function calculateSwapQuote(
+ fromAmount: string,
+ fromToken: Token,
+ toToken: Token,
+): SwapQuote | null {
+ const amount = parseAmount(fromAmount);
+ if (!amount || amount <= 0) return null;
+ const rate = fromToken?.price / toToken?.price;
+ const feeMultiplier = 1 - FEE_PERCENT / 100;
+ const toAmount = amount * rate * feeMultiplier;
+
+ return {
+ fromAmount,
+ toAmount: toAmount.toFixed(6),
+ };
+}
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export function debounce any>(
+ fn: T,
+ delay: number,
+): (...args: Parameters) => void {
+ let timer: ReturnType;
+ return (...args: Parameters) => {
+ clearTimeout(timer);
+ timer = setTimeout(() => fn(...args), delay);
+ };
+}
diff --git a/src/problem2/fancy-form/src/vite-env.d.ts b/src/problem2/fancy-form/src/vite-env.d.ts
new file mode 100644
index 0000000000..11f02fe2a0
--- /dev/null
+++ b/src/problem2/fancy-form/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/src/problem2/fancy-form/tailwind.config.js b/src/problem2/fancy-form/tailwind.config.js
new file mode 100644
index 0000000000..351ad5e862
--- /dev/null
+++ b/src/problem2/fancy-form/tailwind.config.js
@@ -0,0 +1,65 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ // darkMode: ["class"],
+ content: [
+ "./index.html",
+ "./src/**/*.{ts,tsx,js,jsx}",
+ ],
+ theme: {
+ extend: {
+ colors: {
+ border: "hsl(var(--border))",
+ input: "hsl(var(--input))",
+ ring: "hsl(var(--ring))",
+ background: "hsl(var(--background))",
+ foreground: "hsl(var(--foreground))",
+ primary: {
+ DEFAULT: "hsl(var(--primary))",
+ foreground: "hsl(var(--primary-foreground))",
+ },
+ secondary: {
+ DEFAULT: "hsl(var(--secondary))",
+ foreground: "hsl(var(--secondary-foreground))",
+ },
+ muted: {
+ DEFAULT: "hsl(var(--muted))",
+ foreground: "hsl(var(--muted-foreground))",
+ },
+ accent: {
+ DEFAULT: "hsl(var(--accent))",
+ foreground: "hsl(var(--accent-foreground))",
+ },
+ card: {
+ DEFAULT: "hsl(var(--card))",
+ foreground: "hsl(var(--card-foreground))",
+ },
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ fontFamily: {
+ sans: ["'DM Sans'", "sans-serif"],
+ mono: ["'DM Mono'", "monospace"],
+ },
+ animation: {
+ "pulse-slow": "pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite",
+ "spin-slow": "spin 3s linear infinite",
+ "fade-in": "fadeIn 0.3s ease-out",
+ "slide-up": "slideUp 0.3s ease-out",
+ },
+ keyframes: {
+ fadeIn: {
+ "0%": { opacity: "0" },
+ "100%": { opacity: "1" },
+ },
+ slideUp: {
+ "0%": { opacity: "0", transform: "translateY(10px)" },
+ "100%": { opacity: "1", transform: "translateY(0)" },
+ },
+ },
+ },
+ },
+ plugins: [],
+}
diff --git a/src/problem2/fancy-form/tsconfig.app.json b/src/problem2/fancy-form/tsconfig.app.json
new file mode 100644
index 0000000000..7f42e5f7cd
--- /dev/null
+++ b/src/problem2/fancy-form/tsconfig.app.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "es2023",
+ "lib": ["ES2023", "DOM"],
+ "module": "esnext",
+ "types": ["vite/client"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src"]
+}
diff --git a/src/problem2/fancy-form/tsconfig.json b/src/problem2/fancy-form/tsconfig.json
new file mode 100644
index 0000000000..6bfa73afc5
--- /dev/null
+++ b/src/problem2/fancy-form/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "strict": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src"]
+}
diff --git a/src/problem2/fancy-form/tsconfig.node.json b/src/problem2/fancy-form/tsconfig.node.json
new file mode 100644
index 0000000000..aae44d2fab
--- /dev/null
+++ b/src/problem2/fancy-form/tsconfig.node.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "es2023",
+ "lib": ["ES2023"],
+ "module": "esnext",
+ "types": ["node"],
+ "skipLibCheck": true,
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/src/problem2/fancy-form/vite.config.ts b/src/problem2/fancy-form/vite.config.ts
new file mode 100644
index 0000000000..081c8d9f69
--- /dev/null
+++ b/src/problem2/fancy-form/vite.config.ts
@@ -0,0 +1,6 @@
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+
+export default defineConfig({
+ plugins: [react()],
+});
diff --git a/src/problem2/index.html b/src/problem2/index.html
deleted file mode 100644
index 4058a68bff..0000000000
--- a/src/problem2/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- Fancy Form
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/problem2/script.js b/src/problem2/script.js
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/src/problem2/style.css b/src/problem2/style.css
deleted file mode 100644
index 915af91c72..0000000000
--- a/src/problem2/style.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: center;
- min-width: 360px;
- font-family: Arial, Helvetica, sans-serif;
-}
diff --git a/src/problem3/SOLUTION.MD b/src/problem3/SOLUTION.MD
new file mode 100644
index 0000000000..6c169d7279
--- /dev/null
+++ b/src/problem3/SOLUTION.MD
@@ -0,0 +1,232 @@
+# Code Review Findings
+
+### 1. Missing `blockchain` field
+
+`balance.blockchain` is used but does not exist in `WalletBalance`.
+
+**Fix:** Add `blockchain` to the interface.
+
+---
+
+### 2. Using `any`
+
+```ts
+blockchain: any;
+```
+
+**Problem:** Removes TypeScript safety.
+
+**Fix:** Use proper types or union types.
+
+---
+
+### 3. Undefined variable
+
+```ts
+lhsPriority;
+```
+
+does not exist.
+
+**Fix:** Replace with `balancePriority`.
+
+---
+
+### 4. Wrong filter condition
+
+```ts
+balance.amount <= 0;
+```
+
+**Problem:** Keeps invalid balances.
+
+**Fix:** Use `balance.amount > 0`.
+
+---
+
+### 5. Wrong `useMemo` dependency
+
+`prices` is included but not used.
+
+**Problem:** Causes unnecessary recalculation.
+
+**Fix:** Remove `prices` from dependency array.
+
+---
+
+### 6. Missing return in `sort`
+
+The sort callback does not return `0` when priorities are equal.
+
+**Fix:** Always return a number.
+
+---
+
+### 7. Unused `formattedBalances`
+
+`formattedBalances` is created but never used.
+
+**Fix:** Use it for rendering or remove it.
+
+---
+
+### 8. Wrong render source
+
+Rows are rendered from `sortedBalances` instead of `formattedBalances`.
+
+**Problem:** `formatted` becomes `undefined`.
+
+**Fix:** Render using `formattedBalances`.
+
+---
+
+### 9. Using index as key
+
+```tsx
+key = { index };
+```
+
+**Problem:** Can cause incorrect React rendering.
+
+**Fix:** Use stable unique keys.
+
+---
+
+### 10. Possible `NaN` value
+
+```ts
+prices[balance.currency];
+```
+
+may be undefined.
+
+**Fix:** Add fallback value like `0`.
+
+---
+
+### 11. Unused `children`
+
+`children` is destructured but never used.
+
+**Fix:** Remove it if unnecessary or render it.
+
+---
+
+### 12. `toFixed()` without precision
+
+```ts
+toFixed();
+```
+
+**Problem:** Rounds values too aggressively.
+
+**Fix:** Use `toFixed(2)` or `toFixed(6)`.
+
+---
+
+### 13. Repeated priority logic
+
+`getPriority()` is called many times and uses a long `switch` statement.
+
+**Problem:** Harder to maintain and creates repeated computation.
+
+**Fix:** Replace with a constant object map.
+
+Example:
+
+```ts
+const PRIORITY_MAP = {
+ Osmosis: 100,
+ Ethereum: 50,
+ Arbitrum: 30,
+ Zilliqa: 20,
+ Neo: 20,
+};
+```
+
+---
+
+### 14. Wrong type casting
+
+`sortedBalances` is typed as `FormattedWalletBalance`.
+
+**Problem:** Data does not contain `formatted`.
+
+**Fix:** Use correct types and correct data source.
+
+# Refactored Code
+
+```tsx
+type Blockchain = "Osmosis" | "Ethereum" | "Arbitrum" | "Zilliqa" | "Neo";
+
+interface WalletBalance {
+ currency: string;
+ amount: number;
+ blockchain: Blockchain;
+}
+
+interface FormattedWalletBalance extends WalletBalance {
+ formatted: number;
+}
+
+type Props = BoxProps;
+
+const PRIORITY_MAP: Record = {
+ Osmosis: 100,
+ Ethereum: 50,
+ Arbitrum: 30,
+ Zilliqa: 20,
+ Neo: 20,
+};
+
+const getPriority = (blockchain: string): number => {
+ return PRIORITY_MAP[blockchain] ?? -99;
+};
+
+const WalletPage: React.FC = ({ children, ...rest }) => {
+ const balances = useWalletBalances() ?? [];
+ const prices = usePrices() ?? {};
+
+ const formattedBalances = useMemo(() => {
+ return balances
+ .filter((balance) => {
+ const priority = getPriority(balance.blockchain);
+
+ return priority > -99 && balance.amount > 0;
+ })
+ .sort((a, b) => {
+ return getPriority(b.blockchain) - getPriority(a.blockchain);
+ })
+ .map((balance) => ({
+ ...balance,
+ formatted: balance.amount.toFixed(2),
+ }));
+ }, [balances]);
+
+ return (
+
+ {formattedBalances.map((balance) => {
+ const usdValue = (prices[balance.currency] ?? 0) * balance.amount;
+
+ return (
+
+ );
+ })}
+ {children}
+
+ );
+};
+```
+
+## Summary
+
+Fixed type safety issues, invalid filter logic, undefined variables, incorrect render source, unstable React keys, unnecessary `useMemo` dependencies, repeated priority calculations, and possible `NaN` values.
+
+Refactored priority handling using `PRIORITY_MAP` for cleaner and easier maintenance.
+
+Improved rendering flow by using `formattedBalances` correctly and adding proper formatting precision with `toFixed(2)`.
\ No newline at end of file