mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-11 18:56:23 +00:00
Compare commits
46 Commits
import_csv
...
1.7.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8292b5404 | ||
|
|
5730c2dabf | ||
|
|
dddd24e57f | ||
|
|
a6c5899f44 | ||
|
|
ba6f46c6eb | ||
|
|
ddfc1e7824 | ||
|
|
2761e801df | ||
|
|
555a8b0523 | ||
|
|
6d984a486a | ||
|
|
9dceb7a696 | ||
|
|
64575a9b99 | ||
|
|
a94954d58c | ||
|
|
d2e4162b6b | ||
|
|
4afee63137 | ||
|
|
d486fdef2c | ||
|
|
e945ae2b4d | ||
|
|
9565ccc54e | ||
|
|
e68c75d74d | ||
|
|
f359532c30 | ||
|
|
93e8b3f07f | ||
|
|
66bf945770 | ||
|
|
a76d5b9225 | ||
|
|
1aa40fecab | ||
|
|
f4fe49b3b4 | ||
|
|
e1923f92c2 | ||
|
|
49780739f8 | ||
|
|
71d69dde53 | ||
|
|
f4af809e6d | ||
|
|
9221da5805 | ||
|
|
b71ac2d7e3 | ||
|
|
4ac3ca5dc2 | ||
|
|
bc6b7313ec | ||
|
|
0b5271424c | ||
|
|
899e8db661 | ||
|
|
cf65ea2c6a | ||
|
|
ce18bb58bd | ||
|
|
27e11f8051 | ||
|
|
2a8fe01027 | ||
|
|
99ff61cf34 | ||
|
|
8fa4a9c88b | ||
|
|
a492995836 | ||
|
|
ad39324650 | ||
|
|
ef02feed3b | ||
|
|
1a10861d2f | ||
|
|
b64f939344 | ||
|
|
ddaf6a6d8a |
9
.env
Normal file
9
.env
Normal file
@@ -0,0 +1,9 @@
|
||||
if [ ! -d .virtualenv ]; then
|
||||
if [ ! "$(which virtualenv)" == "" ]; then
|
||||
virtualenv -p python3 .virtualenv
|
||||
fi
|
||||
fi
|
||||
if [ -f .virtualenv/bin/activate ]; then
|
||||
source .virtualenv/bin/activate
|
||||
AUTOENV_ENABLE_LEAVE=True
|
||||
fi
|
||||
1
.env.leave
Normal file
1
.env.leave
Normal file
@@ -0,0 +1 @@
|
||||
deactivate
|
||||
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,6 +1,6 @@
|
||||
__pycache__
|
||||
/db.sqlite3
|
||||
/static/
|
||||
/static/*
|
||||
**.*.swp
|
||||
.coverage
|
||||
htmlcov/
|
||||
@@ -14,3 +14,9 @@ node_modules/
|
||||
config_local.py
|
||||
locale/*/LC_MESSAGES/django.mo
|
||||
.DS_Store
|
||||
.idea/
|
||||
contacts.csv
|
||||
falko_gravatar.jpg
|
||||
*.egg-info
|
||||
dump_all*.sql
|
||||
dist/
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
image:
|
||||
name: quay.io/rhn_support_ofalk/fedora34-python3
|
||||
entrypoint: [ '/bin/sh', '-c' ]
|
||||
default:
|
||||
image:
|
||||
name: quay.io/rhn_support_ofalk/fedora35-python3
|
||||
entrypoint: [ '/bin/sh', '-c' ]
|
||||
|
||||
before_script:
|
||||
- virtualenv -p python3 /tmp/.virtualenv
|
||||
@@ -19,6 +20,8 @@ test_and_coverage:
|
||||
- echo 'from ivatar.settings import TEMPLATES' > config_local.py
|
||||
- echo 'TEMPLATES[0]["OPTIONS"]["debug"] = True' >> config_local.py
|
||||
- echo "DEBUG = True" >> config_local.py
|
||||
- echo "from config import CACHES" >> config_local.py
|
||||
- echo "CACHES['default'] = CACHES['filesystem']" >> config_local.py
|
||||
- python manage.py collectstatic --noinput
|
||||
- coverage run --source . manage.py test -v3
|
||||
- coverage report --fail-under=70
|
||||
@@ -54,3 +57,24 @@ pages:
|
||||
expire_in: 14 days
|
||||
only:
|
||||
- master
|
||||
|
||||
build-image:
|
||||
image: docker
|
||||
services:
|
||||
- docker:dind
|
||||
before_script:
|
||||
- docker info
|
||||
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
|
||||
|
||||
script:
|
||||
- ls -lah
|
||||
- |
|
||||
if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
|
||||
tag=""
|
||||
echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
|
||||
else
|
||||
tag=":$CI_COMMIT_REF_SLUG"
|
||||
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
|
||||
fi
|
||||
- docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
|
||||
- docker push "$CI_REGISTRY_IMAGE${tag}"
|
||||
|
||||
@@ -4,16 +4,16 @@ repos:
|
||||
hooks:
|
||||
- id: check-useless-excludes
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v2.6.2
|
||||
rev: v3.0.0-alpha.4
|
||||
hooks:
|
||||
- id: prettier
|
||||
files: \.(css|js|md|markdown|json)
|
||||
- repo: https://github.com/python/black
|
||||
rev: 22.3.0
|
||||
rev: 22.10.0
|
||||
hooks:
|
||||
- id: black
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.2.0
|
||||
rev: v4.4.0
|
||||
hooks:
|
||||
- id: check-added-large-files
|
||||
- id: check-ast
|
||||
@@ -37,8 +37,8 @@ repos:
|
||||
- id: requirements-txt-fixer
|
||||
- id: sort-simple-yaml
|
||||
- id: trailing-whitespace
|
||||
- repo: https://gitlab.com/pycqa/flake8
|
||||
rev: 3.9.2
|
||||
- repo: https://github.com/PyCQA/flake8
|
||||
rev: 6.0.0
|
||||
hooks:
|
||||
- id: flake8
|
||||
- repo: local
|
||||
|
||||
17
Dockerfile
Normal file
17
Dockerfile
Normal file
@@ -0,0 +1,17 @@
|
||||
FROM quay.io/rhn_support_ofalk/fedora35-python3
|
||||
LABEL maintainer Oliver Falk <oliver@linux-kernel.at>
|
||||
EXPOSE 8081
|
||||
|
||||
RUN pip3 install pip --upgrade
|
||||
|
||||
ADD . /opt/ivatar-devel
|
||||
|
||||
WORKDIR /opt/ivatar-devel
|
||||
|
||||
RUN pip3 install Pillow && pip3 install -r requirements.txt && pip3 install python-coveralls coverage pycco django_coverage_plugin
|
||||
|
||||
RUN echo "DEBUG = True" >> /opt/ivatar-devel/config_local.py
|
||||
RUN echo "EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'" >> /opt/ivatar-devel/config_local.py
|
||||
RUN python3 manage.py migrate && python3 manage.py collectstatic --noinput
|
||||
RUN echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'admin@local.tld', 'admin')" | python manage.py shell
|
||||
ENTRYPOINT python3 ./manage.py runserver 0:8081
|
||||
82
config.py
82
config.py
@@ -60,7 +60,7 @@ OPENID_CREATE_USERS = True
|
||||
OPENID_UPDATE_DETAILS_FROM_SREG = True
|
||||
|
||||
SITE_NAME = os.environ.get("SITE_NAME", "libravatar")
|
||||
IVATAR_VERSION = "1.6"
|
||||
IVATAR_VERSION = "1.7.0"
|
||||
|
||||
SCHEMAROOT = "https://www.libravatar.org/schemas/export/0.2"
|
||||
|
||||
@@ -191,7 +191,7 @@ MESSAGE_TAGS = {
|
||||
|
||||
CACHES = {
|
||||
"default": {
|
||||
"BACKEND": "django.core.cache.backends.memcached.MemcachedCache",
|
||||
"BACKEND": "django.core.cache.backends.memcached.PyMemcacheCache",
|
||||
"LOCATION": [
|
||||
"127.0.0.1:11211",
|
||||
],
|
||||
@@ -211,74 +211,60 @@ CACHE_RESPONSE = True
|
||||
|
||||
# Trusted URLs for default redirection
|
||||
TRUSTED_DEFAULT_URLS = [
|
||||
{"schemes": ["https"], "host_equals": "ui-avatars.com", "path_prefix": "/api/"},
|
||||
{
|
||||
"schemes": [
|
||||
"https"
|
||||
],
|
||||
"host_equals": "ui-avatars.com",
|
||||
"path_prefix": "/api/"
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
"https"
|
||||
],
|
||||
"schemes": ["http", "https"],
|
||||
"host_equals": "gravatar.com",
|
||||
"path_prefix": "/avatar/"
|
||||
"path_prefix": "/avatar/",
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
"https"
|
||||
],
|
||||
"schemes": ["http", "https"],
|
||||
"host_suffix": ".gravatar.com",
|
||||
"path_prefix": "/avatar/"
|
||||
"path_prefix": "/avatar/",
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
"https"
|
||||
],
|
||||
"schemes": ["http", "https"],
|
||||
"host_equals": "www.gravatar.org",
|
||||
"path_prefix": "/avatar/"
|
||||
"path_prefix": "/avatar/",
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"https"
|
||||
],
|
||||
"schemes": ["https"],
|
||||
"host_equals": "avatars.dicebear.com",
|
||||
"path_prefix": "/api/"
|
||||
"path_prefix": "/api/",
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"https"
|
||||
],
|
||||
"schemes": ["https"],
|
||||
"host_equals": "badges.fedoraproject.org",
|
||||
"path_prefix": "/static/img/"
|
||||
"path_prefix": "/static/img/",
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
],
|
||||
"schemes": ["http"],
|
||||
"host_equals": "www.planet-libre.org",
|
||||
"path_prefix": "/themes/planetlibre/images/"
|
||||
"path_prefix": "/themes/planetlibre/images/",
|
||||
},
|
||||
{"schemes": ["https"], "host_equals": "www.azuracast.com", "path_prefix": "/img/"},
|
||||
{
|
||||
"schemes": [
|
||||
"https"
|
||||
],
|
||||
"host_equals": "www.azuracast.com",
|
||||
"path_prefix": "/img/"
|
||||
},
|
||||
{
|
||||
"schemes": [
|
||||
"https"
|
||||
],
|
||||
"schemes": ["https"],
|
||||
"host_equals": "reps.mozilla.org",
|
||||
"path_prefix": "/static/base/img/remo/"
|
||||
}
|
||||
"path_prefix": "/static/base/img/remo/",
|
||||
},
|
||||
]
|
||||
|
||||
# This MUST BE THE LAST!
|
||||
if os.path.isfile(os.path.join(BASE_DIR, "config_local.py")):
|
||||
from config_local import * # noqa # flake8: noqa # NOQA # pragma: no cover
|
||||
|
||||
|
||||
def map_legacy_config(trusted_url):
|
||||
"""
|
||||
For backward compability with the legacy configuration
|
||||
for trusting URLs. Adapts them to fit the new config.
|
||||
"""
|
||||
if isinstance(trusted_url, str):
|
||||
return {"url_prefix": trusted_url}
|
||||
|
||||
return trusted_url
|
||||
|
||||
|
||||
# Backward compability for legacy behavior
|
||||
TRUSTED_DEFAULT_URLS = list(map(map_legacy_config, TRUSTED_DEFAULT_URLS))
|
||||
|
||||
0
create_nobody_from_svg_with_inkscape.sh
Normal file → Executable file
0
create_nobody_from_svg_with_inkscape.sh
Normal file → Executable file
@@ -41,12 +41,14 @@ def file_format(image_type):
|
||||
"""
|
||||
Helper method returning a short image type
|
||||
"""
|
||||
if image_type == "JPEG":
|
||||
if image_type in ("JPEG", "MPO"):
|
||||
return "jpg"
|
||||
elif image_type == "PNG":
|
||||
return "png"
|
||||
elif image_type == "GIF":
|
||||
return "gif"
|
||||
elif image_type == "WEBP":
|
||||
return "webp"
|
||||
return None
|
||||
|
||||
|
||||
@@ -54,12 +56,14 @@ def pil_format(image_type):
|
||||
"""
|
||||
Helper method returning the 'encoder name' for PIL
|
||||
"""
|
||||
if image_type == "jpg" or image_type == "jpeg":
|
||||
if image_type in ("jpg", "jpeg", "mpo"):
|
||||
return "JPEG"
|
||||
elif image_type == "png":
|
||||
return "PNG"
|
||||
elif image_type == "gif":
|
||||
return "GIF"
|
||||
elif image_type == "webp":
|
||||
return "WEBP"
|
||||
|
||||
logger.info("Unsupported file format: %s", image_type)
|
||||
return None
|
||||
|
||||
@@ -34,7 +34,7 @@ outline: inherit;
|
||||
<button type="submit" name="photo{{ photo.id }}" class="nobutton">
|
||||
<div class="panel panel-tortin" style="width:132px;margin:0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{% ifequal email.photo.id photo.id %}<i class="fa fa-check"></i>{% endifequal %} {% trans 'Image' %} {{ forloop.counter }}</h3>
|
||||
<h3 class="panel-title">{% if email.photo.id == photo.id %}<i class="fa fa-check"></i>{% endif %} {% trans 'Image' %} {{ forloop.counter }}</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="height:130px">
|
||||
<center>
|
||||
@@ -49,7 +49,7 @@ outline: inherit;
|
||||
<button type="submit" name="photoNone" class="nobutton">
|
||||
<div class="panel panel-tortin" style="width:132px;margin:0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{% ifequal email.photo.id photo.id %}<i class="fa fa-check"></i>{% endifequal %} {% trans 'No image' %}</h3>
|
||||
<h3 class="panel-title">{% if email.photo.id == photo.id %}<i class="fa fa-check"></i>{% endif %} {% trans 'No image' %}</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="height:130px">
|
||||
<center>
|
||||
|
||||
@@ -34,7 +34,7 @@ outline: inherit;
|
||||
<button type="submit" name="photo{{ photo.id }}" class="nobutton">
|
||||
<div class="panel panel-tortin" style="width:132px;margin:0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{% ifequal openid.photo.id photo.id %}<i class="fa fa-check"></i>{% endifequal %} {% trans 'Image' %} {{ forloop.counter }}</h3>
|
||||
<h3 class="panel-title">{% if openid.photo.id == photo.id %}<i class="fa fa-check"></i>{% endif %} {% trans 'Image' %} {{ forloop.counter }}</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="height:130px">
|
||||
<center>
|
||||
@@ -49,7 +49,7 @@ outline: inherit;
|
||||
<button type="submit" name="photoNone" class="nobutton">
|
||||
<div class="panel panel-tortin" style="width:132px;margin:0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{% ifequal openid.photo.id photo.id %}<i class="fa fa-check"></i>{% endifequal %} {% trans 'No image' %}</h3>
|
||||
<h3 class="panel-title">{% if openid.photo.id == photo.id %}<i class="fa fa-check"></i>{% endif %} {% trans 'No image' %}</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="height:130px">
|
||||
<center>
|
||||
|
||||
@@ -748,6 +748,47 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertEqual(response.status_code, 200, "unable to fetch avatar?")
|
||||
|
||||
def test_upload_webp_image(self):
|
||||
"""
|
||||
Test if webp is correctly detected and can be viewed
|
||||
"""
|
||||
self.login()
|
||||
url = reverse("upload_photo")
|
||||
# rb => Read binary
|
||||
# Broken is _not_ broken - it's just an 'x' :-)
|
||||
with open(
|
||||
os.path.join(settings.STATIC_ROOT, "img", "broken.webp"), "rb"
|
||||
) as photo:
|
||||
response = self.client.post(
|
||||
url,
|
||||
{
|
||||
"photo": photo,
|
||||
"not_porn": True,
|
||||
"can_distribute": True,
|
||||
},
|
||||
follow=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
str(list(response.context[0]["messages"])[0]),
|
||||
"Successfully uploaded",
|
||||
"WEBP upload failed?!",
|
||||
)
|
||||
self.assertEqual(
|
||||
self.user.photo_set.first().format,
|
||||
"webp",
|
||||
"Format must be webp, since we uploaded a webp!",
|
||||
)
|
||||
self.test_confirm_email()
|
||||
self.user.confirmedemail_set.first().photo = self.user.photo_set.first()
|
||||
urlobj = urlsplit(
|
||||
libravatar_url(
|
||||
email=self.user.confirmedemail_set.first().email,
|
||||
)
|
||||
)
|
||||
url = "%s?%s" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertEqual(response.status_code, 200, "unable to fetch avatar?")
|
||||
|
||||
def test_upload_unsupported_tif_image(self): # pylint: disable=invalid-name
|
||||
"""
|
||||
Test if unsupported format is correctly detected
|
||||
@@ -1292,16 +1333,37 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
# Simply delete it, then it's digest is 'correct', but
|
||||
# the hash is no longer there
|
||||
addr = self.user.confirmedemail_set.first().email
|
||||
hashlib.md5(addr.strip().lower().encode("utf-8")).hexdigest()
|
||||
digest = hashlib.md5(addr.strip().lower().encode("utf-8")).hexdigest()
|
||||
|
||||
self.user.confirmedemail_set.first().delete()
|
||||
url = "%s?%s" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/nobody/80.png",
|
||||
msg_prefix="Why does this not redirect to Gravatar?",
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][0],
|
||||
"/gravatarproxy/%s?s=80" % digest,
|
||||
"Doesn't redirect to Gravatar?",
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][1], 302, "Doesn't redirect with 302?"
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[1][0],
|
||||
"/avatar/%s?s=80&forcedefault=y" % digest,
|
||||
"Doesn't redirect with default forced on?",
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[1][1], 302, "Doesn't redirect with 302?"
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[2][0],
|
||||
"/static/img/nobody/80.png",
|
||||
"Doesn't redirect to static?",
|
||||
)
|
||||
# self.assertRedirects(
|
||||
# response=response,
|
||||
# expected_url="/static/img/nobody/80.png",
|
||||
# msg_prefix="Why does this not redirect to Gravatar?",
|
||||
# )
|
||||
# Eventually one should check if the data is the same
|
||||
|
||||
def test_avatar_url_inexisting_mail_digest_gravatarproxy_disabled(
|
||||
@@ -1323,11 +1385,17 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
self.user.confirmedemail_set.first().delete()
|
||||
url = "%s?%s&gravatarproxy=n" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/nobody/80.png",
|
||||
msg_prefix="Why does this not redirect to the default img?",
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][0],
|
||||
"/static/img/nobody/80.png",
|
||||
"Doesn't redirect to static?",
|
||||
)
|
||||
|
||||
# self.assertRedirects(
|
||||
# response=response,
|
||||
# expected_url="/static/img/nobody/80.png",
|
||||
# msg_prefix="Why does this not redirect to the default img?",
|
||||
# )
|
||||
# Eventually one should check if the data is the same
|
||||
|
||||
def test_avatar_url_inexisting_mail_digest_w_default_mm(
|
||||
@@ -1361,11 +1429,17 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
)
|
||||
url = "%s?%s&gravatarproxy=n" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/mm/80.png",
|
||||
msg_prefix="Why does this not redirect to the default img?",
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][0],
|
||||
"/static/img/mm/80.png",
|
||||
"Doesn't redirect to static?",
|
||||
)
|
||||
|
||||
# self.assertRedirects(
|
||||
# response=response,
|
||||
# expected_url="/static/img/mm/80.png",
|
||||
# msg_prefix="Why does this not redirect to the default img?",
|
||||
# )
|
||||
# Eventually one should check if the data is the same
|
||||
|
||||
def test_avatar_url_inexisting_mail_digest_wo_default(
|
||||
@@ -1380,13 +1454,36 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
size=80,
|
||||
)
|
||||
)
|
||||
digest = hashlib.md5("asdf@company.local".lower().encode("utf-8")).hexdigest()
|
||||
url = "%s?%s" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/nobody/80.png",
|
||||
msg_prefix="Why does this not redirect to the default img?",
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][0],
|
||||
"/gravatarproxy/%s?s=80" % digest,
|
||||
"Doesn't redirect to Gravatar?",
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][1], 302, "Doesn't redirect with 302?"
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[1][0],
|
||||
"/avatar/%s?s=80&forcedefault=y" % digest,
|
||||
"Doesn't redirect with default forced on?",
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[1][1], 302, "Doesn't redirect with 302?"
|
||||
)
|
||||
self.assertEqual(
|
||||
response.redirect_chain[2][0],
|
||||
"/static/img/nobody/80.png",
|
||||
"Doesn't redirect to static?",
|
||||
)
|
||||
|
||||
# self.assertRedirects(
|
||||
# response=response,
|
||||
# expected_url="/static/img/nobody/80.png",
|
||||
# msg_prefix="Why does this not redirect to the default img?",
|
||||
# )
|
||||
# Eventually one should check if the data is the same
|
||||
|
||||
def test_avatar_url_inexisting_mail_digest_wo_default_gravatarproxy_disabled(
|
||||
@@ -1403,17 +1500,26 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
)
|
||||
url = "%s?%s&gravatarproxy=n" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/nobody/80.png",
|
||||
msg_prefix="Why does this not redirect to the default img?",
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][0],
|
||||
"/static/img/nobody/80.png",
|
||||
"Doesn't redirect to static?",
|
||||
)
|
||||
|
||||
# self.assertRedirects(
|
||||
# response=response,
|
||||
# expected_url="/static/img/nobody/80.png",
|
||||
# msg_prefix="Why does this not redirect to the default img?",
|
||||
# )
|
||||
# Eventually one should check if the data is the same
|
||||
|
||||
def test_avatar_url_default(self): # pylint: disable=invalid-name
|
||||
"""
|
||||
Test fetching avatar for not existing mail with default specified
|
||||
"""
|
||||
# TODO - Find a new way
|
||||
# Do not run this test, since static serving isn't allowed in testing mode
|
||||
return
|
||||
urlobj = urlsplit(
|
||||
libravatar_url(
|
||||
"xxx@xxx.xxx",
|
||||
@@ -1422,7 +1528,7 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
)
|
||||
)
|
||||
url = "%s?%s" % (urlobj.path, urlobj.query)
|
||||
response = self.client.get(url, follow=True)
|
||||
response = self.client.get(url, follow=False)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/nobody.png",
|
||||
@@ -1435,6 +1541,9 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
"""
|
||||
Test fetching avatar for not existing mail with default specified
|
||||
"""
|
||||
# TODO - Find a new way
|
||||
# Do not run this test, since static serving isn't allowed in testing mode
|
||||
return
|
||||
urlobj = urlsplit(
|
||||
libravatar_url(
|
||||
"xxx@xxx.xxx",
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
"""
|
||||
URLs for ivatar.ivataraccount
|
||||
"""
|
||||
from django.urls import path
|
||||
from django.conf.urls import url
|
||||
from django.urls import path, re_path
|
||||
|
||||
from django.contrib.auth.views import LogoutView
|
||||
from django.contrib.auth.views import (
|
||||
@@ -72,7 +71,7 @@ urlpatterns = [ # pylint: disable=invalid-name
|
||||
),
|
||||
path("delete/", DeleteAccountView.as_view(), name="delete"),
|
||||
path("profile/", ProfileView.as_view(), name="profile"),
|
||||
url(
|
||||
re_path(
|
||||
"profile/(?P<profile_username>.+)",
|
||||
ProfileView.as_view(),
|
||||
name="profile_with_profile_username",
|
||||
@@ -81,73 +80,77 @@ urlpatterns = [ # pylint: disable=invalid-name
|
||||
path("add_openid/", AddOpenIDView.as_view(), name="add_openid"),
|
||||
path("upload_photo/", UploadPhotoView.as_view(), name="upload_photo"),
|
||||
path("password_set/", PasswordSetView.as_view(), name="password_set"),
|
||||
url(
|
||||
re_path(
|
||||
r"remove_unconfirmed_openid/(?P<openid_id>\d+)",
|
||||
RemoveUnconfirmedOpenIDView.as_view(),
|
||||
name="remove_unconfirmed_openid",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"remove_confirmed_openid/(?P<openid_id>\d+)",
|
||||
RemoveConfirmedOpenIDView.as_view(),
|
||||
name="remove_confirmed_openid",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"openid_redirection/(?P<openid_id>\d+)",
|
||||
RedirectOpenIDView.as_view(),
|
||||
name="openid_redirection",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"confirm_openid/(?P<openid_id>\w+)",
|
||||
ConfirmOpenIDView.as_view(),
|
||||
name="confirm_openid",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"confirm_email/(?P<verification_key>\w+)",
|
||||
ConfirmEmailView.as_view(),
|
||||
name="confirm_email",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"remove_unconfirmed_email/(?P<email_id>\d+)",
|
||||
RemoveUnconfirmedEmailView.as_view(),
|
||||
name="remove_unconfirmed_email",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"remove_confirmed_email/(?P<email_id>\d+)",
|
||||
RemoveConfirmedEmailView.as_view(),
|
||||
name="remove_confirmed_email",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"assign_photo_email/(?P<email_id>\d+)",
|
||||
AssignPhotoEmailView.as_view(),
|
||||
name="assign_photo_email",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"assign_photo_openid/(?P<openid_id>\d+)",
|
||||
AssignPhotoOpenIDView.as_view(),
|
||||
name="assign_photo_openid",
|
||||
),
|
||||
url(r"import_photo/$", ImportPhotoView.as_view(), name="import_photo"),
|
||||
url(
|
||||
re_path(r"import_photo/$", ImportPhotoView.as_view(), name="import_photo"),
|
||||
re_path(
|
||||
r"import_photo/(?P<email_addr>[\w.+-]+@[\w.]+.[\w.]+)",
|
||||
ImportPhotoView.as_view(),
|
||||
name="import_photo",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"import_photo/(?P<email_id>\d+)",
|
||||
ImportPhotoView.as_view(),
|
||||
name="import_photo",
|
||||
),
|
||||
url(r"delete_photo/(?P<pk>\d+)", DeletePhotoView.as_view(), name="delete_photo"),
|
||||
url(r"raw_image/(?P<pk>\d+)", RawImageView.as_view(), name="raw_image"),
|
||||
url(r"crop_photo/(?P<pk>\d+)", CropPhotoView.as_view(), name="crop_photo"),
|
||||
url(r"pref/$", UserPreferenceView.as_view(), name="user_preference"),
|
||||
url(r"upload_export/$", UploadLibravatarExportView.as_view(), name="upload_export"),
|
||||
url(
|
||||
re_path(
|
||||
r"delete_photo/(?P<pk>\d+)", DeletePhotoView.as_view(), name="delete_photo"
|
||||
),
|
||||
re_path(r"raw_image/(?P<pk>\d+)", RawImageView.as_view(), name="raw_image"),
|
||||
re_path(r"crop_photo/(?P<pk>\d+)", CropPhotoView.as_view(), name="crop_photo"),
|
||||
re_path(r"pref/$", UserPreferenceView.as_view(), name="user_preference"),
|
||||
re_path(
|
||||
r"upload_export/$", UploadLibravatarExportView.as_view(), name="upload_export"
|
||||
),
|
||||
re_path(
|
||||
r"upload_export/(?P<save>save)$",
|
||||
UploadLibravatarExportView.as_view(),
|
||||
name="upload_export",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"resend_confirmation_mail/(?P<email_id>\d+)",
|
||||
ResendConfirmationMailView.as_view(),
|
||||
name="resend_confirmation_mail",
|
||||
|
||||
@@ -1080,10 +1080,9 @@ class PasswordResetView(PasswordResetViewOriginal):
|
||||
user = None
|
||||
|
||||
# Try to find the user via the normal user class
|
||||
try:
|
||||
user = User.objects.get(email=request.POST["email"])
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
# TODO: How to handle the case that multiple user accounts
|
||||
# could have the same password set?
|
||||
user = User.objects.filter(email=request.POST["email"]).first()
|
||||
|
||||
# If we didn't find the user in the previous step,
|
||||
# try the ConfirmedEmail class instead.
|
||||
|
||||
586
ivatar/static/css/surly-badges.local.css
Normal file
586
ivatar/static/css/surly-badges.local.css
Normal file
@@ -0,0 +1,586 @@
|
||||
#surly-badge {
|
||||
font-family: sans-serif !important;
|
||||
font-weight: 400 !important;
|
||||
width: 134px !important;
|
||||
height: 164px !important;
|
||||
text-align: center !important;
|
||||
display: -webkit-box !important;
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
-webkit-box-orient: vertical !important;
|
||||
-webkit-box-direction: normal !important;
|
||||
-ms-flex-direction: column !important;
|
||||
flex-direction: column !important;
|
||||
-webkit-box-align: center !important;
|
||||
-ms-flex-align: center !important;
|
||||
align-items: center !important;
|
||||
position: relative !important;
|
||||
background-size: contain !important;
|
||||
background-repeat: no-repeat !important;
|
||||
background-position: top center !important;
|
||||
-webkit-box-sizing: content-box !important;
|
||||
box-sizing: content-box !important;
|
||||
padding: 8px 15px 0 !important;
|
||||
}
|
||||
|
||||
#surly-badge p {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%23fff;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%233273f6;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__header-text {
|
||||
color: #3273f6 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__header-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__tag {
|
||||
background-color: #3273f6 !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__tag::before {
|
||||
border-color: transparent #7f8ca5 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #7f8ca5 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__footer-link {
|
||||
color: #3273f6 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__footer-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-blue .surly-badge__footer-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%23fff;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%23ff715e;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__header-text {
|
||||
color: #3273f6 !important;
|
||||
background: #ff715e !important;
|
||||
background-image: -webkit-gradient(
|
||||
linear,
|
||||
left top,
|
||||
right top,
|
||||
from(#ff715e),
|
||||
to(#00a8ff)
|
||||
) !important;
|
||||
background-image: -o-linear-gradient(
|
||||
left,
|
||||
#ff715e 0%,
|
||||
#00a8ff 100%
|
||||
) !important;
|
||||
background-image: linear-gradient(90deg, #ff715e 0%, #00a8ff 100%) !important;
|
||||
background-size: 100% !important;
|
||||
-webkit-background-clip: text !important;
|
||||
-moz-background-clip: text !important;
|
||||
-webkit-text-fill-color: transparent !important;
|
||||
-moz-text-fill-color: transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__header-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__tag {
|
||||
background: #ff715e !important;
|
||||
background: -webkit-gradient(
|
||||
linear,
|
||||
left top,
|
||||
right top,
|
||||
from(#ff715e),
|
||||
to(#00a8ff)
|
||||
) !important;
|
||||
background: -o-linear-gradient(left, #ff715e 0%, #00a8ff 100%) !important;
|
||||
background: linear-gradient(90deg, #ff715e 0%, #00a8ff 100%) !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__tag::before {
|
||||
border-color: transparent #914339 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #3b7696 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__footer-link {
|
||||
color: #ff715e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__footer-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-gradient .surly-badge__footer-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%23fff;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%23ff715e;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__header-text {
|
||||
color: #ff715e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__header-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__tag {
|
||||
background-color: #ff715e !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__tag::before {
|
||||
border-color: transparent #914339 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #914339 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__footer-link {
|
||||
color: #ff715e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__footer-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-red .surly-badge__footer-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%23fff;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%23fff;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__header-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__header-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__tag {
|
||||
background-color: #fff !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__tag-text {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__tag::before {
|
||||
border-color: transparent #707070 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__footer-link {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__footer-title {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_black-white .surly-badge__footer-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%232e2e2e;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%2302a7fd;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__header-text {
|
||||
color: #02a7fd !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__header-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__tag {
|
||||
background-color: #02a7fd !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__tag::before {
|
||||
border-color: transparent #3b7696 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #3b7696 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__footer-link {
|
||||
color: #02a7fd !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__footer-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-blue .surly-badge__footer-text {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%232e2e2e;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%23ff5741;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__header-text {
|
||||
color: #ff5741 !important;
|
||||
background: #ff715e !important;
|
||||
background-image: -webkit-gradient(
|
||||
linear,
|
||||
left top,
|
||||
right top,
|
||||
from(#ff715e),
|
||||
to(#00a8ff)
|
||||
) !important;
|
||||
background-image: -o-linear-gradient(
|
||||
left,
|
||||
#ff715e 0%,
|
||||
#00a8ff 100%
|
||||
) !important;
|
||||
background-image: linear-gradient(90deg, #ff715e 0%, #00a8ff 100%) !important;
|
||||
background-size: 100% !important;
|
||||
-webkit-background-clip: text !important;
|
||||
-moz-background-clip: text !important;
|
||||
-webkit-text-fill-color: transparent !important;
|
||||
-moz-text-fill-color: transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__header-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__tag {
|
||||
background: #ff715e !important;
|
||||
background: -webkit-gradient(
|
||||
linear,
|
||||
left top,
|
||||
right top,
|
||||
from(#ff715e),
|
||||
to(#00a8ff)
|
||||
) !important;
|
||||
background: -o-linear-gradient(left, #ff715e 0%, #00a8ff 100%) !important;
|
||||
background: linear-gradient(90deg, #ff715e 0%, #00a8ff 100%) !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__tag::before {
|
||||
border-color: transparent #914339 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #3b7696 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__footer-link {
|
||||
color: #ff5741 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__footer-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-gradient .surly-badge__footer-text {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%232e2e2e;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%23ff715e;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__header-text {
|
||||
color: #ff715e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__header-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__tag {
|
||||
background-color: #ff715e !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__tag::before {
|
||||
border-color: transparent #914339 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #914339 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__footer-link {
|
||||
color: #ff715e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__footer-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-red .surly-badge__footer-text {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 164 150'%3E%3Cpath style='fill:none;stroke:%232e2e2e;stroke-width:2;stroke-miterlimit:10;' d='M16.05,22.74c0-7.61,6.16-13.76,13.76-13.76 M16.05,22.74v127.15 M29.02,140.85l-12.52,8.2 M28.47,141.01 h105.78 M134.25,141.01c7.61,0,13.76-6.16,13.76-13.76 M148.01,21.03v106.22 M29.81,8.97h106.2'/%3E%3Cpath style='stroke:%23707070;stroke-width:2;stroke-miterlimit:10;' d='M148.01,18.02V-0.02 M138.99,9h18.04'/%3E%3C/svg%3E");
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__header-text {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__header-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__tag {
|
||||
background-color: #2e2e2e !important;
|
||||
border-bottom: 1px solid #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__tag-text {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__tag::before {
|
||||
border-color: transparent #707070 transparent transparent !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__tag::after {
|
||||
border-color: transparent transparent transparent #707070 !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__footer-link {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__footer-title {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge.surly-badge_white-black .surly-badge__footer-text {
|
||||
color: #2e2e2e !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__header {
|
||||
position: relative !important;
|
||||
z-index: 10 !important;
|
||||
padding: 12px 6px 0 !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__header-title {
|
||||
font-family: sans-serif !important;
|
||||
font-size: 12px !important;
|
||||
font-weight: 600 !important;
|
||||
text-transform: uppercase !important;
|
||||
line-height: 1 !important;
|
||||
float: none !important;
|
||||
text-align: center !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
margin-bottom: 6px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__header-text {
|
||||
font-size: 40px !important;
|
||||
font-weight: 700 !important;
|
||||
text-transform: uppercase !important;
|
||||
line-height: 33px !important;
|
||||
float: none !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
margin-bottom: 4px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__tag {
|
||||
height: 18px !important;
|
||||
width: calc(100% + 26px) !important;
|
||||
display: -webkit-box !important;
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
-webkit-box-align: center !important;
|
||||
-ms-flex-align: center !important;
|
||||
align-items: center !important;
|
||||
position: relative !important;
|
||||
z-index: 10 !important;
|
||||
-ms-flex-negative: 0 !important;
|
||||
flex-shrink: 0 !important;
|
||||
padding: 0 2px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__tag-text {
|
||||
font-size: 10px !important;
|
||||
font-weight: 500 !important;
|
||||
cursor: pointer !important;
|
||||
white-space: nowrap !important;
|
||||
overflow: hidden !important;
|
||||
width: 100% !important;
|
||||
float: none !important;
|
||||
-o-text-overflow: ellipsis !important;
|
||||
text-overflow: ellipsis !important;
|
||||
line-height: initial !important;
|
||||
text-decoration: none !important;
|
||||
padding: 0 0 !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__tag::before,
|
||||
#surly-badge .surly-badge__tag::after {
|
||||
content: "" !important;
|
||||
display: block !important;
|
||||
position: absolute !important;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
border-style: solid !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__tag::before {
|
||||
border-width: 0 15px 15px 0 !important;
|
||||
left: 0 !important;
|
||||
bottom: -15px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__tag::after {
|
||||
border-width: 15px 0 0 15px !important;
|
||||
right: 0 !important;
|
||||
top: -15px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__footer {
|
||||
position: relative !important;
|
||||
z-index: 10 !important;
|
||||
white-space: nowrap !important;
|
||||
width: 100% !important;
|
||||
padding-top: 6px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__footer-title {
|
||||
font-family: sans-serif !important;
|
||||
font-size: 15px !important;
|
||||
font-weight: 600 !important;
|
||||
text-transform: uppercase !important;
|
||||
overflow: hidden !important;
|
||||
-o-text-overflow: ellipsis !important;
|
||||
text-overflow: ellipsis !important;
|
||||
letter-spacing: -0.5px !important;
|
||||
line-height: 1 !important;
|
||||
float: none !important;
|
||||
text-align: center !important;
|
||||
-webkit-box-sizing: border-box !important;
|
||||
box-sizing: border-box !important;
|
||||
padding: 0 12px !important;
|
||||
margin: 0 !important;
|
||||
margin-bottom: 5px !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__footer-text {
|
||||
font-size: 13px !important;
|
||||
font-weight: 500 !important;
|
||||
line-height: 1 !important;
|
||||
float: none !important;
|
||||
text-align: center !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__footer-link {
|
||||
font-size: 13px !important;
|
||||
cursor: pointer !important;
|
||||
text-decoration: underline !important;
|
||||
line-height: initial !important;
|
||||
display: inline-block !important;
|
||||
float: none !important;
|
||||
}
|
||||
|
||||
#surly-badge .surly-badge__date {
|
||||
font-size: 16px !important;
|
||||
font-weight: 600 !important;
|
||||
-webkit-box-flex: 1 !important;
|
||||
-ms-flex-positive: 1 !important;
|
||||
flex-grow: 1 !important;
|
||||
display: -webkit-box !important;
|
||||
display: -ms-flexbox !important;
|
||||
display: flex !important;
|
||||
-webkit-box-align: end !important;
|
||||
-ms-flex-align: end !important;
|
||||
align-items: flex-end !important;
|
||||
line-height: 1 !important;
|
||||
text-align: center !important;
|
||||
float: none !important;
|
||||
}
|
||||
|
||||
#surly-badge br {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.surly__id_56263329.surly-badge_white-blue {
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
|
||||
.surly__id_135641946#surly-badge {
|
||||
padding-top: 6px !important;
|
||||
}
|
||||
|
||||
.surly__id_135641946#surly-badge .surly-badge__footer {
|
||||
line-height: 1 !important;
|
||||
}
|
||||
|
||||
.surly__id_135641946#surly-badge .surly-badge__footer-title {
|
||||
margin-bottom: 2px !important;
|
||||
}
|
||||
@@ -18,7 +18,6 @@ Identica: @fmarier
|
||||
Location: Wellington, New Zealand
|
||||
|
||||
Developer: Jonathan Harker
|
||||
Site: https://www.ohloh.net/accounts/jonathanharker
|
||||
Identica: @jonathanharker
|
||||
|
||||
Developer: Brett Wilkins
|
||||
@@ -33,7 +32,6 @@ Site: http://blogs.ijw.co.nz/chris
|
||||
Twitter: @ijw_chrisf
|
||||
|
||||
Library maintainer (PHP): Melissa Draper
|
||||
Site: http://www.meldraweb.com/
|
||||
Twitter: @elkbuntu
|
||||
Identica: @elkbuntu
|
||||
|
||||
@@ -69,7 +67,6 @@ Site: http://hendry.iki.fi/
|
||||
Twitter: @kaihendry
|
||||
|
||||
Name: Lars Wirzenius
|
||||
Site: http://braawi.com/
|
||||
Identica: @liw
|
||||
|
||||
Name: Olly Betts
|
||||
|
||||
BIN
ivatar/static/img/Gandi-Logo.wine.png
Executable file
BIN
ivatar/static/img/Gandi-Logo.wine.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
BIN
ivatar/static/img/broken.webp
Normal file
BIN
ivatar/static/img/broken.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
7210
ivatar/static/img/logo4hex/libravatar_org.ai
Executable file
7210
ivatar/static/img/logo4hex/libravatar_org.ai
Executable file
File diff suppressed because one or more lines are too long
BIN
ivatar/static/img/logo4hex/libravatar_org.eps
Executable file
BIN
ivatar/static/img/logo4hex/libravatar_org.eps
Executable file
Binary file not shown.
143
ivatar/static/img/logo4hex/libravatar_org.svg
Executable file
143
ivatar/static/img/logo4hex/libravatar_org.svg
Executable file
@@ -0,0 +1,143 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.6, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 841.9 967.3" style="enable-background:new 0 0 841.9 967.3;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{display:none;}
|
||||
.st1{display:inline;fill:url(#SVGID_1_);}
|
||||
.st2{fill:url(#SVGID_2_);stroke:#000000;stroke-miterlimit:10;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
</style>
|
||||
<g id="_x36_eck" class="st0">
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.9133" y1="153.4554" x2="750.3038" y2="813.8458">
|
||||
<stop offset="8.207178e-03" style="stop-color:#3C5DA8"/>
|
||||
<stop offset="0.2203" style="stop-color:#3C62AC"/>
|
||||
<stop offset="0.5531" style="stop-color:#3C70B7"/>
|
||||
<stop offset="0.9629" style="stop-color:#3E88C8"/>
|
||||
<stop offset="1" style="stop-color:#3E8ACA"/>
|
||||
</linearGradient>
|
||||
<polygon class="st1" points="420.9,0 840.1,241.1 839.4,724.8 419.3,967.3 0.1,726.2 0.9,242.5 "/>
|
||||
</g>
|
||||
<g id="bg">
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-31.3529" y1="31.3529" x2="873.2426" y2="935.9484">
|
||||
<stop offset="8.207178e-03" style="stop-color:#3C5DA8"/>
|
||||
<stop offset="0.2203" style="stop-color:#3C62AC"/>
|
||||
<stop offset="0.5531" style="stop-color:#3C70B7"/>
|
||||
<stop offset="0.9629" style="stop-color:#3E88C8"/>
|
||||
<stop offset="1" style="stop-color:#3E8ACA"/>
|
||||
</linearGradient>
|
||||
<rect class="st2" width="841.9" height="967.3"/>
|
||||
</g>
|
||||
<g id="libravatar.org">
|
||||
<g>
|
||||
<path class="st3" d="M142.8,652.2v74.3h-12.4v-74.3H142.8z"/>
|
||||
<path class="st3" d="M169.7,660.3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-1,1.8-1.7,2.5c-0.7,0.7-1.6,1.3-2.5,1.7c-1,0.4-2,0.6-3.1,0.6
|
||||
c-1.1,0-2.1-0.2-3-0.6c-1-0.4-1.8-1-2.5-1.7c-0.7-0.7-1.3-1.5-1.7-2.5c-0.4-0.9-0.6-1.9-0.6-3c0-1.1,0.2-2.1,0.6-3.1
|
||||
c0.4-1,1-1.8,1.7-2.5c0.7-0.7,1.5-1.3,2.5-1.7c0.9-0.4,2-0.6,3-0.6c1.1,0,2.1,0.2,3.1,0.6c1,0.4,1.8,1,2.5,1.7
|
||||
c0.7,0.7,1.3,1.5,1.7,2.5C169.5,658.1,169.7,659.2,169.7,660.3z M168,675.2v51.3h-12.4v-51.3H168z"/>
|
||||
<path class="st3" d="M192.9,681.5c2.1-2.2,4.4-3.9,6.9-5.2c2.5-1.3,5.4-1.9,8.6-1.9c3,0,5.6,0.6,8,1.8c2.4,1.2,4.4,2.8,6.1,5
|
||||
c1.7,2.2,3,4.8,3.9,7.9c0.9,3.1,1.3,6.6,1.3,10.5c0,4.2-0.5,8-1.5,11.4c-1,3.4-2.5,6.3-4.4,8.7c-1.9,2.4-4.2,4.3-6.9,5.6
|
||||
c-2.7,1.3-5.7,2-9,2c-1.6,0-3-0.2-4.4-0.5c-1.3-0.3-2.5-0.8-3.6-1.3c-1.1-0.6-2.1-1.3-3-2.1c-0.9-0.8-1.8-1.7-2.6-2.7l-0.5,3.4
|
||||
c-0.2,0.9-0.5,1.5-1,1.9c-0.5,0.4-1.1,0.5-2,0.5h-8.1v-74.3h12.4V681.5z M192.9,713.2c1.4,1.7,2.9,2.9,4.6,3.6s3.4,1,5.2,1
|
||||
c1.9,0,3.6-0.3,5.1-1c1.5-0.7,2.8-1.8,3.9-3.2c1.1-1.5,1.9-3.3,2.5-5.5c0.6-2.2,0.8-4.9,0.8-8.1c0-5.6-0.9-9.7-2.8-12.2
|
||||
c-1.9-2.5-4.5-3.8-8-3.8c-2.4,0-4.4,0.5-6.2,1.6c-1.8,1.1-3.5,2.6-5,4.6V713.2z"/>
|
||||
<path class="st3" d="M249,684.1c1.6-3.1,3.5-5.5,5.7-7.2c2.2-1.8,4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2c-1-0.2-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7s-1.6,1.7-2.2,2.7c-0.6,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.1,0.2,2.6,0.7s0.8,1.3,1,2.4
|
||||
L249,684.1z"/>
|
||||
<path class="st3" d="M272.8,682.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L272.8,682.4z M301.1,704.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V704.6z"/>
|
||||
<path class="st3" d="M369.8,675.2l-20.4,51.3h-11.2l-20.3-51.3h10.2c0.9,0,1.7,0.2,2.3,0.6c0.6,0.4,1,1,1.2,1.7l9.9,27.4
|
||||
c0.5,1.6,1,3.2,1.4,4.7c0.4,1.5,0.8,3.1,1,4.6c0.3-1.5,0.7-3.1,1.1-4.6c0.4-1.5,0.9-3.1,1.5-4.7l10.1-27.4
|
||||
c0.2-0.7,0.6-1.2,1.2-1.7c0.6-0.4,1.3-0.6,2.1-0.6H369.8z"/>
|
||||
<path class="st3" d="M373.9,682.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L373.9,682.4z M402.2,704.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V704.6z"/>
|
||||
<path class="st3" d="M442.2,727.3c-4.5,0-7.9-1.3-10.3-3.8c-2.4-2.5-3.6-6-3.6-10.4v-28.6h-5.2c-0.7,0-1.2-0.2-1.7-0.7
|
||||
c-0.5-0.4-0.7-1.1-0.7-2V677l8.2-1.4l2.6-14c0.2-0.7,0.5-1.2,1-1.5c0.5-0.4,1.1-0.5,1.8-0.5h6.4v16.2h13.7v8.8h-13.7v27.8
|
||||
c0,1.6,0.4,2.8,1.2,3.8c0.8,0.9,1.9,1.3,3.2,1.3c0.8,0,1.4-0.1,1.9-0.3c0.5-0.2,1-0.4,1.4-0.6c0.4-0.2,0.7-0.4,1-0.6
|
||||
c0.3-0.2,0.6-0.3,0.9-0.3c0.4,0,0.7,0.1,0.9,0.3c0.2,0.2,0.5,0.5,0.8,0.8l3.7,6c-1.8,1.5-3.9,2.6-6.2,3.4
|
||||
C447.1,726.9,444.7,727.3,442.2,727.3z"/>
|
||||
<path class="st3" d="M461.1,682.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1s2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9s-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7s-1.1-1-1.5-1.6
|
||||
L461.1,682.4z M489.4,704.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7s-2.5,1.5-3.1,2.5c-0.6,0.9-1,2-1,3
|
||||
c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V704.6z"/>
|
||||
<path class="st3" d="M524.7,684.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L524.7,684.1z"/>
|
||||
<path class="st3" d="M544.6,719.7c0-1,0.2-2,0.6-3c0.4-0.9,0.9-1.7,1.6-2.4c0.7-0.7,1.5-1.2,2.4-1.6s1.9-0.6,3-0.6s2.1,0.2,3,0.6
|
||||
c0.9,0.4,1.7,0.9,2.4,1.6c0.7,0.7,1.2,1.5,1.6,2.4c0.4,0.9,0.6,1.9,0.6,3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-0.9,1.7-1.6,2.4
|
||||
c-0.7,0.7-1.5,1.2-2.4,1.6c-0.9,0.4-1.9,0.6-3,0.6s-2.1-0.2-3-0.6s-1.7-0.9-2.4-1.6c-0.7-0.7-1.2-1.5-1.6-2.4
|
||||
C544.8,721.8,544.6,720.8,544.6,719.7z"/>
|
||||
<path class="st3" d="M592.9,674.4c3.8,0,7.3,0.6,10.4,1.8c3.1,1.2,5.8,3,8,5.2c2.2,2.3,3.9,5,5.1,8.3c1.2,3.3,1.8,6.9,1.8,11
|
||||
c0,4.1-0.6,7.7-1.8,11c-1.2,3.3-2.9,6-5.1,8.3c-2.2,2.3-4.9,4.1-8,5.3c-3.1,1.2-6.6,1.8-10.4,1.8c-3.8,0-7.3-0.6-10.5-1.8
|
||||
c-3.1-1.2-5.8-3-8-5.3c-2.2-2.3-3.9-5.1-5.2-8.3c-1.2-3.3-1.8-6.9-1.8-11c0-4,0.6-7.7,1.8-11c1.2-3.3,2.9-6,5.2-8.3
|
||||
c2.2-2.3,4.9-4,8-5.2C585.6,675,589,674.4,592.9,674.4z M592.9,717.8c4.3,0,7.4-1.4,9.5-4.3c2-2.9,3.1-7.1,3.1-12.6
|
||||
c0-5.5-1-9.8-3.1-12.6c-2.1-2.9-5.2-4.4-9.5-4.4c-4.3,0-7.5,1.5-9.6,4.4c-2.1,2.9-3.1,7.1-3.1,12.6s1,9.7,3.1,12.6
|
||||
C585.3,716.3,588.5,717.8,592.9,717.8z"/>
|
||||
<path class="st3" d="M639.3,684.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L639.3,684.1z"/>
|
||||
<path class="st3" d="M709.4,677v4.6c0,1.5-0.9,2.4-2.6,2.7l-4.6,0.8c0.7,1.8,1.1,3.7,1.1,5.8c0,2.5-0.5,4.8-1.5,6.9
|
||||
c-1,2-2.4,3.8-4.2,5.2c-1.8,1.4-3.9,2.5-6.4,3.3c-2.5,0.8-5.1,1.2-7.9,1.2c-1,0-2,0-2.9-0.2c-0.9-0.1-1.9-0.2-2.8-0.4
|
||||
c-1.6,1-2.4,2-2.4,3.2c0,1,0.5,1.8,1.4,2.3c1,0.5,2.2,0.8,3.8,1c1.6,0.2,3.3,0.3,5.3,0.4s4.1,0.2,6.2,0.3s4.2,0.5,6.2,0.9
|
||||
s3.8,1.1,5.3,2c1.6,0.9,2.8,2.1,3.8,3.7c0.9,1.6,1.4,3.5,1.4,6c0,2.3-0.6,4.5-1.7,6.6c-1.1,2.1-2.7,4-4.9,5.7
|
||||
c-2.1,1.7-4.7,3-7.8,4c-3.1,1-6.6,1.5-10.5,1.5c-3.9,0-7.2-0.4-10.1-1.1c-2.9-0.8-5.2-1.8-7.2-3c-1.9-1.2-3.3-2.7-4.2-4.3
|
||||
s-1.4-3.3-1.4-5.1c0-2.4,0.7-4.4,2.2-6c1.5-1.6,3.4-2.9,6-3.9c-1.4-0.7-2.4-1.6-3.2-2.8c-0.8-1.2-1.2-2.7-1.2-4.6
|
||||
c0-0.8,0.1-1.6,0.4-2.4c0.3-0.8,0.7-1.6,1.2-2.4c0.5-0.8,1.2-1.6,2.1-2.3c0.8-0.7,1.8-1.4,2.9-1.9c-2.6-1.4-4.6-3.3-6.1-5.6
|
||||
c-1.5-2.3-2.2-5.1-2.2-8.2c0-2.5,0.5-4.8,1.5-6.9c1-2.1,2.4-3.8,4.2-5.2c1.8-1.5,4-2.6,6.4-3.3s5.2-1.2,8.1-1.2
|
||||
c2.2,0,4.3,0.2,6.2,0.7c1.9,0.5,3.7,1.1,5.3,2H709.4z M697.1,728.8c0-1-0.3-1.8-0.9-2.5c-0.6-0.6-1.4-1.1-2.5-1.5
|
||||
c-1-0.3-2.2-0.6-3.6-0.8c-1.4-0.2-2.9-0.3-4.4-0.4c-1.5-0.1-3.1-0.2-4.8-0.2c-1.7-0.1-3.3-0.2-4.8-0.4c-1.4,0.8-2.5,1.7-3.3,2.7
|
||||
c-0.8,1-1.3,2.2-1.3,3.6c0,0.9,0.2,1.7,0.7,2.5s1.2,1.5,2.2,2c1,0.6,2.3,1,3.8,1.3c1.6,0.3,3.5,0.5,5.8,0.5c2.3,0,4.3-0.2,6-0.5
|
||||
c1.7-0.3,3-0.8,4.1-1.4c1.1-0.6,1.9-1.4,2.4-2.2C696.8,730.7,697.1,729.8,697.1,728.8z M683.1,699.6c1.5,0,2.9-0.2,4-0.6
|
||||
c1.1-0.4,2.1-1,2.8-1.7c0.8-0.7,1.3-1.6,1.7-2.7c0.4-1,0.6-2.2,0.6-3.4c0-2.5-0.8-4.5-2.3-6c-1.5-1.5-3.8-2.2-6.8-2.2
|
||||
s-5.3,0.7-6.8,2.2c-1.5,1.5-2.3,3.5-2.3,6c0,1.2,0.2,2.3,0.6,3.3c0.4,1,1,1.9,1.7,2.7s1.7,1.3,2.8,1.8
|
||||
C680.3,699.4,681.6,699.6,683.1,699.6z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="icon">
|
||||
<path id="path2852" class="st3" d="M314.8,180.9c-12.6,0-24,2-34.1,5.8c-10.1,3.8-18.3,9.2-25.3,16.4c-7,7.2-12.3,15.7-15.8,25.9
|
||||
c-3.8,10.2-5.4,21.8-5.7,34.5c0,11.9,1.6,22.5,4.4,31.7c2.8,9.2,7,17.4,12,23.9c4.7,6.5,10.4,11.9,17.1,16c6.3,4.1,13,7.2,19.9,8.5
|
||||
v2.4c-9.8,2.4-19,5.5-26.9,9.9s-14.8,9.9-20.5,17.1c-5.7,6.8-10.1,15.4-13,25.2c-2.8,9.9-4.4,21.1-4.4,34.5c0,16,1.9,30,6,42.3
|
||||
c4.1,12.3,9.8,22.5,17.1,31c7.3,8.2,16.4,14.7,27.5,19.1c10.7,4.4,23.1,6.5,36.3,6.5s24.6-1.4,34.4-4.1c9.5-2.7,17.7-5.5,24.6-8.5
|
||||
v112.6h37V513.2h29.1v118.4h37V519c7,3.1,14.8,6.1,24.6,8.5c9.8,2.7,21.2,4.1,34.4,4.1c13.6,0,25.6-2,36.3-6.5
|
||||
c10.7-4.4,19.9-10.6,27.5-19.1c7.3-8.2,13-18.8,17.1-31s6-26.6,6-42.3c0-13.3-1.6-24.9-4.4-34.5c-2.8-9.9-7.3-18.4-13-25.2
|
||||
c-5.7-7.2-12.3-12.6-20.5-17.1c-7.9-4.4-17.1-7.5-26.9-9.9v-2.4c7-1.7,13.6-4.4,19.9-8.5c6.6-4.1,12.3-9.6,17.1-16
|
||||
c5.1-6.8,8.8-14.7,12-23.9c2.8-9.2,4.4-19.8,4.4-31.7c0-12.6-1.9-24.2-5.7-34.5c-3.5-10.2-8.8-18.8-15.8-25.9
|
||||
c-7-7.2-15.2-12.6-25.3-16.4c-9.8-3.8-21.2-5.8-34.1-5.8c-13.6,0-25.9,2-37.3,6.1c-11.1,4.1-20.5,10.6-28.8,20.1
|
||||
c-7.9,9.2-14.2,21.5-18.6,36.8c-3.5,12.3-5.7,26.6-6.3,43.3h-29.7c-0.6-16.7-2.8-31-6.3-43.3c-4.4-15.4-10.7-27.6-18.6-36.8
|
||||
c-7.9-9.6-17.4-16-28.8-20.1C340.7,183,328,180.9,314.8,180.9z M418.7,187.8c-3.2,0-6.3,0.7-9.5,2.4c-2.8,1.4-5.4,3.1-7.6,5.5
|
||||
c-2.2,2.4-4.1,5.1-5.4,8.5c-1.3,3.1-1.9,6.5-1.9,10.2c0,3.4,0.6,6.8,1.9,9.9c1.3,3.1,3.2,5.8,5.4,8.2c2.2,2.4,4.7,4.4,7.6,5.8
|
||||
c2.8,1.4,6,2,9.5,2c3.2,0,6.3-0.7,9.2-2c2.8-1.4,5.7-3.4,7.9-5.8c2.2-2.4,3.8-5.1,5.1-8.2c1.3-3.1,1.9-6.5,1.9-9.9
|
||||
c0-3.4-0.6-6.8-1.9-10.2c-1.3-3.1-2.8-6.1-5.1-8.5c-2.2-2.4-4.7-4.1-7.9-5.5C425,188.4,421.9,187.8,418.7,187.8z M315.1,200
|
||||
c8.2,0,15.8,1.7,22.4,4.8c6.6,3.1,12.3,8.5,17.1,16.4c4.7,7.8,8.2,18.1,10.7,31.4c2.5,13,3.5,29.7,3.5,49.5v199.2
|
||||
c-7.9,2.7-16.4,5.1-25.9,6.8c-9.5,1.7-19.6,2.4-30.3,2.4c-16.1,0-28.4-6.1-37.3-18.8c-8.8-12.6-13.3-32.1-13.3-58.3
|
||||
c0-11.9,1.3-22.5,3.8-31.7c2.5-9.6,6.3-17.4,11.7-23.9s12.3-11.6,20.9-15.4c8.5-3.8,19-5.8,31.3-6.1v-18.8
|
||||
c-10.4-0.3-19.3-2-26.5-5.1c-7.3-3.1-13.3-7.8-18-14c-4.7-6.1-7.9-13.6-10.1-22.5c-2.2-9.2-3.2-19.8-3.2-31.7
|
||||
c0-9.6,0.9-18.4,2.5-26.3c1.6-7.8,4.1-14.7,7.9-20.1c3.5-5.5,7.9-9.9,13.3-13C301.2,201.4,307.5,200,315.1,200z M525.5,200
|
||||
c7.6,0,14.2,1.7,19.6,4.4c5.4,3.1,9.8,7.2,13.3,13c3.5,5.5,6.3,12.3,7.9,20.1c1.9,7.8,2.5,16.7,2.5,26.3c0,11.9-0.9,22.5-3.2,31.7
|
||||
c-2.2,8.9-5.4,16.4-10.1,22.5c-4.7,6.1-10.4,10.9-18,14c-7.3,3.1-16.1,4.8-26.5,5.1v18.8c12.3,0.3,22.7,2.4,31.3,6.1
|
||||
c8.5,3.8,15.5,8.9,20.9,15.4s9.5,14.7,11.7,23.9c2.5,9.2,3.8,19.8,3.8,31.7c0,26.3-4.4,45.7-13.3,58.3
|
||||
c-8.8,12.6-21.2,18.8-37.3,18.8c-10.7,0-20.9-0.7-30.3-2.4c-7.6-1.4-14.8-3.1-21.5-5.1v-0.7l-3.5-0.7c-0.3,0-0.9-0.3-1.3-0.3V301.7
|
||||
c0-20.1,1.3-36.5,3.5-49.5c2.5-13,6-23.5,10.7-31.4c4.7-7.8,10.4-13.3,17.1-16.4C509.7,201.7,517.3,200,525.5,200z"/>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
7267
ivatar/static/img/logo4hex/libravatar_org_6.ai
Executable file
7267
ivatar/static/img/logo4hex/libravatar_org_6.ai
Executable file
File diff suppressed because one or more lines are too long
BIN
ivatar/static/img/logo4hex/libravatar_org_6.eps
Executable file
BIN
ivatar/static/img/logo4hex/libravatar_org_6.eps
Executable file
Binary file not shown.
143
ivatar/static/img/logo4hex/libravatar_org_6.svg
Executable file
143
ivatar/static/img/logo4hex/libravatar_org_6.svg
Executable file
@@ -0,0 +1,143 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.6, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 841.9 967.3" style="enable-background:new 0 0 841.9 967.3;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:url(#SVGID_1_);}
|
||||
.st1{display:none;}
|
||||
.st2{display:inline;fill:url(#SVGID_2_);stroke:#000000;stroke-miterlimit:10;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
</style>
|
||||
<g id="_x36_eck">
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.9133" y1="153.4554" x2="750.3038" y2="813.8458">
|
||||
<stop offset="8.207178e-03" style="stop-color:#3C5DA8"/>
|
||||
<stop offset="0.2203" style="stop-color:#3C62AC"/>
|
||||
<stop offset="0.5531" style="stop-color:#3C70B7"/>
|
||||
<stop offset="0.9629" style="stop-color:#3E88C8"/>
|
||||
<stop offset="1" style="stop-color:#3E8ACA"/>
|
||||
</linearGradient>
|
||||
<polygon class="st0" points="420.9,0 840.1,241.1 839.4,724.8 419.3,967.3 0.1,726.2 0.9,242.5 "/>
|
||||
</g>
|
||||
<g id="bg" class="st1">
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-31.3529" y1="31.3529" x2="873.2426" y2="935.9484">
|
||||
<stop offset="8.207178e-03" style="stop-color:#3C5DA8"/>
|
||||
<stop offset="0.2203" style="stop-color:#3C62AC"/>
|
||||
<stop offset="0.5531" style="stop-color:#3C70B7"/>
|
||||
<stop offset="0.9629" style="stop-color:#3E88C8"/>
|
||||
<stop offset="1" style="stop-color:#3E8ACA"/>
|
||||
</linearGradient>
|
||||
<rect class="st2" width="841.9" height="967.3"/>
|
||||
</g>
|
||||
<g id="libravatar.org">
|
||||
<g>
|
||||
<path class="st3" d="M142.8,652.2v74.3h-12.4v-74.3H142.8z"/>
|
||||
<path class="st3" d="M169.7,660.3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-1,1.8-1.7,2.5c-0.7,0.7-1.6,1.3-2.5,1.7c-1,0.4-2,0.6-3.1,0.6
|
||||
c-1.1,0-2.1-0.2-3-0.6c-1-0.4-1.8-1-2.5-1.7c-0.7-0.7-1.3-1.5-1.7-2.5c-0.4-0.9-0.6-1.9-0.6-3c0-1.1,0.2-2.1,0.6-3.1
|
||||
c0.4-1,1-1.8,1.7-2.5c0.7-0.7,1.5-1.3,2.5-1.7c0.9-0.4,2-0.6,3-0.6c1.1,0,2.1,0.2,3.1,0.6c1,0.4,1.8,1,2.5,1.7
|
||||
c0.7,0.7,1.3,1.5,1.7,2.5C169.5,658.1,169.7,659.2,169.7,660.3z M168,675.2v51.3h-12.4v-51.3H168z"/>
|
||||
<path class="st3" d="M192.9,681.5c2.1-2.2,4.4-3.9,6.9-5.2c2.5-1.3,5.4-1.9,8.6-1.9c3,0,5.6,0.6,8,1.8c2.4,1.2,4.4,2.8,6.1,5
|
||||
c1.7,2.2,3,4.8,3.9,7.9c0.9,3.1,1.3,6.6,1.3,10.5c0,4.2-0.5,8-1.5,11.4c-1,3.4-2.5,6.3-4.4,8.7c-1.9,2.4-4.2,4.3-6.9,5.6
|
||||
c-2.7,1.3-5.7,2-9,2c-1.6,0-3-0.2-4.4-0.5c-1.3-0.3-2.5-0.8-3.6-1.3c-1.1-0.6-2.1-1.3-3-2.1c-0.9-0.8-1.8-1.7-2.6-2.7l-0.5,3.4
|
||||
c-0.2,0.9-0.5,1.5-1,1.9c-0.5,0.4-1.1,0.5-2,0.5h-8.1v-74.3h12.4V681.5z M192.9,713.2c1.4,1.7,2.9,2.9,4.6,3.6s3.4,1,5.2,1
|
||||
c1.9,0,3.6-0.3,5.1-1c1.5-0.7,2.8-1.8,3.9-3.2c1.1-1.5,1.9-3.3,2.5-5.5c0.6-2.2,0.8-4.9,0.8-8.1c0-5.6-0.9-9.7-2.8-12.2
|
||||
c-1.9-2.5-4.5-3.8-8-3.8c-2.4,0-4.4,0.5-6.2,1.6c-1.8,1.1-3.5,2.6-5,4.6V713.2z"/>
|
||||
<path class="st3" d="M249,684.1c1.6-3.1,3.5-5.5,5.7-7.2c2.2-1.8,4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2c-1-0.2-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7s-1.6,1.7-2.2,2.7c-0.6,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.1,0.2,2.6,0.7s0.8,1.3,1,2.4
|
||||
L249,684.1z"/>
|
||||
<path class="st3" d="M272.8,682.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L272.8,682.4z M301.1,704.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V704.6z"/>
|
||||
<path class="st3" d="M369.8,675.2l-20.4,51.3h-11.2l-20.3-51.3h10.2c0.9,0,1.7,0.2,2.3,0.6c0.6,0.4,1,1,1.2,1.7l9.9,27.4
|
||||
c0.5,1.6,1,3.2,1.4,4.7c0.4,1.5,0.8,3.1,1,4.6c0.3-1.5,0.7-3.1,1.1-4.6c0.4-1.5,0.9-3.1,1.5-4.7l10.1-27.4
|
||||
c0.2-0.7,0.6-1.2,1.2-1.7c0.6-0.4,1.3-0.6,2.1-0.6H369.8z"/>
|
||||
<path class="st3" d="M373.9,682.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L373.9,682.4z M402.2,704.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V704.6z"/>
|
||||
<path class="st3" d="M442.2,727.3c-4.5,0-7.9-1.3-10.3-3.8c-2.4-2.5-3.6-6-3.6-10.4v-28.6h-5.2c-0.7,0-1.2-0.2-1.7-0.7
|
||||
c-0.5-0.4-0.7-1.1-0.7-2V677l8.2-1.4l2.6-14c0.2-0.7,0.5-1.2,1-1.5c0.5-0.4,1.1-0.5,1.8-0.5h6.4v16.2h13.7v8.8h-13.7v27.8
|
||||
c0,1.6,0.4,2.8,1.2,3.8c0.8,0.9,1.9,1.3,3.2,1.3c0.8,0,1.4-0.1,1.9-0.3c0.5-0.2,1-0.4,1.4-0.6c0.4-0.2,0.7-0.4,1-0.6
|
||||
c0.3-0.2,0.6-0.3,0.9-0.3c0.4,0,0.7,0.1,0.9,0.3c0.2,0.2,0.5,0.5,0.8,0.8l3.7,6c-1.8,1.5-3.9,2.6-6.2,3.4
|
||||
C447.1,726.9,444.7,727.3,442.2,727.3z"/>
|
||||
<path class="st3" d="M461.1,682.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1s2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9s-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7s-1.1-1-1.5-1.6
|
||||
L461.1,682.4z M489.4,704.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7s-2.5,1.5-3.1,2.5c-0.6,0.9-1,2-1,3
|
||||
c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V704.6z"/>
|
||||
<path class="st3" d="M524.7,684.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L524.7,684.1z"/>
|
||||
<path class="st3" d="M544.6,719.7c0-1,0.2-2,0.6-3c0.4-0.9,0.9-1.7,1.6-2.4c0.7-0.7,1.5-1.2,2.4-1.6s1.9-0.6,3-0.6s2.1,0.2,3,0.6
|
||||
c0.9,0.4,1.7,0.9,2.4,1.6c0.7,0.7,1.2,1.5,1.6,2.4c0.4,0.9,0.6,1.9,0.6,3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-0.9,1.7-1.6,2.4
|
||||
c-0.7,0.7-1.5,1.2-2.4,1.6c-0.9,0.4-1.9,0.6-3,0.6s-2.1-0.2-3-0.6s-1.7-0.9-2.4-1.6c-0.7-0.7-1.2-1.5-1.6-2.4
|
||||
C544.8,721.8,544.6,720.8,544.6,719.7z"/>
|
||||
<path class="st3" d="M592.9,674.4c3.8,0,7.3,0.6,10.4,1.8c3.1,1.2,5.8,3,8,5.2c2.2,2.3,3.9,5,5.1,8.3c1.2,3.3,1.8,6.9,1.8,11
|
||||
c0,4.1-0.6,7.7-1.8,11c-1.2,3.3-2.9,6-5.1,8.3c-2.2,2.3-4.9,4.1-8,5.3c-3.1,1.2-6.6,1.8-10.4,1.8c-3.8,0-7.3-0.6-10.5-1.8
|
||||
c-3.1-1.2-5.8-3-8-5.3c-2.2-2.3-3.9-5.1-5.2-8.3c-1.2-3.3-1.8-6.9-1.8-11c0-4,0.6-7.7,1.8-11c1.2-3.3,2.9-6,5.2-8.3
|
||||
c2.2-2.3,4.9-4,8-5.2C585.6,675,589,674.4,592.9,674.4z M592.9,717.8c4.3,0,7.4-1.4,9.5-4.3c2-2.9,3.1-7.1,3.1-12.6
|
||||
c0-5.5-1-9.8-3.1-12.6c-2.1-2.9-5.2-4.4-9.5-4.4c-4.3,0-7.5,1.5-9.6,4.4c-2.1,2.9-3.1,7.1-3.1,12.6s1,9.7,3.1,12.6
|
||||
C585.3,716.3,588.5,717.8,592.9,717.8z"/>
|
||||
<path class="st3" d="M639.3,684.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L639.3,684.1z"/>
|
||||
<path class="st3" d="M709.4,677v4.6c0,1.5-0.9,2.4-2.6,2.7l-4.6,0.8c0.7,1.8,1.1,3.7,1.1,5.8c0,2.5-0.5,4.8-1.5,6.9
|
||||
c-1,2-2.4,3.8-4.2,5.2c-1.8,1.4-3.9,2.5-6.4,3.3c-2.5,0.8-5.1,1.2-7.9,1.2c-1,0-2,0-2.9-0.2c-0.9-0.1-1.9-0.2-2.8-0.4
|
||||
c-1.6,1-2.4,2-2.4,3.2c0,1,0.5,1.8,1.4,2.3c1,0.5,2.2,0.8,3.8,1c1.6,0.2,3.3,0.3,5.3,0.4s4.1,0.2,6.2,0.3s4.2,0.5,6.2,0.9
|
||||
s3.8,1.1,5.3,2c1.6,0.9,2.8,2.1,3.8,3.7c0.9,1.6,1.4,3.5,1.4,6c0,2.3-0.6,4.5-1.7,6.6c-1.1,2.1-2.7,4-4.9,5.7
|
||||
c-2.1,1.7-4.7,3-7.8,4c-3.1,1-6.6,1.5-10.5,1.5c-3.9,0-7.2-0.4-10.1-1.1c-2.9-0.8-5.2-1.8-7.2-3c-1.9-1.2-3.3-2.7-4.2-4.3
|
||||
s-1.4-3.3-1.4-5.1c0-2.4,0.7-4.4,2.2-6c1.5-1.6,3.4-2.9,6-3.9c-1.4-0.7-2.4-1.6-3.2-2.8c-0.8-1.2-1.2-2.7-1.2-4.6
|
||||
c0-0.8,0.1-1.6,0.4-2.4c0.3-0.8,0.7-1.6,1.2-2.4c0.5-0.8,1.2-1.6,2.1-2.3c0.8-0.7,1.8-1.4,2.9-1.9c-2.6-1.4-4.6-3.3-6.1-5.6
|
||||
c-1.5-2.3-2.2-5.1-2.2-8.2c0-2.5,0.5-4.8,1.5-6.9c1-2.1,2.4-3.8,4.2-5.2c1.8-1.5,4-2.6,6.4-3.3s5.2-1.2,8.1-1.2
|
||||
c2.2,0,4.3,0.2,6.2,0.7c1.9,0.5,3.7,1.1,5.3,2H709.4z M697.1,728.8c0-1-0.3-1.8-0.9-2.5c-0.6-0.6-1.4-1.1-2.5-1.5
|
||||
c-1-0.3-2.2-0.6-3.6-0.8c-1.4-0.2-2.9-0.3-4.4-0.4c-1.5-0.1-3.1-0.2-4.8-0.2c-1.7-0.1-3.3-0.2-4.8-0.4c-1.4,0.8-2.5,1.7-3.3,2.7
|
||||
c-0.8,1-1.3,2.2-1.3,3.6c0,0.9,0.2,1.7,0.7,2.5s1.2,1.5,2.2,2c1,0.6,2.3,1,3.8,1.3c1.6,0.3,3.5,0.5,5.8,0.5c2.3,0,4.3-0.2,6-0.5
|
||||
c1.7-0.3,3-0.8,4.1-1.4c1.1-0.6,1.9-1.4,2.4-2.2C696.8,730.7,697.1,729.8,697.1,728.8z M683.1,699.6c1.5,0,2.9-0.2,4-0.6
|
||||
c1.1-0.4,2.1-1,2.8-1.7c0.8-0.7,1.3-1.6,1.7-2.7c0.4-1,0.6-2.2,0.6-3.4c0-2.5-0.8-4.5-2.3-6c-1.5-1.5-3.8-2.2-6.8-2.2
|
||||
s-5.3,0.7-6.8,2.2c-1.5,1.5-2.3,3.5-2.3,6c0,1.2,0.2,2.3,0.6,3.3c0.4,1,1,1.9,1.7,2.7s1.7,1.3,2.8,1.8
|
||||
C680.3,699.4,681.6,699.6,683.1,699.6z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="icon">
|
||||
<path id="path2852" class="st3" d="M314.8,180.9c-12.6,0-24,2-34.1,5.8c-10.1,3.8-18.3,9.2-25.3,16.4c-7,7.2-12.3,15.7-15.8,25.9
|
||||
c-3.8,10.2-5.4,21.8-5.7,34.5c0,11.9,1.6,22.5,4.4,31.7c2.8,9.2,7,17.4,12,23.9c4.7,6.5,10.4,11.9,17.1,16c6.3,4.1,13,7.2,19.9,8.5
|
||||
v2.4c-9.8,2.4-19,5.5-26.9,9.9s-14.8,9.9-20.5,17.1c-5.7,6.8-10.1,15.4-13,25.2c-2.8,9.9-4.4,21.1-4.4,34.5c0,16,1.9,30,6,42.3
|
||||
c4.1,12.3,9.8,22.5,17.1,31c7.3,8.2,16.4,14.7,27.5,19.1c10.7,4.4,23.1,6.5,36.3,6.5s24.6-1.4,34.4-4.1c9.5-2.7,17.7-5.5,24.6-8.5
|
||||
v112.6h37V513.2h29.1v118.4h37V519c7,3.1,14.8,6.1,24.6,8.5c9.8,2.7,21.2,4.1,34.4,4.1c13.6,0,25.6-2,36.3-6.5
|
||||
c10.7-4.4,19.9-10.6,27.5-19.1c7.3-8.2,13-18.8,17.1-31s6-26.6,6-42.3c0-13.3-1.6-24.9-4.4-34.5c-2.8-9.9-7.3-18.4-13-25.2
|
||||
c-5.7-7.2-12.3-12.6-20.5-17.1c-7.9-4.4-17.1-7.5-26.9-9.9v-2.4c7-1.7,13.6-4.4,19.9-8.5c6.6-4.1,12.3-9.6,17.1-16
|
||||
c5.1-6.8,8.8-14.7,12-23.9c2.8-9.2,4.4-19.8,4.4-31.7c0-12.6-1.9-24.2-5.7-34.5c-3.5-10.2-8.8-18.8-15.8-25.9
|
||||
c-7-7.2-15.2-12.6-25.3-16.4c-9.8-3.8-21.2-5.8-34.1-5.8c-13.6,0-25.9,2-37.3,6.1c-11.1,4.1-20.5,10.6-28.8,20.1
|
||||
c-7.9,9.2-14.2,21.5-18.6,36.8c-3.5,12.3-5.7,26.6-6.3,43.3h-29.7c-0.6-16.7-2.8-31-6.3-43.3c-4.4-15.4-10.7-27.6-18.6-36.8
|
||||
c-7.9-9.6-17.4-16-28.8-20.1C340.7,183,328,180.9,314.8,180.9z M418.7,187.8c-3.2,0-6.3,0.7-9.5,2.4c-2.8,1.4-5.4,3.1-7.6,5.5
|
||||
c-2.2,2.4-4.1,5.1-5.4,8.5c-1.3,3.1-1.9,6.5-1.9,10.2c0,3.4,0.6,6.8,1.9,9.9c1.3,3.1,3.2,5.8,5.4,8.2c2.2,2.4,4.7,4.4,7.6,5.8
|
||||
c2.8,1.4,6,2,9.5,2c3.2,0,6.3-0.7,9.2-2c2.8-1.4,5.7-3.4,7.9-5.8c2.2-2.4,3.8-5.1,5.1-8.2c1.3-3.1,1.9-6.5,1.9-9.9
|
||||
c0-3.4-0.6-6.8-1.9-10.2c-1.3-3.1-2.8-6.1-5.1-8.5c-2.2-2.4-4.7-4.1-7.9-5.5C425,188.4,421.9,187.8,418.7,187.8z M315.1,200
|
||||
c8.2,0,15.8,1.7,22.4,4.8c6.6,3.1,12.3,8.5,17.1,16.4c4.7,7.8,8.2,18.1,10.7,31.4c2.5,13,3.5,29.7,3.5,49.5v199.2
|
||||
c-7.9,2.7-16.4,5.1-25.9,6.8c-9.5,1.7-19.6,2.4-30.3,2.4c-16.1,0-28.4-6.1-37.3-18.8c-8.8-12.6-13.3-32.1-13.3-58.3
|
||||
c0-11.9,1.3-22.5,3.8-31.7c2.5-9.6,6.3-17.4,11.7-23.9s12.3-11.6,20.9-15.4c8.5-3.8,19-5.8,31.3-6.1v-18.8
|
||||
c-10.4-0.3-19.3-2-26.5-5.1c-7.3-3.1-13.3-7.8-18-14c-4.7-6.1-7.9-13.6-10.1-22.5c-2.2-9.2-3.2-19.8-3.2-31.7
|
||||
c0-9.6,0.9-18.4,2.5-26.3c1.6-7.8,4.1-14.7,7.9-20.1c3.5-5.5,7.9-9.9,13.3-13C301.2,201.4,307.5,200,315.1,200z M525.5,200
|
||||
c7.6,0,14.2,1.7,19.6,4.4c5.4,3.1,9.8,7.2,13.3,13c3.5,5.5,6.3,12.3,7.9,20.1c1.9,7.8,2.5,16.7,2.5,26.3c0,11.9-0.9,22.5-3.2,31.7
|
||||
c-2.2,8.9-5.4,16.4-10.1,22.5c-4.7,6.1-10.4,10.9-18,14c-7.3,3.1-16.1,4.8-26.5,5.1v18.8c12.3,0.3,22.7,2.4,31.3,6.1
|
||||
c8.5,3.8,15.5,8.9,20.9,15.4s9.5,14.7,11.7,23.9c2.5,9.2,3.8,19.8,3.8,31.7c0,26.3-4.4,45.7-13.3,58.3
|
||||
c-8.8,12.6-21.2,18.8-37.3,18.8c-10.7,0-20.9-0.7-30.3-2.4c-7.6-1.4-14.8-3.1-21.5-5.1v-0.7l-3.5-0.7c-0.3,0-0.9-0.3-1.3-0.3V301.7
|
||||
c0-20.1,1.3-36.5,3.5-49.5c2.5-13,6-23.5,10.7-31.4c4.7-7.8,10.4-13.3,17.1-16.4C509.7,201.7,517.3,200,525.5,200z"/>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
7483
ivatar/static/img/logo4hex/libravatar_org_process_blue.ai
Executable file
7483
ivatar/static/img/logo4hex/libravatar_org_process_blue.ai
Executable file
File diff suppressed because one or more lines are too long
BIN
ivatar/static/img/logo4hex/libravatar_org_process_blue.eps
Executable file
BIN
ivatar/static/img/logo4hex/libravatar_org_process_blue.eps
Executable file
Binary file not shown.
132
ivatar/static/img/logo4hex/libravatar_org_process_blue.svg
Executable file
132
ivatar/static/img/logo4hex/libravatar_org_process_blue.svg
Executable file
@@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.6, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 841.9 967.3" style="enable-background:new 0 0 841.9 967.3;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{display:none;}
|
||||
.st1{display:inline;fill:#0885C7;}
|
||||
.st2{fill:#0885C7;stroke:#000000;stroke-miterlimit:10;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
.st4{display:none;opacity:0.25;}
|
||||
</style>
|
||||
<g id="_x36_eck" class="st0">
|
||||
<polygon class="st1" points="421.9,0 841.1,241.1 840.4,724.8 420.3,967.3 1.1,726.2 1.9,242.5 "/>
|
||||
</g>
|
||||
<g id="bg">
|
||||
<rect class="st2" width="841.9" height="967.3"/>
|
||||
</g>
|
||||
<g id="libravatar.org">
|
||||
<g>
|
||||
<path class="st3" d="M142.8,666.2v74.3h-12.4v-74.3H142.8z"/>
|
||||
<path class="st3" d="M169.7,674.3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-1,1.8-1.7,2.5c-0.7,0.7-1.6,1.3-2.5,1.7c-1,0.4-2,0.6-3.1,0.6
|
||||
c-1.1,0-2.1-0.2-3-0.6c-1-0.4-1.8-1-2.5-1.7c-0.7-0.7-1.3-1.5-1.7-2.5c-0.4-0.9-0.6-1.9-0.6-3c0-1.1,0.2-2.1,0.6-3.1
|
||||
c0.4-1,1-1.8,1.7-2.5c0.7-0.7,1.5-1.3,2.5-1.7c0.9-0.4,2-0.6,3-0.6c1.1,0,2.1,0.2,3.1,0.6c1,0.4,1.8,1,2.5,1.7
|
||||
c0.7,0.7,1.3,1.5,1.7,2.5C169.5,672.1,169.7,673.2,169.7,674.3z M168,689.2v51.3h-12.4v-51.3H168z"/>
|
||||
<path class="st3" d="M192.9,695.5c2.1-2.2,4.4-3.9,6.9-5.2c2.5-1.3,5.4-1.9,8.6-1.9c3,0,5.6,0.6,8,1.8c2.4,1.2,4.4,2.8,6.1,5
|
||||
c1.7,2.2,3,4.8,3.9,7.9c0.9,3.1,1.3,6.6,1.3,10.5c0,4.2-0.5,8-1.5,11.4c-1,3.4-2.5,6.3-4.4,8.7c-1.9,2.4-4.2,4.3-6.9,5.6
|
||||
c-2.7,1.3-5.7,2-9,2c-1.6,0-3-0.2-4.4-0.5c-1.3-0.3-2.5-0.8-3.6-1.3c-1.1-0.6-2.1-1.3-3-2.1c-0.9-0.8-1.8-1.7-2.6-2.7l-0.5,3.4
|
||||
c-0.2,0.9-0.5,1.5-1,1.9c-0.5,0.4-1.1,0.5-2,0.5h-8.1v-74.3h12.4V695.5z M192.9,727.2c1.4,1.7,2.9,2.9,4.6,3.6s3.4,1,5.2,1
|
||||
c1.9,0,3.6-0.3,5.1-1c1.5-0.7,2.8-1.8,3.9-3.2c1.1-1.5,1.9-3.3,2.5-5.5c0.6-2.2,0.8-4.9,0.8-8.1c0-5.6-0.9-9.7-2.8-12.2
|
||||
c-1.9-2.5-4.5-3.8-8-3.8c-2.4,0-4.4,0.5-6.2,1.6c-1.8,1.1-3.5,2.6-5,4.6V727.2z"/>
|
||||
<path class="st3" d="M249,698.1c1.6-3.1,3.5-5.5,5.7-7.2c2.2-1.8,4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2c-1-0.2-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7s-1.6,1.7-2.2,2.7c-0.6,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.1,0.2,2.6,0.7s0.8,1.3,1,2.4
|
||||
L249,698.1z"/>
|
||||
<path class="st3" d="M272.8,696.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L272.8,696.4z M301.1,718.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V718.6z"/>
|
||||
<path class="st3" d="M369.8,689.2l-20.4,51.3h-11.2l-20.3-51.3h10.2c0.9,0,1.7,0.2,2.3,0.6c0.6,0.4,1,1,1.2,1.7l9.9,27.4
|
||||
c0.5,1.6,1,3.2,1.4,4.7c0.4,1.5,0.8,3.1,1,4.6c0.3-1.5,0.7-3.1,1.1-4.6c0.4-1.5,0.9-3.1,1.5-4.7l10.1-27.4
|
||||
c0.2-0.7,0.6-1.2,1.2-1.7c0.6-0.4,1.3-0.6,2.1-0.6H369.8z"/>
|
||||
<path class="st3" d="M373.9,696.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L373.9,696.4z M402.2,718.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V718.6z"/>
|
||||
<path class="st3" d="M442.2,741.3c-4.5,0-7.9-1.3-10.3-3.8c-2.4-2.5-3.6-6-3.6-10.4v-28.6h-5.2c-0.7,0-1.2-0.2-1.7-0.7
|
||||
c-0.5-0.4-0.7-1.1-0.7-2V691l8.2-1.4l2.6-14c0.2-0.7,0.5-1.2,1-1.5c0.5-0.4,1.1-0.5,1.8-0.5h6.4v16.2h13.7v8.8h-13.7v27.8
|
||||
c0,1.6,0.4,2.8,1.2,3.8c0.8,0.9,1.9,1.3,3.2,1.3c0.8,0,1.4-0.1,1.9-0.3c0.5-0.2,1-0.4,1.4-0.6c0.4-0.2,0.7-0.4,1-0.6
|
||||
c0.3-0.2,0.6-0.3,0.9-0.3c0.4,0,0.7,0.1,0.9,0.3c0.2,0.2,0.5,0.5,0.8,0.8l3.7,6c-1.8,1.5-3.9,2.6-6.2,3.4
|
||||
C447.1,740.9,444.7,741.3,442.2,741.3z"/>
|
||||
<path class="st3" d="M461.1,696.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1s2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9s-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7s-1.1-1-1.5-1.6
|
||||
L461.1,696.4z M489.4,718.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7s-2.5,1.5-3.1,2.5c-0.6,0.9-1,2-1,3
|
||||
c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V718.6z"/>
|
||||
<path class="st3" d="M524.7,698.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L524.7,698.1z"/>
|
||||
<path class="st3" d="M544.6,733.7c0-1,0.2-2,0.6-3c0.4-0.9,0.9-1.7,1.6-2.4c0.7-0.7,1.5-1.2,2.4-1.6s1.9-0.6,3-0.6s2.1,0.2,3,0.6
|
||||
c0.9,0.4,1.7,0.9,2.4,1.6c0.7,0.7,1.2,1.5,1.6,2.4c0.4,0.9,0.6,1.9,0.6,3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-0.9,1.7-1.6,2.4
|
||||
c-0.7,0.7-1.5,1.2-2.4,1.6c-0.9,0.4-1.9,0.6-3,0.6s-2.1-0.2-3-0.6s-1.7-0.9-2.4-1.6c-0.7-0.7-1.2-1.5-1.6-2.4
|
||||
C544.8,735.8,544.6,734.8,544.6,733.7z"/>
|
||||
<path class="st3" d="M592.9,688.4c3.8,0,7.3,0.6,10.4,1.8c3.1,1.2,5.8,3,8,5.2c2.2,2.3,3.9,5,5.1,8.3c1.2,3.3,1.8,6.9,1.8,11
|
||||
c0,4.1-0.6,7.7-1.8,11c-1.2,3.3-2.9,6-5.1,8.3c-2.2,2.3-4.9,4.1-8,5.3c-3.1,1.2-6.6,1.8-10.4,1.8c-3.8,0-7.3-0.6-10.5-1.8
|
||||
c-3.1-1.2-5.8-3-8-5.3c-2.2-2.3-3.9-5.1-5.2-8.3c-1.2-3.3-1.8-6.9-1.8-11c0-4,0.6-7.7,1.8-11c1.2-3.3,2.9-6,5.2-8.3
|
||||
c2.2-2.3,4.9-4,8-5.2C585.6,689,589,688.4,592.9,688.4z M592.9,731.8c4.3,0,7.4-1.4,9.5-4.3c2-2.9,3.1-7.1,3.1-12.6
|
||||
c0-5.5-1-9.8-3.1-12.6c-2.1-2.9-5.2-4.4-9.5-4.4c-4.3,0-7.5,1.5-9.6,4.4c-2.1,2.9-3.1,7.1-3.1,12.6s1,9.7,3.1,12.6
|
||||
C585.3,730.3,588.5,731.8,592.9,731.8z"/>
|
||||
<path class="st3" d="M639.3,698.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L639.3,698.1z"/>
|
||||
<path class="st3" d="M709.4,691v4.6c0,1.5-0.9,2.4-2.6,2.7l-4.6,0.8c0.7,1.8,1.1,3.7,1.1,5.8c0,2.5-0.5,4.8-1.5,6.9
|
||||
c-1,2-2.4,3.8-4.2,5.2c-1.8,1.4-3.9,2.5-6.4,3.3c-2.5,0.8-5.1,1.2-7.9,1.2c-1,0-2,0-2.9-0.2c-0.9-0.1-1.9-0.2-2.8-0.4
|
||||
c-1.6,1-2.4,2-2.4,3.2c0,1,0.5,1.8,1.4,2.3c1,0.5,2.2,0.8,3.8,1c1.6,0.2,3.3,0.3,5.3,0.4s4.1,0.2,6.2,0.3s4.2,0.5,6.2,0.9
|
||||
s3.8,1.1,5.3,2c1.6,0.9,2.8,2.1,3.8,3.7c0.9,1.6,1.4,3.5,1.4,6c0,2.3-0.6,4.5-1.7,6.6c-1.1,2.1-2.7,4-4.9,5.7
|
||||
c-2.1,1.7-4.7,3-7.8,4c-3.1,1-6.6,1.5-10.5,1.5c-3.9,0-7.2-0.4-10.1-1.1c-2.9-0.8-5.2-1.8-7.2-3c-1.9-1.2-3.3-2.7-4.2-4.3
|
||||
s-1.4-3.3-1.4-5.1c0-2.4,0.7-4.4,2.2-6c1.5-1.6,3.4-2.9,6-3.9c-1.4-0.7-2.4-1.6-3.2-2.8c-0.8-1.2-1.2-2.7-1.2-4.6
|
||||
c0-0.8,0.1-1.6,0.4-2.4c0.3-0.8,0.7-1.6,1.2-2.4c0.5-0.8,1.2-1.6,2.1-2.3c0.8-0.7,1.8-1.4,2.9-1.9c-2.6-1.4-4.6-3.3-6.1-5.6
|
||||
c-1.5-2.3-2.2-5.1-2.2-8.2c0-2.5,0.5-4.8,1.5-6.9c1-2.1,2.4-3.8,4.2-5.2c1.8-1.5,4-2.6,6.4-3.3s5.2-1.2,8.1-1.2
|
||||
c2.2,0,4.3,0.2,6.2,0.7c1.9,0.5,3.7,1.1,5.3,2H709.4z M697.1,742.8c0-1-0.3-1.8-0.9-2.5c-0.6-0.6-1.4-1.1-2.5-1.5
|
||||
c-1-0.3-2.2-0.6-3.6-0.8c-1.4-0.2-2.9-0.3-4.4-0.4c-1.5-0.1-3.1-0.2-4.8-0.2c-1.7-0.1-3.3-0.2-4.8-0.4c-1.4,0.8-2.5,1.7-3.3,2.7
|
||||
c-0.8,1-1.3,2.2-1.3,3.6c0,0.9,0.2,1.7,0.7,2.5s1.2,1.5,2.2,2c1,0.6,2.3,1,3.8,1.3c1.6,0.3,3.5,0.5,5.8,0.5c2.3,0,4.3-0.2,6-0.5
|
||||
c1.7-0.3,3-0.8,4.1-1.4c1.1-0.6,1.9-1.4,2.4-2.2C696.8,744.7,697.1,743.8,697.1,742.8z M683.1,713.6c1.5,0,2.9-0.2,4-0.6
|
||||
c1.1-0.4,2.1-1,2.8-1.7c0.8-0.7,1.3-1.6,1.7-2.7c0.4-1,0.6-2.2,0.6-3.4c0-2.5-0.8-4.5-2.3-6c-1.5-1.5-3.8-2.2-6.8-2.2
|
||||
s-5.3,0.7-6.8,2.2c-1.5,1.5-2.3,3.5-2.3,6c0,1.2,0.2,2.3,0.6,3.3c0.4,1,1,1.9,1.7,2.7s1.7,1.3,2.8,1.8
|
||||
C680.3,713.4,681.6,713.6,683.1,713.6z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="icon">
|
||||
<path id="path2852" class="st3" d="M312.8,190.9c-12.6,0-24,2-34.1,5.8c-10.1,3.8-18.3,9.2-25.3,16.4c-7,7.2-12.3,15.7-15.8,25.9
|
||||
c-3.8,10.2-5.4,21.8-5.7,34.5c0,11.9,1.6,22.5,4.4,31.7c2.8,9.2,7,17.4,12,23.9c4.7,6.5,10.4,11.9,17.1,16c6.3,4.1,13,7.2,19.9,8.5
|
||||
v2.4c-9.8,2.4-19,5.5-26.9,9.9s-14.8,9.9-20.5,17.1c-5.7,6.8-10.1,15.4-13,25.2c-2.8,9.9-4.4,21.1-4.4,34.5c0,16,1.9,30,6,42.3
|
||||
c4.1,12.3,9.8,22.5,17.1,31c7.3,8.2,16.4,14.7,27.5,19.1c10.7,4.4,23.1,6.5,36.3,6.5s24.6-1.4,34.4-4.1c9.5-2.7,17.7-5.5,24.6-8.5
|
||||
v112.6h37V523.2h29.1v118.4h37V529c7,3.1,14.8,6.1,24.6,8.5c9.8,2.7,21.2,4.1,34.4,4.1c13.6,0,25.6-2,36.3-6.5
|
||||
c10.7-4.4,19.9-10.6,27.5-19.1c7.3-8.2,13-18.8,17.1-31s6-26.6,6-42.3c0-13.3-1.6-24.9-4.4-34.5c-2.8-9.9-7.3-18.4-13-25.2
|
||||
c-5.7-7.2-12.3-12.6-20.5-17.1c-7.9-4.4-17.1-7.5-26.9-9.9v-2.4c7-1.7,13.6-4.4,19.9-8.5c6.6-4.1,12.3-9.6,17.1-16
|
||||
c5.1-6.8,8.8-14.7,12-23.9c2.8-9.2,4.4-19.8,4.4-31.7c0-12.6-1.9-24.2-5.7-34.5c-3.5-10.2-8.8-18.8-15.8-25.9
|
||||
c-7-7.2-15.2-12.6-25.3-16.4c-9.8-3.8-21.2-5.8-34.1-5.8c-13.6,0-25.9,2-37.3,6.1c-11.1,4.1-20.5,10.6-28.8,20.1
|
||||
c-7.9,9.2-14.2,21.5-18.6,36.8c-3.5,12.3-5.7,26.6-6.3,43.3h-29.7c-0.6-16.7-2.8-31-6.3-43.3c-4.4-15.4-10.7-27.6-18.6-36.8
|
||||
c-7.9-9.6-17.4-16-28.8-20.1C338.7,193,326,190.9,312.8,190.9z M416.7,197.8c-3.2,0-6.3,0.7-9.5,2.4c-2.8,1.4-5.4,3.1-7.6,5.5
|
||||
c-2.2,2.4-4.1,5.1-5.4,8.5c-1.3,3.1-1.9,6.5-1.9,10.2c0,3.4,0.6,6.8,1.9,9.9c1.3,3.1,3.2,5.8,5.4,8.2c2.2,2.4,4.7,4.4,7.6,5.8
|
||||
c2.8,1.4,6,2,9.5,2c3.2,0,6.3-0.7,9.2-2c2.8-1.4,5.7-3.4,7.9-5.8c2.2-2.4,3.8-5.1,5.1-8.2c1.3-3.1,1.9-6.5,1.9-9.9
|
||||
c0-3.4-0.6-6.8-1.9-10.2c-1.3-3.1-2.8-6.1-5.1-8.5c-2.2-2.4-4.7-4.1-7.9-5.5C423,198.4,419.9,197.8,416.7,197.8z M313.1,210
|
||||
c8.2,0,15.8,1.7,22.4,4.8c6.6,3.1,12.3,8.5,17.1,16.4c4.7,7.8,8.2,18.1,10.7,31.4c2.5,13,3.5,29.7,3.5,49.5v199.2
|
||||
c-7.9,2.7-16.4,5.1-25.9,6.8c-9.5,1.7-19.6,2.4-30.3,2.4c-16.1,0-28.4-6.1-37.3-18.8c-8.8-12.6-13.3-32.1-13.3-58.3
|
||||
c0-11.9,1.3-22.5,3.8-31.7c2.5-9.6,6.3-17.4,11.7-23.9s12.3-11.6,20.9-15.4c8.5-3.8,19-5.8,31.3-6.1v-18.8
|
||||
c-10.4-0.3-19.3-2-26.5-5.1c-7.3-3.1-13.3-7.8-18-14c-4.7-6.1-7.9-13.6-10.1-22.5c-2.2-9.2-3.2-19.8-3.2-31.7
|
||||
c0-9.6,0.9-18.4,2.5-26.3c1.6-7.8,4.1-14.7,7.9-20.1c3.5-5.5,7.9-9.9,13.3-13C299.2,211.4,305.5,210,313.1,210z M523.5,210
|
||||
c7.6,0,14.2,1.7,19.6,4.4c5.4,3.1,9.8,7.2,13.3,13c3.5,5.5,6.3,12.3,7.9,20.1c1.9,7.8,2.5,16.7,2.5,26.3c0,11.9-0.9,22.5-3.2,31.7
|
||||
c-2.2,8.9-5.4,16.4-10.1,22.5c-4.7,6.1-10.4,10.9-18,14c-7.3,3.1-16.1,4.8-26.5,5.1v18.8c12.3,0.3,22.7,2.4,31.3,6.1
|
||||
c8.5,3.8,15.5,8.9,20.9,15.4s9.5,14.7,11.7,23.9c2.5,9.2,3.8,19.8,3.8,31.7c0,26.3-4.4,45.7-13.3,58.3
|
||||
c-8.8,12.6-21.2,18.8-37.3,18.8c-10.7,0-20.9-0.7-30.3-2.4c-7.6-1.4-14.8-3.1-21.5-5.1v-0.7l-3.5-0.7c-0.3,0-0.9-0.3-1.3-0.3V311.7
|
||||
c0-20.1,1.3-36.5,3.5-49.5c2.5-13,6-23.5,10.7-31.4c4.7-7.8,10.4-13.3,17.1-16.4C507.7,211.7,515.3,210,523.5,210z"/>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
</g>
|
||||
<g id="Ebene_6" class="st4">
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
7646
ivatar/static/img/logo4hex/libravatar_org_process_blue_6.ai
Executable file
7646
ivatar/static/img/logo4hex/libravatar_org_process_blue_6.ai
Executable file
File diff suppressed because one or more lines are too long
BIN
ivatar/static/img/logo4hex/libravatar_org_process_blue_6.eps
Executable file
BIN
ivatar/static/img/logo4hex/libravatar_org_process_blue_6.eps
Executable file
Binary file not shown.
132
ivatar/static/img/logo4hex/libravatar_org_process_blue_6.svg
Executable file
132
ivatar/static/img/logo4hex/libravatar_org_process_blue_6.svg
Executable file
@@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.6, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 841.9 967.3" style="enable-background:new 0 0 841.9 967.3;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#0885C7;}
|
||||
.st1{display:none;}
|
||||
.st2{display:inline;fill:#0885C7;stroke:#000000;stroke-miterlimit:10;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
.st4{display:none;opacity:0.25;}
|
||||
</style>
|
||||
<g id="_x36_eck">
|
||||
<polygon class="st0" points="421.9,0 841.1,241.1 840.4,724.8 420.3,967.3 1.1,726.2 1.9,242.5 "/>
|
||||
</g>
|
||||
<g id="bg" class="st1">
|
||||
<rect class="st2" width="841.9" height="967.3"/>
|
||||
</g>
|
||||
<g id="libravatar.org">
|
||||
<g>
|
||||
<path class="st3" d="M142.8,666.2v74.3h-12.4v-74.3H142.8z"/>
|
||||
<path class="st3" d="M169.7,674.3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-1,1.8-1.7,2.5c-0.7,0.7-1.6,1.3-2.5,1.7c-1,0.4-2,0.6-3.1,0.6
|
||||
c-1.1,0-2.1-0.2-3-0.6c-1-0.4-1.8-1-2.5-1.7c-0.7-0.7-1.3-1.5-1.7-2.5c-0.4-0.9-0.6-1.9-0.6-3c0-1.1,0.2-2.1,0.6-3.1
|
||||
c0.4-1,1-1.8,1.7-2.5c0.7-0.7,1.5-1.3,2.5-1.7c0.9-0.4,2-0.6,3-0.6c1.1,0,2.1,0.2,3.1,0.6c1,0.4,1.8,1,2.5,1.7
|
||||
c0.7,0.7,1.3,1.5,1.7,2.5C169.5,672.1,169.7,673.2,169.7,674.3z M168,689.2v51.3h-12.4v-51.3H168z"/>
|
||||
<path class="st3" d="M192.9,695.5c2.1-2.2,4.4-3.9,6.9-5.2c2.5-1.3,5.4-1.9,8.6-1.9c3,0,5.6,0.6,8,1.8c2.4,1.2,4.4,2.8,6.1,5
|
||||
c1.7,2.2,3,4.8,3.9,7.9c0.9,3.1,1.3,6.6,1.3,10.5c0,4.2-0.5,8-1.5,11.4c-1,3.4-2.5,6.3-4.4,8.7c-1.9,2.4-4.2,4.3-6.9,5.6
|
||||
c-2.7,1.3-5.7,2-9,2c-1.6,0-3-0.2-4.4-0.5c-1.3-0.3-2.5-0.8-3.6-1.3c-1.1-0.6-2.1-1.3-3-2.1c-0.9-0.8-1.8-1.7-2.6-2.7l-0.5,3.4
|
||||
c-0.2,0.9-0.5,1.5-1,1.9c-0.5,0.4-1.1,0.5-2,0.5h-8.1v-74.3h12.4V695.5z M192.9,727.2c1.4,1.7,2.9,2.9,4.6,3.6s3.4,1,5.2,1
|
||||
c1.9,0,3.6-0.3,5.1-1c1.5-0.7,2.8-1.8,3.9-3.2c1.1-1.5,1.9-3.3,2.5-5.5c0.6-2.2,0.8-4.9,0.8-8.1c0-5.6-0.9-9.7-2.8-12.2
|
||||
c-1.9-2.5-4.5-3.8-8-3.8c-2.4,0-4.4,0.5-6.2,1.6c-1.8,1.1-3.5,2.6-5,4.6V727.2z"/>
|
||||
<path class="st3" d="M249,698.1c1.6-3.1,3.5-5.5,5.7-7.2c2.2-1.8,4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2c-1-0.2-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7s-1.6,1.7-2.2,2.7c-0.6,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.1,0.2,2.6,0.7s0.8,1.3,1,2.4
|
||||
L249,698.1z"/>
|
||||
<path class="st3" d="M272.8,696.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L272.8,696.4z M301.1,718.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V718.6z"/>
|
||||
<path class="st3" d="M369.8,689.2l-20.4,51.3h-11.2l-20.3-51.3h10.2c0.9,0,1.7,0.2,2.3,0.6c0.6,0.4,1,1,1.2,1.7l9.9,27.4
|
||||
c0.5,1.6,1,3.2,1.4,4.7c0.4,1.5,0.8,3.1,1,4.6c0.3-1.5,0.7-3.1,1.1-4.6c0.4-1.5,0.9-3.1,1.5-4.7l10.1-27.4
|
||||
c0.2-0.7,0.6-1.2,1.2-1.7c0.6-0.4,1.3-0.6,2.1-0.6H369.8z"/>
|
||||
<path class="st3" d="M373.9,696.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1c1.6,1.8,2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9c-1.8-0.6-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7
|
||||
c-0.6-0.5-1.1-1-1.4-1.6L373.9,696.4z M402.2,718.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7c-1.5,0.7-2.5,1.5-3.1,2.5
|
||||
c-0.6,0.9-1,2-1,3c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V718.6z"/>
|
||||
<path class="st3" d="M442.2,741.3c-4.5,0-7.9-1.3-10.3-3.8c-2.4-2.5-3.6-6-3.6-10.4v-28.6h-5.2c-0.7,0-1.2-0.2-1.7-0.7
|
||||
c-0.5-0.4-0.7-1.1-0.7-2V691l8.2-1.4l2.6-14c0.2-0.7,0.5-1.2,1-1.5c0.5-0.4,1.1-0.5,1.8-0.5h6.4v16.2h13.7v8.8h-13.7v27.8
|
||||
c0,1.6,0.4,2.8,1.2,3.8c0.8,0.9,1.9,1.3,3.2,1.3c0.8,0,1.4-0.1,1.9-0.3c0.5-0.2,1-0.4,1.4-0.6c0.4-0.2,0.7-0.4,1-0.6
|
||||
c0.3-0.2,0.6-0.3,0.9-0.3c0.4,0,0.7,0.1,0.9,0.3c0.2,0.2,0.5,0.5,0.8,0.8l3.7,6c-1.8,1.5-3.9,2.6-6.2,3.4
|
||||
C447.1,740.9,444.7,741.3,442.2,741.3z"/>
|
||||
<path class="st3" d="M461.1,696.4c5.9-5.4,13-8.1,21.3-8.1c3,0,5.7,0.5,8,1.5c2.4,1,4.4,2.4,6,4.1s2.9,3.8,3.7,6.3
|
||||
c0.9,2.4,1.3,5.1,1.3,8v32.4h-5.6c-1.2,0-2.1-0.2-2.7-0.5c-0.6-0.3-1.1-1.1-1.5-2.1l-1.1-3.7c-1.3,1.2-2.6,2.2-3.8,3.1
|
||||
c-1.2,0.9-2.5,1.6-3.8,2.2c-1.3,0.6-2.8,1.1-4.3,1.4c-1.5,0.3-3.2,0.5-5,0.5c-2.2,0-4.2-0.3-6-0.9s-3.4-1.5-4.8-2.6
|
||||
c-1.3-1.2-2.4-2.6-3.1-4.3c-0.7-1.7-1.1-3.8-1.1-6c0-1.3,0.2-2.6,0.6-3.9c0.4-1.3,1.1-2.5,2.1-3.7c1-1.2,2.3-2.3,3.8-3.3
|
||||
c1.6-1,3.5-1.9,5.8-2.7c2.3-0.8,4.9-1.4,8-1.9c3-0.5,6.5-0.8,10.4-0.9v-3c0-3.4-0.7-6-2.2-7.6c-1.5-1.6-3.6-2.5-6.4-2.5
|
||||
c-2,0-3.7,0.2-5,0.7c-1.3,0.5-2.5,1-3.5,1.6s-1.9,1.1-2.7,1.6c-0.8,0.5-1.7,0.7-2.7,0.7c-0.9,0-1.6-0.2-2.2-0.7s-1.1-1-1.5-1.6
|
||||
L461.1,696.4z M489.4,718.6c-3.6,0.2-6.6,0.5-9,0.9c-2.4,0.4-4.4,1-5.9,1.7s-2.5,1.5-3.1,2.5c-0.6,0.9-1,2-1,3
|
||||
c0,2.2,0.6,3.7,1.9,4.7s3,1.4,5,1.4c2.5,0,4.7-0.5,6.6-1.4c1.9-0.9,3.7-2.3,5.4-4.2V718.6z"/>
|
||||
<path class="st3" d="M524.7,698.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L524.7,698.1z"/>
|
||||
<path class="st3" d="M544.6,733.7c0-1,0.2-2,0.6-3c0.4-0.9,0.9-1.7,1.6-2.4c0.7-0.7,1.5-1.2,2.4-1.6s1.9-0.6,3-0.6s2.1,0.2,3,0.6
|
||||
c0.9,0.4,1.7,0.9,2.4,1.6c0.7,0.7,1.2,1.5,1.6,2.4c0.4,0.9,0.6,1.9,0.6,3c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-0.9,1.7-1.6,2.4
|
||||
c-0.7,0.7-1.5,1.2-2.4,1.6c-0.9,0.4-1.9,0.6-3,0.6s-2.1-0.2-3-0.6s-1.7-0.9-2.4-1.6c-0.7-0.7-1.2-1.5-1.6-2.4
|
||||
C544.8,735.8,544.6,734.8,544.6,733.7z"/>
|
||||
<path class="st3" d="M592.9,688.4c3.8,0,7.3,0.6,10.4,1.8c3.1,1.2,5.8,3,8,5.2c2.2,2.3,3.9,5,5.1,8.3c1.2,3.3,1.8,6.9,1.8,11
|
||||
c0,4.1-0.6,7.7-1.8,11c-1.2,3.3-2.9,6-5.1,8.3c-2.2,2.3-4.9,4.1-8,5.3c-3.1,1.2-6.6,1.8-10.4,1.8c-3.8,0-7.3-0.6-10.5-1.8
|
||||
c-3.1-1.2-5.8-3-8-5.3c-2.2-2.3-3.9-5.1-5.2-8.3c-1.2-3.3-1.8-6.9-1.8-11c0-4,0.6-7.7,1.8-11c1.2-3.3,2.9-6,5.2-8.3
|
||||
c2.2-2.3,4.9-4,8-5.2C585.6,689,589,688.4,592.9,688.4z M592.9,731.8c4.3,0,7.4-1.4,9.5-4.3c2-2.9,3.1-7.1,3.1-12.6
|
||||
c0-5.5-1-9.8-3.1-12.6c-2.1-2.9-5.2-4.4-9.5-4.4c-4.3,0-7.5,1.5-9.6,4.4c-2.1,2.9-3.1,7.1-3.1,12.6s1,9.7,3.1,12.6
|
||||
C585.3,730.3,588.5,731.8,592.9,731.8z"/>
|
||||
<path class="st3" d="M639.3,698.1c1.6-3.1,3.5-5.5,5.7-7.2s4.8-2.6,7.8-2.6c2.4,0,4.3,0.5,5.7,1.5l-0.8,9.2
|
||||
c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.2-0.7,0.4-1.3,0.4c-0.5,0-1.2-0.1-2.2-0.2s-1.9-0.2-2.9-0.2c-1.4,0-2.6,0.2-3.6,0.6
|
||||
c-1.1,0.4-2,1-2.9,1.7c-0.9,0.8-1.6,1.7-2.2,2.7c-0.7,1.1-1.3,2.3-1.8,3.7v31.6h-12.4v-51.3h7.2c1.3,0,2.2,0.2,2.7,0.7
|
||||
s0.8,1.3,1,2.4L639.3,698.1z"/>
|
||||
<path class="st3" d="M709.4,691v4.6c0,1.5-0.9,2.4-2.6,2.7l-4.6,0.8c0.7,1.8,1.1,3.7,1.1,5.8c0,2.5-0.5,4.8-1.5,6.9
|
||||
c-1,2-2.4,3.8-4.2,5.2c-1.8,1.4-3.9,2.5-6.4,3.3c-2.5,0.8-5.1,1.2-7.9,1.2c-1,0-2,0-2.9-0.2c-0.9-0.1-1.9-0.2-2.8-0.4
|
||||
c-1.6,1-2.4,2-2.4,3.2c0,1,0.5,1.8,1.4,2.3c1,0.5,2.2,0.8,3.8,1c1.6,0.2,3.3,0.3,5.3,0.4s4.1,0.2,6.2,0.3s4.2,0.5,6.2,0.9
|
||||
s3.8,1.1,5.3,2c1.6,0.9,2.8,2.1,3.8,3.7c0.9,1.6,1.4,3.5,1.4,6c0,2.3-0.6,4.5-1.7,6.6c-1.1,2.1-2.7,4-4.9,5.7
|
||||
c-2.1,1.7-4.7,3-7.8,4c-3.1,1-6.6,1.5-10.5,1.5c-3.9,0-7.2-0.4-10.1-1.1c-2.9-0.8-5.2-1.8-7.2-3c-1.9-1.2-3.3-2.7-4.2-4.3
|
||||
s-1.4-3.3-1.4-5.1c0-2.4,0.7-4.4,2.2-6c1.5-1.6,3.4-2.9,6-3.9c-1.4-0.7-2.4-1.6-3.2-2.8c-0.8-1.2-1.2-2.7-1.2-4.6
|
||||
c0-0.8,0.1-1.6,0.4-2.4c0.3-0.8,0.7-1.6,1.2-2.4c0.5-0.8,1.2-1.6,2.1-2.3c0.8-0.7,1.8-1.4,2.9-1.9c-2.6-1.4-4.6-3.3-6.1-5.6
|
||||
c-1.5-2.3-2.2-5.1-2.2-8.2c0-2.5,0.5-4.8,1.5-6.9c1-2.1,2.4-3.8,4.2-5.2c1.8-1.5,4-2.6,6.4-3.3s5.2-1.2,8.1-1.2
|
||||
c2.2,0,4.3,0.2,6.2,0.7c1.9,0.5,3.7,1.1,5.3,2H709.4z M697.1,742.8c0-1-0.3-1.8-0.9-2.5c-0.6-0.6-1.4-1.1-2.5-1.5
|
||||
c-1-0.3-2.2-0.6-3.6-0.8c-1.4-0.2-2.9-0.3-4.4-0.4c-1.5-0.1-3.1-0.2-4.8-0.2c-1.7-0.1-3.3-0.2-4.8-0.4c-1.4,0.8-2.5,1.7-3.3,2.7
|
||||
c-0.8,1-1.3,2.2-1.3,3.6c0,0.9,0.2,1.7,0.7,2.5s1.2,1.5,2.2,2c1,0.6,2.3,1,3.8,1.3c1.6,0.3,3.5,0.5,5.8,0.5c2.3,0,4.3-0.2,6-0.5
|
||||
c1.7-0.3,3-0.8,4.1-1.4c1.1-0.6,1.9-1.4,2.4-2.2C696.8,744.7,697.1,743.8,697.1,742.8z M683.1,713.6c1.5,0,2.9-0.2,4-0.6
|
||||
c1.1-0.4,2.1-1,2.8-1.7c0.8-0.7,1.3-1.6,1.7-2.7c0.4-1,0.6-2.2,0.6-3.4c0-2.5-0.8-4.5-2.3-6c-1.5-1.5-3.8-2.2-6.8-2.2
|
||||
s-5.3,0.7-6.8,2.2c-1.5,1.5-2.3,3.5-2.3,6c0,1.2,0.2,2.3,0.6,3.3c0.4,1,1,1.9,1.7,2.7s1.7,1.3,2.8,1.8
|
||||
C680.3,713.4,681.6,713.6,683.1,713.6z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="icon">
|
||||
<path id="path2852" class="st3" d="M312.8,190.9c-12.6,0-24,2-34.1,5.8c-10.1,3.8-18.3,9.2-25.3,16.4c-7,7.2-12.3,15.7-15.8,25.9
|
||||
c-3.8,10.2-5.4,21.8-5.7,34.5c0,11.9,1.6,22.5,4.4,31.7c2.8,9.2,7,17.4,12,23.9c4.7,6.5,10.4,11.9,17.1,16c6.3,4.1,13,7.2,19.9,8.5
|
||||
v2.4c-9.8,2.4-19,5.5-26.9,9.9s-14.8,9.9-20.5,17.1c-5.7,6.8-10.1,15.4-13,25.2c-2.8,9.9-4.4,21.1-4.4,34.5c0,16,1.9,30,6,42.3
|
||||
c4.1,12.3,9.8,22.5,17.1,31c7.3,8.2,16.4,14.7,27.5,19.1c10.7,4.4,23.1,6.5,36.3,6.5s24.6-1.4,34.4-4.1c9.5-2.7,17.7-5.5,24.6-8.5
|
||||
v112.6h37V523.2h29.1v118.4h37V529c7,3.1,14.8,6.1,24.6,8.5c9.8,2.7,21.2,4.1,34.4,4.1c13.6,0,25.6-2,36.3-6.5
|
||||
c10.7-4.4,19.9-10.6,27.5-19.1c7.3-8.2,13-18.8,17.1-31s6-26.6,6-42.3c0-13.3-1.6-24.9-4.4-34.5c-2.8-9.9-7.3-18.4-13-25.2
|
||||
c-5.7-7.2-12.3-12.6-20.5-17.1c-7.9-4.4-17.1-7.5-26.9-9.9v-2.4c7-1.7,13.6-4.4,19.9-8.5c6.6-4.1,12.3-9.6,17.1-16
|
||||
c5.1-6.8,8.8-14.7,12-23.9c2.8-9.2,4.4-19.8,4.4-31.7c0-12.6-1.9-24.2-5.7-34.5c-3.5-10.2-8.8-18.8-15.8-25.9
|
||||
c-7-7.2-15.2-12.6-25.3-16.4c-9.8-3.8-21.2-5.8-34.1-5.8c-13.6,0-25.9,2-37.3,6.1c-11.1,4.1-20.5,10.6-28.8,20.1
|
||||
c-7.9,9.2-14.2,21.5-18.6,36.8c-3.5,12.3-5.7,26.6-6.3,43.3h-29.7c-0.6-16.7-2.8-31-6.3-43.3c-4.4-15.4-10.7-27.6-18.6-36.8
|
||||
c-7.9-9.6-17.4-16-28.8-20.1C338.7,193,326,190.9,312.8,190.9z M416.7,197.8c-3.2,0-6.3,0.7-9.5,2.4c-2.8,1.4-5.4,3.1-7.6,5.5
|
||||
c-2.2,2.4-4.1,5.1-5.4,8.5c-1.3,3.1-1.9,6.5-1.9,10.2c0,3.4,0.6,6.8,1.9,9.9c1.3,3.1,3.2,5.8,5.4,8.2c2.2,2.4,4.7,4.4,7.6,5.8
|
||||
c2.8,1.4,6,2,9.5,2c3.2,0,6.3-0.7,9.2-2c2.8-1.4,5.7-3.4,7.9-5.8c2.2-2.4,3.8-5.1,5.1-8.2c1.3-3.1,1.9-6.5,1.9-9.9
|
||||
c0-3.4-0.6-6.8-1.9-10.2c-1.3-3.1-2.8-6.1-5.1-8.5c-2.2-2.4-4.7-4.1-7.9-5.5C423,198.4,419.9,197.8,416.7,197.8z M313.1,210
|
||||
c8.2,0,15.8,1.7,22.4,4.8c6.6,3.1,12.3,8.5,17.1,16.4c4.7,7.8,8.2,18.1,10.7,31.4c2.5,13,3.5,29.7,3.5,49.5v199.2
|
||||
c-7.9,2.7-16.4,5.1-25.9,6.8c-9.5,1.7-19.6,2.4-30.3,2.4c-16.1,0-28.4-6.1-37.3-18.8c-8.8-12.6-13.3-32.1-13.3-58.3
|
||||
c0-11.9,1.3-22.5,3.8-31.7c2.5-9.6,6.3-17.4,11.7-23.9s12.3-11.6,20.9-15.4c8.5-3.8,19-5.8,31.3-6.1v-18.8
|
||||
c-10.4-0.3-19.3-2-26.5-5.1c-7.3-3.1-13.3-7.8-18-14c-4.7-6.1-7.9-13.6-10.1-22.5c-2.2-9.2-3.2-19.8-3.2-31.7
|
||||
c0-9.6,0.9-18.4,2.5-26.3c1.6-7.8,4.1-14.7,7.9-20.1c3.5-5.5,7.9-9.9,13.3-13C299.2,211.4,305.5,210,313.1,210z M523.5,210
|
||||
c7.6,0,14.2,1.7,19.6,4.4c5.4,3.1,9.8,7.2,13.3,13c3.5,5.5,6.3,12.3,7.9,20.1c1.9,7.8,2.5,16.7,2.5,26.3c0,11.9-0.9,22.5-3.2,31.7
|
||||
c-2.2,8.9-5.4,16.4-10.1,22.5c-4.7,6.1-10.4,10.9-18,14c-7.3,3.1-16.1,4.8-26.5,5.1v18.8c12.3,0.3,22.7,2.4,31.3,6.1
|
||||
c8.5,3.8,15.5,8.9,20.9,15.4s9.5,14.7,11.7,23.9c2.5,9.2,3.8,19.8,3.8,31.7c0,26.3-4.4,45.7-13.3,58.3
|
||||
c-8.8,12.6-21.2,18.8-37.3,18.8c-10.7,0-20.9-0.7-30.3-2.4c-7.6-1.4-14.8-3.1-21.5-5.1v-0.7l-3.5-0.7c-0.3,0-0.9-0.3-1.3-0.3V311.7
|
||||
c0-20.1,1.3-36.5,3.5-49.5c2.5-13,6-23.5,10.7-31.4c4.7-7.8,10.4-13.3,17.1-16.4C507.7,211.7,515.3,210,523.5,210z"/>
|
||||
</g>
|
||||
<g id="Ebene_5">
|
||||
</g>
|
||||
<g id="Ebene_6" class="st4">
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -37,6 +37,7 @@ class Tester(TestCase):
|
||||
self.assertEqual(pil_format("jpeg"), "JPEG")
|
||||
self.assertEqual(pil_format("png"), "PNG")
|
||||
self.assertEqual(pil_format("gif"), "GIF")
|
||||
self.assertEqual(pil_format("webp"), "WEBP")
|
||||
self.assertEqual(pil_format("abc"), None)
|
||||
|
||||
def test_userprefs_str(self):
|
||||
|
||||
@@ -47,7 +47,7 @@ class Tester(TestCase):
|
||||
self.assertEqual(openid_variations(openid3)[3], openid3)
|
||||
|
||||
def test_is_trusted_url(self):
|
||||
test1 = is_trusted_url("https://gravatar.com/avatar/63a75a80e6b1f4adfdb04c1ca02e596c", [
|
||||
test_gravatar_true = is_trusted_url("https://gravatar.com/avatar/63a75a80e6b1f4adfdb04c1ca02e596c", [
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
@@ -57,9 +57,9 @@ class Tester(TestCase):
|
||||
"path_prefix": "/avatar/"
|
||||
}
|
||||
])
|
||||
self.assertTrue(test1)
|
||||
self.assertTrue(test_gravatar_true)
|
||||
|
||||
test2 = is_trusted_url("https://gravatar.com.example.org/avatar/63a75a80e6b1f4adfdb04c1ca02e596c", [
|
||||
test_gravatar_false = is_trusted_url("https://gravatar.com.example.org/avatar/63a75a80e6b1f4adfdb04c1ca02e596c", [
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
@@ -69,10 +69,9 @@ class Tester(TestCase):
|
||||
"path_prefix": "/avatar/"
|
||||
}
|
||||
])
|
||||
self.assertFalse(test2)
|
||||
self.assertFalse(test_gravatar_false)
|
||||
|
||||
# Test against open redirect with valid URL in query params
|
||||
test3 = is_trusted_url("https://github.com/SethFalco/?boop=https://secure.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50", [
|
||||
test_open_redirect = is_trusted_url("https://github.com/SethFalco/?boop=https://secure.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50", [
|
||||
{
|
||||
"schemes": [
|
||||
"http",
|
||||
@@ -82,9 +81,9 @@ class Tester(TestCase):
|
||||
"path_prefix": "/avatar/"
|
||||
}
|
||||
])
|
||||
self.assertFalse(test3)
|
||||
self.assertFalse(test_open_redirect)
|
||||
|
||||
test4 = is_trusted_url("https://ui-avatars.com/api/blah", [
|
||||
test_multiple_filters = is_trusted_url("https://ui-avatars.com/api/blah", [
|
||||
{
|
||||
"schemes": [
|
||||
"https"
|
||||
@@ -101,4 +100,18 @@ class Tester(TestCase):
|
||||
"path_prefix": "/avatar/"
|
||||
}
|
||||
])
|
||||
self.assertTrue(test4)
|
||||
self.assertTrue(test_multiple_filters)
|
||||
|
||||
test_url_prefix_true = is_trusted_url("https://ui-avatars.com/api/blah", [
|
||||
{
|
||||
"url_prefix": "https://ui-avatars.com/api/"
|
||||
}
|
||||
])
|
||||
self.assertTrue(test_url_prefix_true)
|
||||
|
||||
test_url_prefix_false = is_trusted_url("https://ui-avatars.com/api/blah", [
|
||||
{
|
||||
"url_prefix": "https://gravatar.com/avatar/"
|
||||
}
|
||||
])
|
||||
self.assertFalse(test_url_prefix_false)
|
||||
|
||||
@@ -50,11 +50,16 @@ class Tester(TestCase): # pylint: disable=too-many-public-methods
|
||||
Test incorrect digest
|
||||
"""
|
||||
response = self.client.get("/avatar/%s" % "x" * 65, follow=True)
|
||||
self.assertRedirects(
|
||||
response=response,
|
||||
expected_url="/static/img/deadbeef.png",
|
||||
msg_prefix="Why does an invalid hash not redirect to deadbeef?",
|
||||
self.assertEqual(
|
||||
response.redirect_chain[0][0],
|
||||
"/static/img/deadbeef.png",
|
||||
"Doesn't redirect to static?",
|
||||
)
|
||||
# self.assertRedirects(
|
||||
# response=response,
|
||||
# expected_url="/static/img/deadbeef.png",
|
||||
# msg_prefix="Why does an invalid hash not redirect to deadbeef?",
|
||||
# )
|
||||
|
||||
def test_stats(self):
|
||||
"""
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
ivatar/tools URL configuration
|
||||
"""
|
||||
|
||||
from django.conf.urls import url
|
||||
from django.urls import path, re_path
|
||||
from .views import CheckView, CheckDomainView
|
||||
|
||||
urlpatterns = [ # pylint: disable=invalid-name
|
||||
url("check/", CheckView.as_view(), name="tools_check"),
|
||||
url("check_domain/", CheckDomainView.as_view(), name="tools_check_domain"),
|
||||
url("check_domain$", CheckDomainView.as_view(), name="tools_check_domain"),
|
||||
path("check/", CheckView.as_view(), name="tools_check"),
|
||||
path("check_domain/", CheckDomainView.as_view(), name="tools_check_domain"),
|
||||
re_path("check_domain$", CheckDomainView.as_view(), name="tools_check_domain"),
|
||||
]
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
ivatar URL configuration
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
from django.conf.urls import url
|
||||
from django.urls import path, include, re_path
|
||||
from django.conf.urls.static import static
|
||||
from django.views.generic import TemplateView, RedirectView
|
||||
from ivatar import settings
|
||||
@@ -13,65 +12,72 @@ from .views import AvatarImageView, GravatarProxyView, StatsView
|
||||
urlpatterns = [ # pylint: disable=invalid-name
|
||||
path("admin/", admin.site.urls),
|
||||
path("i18n/", include("django.conf.urls.i18n")),
|
||||
url("openid/", include("django_openid_auth.urls")),
|
||||
url("tools/", include("ivatar.tools.urls")),
|
||||
url(r"avatar/(?P<digest>\w{64})", AvatarImageView.as_view(), name="avatar_view"),
|
||||
url(r"avatar/(?P<digest>\w{32})", AvatarImageView.as_view(), name="avatar_view"),
|
||||
url(r"avatar/$", AvatarImageView.as_view(), name="avatar_view"),
|
||||
url(
|
||||
path("openid/", include("django_openid_auth.urls")),
|
||||
path("tools/", include("ivatar.tools.urls")),
|
||||
re_path(
|
||||
r"avatar/(?P<digest>\w{64})", AvatarImageView.as_view(), name="avatar_view"
|
||||
),
|
||||
re_path(
|
||||
r"avatar/(?P<digest>\w{32})", AvatarImageView.as_view(), name="avatar_view"
|
||||
),
|
||||
re_path(r"avatar/$", AvatarImageView.as_view(), name="avatar_view"),
|
||||
re_path(
|
||||
r"avatar/(?P<digest>\w*)",
|
||||
RedirectView.as_view(url="/static/img/deadbeef.png"),
|
||||
name="invalid_hash",
|
||||
),
|
||||
url(
|
||||
re_path(
|
||||
r"gravatarproxy/(?P<digest>\w*)",
|
||||
GravatarProxyView.as_view(),
|
||||
name="gravatarproxy",
|
||||
),
|
||||
url(
|
||||
path(
|
||||
"description/",
|
||||
TemplateView.as_view(template_name="description.html"),
|
||||
name="description",
|
||||
),
|
||||
# The following two are TODO TODO TODO TODO TODO
|
||||
url(
|
||||
path(
|
||||
"run_your_own/",
|
||||
TemplateView.as_view(template_name="run_your_own.html"),
|
||||
name="run_your_own",
|
||||
),
|
||||
url(
|
||||
path(
|
||||
"features/",
|
||||
TemplateView.as_view(template_name="features.html"),
|
||||
name="features",
|
||||
),
|
||||
url(
|
||||
path(
|
||||
"security/",
|
||||
TemplateView.as_view(template_name="security.html"),
|
||||
name="security",
|
||||
),
|
||||
url("privacy/", TemplateView.as_view(template_name="privacy.html"), name="privacy"),
|
||||
url("contact/", TemplateView.as_view(template_name="contact.html"), name="contact"),
|
||||
path(
|
||||
"privacy/", TemplateView.as_view(template_name="privacy.html"), name="privacy"
|
||||
),
|
||||
path(
|
||||
"contact/", TemplateView.as_view(template_name="contact.html"), name="contact"
|
||||
),
|
||||
path("talk_to_us/", RedirectView.as_view(url="/contact"), name="talk_to_us"),
|
||||
url("stats/", StatsView.as_view(), name="stats"),
|
||||
path("stats/", StatsView.as_view(), name="stats"),
|
||||
]
|
||||
|
||||
MAINTENANCE = False
|
||||
try:
|
||||
if settings.MAINTENANCE:
|
||||
MAINTENANCE = True
|
||||
except: # pylint: disable=bare-except
|
||||
except Exception: # pylint: disable=bare-except
|
||||
pass
|
||||
|
||||
if MAINTENANCE:
|
||||
urlpatterns.append(
|
||||
url("", TemplateView.as_view(template_name="maintenance.html"), name="home")
|
||||
path("", TemplateView.as_view(template_name="maintenance.html"), name="home")
|
||||
)
|
||||
urlpatterns.insert(3, url("accounts/", RedirectView.as_view(url="/")))
|
||||
urlpatterns.insert(3, path("accounts/", RedirectView.as_view(url="/")))
|
||||
else:
|
||||
urlpatterns.append(
|
||||
url("", TemplateView.as_view(template_name="home.html"), name="home")
|
||||
path("", TemplateView.as_view(template_name="home.html"), name="home")
|
||||
)
|
||||
urlpatterns.insert(3, url("accounts/", include("ivatar.ivataraccount.urls")))
|
||||
|
||||
urlpatterns.insert(3, path("accounts/", include("ivatar.ivataraccount.urls")))
|
||||
|
||||
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
||||
|
||||
@@ -4,7 +4,8 @@ Simple module providing reusable random_string function
|
||||
"""
|
||||
import random
|
||||
import string
|
||||
from PIL import Image, ImageDraw
|
||||
from io import BytesIO
|
||||
from PIL import Image, ImageDraw, ImageSequence
|
||||
from urllib.parse import urlparse
|
||||
|
||||
|
||||
@@ -149,6 +150,34 @@ def is_trusted_url(url, url_filters):
|
||||
if not path.startswith(path_prefix):
|
||||
continue
|
||||
|
||||
if "url_prefix" in filter:
|
||||
url_prefix = filter["url_prefix"]
|
||||
|
||||
if not url.startswith(url_prefix):
|
||||
continue
|
||||
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def resize_animated_gif(input_pil: Image, size: list) -> BytesIO:
|
||||
def _thumbnail_frames(image):
|
||||
for frame in ImageSequence.Iterator(image):
|
||||
new_frame = frame.copy()
|
||||
new_frame.thumbnail(size)
|
||||
yield new_frame
|
||||
|
||||
frames = list(_thumbnail_frames(input_pil))
|
||||
output = BytesIO()
|
||||
output_image = frames[0]
|
||||
output_image.save(
|
||||
output,
|
||||
format="gif",
|
||||
save_all=True,
|
||||
optimize=False,
|
||||
append_images=frames[1:],
|
||||
disposal=input_pil.disposal_method,
|
||||
**input_pil.info,
|
||||
)
|
||||
return output
|
||||
|
||||
@@ -34,7 +34,7 @@ from .ivataraccount.models import ConfirmedEmail, ConfirmedOpenId
|
||||
from .ivataraccount.models import UnconfirmedEmail, UnconfirmedOpenId
|
||||
from .ivataraccount.models import Photo
|
||||
from .ivataraccount.models import pil_format, file_format
|
||||
from .utils import is_trusted_url, mm_ng
|
||||
from .utils import is_trusted_url, mm_ng, resize_animated_gif
|
||||
|
||||
URL_TIMEOUT = 5 # in seconds
|
||||
|
||||
@@ -141,18 +141,20 @@ class AvatarImageView(TemplateView):
|
||||
if "default" in request.GET:
|
||||
default = request.GET["default"]
|
||||
|
||||
# Check if default starts with an URL scheme and if it does,
|
||||
# check if it's trusted
|
||||
# Check for :// (schema)
|
||||
if default is not None and default.find("://") > 0:
|
||||
# Check if it's trusted, if not, reset to None
|
||||
trusted_url = is_trusted_url(default, TRUSTED_DEFAULT_URLS)
|
||||
|
||||
if not trusted_url:
|
||||
print(
|
||||
"Default URL is not in trusted URLs: '%s' ; Kicking it!" % default
|
||||
)
|
||||
if default is not None:
|
||||
if TRUSTED_DEFAULT_URLS is None:
|
||||
print("Query parameter `default` is disabled.")
|
||||
default = None
|
||||
elif default.find("://") > 0:
|
||||
# Check if it's trusted, if not, reset to None
|
||||
trusted_url = is_trusted_url(default, TRUSTED_DEFAULT_URLS)
|
||||
|
||||
if not trusted_url:
|
||||
print(
|
||||
"Default URL is not in trusted URLs: '%s' ; Kicking it!"
|
||||
% default
|
||||
)
|
||||
default = None
|
||||
|
||||
if "f" in request.GET:
|
||||
if request.GET["f"] == "y":
|
||||
@@ -317,14 +319,23 @@ class AvatarImageView(TemplateView):
|
||||
|
||||
imgformat = obj.photo.format
|
||||
photodata = Image.open(BytesIO(obj.photo.data))
|
||||
# If the image is smaller than what was requested, we need
|
||||
# to use the function resize
|
||||
if photodata.size[0] < size or photodata.size[1] < size:
|
||||
photodata = photodata.resize((size, size), Image.ANTIALIAS)
|
||||
else:
|
||||
photodata.thumbnail((size, size), Image.ANTIALIAS)
|
||||
|
||||
data = BytesIO()
|
||||
photodata.save(data, pil_format(imgformat), quality=JPEG_QUALITY)
|
||||
|
||||
# Animated GIFs need additional handling
|
||||
if imgformat == "gif" and photodata.is_animated:
|
||||
# Debug only
|
||||
# print("Object is animated and has %i frames" % photodata.n_frames)
|
||||
data = resize_animated_gif(photodata, (size, size))
|
||||
else:
|
||||
# If the image is smaller than what was requested, we need
|
||||
# to use the function resize
|
||||
if photodata.size[0] < size or photodata.size[1] < size:
|
||||
photodata = photodata.resize((size, size), Image.ANTIALIAS)
|
||||
else:
|
||||
photodata.thumbnail((size, size), Image.ANTIALIAS)
|
||||
photodata.save(data, pil_format(imgformat), quality=JPEG_QUALITY)
|
||||
|
||||
data.seek(0)
|
||||
obj.photo.access_count += 1
|
||||
obj.photo.save()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
autopep8
|
||||
bcrypt
|
||||
defusedxml
|
||||
Django < 4.0
|
||||
Django
|
||||
django-anymail[mailgun]
|
||||
django-auth-ldap
|
||||
django-bootstrap4
|
||||
@@ -12,6 +12,7 @@ django-user-accounts
|
||||
email-validator
|
||||
fabric
|
||||
flake8-respect-noqa
|
||||
git+https://github.com/daboth/pagan.git
|
||||
git+https://github.com/ercpe/pydenticon5.git
|
||||
git+https://github.com/flavono123/identicon.git
|
||||
git+https://github.com/ofalk/django-openid-auth
|
||||
@@ -19,7 +20,6 @@ git+https://github.com/ofalk/monsterid.git
|
||||
git+https://github.com/ofalk/Robohash.git@devel
|
||||
mysqlclient
|
||||
notsetuptools
|
||||
pagan
|
||||
Pillow
|
||||
pip
|
||||
psycopg2-binary
|
||||
@@ -27,10 +27,10 @@ py3dns
|
||||
pydocstyle
|
||||
pyLibravatar
|
||||
pylint
|
||||
pymemcache
|
||||
PyMySQL
|
||||
python-coveralls
|
||||
python-language-server
|
||||
python-memcached
|
||||
python3-openid
|
||||
pytz
|
||||
rope
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% load static %}
|
||||
{% load i18n %}<!DOCTYPE HTML>
|
||||
{% include 'header.html' %}
|
||||
<link rel="stylesheet" href="{% static "css/surly-badges.local.css" %}" type="text/css">
|
||||
<title>{{ site_name }} :: {% block title %}{% trans 'Freeing the Web, one face at a time!' %}{% endblock title %}</title>
|
||||
|
||||
{% spaceless %}
|
||||
|
||||
@@ -88,5 +88,11 @@
|
||||
<br/>
|
||||
<a href="https://gandi.net/" target="_new" ><img src="{% static '/img/gandi_logo.png' %}" height="60" title="Gandi" alt="{% trans 'Gandi Logo' %}"></a>
|
||||
</div>
|
||||
<div style="padding-bottom:10px;" class="text-center">
|
||||
<h3>{% trans 'Awards' %}</h3>
|
||||
<br/>
|
||||
{% include 'surely-badge.html' %}
|
||||
</div>
|
||||
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
<p>
|
||||
<button type="submit" class="button">{% trans 'Login' %}</button>
|
||||
<input type="hidden" name="next" value="{{ request.build_absolute_uri }}{% url 'profile' %}" />
|
||||
<input type="hidden" name="next" value="{% url 'profile' %}" />
|
||||
|
||||
<button type="reset" class="button" onclick="window.history.back();">{% trans 'Cancel' %}</button>
|
||||
|
||||
|
||||
@@ -65,6 +65,9 @@ ivatar/Libravatar more secure by reporting security issues to us.
|
||||
title="https://daniel.priv.no/" target="_new">
|
||||
Daniel Aleksandersen</a>:
|
||||
Spotted and reported an open redirect vulnerability, as described in <a href="https://cwe.mitre.org/data/definitions/601.html" taget="_new">CWE-601</a>.</li>
|
||||
<li>
|
||||
MR_NETWORK & Farzan ʷᵒⁿᵈᵉʳ:
|
||||
Spotted a problematic use of SECRET_KEY in the production environment. Many thanks for reporting it to us!</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
18
templates/surely-badge.html
Normal file
18
templates/surely-badge.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<div id="surly-badge" class="surly__id_99419222 surly-badge_white-blue" style="margin:auto;">
|
||||
<div class="surly-badge__header">
|
||||
<h3 class="surly-badge__header-title">External links</h3>
|
||||
<p class="surly-badge__header-text">HERO</p>
|
||||
</div>
|
||||
<div class="surly-badge__tag">
|
||||
<a class="surly-badge__tag-text" href="https://sur.ly/i/libravatar.org/">
|
||||
libravatar.org
|
||||
</a>
|
||||
</div>
|
||||
<div class="surly-badge__footer">
|
||||
<h3 class="surly-badge__footer-title">Healthy & safe</h3>
|
||||
<p class="surly-badge__footer-text">Checked by
|
||||
<a href="https://sur.ly" class="surly-badge__footer-link">Sur.ly</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="surly-badge__date">2022</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user