diff --git a/assets/css/inputs.css b/assets/css/inputs.css
index eed9417..df85447 100644
--- a/assets/css/inputs.css
+++ b/assets/css/inputs.css
@@ -65,3 +65,162 @@
.radio {
margin: 0 .5rem 0 0;
}
+
+.filter-section {
+ width: 15rem;
+ max-width: 100%;
+ border-bottom: solid 1px var(--shadow-hint);
+}
+
+.label-values {
+ font-weight: normal;
+}
+
+.filter-split {
+ display: flex;
+ align-items: center;
+}
+
+.toggle-container,
+.range-container {
+ display: flex;
+ flex-grow: 1;
+ align-items: center;
+ padding: .5rem 0;
+
+ &.on {
+ .toggle-label.on {
+ color: var(--enabled);
+
+ .icon {
+ fill: var(--enabled);
+ }
+ }
+
+ .toggle {
+ background-color: var(--enabled-background);
+
+ &::-webkit-slider-thumb {
+ background: var(--enabled);
+ }
+
+ &::-moz-range-thumb {
+ background: var(--enabled);
+ }
+ }
+ }
+
+ &.off {
+ .toggle-label.off {
+ color: var(--disabled);
+
+ .icon {
+ fill: var(--disabled);
+ }
+ }
+
+ .toggle {
+ background-color: var(--disabled-background);
+
+ &::-webkit-slider-thumb {
+ background: var(--disabled);
+ }
+
+ &::-moz-range-thumb {
+ background: var(--disabled);
+ }
+ }
+ }
+}
+
+.toggle-label {
+ display: inline-flex;
+ justify-content: center;
+ min-width: 1.5rem;
+ flex-shrink: 0;
+ padding: 0 .5rem;
+ color: var(--shadow);
+ font-weight: bold;
+ font-size: .9rem;
+
+ &.on {
+ text-align: right;
+ }
+
+ .icon {
+ fill: var(--shadow);
+ }
+
+ &:hover {
+ cursor: pointer;
+
+ &.on {
+ color: var(--enabled);
+
+ .icon {
+ fill: var(--enabled);
+ }
+ }
+
+ &.off {
+ color: var(--disabled);
+
+ .icon {
+ fill: var(--disabled);
+ }
+ }
+ }
+}
+
+.filter-label {
+ display: flex;
+ justify-content: space-between;
+ padding: .75rem .5rem .5rem .5rem;
+ color: var(--shadow);
+ font-weight: bold;
+ font-size: .9rem;
+
+ .label {
+ display: inline-flex;
+ align-items: center;
+ text-transform: capitalize;
+ }
+
+ .checkbox {
+ margin: 0 .75rem 0 0;
+ }
+
+ .icon {
+ margin: 0 .5rem 0 0;
+ }
+}
+
+.toggle {
+ width: 0;
+ flex-grow: 1;
+ height: 1.25rem;
+ appearance: none;
+ border-radius: 1rem;
+ background-color: var(--shadow-weak-30);
+ background-image: radial-gradient(circle, var(--shadow-weak-10) .3rem, transparent calc(.3rem + 1px));
+ cursor: pointer;
+
+ &::-webkit-slider-thumb {
+ appearance: none;
+ background: var(--disabled-handle);
+ width: 1.25rem;
+ height: 1.25rem;
+ border-radius: .625rem;
+ box-shadow: 0 0 3px var(--shadow-weak-10);
+ }
+
+ &::-moz-range-thumb {
+ appearance: none;
+ background: var(--disabled-handle);
+ width: 1.25rem;
+ height: 1.25rem;
+ border: none;
+ border-radius: .625rem;
+ box-shadow: 0 0 3px var(--shadow-weak-10);
+ }
+}
diff --git a/assets/css/theme.css b/assets/css/theme.css
index b99fbc4..1a05011 100644
--- a/assets/css/theme.css
+++ b/assets/css/theme.css
@@ -52,4 +52,10 @@
--male: #0af;
--female: #f0a;
+
+ --enabled: #5c2;
+ --enabled-background: rgba(0, 255, 0, .1);
+ --disabled: #c20;
+ --disabled-background: rgba(255, 0, 0, .1);
+ --disabled-handle: #aaa;
}
diff --git a/components/actors/tile.vue b/components/actors/tile.vue
index c06958f..db320af 100644
--- a/components/actors/tile.vue
+++ b/components/actors/tile.vue
@@ -37,7 +37,7 @@
>
{{ actor.birthCountry.alpha2 }}
diff --git a/components/filters/countries.vue b/components/filters/countries.vue
new file mode 100755
index 0000000..2d42bc1
--- /dev/null
+++ b/components/filters/countries.vue
@@ -0,0 +1,86 @@
+
+
+ -
+
+
+ {{ country.alias || country.name }}
+
+
+
+
+
+
+
+
+
diff --git a/components/filters/range.vue b/components/filters/range.vue
index 37796b8..1699a9e 100755
--- a/components/filters/range.vue
+++ b/components/filters/range.vue
@@ -77,132 +77,4 @@ const emit = defineEmits(['change', 'input', 'enable']);
diff --git a/components/form/range.vue b/components/form/range.vue
index 6c46344..760738c 100755
--- a/components/form/range.vue
+++ b/components/form/range.vue
@@ -119,7 +119,7 @@ async function setNearest(event) {
range.value[closestSlider] = closestValue;
- emit('change', [minValue.value, maxValue.value]);
+ set('change');
}
}
@@ -133,7 +133,7 @@ async function setRange(prop, value) {
if (!props.disabled) {
range.value[prop] = value;
- emit('change', [minValue.value, maxValue.value]);
+ set('change');
}
}
@@ -161,7 +161,7 @@ async function setRange(prop, value) {
border-radius: .625rem;
&.disabled {
- --slider-range: var(--shadow-weak-10);
+ --slider-range: var(--shadow-weak-30);
--slider-thumb: var(--grey-dark-10);
}
}
diff --git a/components/tooltip/tooltip.vue b/components/tooltip/tooltip.vue
new file mode 100644
index 0000000..1ee79f1
--- /dev/null
+++ b/components/tooltip/tooltip.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 91efb45..df61535 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,8 @@
"date-fns": "^3.0.0",
"express": "^4.18.2",
"express-promise-router": "^4.1.1",
+ "express-query-boolean": "^2.0.0",
+ "floating-vue": "^2.0.0-beta.24",
"knex": "^3.1.0",
"manticoresearch": "^4.0.0",
"nanoid": "^5.0.4",
@@ -2436,6 +2438,27 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@floating-ui/core": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz",
+ "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.1.3"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz",
+ "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==",
+ "dependencies": {
+ "@floating-ui/core": "^1.1.0"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+ "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.13",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
@@ -4316,6 +4339,11 @@
}
}
},
+ "node_modules/express-query-boolean": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/express-query-boolean/-/express-query-boolean-2.0.0.tgz",
+ "integrity": "sha512-4dU/1HPm8lkTPR12+HFUXqCarcsC19OKOkb4otLOuADfPYrQMaugPJkSmxNsqwmWYjozvT6vdTiqkgeBHkzOow=="
+ },
"node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -4457,6 +4485,24 @@
"integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
"dev": true
},
+ "node_modules/floating-vue": {
+ "version": "2.0.0-beta.24",
+ "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-2.0.0-beta.24.tgz",
+ "integrity": "sha512-URSzP6YXaF4u1oZ9XGL8Sn8puuM7ivp5jkOUrpy5Q1mfo9BfGppJOn+ierTmsSUfJEeHBae8KT7r5DeI3vQIEw==",
+ "dependencies": {
+ "@floating-ui/dom": "~1.1.1",
+ "vue-resize": "^2.0.0-alpha.1"
+ },
+ "peerDependencies": {
+ "@nuxt/kit": "^3.2.0",
+ "vue": "^3.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ }
+ }
+ },
"node_modules/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -7633,6 +7679,14 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
+ "node_modules/vue-resize": {
+ "version": "2.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz",
+ "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -9239,6 +9293,27 @@
"integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
"dev": true
},
+ "@floating-ui/core": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz",
+ "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==",
+ "requires": {
+ "@floating-ui/utils": "^0.1.3"
+ }
+ },
+ "@floating-ui/dom": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz",
+ "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==",
+ "requires": {
+ "@floating-ui/core": "^1.1.0"
+ }
+ },
+ "@floating-ui/utils": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+ "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+ },
"@humanwhocodes/config-array": {
"version": "0.11.13",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
@@ -10666,6 +10741,11 @@
"methods": "^1.0.0"
}
},
+ "express-query-boolean": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/express-query-boolean/-/express-query-boolean-2.0.0.tgz",
+ "integrity": "sha512-4dU/1HPm8lkTPR12+HFUXqCarcsC19OKOkb4otLOuADfPYrQMaugPJkSmxNsqwmWYjozvT6vdTiqkgeBHkzOow=="
+ },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -10767,6 +10847,15 @@
"integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
"dev": true
},
+ "floating-vue": {
+ "version": "2.0.0-beta.24",
+ "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-2.0.0-beta.24.tgz",
+ "integrity": "sha512-URSzP6YXaF4u1oZ9XGL8Sn8puuM7ivp5jkOUrpy5Q1mfo9BfGppJOn+ierTmsSUfJEeHBae8KT7r5DeI3vQIEw==",
+ "requires": {
+ "@floating-ui/dom": "~1.1.1",
+ "vue-resize": "^2.0.0-alpha.1"
+ }
+ },
"for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -12834,6 +12923,12 @@
}
}
},
+ "vue-resize": {
+ "version": "2.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz",
+ "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==",
+ "requires": {}
+ },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/package.json b/package.json
index e74115c..c8aca85 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,8 @@
"date-fns": "^3.0.0",
"express": "^4.18.2",
"express-promise-router": "^4.1.1",
+ "express-query-boolean": "^2.0.0",
+ "floating-vue": "^2.0.0-beta.24",
"knex": "^3.1.0",
"manticoresearch": "^4.0.0",
"nanoid": "^5.0.4",
diff --git a/pages/actors/+Page.vue b/pages/actors/+Page.vue
index 657ed67..e3089cf 100644
--- a/pages/actors/+Page.vue
+++ b/pages/actors/+Page.vue
@@ -14,6 +14,48 @@
>
+
+ -
+
+
+
+ -
+
+
+
+ -
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ updateFilter('braSizeRequired', checked, true)"
+ @input="(range) => updateFilter('braSize', range, false)"
+ @change="(range) => updateFilter('braSize', range, true)"
+ >
+
+
+
+
+ Enhanced Boobs
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+ Country
+
+
+
+
+
+
+
+
+
+
+
{ avatarRequired = checked; search(); }"
+ @change="(checked) => updateFilter('avatarRequired', checked, true)"
/>
@@ -87,41 +209,61 @@
+
+
diff --git a/pages/actors/+onBeforeRender.js b/pages/actors/+onBeforeRender.js
index a6ed948..59500ad 100644
--- a/pages/actors/+onBeforeRender.js
+++ b/pages/actors/+onBeforeRender.js
@@ -1,15 +1,15 @@
import { fetchActors } from '#/src/actors.js';
+import { curateActorsQuery } from '#/src/web/actors.js';
export async function onBeforeRender(pageContext) {
- const query = pageContext.urlParsed.search;
+ console.log(pageContext);
- const { actors, limit, total } = await fetchActors({
- query: query.q,
- requireAvatar: Object.hasOwn(query, 'avatar'),
- age: query.age?.split(',').map((age) => Number(age)),
- height: query.height?.split(',').map((height) => Number(height)),
- weight: query.weight?.split(',').map((weight) => Number(weight)),
- }, {
+ const {
+ actors,
+ countries,
+ limit,
+ total,
+ } = await fetchActors(curateActorsQuery(pageContext.urlQuery), {
page: Number(pageContext.routeParams.page) || 1,
limit: Number(pageContext.urlParsed.search.limit) || 50,
});
@@ -19,6 +19,7 @@ export async function onBeforeRender(pageContext) {
title: 'actors',
pageProps: {
actors,
+ countries,
limit,
total,
},
diff --git a/public/img/flags/ad.svg b/public/img/flags/ad.svg
new file mode 100755
index 0000000..1d28110
--- /dev/null
+++ b/public/img/flags/ad.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/ae.svg b/public/img/flags/ae.svg
new file mode 100755
index 0000000..be9e433
--- /dev/null
+++ b/public/img/flags/ae.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/public/img/flags/af.svg b/public/img/flags/af.svg
new file mode 100755
index 0000000..ab021a6
--- /dev/null
+++ b/public/img/flags/af.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/ag.svg b/public/img/flags/ag.svg
new file mode 100755
index 0000000..b306bc6
--- /dev/null
+++ b/public/img/flags/ag.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/ai.svg b/public/img/flags/ai.svg
new file mode 100755
index 0000000..0e2994d
--- /dev/null
+++ b/public/img/flags/ai.svg
@@ -0,0 +1,178 @@
+
+
diff --git a/public/img/flags/al.svg b/public/img/flags/al.svg
new file mode 100755
index 0000000..327221e
--- /dev/null
+++ b/public/img/flags/al.svg
@@ -0,0 +1,113 @@
+
+
diff --git a/public/img/flags/am.svg b/public/img/flags/am.svg
new file mode 100755
index 0000000..6fbf08a
--- /dev/null
+++ b/public/img/flags/am.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/ao.svg b/public/img/flags/ao.svg
new file mode 100755
index 0000000..fa9cc38
--- /dev/null
+++ b/public/img/flags/ao.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/ar.svg b/public/img/flags/ar.svg
new file mode 100755
index 0000000..5a0e31a
--- /dev/null
+++ b/public/img/flags/ar.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/as.svg b/public/img/flags/as.svg
new file mode 100755
index 0000000..41632bf
--- /dev/null
+++ b/public/img/flags/as.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/at.svg b/public/img/flags/at.svg
new file mode 100755
index 0000000..9a063c3
--- /dev/null
+++ b/public/img/flags/at.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/au.svg b/public/img/flags/au.svg
new file mode 100755
index 0000000..1ef69a8
--- /dev/null
+++ b/public/img/flags/au.svg
@@ -0,0 +1,195 @@
+
+
diff --git a/public/img/flags/aw.svg b/public/img/flags/aw.svg
new file mode 100755
index 0000000..f60299a
--- /dev/null
+++ b/public/img/flags/aw.svg
@@ -0,0 +1,138 @@
+
+
diff --git a/public/img/flags/ax.svg b/public/img/flags/ax.svg
new file mode 100755
index 0000000..86e349c
--- /dev/null
+++ b/public/img/flags/ax.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/az.svg b/public/img/flags/az.svg
new file mode 100755
index 0000000..59ea6e6
--- /dev/null
+++ b/public/img/flags/az.svg
@@ -0,0 +1,136 @@
+
+
diff --git a/public/img/flags/ba.svg b/public/img/flags/ba.svg
new file mode 100755
index 0000000..943d96c
--- /dev/null
+++ b/public/img/flags/ba.svg
@@ -0,0 +1,167 @@
+
+
diff --git a/public/img/flags/bb.svg b/public/img/flags/bb.svg
new file mode 100755
index 0000000..f27b8f5
--- /dev/null
+++ b/public/img/flags/bb.svg
@@ -0,0 +1,131 @@
+
+
diff --git a/public/img/flags/bd.svg b/public/img/flags/bd.svg
new file mode 100755
index 0000000..73a232d
--- /dev/null
+++ b/public/img/flags/bd.svg
@@ -0,0 +1,116 @@
+
+
diff --git a/public/img/flags/be.svg b/public/img/flags/be.svg
new file mode 100755
index 0000000..b1b254d
--- /dev/null
+++ b/public/img/flags/be.svg
@@ -0,0 +1,123 @@
+
+
diff --git a/public/img/flags/bf.svg b/public/img/flags/bf.svg
new file mode 100755
index 0000000..cf9bbf3
--- /dev/null
+++ b/public/img/flags/bf.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/bg.svg b/public/img/flags/bg.svg
new file mode 100755
index 0000000..2d89b12
--- /dev/null
+++ b/public/img/flags/bg.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/bh.svg b/public/img/flags/bh.svg
new file mode 100755
index 0000000..0b0a721
--- /dev/null
+++ b/public/img/flags/bh.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/bi.svg b/public/img/flags/bi.svg
new file mode 100755
index 0000000..700af9d
--- /dev/null
+++ b/public/img/flags/bi.svg
@@ -0,0 +1,157 @@
+
+
diff --git a/public/img/flags/bj.svg b/public/img/flags/bj.svg
new file mode 100755
index 0000000..230b7ed
--- /dev/null
+++ b/public/img/flags/bj.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/bl.svg b/public/img/flags/bl.svg
new file mode 100755
index 0000000..877ae3a
--- /dev/null
+++ b/public/img/flags/bl.svg
@@ -0,0 +1,143 @@
+
+
diff --git a/public/img/flags/bm.svg b/public/img/flags/bm.svg
new file mode 100755
index 0000000..3751af6
--- /dev/null
+++ b/public/img/flags/bm.svg
@@ -0,0 +1,246 @@
+
+
diff --git a/public/img/flags/bn.svg b/public/img/flags/bn.svg
new file mode 100755
index 0000000..21e3394
--- /dev/null
+++ b/public/img/flags/bn.svg
@@ -0,0 +1,159 @@
+
+
diff --git a/public/img/flags/bo.svg b/public/img/flags/bo.svg
new file mode 100755
index 0000000..9e6a6ea
--- /dev/null
+++ b/public/img/flags/bo.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/bq-saba.svg b/public/img/flags/bq-saba.svg
new file mode 100755
index 0000000..3f3392c
--- /dev/null
+++ b/public/img/flags/bq-saba.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/bq-se.svg b/public/img/flags/bq-se.svg
new file mode 100755
index 0000000..a59a112
--- /dev/null
+++ b/public/img/flags/bq-se.svg
@@ -0,0 +1,144 @@
+
+
diff --git a/public/img/flags/bq.svg b/public/img/flags/bq.svg
new file mode 100755
index 0000000..0328baa
--- /dev/null
+++ b/public/img/flags/bq.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/br.svg b/public/img/flags/br.svg
new file mode 100755
index 0000000..dfe2d6d
--- /dev/null
+++ b/public/img/flags/br.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/bs.svg b/public/img/flags/bs.svg
new file mode 100755
index 0000000..512622f
--- /dev/null
+++ b/public/img/flags/bs.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/bt.svg b/public/img/flags/bt.svg
new file mode 100755
index 0000000..56a1a34
--- /dev/null
+++ b/public/img/flags/bt.svg
@@ -0,0 +1,119 @@
+
+
diff --git a/public/img/flags/bw.svg b/public/img/flags/bw.svg
new file mode 100755
index 0000000..efd90ff
--- /dev/null
+++ b/public/img/flags/bw.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/by.svg b/public/img/flags/by.svg
new file mode 100755
index 0000000..5c0c1a9
--- /dev/null
+++ b/public/img/flags/by.svg
@@ -0,0 +1,156 @@
+
+
diff --git a/public/img/flags/bz.svg b/public/img/flags/bz.svg
new file mode 100755
index 0000000..f32eada
--- /dev/null
+++ b/public/img/flags/bz.svg
@@ -0,0 +1,158 @@
+
+
diff --git a/public/img/flags/ca-bc.svg b/public/img/flags/ca-bc.svg
new file mode 100755
index 0000000..e6a6fe9
--- /dev/null
+++ b/public/img/flags/ca-bc.svg
@@ -0,0 +1,245 @@
+
+
diff --git a/public/img/flags/ca.svg b/public/img/flags/ca.svg
new file mode 100755
index 0000000..0960a5e
--- /dev/null
+++ b/public/img/flags/ca.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/cc.svg b/public/img/flags/cc.svg
new file mode 100755
index 0000000..5b604aa
--- /dev/null
+++ b/public/img/flags/cc.svg
@@ -0,0 +1,150 @@
+
+
diff --git a/public/img/flags/cd.svg b/public/img/flags/cd.svg
new file mode 100755
index 0000000..9915155
--- /dev/null
+++ b/public/img/flags/cd.svg
@@ -0,0 +1,125 @@
+
+
diff --git a/public/img/flags/cf.svg b/public/img/flags/cf.svg
new file mode 100755
index 0000000..6d0cb8d
--- /dev/null
+++ b/public/img/flags/cf.svg
@@ -0,0 +1,163 @@
+
+
diff --git a/public/img/flags/cg.svg b/public/img/flags/cg.svg
new file mode 100755
index 0000000..ed549ed
--- /dev/null
+++ b/public/img/flags/cg.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/ch.svg b/public/img/flags/ch.svg
new file mode 100755
index 0000000..37138b7
--- /dev/null
+++ b/public/img/flags/ch.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/ci.svg b/public/img/flags/ci.svg
new file mode 100755
index 0000000..9d73e4d
--- /dev/null
+++ b/public/img/flags/ci.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/ck.svg b/public/img/flags/ck.svg
new file mode 100755
index 0000000..e7c7107
--- /dev/null
+++ b/public/img/flags/ck.svg
@@ -0,0 +1,186 @@
+
+
diff --git a/public/img/flags/cl-ei.svg b/public/img/flags/cl-ei.svg
new file mode 100755
index 0000000..5491634
--- /dev/null
+++ b/public/img/flags/cl-ei.svg
@@ -0,0 +1,114 @@
+
+
diff --git a/public/img/flags/cl.svg b/public/img/flags/cl.svg
new file mode 100755
index 0000000..65294b6
--- /dev/null
+++ b/public/img/flags/cl.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/cm.svg b/public/img/flags/cm.svg
new file mode 100755
index 0000000..b8a8769
--- /dev/null
+++ b/public/img/flags/cm.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/cn.svg b/public/img/flags/cn.svg
new file mode 100755
index 0000000..87ac38c
--- /dev/null
+++ b/public/img/flags/cn.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/co.svg b/public/img/flags/co.svg
new file mode 100755
index 0000000..47991b6
--- /dev/null
+++ b/public/img/flags/co.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/cr.svg b/public/img/flags/cr.svg
new file mode 100755
index 0000000..2fe54bf
--- /dev/null
+++ b/public/img/flags/cr.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/cu.svg b/public/img/flags/cu.svg
new file mode 100755
index 0000000..fb94fea
--- /dev/null
+++ b/public/img/flags/cu.svg
@@ -0,0 +1,150 @@
+
+
diff --git a/public/img/flags/cv.svg b/public/img/flags/cv.svg
new file mode 100755
index 0000000..cf58a67
--- /dev/null
+++ b/public/img/flags/cv.svg
@@ -0,0 +1,179 @@
+
+
diff --git a/public/img/flags/cw.svg b/public/img/flags/cw.svg
new file mode 100755
index 0000000..f874223
--- /dev/null
+++ b/public/img/flags/cw.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/cx.svg b/public/img/flags/cx.svg
new file mode 100755
index 0000000..69abd58
--- /dev/null
+++ b/public/img/flags/cx.svg
@@ -0,0 +1,153 @@
+
+
diff --git a/public/img/flags/cy.svg b/public/img/flags/cy.svg
new file mode 100755
index 0000000..326d34d
--- /dev/null
+++ b/public/img/flags/cy.svg
@@ -0,0 +1,118 @@
+
+
diff --git a/public/img/flags/cz.svg b/public/img/flags/cz.svg
new file mode 100755
index 0000000..a9e398e
--- /dev/null
+++ b/public/img/flags/cz.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/de.svg b/public/img/flags/de.svg
new file mode 100755
index 0000000..6a13a64
--- /dev/null
+++ b/public/img/flags/de.svg
@@ -0,0 +1,123 @@
+
+
diff --git a/public/img/flags/dj.svg b/public/img/flags/dj.svg
new file mode 100755
index 0000000..5f3ef33
--- /dev/null
+++ b/public/img/flags/dj.svg
@@ -0,0 +1,125 @@
+
+
diff --git a/public/img/flags/dk.svg b/public/img/flags/dk.svg
new file mode 100755
index 0000000..477a0db
--- /dev/null
+++ b/public/img/flags/dk.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/dm.svg b/public/img/flags/dm.svg
new file mode 100755
index 0000000..f638a2b
--- /dev/null
+++ b/public/img/flags/dm.svg
@@ -0,0 +1,202 @@
+
+
diff --git a/public/img/flags/do.svg b/public/img/flags/do.svg
new file mode 100755
index 0000000..ed59640
--- /dev/null
+++ b/public/img/flags/do.svg
@@ -0,0 +1,150 @@
+
+
diff --git a/public/img/flags/dz.svg b/public/img/flags/dz.svg
new file mode 100755
index 0000000..bfdaf78
--- /dev/null
+++ b/public/img/flags/dz.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/ec-w.svg b/public/img/flags/ec-w.svg
new file mode 100755
index 0000000..9b7ecd6
--- /dev/null
+++ b/public/img/flags/ec-w.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/ec.svg b/public/img/flags/ec.svg
new file mode 100755
index 0000000..9de3e42
--- /dev/null
+++ b/public/img/flags/ec.svg
@@ -0,0 +1,137 @@
+
+
diff --git a/public/img/flags/ee.svg b/public/img/flags/ee.svg
new file mode 100755
index 0000000..85bceb2
--- /dev/null
+++ b/public/img/flags/ee.svg
@@ -0,0 +1,123 @@
+
+
diff --git a/public/img/flags/eg.svg b/public/img/flags/eg.svg
new file mode 100755
index 0000000..c406801
--- /dev/null
+++ b/public/img/flags/eg.svg
@@ -0,0 +1,127 @@
+
+
diff --git a/public/img/flags/eh.svg b/public/img/flags/eh.svg
new file mode 100755
index 0000000..55e8f00
--- /dev/null
+++ b/public/img/flags/eh.svg
@@ -0,0 +1,139 @@
+
+
diff --git a/public/img/flags/er.svg b/public/img/flags/er.svg
new file mode 100755
index 0000000..e99a58d
--- /dev/null
+++ b/public/img/flags/er.svg
@@ -0,0 +1,125 @@
+
+
diff --git a/public/img/flags/es-ce.svg b/public/img/flags/es-ce.svg
new file mode 100755
index 0000000..8245635
--- /dev/null
+++ b/public/img/flags/es-ce.svg
@@ -0,0 +1,207 @@
+
+
diff --git a/public/img/flags/es-cn.svg b/public/img/flags/es-cn.svg
new file mode 100755
index 0000000..58b96e3
--- /dev/null
+++ b/public/img/flags/es-cn.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/es-ib.svg b/public/img/flags/es-ib.svg
new file mode 100755
index 0000000..902817d
--- /dev/null
+++ b/public/img/flags/es-ib.svg
@@ -0,0 +1,161 @@
+
+
diff --git a/public/img/flags/es-ml.svg b/public/img/flags/es-ml.svg
new file mode 100755
index 0000000..652804b
--- /dev/null
+++ b/public/img/flags/es-ml.svg
@@ -0,0 +1,200 @@
+
+
diff --git a/public/img/flags/es.svg b/public/img/flags/es.svg
new file mode 100755
index 0000000..55690e7
--- /dev/null
+++ b/public/img/flags/es.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/esp-pv.svg b/public/img/flags/esp-pv.svg
new file mode 100755
index 0000000..cfae1ca
--- /dev/null
+++ b/public/img/flags/esp-pv.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/et.svg b/public/img/flags/et.svg
new file mode 100755
index 0000000..7f5c63f
--- /dev/null
+++ b/public/img/flags/et.svg
@@ -0,0 +1,142 @@
+
+
diff --git a/public/img/flags/eu.svg b/public/img/flags/eu.svg
new file mode 100755
index 0000000..e8b9307
--- /dev/null
+++ b/public/img/flags/eu.svg
@@ -0,0 +1,146 @@
+
+
diff --git a/public/img/flags/fi.svg b/public/img/flags/fi.svg
new file mode 100755
index 0000000..a760fd5
--- /dev/null
+++ b/public/img/flags/fi.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/fj.svg b/public/img/flags/fj.svg
new file mode 100755
index 0000000..11cb42c
--- /dev/null
+++ b/public/img/flags/fj.svg
@@ -0,0 +1,155 @@
+
+
diff --git a/public/img/flags/fk.svg b/public/img/flags/fk.svg
new file mode 100755
index 0000000..7bde5d8
--- /dev/null
+++ b/public/img/flags/fk.svg
@@ -0,0 +1,185 @@
+
+
diff --git a/public/img/flags/fm.svg b/public/img/flags/fm.svg
new file mode 100755
index 0000000..2d26093
--- /dev/null
+++ b/public/img/flags/fm.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/public/img/flags/fo.svg b/public/img/flags/fo.svg
new file mode 100755
index 0000000..9baa0e1
--- /dev/null
+++ b/public/img/flags/fo.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/fr-h.svg b/public/img/flags/fr-h.svg
new file mode 100755
index 0000000..4614742
--- /dev/null
+++ b/public/img/flags/fr-h.svg
@@ -0,0 +1,117 @@
+
+
diff --git a/public/img/flags/fr.svg b/public/img/flags/fr.svg
new file mode 100755
index 0000000..869a23f
--- /dev/null
+++ b/public/img/flags/fr.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/ga.svg b/public/img/flags/ga.svg
new file mode 100755
index 0000000..3ac6f6c
--- /dev/null
+++ b/public/img/flags/ga.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/gb-eng.svg b/public/img/flags/gb-eng.svg
new file mode 100755
index 0000000..915ae26
--- /dev/null
+++ b/public/img/flags/gb-eng.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/gb-ork.svg b/public/img/flags/gb-ork.svg
new file mode 100755
index 0000000..fe46ae6
--- /dev/null
+++ b/public/img/flags/gb-ork.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/gb-sct.svg b/public/img/flags/gb-sct.svg
new file mode 100755
index 0000000..b9efd31
--- /dev/null
+++ b/public/img/flags/gb-sct.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/gb-wls.svg b/public/img/flags/gb-wls.svg
new file mode 100755
index 0000000..03fd545
--- /dev/null
+++ b/public/img/flags/gb-wls.svg
@@ -0,0 +1,121 @@
+
+
diff --git a/public/img/flags/gb.svg b/public/img/flags/gb.svg
new file mode 100755
index 0000000..7535661
--- /dev/null
+++ b/public/img/flags/gb.svg
@@ -0,0 +1,201 @@
+
+
diff --git a/public/img/flags/gd.svg b/public/img/flags/gd.svg
new file mode 100755
index 0000000..d6b9775
--- /dev/null
+++ b/public/img/flags/gd.svg
@@ -0,0 +1,184 @@
+
+
diff --git a/public/img/flags/ge-ab.svg b/public/img/flags/ge-ab.svg
new file mode 100755
index 0000000..0f55adc
--- /dev/null
+++ b/public/img/flags/ge-ab.svg
@@ -0,0 +1,185 @@
+
+
diff --git a/public/img/flags/ge.svg b/public/img/flags/ge.svg
new file mode 100755
index 0000000..a1698c7
--- /dev/null
+++ b/public/img/flags/ge.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/gg.svg b/public/img/flags/gg.svg
new file mode 100755
index 0000000..20943ad
--- /dev/null
+++ b/public/img/flags/gg.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/gh.svg b/public/img/flags/gh.svg
new file mode 100755
index 0000000..341489c
--- /dev/null
+++ b/public/img/flags/gh.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/gi.svg b/public/img/flags/gi.svg
new file mode 100755
index 0000000..b88dc32
--- /dev/null
+++ b/public/img/flags/gi.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/gl.svg b/public/img/flags/gl.svg
new file mode 100755
index 0000000..4b32285
--- /dev/null
+++ b/public/img/flags/gl.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/gm.svg b/public/img/flags/gm.svg
new file mode 100755
index 0000000..a2253dd
--- /dev/null
+++ b/public/img/flags/gm.svg
@@ -0,0 +1,131 @@
+
+
diff --git a/public/img/flags/gn.svg b/public/img/flags/gn.svg
new file mode 100755
index 0000000..b5d0e48
--- /dev/null
+++ b/public/img/flags/gn.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/gq.svg b/public/img/flags/gq.svg
new file mode 100755
index 0000000..2a4b550
--- /dev/null
+++ b/public/img/flags/gq.svg
@@ -0,0 +1,144 @@
+
+
diff --git a/public/img/flags/gr.svg b/public/img/flags/gr.svg
new file mode 100755
index 0000000..18ce532
--- /dev/null
+++ b/public/img/flags/gr.svg
@@ -0,0 +1,167 @@
+
+
diff --git a/public/img/flags/gt.svg b/public/img/flags/gt.svg
new file mode 100755
index 0000000..f3118c2
--- /dev/null
+++ b/public/img/flags/gt.svg
@@ -0,0 +1,137 @@
+
+
diff --git a/public/img/flags/gu.svg b/public/img/flags/gu.svg
new file mode 100755
index 0000000..1522dbc
--- /dev/null
+++ b/public/img/flags/gu.svg
@@ -0,0 +1,145 @@
+
+
diff --git a/public/img/flags/gw.svg b/public/img/flags/gw.svg
new file mode 100755
index 0000000..9c6547d
--- /dev/null
+++ b/public/img/flags/gw.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/hk.svg b/public/img/flags/hk.svg
new file mode 100755
index 0000000..9840fce
--- /dev/null
+++ b/public/img/flags/hk.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/hn.svg b/public/img/flags/hn.svg
new file mode 100755
index 0000000..b9008a6
--- /dev/null
+++ b/public/img/flags/hn.svg
@@ -0,0 +1,148 @@
+
+
diff --git a/public/img/flags/hr.svg b/public/img/flags/hr.svg
new file mode 100755
index 0000000..8f99753
--- /dev/null
+++ b/public/img/flags/hr.svg
@@ -0,0 +1,242 @@
+
+
diff --git a/public/img/flags/ht.svg b/public/img/flags/ht.svg
new file mode 100755
index 0000000..b1b0fbb
--- /dev/null
+++ b/public/img/flags/ht.svg
@@ -0,0 +1,149 @@
+
+
diff --git a/public/img/flags/hu.svg b/public/img/flags/hu.svg
new file mode 100755
index 0000000..124bc03
--- /dev/null
+++ b/public/img/flags/hu.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/id.svg b/public/img/flags/id.svg
new file mode 100755
index 0000000..4ee694f
--- /dev/null
+++ b/public/img/flags/id.svg
@@ -0,0 +1,117 @@
+
+
diff --git a/public/img/flags/ie.svg b/public/img/flags/ie.svg
new file mode 100755
index 0000000..a8b4713
--- /dev/null
+++ b/public/img/flags/ie.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/il.svg b/public/img/flags/il.svg
new file mode 100755
index 0000000..b0701b5
--- /dev/null
+++ b/public/img/flags/il.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/im.svg b/public/img/flags/im.svg
new file mode 100755
index 0000000..1126d72
--- /dev/null
+++ b/public/img/flags/im.svg
@@ -0,0 +1,114 @@
+
+
diff --git a/public/img/flags/in.svg b/public/img/flags/in.svg
new file mode 100755
index 0000000..cf8c490
--- /dev/null
+++ b/public/img/flags/in.svg
@@ -0,0 +1,141 @@
+
+
diff --git a/public/img/flags/io.svg b/public/img/flags/io.svg
new file mode 100755
index 0000000..833ea2b
--- /dev/null
+++ b/public/img/flags/io.svg
@@ -0,0 +1,302 @@
+
+
diff --git a/public/img/flags/iq.svg b/public/img/flags/iq.svg
new file mode 100755
index 0000000..1209ef7
--- /dev/null
+++ b/public/img/flags/iq.svg
@@ -0,0 +1,139 @@
+
+
diff --git a/public/img/flags/ir.svg b/public/img/flags/ir.svg
new file mode 100755
index 0000000..b2000fe
--- /dev/null
+++ b/public/img/flags/ir.svg
@@ -0,0 +1,304 @@
+
+
diff --git a/public/img/flags/is.svg b/public/img/flags/is.svg
new file mode 100755
index 0000000..77f7e1f
--- /dev/null
+++ b/public/img/flags/is.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/it-82.svg b/public/img/flags/it-82.svg
new file mode 100755
index 0000000..9fde406
--- /dev/null
+++ b/public/img/flags/it-82.svg
@@ -0,0 +1,123 @@
+
+
diff --git a/public/img/flags/it-88.svg b/public/img/flags/it-88.svg
new file mode 100755
index 0000000..ac662e0
--- /dev/null
+++ b/public/img/flags/it-88.svg
@@ -0,0 +1,155 @@
+
+
diff --git a/public/img/flags/it.svg b/public/img/flags/it.svg
new file mode 100755
index 0000000..f6bbf5e
--- /dev/null
+++ b/public/img/flags/it.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/je.svg b/public/img/flags/je.svg
new file mode 100755
index 0000000..a028cf4
--- /dev/null
+++ b/public/img/flags/je.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/jm.svg b/public/img/flags/jm.svg
new file mode 100755
index 0000000..5ad6b97
--- /dev/null
+++ b/public/img/flags/jm.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/jo.svg b/public/img/flags/jo.svg
new file mode 100755
index 0000000..41c7a0b
--- /dev/null
+++ b/public/img/flags/jo.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/jp.svg b/public/img/flags/jp.svg
new file mode 100755
index 0000000..e836b2a
--- /dev/null
+++ b/public/img/flags/jp.svg
@@ -0,0 +1,116 @@
+
+
diff --git a/public/img/flags/ke.svg b/public/img/flags/ke.svg
new file mode 100755
index 0000000..f6e14ca
--- /dev/null
+++ b/public/img/flags/ke.svg
@@ -0,0 +1,160 @@
+
+
diff --git a/public/img/flags/kg.svg b/public/img/flags/kg.svg
new file mode 100755
index 0000000..127a249
--- /dev/null
+++ b/public/img/flags/kg.svg
@@ -0,0 +1,151 @@
+
+
diff --git a/public/img/flags/kh.svg b/public/img/flags/kh.svg
new file mode 100755
index 0000000..b96f5f3
--- /dev/null
+++ b/public/img/flags/kh.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/km.svg b/public/img/flags/km.svg
new file mode 100755
index 0000000..ef98949
--- /dev/null
+++ b/public/img/flags/km.svg
@@ -0,0 +1,160 @@
+
+
diff --git a/public/img/flags/kn.svg b/public/img/flags/kn.svg
new file mode 100755
index 0000000..9c5e68a
--- /dev/null
+++ b/public/img/flags/kn.svg
@@ -0,0 +1,136 @@
+
+
diff --git a/public/img/flags/kp.svg b/public/img/flags/kp.svg
new file mode 100755
index 0000000..782f10a
--- /dev/null
+++ b/public/img/flags/kp.svg
@@ -0,0 +1,153 @@
+
+
diff --git a/public/img/flags/kr.svg b/public/img/flags/kr.svg
new file mode 100755
index 0000000..afbd571
--- /dev/null
+++ b/public/img/flags/kr.svg
@@ -0,0 +1,262 @@
+
+
diff --git a/public/img/flags/kw.svg b/public/img/flags/kw.svg
new file mode 100755
index 0000000..9287695
--- /dev/null
+++ b/public/img/flags/kw.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/ky.svg b/public/img/flags/ky.svg
new file mode 100755
index 0000000..ef4b200
--- /dev/null
+++ b/public/img/flags/ky.svg
@@ -0,0 +1,184 @@
+
+
diff --git a/public/img/flags/kz.svg b/public/img/flags/kz.svg
new file mode 100755
index 0000000..6ddddea
--- /dev/null
+++ b/public/img/flags/kz.svg
@@ -0,0 +1,123 @@
+
+
diff --git a/public/img/flags/la.svg b/public/img/flags/la.svg
new file mode 100755
index 0000000..e02b5dc
--- /dev/null
+++ b/public/img/flags/la.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/lb.svg b/public/img/flags/lb.svg
new file mode 100755
index 0000000..9465959
--- /dev/null
+++ b/public/img/flags/lb.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/lc.svg b/public/img/flags/lc.svg
new file mode 100755
index 0000000..3b4645a
--- /dev/null
+++ b/public/img/flags/lc.svg
@@ -0,0 +1,125 @@
+
+
diff --git a/public/img/flags/li.svg b/public/img/flags/li.svg
new file mode 100755
index 0000000..836d432
--- /dev/null
+++ b/public/img/flags/li.svg
@@ -0,0 +1,119 @@
+
+
diff --git a/public/img/flags/lk.svg b/public/img/flags/lk.svg
new file mode 100755
index 0000000..7863e3e
--- /dev/null
+++ b/public/img/flags/lk.svg
@@ -0,0 +1,182 @@
+
+
diff --git a/public/img/flags/lr.svg b/public/img/flags/lr.svg
new file mode 100755
index 0000000..bb23bdb
--- /dev/null
+++ b/public/img/flags/lr.svg
@@ -0,0 +1,168 @@
+
+
diff --git a/public/img/flags/ls.svg b/public/img/flags/ls.svg
new file mode 100755
index 0000000..2f8adc3
--- /dev/null
+++ b/public/img/flags/ls.svg
@@ -0,0 +1,127 @@
+
+
diff --git a/public/img/flags/lt.svg b/public/img/flags/lt.svg
new file mode 100755
index 0000000..9cbab17
--- /dev/null
+++ b/public/img/flags/lt.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/lu.svg b/public/img/flags/lu.svg
new file mode 100755
index 0000000..0284072
--- /dev/null
+++ b/public/img/flags/lu.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/lv.svg b/public/img/flags/lv.svg
new file mode 100755
index 0000000..f43c01c
--- /dev/null
+++ b/public/img/flags/lv.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/ly.svg b/public/img/flags/ly.svg
new file mode 100755
index 0000000..72d1afe
--- /dev/null
+++ b/public/img/flags/ly.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/ma.svg b/public/img/flags/ma.svg
new file mode 100755
index 0000000..2cf31b0
--- /dev/null
+++ b/public/img/flags/ma.svg
@@ -0,0 +1,112 @@
+
+
diff --git a/public/img/flags/mc.svg b/public/img/flags/mc.svg
new file mode 100755
index 0000000..69e3f01
--- /dev/null
+++ b/public/img/flags/mc.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/md-tr.svg b/public/img/flags/md-tr.svg
new file mode 100755
index 0000000..0f325de
--- /dev/null
+++ b/public/img/flags/md-tr.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/md.svg b/public/img/flags/md.svg
new file mode 100755
index 0000000..5961455
--- /dev/null
+++ b/public/img/flags/md.svg
@@ -0,0 +1,140 @@
+
+
diff --git a/public/img/flags/me.svg b/public/img/flags/me.svg
new file mode 100755
index 0000000..b4e5eb2
--- /dev/null
+++ b/public/img/flags/me.svg
@@ -0,0 +1,141 @@
+
+
diff --git a/public/img/flags/mg.svg b/public/img/flags/mg.svg
new file mode 100755
index 0000000..71f3730
--- /dev/null
+++ b/public/img/flags/mg.svg
@@ -0,0 +1,118 @@
+
+
diff --git a/public/img/flags/mh.svg b/public/img/flags/mh.svg
new file mode 100755
index 0000000..3e1898e
--- /dev/null
+++ b/public/img/flags/mh.svg
@@ -0,0 +1,127 @@
+
+
diff --git a/public/img/flags/mk.svg b/public/img/flags/mk.svg
new file mode 100755
index 0000000..4dba850
--- /dev/null
+++ b/public/img/flags/mk.svg
@@ -0,0 +1,158 @@
+
+
diff --git a/public/img/flags/ml.svg b/public/img/flags/ml.svg
new file mode 100755
index 0000000..2a1040a
--- /dev/null
+++ b/public/img/flags/ml.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/mm.svg b/public/img/flags/mm.svg
new file mode 100755
index 0000000..cccd571
--- /dev/null
+++ b/public/img/flags/mm.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/mn.svg b/public/img/flags/mn.svg
new file mode 100755
index 0000000..cca2406
--- /dev/null
+++ b/public/img/flags/mn.svg
@@ -0,0 +1,176 @@
+
+
diff --git a/public/img/flags/mo.svg b/public/img/flags/mo.svg
new file mode 100755
index 0000000..1d1e7f8
--- /dev/null
+++ b/public/img/flags/mo.svg
@@ -0,0 +1,150 @@
+
+
diff --git a/public/img/flags/mp.svg b/public/img/flags/mp.svg
new file mode 100755
index 0000000..723878f
--- /dev/null
+++ b/public/img/flags/mp.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/mq.svg b/public/img/flags/mq.svg
new file mode 100755
index 0000000..2e74fe8
--- /dev/null
+++ b/public/img/flags/mq.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/mr.svg b/public/img/flags/mr.svg
new file mode 100755
index 0000000..203a4ac
--- /dev/null
+++ b/public/img/flags/mr.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/ms.svg b/public/img/flags/ms.svg
new file mode 100755
index 0000000..85e9641
--- /dev/null
+++ b/public/img/flags/ms.svg
@@ -0,0 +1,176 @@
+
+
diff --git a/public/img/flags/mt.svg b/public/img/flags/mt.svg
new file mode 100755
index 0000000..22d4023
--- /dev/null
+++ b/public/img/flags/mt.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/mu.svg b/public/img/flags/mu.svg
new file mode 100755
index 0000000..b92167e
--- /dev/null
+++ b/public/img/flags/mu.svg
@@ -0,0 +1,131 @@
+
+
diff --git a/public/img/flags/mv.svg b/public/img/flags/mv.svg
new file mode 100755
index 0000000..d065a9e
--- /dev/null
+++ b/public/img/flags/mv.svg
@@ -0,0 +1,121 @@
+
+
diff --git a/public/img/flags/mw.svg b/public/img/flags/mw.svg
new file mode 100755
index 0000000..9fe6e46
--- /dev/null
+++ b/public/img/flags/mw.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/mx.svg b/public/img/flags/mx.svg
new file mode 100755
index 0000000..12c54e3
--- /dev/null
+++ b/public/img/flags/mx.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/public/img/flags/my.svg b/public/img/flags/my.svg
new file mode 100755
index 0000000..17b528f
--- /dev/null
+++ b/public/img/flags/my.svg
@@ -0,0 +1,161 @@
+
+
diff --git a/public/img/flags/mz.svg b/public/img/flags/mz.svg
new file mode 100755
index 0000000..956c758
--- /dev/null
+++ b/public/img/flags/mz.svg
@@ -0,0 +1,151 @@
+
+
diff --git a/public/img/flags/na.svg b/public/img/flags/na.svg
new file mode 100755
index 0000000..fa90376
--- /dev/null
+++ b/public/img/flags/na.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/public/img/flags/nato.svg b/public/img/flags/nato.svg
new file mode 100755
index 0000000..dec0057
--- /dev/null
+++ b/public/img/flags/nato.svg
@@ -0,0 +1,166 @@
+
+
diff --git a/public/img/flags/ne.svg b/public/img/flags/ne.svg
new file mode 100755
index 0000000..5fff65e
--- /dev/null
+++ b/public/img/flags/ne.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/public/img/flags/nf.svg b/public/img/flags/nf.svg
new file mode 100755
index 0000000..7960fc7
--- /dev/null
+++ b/public/img/flags/nf.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/ng.svg b/public/img/flags/ng.svg
new file mode 100755
index 0000000..a03dd51
--- /dev/null
+++ b/public/img/flags/ng.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/ni.svg b/public/img/flags/ni.svg
new file mode 100755
index 0000000..540b9fa
--- /dev/null
+++ b/public/img/flags/ni.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/public/img/flags/nl.svg b/public/img/flags/nl.svg
new file mode 100755
index 0000000..5f8af16
--- /dev/null
+++ b/public/img/flags/nl.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/no.svg b/public/img/flags/no.svg
new file mode 100755
index 0000000..c7a324c
--- /dev/null
+++ b/public/img/flags/no.svg
@@ -0,0 +1,120 @@
+
+
diff --git a/public/img/flags/np.svg b/public/img/flags/np.svg
new file mode 100755
index 0000000..5ee47d6
--- /dev/null
+++ b/public/img/flags/np.svg
@@ -0,0 +1,136 @@
+
+
diff --git a/public/img/flags/nr.svg b/public/img/flags/nr.svg
new file mode 100755
index 0000000..939d620
--- /dev/null
+++ b/public/img/flags/nr.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/nu.svg b/public/img/flags/nu.svg
new file mode 100755
index 0000000..aee81cd
--- /dev/null
+++ b/public/img/flags/nu.svg
@@ -0,0 +1,256 @@
+
+
diff --git a/public/img/flags/nz.svg b/public/img/flags/nz.svg
new file mode 100755
index 0000000..5ce671a
--- /dev/null
+++ b/public/img/flags/nz.svg
@@ -0,0 +1,184 @@
+
+
diff --git a/public/img/flags/om.svg b/public/img/flags/om.svg
new file mode 100755
index 0000000..21fedc9
--- /dev/null
+++ b/public/img/flags/om.svg
@@ -0,0 +1,143 @@
+
+
diff --git a/public/img/flags/oss.svg b/public/img/flags/oss.svg
new file mode 100755
index 0000000..93e49f7
--- /dev/null
+++ b/public/img/flags/oss.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/pa.svg b/public/img/flags/pa.svg
new file mode 100755
index 0000000..d1d0f2a
--- /dev/null
+++ b/public/img/flags/pa.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/pe.svg b/public/img/flags/pe.svg
new file mode 100755
index 0000000..dac61d0
--- /dev/null
+++ b/public/img/flags/pe.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/pf.svg b/public/img/flags/pf.svg
new file mode 100755
index 0000000..ec06400
--- /dev/null
+++ b/public/img/flags/pf.svg
@@ -0,0 +1,161 @@
+
+
diff --git a/public/img/flags/pg.svg b/public/img/flags/pg.svg
new file mode 100755
index 0000000..8a343d4
--- /dev/null
+++ b/public/img/flags/pg.svg
@@ -0,0 +1,142 @@
+
+
diff --git a/public/img/flags/ph.svg b/public/img/flags/ph.svg
new file mode 100755
index 0000000..ef8dd6b
--- /dev/null
+++ b/public/img/flags/ph.svg
@@ -0,0 +1,144 @@
+
+
diff --git a/public/img/flags/pk.svg b/public/img/flags/pk.svg
new file mode 100755
index 0000000..a641e27
--- /dev/null
+++ b/public/img/flags/pk.svg
@@ -0,0 +1,137 @@
+
+
diff --git a/public/img/flags/pl.svg b/public/img/flags/pl.svg
new file mode 100755
index 0000000..690f1ba
--- /dev/null
+++ b/public/img/flags/pl.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/pn.svg b/public/img/flags/pn.svg
new file mode 100755
index 0000000..bebd214
--- /dev/null
+++ b/public/img/flags/pn.svg
@@ -0,0 +1,181 @@
+
+
diff --git a/public/img/flags/pr.svg b/public/img/flags/pr.svg
new file mode 100755
index 0000000..ade5e76
--- /dev/null
+++ b/public/img/flags/pr.svg
@@ -0,0 +1,145 @@
+
+
diff --git a/public/img/flags/ps.svg b/public/img/flags/ps.svg
new file mode 100755
index 0000000..7099591
--- /dev/null
+++ b/public/img/flags/ps.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/pt-20.svg b/public/img/flags/pt-20.svg
new file mode 100755
index 0000000..d408ff2
--- /dev/null
+++ b/public/img/flags/pt-20.svg
@@ -0,0 +1,157 @@
+
+
diff --git a/public/img/flags/pt-30.svg b/public/img/flags/pt-30.svg
new file mode 100755
index 0000000..1fd420e
--- /dev/null
+++ b/public/img/flags/pt-30.svg
@@ -0,0 +1,138 @@
+
+
diff --git a/public/img/flags/pt.svg b/public/img/flags/pt.svg
new file mode 100755
index 0000000..70d42fd
--- /dev/null
+++ b/public/img/flags/pt.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/pw.svg b/public/img/flags/pw.svg
new file mode 100755
index 0000000..68785de
--- /dev/null
+++ b/public/img/flags/pw.svg
@@ -0,0 +1,116 @@
+
+
diff --git a/public/img/flags/py.svg b/public/img/flags/py.svg
new file mode 100755
index 0000000..98a1831
--- /dev/null
+++ b/public/img/flags/py.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/qa.svg b/public/img/flags/qa.svg
new file mode 100755
index 0000000..6801fab
--- /dev/null
+++ b/public/img/flags/qa.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/ro.svg b/public/img/flags/ro.svg
new file mode 100755
index 0000000..49627fa
--- /dev/null
+++ b/public/img/flags/ro.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/rs.svg b/public/img/flags/rs.svg
new file mode 100755
index 0000000..6285ecb
--- /dev/null
+++ b/public/img/flags/rs.svg
@@ -0,0 +1,144 @@
+
+
diff --git a/public/img/flags/ru.svg b/public/img/flags/ru.svg
new file mode 100755
index 0000000..062c294
--- /dev/null
+++ b/public/img/flags/ru.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/rw.svg b/public/img/flags/rw.svg
new file mode 100755
index 0000000..4088d83
--- /dev/null
+++ b/public/img/flags/rw.svg
@@ -0,0 +1,129 @@
+
+
diff --git a/public/img/flags/sa.svg b/public/img/flags/sa.svg
new file mode 100755
index 0000000..79d5082
--- /dev/null
+++ b/public/img/flags/sa.svg
@@ -0,0 +1,144 @@
+
+
diff --git a/public/img/flags/sb.svg b/public/img/flags/sb.svg
new file mode 100755
index 0000000..30ebe08
--- /dev/null
+++ b/public/img/flags/sb.svg
@@ -0,0 +1,144 @@
+
+
diff --git a/public/img/flags/sc.svg b/public/img/flags/sc.svg
new file mode 100755
index 0000000..6f0ee15
--- /dev/null
+++ b/public/img/flags/sc.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/public/img/flags/sd.svg b/public/img/flags/sd.svg
new file mode 100755
index 0000000..703d8ee
--- /dev/null
+++ b/public/img/flags/sd.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/se.svg b/public/img/flags/se.svg
new file mode 100755
index 0000000..23cb047
--- /dev/null
+++ b/public/img/flags/se.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/sg.svg b/public/img/flags/sg.svg
new file mode 100755
index 0000000..2e6a54d
--- /dev/null
+++ b/public/img/flags/sg.svg
@@ -0,0 +1,145 @@
+
+
diff --git a/public/img/flags/si.svg b/public/img/flags/si.svg
new file mode 100755
index 0000000..22fa503
--- /dev/null
+++ b/public/img/flags/si.svg
@@ -0,0 +1,136 @@
+
+
diff --git a/public/img/flags/sk.svg b/public/img/flags/sk.svg
new file mode 100755
index 0000000..55c5f16
--- /dev/null
+++ b/public/img/flags/sk.svg
@@ -0,0 +1,141 @@
+
+
diff --git a/public/img/flags/sl.svg b/public/img/flags/sl.svg
new file mode 100755
index 0000000..c31cc7e
--- /dev/null
+++ b/public/img/flags/sl.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/sm.svg b/public/img/flags/sm.svg
new file mode 100755
index 0000000..112529a
--- /dev/null
+++ b/public/img/flags/sm.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/sn.svg b/public/img/flags/sn.svg
new file mode 100755
index 0000000..d6e5477
--- /dev/null
+++ b/public/img/flags/sn.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/so-sl.svg b/public/img/flags/so-sl.svg
new file mode 100755
index 0000000..b271311
--- /dev/null
+++ b/public/img/flags/so-sl.svg
@@ -0,0 +1,158 @@
+
+
diff --git a/public/img/flags/so.svg b/public/img/flags/so.svg
new file mode 100755
index 0000000..fb4c80b
--- /dev/null
+++ b/public/img/flags/so.svg
@@ -0,0 +1,115 @@
+
+
diff --git a/public/img/flags/sr.svg b/public/img/flags/sr.svg
new file mode 100755
index 0000000..94bfae4
--- /dev/null
+++ b/public/img/flags/sr.svg
@@ -0,0 +1,140 @@
+
+
diff --git a/public/img/flags/ss.svg b/public/img/flags/ss.svg
new file mode 100755
index 0000000..0ed0f13
--- /dev/null
+++ b/public/img/flags/ss.svg
@@ -0,0 +1,140 @@
+
+
diff --git a/public/img/flags/st.svg b/public/img/flags/st.svg
new file mode 100755
index 0000000..0ab384a
--- /dev/null
+++ b/public/img/flags/st.svg
@@ -0,0 +1,141 @@
+
+
diff --git a/public/img/flags/sv.svg b/public/img/flags/sv.svg
new file mode 100755
index 0000000..f3b5d52
--- /dev/null
+++ b/public/img/flags/sv.svg
@@ -0,0 +1,142 @@
+
+
diff --git a/public/img/flags/sx.svg b/public/img/flags/sx.svg
new file mode 100755
index 0000000..35d491b
--- /dev/null
+++ b/public/img/flags/sx.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/public/img/flags/sy.svg b/public/img/flags/sy.svg
new file mode 100755
index 0000000..05b7eca
--- /dev/null
+++ b/public/img/flags/sy.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/tc.svg b/public/img/flags/tc.svg
new file mode 100755
index 0000000..efd1c2f
--- /dev/null
+++ b/public/img/flags/tc.svg
@@ -0,0 +1,184 @@
+
+
diff --git a/public/img/flags/td.svg b/public/img/flags/td.svg
new file mode 100755
index 0000000..ebf2650
--- /dev/null
+++ b/public/img/flags/td.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/tg.svg b/public/img/flags/tg.svg
new file mode 100755
index 0000000..dc06fdd
--- /dev/null
+++ b/public/img/flags/tg.svg
@@ -0,0 +1,147 @@
+
+
diff --git a/public/img/flags/th.svg b/public/img/flags/th.svg
new file mode 100755
index 0000000..c6d9b25
--- /dev/null
+++ b/public/img/flags/th.svg
@@ -0,0 +1,135 @@
+
+
diff --git a/public/img/flags/tib.svg b/public/img/flags/tib.svg
new file mode 100755
index 0000000..a928b74
--- /dev/null
+++ b/public/img/flags/tib.svg
@@ -0,0 +1,162 @@
+
+
diff --git a/public/img/flags/tj.svg b/public/img/flags/tj.svg
new file mode 100755
index 0000000..b8ac970
--- /dev/null
+++ b/public/img/flags/tj.svg
@@ -0,0 +1,160 @@
+
+
diff --git a/public/img/flags/tk.svg b/public/img/flags/tk.svg
new file mode 100755
index 0000000..d1e51f8
--- /dev/null
+++ b/public/img/flags/tk.svg
@@ -0,0 +1,142 @@
+
+
diff --git a/public/img/flags/tl.svg b/public/img/flags/tl.svg
new file mode 100755
index 0000000..65712b9
--- /dev/null
+++ b/public/img/flags/tl.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/tm.svg b/public/img/flags/tm.svg
new file mode 100755
index 0000000..3018e9e
--- /dev/null
+++ b/public/img/flags/tm.svg
@@ -0,0 +1,218 @@
+
+
diff --git a/public/img/flags/tn.svg b/public/img/flags/tn.svg
new file mode 100755
index 0000000..0b09418
--- /dev/null
+++ b/public/img/flags/tn.svg
@@ -0,0 +1,128 @@
+
+
diff --git a/public/img/flags/to.svg b/public/img/flags/to.svg
new file mode 100755
index 0000000..488931f
--- /dev/null
+++ b/public/img/flags/to.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/tr-cy.svg b/public/img/flags/tr-cy.svg
new file mode 100755
index 0000000..8db2cb0
--- /dev/null
+++ b/public/img/flags/tr-cy.svg
@@ -0,0 +1,136 @@
+
+
diff --git a/public/img/flags/tr.svg b/public/img/flags/tr.svg
new file mode 100755
index 0000000..e651d1c
--- /dev/null
+++ b/public/img/flags/tr.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/tt.svg b/public/img/flags/tt.svg
new file mode 100755
index 0000000..4dbbaa4
--- /dev/null
+++ b/public/img/flags/tt.svg
@@ -0,0 +1,119 @@
+
+
diff --git a/public/img/flags/tv.svg b/public/img/flags/tv.svg
new file mode 100755
index 0000000..4e19947
--- /dev/null
+++ b/public/img/flags/tv.svg
@@ -0,0 +1,248 @@
+
+
diff --git a/public/img/flags/tw.svg b/public/img/flags/tw.svg
new file mode 100755
index 0000000..cc477cf
--- /dev/null
+++ b/public/img/flags/tw.svg
@@ -0,0 +1,132 @@
+
+
diff --git a/public/img/flags/tz.svg b/public/img/flags/tz.svg
new file mode 100755
index 0000000..1a3d016
--- /dev/null
+++ b/public/img/flags/tz.svg
@@ -0,0 +1,124 @@
+
+
diff --git a/public/img/flags/ua.svg b/public/img/flags/ua.svg
new file mode 100755
index 0000000..fe21bdb
--- /dev/null
+++ b/public/img/flags/ua.svg
@@ -0,0 +1,117 @@
+
+
diff --git a/public/img/flags/ug.svg b/public/img/flags/ug.svg
new file mode 100755
index 0000000..bdd3d04
--- /dev/null
+++ b/public/img/flags/ug.svg
@@ -0,0 +1,146 @@
+
+
diff --git a/public/img/flags/un.svg b/public/img/flags/un.svg
new file mode 100755
index 0000000..2e27758
--- /dev/null
+++ b/public/img/flags/un.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/public/img/flags/us-hi.svg b/public/img/flags/us-hi.svg
new file mode 100755
index 0000000..76c33fe
--- /dev/null
+++ b/public/img/flags/us-hi.svg
@@ -0,0 +1,243 @@
+
+
diff --git a/public/img/flags/us.svg b/public/img/flags/us.svg
new file mode 100755
index 0000000..9d8df5f
--- /dev/null
+++ b/public/img/flags/us.svg
@@ -0,0 +1,201 @@
+
+
diff --git a/public/img/flags/uy.svg b/public/img/flags/uy.svg
new file mode 100755
index 0000000..45acbde
--- /dev/null
+++ b/public/img/flags/uy.svg
@@ -0,0 +1,154 @@
+
+
diff --git a/public/img/flags/uz.svg b/public/img/flags/uz.svg
new file mode 100755
index 0000000..13416c7
--- /dev/null
+++ b/public/img/flags/uz.svg
@@ -0,0 +1,198 @@
+
+
diff --git a/public/img/flags/va.svg b/public/img/flags/va.svg
new file mode 100755
index 0000000..70707b5
--- /dev/null
+++ b/public/img/flags/va.svg
@@ -0,0 +1,125 @@
+
+
diff --git a/public/img/flags/vc.svg b/public/img/flags/vc.svg
new file mode 100755
index 0000000..c05c26f
--- /dev/null
+++ b/public/img/flags/vc.svg
@@ -0,0 +1,140 @@
+
+
diff --git a/public/img/flags/ve.svg b/public/img/flags/ve.svg
new file mode 100755
index 0000000..635a894
--- /dev/null
+++ b/public/img/flags/ve.svg
@@ -0,0 +1,160 @@
+
+
diff --git a/public/img/flags/vg.svg b/public/img/flags/vg.svg
new file mode 100755
index 0000000..4acc4c3
--- /dev/null
+++ b/public/img/flags/vg.svg
@@ -0,0 +1,232 @@
+
+
diff --git a/public/img/flags/vi.svg b/public/img/flags/vi.svg
new file mode 100755
index 0000000..a803ba2
--- /dev/null
+++ b/public/img/flags/vi.svg
@@ -0,0 +1,157 @@
+
+
diff --git a/public/img/flags/vn.svg b/public/img/flags/vn.svg
new file mode 100755
index 0000000..3bf93a3
--- /dev/null
+++ b/public/img/flags/vn.svg
@@ -0,0 +1,113 @@
+
+
diff --git a/public/img/flags/vu.svg b/public/img/flags/vu.svg
new file mode 100755
index 0000000..ac3b432
--- /dev/null
+++ b/public/img/flags/vu.svg
@@ -0,0 +1,143 @@
+
+
diff --git a/public/img/flags/ws.svg b/public/img/flags/ws.svg
new file mode 100755
index 0000000..96fcb6d
--- /dev/null
+++ b/public/img/flags/ws.svg
@@ -0,0 +1,141 @@
+
+
diff --git a/public/img/flags/xk.svg b/public/img/flags/xk.svg
new file mode 100755
index 0000000..c24f774
--- /dev/null
+++ b/public/img/flags/xk.svg
@@ -0,0 +1,142 @@
+
+
diff --git a/public/img/flags/ye.svg b/public/img/flags/ye.svg
new file mode 100755
index 0000000..3eb3092
--- /dev/null
+++ b/public/img/flags/ye.svg
@@ -0,0 +1,123 @@
+
+
diff --git a/public/img/flags/za.svg b/public/img/flags/za.svg
new file mode 100755
index 0000000..be5b02e
--- /dev/null
+++ b/public/img/flags/za.svg
@@ -0,0 +1,133 @@
+
+
diff --git a/public/img/flags/zm.svg b/public/img/flags/zm.svg
new file mode 100755
index 0000000..131e400
--- /dev/null
+++ b/public/img/flags/zm.svg
@@ -0,0 +1,134 @@
+
+
diff --git a/public/img/flags/zw.svg b/public/img/flags/zw.svg
new file mode 100755
index 0000000..ab3a9ab
--- /dev/null
+++ b/public/img/flags/zw.svg
@@ -0,0 +1,177 @@
+
+
diff --git a/renderer/app.js b/renderer/app.js
index 1d8d950..41c61d2 100644
--- a/renderer/app.js
+++ b/renderer/app.js
@@ -1,7 +1,10 @@
import { createSSRApp, h } from 'vue';
-import { setPageContext } from './usePageContext';
+import FloatingVue from 'floating-vue';
+
+import { setPageContext } from './usePageContext.js';
import '../assets/css/style.css';
+import 'floating-vue/dist/style.css';
import Container from './container.vue';
import Link from '../components/link/link.vue';
@@ -29,6 +32,8 @@ function createApp(Page, pageProps, pageContext) {
app.provide('pageContext', pageContext);
+ app.use(FloatingVue);
+
app.component('Link', Link);
app.component('Icon', Icon);
diff --git a/src/actors.js b/src/actors.js
index a2bcba6..de82bf0 100644
--- a/src/actors.js
+++ b/src/actors.js
@@ -3,6 +3,7 @@ import { differenceInYears } from 'date-fns';
import knex from './knex.js';
import { searchApi } from './manticore.js';
import { HttpError } from './errors.js';
+import { fetchCountriesByAlpha2 } from './countries.js';
export function curateActor(actor, context = {}) {
return {
@@ -85,7 +86,7 @@ function curateOptions(options) {
}
function buildQuery(filters) {
- console.log(filters);
+ console.log('filters', filters);
const query = {
bool: {
@@ -93,6 +94,10 @@ function buildQuery(filters) {
},
};
+ const expressions = {
+ age: 'if(date_of_birth, floor((now() - date_of_birth) / 31556952), 0)',
+ };
+
if (filters.query) {
query.bool.must.push({
match: {
@@ -101,6 +106,14 @@ function buildQuery(filters) {
});
}
+ if (filters.gender) {
+ query.bool.must.push({
+ equals: {
+ gender: filters.gender,
+ },
+ });
+ }
+
['age', 'height', 'weight'].forEach((attribute) => {
if (filters[attribute]) {
query.bool.must.push({
@@ -114,6 +127,24 @@ function buildQuery(filters) {
}
});
+ if (filters.cup) {
+ expressions.cup_in_range = `regex(cup, '^[${filters.cup[0]}-${filters.cup[1]}]')`;
+
+ query.bool.must.push({
+ equals: {
+ cup_in_range: 1,
+ },
+ });
+ }
+
+ if (typeof filters.naturalBoobs === 'boolean') {
+ query.bool.must.push({
+ equals: {
+ natural_boobs: filters.naturalBoobs ? 2 : 1, // manticore boolean does not support null, so 0 = null, 1 = false (enhanced), 2 = true (natural)
+ },
+ });
+ }
+
if (filters.requireAvatar) {
query.bool.must.push({
equals: {
@@ -122,29 +153,40 @@ function buildQuery(filters) {
});
}
- return query;
+ return { query, expressions };
}
export async function fetchActors(filters, rawOptions) {
const options = curateOptions(rawOptions);
- const query = buildQuery(filters);
+ const { query, expressions } = buildQuery(filters);
const result = await searchApi.search({
index: 'actors',
query,
- expressions: {
- age: 'if(date_of_birth, floor((now() - date_of_birth) / 31556952), 0)',
- },
+ expressions,
limit: options.limit,
offset: (options.page - 1) * options.limit,
sort: [{ slug: 'asc' }],
+ aggs: {
+ countries: {
+ terms: {
+ field: 'country',
+ size: 300,
+ },
+ sort: [{ country: { order: 'asc' } }],
+ },
+ },
});
const actorIds = result.hits.hits.map((hit) => Number(hit._id));
- const actors = await fetchActorsById(actorIds);
+ const [actors, countries] = await Promise.all([
+ fetchActorsById(actorIds),
+ fetchCountriesByAlpha2(result.aggregations.countries.buckets.map((bucket) => bucket.key)),
+ ]);
return {
actors,
+ countries,
total: result.hits.total,
limit: options.limit,
};
diff --git a/src/countries.js b/src/countries.js
new file mode 100644
index 0000000..ece4d60
--- /dev/null
+++ b/src/countries.js
@@ -0,0 +1,15 @@
+import knex from './knex.js';
+
+function curateCountry(countryEntry) {
+ return {
+ name: countryEntry.name,
+ alpha2: countryEntry.alpha2,
+ code: countryEntry.code,
+ };
+}
+
+export async function fetchCountriesByAlpha2(alpha2s) {
+ const entries = await knex('countries').whereIn('alpha2', alpha2s);
+
+ return entries.map((entry) => curateCountry(entry));
+}
diff --git a/src/web/actors.js b/src/web/actors.js
index c58297c..b44b697 100644
--- a/src/web/actors.js
+++ b/src/web/actors.js
@@ -1,19 +1,34 @@
import { fetchActors } from '../actors.js';
+export function curateActorsQuery(query) {
+ console.log('input query', query);
+
+ return {
+ query: query.q,
+ gender: query.gender,
+ age: query.age?.split(',').map((age) => Number(age)),
+ cup: query.cup?.split(','),
+ naturalBoobs: query.nb,
+ height: query.height?.split(',').map((height) => Number(height)),
+ weight: query.weight?.split(',').map((weight) => Number(weight)),
+ requireAvatar: query.avatar,
+ };
+}
+
export async function fetchActorsApi(req, res) {
- const { actors, limit, total } = await fetchActors({
- query: req.query.q,
- requireAvatar: Object.hasOwn(req.query, 'avatar'),
- age: req.query.age?.split(',').map((age) => Number(age)),
- height: req.query.height?.split(',').map((height) => Number(height)),
- weight: req.query.weight?.split(',').map((weight) => Number(weight)),
- }, {
+ const {
+ actors,
+ countries,
+ limit,
+ total,
+ } = await fetchActors(curateActorsQuery(req.query), {
page: Number(req.query.page) || 1,
limit: Number(req.query.limit) || 50,
});
res.send({
actors,
+ countries,
limit,
total,
});
diff --git a/src/web/server.js b/src/web/server.js
index eafb2f2..a242630 100644
--- a/src/web/server.js
+++ b/src/web/server.js
@@ -13,6 +13,7 @@
import config from 'config';
import express from 'express';
+import boolParser from 'express-query-boolean';
import Router from 'express-promise-router';
import compression from 'compression';
import { renderPage } from 'vike/server'; // eslint-disable-line import/extensions
@@ -30,6 +31,8 @@ async function startServer() {
app.use(compression());
app.disable('x-powered-by');
+ router.use(boolParser());
+
router.use('/', express.static('public'));
router.use('/', express.static('static'));
router.use('/media', express.static(config.media.path));
@@ -66,6 +69,7 @@ async function startServer() {
router.get('*', async (req, res, next) => {
const pageContextInit = {
urlOriginal: req.originalUrl,
+ urlQuery: req.query, // vike's own query does not apply boolean parser
};
const pageContext = await renderPage(pageContextInit);