diff --git a/.idea/spothole.iml b/.idea/spothole.iml
index 347b546..f16c839 100644
--- a/.idea/spothole.iml
+++ b/.idea/spothole.iml
@@ -4,7 +4,7 @@
-
+
diff --git a/README.md b/README.md
index 15c9c2d..6945ec6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# 
+# 
Spothole is a utility to aggregate "spots" from amateur radio DX clusters and xOTA spotting sites, and provide an open
JSON API as well as a website to browse the data.
@@ -89,7 +89,7 @@ callsign and park data.
Various approaches exist to writing your own client, but in general:
-* Refer to the API docs. These are built on an OpenAPI definition file (`/webassets/apidocs/openapi.yml`), which you can
+* Refer to the API docs. These are built on an OpenAPI definition file (`/static/apidocs/openapi.yml`), which you can
automatically use to generate a client skeleton using various software.
* Call the main "spots" or "alerts" API endpoints to get the data you want. For example, your app could call
`https://spothole.app/api/v1/spots` once every few minutes. Apply filters if necessary.
@@ -346,9 +346,9 @@ server {
alias /var/www/html/.well-known/;
}
- # Load static assets directly from the Spothole webassets directory
+ # Load static assets directly from the Spothole static directory
location /static/ {
- alias /home/spothole/spothole/webassets/;
+ alias /home/spothole/spothole/static/;
expires 1h;
add_header Cache-Control "public, max-age=3600, must-revalidate";
}
@@ -452,12 +452,12 @@ To navigate your way around the source code, this list may help.
*HTML/JS/CSS front-end code*
-* `/webassets` - Root for static files served by the web server. These are all served from a path starting `/static/`.
-* `/webassets/apidocs` - Contains the OpenAPI spec (`openapi.yml`)
-* `/webassets/css` - CSS files used by the web front-end
-* `/webassets/img` - image files used by the web front-end
-* `/webassets/js` - JavaScript used by the web front-end
-* `/webassets/vendor` - Third-party libraries (CSS, JS, fonts and images)
+* `/static` - Root for static files served by the web server. These are all served from a path starting `/static/`.
+* `/static/apidocs` - Contains the OpenAPI spec (`openapi.yml`)
+* `/static/css` - CSS files used by the web front-end
+* `/static/img` - image files used by the web front-end
+* `/static/js` - JavaScript used by the web front-end
+* `/static/vendor` - Third-party libraries (CSS, JS, fonts and images)
*Miscellaneous*
@@ -509,14 +509,14 @@ my knowledge, created by HA8TKS for his CQ and ITU zone layers for Leaflet. `/da
maps of conference centres.
The project contains a set of flag icons generated using the "Noto Color Emoji" font on a Debian system, in the
-`/webassets/img/flags/` directory.
+`/static/img/flags/` directory.
The software uses a number of Python libraries as listed in `requirements.txt`, and a number of JavaScript libraries.
This project would not have been possible without these libraries, so many thanks to their developers.
### Third Party Libraries
-A number of third-party libraries are self-hosted in the `/webassets/vendor/` directory. These files are subject to
+A number of third-party libraries are self-hosted in the `/static/vendor/` directory. These files are subject to
their own licences and are not covered by the overall licence declared in the `LICENSE` file.
Particular thanks go to country-files.com for providing country lookup data for amateur radio, to K0SWE
diff --git a/alertproviders/http_alert_provider.py b/alertproviders/http_alert_provider.py
index 3e8dcf6..df79177 100644
--- a/alertproviders/http_alert_provider.py
+++ b/alertproviders/http_alert_provider.py
@@ -4,7 +4,7 @@ from threading import Thread, Event
import pytz
import requests
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from alertproviders.alert_provider import AlertProvider
from core.constants import HTTP_HEADERS
@@ -59,6 +59,8 @@ class HTTPAlertProvider(AlertProvider):
except ConnectionError:
logging.warning(f"Connection error when accessing {self.name} alerts API.")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing {self.name} alerts API.")
except Exception:
self.status = "Error"
logging.exception("Exception in HTTP JSON Alert Provider (" + self.name + ")")
diff --git a/core/lookup_helper.py b/core/lookup_helper.py
index a2a4fd8..e9c9641 100644
--- a/core/lookup_helper.py
+++ b/core/lookup_helper.py
@@ -11,7 +11,7 @@ from pyhamtools import LookupLib, Callinfo, callinfo
from pyhamtools.exceptions import APIKeyMissingError
from pyhamtools.frequency import freq_to_band
from pyhamtools.locator import latlong_to_locator
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from requests_cache import CachedSession
from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE
@@ -156,6 +156,8 @@ class LookupHelper:
except ConnectionError:
logging.warning(f"Connection error when downloading Clublog cty.xml.")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when downloading Clublog cty.xml.")
except Exception as e:
logging.error("Exception when downloading Clublog cty.xml", e)
return False
@@ -180,6 +182,8 @@ class LookupHelper:
except ConnectionError:
logging.warning(f"Connection error when downloading dxcc.json.")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when downloading dxcc.json.")
except Exception as e:
logging.error("Exception when downloading dxcc.json", e)
return False
@@ -537,6 +541,9 @@ class LookupHelper:
except ConnectionError:
logging.warning(f"Connection error when looking up callsign %s using QRZ", lookup_call)
continue
+ except ReadTimeout:
+ logging.warning(f"Read timeout when looking up callsign %s using QRZ.", lookup_call)
+ continue
except Exception:
logging.error("Exception when looking up callsign %s using QRZ", lookup_call, exc_info=True)
continue
@@ -601,6 +608,9 @@ class LookupHelper:
except ConnectionError:
logging.warning(f"Connection error when looking up callsign %s using HamQTH", lookup_call)
continue
+ except ReadTimeout:
+ logging.warning(f"Read timeout when looking up callsign %s using HamQTH", lookup_call)
+ continue
except Exception:
logging.error("Exception when looking up callsign %s using HamQTH", lookup_call, exc_info=True)
continue
diff --git a/core/sig_utils.py b/core/sig_utils.py
index 253c841..8f0fa98 100644
--- a/core/sig_utils.py
+++ b/core/sig_utils.py
@@ -2,7 +2,7 @@ import csv
import logging
from pyhamtools.locator import latlong_to_locator, locator_to_latlong
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE
from core.constants import SIGS, HTTP_HEADERS
@@ -271,6 +271,8 @@ def populate_sig_ref_info(sig_ref):
except ConnectionError:
logging.warning("Connection error when looking up sig_ref info for " + sig + " ref " + ref_id)
+ except ReadTimeout:
+ logging.warning(f"Read timeout when looking up sig_ref info for " + sig + " ref " + ref_id)
except Exception:
logging.error("Exception when looking up sig_ref info for " + sig + " ref " + ref_id, exc_info=True)
return sig_ref
diff --git a/server/handlers/quietstaticfilehandler.py b/server/handlers/quietstaticfilehandler.py
deleted file mode 100644
index 4ba2d4d..0000000
--- a/server/handlers/quietstaticfilehandler.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import logging
-
-from tornado.web import StaticFileHandler, HTTPError
-
-
-class QuietStaticFileHandler(StaticFileHandler):
- """Minor override of logging in StaticFileHandler to log HTTP errors at debug level instead of their usual
- warning level. Without this, attacks on Spothole which try to do path traversal attacks would log exceptions
- from inside Tornado, and the server logs would contain a lot of this type of content. This effectively changes
- the log level of these exceptions to DEBUG so they are only logged if DEBUG level logging is enabled."""
-
- def log_exception(self, typ, value, tb):
- if isinstance(value, HTTPError):
- logging.debug(value)
- return
- super().log_exception(typ, value, tb)
\ No newline at end of file
diff --git a/server/webserver.py b/server/webserver.py
index 21228cd..f55bf21 100644
--- a/server/webserver.py
+++ b/server/webserver.py
@@ -18,7 +18,6 @@ from server.handlers.api.status import APIStatusHandler
from server.handlers.manifesthandler import ManifestHandler
from server.handlers.metrics import PrometheusMetricsHandler
from server.handlers.pagetemplate import PageTemplateHandler
-from server.handlers.quietstaticfilehandler import QuietStaticFileHandler
_HERE = os.path.dirname(__file__ or "")
@@ -101,12 +100,16 @@ class WebServer:
if ALLOW_SPOTTING:
ui_routes += [(r"/add-spot", PageTemplateHandler, {"template_name": "add_spot", **handler_opts})]
- # API docs, Prometheus metrics, webapp manifest and static assets are always available regardless of API-only mode.
+ # API docs, Prometheus metrics, webapp manifest and static assets are always available regardless of API-only
+ # mode.
misc_routes = [
(r"/apidocs", PageTemplateHandler, {"template_name": "apidocs", **handler_opts}),
(r"/metrics", PrometheusMetricsHandler),
(r"/manifest.webmanifest", ManifestHandler),
- (r"/static/(.*)", QuietStaticFileHandler, {"path": os.path.join(_HERE, "../webassets")})
+ # If e.g. nginx is configured as a reverse proxy with a hard-coded path to static files, as per the README,
+ # this will never have to handle anything, but having it here allows Spothole to work without nginx for
+ # testing.
+ (r"/static/(.*)", StaticFileHandler, {"path": os.path.join(_HERE, "../static")})
]
app = tornado.web.Application(api_routes + ui_routes + misc_routes,
diff --git a/solarconditionsproviders/giroionosonde.py b/solarconditionsproviders/giroionosonde.py
index 56a7ebe..03d7b02 100644
--- a/solarconditionsproviders/giroionosonde.py
+++ b/solarconditionsproviders/giroionosonde.py
@@ -5,7 +5,7 @@ from threading import Thread, Event
import pytz
import requests
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from core.constants import HTTP_HEADERS
from solarconditionsproviders.ionosonde_utils import compute_band_states
@@ -134,6 +134,9 @@ class GIROIonosonde(SolarConditionsProvider):
logging.warning(f"HTTP {http_response.status_code} when calling Giro ionosonde API.")
return None, None, None
return self._parse_all(http_response.text)
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing Giro ionosonde API.")
+ return None, None, None
except ConnectionError:
logging.warning("Connection error when accessing Giro ionosonde API.")
return None, None, None
diff --git a/solarconditionsproviders/http_solar_conditions_provider.py b/solarconditionsproviders/http_solar_conditions_provider.py
index b08d7b9..ddd3be9 100644
--- a/solarconditionsproviders/http_solar_conditions_provider.py
+++ b/solarconditionsproviders/http_solar_conditions_provider.py
@@ -4,7 +4,7 @@ from threading import Thread, Event
import pytz
import requests
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from core.constants import HTTP_HEADERS
from solarconditionsproviders.solar_conditions_provider import SolarConditionsProvider
@@ -54,6 +54,8 @@ class HTTPSolarConditionsProvider(SolarConditionsProvider):
except ConnectionError:
logging.warning(f"Connection error when accessing {self.name} solar conditions API.")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing {self.name} solar conditions API.")
except Exception:
self.status = "Error"
logging.exception("Exception in HTTP Solar Conditions Provider (" + self.name + ")")
diff --git a/solarconditionsproviders/kc2gprop.py b/solarconditionsproviders/kc2gprop.py
index 5fa581b..1d879a1 100644
--- a/solarconditionsproviders/kc2gprop.py
+++ b/solarconditionsproviders/kc2gprop.py
@@ -4,7 +4,7 @@ from threading import Thread, Event
import pytz
import requests
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from core.constants import HTTP_HEADERS
from solarconditionsproviders.ionosonde_utils import compute_band_states
@@ -118,6 +118,8 @@ class KC2GProp(SolarConditionsProvider):
except ConnectionError:
logging.warning("Connection error when accessing KC2G ionosonde API.")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing KC2G ionosonde API.")
except Exception:
self.status = "Error"
logging.exception("Exception in KC2G ionosonde data provider")
diff --git a/spotproviders/hema.py b/spotproviders/hema.py
index 07f593e..62d8d61 100644
--- a/spotproviders/hema.py
+++ b/spotproviders/hema.py
@@ -4,7 +4,7 @@ from datetime import datetime
import pytz
import requests
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from core.constants import HTTP_HEADERS
from data.sig_ref import SIGRef
@@ -68,6 +68,8 @@ class HEMA(HTTPSpotProvider):
# Add to our list. Don't worry about de-duping, removing old spots etc. at this point; other
# code will do that for us.
new_spots.append(spot)
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing HEMA spots API.")
except ConnectionError:
logging.warning("Connection error when accessing HEMA spots API.")
return new_spots
diff --git a/spotproviders/http_spot_provider.py b/spotproviders/http_spot_provider.py
index 17b748c..c851bb0 100644
--- a/spotproviders/http_spot_provider.py
+++ b/spotproviders/http_spot_provider.py
@@ -4,6 +4,7 @@ from threading import Thread, Event
import pytz
import requests
+from requests import ReadTimeout
from requests.exceptions import ConnectionError
from core.constants import HTTP_HEADERS
@@ -59,6 +60,8 @@ class HTTPSpotProvider(SpotProvider):
except ConnectionError:
logging.warning(f"Connection error when accessing {self.name} spots API.")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing {self.name} spots API.")
except Exception:
self.status = "Error"
logging.exception("Exception in HTTP JSON Spot Provider (" + self.name + ")")
diff --git a/spotproviders/sota.py b/spotproviders/sota.py
index fa0fc80..750753b 100644
--- a/spotproviders/sota.py
+++ b/spotproviders/sota.py
@@ -2,7 +2,7 @@ import logging
from datetime import datetime
import requests
-from requests.exceptions import ConnectionError
+from requests.exceptions import ConnectionError, ReadTimeout
from core.constants import HTTP_HEADERS
from data.sig_ref import SIGRef
@@ -60,4 +60,6 @@ class SOTA(HTTPSpotProvider):
new_spots.append(spot)
except ConnectionError:
logging.warning("Connection error when accessing SOTA spots API")
+ except ReadTimeout:
+ logging.warning(f"Read timeout when accessing SOTA spots API.")
return new_spots
diff --git a/webassets/apidocs/openapi.yml b/static/apidocs/openapi.yml
similarity index 100%
rename from webassets/apidocs/openapi.yml
rename to static/apidocs/openapi.yml
diff --git a/webassets/audio/ping.mp3 b/static/audio/ping.mp3
similarity index 100%
rename from webassets/audio/ping.mp3
rename to static/audio/ping.mp3
diff --git a/webassets/css/style.css b/static/css/style.css
similarity index 100%
rename from webassets/css/style.css
rename to static/css/style.css
diff --git a/webassets/favicon.ico b/static/favicon.ico
similarity index 100%
rename from webassets/favicon.ico
rename to static/favicon.ico
diff --git a/webassets/img/banner.png b/static/img/banner.png
similarity index 100%
rename from webassets/img/banner.png
rename to static/img/banner.png
diff --git a/webassets/img/flags/1.png b/static/img/flags/1.png
similarity index 100%
rename from webassets/img/flags/1.png
rename to static/img/flags/1.png
diff --git a/webassets/img/flags/10.png b/static/img/flags/10.png
similarity index 100%
rename from webassets/img/flags/10.png
rename to static/img/flags/10.png
diff --git a/webassets/img/flags/100.png b/static/img/flags/100.png
similarity index 100%
rename from webassets/img/flags/100.png
rename to static/img/flags/100.png
diff --git a/webassets/img/flags/101.png b/static/img/flags/101.png
similarity index 100%
rename from webassets/img/flags/101.png
rename to static/img/flags/101.png
diff --git a/webassets/img/flags/102.png b/static/img/flags/102.png
similarity index 100%
rename from webassets/img/flags/102.png
rename to static/img/flags/102.png
diff --git a/webassets/img/flags/103.png b/static/img/flags/103.png
similarity index 100%
rename from webassets/img/flags/103.png
rename to static/img/flags/103.png
diff --git a/webassets/img/flags/104.png b/static/img/flags/104.png
similarity index 100%
rename from webassets/img/flags/104.png
rename to static/img/flags/104.png
diff --git a/webassets/img/flags/105.png b/static/img/flags/105.png
similarity index 100%
rename from webassets/img/flags/105.png
rename to static/img/flags/105.png
diff --git a/webassets/img/flags/106.png b/static/img/flags/106.png
similarity index 100%
rename from webassets/img/flags/106.png
rename to static/img/flags/106.png
diff --git a/webassets/img/flags/107.png b/static/img/flags/107.png
similarity index 100%
rename from webassets/img/flags/107.png
rename to static/img/flags/107.png
diff --git a/webassets/img/flags/108.png b/static/img/flags/108.png
similarity index 100%
rename from webassets/img/flags/108.png
rename to static/img/flags/108.png
diff --git a/webassets/img/flags/109.png b/static/img/flags/109.png
similarity index 100%
rename from webassets/img/flags/109.png
rename to static/img/flags/109.png
diff --git a/webassets/img/flags/11.png b/static/img/flags/11.png
similarity index 100%
rename from webassets/img/flags/11.png
rename to static/img/flags/11.png
diff --git a/webassets/img/flags/110.png b/static/img/flags/110.png
similarity index 100%
rename from webassets/img/flags/110.png
rename to static/img/flags/110.png
diff --git a/webassets/img/flags/111.png b/static/img/flags/111.png
similarity index 100%
rename from webassets/img/flags/111.png
rename to static/img/flags/111.png
diff --git a/webassets/img/flags/112.png b/static/img/flags/112.png
similarity index 100%
rename from webassets/img/flags/112.png
rename to static/img/flags/112.png
diff --git a/webassets/img/flags/113.png b/static/img/flags/113.png
similarity index 100%
rename from webassets/img/flags/113.png
rename to static/img/flags/113.png
diff --git a/webassets/img/flags/114.png b/static/img/flags/114.png
similarity index 100%
rename from webassets/img/flags/114.png
rename to static/img/flags/114.png
diff --git a/webassets/img/flags/115.png b/static/img/flags/115.png
similarity index 100%
rename from webassets/img/flags/115.png
rename to static/img/flags/115.png
diff --git a/webassets/img/flags/116.png b/static/img/flags/116.png
similarity index 100%
rename from webassets/img/flags/116.png
rename to static/img/flags/116.png
diff --git a/webassets/img/flags/117.png b/static/img/flags/117.png
similarity index 100%
rename from webassets/img/flags/117.png
rename to static/img/flags/117.png
diff --git a/webassets/img/flags/118.png b/static/img/flags/118.png
similarity index 100%
rename from webassets/img/flags/118.png
rename to static/img/flags/118.png
diff --git a/webassets/img/flags/119.png b/static/img/flags/119.png
similarity index 100%
rename from webassets/img/flags/119.png
rename to static/img/flags/119.png
diff --git a/webassets/img/flags/12.png b/static/img/flags/12.png
similarity index 100%
rename from webassets/img/flags/12.png
rename to static/img/flags/12.png
diff --git a/webassets/img/flags/120.png b/static/img/flags/120.png
similarity index 100%
rename from webassets/img/flags/120.png
rename to static/img/flags/120.png
diff --git a/webassets/img/flags/122.png b/static/img/flags/122.png
similarity index 100%
rename from webassets/img/flags/122.png
rename to static/img/flags/122.png
diff --git a/webassets/img/flags/123.png b/static/img/flags/123.png
similarity index 100%
rename from webassets/img/flags/123.png
rename to static/img/flags/123.png
diff --git a/webassets/img/flags/124.png b/static/img/flags/124.png
similarity index 100%
rename from webassets/img/flags/124.png
rename to static/img/flags/124.png
diff --git a/webassets/img/flags/125.png b/static/img/flags/125.png
similarity index 100%
rename from webassets/img/flags/125.png
rename to static/img/flags/125.png
diff --git a/webassets/img/flags/126.png b/static/img/flags/126.png
similarity index 100%
rename from webassets/img/flags/126.png
rename to static/img/flags/126.png
diff --git a/webassets/img/flags/127.png b/static/img/flags/127.png
similarity index 100%
rename from webassets/img/flags/127.png
rename to static/img/flags/127.png
diff --git a/webassets/img/flags/128.png b/static/img/flags/128.png
similarity index 100%
rename from webassets/img/flags/128.png
rename to static/img/flags/128.png
diff --git a/webassets/img/flags/129.png b/static/img/flags/129.png
similarity index 100%
rename from webassets/img/flags/129.png
rename to static/img/flags/129.png
diff --git a/webassets/img/flags/13.png b/static/img/flags/13.png
similarity index 100%
rename from webassets/img/flags/13.png
rename to static/img/flags/13.png
diff --git a/webassets/img/flags/130.png b/static/img/flags/130.png
similarity index 100%
rename from webassets/img/flags/130.png
rename to static/img/flags/130.png
diff --git a/webassets/img/flags/131.png b/static/img/flags/131.png
similarity index 100%
rename from webassets/img/flags/131.png
rename to static/img/flags/131.png
diff --git a/webassets/img/flags/132.png b/static/img/flags/132.png
similarity index 100%
rename from webassets/img/flags/132.png
rename to static/img/flags/132.png
diff --git a/webassets/img/flags/133.png b/static/img/flags/133.png
similarity index 100%
rename from webassets/img/flags/133.png
rename to static/img/flags/133.png
diff --git a/webassets/img/flags/134.png b/static/img/flags/134.png
similarity index 100%
rename from webassets/img/flags/134.png
rename to static/img/flags/134.png
diff --git a/webassets/img/flags/135.png b/static/img/flags/135.png
similarity index 100%
rename from webassets/img/flags/135.png
rename to static/img/flags/135.png
diff --git a/webassets/img/flags/136.png b/static/img/flags/136.png
similarity index 100%
rename from webassets/img/flags/136.png
rename to static/img/flags/136.png
diff --git a/webassets/img/flags/137.png b/static/img/flags/137.png
similarity index 100%
rename from webassets/img/flags/137.png
rename to static/img/flags/137.png
diff --git a/webassets/img/flags/138.png b/static/img/flags/138.png
similarity index 100%
rename from webassets/img/flags/138.png
rename to static/img/flags/138.png
diff --git a/webassets/img/flags/139.png b/static/img/flags/139.png
similarity index 100%
rename from webassets/img/flags/139.png
rename to static/img/flags/139.png
diff --git a/webassets/img/flags/14.png b/static/img/flags/14.png
similarity index 100%
rename from webassets/img/flags/14.png
rename to static/img/flags/14.png
diff --git a/webassets/img/flags/140.png b/static/img/flags/140.png
similarity index 100%
rename from webassets/img/flags/140.png
rename to static/img/flags/140.png
diff --git a/webassets/img/flags/141.png b/static/img/flags/141.png
similarity index 100%
rename from webassets/img/flags/141.png
rename to static/img/flags/141.png
diff --git a/webassets/img/flags/142.png b/static/img/flags/142.png
similarity index 100%
rename from webassets/img/flags/142.png
rename to static/img/flags/142.png
diff --git a/webassets/img/flags/143.png b/static/img/flags/143.png
similarity index 100%
rename from webassets/img/flags/143.png
rename to static/img/flags/143.png
diff --git a/webassets/img/flags/144.png b/static/img/flags/144.png
similarity index 100%
rename from webassets/img/flags/144.png
rename to static/img/flags/144.png
diff --git a/webassets/img/flags/145.png b/static/img/flags/145.png
similarity index 100%
rename from webassets/img/flags/145.png
rename to static/img/flags/145.png
diff --git a/webassets/img/flags/146.png b/static/img/flags/146.png
similarity index 100%
rename from webassets/img/flags/146.png
rename to static/img/flags/146.png
diff --git a/webassets/img/flags/147.png b/static/img/flags/147.png
similarity index 100%
rename from webassets/img/flags/147.png
rename to static/img/flags/147.png
diff --git a/webassets/img/flags/148.png b/static/img/flags/148.png
similarity index 100%
rename from webassets/img/flags/148.png
rename to static/img/flags/148.png
diff --git a/webassets/img/flags/149.png b/static/img/flags/149.png
similarity index 100%
rename from webassets/img/flags/149.png
rename to static/img/flags/149.png
diff --git a/webassets/img/flags/15.png b/static/img/flags/15.png
similarity index 100%
rename from webassets/img/flags/15.png
rename to static/img/flags/15.png
diff --git a/webassets/img/flags/150.png b/static/img/flags/150.png
similarity index 100%
rename from webassets/img/flags/150.png
rename to static/img/flags/150.png
diff --git a/webassets/img/flags/151.png b/static/img/flags/151.png
similarity index 100%
rename from webassets/img/flags/151.png
rename to static/img/flags/151.png
diff --git a/webassets/img/flags/152.png b/static/img/flags/152.png
similarity index 100%
rename from webassets/img/flags/152.png
rename to static/img/flags/152.png
diff --git a/webassets/img/flags/153.png b/static/img/flags/153.png
similarity index 100%
rename from webassets/img/flags/153.png
rename to static/img/flags/153.png
diff --git a/webassets/img/flags/154.png b/static/img/flags/154.png
similarity index 100%
rename from webassets/img/flags/154.png
rename to static/img/flags/154.png
diff --git a/webassets/img/flags/155.png b/static/img/flags/155.png
similarity index 100%
rename from webassets/img/flags/155.png
rename to static/img/flags/155.png
diff --git a/webassets/img/flags/157.png b/static/img/flags/157.png
similarity index 100%
rename from webassets/img/flags/157.png
rename to static/img/flags/157.png
diff --git a/webassets/img/flags/158.png b/static/img/flags/158.png
similarity index 100%
rename from webassets/img/flags/158.png
rename to static/img/flags/158.png
diff --git a/webassets/img/flags/159.png b/static/img/flags/159.png
similarity index 100%
rename from webassets/img/flags/159.png
rename to static/img/flags/159.png
diff --git a/webassets/img/flags/16.png b/static/img/flags/16.png
similarity index 100%
rename from webassets/img/flags/16.png
rename to static/img/flags/16.png
diff --git a/webassets/img/flags/160.png b/static/img/flags/160.png
similarity index 100%
rename from webassets/img/flags/160.png
rename to static/img/flags/160.png
diff --git a/webassets/img/flags/161.png b/static/img/flags/161.png
similarity index 100%
rename from webassets/img/flags/161.png
rename to static/img/flags/161.png
diff --git a/webassets/img/flags/162.png b/static/img/flags/162.png
similarity index 100%
rename from webassets/img/flags/162.png
rename to static/img/flags/162.png
diff --git a/webassets/img/flags/163.png b/static/img/flags/163.png
similarity index 100%
rename from webassets/img/flags/163.png
rename to static/img/flags/163.png
diff --git a/webassets/img/flags/164.png b/static/img/flags/164.png
similarity index 100%
rename from webassets/img/flags/164.png
rename to static/img/flags/164.png
diff --git a/webassets/img/flags/165.png b/static/img/flags/165.png
similarity index 100%
rename from webassets/img/flags/165.png
rename to static/img/flags/165.png
diff --git a/webassets/img/flags/166.png b/static/img/flags/166.png
similarity index 100%
rename from webassets/img/flags/166.png
rename to static/img/flags/166.png
diff --git a/webassets/img/flags/167.png b/static/img/flags/167.png
similarity index 100%
rename from webassets/img/flags/167.png
rename to static/img/flags/167.png
diff --git a/webassets/img/flags/168.png b/static/img/flags/168.png
similarity index 100%
rename from webassets/img/flags/168.png
rename to static/img/flags/168.png
diff --git a/webassets/img/flags/169.png b/static/img/flags/169.png
similarity index 100%
rename from webassets/img/flags/169.png
rename to static/img/flags/169.png
diff --git a/webassets/img/flags/17.png b/static/img/flags/17.png
similarity index 100%
rename from webassets/img/flags/17.png
rename to static/img/flags/17.png
diff --git a/webassets/img/flags/170.png b/static/img/flags/170.png
similarity index 100%
rename from webassets/img/flags/170.png
rename to static/img/flags/170.png
diff --git a/webassets/img/flags/171.png b/static/img/flags/171.png
similarity index 100%
rename from webassets/img/flags/171.png
rename to static/img/flags/171.png
diff --git a/webassets/img/flags/172.png b/static/img/flags/172.png
similarity index 100%
rename from webassets/img/flags/172.png
rename to static/img/flags/172.png
diff --git a/webassets/img/flags/173.png b/static/img/flags/173.png
similarity index 100%
rename from webassets/img/flags/173.png
rename to static/img/flags/173.png
diff --git a/webassets/img/flags/174.png b/static/img/flags/174.png
similarity index 100%
rename from webassets/img/flags/174.png
rename to static/img/flags/174.png
diff --git a/webassets/img/flags/175.png b/static/img/flags/175.png
similarity index 100%
rename from webassets/img/flags/175.png
rename to static/img/flags/175.png
diff --git a/webassets/img/flags/176.png b/static/img/flags/176.png
similarity index 100%
rename from webassets/img/flags/176.png
rename to static/img/flags/176.png
diff --git a/webassets/img/flags/177.png b/static/img/flags/177.png
similarity index 100%
rename from webassets/img/flags/177.png
rename to static/img/flags/177.png
diff --git a/webassets/img/flags/178.png b/static/img/flags/178.png
similarity index 100%
rename from webassets/img/flags/178.png
rename to static/img/flags/178.png
diff --git a/webassets/img/flags/179.png b/static/img/flags/179.png
similarity index 100%
rename from webassets/img/flags/179.png
rename to static/img/flags/179.png
diff --git a/webassets/img/flags/18.png b/static/img/flags/18.png
similarity index 100%
rename from webassets/img/flags/18.png
rename to static/img/flags/18.png
diff --git a/webassets/img/flags/180.png b/static/img/flags/180.png
similarity index 100%
rename from webassets/img/flags/180.png
rename to static/img/flags/180.png
diff --git a/webassets/img/flags/181.png b/static/img/flags/181.png
similarity index 100%
rename from webassets/img/flags/181.png
rename to static/img/flags/181.png
diff --git a/webassets/img/flags/182.png b/static/img/flags/182.png
similarity index 100%
rename from webassets/img/flags/182.png
rename to static/img/flags/182.png
diff --git a/webassets/img/flags/183.png b/static/img/flags/183.png
similarity index 100%
rename from webassets/img/flags/183.png
rename to static/img/flags/183.png
diff --git a/webassets/img/flags/184.png b/static/img/flags/184.png
similarity index 100%
rename from webassets/img/flags/184.png
rename to static/img/flags/184.png
diff --git a/webassets/img/flags/185.png b/static/img/flags/185.png
similarity index 100%
rename from webassets/img/flags/185.png
rename to static/img/flags/185.png
diff --git a/webassets/img/flags/186.png b/static/img/flags/186.png
similarity index 100%
rename from webassets/img/flags/186.png
rename to static/img/flags/186.png
diff --git a/webassets/img/flags/187.png b/static/img/flags/187.png
similarity index 100%
rename from webassets/img/flags/187.png
rename to static/img/flags/187.png
diff --git a/webassets/img/flags/188.png b/static/img/flags/188.png
similarity index 100%
rename from webassets/img/flags/188.png
rename to static/img/flags/188.png
diff --git a/webassets/img/flags/189.png b/static/img/flags/189.png
similarity index 100%
rename from webassets/img/flags/189.png
rename to static/img/flags/189.png
diff --git a/webassets/img/flags/19.png b/static/img/flags/19.png
similarity index 100%
rename from webassets/img/flags/19.png
rename to static/img/flags/19.png
diff --git a/webassets/img/flags/190.png b/static/img/flags/190.png
similarity index 100%
rename from webassets/img/flags/190.png
rename to static/img/flags/190.png
diff --git a/webassets/img/flags/191.png b/static/img/flags/191.png
similarity index 100%
rename from webassets/img/flags/191.png
rename to static/img/flags/191.png
diff --git a/webassets/img/flags/192.png b/static/img/flags/192.png
similarity index 100%
rename from webassets/img/flags/192.png
rename to static/img/flags/192.png
diff --git a/webassets/img/flags/193.png b/static/img/flags/193.png
similarity index 100%
rename from webassets/img/flags/193.png
rename to static/img/flags/193.png
diff --git a/webassets/img/flags/194.png b/static/img/flags/194.png
similarity index 100%
rename from webassets/img/flags/194.png
rename to static/img/flags/194.png
diff --git a/webassets/img/flags/195.png b/static/img/flags/195.png
similarity index 100%
rename from webassets/img/flags/195.png
rename to static/img/flags/195.png
diff --git a/webassets/img/flags/196.png b/static/img/flags/196.png
similarity index 100%
rename from webassets/img/flags/196.png
rename to static/img/flags/196.png
diff --git a/webassets/img/flags/197.png b/static/img/flags/197.png
similarity index 100%
rename from webassets/img/flags/197.png
rename to static/img/flags/197.png
diff --git a/webassets/img/flags/198.png b/static/img/flags/198.png
similarity index 100%
rename from webassets/img/flags/198.png
rename to static/img/flags/198.png
diff --git a/webassets/img/flags/199.png b/static/img/flags/199.png
similarity index 100%
rename from webassets/img/flags/199.png
rename to static/img/flags/199.png
diff --git a/webassets/img/flags/2.png b/static/img/flags/2.png
similarity index 100%
rename from webassets/img/flags/2.png
rename to static/img/flags/2.png
diff --git a/webassets/img/flags/20.png b/static/img/flags/20.png
similarity index 100%
rename from webassets/img/flags/20.png
rename to static/img/flags/20.png
diff --git a/webassets/img/flags/200.png b/static/img/flags/200.png
similarity index 100%
rename from webassets/img/flags/200.png
rename to static/img/flags/200.png
diff --git a/webassets/img/flags/201.png b/static/img/flags/201.png
similarity index 100%
rename from webassets/img/flags/201.png
rename to static/img/flags/201.png
diff --git a/webassets/img/flags/202.png b/static/img/flags/202.png
similarity index 100%
rename from webassets/img/flags/202.png
rename to static/img/flags/202.png
diff --git a/webassets/img/flags/203.png b/static/img/flags/203.png
similarity index 100%
rename from webassets/img/flags/203.png
rename to static/img/flags/203.png
diff --git a/webassets/img/flags/204.png b/static/img/flags/204.png
similarity index 100%
rename from webassets/img/flags/204.png
rename to static/img/flags/204.png
diff --git a/webassets/img/flags/205.png b/static/img/flags/205.png
similarity index 100%
rename from webassets/img/flags/205.png
rename to static/img/flags/205.png
diff --git a/webassets/img/flags/206.png b/static/img/flags/206.png
similarity index 100%
rename from webassets/img/flags/206.png
rename to static/img/flags/206.png
diff --git a/webassets/img/flags/207.png b/static/img/flags/207.png
similarity index 100%
rename from webassets/img/flags/207.png
rename to static/img/flags/207.png
diff --git a/webassets/img/flags/208.png b/static/img/flags/208.png
similarity index 100%
rename from webassets/img/flags/208.png
rename to static/img/flags/208.png
diff --git a/webassets/img/flags/209.png b/static/img/flags/209.png
similarity index 100%
rename from webassets/img/flags/209.png
rename to static/img/flags/209.png
diff --git a/webassets/img/flags/21.png b/static/img/flags/21.png
similarity index 100%
rename from webassets/img/flags/21.png
rename to static/img/flags/21.png
diff --git a/webassets/img/flags/210.png b/static/img/flags/210.png
similarity index 100%
rename from webassets/img/flags/210.png
rename to static/img/flags/210.png
diff --git a/webassets/img/flags/211.png b/static/img/flags/211.png
similarity index 100%
rename from webassets/img/flags/211.png
rename to static/img/flags/211.png
diff --git a/webassets/img/flags/212.png b/static/img/flags/212.png
similarity index 100%
rename from webassets/img/flags/212.png
rename to static/img/flags/212.png
diff --git a/webassets/img/flags/213.png b/static/img/flags/213.png
similarity index 100%
rename from webassets/img/flags/213.png
rename to static/img/flags/213.png
diff --git a/webassets/img/flags/214.png b/static/img/flags/214.png
similarity index 100%
rename from webassets/img/flags/214.png
rename to static/img/flags/214.png
diff --git a/webassets/img/flags/215.png b/static/img/flags/215.png
similarity index 100%
rename from webassets/img/flags/215.png
rename to static/img/flags/215.png
diff --git a/webassets/img/flags/216.png b/static/img/flags/216.png
similarity index 100%
rename from webassets/img/flags/216.png
rename to static/img/flags/216.png
diff --git a/webassets/img/flags/217.png b/static/img/flags/217.png
similarity index 100%
rename from webassets/img/flags/217.png
rename to static/img/flags/217.png
diff --git a/webassets/img/flags/218.png b/static/img/flags/218.png
similarity index 100%
rename from webassets/img/flags/218.png
rename to static/img/flags/218.png
diff --git a/webassets/img/flags/219.png b/static/img/flags/219.png
similarity index 100%
rename from webassets/img/flags/219.png
rename to static/img/flags/219.png
diff --git a/webassets/img/flags/22.png b/static/img/flags/22.png
similarity index 100%
rename from webassets/img/flags/22.png
rename to static/img/flags/22.png
diff --git a/webassets/img/flags/220.png b/static/img/flags/220.png
similarity index 100%
rename from webassets/img/flags/220.png
rename to static/img/flags/220.png
diff --git a/webassets/img/flags/221.png b/static/img/flags/221.png
similarity index 100%
rename from webassets/img/flags/221.png
rename to static/img/flags/221.png
diff --git a/webassets/img/flags/222.png b/static/img/flags/222.png
similarity index 100%
rename from webassets/img/flags/222.png
rename to static/img/flags/222.png
diff --git a/webassets/img/flags/223.png b/static/img/flags/223.png
similarity index 100%
rename from webassets/img/flags/223.png
rename to static/img/flags/223.png
diff --git a/webassets/img/flags/224.png b/static/img/flags/224.png
similarity index 100%
rename from webassets/img/flags/224.png
rename to static/img/flags/224.png
diff --git a/webassets/img/flags/225.png b/static/img/flags/225.png
similarity index 100%
rename from webassets/img/flags/225.png
rename to static/img/flags/225.png
diff --git a/webassets/img/flags/226.png b/static/img/flags/226.png
similarity index 100%
rename from webassets/img/flags/226.png
rename to static/img/flags/226.png
diff --git a/webassets/img/flags/227.png b/static/img/flags/227.png
similarity index 100%
rename from webassets/img/flags/227.png
rename to static/img/flags/227.png
diff --git a/webassets/img/flags/228.png b/static/img/flags/228.png
similarity index 100%
rename from webassets/img/flags/228.png
rename to static/img/flags/228.png
diff --git a/webassets/img/flags/229.png b/static/img/flags/229.png
similarity index 100%
rename from webassets/img/flags/229.png
rename to static/img/flags/229.png
diff --git a/webassets/img/flags/23.png b/static/img/flags/23.png
similarity index 100%
rename from webassets/img/flags/23.png
rename to static/img/flags/23.png
diff --git a/webassets/img/flags/230.png b/static/img/flags/230.png
similarity index 100%
rename from webassets/img/flags/230.png
rename to static/img/flags/230.png
diff --git a/webassets/img/flags/231.png b/static/img/flags/231.png
similarity index 100%
rename from webassets/img/flags/231.png
rename to static/img/flags/231.png
diff --git a/webassets/img/flags/232.png b/static/img/flags/232.png
similarity index 100%
rename from webassets/img/flags/232.png
rename to static/img/flags/232.png
diff --git a/webassets/img/flags/233.png b/static/img/flags/233.png
similarity index 100%
rename from webassets/img/flags/233.png
rename to static/img/flags/233.png
diff --git a/webassets/img/flags/234.png b/static/img/flags/234.png
similarity index 100%
rename from webassets/img/flags/234.png
rename to static/img/flags/234.png
diff --git a/webassets/img/flags/235.png b/static/img/flags/235.png
similarity index 100%
rename from webassets/img/flags/235.png
rename to static/img/flags/235.png
diff --git a/webassets/img/flags/236.png b/static/img/flags/236.png
similarity index 100%
rename from webassets/img/flags/236.png
rename to static/img/flags/236.png
diff --git a/webassets/img/flags/237.png b/static/img/flags/237.png
similarity index 100%
rename from webassets/img/flags/237.png
rename to static/img/flags/237.png
diff --git a/webassets/img/flags/238.png b/static/img/flags/238.png
similarity index 100%
rename from webassets/img/flags/238.png
rename to static/img/flags/238.png
diff --git a/webassets/img/flags/239.png b/static/img/flags/239.png
similarity index 100%
rename from webassets/img/flags/239.png
rename to static/img/flags/239.png
diff --git a/webassets/img/flags/24.png b/static/img/flags/24.png
similarity index 100%
rename from webassets/img/flags/24.png
rename to static/img/flags/24.png
diff --git a/webassets/img/flags/240.png b/static/img/flags/240.png
similarity index 100%
rename from webassets/img/flags/240.png
rename to static/img/flags/240.png
diff --git a/webassets/img/flags/241.png b/static/img/flags/241.png
similarity index 100%
rename from webassets/img/flags/241.png
rename to static/img/flags/241.png
diff --git a/webassets/img/flags/242.png b/static/img/flags/242.png
similarity index 100%
rename from webassets/img/flags/242.png
rename to static/img/flags/242.png
diff --git a/webassets/img/flags/243.png b/static/img/flags/243.png
similarity index 100%
rename from webassets/img/flags/243.png
rename to static/img/flags/243.png
diff --git a/webassets/img/flags/244.png b/static/img/flags/244.png
similarity index 100%
rename from webassets/img/flags/244.png
rename to static/img/flags/244.png
diff --git a/webassets/img/flags/245.png b/static/img/flags/245.png
similarity index 100%
rename from webassets/img/flags/245.png
rename to static/img/flags/245.png
diff --git a/webassets/img/flags/246.png b/static/img/flags/246.png
similarity index 100%
rename from webassets/img/flags/246.png
rename to static/img/flags/246.png
diff --git a/webassets/img/flags/247.png b/static/img/flags/247.png
similarity index 100%
rename from webassets/img/flags/247.png
rename to static/img/flags/247.png
diff --git a/webassets/img/flags/248.png b/static/img/flags/248.png
similarity index 100%
rename from webassets/img/flags/248.png
rename to static/img/flags/248.png
diff --git a/webassets/img/flags/249.png b/static/img/flags/249.png
similarity index 100%
rename from webassets/img/flags/249.png
rename to static/img/flags/249.png
diff --git a/webassets/img/flags/25.png b/static/img/flags/25.png
similarity index 100%
rename from webassets/img/flags/25.png
rename to static/img/flags/25.png
diff --git a/webassets/img/flags/250.png b/static/img/flags/250.png
similarity index 100%
rename from webassets/img/flags/250.png
rename to static/img/flags/250.png
diff --git a/webassets/img/flags/251.png b/static/img/flags/251.png
similarity index 100%
rename from webassets/img/flags/251.png
rename to static/img/flags/251.png
diff --git a/webassets/img/flags/252.png b/static/img/flags/252.png
similarity index 100%
rename from webassets/img/flags/252.png
rename to static/img/flags/252.png
diff --git a/webassets/img/flags/253.png b/static/img/flags/253.png
similarity index 100%
rename from webassets/img/flags/253.png
rename to static/img/flags/253.png
diff --git a/webassets/img/flags/254.png b/static/img/flags/254.png
similarity index 100%
rename from webassets/img/flags/254.png
rename to static/img/flags/254.png
diff --git a/webassets/img/flags/255.png b/static/img/flags/255.png
similarity index 100%
rename from webassets/img/flags/255.png
rename to static/img/flags/255.png
diff --git a/webassets/img/flags/256.png b/static/img/flags/256.png
similarity index 100%
rename from webassets/img/flags/256.png
rename to static/img/flags/256.png
diff --git a/webassets/img/flags/257.png b/static/img/flags/257.png
similarity index 100%
rename from webassets/img/flags/257.png
rename to static/img/flags/257.png
diff --git a/webassets/img/flags/258.png b/static/img/flags/258.png
similarity index 100%
rename from webassets/img/flags/258.png
rename to static/img/flags/258.png
diff --git a/webassets/img/flags/259.png b/static/img/flags/259.png
similarity index 100%
rename from webassets/img/flags/259.png
rename to static/img/flags/259.png
diff --git a/webassets/img/flags/26.png b/static/img/flags/26.png
similarity index 100%
rename from webassets/img/flags/26.png
rename to static/img/flags/26.png
diff --git a/webassets/img/flags/260.png b/static/img/flags/260.png
similarity index 100%
rename from webassets/img/flags/260.png
rename to static/img/flags/260.png
diff --git a/webassets/img/flags/261.png b/static/img/flags/261.png
similarity index 100%
rename from webassets/img/flags/261.png
rename to static/img/flags/261.png
diff --git a/webassets/img/flags/262.png b/static/img/flags/262.png
similarity index 100%
rename from webassets/img/flags/262.png
rename to static/img/flags/262.png
diff --git a/webassets/img/flags/263.png b/static/img/flags/263.png
similarity index 100%
rename from webassets/img/flags/263.png
rename to static/img/flags/263.png
diff --git a/webassets/img/flags/264.png b/static/img/flags/264.png
similarity index 100%
rename from webassets/img/flags/264.png
rename to static/img/flags/264.png
diff --git a/webassets/img/flags/265.png b/static/img/flags/265.png
similarity index 100%
rename from webassets/img/flags/265.png
rename to static/img/flags/265.png
diff --git a/webassets/img/flags/266.png b/static/img/flags/266.png
similarity index 100%
rename from webassets/img/flags/266.png
rename to static/img/flags/266.png
diff --git a/webassets/img/flags/267.png b/static/img/flags/267.png
similarity index 100%
rename from webassets/img/flags/267.png
rename to static/img/flags/267.png
diff --git a/webassets/img/flags/268.png b/static/img/flags/268.png
similarity index 100%
rename from webassets/img/flags/268.png
rename to static/img/flags/268.png
diff --git a/webassets/img/flags/269.png b/static/img/flags/269.png
similarity index 100%
rename from webassets/img/flags/269.png
rename to static/img/flags/269.png
diff --git a/webassets/img/flags/27.png b/static/img/flags/27.png
similarity index 100%
rename from webassets/img/flags/27.png
rename to static/img/flags/27.png
diff --git a/webassets/img/flags/270.png b/static/img/flags/270.png
similarity index 100%
rename from webassets/img/flags/270.png
rename to static/img/flags/270.png
diff --git a/webassets/img/flags/271.png b/static/img/flags/271.png
similarity index 100%
rename from webassets/img/flags/271.png
rename to static/img/flags/271.png
diff --git a/webassets/img/flags/272.png b/static/img/flags/272.png
similarity index 100%
rename from webassets/img/flags/272.png
rename to static/img/flags/272.png
diff --git a/webassets/img/flags/273.png b/static/img/flags/273.png
similarity index 100%
rename from webassets/img/flags/273.png
rename to static/img/flags/273.png
diff --git a/webassets/img/flags/274.png b/static/img/flags/274.png
similarity index 100%
rename from webassets/img/flags/274.png
rename to static/img/flags/274.png
diff --git a/webassets/img/flags/275.png b/static/img/flags/275.png
similarity index 100%
rename from webassets/img/flags/275.png
rename to static/img/flags/275.png
diff --git a/webassets/img/flags/276.png b/static/img/flags/276.png
similarity index 100%
rename from webassets/img/flags/276.png
rename to static/img/flags/276.png
diff --git a/webassets/img/flags/277.png b/static/img/flags/277.png
similarity index 100%
rename from webassets/img/flags/277.png
rename to static/img/flags/277.png
diff --git a/webassets/img/flags/278.png b/static/img/flags/278.png
similarity index 100%
rename from webassets/img/flags/278.png
rename to static/img/flags/278.png
diff --git a/webassets/img/flags/279.png b/static/img/flags/279.png
similarity index 100%
rename from webassets/img/flags/279.png
rename to static/img/flags/279.png
diff --git a/webassets/img/flags/28.png b/static/img/flags/28.png
similarity index 100%
rename from webassets/img/flags/28.png
rename to static/img/flags/28.png
diff --git a/webassets/img/flags/280.png b/static/img/flags/280.png
similarity index 100%
rename from webassets/img/flags/280.png
rename to static/img/flags/280.png
diff --git a/webassets/img/flags/281.png b/static/img/flags/281.png
similarity index 100%
rename from webassets/img/flags/281.png
rename to static/img/flags/281.png
diff --git a/webassets/img/flags/282.png b/static/img/flags/282.png
similarity index 100%
rename from webassets/img/flags/282.png
rename to static/img/flags/282.png
diff --git a/webassets/img/flags/283.png b/static/img/flags/283.png
similarity index 100%
rename from webassets/img/flags/283.png
rename to static/img/flags/283.png
diff --git a/webassets/img/flags/284.png b/static/img/flags/284.png
similarity index 100%
rename from webassets/img/flags/284.png
rename to static/img/flags/284.png
diff --git a/webassets/img/flags/285.png b/static/img/flags/285.png
similarity index 100%
rename from webassets/img/flags/285.png
rename to static/img/flags/285.png
diff --git a/webassets/img/flags/286.png b/static/img/flags/286.png
similarity index 100%
rename from webassets/img/flags/286.png
rename to static/img/flags/286.png
diff --git a/webassets/img/flags/287.png b/static/img/flags/287.png
similarity index 100%
rename from webassets/img/flags/287.png
rename to static/img/flags/287.png
diff --git a/webassets/img/flags/288.png b/static/img/flags/288.png
similarity index 100%
rename from webassets/img/flags/288.png
rename to static/img/flags/288.png
diff --git a/webassets/img/flags/289.png b/static/img/flags/289.png
similarity index 100%
rename from webassets/img/flags/289.png
rename to static/img/flags/289.png
diff --git a/webassets/img/flags/29.png b/static/img/flags/29.png
similarity index 100%
rename from webassets/img/flags/29.png
rename to static/img/flags/29.png
diff --git a/webassets/img/flags/291.png b/static/img/flags/291.png
similarity index 100%
rename from webassets/img/flags/291.png
rename to static/img/flags/291.png
diff --git a/webassets/img/flags/292.png b/static/img/flags/292.png
similarity index 100%
rename from webassets/img/flags/292.png
rename to static/img/flags/292.png
diff --git a/webassets/img/flags/293.png b/static/img/flags/293.png
similarity index 100%
rename from webassets/img/flags/293.png
rename to static/img/flags/293.png
diff --git a/webassets/img/flags/294.png b/static/img/flags/294.png
similarity index 100%
rename from webassets/img/flags/294.png
rename to static/img/flags/294.png
diff --git a/webassets/img/flags/295.png b/static/img/flags/295.png
similarity index 100%
rename from webassets/img/flags/295.png
rename to static/img/flags/295.png
diff --git a/webassets/img/flags/296.png b/static/img/flags/296.png
similarity index 100%
rename from webassets/img/flags/296.png
rename to static/img/flags/296.png
diff --git a/webassets/img/flags/297.png b/static/img/flags/297.png
similarity index 100%
rename from webassets/img/flags/297.png
rename to static/img/flags/297.png
diff --git a/webassets/img/flags/298.png b/static/img/flags/298.png
similarity index 100%
rename from webassets/img/flags/298.png
rename to static/img/flags/298.png
diff --git a/webassets/img/flags/299.png b/static/img/flags/299.png
similarity index 100%
rename from webassets/img/flags/299.png
rename to static/img/flags/299.png
diff --git a/webassets/img/flags/3.png b/static/img/flags/3.png
similarity index 100%
rename from webassets/img/flags/3.png
rename to static/img/flags/3.png
diff --git a/webassets/img/flags/30.png b/static/img/flags/30.png
similarity index 100%
rename from webassets/img/flags/30.png
rename to static/img/flags/30.png
diff --git a/webassets/img/flags/301.png b/static/img/flags/301.png
similarity index 100%
rename from webassets/img/flags/301.png
rename to static/img/flags/301.png
diff --git a/webassets/img/flags/302.png b/static/img/flags/302.png
similarity index 100%
rename from webassets/img/flags/302.png
rename to static/img/flags/302.png
diff --git a/webassets/img/flags/303.png b/static/img/flags/303.png
similarity index 100%
rename from webassets/img/flags/303.png
rename to static/img/flags/303.png
diff --git a/webassets/img/flags/304.png b/static/img/flags/304.png
similarity index 100%
rename from webassets/img/flags/304.png
rename to static/img/flags/304.png
diff --git a/webassets/img/flags/305.png b/static/img/flags/305.png
similarity index 100%
rename from webassets/img/flags/305.png
rename to static/img/flags/305.png
diff --git a/webassets/img/flags/306.png b/static/img/flags/306.png
similarity index 100%
rename from webassets/img/flags/306.png
rename to static/img/flags/306.png
diff --git a/webassets/img/flags/307.png b/static/img/flags/307.png
similarity index 100%
rename from webassets/img/flags/307.png
rename to static/img/flags/307.png
diff --git a/webassets/img/flags/308.png b/static/img/flags/308.png
similarity index 100%
rename from webassets/img/flags/308.png
rename to static/img/flags/308.png
diff --git a/webassets/img/flags/309.png b/static/img/flags/309.png
similarity index 100%
rename from webassets/img/flags/309.png
rename to static/img/flags/309.png
diff --git a/webassets/img/flags/31.png b/static/img/flags/31.png
similarity index 100%
rename from webassets/img/flags/31.png
rename to static/img/flags/31.png
diff --git a/webassets/img/flags/312.png b/static/img/flags/312.png
similarity index 100%
rename from webassets/img/flags/312.png
rename to static/img/flags/312.png
diff --git a/webassets/img/flags/315.png b/static/img/flags/315.png
similarity index 100%
rename from webassets/img/flags/315.png
rename to static/img/flags/315.png
diff --git a/webassets/img/flags/318.png b/static/img/flags/318.png
similarity index 100%
rename from webassets/img/flags/318.png
rename to static/img/flags/318.png
diff --git a/webassets/img/flags/32.png b/static/img/flags/32.png
similarity index 100%
rename from webassets/img/flags/32.png
rename to static/img/flags/32.png
diff --git a/webassets/img/flags/321.png b/static/img/flags/321.png
similarity index 100%
rename from webassets/img/flags/321.png
rename to static/img/flags/321.png
diff --git a/webassets/img/flags/324.png b/static/img/flags/324.png
similarity index 100%
rename from webassets/img/flags/324.png
rename to static/img/flags/324.png
diff --git a/webassets/img/flags/327.png b/static/img/flags/327.png
similarity index 100%
rename from webassets/img/flags/327.png
rename to static/img/flags/327.png
diff --git a/webassets/img/flags/33.png b/static/img/flags/33.png
similarity index 100%
rename from webassets/img/flags/33.png
rename to static/img/flags/33.png
diff --git a/webassets/img/flags/330.png b/static/img/flags/330.png
similarity index 100%
rename from webassets/img/flags/330.png
rename to static/img/flags/330.png
diff --git a/webassets/img/flags/333.png b/static/img/flags/333.png
similarity index 100%
rename from webassets/img/flags/333.png
rename to static/img/flags/333.png
diff --git a/webassets/img/flags/336.png b/static/img/flags/336.png
similarity index 100%
rename from webassets/img/flags/336.png
rename to static/img/flags/336.png
diff --git a/webassets/img/flags/339.png b/static/img/flags/339.png
similarity index 100%
rename from webassets/img/flags/339.png
rename to static/img/flags/339.png
diff --git a/webassets/img/flags/34.png b/static/img/flags/34.png
similarity index 100%
rename from webassets/img/flags/34.png
rename to static/img/flags/34.png
diff --git a/webassets/img/flags/342.png b/static/img/flags/342.png
similarity index 100%
rename from webassets/img/flags/342.png
rename to static/img/flags/342.png
diff --git a/webassets/img/flags/344.png b/static/img/flags/344.png
similarity index 100%
rename from webassets/img/flags/344.png
rename to static/img/flags/344.png
diff --git a/webassets/img/flags/345.png b/static/img/flags/345.png
similarity index 100%
rename from webassets/img/flags/345.png
rename to static/img/flags/345.png
diff --git a/webassets/img/flags/348.png b/static/img/flags/348.png
similarity index 100%
rename from webassets/img/flags/348.png
rename to static/img/flags/348.png
diff --git a/webassets/img/flags/35.png b/static/img/flags/35.png
similarity index 100%
rename from webassets/img/flags/35.png
rename to static/img/flags/35.png
diff --git a/webassets/img/flags/354.png b/static/img/flags/354.png
similarity index 100%
rename from webassets/img/flags/354.png
rename to static/img/flags/354.png
diff --git a/webassets/img/flags/36.png b/static/img/flags/36.png
similarity index 100%
rename from webassets/img/flags/36.png
rename to static/img/flags/36.png
diff --git a/webassets/img/flags/363.png b/static/img/flags/363.png
similarity index 100%
rename from webassets/img/flags/363.png
rename to static/img/flags/363.png
diff --git a/webassets/img/flags/369.png b/static/img/flags/369.png
similarity index 100%
rename from webassets/img/flags/369.png
rename to static/img/flags/369.png
diff --git a/webassets/img/flags/37.png b/static/img/flags/37.png
similarity index 100%
rename from webassets/img/flags/37.png
rename to static/img/flags/37.png
diff --git a/webassets/img/flags/370.png b/static/img/flags/370.png
similarity index 100%
rename from webassets/img/flags/370.png
rename to static/img/flags/370.png
diff --git a/webassets/img/flags/372.png b/static/img/flags/372.png
similarity index 100%
rename from webassets/img/flags/372.png
rename to static/img/flags/372.png
diff --git a/webassets/img/flags/375.png b/static/img/flags/375.png
similarity index 100%
rename from webassets/img/flags/375.png
rename to static/img/flags/375.png
diff --git a/webassets/img/flags/376.png b/static/img/flags/376.png
similarity index 100%
rename from webassets/img/flags/376.png
rename to static/img/flags/376.png
diff --git a/webassets/img/flags/378.png b/static/img/flags/378.png
similarity index 100%
rename from webassets/img/flags/378.png
rename to static/img/flags/378.png
diff --git a/webassets/img/flags/379.png b/static/img/flags/379.png
similarity index 100%
rename from webassets/img/flags/379.png
rename to static/img/flags/379.png
diff --git a/webassets/img/flags/38.png b/static/img/flags/38.png
similarity index 100%
rename from webassets/img/flags/38.png
rename to static/img/flags/38.png
diff --git a/webassets/img/flags/381.png b/static/img/flags/381.png
similarity index 100%
rename from webassets/img/flags/381.png
rename to static/img/flags/381.png
diff --git a/webassets/img/flags/382.png b/static/img/flags/382.png
similarity index 100%
rename from webassets/img/flags/382.png
rename to static/img/flags/382.png
diff --git a/webassets/img/flags/384.png b/static/img/flags/384.png
similarity index 100%
rename from webassets/img/flags/384.png
rename to static/img/flags/384.png
diff --git a/webassets/img/flags/386.png b/static/img/flags/386.png
similarity index 100%
rename from webassets/img/flags/386.png
rename to static/img/flags/386.png
diff --git a/webassets/img/flags/387.png b/static/img/flags/387.png
similarity index 100%
rename from webassets/img/flags/387.png
rename to static/img/flags/387.png
diff --git a/webassets/img/flags/39.png b/static/img/flags/39.png
similarity index 100%
rename from webassets/img/flags/39.png
rename to static/img/flags/39.png
diff --git a/webassets/img/flags/390.png b/static/img/flags/390.png
similarity index 100%
rename from webassets/img/flags/390.png
rename to static/img/flags/390.png
diff --git a/webassets/img/flags/391.png b/static/img/flags/391.png
similarity index 100%
rename from webassets/img/flags/391.png
rename to static/img/flags/391.png
diff --git a/webassets/img/flags/4.png b/static/img/flags/4.png
similarity index 100%
rename from webassets/img/flags/4.png
rename to static/img/flags/4.png
diff --git a/webassets/img/flags/40.png b/static/img/flags/40.png
similarity index 100%
rename from webassets/img/flags/40.png
rename to static/img/flags/40.png
diff --git a/webassets/img/flags/400.png b/static/img/flags/400.png
similarity index 100%
rename from webassets/img/flags/400.png
rename to static/img/flags/400.png
diff --git a/webassets/img/flags/401.png b/static/img/flags/401.png
similarity index 100%
rename from webassets/img/flags/401.png
rename to static/img/flags/401.png
diff --git a/webassets/img/flags/402.png b/static/img/flags/402.png
similarity index 100%
rename from webassets/img/flags/402.png
rename to static/img/flags/402.png
diff --git a/webassets/img/flags/404.png b/static/img/flags/404.png
similarity index 100%
rename from webassets/img/flags/404.png
rename to static/img/flags/404.png
diff --git a/webassets/img/flags/406.png b/static/img/flags/406.png
similarity index 100%
rename from webassets/img/flags/406.png
rename to static/img/flags/406.png
diff --git a/webassets/img/flags/408.png b/static/img/flags/408.png
similarity index 100%
rename from webassets/img/flags/408.png
rename to static/img/flags/408.png
diff --git a/webassets/img/flags/409.png b/static/img/flags/409.png
similarity index 100%
rename from webassets/img/flags/409.png
rename to static/img/flags/409.png
diff --git a/webassets/img/flags/41.png b/static/img/flags/41.png
similarity index 100%
rename from webassets/img/flags/41.png
rename to static/img/flags/41.png
diff --git a/webassets/img/flags/410.png b/static/img/flags/410.png
similarity index 100%
rename from webassets/img/flags/410.png
rename to static/img/flags/410.png
diff --git a/webassets/img/flags/411.png b/static/img/flags/411.png
similarity index 100%
rename from webassets/img/flags/411.png
rename to static/img/flags/411.png
diff --git a/webassets/img/flags/412.png b/static/img/flags/412.png
similarity index 100%
rename from webassets/img/flags/412.png
rename to static/img/flags/412.png
diff --git a/webassets/img/flags/414.png b/static/img/flags/414.png
similarity index 100%
rename from webassets/img/flags/414.png
rename to static/img/flags/414.png
diff --git a/webassets/img/flags/416.png b/static/img/flags/416.png
similarity index 100%
rename from webassets/img/flags/416.png
rename to static/img/flags/416.png
diff --git a/webassets/img/flags/42.png b/static/img/flags/42.png
similarity index 100%
rename from webassets/img/flags/42.png
rename to static/img/flags/42.png
diff --git a/webassets/img/flags/420.png b/static/img/flags/420.png
similarity index 100%
rename from webassets/img/flags/420.png
rename to static/img/flags/420.png
diff --git a/webassets/img/flags/422.png b/static/img/flags/422.png
similarity index 100%
rename from webassets/img/flags/422.png
rename to static/img/flags/422.png
diff --git a/webassets/img/flags/424.png b/static/img/flags/424.png
similarity index 100%
rename from webassets/img/flags/424.png
rename to static/img/flags/424.png
diff --git a/webassets/img/flags/428.png b/static/img/flags/428.png
similarity index 100%
rename from webassets/img/flags/428.png
rename to static/img/flags/428.png
diff --git a/webassets/img/flags/43.png b/static/img/flags/43.png
similarity index 100%
rename from webassets/img/flags/43.png
rename to static/img/flags/43.png
diff --git a/webassets/img/flags/430.png b/static/img/flags/430.png
similarity index 100%
rename from webassets/img/flags/430.png
rename to static/img/flags/430.png
diff --git a/webassets/img/flags/432.png b/static/img/flags/432.png
similarity index 100%
rename from webassets/img/flags/432.png
rename to static/img/flags/432.png
diff --git a/webassets/img/flags/434.png b/static/img/flags/434.png
similarity index 100%
rename from webassets/img/flags/434.png
rename to static/img/flags/434.png
diff --git a/webassets/img/flags/436.png b/static/img/flags/436.png
similarity index 100%
rename from webassets/img/flags/436.png
rename to static/img/flags/436.png
diff --git a/webassets/img/flags/438.png b/static/img/flags/438.png
similarity index 100%
rename from webassets/img/flags/438.png
rename to static/img/flags/438.png
diff --git a/webassets/img/flags/44.png b/static/img/flags/44.png
similarity index 100%
rename from webassets/img/flags/44.png
rename to static/img/flags/44.png
diff --git a/webassets/img/flags/440.png b/static/img/flags/440.png
similarity index 100%
rename from webassets/img/flags/440.png
rename to static/img/flags/440.png
diff --git a/webassets/img/flags/442.png b/static/img/flags/442.png
similarity index 100%
rename from webassets/img/flags/442.png
rename to static/img/flags/442.png
diff --git a/webassets/img/flags/444.png b/static/img/flags/444.png
similarity index 100%
rename from webassets/img/flags/444.png
rename to static/img/flags/444.png
diff --git a/webassets/img/flags/446.png b/static/img/flags/446.png
similarity index 100%
rename from webassets/img/flags/446.png
rename to static/img/flags/446.png
diff --git a/webassets/img/flags/45.png b/static/img/flags/45.png
similarity index 100%
rename from webassets/img/flags/45.png
rename to static/img/flags/45.png
diff --git a/webassets/img/flags/450.png b/static/img/flags/450.png
similarity index 100%
rename from webassets/img/flags/450.png
rename to static/img/flags/450.png
diff --git a/webassets/img/flags/452.png b/static/img/flags/452.png
similarity index 100%
rename from webassets/img/flags/452.png
rename to static/img/flags/452.png
diff --git a/webassets/img/flags/453.png b/static/img/flags/453.png
similarity index 100%
rename from webassets/img/flags/453.png
rename to static/img/flags/453.png
diff --git a/webassets/img/flags/454.png b/static/img/flags/454.png
similarity index 100%
rename from webassets/img/flags/454.png
rename to static/img/flags/454.png
diff --git a/webassets/img/flags/456.png b/static/img/flags/456.png
similarity index 100%
rename from webassets/img/flags/456.png
rename to static/img/flags/456.png
diff --git a/webassets/img/flags/458.png b/static/img/flags/458.png
similarity index 100%
rename from webassets/img/flags/458.png
rename to static/img/flags/458.png
diff --git a/webassets/img/flags/46.png b/static/img/flags/46.png
similarity index 100%
rename from webassets/img/flags/46.png
rename to static/img/flags/46.png
diff --git a/webassets/img/flags/460.png b/static/img/flags/460.png
similarity index 100%
rename from webassets/img/flags/460.png
rename to static/img/flags/460.png
diff --git a/webassets/img/flags/462.png b/static/img/flags/462.png
similarity index 100%
rename from webassets/img/flags/462.png
rename to static/img/flags/462.png
diff --git a/webassets/img/flags/464.png b/static/img/flags/464.png
similarity index 100%
rename from webassets/img/flags/464.png
rename to static/img/flags/464.png
diff --git a/webassets/img/flags/466.png b/static/img/flags/466.png
similarity index 100%
rename from webassets/img/flags/466.png
rename to static/img/flags/466.png
diff --git a/webassets/img/flags/468.png b/static/img/flags/468.png
similarity index 100%
rename from webassets/img/flags/468.png
rename to static/img/flags/468.png
diff --git a/webassets/img/flags/47.png b/static/img/flags/47.png
similarity index 100%
rename from webassets/img/flags/47.png
rename to static/img/flags/47.png
diff --git a/webassets/img/flags/470.png b/static/img/flags/470.png
similarity index 100%
rename from webassets/img/flags/470.png
rename to static/img/flags/470.png
diff --git a/webassets/img/flags/474.png b/static/img/flags/474.png
similarity index 100%
rename from webassets/img/flags/474.png
rename to static/img/flags/474.png
diff --git a/webassets/img/flags/478.png b/static/img/flags/478.png
similarity index 100%
rename from webassets/img/flags/478.png
rename to static/img/flags/478.png
diff --git a/webassets/img/flags/48.png b/static/img/flags/48.png
similarity index 100%
rename from webassets/img/flags/48.png
rename to static/img/flags/48.png
diff --git a/webassets/img/flags/480.png b/static/img/flags/480.png
similarity index 100%
rename from webassets/img/flags/480.png
rename to static/img/flags/480.png
diff --git a/webassets/img/flags/482.png b/static/img/flags/482.png
similarity index 100%
rename from webassets/img/flags/482.png
rename to static/img/flags/482.png
diff --git a/webassets/img/flags/483.png b/static/img/flags/483.png
similarity index 100%
rename from webassets/img/flags/483.png
rename to static/img/flags/483.png
diff --git a/webassets/img/flags/488.png b/static/img/flags/488.png
similarity index 100%
rename from webassets/img/flags/488.png
rename to static/img/flags/488.png
diff --git a/webassets/img/flags/489.png b/static/img/flags/489.png
similarity index 100%
rename from webassets/img/flags/489.png
rename to static/img/flags/489.png
diff --git a/webassets/img/flags/49.png b/static/img/flags/49.png
similarity index 100%
rename from webassets/img/flags/49.png
rename to static/img/flags/49.png
diff --git a/webassets/img/flags/490.png b/static/img/flags/490.png
similarity index 100%
rename from webassets/img/flags/490.png
rename to static/img/flags/490.png
diff --git a/webassets/img/flags/492.png b/static/img/flags/492.png
similarity index 100%
rename from webassets/img/flags/492.png
rename to static/img/flags/492.png
diff --git a/webassets/img/flags/493.png b/static/img/flags/493.png
similarity index 100%
rename from webassets/img/flags/493.png
rename to static/img/flags/493.png
diff --git a/webassets/img/flags/497.png b/static/img/flags/497.png
similarity index 100%
rename from webassets/img/flags/497.png
rename to static/img/flags/497.png
diff --git a/webassets/img/flags/499.png b/static/img/flags/499.png
similarity index 100%
rename from webassets/img/flags/499.png
rename to static/img/flags/499.png
diff --git a/webassets/img/flags/5.png b/static/img/flags/5.png
similarity index 100%
rename from webassets/img/flags/5.png
rename to static/img/flags/5.png
diff --git a/webassets/img/flags/50.png b/static/img/flags/50.png
similarity index 100%
rename from webassets/img/flags/50.png
rename to static/img/flags/50.png
diff --git a/webassets/img/flags/501.png b/static/img/flags/501.png
similarity index 100%
rename from webassets/img/flags/501.png
rename to static/img/flags/501.png
diff --git a/webassets/img/flags/502.png b/static/img/flags/502.png
similarity index 100%
rename from webassets/img/flags/502.png
rename to static/img/flags/502.png
diff --git a/webassets/img/flags/503.png b/static/img/flags/503.png
similarity index 100%
rename from webassets/img/flags/503.png
rename to static/img/flags/503.png
diff --git a/webassets/img/flags/504.png b/static/img/flags/504.png
similarity index 100%
rename from webassets/img/flags/504.png
rename to static/img/flags/504.png
diff --git a/webassets/img/flags/505.png b/static/img/flags/505.png
similarity index 100%
rename from webassets/img/flags/505.png
rename to static/img/flags/505.png
diff --git a/webassets/img/flags/506.png b/static/img/flags/506.png
similarity index 100%
rename from webassets/img/flags/506.png
rename to static/img/flags/506.png
diff --git a/webassets/img/flags/507.png b/static/img/flags/507.png
similarity index 100%
rename from webassets/img/flags/507.png
rename to static/img/flags/507.png
diff --git a/webassets/img/flags/508.png b/static/img/flags/508.png
similarity index 100%
rename from webassets/img/flags/508.png
rename to static/img/flags/508.png
diff --git a/webassets/img/flags/509.png b/static/img/flags/509.png
similarity index 100%
rename from webassets/img/flags/509.png
rename to static/img/flags/509.png
diff --git a/webassets/img/flags/51.png b/static/img/flags/51.png
similarity index 100%
rename from webassets/img/flags/51.png
rename to static/img/flags/51.png
diff --git a/webassets/img/flags/510.png b/static/img/flags/510.png
similarity index 100%
rename from webassets/img/flags/510.png
rename to static/img/flags/510.png
diff --git a/webassets/img/flags/511.png b/static/img/flags/511.png
similarity index 100%
rename from webassets/img/flags/511.png
rename to static/img/flags/511.png
diff --git a/webassets/img/flags/512.png b/static/img/flags/512.png
similarity index 100%
rename from webassets/img/flags/512.png
rename to static/img/flags/512.png
diff --git a/webassets/img/flags/513.png b/static/img/flags/513.png
similarity index 100%
rename from webassets/img/flags/513.png
rename to static/img/flags/513.png
diff --git a/webassets/img/flags/514.png b/static/img/flags/514.png
similarity index 100%
rename from webassets/img/flags/514.png
rename to static/img/flags/514.png
diff --git a/webassets/img/flags/515.png b/static/img/flags/515.png
similarity index 100%
rename from webassets/img/flags/515.png
rename to static/img/flags/515.png
diff --git a/webassets/img/flags/516.png b/static/img/flags/516.png
similarity index 100%
rename from webassets/img/flags/516.png
rename to static/img/flags/516.png
diff --git a/webassets/img/flags/517.png b/static/img/flags/517.png
similarity index 100%
rename from webassets/img/flags/517.png
rename to static/img/flags/517.png
diff --git a/webassets/img/flags/518.png b/static/img/flags/518.png
similarity index 100%
rename from webassets/img/flags/518.png
rename to static/img/flags/518.png
diff --git a/webassets/img/flags/519.png b/static/img/flags/519.png
similarity index 100%
rename from webassets/img/flags/519.png
rename to static/img/flags/519.png
diff --git a/webassets/img/flags/52.png b/static/img/flags/52.png
similarity index 100%
rename from webassets/img/flags/52.png
rename to static/img/flags/52.png
diff --git a/webassets/img/flags/520.png b/static/img/flags/520.png
similarity index 100%
rename from webassets/img/flags/520.png
rename to static/img/flags/520.png
diff --git a/webassets/img/flags/521.png b/static/img/flags/521.png
similarity index 100%
rename from webassets/img/flags/521.png
rename to static/img/flags/521.png
diff --git a/webassets/img/flags/522.png b/static/img/flags/522.png
similarity index 100%
rename from webassets/img/flags/522.png
rename to static/img/flags/522.png
diff --git a/webassets/img/flags/53.png b/static/img/flags/53.png
similarity index 100%
rename from webassets/img/flags/53.png
rename to static/img/flags/53.png
diff --git a/webassets/img/flags/54.png b/static/img/flags/54.png
similarity index 100%
rename from webassets/img/flags/54.png
rename to static/img/flags/54.png
diff --git a/webassets/img/flags/55.png b/static/img/flags/55.png
similarity index 100%
rename from webassets/img/flags/55.png
rename to static/img/flags/55.png
diff --git a/webassets/img/flags/56.png b/static/img/flags/56.png
similarity index 100%
rename from webassets/img/flags/56.png
rename to static/img/flags/56.png
diff --git a/webassets/img/flags/57.png b/static/img/flags/57.png
similarity index 100%
rename from webassets/img/flags/57.png
rename to static/img/flags/57.png
diff --git a/webassets/img/flags/58.png b/static/img/flags/58.png
similarity index 100%
rename from webassets/img/flags/58.png
rename to static/img/flags/58.png
diff --git a/webassets/img/flags/59.png b/static/img/flags/59.png
similarity index 100%
rename from webassets/img/flags/59.png
rename to static/img/flags/59.png
diff --git a/webassets/img/flags/6.png b/static/img/flags/6.png
similarity index 100%
rename from webassets/img/flags/6.png
rename to static/img/flags/6.png
diff --git a/webassets/img/flags/60.png b/static/img/flags/60.png
similarity index 100%
rename from webassets/img/flags/60.png
rename to static/img/flags/60.png
diff --git a/webassets/img/flags/61.png b/static/img/flags/61.png
similarity index 100%
rename from webassets/img/flags/61.png
rename to static/img/flags/61.png
diff --git a/webassets/img/flags/62.png b/static/img/flags/62.png
similarity index 100%
rename from webassets/img/flags/62.png
rename to static/img/flags/62.png
diff --git a/webassets/img/flags/63.png b/static/img/flags/63.png
similarity index 100%
rename from webassets/img/flags/63.png
rename to static/img/flags/63.png
diff --git a/webassets/img/flags/64.png b/static/img/flags/64.png
similarity index 100%
rename from webassets/img/flags/64.png
rename to static/img/flags/64.png
diff --git a/webassets/img/flags/65.png b/static/img/flags/65.png
similarity index 100%
rename from webassets/img/flags/65.png
rename to static/img/flags/65.png
diff --git a/webassets/img/flags/66.png b/static/img/flags/66.png
similarity index 100%
rename from webassets/img/flags/66.png
rename to static/img/flags/66.png
diff --git a/webassets/img/flags/67.png b/static/img/flags/67.png
similarity index 100%
rename from webassets/img/flags/67.png
rename to static/img/flags/67.png
diff --git a/webassets/img/flags/68.png b/static/img/flags/68.png
similarity index 100%
rename from webassets/img/flags/68.png
rename to static/img/flags/68.png
diff --git a/webassets/img/flags/69.png b/static/img/flags/69.png
similarity index 100%
rename from webassets/img/flags/69.png
rename to static/img/flags/69.png
diff --git a/webassets/img/flags/7.png b/static/img/flags/7.png
similarity index 100%
rename from webassets/img/flags/7.png
rename to static/img/flags/7.png
diff --git a/webassets/img/flags/70.png b/static/img/flags/70.png
similarity index 100%
rename from webassets/img/flags/70.png
rename to static/img/flags/70.png
diff --git a/webassets/img/flags/71.png b/static/img/flags/71.png
similarity index 100%
rename from webassets/img/flags/71.png
rename to static/img/flags/71.png
diff --git a/webassets/img/flags/72.png b/static/img/flags/72.png
similarity index 100%
rename from webassets/img/flags/72.png
rename to static/img/flags/72.png
diff --git a/webassets/img/flags/74.png b/static/img/flags/74.png
similarity index 100%
rename from webassets/img/flags/74.png
rename to static/img/flags/74.png
diff --git a/webassets/img/flags/75.png b/static/img/flags/75.png
similarity index 100%
rename from webassets/img/flags/75.png
rename to static/img/flags/75.png
diff --git a/webassets/img/flags/76.png b/static/img/flags/76.png
similarity index 100%
rename from webassets/img/flags/76.png
rename to static/img/flags/76.png
diff --git a/webassets/img/flags/77.png b/static/img/flags/77.png
similarity index 100%
rename from webassets/img/flags/77.png
rename to static/img/flags/77.png
diff --git a/webassets/img/flags/78.png b/static/img/flags/78.png
similarity index 100%
rename from webassets/img/flags/78.png
rename to static/img/flags/78.png
diff --git a/webassets/img/flags/79.png b/static/img/flags/79.png
similarity index 100%
rename from webassets/img/flags/79.png
rename to static/img/flags/79.png
diff --git a/webassets/img/flags/8.png b/static/img/flags/8.png
similarity index 100%
rename from webassets/img/flags/8.png
rename to static/img/flags/8.png
diff --git a/webassets/img/flags/80.png b/static/img/flags/80.png
similarity index 100%
rename from webassets/img/flags/80.png
rename to static/img/flags/80.png
diff --git a/webassets/img/flags/81.png b/static/img/flags/81.png
similarity index 100%
rename from webassets/img/flags/81.png
rename to static/img/flags/81.png
diff --git a/webassets/img/flags/82.png b/static/img/flags/82.png
similarity index 100%
rename from webassets/img/flags/82.png
rename to static/img/flags/82.png
diff --git a/webassets/img/flags/84.png b/static/img/flags/84.png
similarity index 100%
rename from webassets/img/flags/84.png
rename to static/img/flags/84.png
diff --git a/webassets/img/flags/85.png b/static/img/flags/85.png
similarity index 100%
rename from webassets/img/flags/85.png
rename to static/img/flags/85.png
diff --git a/webassets/img/flags/86.png b/static/img/flags/86.png
similarity index 100%
rename from webassets/img/flags/86.png
rename to static/img/flags/86.png
diff --git a/webassets/img/flags/88.png b/static/img/flags/88.png
similarity index 100%
rename from webassets/img/flags/88.png
rename to static/img/flags/88.png
diff --git a/webassets/img/flags/89.png b/static/img/flags/89.png
similarity index 100%
rename from webassets/img/flags/89.png
rename to static/img/flags/89.png
diff --git a/webassets/img/flags/9.png b/static/img/flags/9.png
similarity index 100%
rename from webassets/img/flags/9.png
rename to static/img/flags/9.png
diff --git a/webassets/img/flags/90.png b/static/img/flags/90.png
similarity index 100%
rename from webassets/img/flags/90.png
rename to static/img/flags/90.png
diff --git a/webassets/img/flags/91.png b/static/img/flags/91.png
similarity index 100%
rename from webassets/img/flags/91.png
rename to static/img/flags/91.png
diff --git a/webassets/img/flags/93.png b/static/img/flags/93.png
similarity index 100%
rename from webassets/img/flags/93.png
rename to static/img/flags/93.png
diff --git a/webassets/img/flags/94.png b/static/img/flags/94.png
similarity index 100%
rename from webassets/img/flags/94.png
rename to static/img/flags/94.png
diff --git a/webassets/img/flags/95.png b/static/img/flags/95.png
similarity index 100%
rename from webassets/img/flags/95.png
rename to static/img/flags/95.png
diff --git a/webassets/img/flags/96.png b/static/img/flags/96.png
similarity index 100%
rename from webassets/img/flags/96.png
rename to static/img/flags/96.png
diff --git a/webassets/img/flags/97.png b/static/img/flags/97.png
similarity index 100%
rename from webassets/img/flags/97.png
rename to static/img/flags/97.png
diff --git a/webassets/img/flags/98.png b/static/img/flags/98.png
similarity index 100%
rename from webassets/img/flags/98.png
rename to static/img/flags/98.png
diff --git a/webassets/img/flags/99.png b/static/img/flags/99.png
similarity index 100%
rename from webassets/img/flags/99.png
rename to static/img/flags/99.png
diff --git a/webassets/img/flags/999.png b/static/img/flags/999.png
similarity index 100%
rename from webassets/img/flags/999.png
rename to static/img/flags/999.png
diff --git a/webassets/img/flags/generate.py b/static/img/flags/generate.py
similarity index 100%
rename from webassets/img/flags/generate.py
rename to static/img/flags/generate.py
diff --git a/webassets/img/icon-16.png b/static/img/icon-16.png
similarity index 100%
rename from webassets/img/icon-16.png
rename to static/img/icon-16.png
diff --git a/webassets/img/icon-192-pwa.png b/static/img/icon-192-pwa.png
similarity index 100%
rename from webassets/img/icon-192-pwa.png
rename to static/img/icon-192-pwa.png
diff --git a/webassets/img/icon-192.png b/static/img/icon-192.png
similarity index 100%
rename from webassets/img/icon-192.png
rename to static/img/icon-192.png
diff --git a/webassets/img/icon-32.png b/static/img/icon-32.png
similarity index 100%
rename from webassets/img/icon-32.png
rename to static/img/icon-32.png
diff --git a/webassets/img/icon-512-pwa.png b/static/img/icon-512-pwa.png
similarity index 100%
rename from webassets/img/icon-512-pwa.png
rename to static/img/icon-512-pwa.png
diff --git a/webassets/img/icon-512.png b/static/img/icon-512.png
similarity index 100%
rename from webassets/img/icon-512.png
rename to static/img/icon-512.png
diff --git a/webassets/img/logo.png b/static/img/logo.png
similarity index 100%
rename from webassets/img/logo.png
rename to static/img/logo.png
diff --git a/webassets/js/add-spot.js b/static/js/add-spot.js
similarity index 100%
rename from webassets/js/add-spot.js
rename to static/js/add-spot.js
diff --git a/webassets/js/alerts.js b/static/js/alerts.js
similarity index 100%
rename from webassets/js/alerts.js
rename to static/js/alerts.js
diff --git a/webassets/js/bands.js b/static/js/bands.js
similarity index 100%
rename from webassets/js/bands.js
rename to static/js/bands.js
diff --git a/webassets/js/common.js b/static/js/common.js
similarity index 100%
rename from webassets/js/common.js
rename to static/js/common.js
diff --git a/webassets/js/conditions.js b/static/js/conditions.js
similarity index 100%
rename from webassets/js/conditions.js
rename to static/js/conditions.js
diff --git a/webassets/js/geo.js b/static/js/geo.js
similarity index 100%
rename from webassets/js/geo.js
rename to static/js/geo.js
diff --git a/webassets/js/map.js b/static/js/map.js
similarity index 100%
rename from webassets/js/map.js
rename to static/js/map.js
diff --git a/webassets/js/spots.js b/static/js/spots.js
similarity index 100%
rename from webassets/js/spots.js
rename to static/js/spots.js
diff --git a/webassets/js/spotsbandsandmap.js b/static/js/spotsbandsandmap.js
similarity index 100%
rename from webassets/js/spotsbandsandmap.js
rename to static/js/spotsbandsandmap.js
diff --git a/webassets/js/status.js b/static/js/status.js
similarity index 100%
rename from webassets/js/status.js
rename to static/js/status.js
diff --git a/webassets/js/ui-ham.js b/static/js/ui-ham.js
similarity index 100%
rename from webassets/js/ui-ham.js
rename to static/js/ui-ham.js
diff --git a/webassets/js/utils.js b/static/js/utils.js
similarity index 100%
rename from webassets/js/utils.js
rename to static/js/utils.js
diff --git a/webassets/service-worker.js b/static/service-worker.js
similarity index 100%
rename from webassets/service-worker.js
rename to static/service-worker.js
diff --git a/webassets/vendor/css/bootstrap-5.3.8.min.css b/static/vendor/css/bootstrap-5.3.8.min.css
similarity index 100%
rename from webassets/vendor/css/bootstrap-5.3.8.min.css
rename to static/vendor/css/bootstrap-5.3.8.min.css
diff --git a/webassets/vendor/css/fontawesome-6.7.2.min.css b/static/vendor/css/fontawesome-6.7.2.min.css
similarity index 100%
rename from webassets/vendor/css/fontawesome-6.7.2.min.css
rename to static/vendor/css/fontawesome-6.7.2.min.css
diff --git a/webassets/vendor/css/images/layers-2x.png b/static/vendor/css/images/layers-2x.png
similarity index 100%
rename from webassets/vendor/css/images/layers-2x.png
rename to static/vendor/css/images/layers-2x.png
diff --git a/webassets/vendor/css/images/layers.png b/static/vendor/css/images/layers.png
similarity index 100%
rename from webassets/vendor/css/images/layers.png
rename to static/vendor/css/images/layers.png
diff --git a/webassets/vendor/css/images/marker-icon-2x.png b/static/vendor/css/images/marker-icon-2x.png
similarity index 100%
rename from webassets/vendor/css/images/marker-icon-2x.png
rename to static/vendor/css/images/marker-icon-2x.png
diff --git a/webassets/vendor/css/images/marker-icon.png b/static/vendor/css/images/marker-icon.png
similarity index 100%
rename from webassets/vendor/css/images/marker-icon.png
rename to static/vendor/css/images/marker-icon.png
diff --git a/webassets/vendor/css/images/marker-shadow.png b/static/vendor/css/images/marker-shadow.png
similarity index 100%
rename from webassets/vendor/css/images/marker-shadow.png
rename to static/vendor/css/images/marker-shadow.png
diff --git a/webassets/vendor/css/leaflet-1.9.4.min.css b/static/vendor/css/leaflet-1.9.4.min.css
similarity index 100%
rename from webassets/vendor/css/leaflet-1.9.4.min.css
rename to static/vendor/css/leaflet-1.9.4.min.css
diff --git a/webassets/vendor/css/leaflet-extra-markers-1.2.2.min.css b/static/vendor/css/leaflet-extra-markers-1.2.2.min.css
similarity index 100%
rename from webassets/vendor/css/leaflet-extra-markers-1.2.2.min.css
rename to static/vendor/css/leaflet-extra-markers-1.2.2.min.css
diff --git a/webassets/vendor/css/solid-6.7.2.min.css b/static/vendor/css/solid-6.7.2.min.css
similarity index 100%
rename from webassets/vendor/css/solid-6.7.2.min.css
rename to static/vendor/css/solid-6.7.2.min.css
diff --git a/webassets/vendor/img/markers_default.png b/static/vendor/img/markers_default.png
similarity index 100%
rename from webassets/vendor/img/markers_default.png
rename to static/vendor/img/markers_default.png
diff --git a/webassets/vendor/img/markers_default@2x.png b/static/vendor/img/markers_default@2x.png
similarity index 100%
rename from webassets/vendor/img/markers_default@2x.png
rename to static/vendor/img/markers_default@2x.png
diff --git a/webassets/vendor/img/markers_shadow.png b/static/vendor/img/markers_shadow.png
similarity index 100%
rename from webassets/vendor/img/markers_shadow.png
rename to static/vendor/img/markers_shadow.png
diff --git a/webassets/vendor/img/markers_shadow@2x.png b/static/vendor/img/markers_shadow@2x.png
similarity index 100%
rename from webassets/vendor/img/markers_shadow@2x.png
rename to static/vendor/img/markers_shadow@2x.png
diff --git a/webassets/vendor/js/bootstrap-5.3.8.bundle.min.js b/static/vendor/js/bootstrap-5.3.8.bundle.min.js
similarity index 100%
rename from webassets/vendor/js/bootstrap-5.3.8.bundle.min.js
rename to static/vendor/js/bootstrap-5.3.8.bundle.min.js
diff --git a/webassets/vendor/js/chart-4.4.9.umd.min.js b/static/vendor/js/chart-4.4.9.umd.min.js
similarity index 100%
rename from webassets/vendor/js/chart-4.4.9.umd.min.js
rename to static/vendor/js/chart-4.4.9.umd.min.js
diff --git a/webassets/vendor/js/jquery-3.7.1.min.js b/static/vendor/js/jquery-3.7.1.min.js
similarity index 100%
rename from webassets/vendor/js/jquery-3.7.1.min.js
rename to static/vendor/js/jquery-3.7.1.min.js
diff --git a/webassets/vendor/js/leaflet-1.9.4.min.js b/static/vendor/js/leaflet-1.9.4.min.js
similarity index 100%
rename from webassets/vendor/js/leaflet-1.9.4.min.js
rename to static/vendor/js/leaflet-1.9.4.min.js
diff --git a/webassets/vendor/js/leaflet-cqzones.js b/static/vendor/js/leaflet-cqzones.js
similarity index 100%
rename from webassets/vendor/js/leaflet-cqzones.js
rename to static/vendor/js/leaflet-cqzones.js
diff --git a/webassets/vendor/js/leaflet-extra-markers-1.2.2.min.js b/static/vendor/js/leaflet-extra-markers-1.2.2.min.js
similarity index 100%
rename from webassets/vendor/js/leaflet-extra-markers-1.2.2.min.js
rename to static/vendor/js/leaflet-extra-markers-1.2.2.min.js
diff --git a/webassets/vendor/js/leaflet-geodesic-2.7.2.umd.min.js b/static/vendor/js/leaflet-geodesic-2.7.2.umd.min.js
similarity index 100%
rename from webassets/vendor/js/leaflet-geodesic-2.7.2.umd.min.js
rename to static/vendor/js/leaflet-geodesic-2.7.2.umd.min.js
diff --git a/webassets/vendor/js/leaflet-ituzones.js b/static/vendor/js/leaflet-ituzones.js
similarity index 100%
rename from webassets/vendor/js/leaflet-ituzones.js
rename to static/vendor/js/leaflet-ituzones.js
diff --git a/webassets/vendor/js/leaflet-maidenhead.js b/static/vendor/js/leaflet-maidenhead.js
similarity index 100%
rename from webassets/vendor/js/leaflet-maidenhead.js
rename to static/vendor/js/leaflet-maidenhead.js
diff --git a/webassets/vendor/js/leaflet-providers-2.0.0.js b/static/vendor/js/leaflet-providers-2.0.0.js
similarity index 100%
rename from webassets/vendor/js/leaflet-providers-2.0.0.js
rename to static/vendor/js/leaflet-providers-2.0.0.js
diff --git a/webassets/vendor/js/leaflet-terminator-1.1.0.min.js b/static/vendor/js/leaflet-terminator-1.1.0.min.js
similarity index 100%
rename from webassets/vendor/js/leaflet-terminator-1.1.0.min.js
rename to static/vendor/js/leaflet-terminator-1.1.0.min.js
diff --git a/webassets/vendor/js/leaflet-vectorgrid-1.3.0.js b/static/vendor/js/leaflet-vectorgrid-1.3.0.js
similarity index 100%
rename from webassets/vendor/js/leaflet-vectorgrid-1.3.0.js
rename to static/vendor/js/leaflet-vectorgrid-1.3.0.js
diff --git a/webassets/vendor/js/leaflet-workedallbritainireland.js b/static/vendor/js/leaflet-workedallbritainireland.js
similarity index 100%
rename from webassets/vendor/js/leaflet-workedallbritainireland.js
rename to static/vendor/js/leaflet-workedallbritainireland.js
diff --git a/webassets/vendor/js/moment-2.29.4.min.js b/static/vendor/js/moment-2.29.4.min.js
similarity index 100%
rename from webassets/vendor/js/moment-2.29.4.min.js
rename to static/vendor/js/moment-2.29.4.min.js
diff --git a/webassets/vendor/js/oms-leaflet-0.2.7.min.js b/static/vendor/js/oms-leaflet-0.2.7.min.js
similarity index 100%
rename from webassets/vendor/js/oms-leaflet-0.2.7.min.js
rename to static/vendor/js/oms-leaflet-0.2.7.min.js
diff --git a/webassets/vendor/js/text-image-0.7.0.js b/static/vendor/js/text-image-0.7.0.js
similarity index 100%
rename from webassets/vendor/js/text-image-0.7.0.js
rename to static/vendor/js/text-image-0.7.0.js
diff --git a/webassets/vendor/js/tinycolor2-1.6.0.min.js b/static/vendor/js/tinycolor2-1.6.0.min.js
similarity index 100%
rename from webassets/vendor/js/tinycolor2-1.6.0.min.js
rename to static/vendor/js/tinycolor2-1.6.0.min.js
diff --git a/webassets/vendor/webfonts/fa-solid-900.ttf b/static/vendor/webfonts/fa-solid-900.ttf
similarity index 100%
rename from webassets/vendor/webfonts/fa-solid-900.ttf
rename to static/vendor/webfonts/fa-solid-900.ttf
diff --git a/webassets/vendor/webfonts/fa-solid-900.woff2 b/static/vendor/webfonts/fa-solid-900.woff2
similarity index 100%
rename from webassets/vendor/webfonts/fa-solid-900.woff2
rename to static/vendor/webfonts/fa-solid-900.woff2
diff --git a/templates/add_spot.html b/templates/add_spot.html
index 1bf5fae..afa63e7 100644
--- a/templates/add_spot.html
+++ b/templates/add_spot.html
@@ -76,7 +76,7 @@
-
+
diff --git a/templates/alerts.html b/templates/alerts.html
index ddcd199..cdde5e5 100644
--- a/templates/alerts.html
+++ b/templates/alerts.html
@@ -75,7 +75,7 @@
-
+
diff --git a/templates/bands.html b/templates/bands.html
index 63c97d2..d0cf2b0 100644
--- a/templates/bands.html
+++ b/templates/bands.html
@@ -75,8 +75,8 @@
-
-
+
+
diff --git a/templates/base.html b/templates/base.html
index 5732398..ad0ee39 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,6 +1,6 @@
{% extends "skeleton.html" %}
{% block head_extra %}
-
+
@@ -10,10 +10,10 @@
-
-
-
-
+
+
+
+
{% end %}
{% block body %}