zgl 19 tuntia sitten
vanhempi
commit
541544c311
100 muutettua tiedostoa jossa 4288 lisäystä ja 24 poistoa
  1. 14 1
      .env.example
  2. 5 0
      .gitignore
  3. 117 12
      README.md
  4. 1 0
      next.config.ts
  5. 2 1
      package.json
  6. 32 10
      pnpm-lock.yaml
  7. 148 0
      public/image/flags/1x1/ad.svg
  8. 6 0
      public/image/flags/1x1/ae.svg
  9. 81 0
      public/image/flags/1x1/af.svg
  10. 14 0
      public/image/flags/1x1/ag.svg
  11. 29 0
      public/image/flags/1x1/ai.svg
  12. 5 0
      public/image/flags/1x1/al.svg
  13. 5 0
      public/image/flags/1x1/am.svg
  14. 13 0
      public/image/flags/1x1/ao.svg
  15. 5 0
      public/image/flags/1x1/aq.svg
  16. 32 0
      public/image/flags/1x1/ar.svg
  17. 109 0
      public/image/flags/1x1/arab.svg
  18. 73 0
      public/image/flags/1x1/as.svg
  19. 13 0
      public/image/flags/1x1/asean.svg
  20. 4 0
      public/image/flags/1x1/at.svg
  21. 8 0
      public/image/flags/1x1/au.svg
  22. 186 0
      public/image/flags/1x1/aw.svg
  23. 18 0
      public/image/flags/1x1/ax.svg
  24. 8 0
      public/image/flags/1x1/az.svg
  25. 12 0
      public/image/flags/1x1/ba.svg
  26. 6 0
      public/image/flags/1x1/bb.svg
  27. 4 0
      public/image/flags/1x1/bd.svg
  28. 7 0
      public/image/flags/1x1/be.svg
  29. 7 0
      public/image/flags/1x1/bf.svg
  30. 5 0
      public/image/flags/1x1/bg.svg
  31. 4 0
      public/image/flags/1x1/bh.svg
  32. 15 0
      public/image/flags/1x1/bi.svg
  33. 14 0
      public/image/flags/1x1/bj.svg
  34. 7 0
      public/image/flags/1x1/bl.svg
  35. 97 0
      public/image/flags/1x1/bm.svg
  36. 36 0
      public/image/flags/1x1/bn.svg
  37. 674 0
      public/image/flags/1x1/bo.svg
  38. 5 0
      public/image/flags/1x1/bq.svg
  39. 45 0
      public/image/flags/1x1/br.svg
  40. 13 0
      public/image/flags/1x1/bs.svg
  41. 89 0
      public/image/flags/1x1/bt.svg
  42. 13 0
      public/image/flags/1x1/bv.svg
  43. 7 0
      public/image/flags/1x1/bw.svg
  44. 18 0
      public/image/flags/1x1/by.svg
  45. 145 0
      public/image/flags/1x1/bz.svg
  46. 4 0
      public/image/flags/1x1/ca.svg
  47. 19 0
      public/image/flags/1x1/cc.svg
  48. 12 0
      public/image/flags/1x1/cd.svg
  49. 13 0
      public/image/flags/1x1/cefta.svg
  50. 15 0
      public/image/flags/1x1/cf.svg
  51. 12 0
      public/image/flags/1x1/cg.svg
  52. 9 0
      public/image/flags/1x1/ch.svg
  53. 7 0
      public/image/flags/1x1/ci.svg
  54. 9 0
      public/image/flags/1x1/ck.svg
  55. 13 0
      public/image/flags/1x1/cl.svg
  56. 15 0
      public/image/flags/1x1/cm.svg
  57. 11 0
      public/image/flags/1x1/cn.svg
  58. 7 0
      public/image/flags/1x1/co.svg
  59. 7 0
      public/image/flags/1x1/cp.svg
  60. 7 0
      public/image/flags/1x1/cr.svg
  61. 13 0
      public/image/flags/1x1/cu.svg
  62. 13 0
      public/image/flags/1x1/cv.svg
  63. 14 0
      public/image/flags/1x1/cw.svg
  64. 15 0
      public/image/flags/1x1/cx.svg
  65. 6 0
      public/image/flags/1x1/cy.svg
  66. 5 0
      public/image/flags/1x1/cz.svg
  67. 5 0
      public/image/flags/1x1/de.svg
  68. 130 0
      public/image/flags/1x1/dg.svg
  69. 13 0
      public/image/flags/1x1/dj.svg
  70. 5 0
      public/image/flags/1x1/dk.svg
  71. 152 0
      public/image/flags/1x1/dm.svg
  72. 122 0
      public/image/flags/1x1/do.svg
  73. 5 0
      public/image/flags/1x1/dz.svg
  74. 48 0
      public/image/flags/1x1/eac.svg
  75. 138 0
      public/image/flags/1x1/ec.svg
  76. 5 0
      public/image/flags/1x1/ee.svg
  77. 38 0
      public/image/flags/1x1/eg.svg
  78. 11 0
      public/image/flags/1x1/eh.svg
  79. 13 0
      public/image/flags/1x1/er.svg
  80. 4 0
      public/image/flags/1x1/es-ct.svg
  81. 187 0
      public/image/flags/1x1/es-ga.svg
  82. 5 0
      public/image/flags/1x1/es-pv.svg
  83. 547 0
      public/image/flags/1x1/es.svg
  84. 14 0
      public/image/flags/1x1/et.svg
  85. 28 0
      public/image/flags/1x1/eu.svg
  86. 5 0
      public/image/flags/1x1/fi.svg
  87. 123 0
      public/image/flags/1x1/fj.svg
  88. 89 0
      public/image/flags/1x1/fk.svg
  89. 11 0
      public/image/flags/1x1/fm.svg
  90. 12 0
      public/image/flags/1x1/fo.svg
  91. 5 0
      public/image/flags/1x1/fr.svg
  92. 7 0
      public/image/flags/1x1/ga.svg
  93. 5 0
      public/image/flags/1x1/gb-eng.svg
  94. 131 0
      public/image/flags/1x1/gb-nir.svg
  95. 4 0
      public/image/flags/1x1/gb-sct.svg
  96. 9 0
      public/image/flags/1x1/gb-wls.svg
  97. 7 0
      public/image/flags/1x1/gb.svg
  98. 27 0
      public/image/flags/1x1/gd.svg
  99. 6 0
      public/image/flags/1x1/ge.svg
  100. 0 0
      public/image/flags/1x1/gf.svg

+ 14 - 1
.env.example

@@ -7,5 +7,18 @@ NEXTAUTH_URL=http://localhost:3001
 # NextAuth 使用 secret(下面的值)对 session中的token 对象进行 签名 + 加密,生成一个 JWT 字符串,解密这个JWT字符串就可以还原token对象。
 # NextAuth 使用 secret(下面的值)对 session中的token 对象进行 签名 + 加密,生成一个 JWT 字符串,解密这个JWT字符串就可以还原token对象。
 NEXTAUTH_SECRET=9jstKgQ1Q22PlDDhPtXTZ6G4MEzHGDJIkebcd/5UyZ4=
 NEXTAUTH_SECRET=9jstKgQ1Q22PlDDhPtXTZ6G4MEzHGDJIkebcd/5UyZ4=
 
 
+# paypal client id
+PAYPAL_SANDBOX_CLIENT_ID=
+PAYPAL_PRODUCTION_CLIENT_ID=
+
 # Application Settings
 # Application Settings
-COMPANY_NAME=Your Company Name
+COMPANY_NAME=Your Company Name
+
+# store name
+STORE_NAME=Asteria
+# 默认货币
+DEFAULT_CURRENCY=USD
+# 默认语言
+DEFAULT_LOCAL=en
+# 默认渠道
+DEFAULT_CHANNEL=default

+ 5 - 0
.gitignore

@@ -23,6 +23,7 @@
 # misc
 # misc
 .DS_Store
 .DS_Store
 *.pem
 *.pem
+.vscode
 
 
 # debug
 # debug
 npm-debug.log*
 npm-debug.log*
@@ -34,6 +35,8 @@ yarn-error.log*
 .env
 .env
 .env.production
 .env.production
 .env.local
 .env.local
+.env.development.local
+.env.test
 
 
 # vercel
 # vercel
 .vercel
 .vercel
@@ -42,5 +45,7 @@ yarn-error.log*
 *.tsbuildinfo
 *.tsbuildinfo
 next-env.d.ts
 next-env.d.ts
 
 
+# .well-known
+/public/.well-known
 
 
 ~
 ~

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 117 - 12
README.md


+ 1 - 0
next.config.ts

@@ -2,6 +2,7 @@ import { configHeader } from '@/utils/constants';
 import type { NextConfig } from "next";
 import type { NextConfig } from "next";
 
 
 const nextConfig: NextConfig = {
 const nextConfig: NextConfig = {
+  devIndicators: false,
   reactStrictMode: true,
   reactStrictMode: true,
   typescript: {
   typescript: {
     ignoreBuildErrors: false,
     ignoreBuildErrors: false,

+ 2 - 1
package.json

@@ -11,6 +11,7 @@
     "package-version": "npx npm-check-updates"
     "package-version": "npx npm-check-updates"
   },
   },
   "dependencies": {
   "dependencies": {
+    "@airwallex/components-sdk": "^1.32.0",
     "@apollo/client": "^4.1.9",
     "@apollo/client": "^4.1.9",
     "@apollo/client-integration-nextjs": "^0.14.5",
     "@apollo/client-integration-nextjs": "^0.14.5",
     "@heroicons/react": "^2.2.0",
     "@heroicons/react": "^2.2.0",
@@ -31,7 +32,7 @@
     "@heroui/tooltip": "^2.2.29",
     "@heroui/tooltip": "^2.2.29",
     "@heroui/use-disclosure": "^2.2.19",
     "@heroui/use-disclosure": "^2.2.19",
     "@internationalized/date": "3.12.0",
     "@internationalized/date": "3.12.0",
-    "@paypal/react-paypal-js": "^9.2.0",
+    "@paypal/react-paypal-js": "^10.1.2",
     "@react-aria/visually-hidden": "^3.8.31",
     "@react-aria/visually-hidden": "^3.8.31",
     "@react-types/shared": "^3.33.1",
     "@react-types/shared": "^3.33.1",
     "@reduxjs/toolkit": "^2.10.1",
     "@reduxjs/toolkit": "^2.10.1",

+ 32 - 10
pnpm-lock.yaml

@@ -12,6 +12,9 @@ importers:
 
 
   .:
   .:
     dependencies:
     dependencies:
+      '@airwallex/components-sdk':
+        specifier: ^1.32.0
+        version: 1.32.0
       '@apollo/client':
       '@apollo/client':
         specifier: ^4.1.9
         specifier: ^4.1.9
         version: 4.2.0(graphql@16.14.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)
         version: 4.2.0(graphql@16.14.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)
@@ -73,8 +76,8 @@ importers:
         specifier: 3.12.0
         specifier: 3.12.0
         version: 3.12.0
         version: 3.12.0
       '@paypal/react-paypal-js':
       '@paypal/react-paypal-js':
-        specifier: ^9.2.0
-        version: 9.2.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+        specifier: ^10.1.2
+        version: 10.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
       '@react-aria/visually-hidden':
       '@react-aria/visually-hidden':
         specifier: ^3.8.31
         specifier: ^3.8.31
         version: 3.9.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
         version: 3.9.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -175,6 +178,12 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
 
+  '@airwallex/airtracker@3.2.0':
+    resolution: {integrity: sha512-PKE5N38ajTVg6ph9JzLpWsICNjqLtf/wWudNVU3UPX9SVy2I5s5ITc281sMSD8+LIE6RJoGjGTO+VYP/io5kig==}
+
+  '@airwallex/components-sdk@1.32.0':
+    resolution: {integrity: sha512-IRrYOyCIWw/cQcndm/n11zx8b7hj2wYF7TD2YLmds9lXIQoir214JF99i1QJAyMsRR//nIRkNFTB2Ta2/etYGw==}
+
   '@alloc/quick-lru@5.2.0':
   '@alloc/quick-lru@5.2.0':
     resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
     resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
@@ -962,11 +971,11 @@ packages:
   '@panva/hkdf@1.2.1':
   '@panva/hkdf@1.2.1':
     resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==}
     resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==}
 
 
-  '@paypal/paypal-js@9.7.0':
-    resolution: {integrity: sha512-eUQVZWTEhXhaPsYDmfUaOeV5zfeLUn7kCE7/BXm6uAtMhUoK0S7uPtUzosqfH1vZgjfUSyTzghDJtYxXyRRZig==}
+  '@paypal/paypal-js@10.0.3':
+    resolution: {integrity: sha512-GtY3PID9Ey76fIJBAV8PobIwdH6Nsbm7MZlqFwB+MAPQEtVEwGe1EHrsZpb4AK0iuJNs9E3gaB75kgpFSpAEJQ==}
 
 
-  '@paypal/react-paypal-js@9.2.0':
-    resolution: {integrity: sha512-wckuxilT+fYYwg0TYbEbxkclYeJnhIlThpNtV9RLXQA6uBbt5xPIzGv9wt2ykQTLiNIqhXhw1Hlz5yxUeCteKQ==}
+  '@paypal/react-paypal-js@10.1.2':
+    resolution: {integrity: sha512-nPzTw58U+6Emv5qQDxVP5AdUL1gvdU5b1rHGOOTvB/WHmC2Ebn0soCOMNgP8xsvdz+Kshy2TJru0ERqC2zFkTA==}
     peerDependencies:
     peerDependencies:
       react: ^16.8.0 || ^17 || ^18 || ^19
       react: ^16.8.0 || ^17 || ^18 || ^19
       react-dom: ^16.8.0 || ^17 || ^18 || ^19
       react-dom: ^16.8.0 || ^17 || ^18 || ^19
@@ -1552,6 +1561,9 @@ packages:
   '@swc/helpers@0.5.21':
   '@swc/helpers@0.5.21':
     resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==}
     resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==}
 
 
+  '@swc/helpers@0.5.23':
+    resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==}
+
   '@tailwindcss/node@4.3.0':
   '@tailwindcss/node@4.3.0':
     resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==}
     resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==}
 
 
@@ -3463,6 +3475,12 @@ snapshots:
       react-transition-group: 4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
       react-transition-group: 4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
       use-sync-external-store: 1.6.0(react@19.2.5)
       use-sync-external-store: 1.6.0(react@19.2.5)
 
 
+  '@airwallex/airtracker@3.2.0': {}
+
+  '@airwallex/components-sdk@1.32.0':
+    dependencies:
+      '@airwallex/airtracker': 3.2.0
+
   '@alloc/quick-lru@5.2.0': {}
   '@alloc/quick-lru@5.2.0': {}
 
 
   '@apollo/client-integration-nextjs@0.14.5(@apollo/client@4.2.0(graphql@16.14.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2))(@types/react@19.2.14)(graphql@16.14.0)(next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)':
   '@apollo/client-integration-nextjs@0.14.5(@apollo/client@4.2.0(graphql@16.14.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2))(@types/react@19.2.14)(graphql@16.14.0)(next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)':
@@ -4495,13 +4513,13 @@ snapshots:
 
 
   '@panva/hkdf@1.2.1': {}
   '@panva/hkdf@1.2.1': {}
 
 
-  '@paypal/paypal-js@9.7.0':
+  '@paypal/paypal-js@10.0.3':
     dependencies:
     dependencies:
       promise-polyfill: 8.3.0
       promise-polyfill: 8.3.0
 
 
-  '@paypal/react-paypal-js@9.2.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
+  '@paypal/react-paypal-js@10.1.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
     dependencies:
     dependencies:
-      '@paypal/paypal-js': 9.7.0
+      '@paypal/paypal-js': 10.0.3
       '@paypal/sdk-constants': 1.0.158
       '@paypal/sdk-constants': 1.0.158
       react: 19.2.5
       react: 19.2.5
       react-dom: 19.2.5(react@19.2.5)
       react-dom: 19.2.5(react@19.2.5)
@@ -4984,7 +5002,7 @@ snapshots:
   '@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
   '@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
     dependencies:
     dependencies:
       '@adobe/react-spectrum': 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
       '@adobe/react-spectrum': 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
-      '@swc/helpers': 0.5.21
+      '@swc/helpers': 0.5.23
       react: 19.2.5
       react: 19.2.5
       react-dom: 19.2.5(react@19.2.5)
       react-dom: 19.2.5(react@19.2.5)
 
 
@@ -5363,6 +5381,10 @@ snapshots:
     dependencies:
     dependencies:
       tslib: 2.8.1
       tslib: 2.8.1
 
 
+  '@swc/helpers@0.5.23':
+    dependencies:
+      tslib: 2.8.1
+
   '@tailwindcss/node@4.3.0':
   '@tailwindcss/node@4.3.0':
     dependencies:
     dependencies:
       '@jridgewell/remapping': 2.3.5
       '@jridgewell/remapping': 2.3.5

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 148 - 0
public/image/flags/1x1/ad.svg


+ 6 - 0
public/image/flags/1x1/ae.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ae" viewBox="0 0 512 512">
+  <path fill="#00732f" d="M0 0h512v170.7H0z"/>
+  <path fill="#fff" d="M0 170.7h512v170.6H0z"/>
+  <path fill="#000001" d="M0 341.3h512V512H0z"/>
+  <path fill="red" d="M0 0h180v512H0z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 81 - 0
public/image/flags/1x1/af.svg


+ 14 - 0
public/image/flags/1x1/ag.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ag" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="ag-a">
+      <path fill="#25ff01" d="M109 47.6h464.8v464.9H109z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#ag-a)" transform="translate(-120 -52.4)scale(1.1014)">
+    <path fill="#fff" d="M0 47.6h693V512H0z"/>
+    <path fill="#000001" d="M109 47.6h464.8v186.1H109z"/>
+    <path fill="#0072c6" d="M128.3 232.1h435.8v103.5H128.3z"/>
+    <path fill="#ce1126" d="M692.5 49.2v463.3H347zm-691.3 0v463.3h345.7z"/>
+    <path fill="#fcd116" d="m508.8 232.2-69.3-17.6 59-44.4-72.5 10.3 37.3-63-64.1 37.2 11.3-73.5-43.4 58-17.6-67.3-19.6 69.3-43.4-59 12.4 75.6-64.1-39.3 37.2 63-70.3-11.3 57.9 43.4-72.4 18.6z"/>
+  </g>
+</svg>

+ 29 - 0
public/image/flags/1x1/ai.svg

@@ -0,0 +1,29 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-ai" viewBox="0 0 512 512">
+  <defs>
+    <path id="ai-b" fill="#f90" d="M271 87c1.5 3.6 6.5 7.6 7.8 9.6-1.7 2-2 1.8-1.8 5.4 3-3.1 3-3.5 5-3 4.2 4.2.8 13.3-2.8 15.3-3.4 2.1-2.8 0-8 2.6 2.3 2 5.1-.3 7.4.3 1.2 1.5-.6 4.1.4 6.7 2-.2 1.8-4.3 2.2-5.8 1.5-5.4 10.4-9.1 10.8-14.1 1.9-.9 3.7-.3 6 1-1.1-4.6-4.9-4.6-5.9-6-2.4-3.7-4.5-7.8-9.6-9-3.8-.7-3.5.3-6-1.4-1.6-1.2-6.3-3.4-5.5-1.6"/>
+  </defs>
+  <clipPath id="ai-a">
+    <path d="M0 0v128h298.7v128H256zm256 0H128v298.7H0V256z"/>
+  </clipPath>
+  <path fill="#012169" d="M0 0h512v512H0z"/>
+  <path stroke="#fff" stroke-width="50" d="m0 0 256 256m0-256L0 256"/>
+  <path stroke="#c8102e" stroke-width="30" d="m0 0 256 256m0-256L0 256" clip-path="url(#ai-a)"/>
+  <path stroke="#fff" stroke-width="75" d="M128 0v298.7M0 128h298.7"/>
+  <path stroke="#c8102e" stroke-width="50" d="M128 0v298.7M0 128h298.7"/>
+  <path fill="#012169" d="M0 256h256V0h85.3v341.3H0z"/>
+  <path fill="#fff" d="M323.6 224.1c0 90.4 9.8 121.5 29.4 142.5a179 179 0 0 0 35 30 180 180 0 0 0 35-30c19.5-21 29.3-52.1 29.3-142.5-14.2 6.5-22.3 9.7-34 9.5a78 78 0 0 1-30.3-9.5 78 78 0 0 1-30.3 9.5c-11.7.2-19.8-3-34-9.5z"/>
+  <g transform="matrix(1.96 0 0 2.002 -141.1 95.2)">
+    <use xlink:href="#ai-b"/>
+    <circle cx="281.3" cy="91.1" r=".8" fill="#fff" fill-rule="evenodd"/>
+  </g>
+  <g transform="matrix(-.916 -1.77 1.733 -.935 463.1 861.4)">
+    <use xlink:href="#ai-b"/>
+    <circle cx="281.3" cy="91.1" r=".8" fill="#fff" fill-rule="evenodd"/>
+  </g>
+  <g transform="matrix(-1.01 1.716 -1.68 -1.031 825 -71)">
+    <use xlink:href="#ai-b"/>
+    <circle cx="281.3" cy="91.1" r=".8" fill="#fff" fill-rule="evenodd"/>
+  </g>
+  <path fill="#9cf" d="M339.8 347.4a78 78 0 0 0 13.2 19.2 179 179 0 0 0 35 30 180 180 0 0 0 35-30 78 78 0 0 0 13.2-19.2z"/>
+  <path fill="#fdc301" d="M321 220.5c0 94.2 10.1 126.6 30.5 148.5a187 187 0 0 0 36.5 31 186 186 0 0 0 36.4-31.1C444.8 347 455 314.7 455 220.5c-14.8 6.8-23.3 10.1-35.5 10-11-.3-22.6-5.7-31.5-10-9 4.3-20.6 9.7-31.5 10-12.3.1-20.7-3.2-35.6-10zm4 5c13.9 6.5 21.9 9.6 33.4 9.4a76 76 0 0 0 29.6-9.4c8.4 4 19.3 9.2 29.6 9.4 11.5.2 19.4-3 33.4-9.4 0 89-9.6 119.6-28.8 140.2a176 176 0 0 1-34.2 29.4 176 176 0 0 1-34.3-29.4c-19.2-20.6-28.7-51.3-28.7-140.2"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 5 - 0
public/image/flags/1x1/al.svg


+ 5 - 0
public/image/flags/1x1/am.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-am" viewBox="0 0 512 512">
+  <path fill="#d90012" d="M0 0h512v170.7H0z"/>
+  <path fill="#0033a0" d="M0 170.7h512v170.6H0z"/>
+  <path fill="#f2a800" d="M0 341.3h512V512H0z"/>
+</svg>

+ 13 - 0
public/image/flags/1x1/ao.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ao" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="red" d="M0 0h512v259.8H0z"/>
+    <path fill="#000001" d="M0 252.2h512V512H0z"/>
+  </g>
+  <path fill="#ffec00" fill-rule="evenodd" d="M228.7 148.2c165.2 43.3 59 255.6-71.3 167.2l-8.8 13.6c76.7 54.6 152.6 10.6 174-46.4 22.2-58.8-7.6-141.5-92.6-150z"/>
+  <path fill="#ffec00" fill-rule="evenodd" d="m170 330.8 21.7 10.1-10.2 21.8-21.7-10.2zm149-99.5h24v24h-24zm-11.7-38.9 22.3-8.6 8.7 22.3-22.3 8.7zm-26-29.1 17.1-16.9 16.9 17-17 16.9zm-26.2-39.8 22.4 8.4-8.5 22.4-22.4-8.4zM316 270l22.3 8.9-9 22.2-22.2-8.9zm-69.9 70 22-9.3 9.5 22-22 9.4zm-39.5 2.8h24v24h-24zm41.3-116-20.3-15-20.3 14.6 8-23-20.3-15h24.5l8.5-22.6 7.8 22.7 24.7-.3-19.6 15.3z"/>
+  <path fill="#fe0" fill-rule="evenodd" d="M336 346.4c-1.2.4-6.2 12.4-9.7 18.2l3.7 1c13.6 4.8 20.4 9.2 26.2 17.5a8 8 0 0 0 10.2.7s2.8-1 6.4-5c3-4.5 2.2-8-1.4-11.1-11-8-22.9-14-35.4-21.3"/>
+  <path fill="#000001" fill-rule="evenodd" d="M365.3 372.8a4.3 4.3 0 1 1-8.7 0 4.3 4.3 0 0 1 8.6 0zm-21.4-13.6a4.3 4.3 0 1 1-8.7 0 4.3 4.3 0 0 1 8.7 0m10.9 7a4.3 4.3 0 1 1-8.7 0 4.3 4.3 0 0 1 8.7 0"/>
+  <path fill="#fe0" fill-rule="evenodd" d="M324.5 363.7c-42.6-24.3-87.3-50.5-130-74.8-18.7-11.7-19.6-33.4-7-49.9 1.2-2.3 2.8-1.8 3.4-.5 1.5 8 6 16.3 11.4 21.5A5288 5288 0 0 1 334 345.6c-3.4 5.8-6 12.3-9.5 18z"/>
+  <path fill="#ffec00" fill-rule="evenodd" d="m297.2 305.5 17.8 16-16 17.8-17.8-16z"/>
+  <path fill="none" stroke="#000" stroke-width="3" d="m331.5 348.8-125-75.5m109.6 58.1L274 304.1m18.2 42.7L249.3 322"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 5 - 0
public/image/flags/1x1/aq.svg


+ 32 - 0
public/image/flags/1x1/ar.svg

@@ -0,0 +1,32 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-ar" viewBox="0 0 512 512">
+  <path fill="#74acdf" d="M0 0h512v512H0z"/>
+  <path fill="#fff" d="M0 170.7h512v170.7H0z"/>
+  <g id="ar-c" transform="translate(-153.6)scale(1.024)">
+    <path id="ar-a" fill="#f6b40e" stroke="#85340a" stroke-width="1.1" d="m396.8 251.3 28.5 62s.5 1.2 1.3.9c.8-.4.3-1.6.3-1.6l-23.7-64m-.7 24.2c-.4 9.4 5.4 14.6 4.7 23s3.8 13.2 5 16.5c1 3.3-1.2 5.2-.3 5.7 1 .5 3-2.1 2.4-6.8s-4.2-6-3.4-16.3-4.2-12.7-3-22"/>
+    <use xlink:href="#ar-a" width="100%" height="100%" transform="rotate(22.5 400 250)"/>
+    <use xlink:href="#ar-a" width="100%" height="100%" transform="rotate(45 400 250)"/>
+    <use xlink:href="#ar-a" width="100%" height="100%" transform="rotate(67.5 400 250)"/>
+    <path id="ar-b" fill="#85340a" d="M404.3 274.4c.5 9 5.6 13 4.6 21.3 2.2-6.5-3.1-11.6-2.8-21.2m-7.7-23.8 19.5 42.6-16.3-43.9"/>
+    <use xlink:href="#ar-b" width="100%" height="100%" transform="rotate(22.5 400 250)"/>
+    <use xlink:href="#ar-b" width="100%" height="100%" transform="rotate(45 400 250)"/>
+    <use xlink:href="#ar-b" width="100%" height="100%" transform="rotate(67.5 400 250)"/>
+  </g>
+  <use xlink:href="#ar-c" width="100%" height="100%" transform="rotate(90 256 256)"/>
+  <use xlink:href="#ar-c" width="100%" height="100%" transform="rotate(180 256 256)"/>
+  <use xlink:href="#ar-c" width="100%" height="100%" transform="rotate(-90 256 256)"/>
+  <circle cx="256" cy="256" r="28.4" fill="#f6b40e" stroke="#85340a" stroke-width="1.5"/>
+  <path id="ar-h" fill="#843511" stroke-width="1" d="M265.7 250q-3.1 0-4.9 2.5c2.2 2 7 2.2 10.3-.2a8 8 0 0 0-5.4-2.4zm0 .4c1.9 0 3.6.8 3.9 1.7-2.2 2.4-5.7 2.2-7.9.4q1.6-2.2 4-2.1"/>
+  <use xlink:href="#ar-d" width="100%" height="100%" transform="matrix(-1 0 0 1 512.3 0)"/>
+  <use xlink:href="#ar-e" width="100%" height="100%" transform="matrix(-1 0 0 1 512.3 0)"/>
+  <use xlink:href="#ar-f" width="100%" height="100%" transform="translate(19.3)"/>
+  <use xlink:href="#ar-g" width="100%" height="100%" transform="matrix(-1 0 0 1 512.3 0)"/>
+  <path fill="#85340a" d="M251.6 260a2 2 0 1 0 2 3q1.4.8 2.4.6h.3c.5 0 1.6 0 2.3-.6q.6.8 1.6.8a2 2 0 0 0 .4-3.9q.8.3.9 1.3a1.3 1.3 0 0 1-2.7 0 3 3 0 0 1-2.7 1.8 3 3 0 0 1-2.7-1.8q-.1 1.2-1.3 1.3a1.3 1.3 0 0 1-.4-2.6zm2.2 5.8c-2.2 0-3 2-5 3.3l3.5-2.2c1.5-.9 2.8.2 3.7.2s2.2-1.1 3.7-.2q2 1.4 3.5 2.2c-2-1.4-2.8-3.3-5-3.3a6 6 0 0 0-2.2.6q-1.6-.6-2.2-.6"/>
+  <path fill="#85340a" d="M253 268.3q-1.2 0-3.6.8c4-1 4.8.4 6.6.4s2.6-1.3 6.6-.4c-4.4-1.4-5.3-.5-6.6-.5-.9 0-1.5-.3-3-.3"/>
+  <path fill="#85340a" d="M249.6 269h-.8c4.6.5 2.4 3.1 7.2 3.1s2.6-2.6 7.2-3c-4.8-.5-3.3 2.4-7.2 2.4-3.7 0-2.6-2.5-6.4-2.5"/>
+  <path fill="#85340a" d="M260 276.1a4 4 0 0 0-8 0 4 4 0 0 1 8 0"/>
+  <path id="ar-e" fill="#85340a" stroke-width="1" d="M238.3 249.9c5-4.4 11.4-5 14.9-1.8a9 9 0 0 1 1.6 3.7q.7 3.8-2.3 8 .5 0 1 .4 2.6-5.1 1.7-10l-.7-2.5c-4.8-4-11.4-4.4-16.2 2.2"/>
+  <path id="ar-d" fill="#85340a" stroke-width="1" d="M246.2 248.6c2.8 0 3.5.6 4.8 1.7s2 .9 2.2 1.1 0 .9-.4.7q-.7-.3-2.7-1.8c-1.3-1-2.6-1-4-1-3.8 0-6 3.2-6.5 3s2.2-3.7 6.6-3.7"/>
+  <use xlink:href="#ar-h" width="100%" height="100%" transform="translate(-19.6)"/>
+  <circle id="ar-f" cx="246.3" cy="252.1" r="2" fill="#85340a" stroke-width="1"/>
+  <path id="ar-g" fill="#85340a" stroke-width="1" d="M241 253.4c3.7 2.8 7.4 2.6 9.6 1.3s2.2-1.8 1.7-1.8c-.4 0-.9.5-2.6 1.4s-4.4.8-8.8-1z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 109 - 0
public/image/flags/1x1/arab.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 73 - 0
public/image/flags/1x1/as.svg


+ 13 - 0
public/image/flags/1x1/asean.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="flag-icons-asean" viewBox="0 0 512 512">
+  <path fill="#0039a6" d="M0 0h512v512H0z"/>
+  <circle cx="256" cy="256" r="153.6" fill="#fff"/>
+  <circle cx="256" cy="256" r="146.4" fill="#ed2939"/>
+  <use xlink:href="#asean-a" transform="matrix(-1 0 0 1 512 0)"/>
+  <g id="asean-a" fill="#f9e300">
+    <path d="M295.4 256c25.6-15.4 37.4-46 37.4-76.8H321v1c0 10.3-1.5 47.6-29.7 75.8a113 113 0 0 1 29.7 75.8v1h11.8c0-30.7-12.3-61.4-37.4-76.8"/>
+    <path d="M317.4 180.2v-1h-12.2v1.5c0 10.3-2.1 46.1-22 75.3 20.4 29.2 22 65 22 75.3v1.5h12.2v-1c0-10.3-2.5-47.6-29.7-75.8a113 113 0 0 0 29.7-75.8"/>
+    <path d="m278.5 256 1-1a138 138 0 0 0 21.6-74.3v-1.5h-11.3v2c0 10.8-1.5 45.1-15.4 74.8a195 195 0 0 1 15.4 74.8v2H301v-1.5c0-10.3-1-42.5-21.5-74.3"/>
+    <path d="M270.3 256a189 189 0 0 0 15.4-76.8h-11.8v3.6c0 12.8-1 44-7.7 73.2a358 358 0 0 1 7.7 73.2v3.6h11.3v-2c0-10.8-1-46.1-14.4-74.3"/>
+    <path d="M262.1 256a353 353 0 0 0 7.2-73.2v-3.6H258v153.6h11.3v-3.6c0-12.3 0-44-7.2-72.7"/>
+  </g>
+</svg>

+ 4 - 0
public/image/flags/1x1/at.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-at" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 170.7h512v170.6H0z"/>
+  <path fill="#c8102e" d="M0 0h512v170.7H0zm0 341.3h512V512H0z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 8 - 0
public/image/flags/1x1/au.svg


+ 186 - 0
public/image/flags/1x1/aw.svg

@@ -0,0 +1,186 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-aw" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="aw-a">
+      <path fill="gray" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#aw-a)">
+    <path fill="#39c" d="M0 0v512h768V0z"/>
+    <path fill="#ff0" d="M0 341.3v28.5h768v-28.5zm0 57v28.4h768v-28.5H0z"/>
+    <path fill="#9cc" d="m122 28 2.4 2.5-2.3-2.4zm-2.3 4.8 2.4 2.4zm4.7 0 2.4 2.4-2.3-2.4z"/>
+    <path fill="#ccf" d="m119.7 35.2 2.4 2.4zm4.7 0 2.4 2.4-2.3-2.4z"/>
+    <path fill="#6cc" d="m117.3 40 2.4 2.3z"/>
+    <path fill="#c66" d="m122 40 2.4 2.3-2.3-2.3z"/>
+    <path fill="#6cc" d="m126.8 40 2.4 2.3z"/>
+    <path fill="#ccf" d="m117.3 42.4 2.4 2.3zm9.5 0 2.4 2.3z"/>
+    <path fill="#fcc" d="m119.7 44.7 2.4 2.4zm4.7 0 2.4 2.4-2.3-2.4z"/>
+    <path fill="#6cc" d="m115 47.1 2.3 2.4-2.4-2.4z"/>
+    <path fill="#c00" stroke="#fff" stroke-width="3" d="M121.7 32.9 105 96.2l-63.5 17.2 63.3 16.5 16.9 63.3 16.9-63.3 63.2-16.9-63.3-16.8z"/>
+    <path fill="#6cc" d="m129.2 47.1 2.4 2.4z"/>
+    <path fill="#9cf" d="m115 49.5 2.3 2.4-2.4-2.4m14.3 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m117.3 51.9 2.4 2.3zm9.5 0 2.4 2.3z"/>
+    <path fill="#69c" d="m112.5 54.3 2.4 2.3z"/>
+    <path fill="#c33" d="m118.1 55.8.8 1.6zm9.5 0 .8 1.6z"/>
+    <path fill="#69c" d="m131.6 54.3 2.4 2.3z"/>
+    <path fill="#9cf" d="M112.5 56.6 115 59zm19 0L134 59z"/>
+    <path fill="#fcc" d="m115 59 2.3 2.4-2.4-2.4m14.3 0 2.4 2.4z"/>
+    <path fill="#69c" d="m110.2 61.4 2.3 2.4zm23.8 0 2.4 2.4z"/>
+    <path fill="#9cc" d="m110.2 63.8 2.3 2.4zm23.8 0 2.4 2.4z"/>
+    <path fill="#cff" d="m110.2 66.2 2.3 2.3zm23.8 0 2.4 2.3z"/>
+    <path fill="#69c" d="m107.8 68.5 2.4 2.4z"/>
+    <path fill="#fcc" d="M112.5 68.5 115 71zm19 0L134 71z"/>
+    <path fill="#69c" d="m136.3 68.5 2.4 2.4z"/>
+    <path fill="#9cc" d="m107.8 71 2.4 2.3-2.4-2.4z"/>
+    <path fill="#c33" d="m113.3 72.5.8 1.6zm19 0 .9 1.6z"/>
+    <path fill="#9cc" d="m136.3 71 2.4 2.3-2.3-2.4z"/>
+    <path fill="#cff" d="m107.8 73.3 2.4 2.4zm28.6 0 2.3 2.4z"/>
+    <path fill="#fcc" d="m110.2 75.7 2.3 2.3zm23.8 0 2.4 2.3z"/>
+    <path fill="#9cc" d="m105.4 78 2.4 2.4-2.4-2.3z"/>
+    <path fill="#c33" d="m111 79.6.7 1.6zm23.9 0 .8 1.6z"/>
+    <path fill="#9cc" d="m138.7 78 2.4 2.4-2.4-2.3z"/>
+    <path fill="#ccf" d="m105.4 80.4 2.4 2.4zm33.3 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m107.8 82.8 2.4 2.4zm28.6 0 2.3 2.4z"/>
+    <path fill="#9cc" d="m103 85.2 2.4 2.4z"/>
+    <path fill="#c33" d="m108.6 86.8.8 1.6zm28.5 0 .8 1.6z"/>
+    <path fill="#9cc" d="m141.1 85.2 2.4 2.4z"/>
+    <path fill="#ccf" d="m103 87.6 2.4 2.4zm38.1 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m105.4 90 2.4 2.3zm33.3 0 2.4 2.3z"/>
+    <path fill="#9cc" d="m100.6 92.3 2.4 2.4z"/>
+    <path fill="#c33" d="m105.4 92.3 2.4 2.4zm33.3 0 2.4 2.4z"/>
+    <path fill="#9cc" d="m143.5 92.3 2.4 2.4zm-50 2.4 2.4 2.4z"/>
+    <path fill="#ccf" d="m95.9 94.7 2.4 2.4zm52.3 0 2.4 2.4z"/>
+    <path fill="#9cc" d="m150.6 94.7 2.4 2.4zm-64.2 2.4 2.3 2.4z"/>
+    <path fill="#ccf" d="m88.7 97.1 2.4 2.4z"/>
+    <path fill="#fcc" d="m98.3 97.1 2.3 2.4z"/>
+    <path fill="#c33" d="m100.6 97.1 2.4 2.4zm42.9 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m145.9 97.1 2.3 2.4z"/>
+    <path fill="#ccf" d="m155.4 97.1 2.4 2.4z"/>
+    <path fill="#9cc" d="m157.8 97.1 2.3 2.4z"/>
+    <path fill="#69c" d="m76.8 99.5 2.4 2.4z"/>
+    <path fill="#9cc" d="m79.2 99.5 2.4 2.4z"/>
+    <path fill="#cff" d="m81.6 99.5 2.4 2.4z"/>
+    <path fill="#fcc" d="m91.1 99.5 2.4 2.4z"/>
+    <path fill="#c33" d="m95 100.3 1.7.8-1.6-.8m54.7 0 1.6.8z"/>
+    <path fill="#fcc" d="m153 99.5 2.4 2.4z"/>
+    <path fill="#cff" d="m162.5 99.5 2.4 2.4z"/>
+    <path fill="#9cc" d="m165 99.5 2.3 2.4z"/>
+    <path fill="#69c" d="m167.3 99.5 2.4 2.4zm-97.6 2.4 2.4 2.3z"/>
+    <path fill="#9cc" d="m72 101.9 2.5 2.3z"/>
+    <path fill="#cff" d="m74.5 101.9 2.3 2.3z"/>
+    <path fill="#fcc" d="m84 101.9 2.4 2.3z"/>
+    <path fill="#c33" d="m88 102.7 1.5.8zm69 0 1.6.8z"/>
+    <path fill="#fcc" d="m160.2 101.9 2.3 2.3z"/>
+    <path fill="#cff" d="m169.7 101.9 2.3 2.3z"/>
+    <path fill="#9cc" d="m172 101.9 2.4 2.3z"/>
+    <path fill="#69c" d="m174.4 101.9 2.4 2.3zm-111.8 2.3 2.3 2.4z"/>
+    <path fill="#9cf" d="m65 104.2 2.3 2.4-2.4-2.4z"/>
+    <path fill="#fcc" d="m76.8 104.2 2.4 2.4z"/>
+    <path fill="#c33" d="m80.8 105 1.6.8zm83.3 0 1.6.8z"/>
+    <path fill="#fcc" d="m167.3 104.2 2.4 2.4z"/>
+    <path fill="#9cf" d="m179.2 104.2 2.4 2.4z"/>
+    <path fill="#69c" d="m181.6 104.2 2.3 2.4z"/>
+    <path fill="#6cc" d="m55.4 106.6 2.4 2.4z"/>
+    <path fill="#9cf" d="m57.8 106.6 2.4 2.4z"/>
+    <path fill="#fcc" d="m67.3 106.6 2.4 2.4zm109.5 0 2.4 2.4z"/>
+    <path fill="#9cf" d="m186.3 106.6 2.4 2.4z"/>
+    <path fill="#6cc" d="m188.7 106.6 2.4 2.4zM48.3 109l2.4 2.4z"/>
+    <path fill="#ccf" d="m50.6 109 2.4 2.4-2.3-2.4z"/>
+    <path fill="#fcc" d="m60.2 109 2.3 2.4z"/>
+    <path fill="#c33" d="m64.1 109.8 1.6.8zm116.7 0 1.6.8z"/>
+    <path fill="#fcc" d="m184 109 2.3 2.4z"/>
+    <path fill="#ccf" d="m193.5 109 2.4 2.4z"/>
+    <path fill="#6cc" d="m195.9 109 2.3 2.4z"/>
+    <path fill="#9cc" d="m41.1 111.4 2.4 2.4z"/>
+    <path fill="#ccf" d="m43.5 111.4 2.4 2.4z"/>
+    <path fill="#fcc" d="m53 111.4 2.4 2.4zm138.1 0 2.4 2.4z"/>
+    <path fill="#ccf" d="m200.6 111.4 2.4 2.4z"/>
+    <path fill="#9cc" d="m203 111.4 2.4 2.4zm-166.6 2.4 2.4 2.3z"/>
+    <path fill="#c66" d="m48.3 113.8 2.4 2.3zm147.6 0 2.3 2.3z"/>
+    <path fill="#9cc" d="m207.8 113.8 2.3 2.3zM41 116l2.4 2.4z"/>
+    <path fill="#ccf" d="m43.5 116.1 2.4 2.4z"/>
+    <path fill="#fcc" d="m53 116.1 2.4 2.4zm138.1 0 2.4 2.4z"/>
+    <path fill="#ccf" d="m200.6 116.1 2.4 2.4z"/>
+    <path fill="#9cc" d="m203 116.1 2.4 2.4z"/>
+    <path fill="#6cc" d="m48.3 118.5 2.4 2.4z"/>
+    <path fill="#ccf" d="M50.6 118.5 53 121l-2.3-2.4z"/>
+    <path fill="#fcc" d="m60.2 118.5 2.3 2.4z"/>
+    <path fill="#c33" d="m64.1 119.3 1.6.8zm116.7 0 1.6.8z"/>
+    <path fill="#fcc" d="m184 118.5 2.3 2.4z"/>
+    <path fill="#ccf" d="m193.5 118.5 2.4 2.4z"/>
+    <path fill="#6cc" d="m195.9 118.5 2.3 2.4zM55.4 121l2.4 2.4z"/>
+    <path fill="#9cf" d="m57.8 120.9 2.4 2.4z"/>
+    <path fill="#fcc" d="m67.3 120.9 2.4 2.4zm109.5 0 2.4 2.4z"/>
+    <path fill="#9cf" d="m186.3 120.9 2.4 2.4z"/>
+    <path fill="#6cc" d="m188.7 120.9 2.4 2.4z"/>
+    <path fill="#69c" d="m62.5 123.3 2.4 2.4-2.3-2.4z"/>
+    <path fill="#9cf" d="m65 123.3 2.3 2.4-2.4-2.4z"/>
+    <path fill="#fcc" d="m76.8 123.3 2.4 2.4z"/>
+    <path fill="#c33" d="m80.8 124 1.6.9-1.6-.8m83.3 0 1.6.8z"/>
+    <path fill="#fcc" d="m167.3 123.3 2.4 2.4z"/>
+    <path fill="#9cf" d="m179.2 123.3 2.4 2.4z"/>
+    <path fill="#69c" d="m181.6 123.3 2.3 2.4zm-111.9 2.4 2.4 2.3z"/>
+    <path fill="#9cc" d="m72 125.7 2.5 2.3z"/>
+    <path fill="#cff" d="m74.5 125.7 2.3 2.3z"/>
+    <path fill="#fcc" d="m84 125.7 2.4 2.3z"/>
+    <path fill="#c33" d="m88 126.5 1.5.7zm69 0 1.6.8z"/>
+    <path fill="#fcc" d="m160.2 125.7 2.3 2.3z"/>
+    <path fill="#cff" d="m169.7 125.7 2.3 2.3z"/>
+    <path fill="#9cc" d="m172 125.7 2.4 2.3z"/>
+    <path fill="#69c" d="m174.4 125.7 2.4 2.3zM76.8 128l2.4 2.4z"/>
+    <path fill="#9cc" d="m79.2 128 2.4 2.4z"/>
+    <path fill="#cff" d="m81.6 128 2.4 2.4z"/>
+    <path fill="#fcc" d="m91.1 128 2.4 2.4z"/>
+    <path fill="#c33" d="m95 128.8 1.7.8-1.6-.8m54.7 0 1.6.8z"/>
+    <path fill="#fcc" d="m153 128 2.4 2.4z"/>
+    <path fill="#cff" d="m162.5 128 2.4 2.4z"/>
+    <path fill="#9cc" d="m165 128 2.3 2.4z"/>
+    <path fill="#69c" d="m167.3 128 2.4 2.4z"/>
+    <path fill="#9cc" d="m86.4 130.4 2.3 2.4z"/>
+    <path fill="#ccf" d="m88.7 130.4 2.4 2.4z"/>
+    <path fill="#fcc" d="m98.3 130.4 2.3 2.4z"/>
+    <path fill="#c33" d="m100.6 130.4 2.4 2.4zm42.9 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m145.9 130.4 2.3 2.4z"/>
+    <path fill="#ccf" d="m155.4 130.4 2.4 2.4z"/>
+    <path fill="#9cc" d="m157.8 130.4 2.3 2.4zm-64.3 2.4 2.4 2.4z"/>
+    <path fill="#ccf" d="m95.9 132.8 2.4 2.4zm52.3 0 2.4 2.4z"/>
+    <path fill="#9cc" d="m150.6 132.8 2.4 2.4zm-50 2.4 2.4 2.4z"/>
+    <path fill="#c33" d="m105.4 135.2 2.4 2.4zm33.3 0 2.4 2.4z"/>
+    <path fill="#9cc" d="m143.5 135.2 2.4 2.4z"/>
+    <path fill="#fcc" d="m105.4 137.6 2.4 2.3zm33.3 0 2.4 2.3z"/>
+    <path fill="#ccf" d="m103 140 2.4 2.3z"/>
+    <path fill="#c33" d="m108.6 141.5.8 1.6zm28.5 0 .8 1.6z"/>
+    <path fill="#ccf" d="m141.1 140 2.4 2.3z"/>
+    <path fill="#9cc" d="m103 142.3 2.4 2.4zm38.1 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m107.8 144.7 2.4 2.4zm28.6 0 2.3 2.4z"/>
+    <path fill="#ccf" d="m105.4 147 2.4 2.5z"/>
+    <path fill="#c33" d="m111 148.7.7 1.6zm23.9 0 .8 1.6z"/>
+    <path fill="#ccf" d="m138.7 147 2.4 2.5z"/>
+    <path fill="#9cc" d="m105.4 149.5 2.4 2.3zm33.3 0 2.4 2.3z"/>
+    <path fill="#fcc" d="m110.2 151.8 2.3 2.4zm23.8 0 2.4 2.3z"/>
+    <path fill="#cff" d="m107.8 154.2 2.4 2.4z"/>
+    <path fill="#c33" d="m113.3 155.8.8 1.6zm19 0 .9 1.6z"/>
+    <path fill="#cff" d="m136.3 154.2 2.4 2.4z"/>
+    <path fill="#9cc" d="m107.8 156.6 2.4 2.4zm28.6 0 2.3 2.4z"/>
+    <path fill="#69c" d="m107.8 159 2.4 2.4z"/>
+    <path fill="#fcc" d="m112.5 159 2.4 2.4zm19 0 2.5 2.4z"/>
+    <path fill="#69c" d="m136.3 159 2.4 2.4z"/>
+    <path fill="#cff" d="m110.2 161.4 2.3 2.3zm23.8 0 2.4 2.3z"/>
+    <path fill="#9cc" d="m110.2 163.8 2.3 2.3zm23.8 0 2.4 2.3z"/>
+    <path fill="#69c" d="m110.2 166.1 2.3 2.4zm23.8 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m115 168.5 2.3 2.4-2.4-2.4m14.3 0 2.4 2.4z"/>
+    <path fill="#9cf" d="m112.5 170.9 2.4 2.4z"/>
+    <path fill="#c33" d="m118.1 172.5.8 1.6zm9.5 0 .8 1.6z"/>
+    <path fill="#9cf" d="m131.6 170.9 2.4 2.4z"/>
+    <path fill="#69c" d="m112.5 173.3 2.4 2.3zm19 0 2.5 2.3z"/>
+    <path fill="#fcc" d="m117.3 175.7 2.4 2.3zm9.5 0 2.4 2.3z"/>
+    <path fill="#9cf" d="m115 178 2.3 2.4-2.4-2.4zm14.2 0 2.4 2.4z"/>
+    <path fill="#6cc" d="m115 180.4 2.3 2.4-2.4-2.4m14.3 0 2.4 2.4z"/>
+    <path fill="#fcc" d="m119.7 182.8 2.4 2.4zm4.7 0 2.4 2.4-2.3-2.4z"/>
+    <path fill="#ccf" d="m117.3 185.2 2.4 2.3zm9.5 0 2.4 2.3z"/>
+    <path fill="#6cc" d="m117.3 187.6 2.4 2.3z"/>
+    <path fill="#c66" d="m122 187.6 2.4 2.3-2.3-2.3z"/>
+    <path fill="#6cc" d="m126.8 187.6 2.4 2.3z"/>
+    <path fill="#ccf" d="m119.7 192.3 2.4 2.4zm4.7 0 2.4 2.4-2.3-2.4z"/>
+    <path fill="#9cc" d="m119.7 194.7 2.4 2.4zm4.7 0 2.4 2.4-2.3-2.4m-2.4 4.8 2.4 2.3z"/>
+  </g>
+</svg>

+ 18 - 0
public/image/flags/1x1/ax.svg

@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ax" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="ax-a">
+      <path fill-opacity=".7" d="M166 0h850v850H166z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#ax-a)" transform="translate(-100)scale(.6024)">
+    <path fill="#0053a5" d="M0 0h1300v850H0z"/>
+    <g fill="#ffce00">
+      <path d="M400 0h250v850H400z"/>
+      <path d="M0 300h1300v250H0z"/>
+    </g>
+    <g fill="#d21034">
+      <path d="M475 0h100v850H475z"/>
+      <path d="M0 375h1300v100H0z"/>
+    </g>
+  </g>
+</svg>

+ 8 - 0
public/image/flags/1x1/az.svg

@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-az" viewBox="0 0 512 512">
+  <path fill="#3f9c35" d="M0 0h512v512H0z"/>
+  <path fill="#ed2939" d="M0 0h512v341.3H0z"/>
+  <path fill="#00b9e4" d="M0 0h512v170.7H0z"/>
+  <circle cx="238.8" cy="256" r="76.8" fill="#fff"/>
+  <circle cx="255.9" cy="256" r="64" fill="#ed2939"/>
+  <path fill="#fff" d="m324.2 213.3 8.1 23 22-10.5-10.4 22 23 8.2-23 8.2 10.4 22-22-10.5-8.1 23-8.2-23-22 10.5 10.5-22-23-8.2 23-8.2-10.5-22 22 10.5z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 12 - 0
public/image/flags/1x1/ba.svg


+ 6 - 0
public/image/flags/1x1/bb.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-bb" viewBox="0 0 512 512">
+  <path fill="#00267f" d="M0-.2h512V512H0z"/>
+  <path fill="#ffc726" d="M170.7-.2h170.6V512H170.7z"/>
+  <path id="bb-a" fill="#000001" d="M256 173.3c-5.5 15.1-11.2 30.9-23.3 43a52 52 0 0 1 14.6-2.3v63.6l-18 2.7q-1-.1-.9-2.4a244 244 0 0 0-11.7-53.6c-.4-2.3-7.2-11.3-2-9.7.7 0 7.7 3 6.6 1.6a68 68 0 0 0-37.1-19.2c-1.2-.3-2 .3-.9 1.7 18 27.7 33.1 60.4 33 99.2 7 0 24-4.1 31-4.1v44.9h8.8l2-125.4z"/>
+  <use xlink:href="#bb-a" width="100%" height="100%" transform="matrix(-1 0 0 1 512 0)"/>
+</svg>

+ 4 - 0
public/image/flags/1x1/bd.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bd" viewBox="0 0 512 512">
+  <path fill="#006a4e" d="M0 0h512v512H0z"/>
+  <circle cx="230" cy="256" r="170.7" fill="#f42a41"/>
+</svg>

+ 7 - 0
public/image/flags/1x1/be.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-be" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#000001" d="M0 0h170.7v512H0z"/>
+    <path fill="#ffd90c" d="M170.7 0h170.6v512H170.7z"/>
+    <path fill="#f31830" d="M341.3 0H512v512H341.3z"/>
+  </g>
+</svg>

+ 7 - 0
public/image/flags/1x1/bf.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bf" viewBox="0 0 512 512">
+  <g fill-rule="evenodd">
+    <path fill="#de0000" d="M512 511.6H.5V0H512z"/>
+    <path fill="#35a100" d="M511.8 512H0V256.2h511.7z"/>
+  </g>
+  <path fill="#fff300" fill-rule="evenodd" d="m389 223.8-82.9 56.5 31.7 91.6-82.7-56.7-82.8 56.7 31.7-91.6-82.8-56.6 102.3.2 31.6-91.7 31.5 91.6"/>
+</svg>

+ 5 - 0
public/image/flags/1x1/bg.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bg" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 0h512v170.7H0z"/>
+  <path fill="#00966e" d="M0 170.7h512v170.6H0z"/>
+  <path fill="#d62612" d="M0 341.3h512V512H0z"/>
+</svg>

+ 4 - 0
public/image/flags/1x1/bh.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bh" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 0h512v512H0"/>
+  <path fill="#ce1126" d="M512 0H102.4l83.4 51.2-83.4 51.2 83.4 51.2-83.4 51.2 83.4 51.2-83.4 51.2 83.4 51.2-83.4 51.2 83.4 51.2-83.4 51.2H512"/>
+</svg>

+ 15 - 0
public/image/flags/1x1/bi.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bi" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="bi-a">
+      <path fill="gray" d="M60.8 337h175v175h-175z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#bi-a)" transform="translate(-178 -986)scale(2.9257)">
+    <path fill="#18b637" d="m0 337 146.6 87.5L0 512zm293.1 0-146.5 87.5L293 512z"/>
+    <path fill="#cf0921" d="m0 337 146.6 87.5L293 337zm0 175 146.6-87.5L293 512z"/>
+    <path fill="#fff" d="M293.1 337h-27.3L0 495.7V512h27.3l265.8-158.7z"/>
+    <path fill="#fff" d="M197.2 424.5a50.6 50.6 0 1 1-101.2 0 50.6 50.6 0 0 1 101.2 0"/>
+    <path fill="#fff" d="M0 337v16.3L265.8 512h27.3v-16.3L27.3 337z"/>
+    <path fill="#cf0921" stroke="#18b637" stroke-width="1pt" d="m156.5 405.4-6.6.1-3.4 5.6-3.4-5.6-6.5-.1 3.2-5.8-3.2-5.7 6.6-.2 3.4-5.6 3.4 5.7h6.5l-3.1 5.8zm-22 38.2h-6.6l-3.4 5.7-3.4-5.6-6.6-.2 3.2-5.7-3.1-5.8 6.5-.1 3.4-5.6 3.4 5.6 6.6.2-3.2 5.7zm44.6 0h-6.6l-3.4 5.7-3.4-5.6-6.5-.2 3.1-5.7-3.1-5.8 6.6-.1 3.4-5.6 3.4 5.6 6.5.2-3.2 5.7z"/>
+  </g>
+</svg>

+ 14 - 0
public/image/flags/1x1/bj.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bj" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="bj-a">
+      <path fill="gray" d="M67.6-154h666v666h-666z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#bj-a)" transform="translate(-52 118.4)scale(.7688)">
+    <g fill-rule="evenodd" stroke-width="1pt">
+      <path fill="#319400" d="M0-154h333v666H0z"/>
+      <path fill="#ffd600" d="M333-154h666v333H333z"/>
+      <path fill="#de2110" d="M333 179h666v333H333z"/>
+    </g>
+  </g>
+</svg>

+ 7 - 0
public/image/flags/1x1/bl.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bl" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#fff" d="M0 0h512v512H0z"/>
+    <path fill="#00267f" d="M0 0h170.7v512H0z"/>
+    <path fill="#f31830" d="M341.3 0H512v512H341.3z"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 97 - 0
public/image/flags/1x1/bm.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 36 - 0
public/image/flags/1x1/bn.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 674 - 0
public/image/flags/1x1/bo.svg


+ 5 - 0
public/image/flags/1x1/bq.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bq" viewBox="0 0 512 512">
+  <path fill="#21468b" d="M0 0h512v512H0z"/>
+  <path fill="#fff" d="M0 0h512v341.3H0z"/>
+  <path fill="#ae1c28" d="M0 0h512v170.7H0z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 45 - 0
public/image/flags/1x1/br.svg


+ 13 - 0
public/image/flags/1x1/bs.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bs" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="bs-a">
+      <path fill-opacity=".7" d="M56.6 26.4H537v480.3H56.6z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#bs-a)" transform="matrix(1.066 0 0 1.067 -60.4 -28.1)">
+    <path fill="#fff" d="M990 506.2H9.4V27.6H990z"/>
+    <path fill="#ffe900" d="M990 370.6H9.4V169.2H990z"/>
+    <path fill="#08ced6" d="M990 506.2H9.4V346.7H990zm0-319H9.4V27.9H990z"/>
+    <path fill="#000001" d="M9 25.9c2.1 0 392.3 237 392.3 237L7.8 505.3z"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 89 - 0
public/image/flags/1x1/bt.svg


+ 13 - 0
public/image/flags/1x1/bv.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bv" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="bv-a">
+      <path fill-opacity=".7" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#bv-a)">
+    <path fill="#fff" d="M-68 0h699.7v512H-68z"/>
+    <path fill="#d72828" d="M-93-77.8h218.7v276.2H-93zM249.4-.6h381v199h-381zM-67.6 320h190.4v190.3H-67.5zm319.6 2.1h378.3v188.2H252z"/>
+    <path fill="#003897" d="M156.7-25.4H221v535.7h-64.5z"/>
+    <path fill="#003897" d="M-67.5 224.8h697.8v63.5H-67.5z"/>
+  </g>
+</svg>

+ 7 - 0
public/image/flags/1x1/bw.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bw" viewBox="0 0 512 512">
+  <g fill-rule="evenodd">
+    <path fill="#00cbff" d="M0 0h512v512H0z"/>
+    <path fill="#fff" d="M0 192h512v128H0z"/>
+    <path fill="#000001" d="M0 212.7h512V299H0z"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 18 - 0
public/image/flags/1x1/by.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 145 - 0
public/image/flags/1x1/bz.svg


+ 4 - 0
public/image/flags/1x1/ca.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ca" viewBox="0 0 512 512">
+  <path fill="#fff" d="M81.1 0h362.3v512H81.1z"/>
+  <path fill="#d52b1e" d="M-100 0H81.1v512H-100zm543.4 0h181.1v512H443.4zM135.3 247.4l-14 4.8 65.4 57.5c5 14.8-1.7 19.1-6 26.9l71-9-1.8 71.5 14.8-.5-3.3-70.9 71.2 8.4c-4.4-9.3-8.3-14.2-4.3-29l65.4-54.5-11.4-4.1c-9.4-7.3 4-34.8 6-52.2 0 0-38.1 13.1-40.6 6.2l-9.9-18.5-34.6 38c-3.8 1-5.4-.6-6.3-3.8l16-79.7-25.4 14.3q-3.3 1.3-5.6-2.4l-24.5-49-25.2 50.9q-3 2.7-5.4.8l-24.2-13.6 14.5 79.2c-1.1 3-3.9 4-7.1 2.3l-33.3-37.8c-4.3 7-7.3 18.4-13 21-5.7 2.3-25-4.9-37.9-7.7 4.4 15.9 18.2 42.3 9.5 51z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 19 - 0
public/image/flags/1x1/cc.svg


+ 12 - 0
public/image/flags/1x1/cd.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cd" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="cd-a">
+      <path fill="#fff" d="M0-88h600v600H0z"/>
+    </clipPath>
+  </defs>
+  <g clip-path="url(#cd-a)" transform="translate(0 75.1)scale(.853)">
+    <path fill="#007fff" d="M0-88h800v600H0z"/>
+    <path fill="#f7d618" d="M36 32h84l26-84 26 84h84l-68 52 26 84-68-52-68 52 26-84zM750-88 0 362v150h50L800 62V-88z"/>
+    <path fill="#ce1021" d="M800-88 0 392v120L800 32z"/>
+  </g>
+</svg>

+ 13 - 0
public/image/flags/1x1/cefta.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cefta" viewBox="0 0 512 512">
+  <path fill="#039" d="M0 0h512v512H0z"/>
+  <circle cx="256" cy="266.5" r="32.5" fill="none" stroke="#fc0" stroke-width="29.3"/>
+  <circle cx="256" cy="266.5" r="94.2" fill="none" stroke="#fc0" stroke-width="29.3"/>
+  <path fill="#039" d="m346.3 176.1 90.3 90.3-90.3 90.3-90.3-90.3z"/>
+  <path fill="#fc0" d="M102.1 251.8h63.2v29.3h-63.2zm276.4 0h94.2v29.3h-94.2zm-76.6-51.9 41.3-41.3 20.7 20.7-41.3 41.3zM241.3 51.8h29.3V166h-29.3z"/>
+  <circle cx="154.8" cy="170.3" r="14.7" fill="#fc0"/>
+  <circle cx="68.6" cy="266.5" r="14.7" fill="#fc0"/>
+  <circle cx="256" cy="406.8" r="14.7" fill="#fc0"/>
+  <circle cx="256" cy="453.9" r="14.7" fill="#fc0"/>
+  <circle cx="350.2" cy="266.5" r="14.7" fill="#fc0"/>
+  <path fill="#fc0" d="m136.9 364.3 20.7-20.7 20.7 20.7-20.7 20.7zm218.5 22.3L376 366l20.7 20.7-20.7 20.8z"/>
+</svg>

+ 15 - 0
public/image/flags/1x1/cf.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cf" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="cf-a">
+      <path fill-opacity=".7" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#cf-a)">
+    <path fill="#00f" d="M-52-.5h768v127H-52z"/>
+    <path fill="#ff0" d="M-52 383.5h768V512H-52z"/>
+    <path fill="#009a00" d="M-52 255h768v128.5H-52z"/>
+    <path fill="#fff" d="M-52 126.5h768V255H-52z"/>
+    <path fill="red" d="M268 0h128v512H268z"/>
+    <path fill="#ff0" d="M109.5 112.3 75.9 89.1l-33.4 23.4 11.6-39.2-32.5-24.6 40.7-1L75.7 8.8l13.5 38.6 40.8.8L97.6 73"/>
+  </g>
+</svg>

+ 12 - 0
public/image/flags/1x1/cg.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cg" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="cg-a">
+      <path fill-opacity=".7" d="M115.7 0h496.1v496h-496z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#cg-a)" transform="translate(-119.5)scale(1.032)">
+    <path fill="#ff0" d="M0 0h744v496H0z"/>
+    <path fill="#00ca00" d="M0 0v496L496 0z"/>
+    <path fill="red" d="M248 496h496V0z"/>
+  </g>
+</svg>

+ 9 - 0
public/image/flags/1x1/ch.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ch" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="red" d="M0 0h512v512H0z"/>
+    <g fill="#fff">
+      <path d="M96 208h320v96H96z"/>
+      <path d="M208 96h96v320h-96z"/>
+    </g>
+  </g>
+</svg>

+ 7 - 0
public/image/flags/1x1/ci.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ci" viewBox="0 0 512 512">
+  <g fill-rule="evenodd">
+    <path fill="#00cd00" d="M341.5 0H512v512H341.5z"/>
+    <path fill="#ff9a00" d="M0 0h170.3v512H0z"/>
+    <path fill="#fff" d="M170.3 0h171.2v512H170.3z"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 9 - 0
public/image/flags/1x1/ck.svg


+ 13 - 0
public/image/flags/1x1/cl.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cl" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="cl-a">
+      <path fill-opacity=".7" d="M0 0h708.7v708.7H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#cl-a)" transform="scale(.722)">
+    <path fill="#fff" d="M354.3 0H1063v354.3H354.3z"/>
+    <path fill="#0039a6" d="M0 0h354.3v354.3H0z"/>
+    <path fill="#fff" d="m232.3 265.3-55-41.1-54.5 41.5 20.3-67.5-54.5-41.7 67.4-.6 21-67.3 21.3 67.2h67.5L211.4 198z"/>
+    <path fill="#d52b1e" d="M0 354.3h1063v354.4H0z"/>
+  </g>
+</svg>

+ 15 - 0
public/image/flags/1x1/cm.svg

@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-cm" viewBox="0 0 512 512">
+  <path fill="#007a5e" d="M0 0h170.7v512H0z"/>
+  <path fill="#ce1126" d="M170.7 0h170.6v512H170.7z"/>
+  <path fill="#fcd116" d="M341.3 0H512v512H341.3z"/>
+  <g fill="#fcd116" transform="translate(256 256)scale(5.6889)">
+    <g id="cm-b">
+      <path id="cm-a" d="M0-8-2.5-.4 1.3.9z"/>
+      <use xlink:href="#cm-a" width="100%" height="100%" transform="scale(-1 1)"/>
+    </g>
+    <use xlink:href="#cm-b" width="100%" height="100%" transform="rotate(72)"/>
+    <use xlink:href="#cm-b" width="100%" height="100%" transform="rotate(144)"/>
+    <use xlink:href="#cm-b" width="100%" height="100%" transform="rotate(-144)"/>
+    <use xlink:href="#cm-b" width="100%" height="100%" transform="rotate(-72)"/>
+  </g>
+</svg>

+ 11 - 0
public/image/flags/1x1/cn.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-cn" viewBox="0 0 512 512">
+  <defs>
+    <path id="cn-a" fill="#ff0" d="M1-.3-.7.8 0-1 .6.8-1-.3z"/>
+  </defs>
+  <path fill="#ee1c25" d="M0 0h512v512H0z"/>
+  <use xlink:href="#cn-a" width="30" height="20" transform="translate(128 128)scale(76.8)"/>
+  <use xlink:href="#cn-a" width="30" height="20" transform="rotate(-121 142.6 -47)scale(25.5827)"/>
+  <use xlink:href="#cn-a" width="30" height="20" transform="rotate(-98.1 198 -82)scale(25.6)"/>
+  <use xlink:href="#cn-a" width="30" height="20" transform="rotate(-74 272.4 -114)scale(25.6137)"/>
+  <use xlink:href="#cn-a" width="30" height="20" transform="matrix(16 -19.968 19.968 16 256 230.4)"/>
+</svg>

+ 7 - 0
public/image/flags/1x1/co.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-co" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#ffe800" d="M0 0h512v512H0z"/>
+    <path fill="#00148e" d="M0 256h512v256H0z"/>
+    <path fill="#da0010" d="M0 384h512v128H0z"/>
+  </g>
+</svg>

+ 7 - 0
public/image/flags/1x1/cp.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cp" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#fff" d="M0 0h512v512H0z"/>
+    <path fill="#000091" d="M0 0h170.7v512H0z"/>
+    <path fill="#e1000f" d="M341.3 0H512v512H341.3z"/>
+  </g>
+</svg>

+ 7 - 0
public/image/flags/1x1/cr.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cr" viewBox="0 0 512 512">
+  <g fill-rule="evenodd" stroke-width="1pt">
+    <path fill="#0000b4" d="M0 0h512v512H0z"/>
+    <path fill="#fff" d="M0 80.5h512v343.7H0z"/>
+    <path fill="#d90000" d="M0 168.2h512v168.2H0z"/>
+  </g>
+</svg>

+ 13 - 0
public/image/flags/1x1/cu.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cu" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="cu-a">
+      <path fill-opacity=".7" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#cu-a)">
+    <path fill="#002a8f" d="M-32 0h768v512H-32z"/>
+    <path fill="#fff" d="M-32 102.4h768v102.4H-32zm0 204.8h768v102.4H-32z"/>
+    <path fill="#cb1515" d="m-32 0 440.7 255.7L-32 511z"/>
+    <path fill="#fff" d="M161.8 325.5 114.3 290l-47.2 35.8 17.6-58.1-47.2-36 58.3-.4 18.1-58 18.5 57.8 58.3.1-46.9 36.3z"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 13 - 0
public/image/flags/1x1/cv.svg


+ 14 - 0
public/image/flags/1x1/cw.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-cw" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="cw-a">
+      <path fill-opacity=".7" d="M0 0h9000v9000H0z"/>
+    </clipPath>
+    <path id="cw-b" d="m0-1 .2.7H1L.3 0l.2.7L0 .4l-.6.4.2-.7-.5-.4h.7z"/>
+  </defs>
+  <g clip-path="url(#cw-a)" transform="scale(.057)">
+    <path fill="#002b7f" d="M0 0h13500v9000H0z"/>
+    <path fill="#f9e814" d="M0 5625h13500v1125H0z"/>
+    <use xlink:href="#cw-b" width="13500" height="9000" x="2" y="2" fill="#fff" transform="scale(750)"/>
+    <use xlink:href="#cw-b" width="13500" height="9000" x="3" y="3" fill="#fff" transform="scale(1000)"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 15 - 0
public/image/flags/1x1/cx.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
public/image/flags/1x1/cy.svg


+ 5 - 0
public/image/flags/1x1/cz.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cz" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 0h512v256H0z"/>
+  <path fill="#d7141a" d="M0 256h512v256H0z"/>
+  <path fill="#11457e" d="M300 256 0 56v400z"/>
+</svg>

+ 5 - 0
public/image/flags/1x1/de.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-de" viewBox="0 0 512 512">
+  <path fill="#fc0" d="M0 341.3h512V512H0z"/>
+  <path fill="#000001" d="M0 0h512v170.7H0z"/>
+  <path fill="red" d="M0 170.7h512v170.6H0z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 130 - 0
public/image/flags/1x1/dg.svg


+ 13 - 0
public/image/flags/1x1/dj.svg

@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dj" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="dj-a">
+      <path fill-opacity=".7" d="M55.4 0H764v708.7H55.4z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#dj-a)" transform="translate(-40)scale(.722)">
+    <path fill="#0c0" d="M0 0h1063v708.7H0z"/>
+    <path fill="#69f" d="M0 0h1063v354.3H0z"/>
+    <path fill="#fffefe" d="m0 0 529.7 353.9L0 707.3z"/>
+    <path fill="red" d="m221.2 404.3-42.7-30.8-42.4 31 15.8-50.3-42.4-31.2 52.4-.4 16.3-50.2 16.6 50 52.4.2-42.1 31.4z"/>
+  </g>
+</svg>

+ 5 - 0
public/image/flags/1x1/dk.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dk" viewBox="0 0 512 512">
+  <path fill="#c8102e" d="M0 0h512.1v512H0z"/>
+  <path fill="#fff" d="M144 0h73.1v512H144z"/>
+  <path fill="#fff" d="M0 219.4h512.1v73.2H0z"/>
+</svg>

+ 152 - 0
public/image/flags/1x1/dm.svg

@@ -0,0 +1,152 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dm" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="dm-a">
+      <path fill-opacity=".7" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" clip-path="url(#dm-a)">
+    <path fill="#108c00" d="M-258.3 0H769.2v512H-258.3z"/>
+    <path fill="#ffd600" d="M-260 178.2H772.6v50.1H-260z"/>
+    <path fill="#ffd600" d="M181 0h48.5v512h-48.4z"/>
+    <path fill="#000001" d="M227.8 0h48.4v512h-48.4z"/>
+    <path fill="#000001" d="M-260 226.6H772.6v50.2H-260z"/>
+    <path fill="#fff" d="M-260 276.8H772.6v50.1H-260z"/>
+    <path fill="#fff" d="M276.2 0h48.5v512h-48.5z"/>
+    <rect width="273.8" height="275" x="-394.6" y="-393.9" fill="#e72910" ry="137.5" transform="scale(-1)"/>
+    <g stroke-width="1pt">
+      <path d="m250.5 137 5.6-16 5.1 15.7s17.1.5 17.1.2-13.5 10.3-13.5 10.3l6.1 17.6c-.2-.5-14.8-10.9-14.8-10.9s-14.8 10.4-14.5 10.4 5.6-17 5.6-17l-13.3-10.1 16.6-.3z"/>
+      <path fill="#ffe700" d="M251.3 137.7 256 124l4.4 13.6s14.9.4 14.9.2-11.7 9-11.7 9l5.2 15.2c-.2-.5-12.8-9.4-12.8-9.4s-12.8 9-12.6 9 5-14.8 5-14.8l-11.6-8.8 14.4-.2z"/>
+      <path fill="#108c00" d="m253.3 140 2.8-8 2.6 7.9s8.5.2 8.5 0-6.7 5.2-6.7 5.2l3 8.8c-.1-.3-7.4-5.4-7.4-5.4l-7.2 5.2c.2 0 2.8-8.5 2.8-8.5l-6.6-5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m356.9 211.8 5.6-16 5 15.7s17.2.6 17.2.3-13.5 10.3-13.5 10.3l6 17.6c-.2-.5-14.7-10.9-14.7-10.9s-14.8 10.4-14.5 10.4 5.6-17 5.6-17L340.3 212l16.6-.3z"/>
+      <path fill="#ffe700" d="m357.6 212.6 4.9-13.9 4.4 13.7s14.8.4 14.8.2-11.7 9-11.7 9l5.3 15.1c-.2-.4-12.8-9.4-12.8-9.4s-12.8 9-12.6 9 4.9-14.8 4.9-14.8l-11.5-8.7z"/>
+      <path fill="#108c00" d="m359.7 214.9 2.8-8 2.5 7.8 8.6.2-6.8 5.1s3.2 9 3 8.8c0-.3-7.3-5.4-7.3-5.4l-7.3 5.1 2.8-8.5-6.6-5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m325.9 330.6 5.6-16 5 15.8s17.2.5 17.2.3-13.5 10.3-13.5 10.3l6 17.5c-.2-.5-14.7-10.8-14.7-10.8S316.7 358 316.9 358s5.7-17 5.7-17l-13.3-10z"/>
+      <path fill="#ffe700" d="m326.6 331.4 4.9-13.8 4.4 13.6s14.8.5 14.8.2-11.7 9-11.7 9l5.3 15.2c-.2-.5-12.8-9.4-12.8-9.4s-12.8 9-12.6 9 4.9-14.8 4.9-14.8l-11.5-8.7z"/>
+      <path fill="#108c00" d="m328.7 333.7 2.8-8 2.5 7.9s8.6.3 8.6.1-6.8 5.2-6.8 5.2l3 8.7c0-.2-7.3-5.4-7.3-5.4l-7.3 5.2 2.8-8.5-6.6-5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m177.2 330.6 5.6-16 5 15.8s17.1.5 17.1.3-13.5 10.3-13.5 10.3l6.2 17.5c-.3-.5-14.8-10.8-14.8-10.8S168 358 168.2 358s5.7-17 5.7-17l-13.3-10z"/>
+      <path fill="#ffe700" d="m178 331.4 4.8-13.8 4.4 13.6s14.8.5 14.8.2-11.7 9-11.7 9l5.3 15.2c-.2-.5-12.8-9.4-12.8-9.4s-12.8 9-12.6 9 4.9-14.8 4.9-14.8l-11.5-8.7z"/>
+      <path fill="#108c00" d="m180 333.7 2.8-8 2.5 7.9s8.6.3 8.6.1-6.8 5.2-6.8 5.2l3 8.7c0-.2-7.3-5.4-7.3-5.4l-7.3 5.2 2.8-8.5-6.6-5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m150 208.7 5.6-16 5.1 15.8s17.1.5 17.1.2-13.5 10.4-13.5 10.4l6.1 17.5c-.3-.5-14.8-10.8-14.8-10.8S140.8 236 141.1 236s5.6-17 5.6-17l-13.3-10z"/>
+      <path fill="#ffe700" d="m150.8 209.5 4.8-13.8 4.5 13.6s14.7.5 14.7.2-11.7 9-11.7 9l5.3 15.2c-.2-.5-12.8-9.4-12.8-9.4s-12.8 9-12.5 9 4.8-14.8 4.8-14.8l-11.5-8.7z"/>
+      <path fill="#108c00" d="m152.8 211.8 2.8-8 2.6 7.9 8.5.1-6.7 5.2 3 8.7c-.1-.2-7.4-5.4-7.4-5.4l-7.2 5.2c.2 0 2.8-8.5 2.8-8.5l-6.6-5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m324.6 174.1-5.6 16-5-15.7s-17.2-.5-17.2-.3 13.5-10.3 13.5-10.3l-6-17.5c.2.5 14.7 10.8 14.7 10.8s14.8-10.3 14.5-10.3-5.6 17-5.6 17l13.3 10z"/>
+      <path fill="#ffe700" d="M323.9 173.3c0 .3-5 13.9-5 13.9l-4.3-13.6s-14.8-.5-14.8-.3 11.7-8.9 11.7-8.9l-5.3-15.2c.2.5 12.8 9.4 12.8 9.4s12.8-9 12.6-9-4.9 14.8-4.9 14.8l11.5 8.7z"/>
+      <path fill="#108c00" d="m321.8 171-2.8 8-2.5-7.8s-8.6-.3-8.6-.1 6.8-5.2 6.8-5.2l-3-8.7c0 .2 7.3 5.4 7.3 5.4l7.3-5.2c-.2 0-2.9 8.5-2.9 8.5l6.7 5-8.3.2z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m367.3 290.3-5.6 16-5-15.8s-17.2-.5-17.2-.2S353 280 353 280l-6-17.6c.2.5 14.7 10.8 14.7 10.8s14.8-10.3 14.5-10.3-5.6 17-5.6 17L384 290z"/>
+      <path fill="#ffe700" d="m366.6 289.5-4.9 13.8-4.4-13.6s-14.8-.4-14.8-.2 11.7-9 11.7-9l-5.3-15.2c.2.5 12.8 9.4 12.8 9.4s12.8-9 12.6-9-4.9 14.8-4.9 14.8l11.5 8.8z"/>
+      <path fill="#108c00" d="m364.5 287.2-2.8 8-2.5-7.9s-8.6-.2-8.6 0 6.8-5.2 6.8-5.2l-3-8.8c0 .3 7.3 5.4 7.3 5.4l7.3-5.2c-.2 0-2.9 8.6-2.9 8.6l6.7 5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m261.4 375.3-5.6 16-5-15.8s-17.2-.5-17.2-.3 13.5-10.3 13.5-10.3l-6-17.5c.2.5 14.7 10.8 14.7 10.8s14.8-10.3 14.5-10.3-5.6 17-5.6 17L278 375z"/>
+      <path fill="#ffe700" d="m260.7 374.4-4.9 14-4.4-13.7s-14.8-.5-14.8-.2 11.7-9 11.7-9l-5.3-15.2c.2.5 12.8 9.4 12.8 9.4s12.8-9 12.6-9-4.9 14.8-4.9 14.8l11.5 8.7-14.3.3z"/>
+      <path fill="#108c00" d="m258.6 372.2-2.8 8-2.5-7.9s-8.6-.3-8.6-.1 6.8-5.2 6.8-5.2l-3-8.7c0 .2 7.3 5.4 7.3 5.4l7.3-5.2-2.8 8.5 6.6 5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m162 290.3-5.7 16-5-15.8s-17.2-.5-17.2-.2 13.5-10.3 13.5-10.3l-6-17.6c.2.5 14.7 10.8 14.7 10.8L171 263l-5.7 17 13.3 10.1-16.6.3z"/>
+      <path fill="#ffe700" d="m161.2 289.5-4.9 13.8-4.4-13.6s-14.8-.4-14.8-.2 11.7-9 11.7-9l-5.3-15.2c.2.5 12.8 9.4 12.8 9.4s12.8-9 12.6-9-4.9 14.8-4.9 14.8l11.5 8.8z"/>
+      <path fill="#108c00" d="m159.1 287.2-2.8 8-2.5-7.9s-8.6-.2-8.6 0 6.8-5.2 6.8-5.2l-3-8.8c0 .3 7.3 5.4 7.3 5.4l7.3-5.2-2.8 8.6 6.6 5z"/>
+    </g>
+    <g stroke-width="1pt">
+      <path d="m198.7 175.8-5.6 16-5.2-15.7s-17-.5-17-.3 13.5-10.3 13.5-10.3l-6.1-17.5c.2.5 14.7 10.8 14.7 10.8s14.8-10.3 14.6-10.3-5.6 17-5.6 17l13.2 10z"/>
+      <path fill="#ffe700" d="m197.9 175-4.9 14-4.4-13.7s-14.8-.5-14.8-.2 11.7-9 11.7-9l-5.3-15.2c.2.5 12.8 9.4 12.8 9.4s12.8-9 12.6-9-4.8 14.8-4.8 14.8l11.4 8.7-14.3.3z"/>
+      <path fill="#108c00" d="m195.8 172.8-2.8 8-2.5-7.9s-8.5-.3-8.5-.1 6.7-5.2 6.7-5.2l-3-8.7c0 .2 7.3 5.4 7.3 5.4l7.3-5.2-2.8 8.5 6.6 5z"/>
+    </g>
+    <g transform="translate(-250.6 359.4)scale(1.036)">
+      <g fill="#009200" stroke="#000" stroke-width="2.5" transform="matrix(.164 -.016 .012 .184 429.8 -215.6)">
+        <ellipse cx="680.2" cy="586.1" rx="30.8" ry="189.8" transform="matrix(1.405 -.006 .008 1 -534.3 263.7)"/>
+        <ellipse cx="680.2" cy="586.1" rx="30.8" ry="189.8" transform="matrix(1.486 -.006 .01 1 -547.2 267)"/>
+        <ellipse cx="680.2" cy="586.1" rx="30.8" ry="189.8" transform="matrix(1.19 -.006 .007 1.105 -365 214.1)"/>
+      </g>
+      <g stroke="#000" transform="translate(72.9 -9.8)">
+        <path fill="#a95600" stroke-width="2.5" d="M238.3 971.8c30-1.7 16.7-16.7 31.7-25s36.6-3.3 43.3 6.7 1.6 20 10 20 234.5-12.7 242.8-4.4 10 25 1.7 31.6-294.5 14.4-304.5 7.7c-10-6.6-25-35-25-36.6z" transform="matrix(.202 .003 -.004 .214 340.9 -247.3)"/>
+        <path fill="#ff0" stroke-width="3.9" d="M529.6 405.5c0 40 45.6 27.8 46.8 61.2-.7 35.4-76.7 3.5-78.6-61.2 1.9-64.8 75-98 76.7-61 1.2 30.6-45 21-45 61z" transform="matrix(.148 .002 -.003 .115 340.4 -81.7)"/>
+        <path fill="#ff0" stroke-width="3.9" d="M529.6 405.5c0 40 45.6 27.8 46.8 61.2-.7 35.4-76.7 3.5-78.6-61.2 1.9-64.8 75-98 76.7-61 1.2 30.6-45 21-45 61z" transform="matrix(.148 .002 -.003 .115 344.4 -81.6)"/>
+        <path fill="#ff0" stroke-width="3.9" d="M529.6 405.5c0 40 45.6 27.8 46.8 61.2-.7 35.4-76.7 3.5-78.6-61.2 1.9-64.8 75-98 76.7-61 1.2 30.6-45 21-45 61z" transform="matrix(.148 .002 -.003 .115 348.7 -81.8)"/>
+        <path fill="#ff0" stroke-width="3.9" d="M529.6 405.5c0 40 45.6 27.8 46.8 61.2-.7 35.4-76.7 3.5-78.6-61.2 1.9-64.8 75-98 76.7-61 1.2 30.6-45 21-45 61z" transform="matrix(.148 .002 -.003 .115 352.7 -81.8)"/>
+        <ellipse cx="478.4" cy="-41.1" fill="#a95600" stroke-width=".4" rx="3.5" ry="3.4" transform="matrix(1.095 .016 -.024 1.154 -75.6 4.7)"/>
+      </g>
+      <g fill="#009200" stroke="#000" stroke-width="2.5" transform="rotate(-5.8 688.4 -625.2)">
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.166 -.008 .002 .315 369.8 -361.6)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.166 -.008 .002 .315 364 -362.7)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.166 -.008 .002 .315 360.6 -370.6)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.01 .002 .348 369.3 -399.4)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 377.4 -379)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 373.2 -382.2)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 368 -386.7)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 363 -389.5)"/>
+      </g>
+      <path fill="#804bff" stroke="#000" stroke-width="2.5" d="M173.2 346.4s-54.2 64.9-21.3 208.8C186 699.8 331 745 331 745s26.5-47.5 1.7-164c-40-170-116.1-234.6-116.1-234.6h-43.3z" transform="matrix(.177 .032 -.03 .182 461.8 -208.6)"/>
+      <g fill="#009200" stroke="#000" stroke-width="2.5" transform="rotate(4.5 181 769.9)">
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.166 -.008 .002 .315 369.8 -361.6)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.166 -.008 .002 .315 364 -362.7)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.166 -.008 .002 .315 360.6 -370.6)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.01 .002 .348 369.3 -399.4)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 377.4 -379)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 373.2 -382.2)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 368 -386.7)"/>
+        <ellipse cx="427.1" cy="905" rx="20.8" ry="24.1" transform="matrix(.16 -.008 .002 .326 363 -389.5)"/>
+      </g>
+      <ellipse cx="624.4" cy="606.1" fill="#c90000" stroke="#000" stroke-width="1pt" rx="58.3" ry="186.5" transform="matrix(.157 -.06 .064 .148 369.6 -145)"/>
+      <g fill="#009200" stroke="#000" transform="rotate(1 242.4 -1957.8)">
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.5" rx="10.8" ry="12.9" transform="matrix(.395 0 0 .293 445 -230.5)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .293 457.2 -236)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .293 452 -236)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.37 0 0 .275 449.5 -233.5)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.37 0 0 .275 449 -238)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .293 447 -238.8)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .287 448 -241.6)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.5" rx="10.8" ry="12.9" transform="matrix(.395 0 0 .293 432.8 -243.5)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.37 0 0 .275 446 -243.5)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .287 444.2 -247)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .293 436.1 -243.2)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .287 437.4 -243.9)"/>
+        <ellipse cx="218.1" cy="356.8" stroke-width="1.6" rx="10.8" ry="12.9" transform="matrix(.354 0 0 .287 439 -247)"/>
+      </g>
+      <g fill="#009200" stroke="#000" transform="matrix(.18 -.005 .004 .185 421 -216.8)">
+        <ellipse cx="528.7" cy="564.5" stroke-width="2.5" rx="67.4" ry="205.6" transform="matrix(.976 -.308 .363 .874 -245.8 324.4)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="2.5" rx="13.3" ry="40.8" transform="rotate(-23.4 630.5 660.9)"/>
+        <path stroke-width="1.5" d="M139.9 644c0 57.7-18.8 86.2-34.6 110.3 7.5-32.5 13-52.6 13-110.3s29.5-85.3 40.3-102c-4.2 16.7-18.7 44.3-18.7 102z" transform="matrix(1.883 -.456 .953 1.182 -352.3 -10)"/>
+        <path stroke-width="1.5" d="M139.9 644c0 57.7-18.8 86.2-34.6 110.3 7.5-32.5 13-52.6 13-110.3s29.5-85.3 40.3-102c-4.2 16.7-18.7 44.3-18.7 102z" transform="matrix(1.883 -.456 .953 1.182 -348.4 44)"/>
+        <path stroke-width="1.5" d="M139.9 644c0 57.7-18.8 86.2-34.6 110.3 7.5-32.5 13-52.6 13-110.3s29.5-85.3 40.3-102c-4.2 16.7-18.7 44.3-18.7 102z" transform="matrix(1.873 -.495 .978 1.162 -362 105.8)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="1.4" rx="13.3" ry="40.8" transform="matrix(1.81 -.4 .7 1.635 -915.6 -221)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="1.6" rx="13.3" ry="40.8" transform="matrix(1.626 -.23 .542 1.353 -739.5 -91.8)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="1.6" rx="13.3" ry="40.8" transform="matrix(1.63 -.197 .513 1.363 -750.6 -91.8)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="2.1" rx="13.3" ry="40.8" transform="matrix(1.314 -.2 .47 1.01 -531 47.6)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="2.1" rx="13.3" ry="40.8" transform="matrix(1.326 -.13 .403 1.033 -517.9 12.2)"/>
+        <path stroke-width="2.1" d="M145.7 569.5c0 34-6.7 61.6-15 61.6s-15-27.6-15-61.6" transform="matrix(1.025 -.493 .464 1.177 12.8 -14.5)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="2.1" rx="13.3" ry="40.8" transform="matrix(1.326 -.13 .403 1.033 -519.5 -34.4)"/>
+        <ellipse cx="528.7" cy="646.1" stroke-width="2.1" rx="13.3" ry="40.8" transform="matrix(1.33 -.105 .38 1.04 -534 -40.1)"/>
+        <path stroke-width="2.9" d="M145.7 569.5c0 34-6.7 61.6-15 61.6s-15-27.6-15-61.6" transform="matrix(.672 -.472 .46 .8 39.5 143.3)"/>
+        <path stroke-width="2.9" d="M145.7 569.5c0 34-6.7 61.6-15 61.6s-15-27.6-15-61.6" transform="matrix(.672 -.472 .46 .8 51.1 125.8)"/>
+        <path stroke-width="2.1" d="M145.7 569.5c0 34-6.7 61.6-15 61.6s-15-27.6-15-61.6" transform="matrix(.937 -.645 .64 1.092 -40.2 -10.7)"/>
+        <path stroke-width="2.7" d="M145.7 569.5c0 34-6.7 61.6-15 61.6s-15-27.6-15-61.6" transform="matrix(.672 -.52 .46 .88 68.6 71.2)"/>
+      </g>
+      <g fill="#804bff" stroke="#000" stroke-width="2.5">
+        <path d="M276.3 345.4c-12.3 9.2.4 25.2 12 30.7 13 7.7 86.6 58.2 136.3 12-40.8.8-118.7-63.2-148.3-42.7z" transform="matrix(.156 .007 -.004 .225 458 -214.3)"/>
+        <path d="M276.3 345.4c-12.3 9.2.4 25.2 12 30.7 13 7.7 86.6 58.2 136.3 12-40.8.8-118.7-63.2-148.3-42.7z" transform="matrix(.156 .007 -.004 .225 456.6 -220.2)"/>
+        <path d="M276.3 345.4c-12.3 9.2.4 25.2 12 30.7 13 7.7 86.6 58.2 136.3 12-40.8.8-118.7-63.2-148.3-42.7z" transform="matrix(.156 .007 -.004 .225 454.8 -225.8)"/>
+        <path d="M276.3 345.4c-12.3 9.2.4 25.2 12 30.7 13 7.7 86.6 58.2 136.3 12-40.8.8-118.7-63.2-148.3-42.7z" transform="matrix(.156 .007 -.004 .225 450.9 -232.2)"/>
+      </g>
+      <g transform="rotate(1 -589.6 681.6)">
+        <path fill="#804bff" stroke="#000" stroke-width="2.5" d="M211.2 247.3c21.7-12 56.6-9.8 79.7 11.2 19.4 17 45.3 75.2 70.3 92.8a58 58 0 0 1-42.2-15.2c-28.8 15.5-38.1 16.7-64 15.7-35.8-1.4-62.4-17.7-68-40.6-6.3-21.8 4.8-52.5 24.2-63.9z" transform="matrix(.21 -.04 .047 .18 407.8 -213.6)"/>
+        <ellipse cx="287.2" cy="323" fill="red" stroke="#000" stroke-width="2.5" rx="14.2" ry="15" transform="matrix(.245 0 0 .134 401.8 -215.2)"/>
+        <ellipse cx="204.6" cy="348.3" fill="#ff0" stroke="#000" stroke-width="2.5" rx="23.3" ry="15.9" transform="matrix(.194 -.076 .068 .173 398.7 -208)"/>
+        <circle cx="283.9" cy="333.9" r="5.8" transform="matrix(.214 0 0 .185 411.3 -233.7)"/>
+        <path fill="#ff0" stroke="#000" stroke-width="6.6" d="M516.8 260.3c4.4 18-6.7 43-33.1 52.6-26.8 13.2-46.1 41.8-55.7 88-47.2-103.2-23-148.3 20.6-160.3 37.4-14.4 60.4-13.4 68.2 19.7z" transform="matrix(.092 0 -.003 .085 417.9 -191.5)"/>
+        <circle cx="199" cy="362.4" r="4.7" transform="matrix(.187 -.013 .014 .19 418.7 -235)"/>
+      </g>
+    </g>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 122 - 0
public/image/flags/1x1/do.svg


+ 5 - 0
public/image/flags/1x1/dz.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dz" viewBox="0 0 512 512">
+  <path fill="#fff" d="M256 0h256v512H256z"/>
+  <path fill="#006233" d="M0 0h256v512H0z"/>
+  <path fill="#d21034" d="M367 192a128 128 0 1 0 0 128 102.4 102.4 0 1 1 0-128m4.2 64L256 218.4l71.7 98.2V195.4L256 293.6z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 48 - 0
public/image/flags/1x1/eac.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 138 - 0
public/image/flags/1x1/ec.svg


+ 5 - 0
public/image/flags/1x1/ee.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ee" viewBox="0 0 512 512">
+  <path fill="#1791ff" d="M0 0h512v170.7H0z"/>
+  <path fill="#000001" d="M0 170.7h512v170.6H0z"/>
+  <path fill="#fff" d="M0 341.3h512V512H0z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 38 - 0
public/image/flags/1x1/eg.svg


+ 11 - 0
public/image/flags/1x1/eh.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-eh" viewBox="0 0 512 512">
+  <path fill="#000001" d="M0 0h512v256H0z"/>
+  <path fill="#007a3d" d="M0 256h512v256H0z"/>
+  <path fill="#fff" d="M0 149.3h512v213.3H0z"/>
+  <path fill="#c4111b" d="m0 0 256 256L0 512Z"/>
+  <g stroke-width="1.7" transform="translate(-135 -6.5)scale(1.02539)">
+    <circle cx="512" cy="256" r="68.3" fill="#c4111b"/>
+    <circle cx="537.6" cy="256" r="68.3" fill="#fff"/>
+    <path fill="#c4111b" d="m493.7 297.3 29-20.8 29 21.2-10.8-34.2 29-21-35.8-.2-11-34-11.3 33.9-35.7-.1 28.7 21.2z"/>
+  </g>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 13 - 0
public/image/flags/1x1/er.svg


+ 4 - 0
public/image/flags/1x1/es-ct.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-es-ct" viewBox="0 0 512 512">
+  <path fill="#fcdd09" d="M0 0h512v512H0z"/>
+  <path stroke="#da121a" stroke-width="60" d="M0 90h810m0 120H0m0 120h810m0 120H0" transform="scale(.6321 .94815)"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 187 - 0
public/image/flags/1x1/es-ga.svg


+ 5 - 0
public/image/flags/1x1/es-pv.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-es-pv" viewBox="0 0 512 512">
+  <path fill="#d52b1e" d="M0 0h512v512H0z"/>
+  <path fill="#009b48" d="M0 0h42.5l106.7 106.7L256 213.4 469.5 0H512v42.5L405.3 149.2 298.6 256 512 469.5V512h-42.5L362.8 405.3 256 298.6 42.5 512H0v-42.5l106.7-106.7L213.4 256 0 42.5V21.3z"/>
+  <path fill="#fff" d="M221.9 0h68.2v221.9H512v68.2H290.1V512h-68.2V290.1H0v-68.2h221.9v-111z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 547 - 0
public/image/flags/1x1/es.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 14 - 0
public/image/flags/1x1/et.svg


+ 28 - 0
public/image/flags/1x1/eu.svg

@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-eu" viewBox="0 0 512 512">
+  <defs>
+    <g id="eu-d">
+      <g id="eu-b">
+        <path id="eu-a" d="m0-1-.3 1 .5.1z"/>
+        <use xlink:href="#eu-a" transform="scale(-1 1)"/>
+      </g>
+      <g id="eu-c">
+        <use xlink:href="#eu-b" transform="rotate(72)"/>
+        <use xlink:href="#eu-b" transform="rotate(144)"/>
+      </g>
+      <use xlink:href="#eu-c" transform="scale(-1 1)"/>
+    </g>
+  </defs>
+  <path fill="#039" d="M0 0h512v512H0z"/>
+  <g fill="#fc0" transform="translate(256 258.4)scale(25.28395)">
+    <use xlink:href="#eu-d" width="100%" height="100%" y="-6"/>
+    <use xlink:href="#eu-d" width="100%" height="100%" y="6"/>
+    <g id="eu-e">
+      <use xlink:href="#eu-d" width="100%" height="100%" x="-6"/>
+      <use xlink:href="#eu-d" width="100%" height="100%" transform="rotate(-144 -2.3 -2.1)"/>
+      <use xlink:href="#eu-d" width="100%" height="100%" transform="rotate(144 -2.1 -2.3)"/>
+      <use xlink:href="#eu-d" width="100%" height="100%" transform="rotate(72 -4.7 -2)"/>
+      <use xlink:href="#eu-d" width="100%" height="100%" transform="rotate(72 -5 .5)"/>
+    </g>
+    <use xlink:href="#eu-e" width="100%" height="100%" transform="scale(-1 1)"/>
+  </g>
+</svg>

+ 5 - 0
public/image/flags/1x1/fi.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fi" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 0h512v512H0z"/>
+  <path fill="#002f6c" d="M0 186.2h512v139.6H0z"/>
+  <path fill="#002f6c" d="M123.2 0h139.6v512H123.1z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 123 - 0
public/image/flags/1x1/fj.svg


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 89 - 0
public/image/flags/1x1/fk.svg


+ 11 - 0
public/image/flags/1x1/fm.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fm" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="fm-a">
+      <path fill-opacity=".7" d="M244.2 0h496v496h-496z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#fm-a)" transform="translate(-252)scale(1.032)">
+    <path fill="#6797d6" d="M0 0h992.1v496H0z"/>
+    <path fill="#fff" d="M507.9 84.5h38.8l-31.5 21.4 12 34.8-31.3-21.5-31.5 21.5 12-34.8L445 84.4h39l12-34.7m12 363h38.8l-31.5-21.5 12-34.8-31.3 21.5-31.5-21.5 12 34.8-31.4 21.5H484l12 34.7M346 230.1l37.2-11.4-23.9 29.8 21.7 29.7-36.3-11.4-23.8 29.8 1.4-36.8-36.4-11.4 37.2-11.3 1.3-36.8m321 29.8-37.1-11.4 23.8 29.7-21.7 29.8 36.4-11.4 23.7 29.8-1.3-36.8 36.4-11.4-37.2-11.3-1.3-36.8"/>
+  </g>
+</svg>

+ 12 - 0
public/image/flags/1x1/fo.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fo" viewBox="0 0 512 512">
+  <defs>
+    <clipPath id="fo-a">
+      <path fill-opacity=".7" d="M0 0h512v512H0z"/>
+    </clipPath>
+  </defs>
+  <g fill-rule="evenodd" stroke-width="0" clip-path="url(#fo-a)">
+    <path fill="#fff" d="M-78 0h708.2v512H-78z"/>
+    <path fill="#003897" d="M-75.9 199.1h198.3V0h113.3v199.1h396.6V313H235.7v199H122.4V312.9H-76z"/>
+    <path fill="#d72828" d="M-75.9 227.6h226.6V0h56.7v227.6h424.9v56.9h-425V512h-56.6V284.4H-75.9z"/>
+  </g>
+</svg>

+ 5 - 0
public/image/flags/1x1/fr.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 0h512v512H0z"/>
+  <path fill="#000091" d="M0 0h170.7v512H0z"/>
+  <path fill="#e1000f" d="M341.3 0H512v512H341.3z"/>
+</svg>

+ 7 - 0
public/image/flags/1x1/ga.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ga" viewBox="0 0 512 512">
+  <g fill-rule="evenodd">
+    <path fill="#ffe700" d="M512 512H0V0h512z"/>
+    <path fill="#36a100" d="M512 170.7H0V0h512z"/>
+    <path fill="#006dbc" d="M512 512H0V341.3h512z"/>
+  </g>
+</svg>

+ 5 - 0
public/image/flags/1x1/gb-eng.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb-eng" viewBox="0 0 512 512">
+  <path fill="#fff" d="M0 0h512v512H0z"/>
+  <path fill="#ce1124" d="M215 0h82v512h-82z"/>
+  <path fill="#ce1124" d="M0 215h512v82H0z"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 131 - 0
public/image/flags/1x1/gb-nir.svg


+ 4 - 0
public/image/flags/1x1/gb-sct.svg

@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb-sct" viewBox="0 0 512 512">
+  <path fill="#0065bd" d="M0 0h512v512H0z"/>
+  <path stroke="#fff" stroke-width=".6" d="m0 0 5 3M0 3l5-3" transform="scale(102.4 170.66667)"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 9 - 0
public/image/flags/1x1/gb-wls.svg


+ 7 - 0
public/image/flags/1x1/gb.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 512 512">
+  <path fill="#012169" d="M0 0h512v512H0z"/>
+  <path fill="#FFF" d="M512 0v64L322 256l190 187v69h-67L254 324 68 512H0v-68l186-187L0 74V0h62l192 188L440 0z"/>
+  <path fill="#C8102E" d="m184 324 11 34L42 512H0v-3zm124-12 54 8 150 147v45zM512 0 320 196l-4-44L466 0zM0 1l193 189-59-8L0 49z"/>
+  <path fill="#FFF" d="M176 0v512h160V0zM0 176v160h512V176z"/>
+  <path fill="#C8102E" d="M0 208v96h512v-96zM208 0v512h96V0z"/>
+</svg>

+ 27 - 0
public/image/flags/1x1/gd.svg

@@ -0,0 +1,27 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-gd" viewBox="0 0 512 512">
+  <defs>
+    <g id="gd-c">
+      <g id="gd-b">
+        <path id="gd-a" fill="#fcd116" d="M0-1v1h.5" transform="rotate(18 0 -1)"/>
+        <use xlink:href="#gd-a" width="100%" height="100%" transform="scale(-1 1)"/>
+      </g>
+      <use xlink:href="#gd-b" width="100%" height="100%" transform="rotate(72)"/>
+      <use xlink:href="#gd-b" width="100%" height="100%" transform="rotate(144)"/>
+      <use xlink:href="#gd-b" width="100%" height="100%" transform="rotate(-144)"/>
+      <use xlink:href="#gd-b" width="100%" height="100%" transform="rotate(-72)"/>
+    </g>
+  </defs>
+  <path fill="#ce1126" d="M0 0h512v512H0z"/>
+  <path fill="#007a5e" d="M71.7 71.7h368.6v368.6H71.7z"/>
+  <path fill="#fcd116" d="M71.7 71.7h368.6L71.7 440.4h368.6z"/>
+  <circle cx="255.9" cy="256.1" r="61.4" fill="#ce1126"/>
+  <use xlink:href="#gd-c" width="100%" height="100%" transform="translate(256 256)scale(56.32)"/>
+  <use xlink:href="#gd-d" width="100%" height="100%" x="-100" transform="translate(-16.4 -.1)"/>
+  <use xlink:href="#gd-c" id="gd-d" width="100%" height="100%" transform="translate(256 35.9)scale(33.28)"/>
+  <use xlink:href="#gd-d" width="100%" height="100%" x="100" transform="translate(16.4)"/>
+  <path fill="#ce1126" d="M99.8 256.8c7.7 14.3 22.6 29.8 35.7 35.3.2-14.5-5-33.2-12-48z"/>
+  <path fill="#fcd116" d="M86.8 207.6c11.1 23.3-29 78.7 37.8 91.7a68 68 0 0 1-11.5-44.7 76 76 0 0 1 34.6 32.8c17.5-63.4-44.8-59.5-61-79.8z"/>
+  <use xlink:href="#gd-d" width="100%" height="100%" x="-100" transform="translate(-16.4 442)"/>
+  <use xlink:href="#gd-c" width="100%" height="100%" transform="translate(256 478)scale(33.28)"/>
+  <use xlink:href="#gd-d" width="100%" height="100%" x="100" transform="translate(16.4 442.2)"/>
+</svg>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
public/image/flags/1x1/ge.svg


+ 0 - 0
public/image/flags/1x1/gf.svg


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä