mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2025-12-29 13:10:13 -05:00
Compare commits
386 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5312496e3 | ||
|
|
7f57e7ab56 | ||
|
|
7725665aa4 | ||
|
|
74e3d09065 | ||
|
|
0522fa0236 | ||
|
|
38aeb285c5 | ||
|
|
a9a0716c45 | ||
|
|
afc31b313f | ||
|
|
151f43b0d5 | ||
|
|
a695261b9c | ||
|
|
1229a37d74 | ||
|
|
ef200a4283 | ||
|
|
018fcf27ea | ||
|
|
b3504699b1 | ||
|
|
cdf4476345 | ||
|
|
0edc9f48c9 | ||
|
|
41885f7d05 | ||
|
|
2b7769e92f | ||
|
|
6a47d56da4 | ||
|
|
d456d4ae64 | ||
|
|
7b55bcb045 | ||
|
|
bee1d717c5 | ||
|
|
c91fc096b3 | ||
|
|
2297210a3f | ||
|
|
d59f14001c | ||
|
|
5e5941397b | ||
|
|
3ca71c6847 | ||
|
|
2c381eb870 | ||
|
|
230a368d38 | ||
|
|
5db7267a7d | ||
|
|
528da111f9 | ||
|
|
926097a699 | ||
|
|
0b3e86f6fd | ||
|
|
24e4ea354d | ||
|
|
08bc87960b | ||
|
|
9751821f76 | ||
|
|
fa12d02a3d | ||
|
|
9856857c51 | ||
|
|
c52cd359a1 | ||
|
|
5e9ce955bc | ||
|
|
f7d85bb4b8 | ||
|
|
46db6d4186 | ||
|
|
6724328b51 | ||
|
|
0da39f2e1f | ||
|
|
99fbc5e97c | ||
|
|
a0b6261275 | ||
|
|
061aefd233 | ||
|
|
d4e332456b | ||
|
|
500bb3af72 | ||
|
|
888106bb6f | ||
|
|
8daa0ada9b | ||
|
|
98711619ff | ||
|
|
9eb17df575 | ||
|
|
c71a7dad24 | ||
|
|
b92e51c0c7 | ||
|
|
87e8268a43 | ||
|
|
5b79db0725 | ||
|
|
3aade540c1 | ||
|
|
74f155b6f5 | ||
|
|
2539d19ff4 | ||
|
|
166f4c5f6b | ||
|
|
ed313cbf9a | ||
|
|
b1db591e9f | ||
|
|
94c51f90cd | ||
|
|
3074d916dc | ||
|
|
bf467b1ec0 | ||
|
|
348c1c78f1 | ||
|
|
913e896906 | ||
|
|
a0a673a0c9 | ||
|
|
3d60379ed0 | ||
|
|
fd7e20a46b | ||
|
|
a970f0c00e | ||
|
|
297dd6244a | ||
|
|
c9fcbc9ff0 | ||
|
|
c83eb1a42b | ||
|
|
8181a6d416 | ||
|
|
4a8b50aeba | ||
|
|
388ef32475 | ||
|
|
bfe72210df | ||
|
|
02c5aed0a3 | ||
|
|
6fc0c02674 | ||
|
|
040af330cc | ||
|
|
05caad5cfe | ||
|
|
7aa1c7b53b | ||
|
|
ad24a44588 | ||
|
|
9f4eb91287 | ||
|
|
9982cae7c3 | ||
|
|
6d065cb939 | ||
|
|
b10163e309 | ||
|
|
28b8973259 | ||
|
|
4f09970130 | ||
|
|
e05019d2b1 | ||
|
|
3c778927e2 | ||
|
|
505b60cb14 | ||
|
|
14ca61b11f | ||
|
|
22900dc460 | ||
|
|
28806e6857 | ||
|
|
dbf1334ec0 | ||
|
|
7e0d9bfe49 | ||
|
|
56f80acede | ||
|
|
46a8a9f60d | ||
|
|
71fdfe6acb | ||
|
|
50572e9a36 | ||
|
|
c8054349b2 | ||
|
|
0ec5d669dd | ||
|
|
6dd778112a | ||
|
|
a14e33973c | ||
|
|
a8d01f4d5a | ||
|
|
58f841a770 | ||
|
|
c851b54a22 | ||
|
|
df53fdeb03 | ||
|
|
18333563f2 | ||
|
|
286118093c | ||
|
|
066ca27712 | ||
|
|
03c78f539d | ||
|
|
be225d2b8c | ||
|
|
3340ef9ca4 | ||
|
|
fe3e611dd1 | ||
|
|
61d1528911 | ||
|
|
88524b0411 | ||
|
|
e774845ade | ||
|
|
9a8049f71b | ||
|
|
d67bb9de25 | ||
|
|
4b7896f7d1 | ||
|
|
66ce1a88f6 | ||
|
|
9ad42ae869 | ||
|
|
1e72893c84 | ||
|
|
a21755cf81 | ||
|
|
f0ba8eb788 | ||
|
|
149020f930 | ||
|
|
200adb2fcf | ||
|
|
bbd4d20210 | ||
|
|
8aa11836a3 | ||
|
|
35338e2765 | ||
|
|
ddc91d910f | ||
|
|
34085fc949 | ||
|
|
4ab56ef9f7 | ||
|
|
47b873a2af | ||
|
|
34128ba3a3 | ||
|
|
fae25b83fa | ||
|
|
a2322c18eb | ||
|
|
f99793fc1a | ||
|
|
b10b811550 | ||
|
|
792ee43377 | ||
|
|
157beb3376 | ||
|
|
1313c962fa | ||
|
|
17c18c6d08 | ||
|
|
7650edfdc8 | ||
|
|
46e48cd3a5 | ||
|
|
223f899e88 | ||
|
|
d56c8c283c | ||
|
|
67cd74860f | ||
|
|
4df87bc7c7 | ||
|
|
16237866a1 | ||
|
|
79cc8cc905 | ||
|
|
3e2f3effeb | ||
|
|
5623879919 | ||
|
|
b1b1373d65 | ||
|
|
3270f56744 | ||
|
|
36df86c26c | ||
|
|
532d6e2867 | ||
|
|
7c6d32456a | ||
|
|
6b8aa99b24 | ||
|
|
65a6c08015 | ||
|
|
22f4612d12 | ||
|
|
f65a5a9ad7 | ||
|
|
02b2d953ce | ||
|
|
19cdf3a919 | ||
|
|
6dfe737ec5 | ||
|
|
6110c75f59 | ||
|
|
984d5aae11 | ||
|
|
e345d2eb39 | ||
|
|
90e1e69dac | ||
|
|
c4880bf5b0 | ||
|
|
3baa03396c | ||
|
|
373df5d99f | ||
|
|
d36274066a | ||
|
|
59c33798b8 | ||
|
|
d7afbc5745 | ||
|
|
c62a88d032 | ||
|
|
ed76f020c5 | ||
|
|
8b61d8c504 | ||
|
|
82abdd0144 | ||
|
|
04d131f534 | ||
|
|
8cc74f3dcd | ||
|
|
bd46962b71 | ||
|
|
059987fd9f | ||
|
|
2ecc0ab680 | ||
|
|
a69fb4922d | ||
|
|
358ba5120d | ||
|
|
254267c2a7 | ||
|
|
a701437548 | ||
|
|
25f6adba1f | ||
|
|
018fa0a62f | ||
|
|
faf458e8ef | ||
|
|
2c5348fcb4 | ||
|
|
2b16f966a2 | ||
|
|
c2931137bb | ||
|
|
461d53671c | ||
|
|
3e4e55e9c5 | ||
|
|
11fa23f3da | ||
|
|
6de128757f | ||
|
|
7c682ebab3 | ||
|
|
ee165ef0f1 | ||
|
|
4bc4ce0d7c | ||
|
|
c50bd039ef | ||
|
|
5fff5b97da | ||
|
|
2c27e06bfb | ||
|
|
e4044016c3 | ||
|
|
52df886372 | ||
|
|
c7949edb18 | ||
|
|
342a261017 | ||
|
|
e5984abd97 | ||
|
|
2ea3e4f8f3 | ||
|
|
98b3b002f9 | ||
|
|
d2a1a0ac32 | ||
|
|
2ceefdd9b0 | ||
|
|
b22392726f | ||
|
|
b89fedd07f | ||
|
|
a263771383 | ||
|
|
7cc757ac33 | ||
|
|
6acbd6d308 | ||
|
|
30a357e27f | ||
|
|
7bc3292301 | ||
|
|
7fb440a855 | ||
|
|
0e27ddab74 | ||
|
|
0a38049ce4 | ||
|
|
4aaecb4ada | ||
|
|
3f5e64fc4a | ||
|
|
154527ef1b | ||
|
|
788e253749 | ||
|
|
7c8b489857 | ||
|
|
cdc25b480d | ||
|
|
1568d86143 | ||
|
|
adeb360837 | ||
|
|
9cc6a1dc79 | ||
|
|
6a13619bbd | ||
|
|
58e33ef31a | ||
|
|
36841d74af | ||
|
|
8094c7d53a | ||
|
|
71e02c0916 | ||
|
|
25fb41baed | ||
|
|
34ff484830 | ||
|
|
91e36eb222 | ||
|
|
55ba568f3c | ||
|
|
8f3f1c230c | ||
|
|
1690abaf47 | ||
|
|
7414033495 | ||
|
|
d1b9d15816 | ||
|
|
ff43492265 | ||
|
|
3daebc4170 | ||
|
|
67485c0ea3 | ||
|
|
aafbc497cc | ||
|
|
0a99791021 | ||
|
|
7bc4ae9870 | ||
|
|
84bd33f93e | ||
|
|
7cd6a7c2a6 | ||
|
|
c661646f46 | ||
|
|
7a017899ee | ||
|
|
0ec29636b3 | ||
|
|
5ef5530392 | ||
|
|
689c447b6c | ||
|
|
239ba5f861 | ||
|
|
43c71af2af | ||
|
|
b9040cb3a4 | ||
|
|
c710d42ccb | ||
|
|
1bc5af1cab | ||
|
|
23415f8a61 | ||
|
|
d00fa10b9f | ||
|
|
cc34496c00 | ||
|
|
be84e44e43 | ||
|
|
ae3eb6cfe5 | ||
|
|
d06e6c0ab3 | ||
|
|
eba3bfa828 | ||
|
|
5ee718b578 | ||
|
|
6e91f34779 | ||
|
|
dc27f39393 | ||
|
|
ec95f8032c | ||
|
|
94b56ff742 | ||
|
|
fd1258f851 | ||
|
|
6f104d8aa4 | ||
|
|
d35f8a0ccd | ||
|
|
f2d761f7d9 | ||
|
|
d9a92fac95 | ||
|
|
a1572a4809 | ||
|
|
2b5dceee7c | ||
|
|
62e9a7f29c | ||
|
|
66bb5b4328 | ||
|
|
0f4cd4b17c | ||
|
|
ae3835b541 | ||
|
|
28fedfda1f | ||
|
|
92c65ec1e8 | ||
|
|
a376c3a5b6 | ||
|
|
058d705170 | ||
|
|
4ad5d6ef2f | ||
|
|
e676b4bac3 | ||
|
|
04488741c4 | ||
|
|
99004ad34b | ||
|
|
f78f7dfc14 | ||
|
|
49fb1e7183 | ||
|
|
7930c2417c | ||
|
|
880db58d38 | ||
|
|
2f27413c0a | ||
|
|
5869a8ad1b | ||
|
|
0640a265fc | ||
|
|
d449fc8fd8 | ||
|
|
b9ee77709b | ||
|
|
f594ba4c69 | ||
|
|
d1d65d878c | ||
|
|
3194a7580d | ||
|
|
ba061df1b6 | ||
|
|
7cc515bcdf | ||
|
|
724748d38a | ||
|
|
b2c1c6e301 | ||
|
|
987be4b04d | ||
|
|
ca84da68c4 | ||
|
|
d75e39fbcd | ||
|
|
eb2593aacd | ||
|
|
496e04cfc8 | ||
|
|
d814d13d54 | ||
|
|
d0cedaf7a1 | ||
|
|
01f504f7b1 | ||
|
|
c716346f1f | ||
|
|
fef5236931 | ||
|
|
b115c37eb8 | ||
|
|
1e17f3703a | ||
|
|
468b986314 | ||
|
|
a531d135b5 | ||
|
|
7524609cd0 | ||
|
|
a28f8e65d5 | ||
|
|
d193637091 | ||
|
|
0953af05fc | ||
|
|
19e8e5cb5b | ||
|
|
43c808380d | ||
|
|
7ab8b84044 | ||
|
|
d739fe6752 | ||
|
|
a84c41e29f | ||
|
|
393aba1f31 | ||
|
|
436a070730 | ||
|
|
2fe6788ce5 | ||
|
|
747d146389 | ||
|
|
efe4c4043d | ||
|
|
c6739ba8e0 | ||
|
|
50140db668 | ||
|
|
028b2dfb22 | ||
|
|
ec6a10ca0a | ||
|
|
3cf949bf8d | ||
|
|
0a62225797 | ||
|
|
a54f4e1367 | ||
|
|
bf3c30a8fb | ||
|
|
f811f5996e | ||
|
|
a3490240f4 | ||
|
|
b26aea96f4 | ||
|
|
4d4af5fdf2 | ||
|
|
3da74505d6 | ||
|
|
c8a4861df8 | ||
|
|
5e27cd606e | ||
|
|
a341fd8ebe | ||
|
|
9a62b6e4e7 | ||
|
|
f80c44bca3 | ||
|
|
09d2e9f831 | ||
|
|
4d5a9e446f | ||
|
|
6a2c27749f | ||
|
|
de60e12073 | ||
|
|
1188ed9227 | ||
|
|
cb708e7e47 | ||
|
|
215eadb4a0 | ||
|
|
4ffc54f720 | ||
|
|
21f6c7a21f | ||
|
|
ce7c6939d2 | ||
|
|
40a2f7ff90 | ||
|
|
4015517c0a | ||
|
|
7c8d41753c | ||
|
|
90670613c5 | ||
|
|
647c1678f1 | ||
|
|
44dee16e0a | ||
|
|
f8fedcac82 | ||
|
|
3a48d0e580 | ||
|
|
9930789aa8 | ||
|
|
83fce6461a | ||
|
|
f0d37244b6 | ||
|
|
386834f409 | ||
|
|
17c5084bc0 | ||
|
|
e38f50c352 | ||
|
|
c1abff8da0 | ||
|
|
331d85a993 |
@@ -20,6 +20,10 @@ POSTGRES_USER=djangouser
|
||||
POSTGRES_PASSWORD=
|
||||
POSTGRES_DB=djangodb
|
||||
|
||||
# database connection string, when used overrides other database settings.
|
||||
# format might vary depending on backend
|
||||
# DATABASE_URL = engine://username:password@host:port/dbname
|
||||
|
||||
# the default value for the user preference 'fractions' (enable/disable fraction support)
|
||||
# default: disabled=0
|
||||
FRACTION_PREF_DEFAULT=0
|
||||
@@ -34,7 +38,7 @@ COMMENT_PREF_DEFAULT=1
|
||||
SHOPPING_MIN_AUTOSYNC_INTERVAL=5
|
||||
|
||||
# Default for user setting sticky navbar
|
||||
#STICKY_NAV_PREF_DEFAULT=1
|
||||
# STICKY_NAV_PREF_DEFAULT=1
|
||||
|
||||
# If staticfiles are stored at a different location uncomment and change accordingly
|
||||
# STATIC_URL=/static/
|
||||
@@ -48,11 +52,54 @@ SHOPPING_MIN_AUTOSYNC_INTERVAL=5
|
||||
# when unset: 1 (true) - this is temporary until an appropriate amount of time has passed for everyone to migrate
|
||||
GUNICORN_MEDIA=0
|
||||
|
||||
# S3 Media settings: store mediafiles in s3 or any compatible storage backend (e.g. minio)
|
||||
# as long as S3_ACCESS_KEY is not set S3 features are disabled
|
||||
# S3_ACCESS_KEY=
|
||||
# S3_SECRET_ACCESS_KEY=
|
||||
# S3_BUCKET_NAME=
|
||||
# S3_REGION_NAME= # default none, set your region might be required
|
||||
# S3_QUERYSTRING_AUTH=1 # default true, set to 0 to serve media from a public bucket without signed urls
|
||||
# S3_QUERYSTRING_EXPIRE=3600 # number of seconds querystring are valid for
|
||||
# S3_ENDPOINT_URL= # when using a custom endpoint like minio
|
||||
|
||||
# Email Settings, see https://docs.djangoproject.com/en/3.2/ref/settings/#email-host
|
||||
# Required for email confirmation and password reset (automatically activates if host is set)
|
||||
# EMAIL_HOST=
|
||||
# EMAIL_PORT=
|
||||
# EMAIL_HOST_USER=
|
||||
# EMAIL_HOST_PASSWORD=
|
||||
# EMAIL_USE_TLS=0
|
||||
# EMAIL_USE_SSL=0
|
||||
# DEFAULT_FROM_EMAIL= # email sender address (default 'webmaster@localhost')
|
||||
# ACCOUNT_EMAIL_SUBJECT_PREFIX= # prefix used for account related emails (default "[Tandoor Recipes] ")
|
||||
|
||||
# allow authentication via reverse proxy (e.g. authelia), leave off if you dont know what you are doing
|
||||
# see docs for more information https://vabene1111.github.io/recipes/features/authentication/
|
||||
# when unset: 0 (false)
|
||||
REVERSE_PROXY_AUTH=0
|
||||
|
||||
# Default settings for spaces, apply per space and can be changed in the admin view
|
||||
# SPACE_DEFAULT_MAX_RECIPES=0 # 0=unlimited recipes
|
||||
# SPACE_DEFAULT_MAX_USERS=0 # 0=unlimited users per space
|
||||
# SPACE_DEFAULT_FILES=1 # 1=can upload files (images, etc.) NOT IMPLEMENTED YET
|
||||
|
||||
# allow people to create accounts on your application instance (without an invite link)
|
||||
# when unset: 0 (false)
|
||||
# ENABLE_SIGNUP=0
|
||||
|
||||
# If signup is enabled you might want to add a captcha to it to prevent spam
|
||||
# HCAPTCHA_SITEKEY=
|
||||
# HCAPTCHA_SECRET=
|
||||
|
||||
# if signup is enabled you might want to provide urls to data protection policies or terms and conditions
|
||||
# TERMS_URL=
|
||||
# PRIVACY_URL=
|
||||
# IMPRINT_URL=
|
||||
|
||||
# enable serving of prometheus metrics under the /metrics path
|
||||
# ATTENTION: view is not secured (as per the prometheus default way) so make sure to secure it
|
||||
# trough your web server (or leave it open of you dont care if the stats are exposed)
|
||||
# ENABLE_METRICS=0
|
||||
|
||||
# allows you to setup OAuth providers
|
||||
# see docs for more information https://vabene1111.github.io/recipes/features/authentication/
|
||||
|
||||
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -9,14 +9,14 @@ jobs:
|
||||
strategy:
|
||||
max-parallel: 4
|
||||
matrix:
|
||||
python-version: [3.8]
|
||||
python-version: [3.9]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python 3.8
|
||||
- name: Set up Python 3.9
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: 3.8
|
||||
python-version: 3.9
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
|
||||
4
.idea/recipes.iml
generated
4
.idea/recipes.iml
generated
@@ -6,7 +6,7 @@
|
||||
<option name="rootFolder" value="$MODULE_DIR$" />
|
||||
<option name="settingsModule" value="recipes/settings.py" />
|
||||
<option name="manageScript" value="$MODULE_DIR$/manage.py" />
|
||||
<option name="environment" value="<map> <entry> <string>POSTGRES_USER</string> <string>postgres</string> </entry> <entry> <string>POSTGRES_HOST</string> <string>localhost</string> </entry> <entry> <string>DB_ENGINE</string> <string>django.db.backends.postgresql_psycopg2</string> </entry> <entry> <string>POSTGRES_PORT</string> <string>5432</string> </entry> <entry> <string>POSTGRES_PASSWORD</string> <string>Computer1234</string> </entry> <entry> <string>POSTGRES_DB</string> <string>recipes_db</string> </entry> </map>" />
|
||||
<option name="environment" value="<map/>" />
|
||||
<option name="doNotUseTestRunner" value="false" />
|
||||
<option name="trackFilePattern" value="migrations" />
|
||||
</configuration>
|
||||
@@ -18,7 +18,7 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/staticfiles" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.8 (recipes)" jdkType="Python SDK" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.9 (recipes)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TemplatesService">
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
|
||||

|
||||
|
||||
# Your Feedback
|
||||
|
||||
Share some information on how you use Tandoor to help me improve the application [Google Survey](https://forms.gle/qNfLK2tWTeWHe9Qd7)
|
||||
|
||||
## Features
|
||||
|
||||
- 📦 **Sync** files with Dropbox and Nextcloud (more can easily be added)
|
||||
|
||||
@@ -7,7 +7,8 @@ from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword,
|
||||
RecipeBook, RecipeBookEntry, RecipeImport, ShareLink,
|
||||
ShoppingList, ShoppingListEntry, ShoppingListRecipe,
|
||||
Space, Step, Storage, Sync, SyncLog, Unit, UserPreference,
|
||||
ViewLog, Supermarket, SupermarketCategory, SupermarketCategoryRelation, ImportLog, TelegramBot)
|
||||
ViewLog, Supermarket, SupermarketCategory, SupermarketCategoryRelation,
|
||||
ImportLog, TelegramBot, BookmarkletImport, UserFile)
|
||||
|
||||
|
||||
class CustomUserAdmin(UserAdmin):
|
||||
@@ -165,7 +166,7 @@ admin.site.register(ViewLog, ViewLogAdmin)
|
||||
|
||||
class InviteLinkAdmin(admin.ModelAdmin):
|
||||
list_display = (
|
||||
'username', 'group', 'valid_until',
|
||||
'group', 'valid_until',
|
||||
'created_by', 'created_at', 'used_by'
|
||||
)
|
||||
|
||||
@@ -227,3 +228,17 @@ class TelegramBotAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
admin.site.register(TelegramBot, TelegramBotAdmin)
|
||||
|
||||
|
||||
class BookmarkletImportAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'url', 'created_by', 'created_at',)
|
||||
|
||||
|
||||
admin.site.register(BookmarkletImport, BookmarkletImportAdmin)
|
||||
|
||||
|
||||
class UserFileAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name', 'file_size_kb', 'created_at',)
|
||||
|
||||
|
||||
admin.site.register(UserFile, UserFileAdmin)
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.forms import widgets
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_scopes import scopes_disabled
|
||||
from django_scopes.forms import SafeModelChoiceField, SafeModelMultipleChoiceField
|
||||
from emoji_picker.widgets import EmojiPickerTextInput
|
||||
from hcaptcha.fields import hCaptchaField
|
||||
|
||||
from .models import (Comment, Food, InviteLink, Keyword, MealPlan, Recipe,
|
||||
RecipeBook, RecipeBookEntry, Storage, Sync, Unit, User,
|
||||
@@ -42,10 +46,15 @@ class UserPreferenceForm(forms.ModelForm):
|
||||
)
|
||||
|
||||
help_texts = {
|
||||
'nav_color': _('Color of the top navigation bar. Not all colors work with all themes, just try them out!'), # noqa: E501
|
||||
'nav_color': _('Color of the top navigation bar. Not all colors work with all themes, just try them out!'),
|
||||
# noqa: E501
|
||||
'default_unit': _('Default Unit to be used when inserting a new ingredient into a recipe.'), # noqa: E501
|
||||
'use_fractions': _('Enables support for fractions in ingredient amounts (e.g. convert decimals to fractions automatically)'), # noqa: E501
|
||||
'plan_share': _('Users with whom newly created meal plan/shopping list entries should be shared by default.'), # noqa: E501
|
||||
'use_fractions': _(
|
||||
'Enables support for fractions in ingredient amounts (e.g. convert decimals to fractions automatically)'),
|
||||
# noqa: E501
|
||||
'plan_share': _(
|
||||
'Users with whom newly created meal plan/shopping list entries should be shared by default.'),
|
||||
# noqa: E501
|
||||
'show_recent': _('Show recently viewed recipes on search page.'), # noqa: E501
|
||||
'ingredient_decimals': _('Number of decimals to round ingredients.'), # noqa: E501
|
||||
'comments': _('If you want to be able to create and see comments underneath recipes.'), # noqa: E501
|
||||
@@ -69,7 +78,7 @@ class UserNameForm(forms.ModelForm):
|
||||
fields = ('first_name', 'last_name')
|
||||
|
||||
help_texts = {
|
||||
'first_name': _('Both fields are optional. If none are given the username will be displayed instead') # noqa: E501
|
||||
'first_name': _('Both fields are optional. If none are given the username will be displayed instead')
|
||||
}
|
||||
|
||||
|
||||
@@ -112,22 +121,28 @@ class ImportExportBase(forms.Form):
|
||||
SAFRON = 'SAFRON'
|
||||
CHEFTAP = 'CHEFTAP'
|
||||
PEPPERPLATE = 'PEPPERPLATE'
|
||||
RECIPEKEEPER = 'RECIPEKEEPER'
|
||||
RECETTETEK = 'RECETTETEK'
|
||||
RECIPESAGE = 'RECIPESAGE'
|
||||
DOMESTICA = 'DOMESTICA'
|
||||
MEALMASTER = 'MEALMASTER'
|
||||
REZKONV = 'REZKONV'
|
||||
OPENEATS = 'OPENEATS'
|
||||
|
||||
type = forms.ChoiceField(choices=(
|
||||
(DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'),
|
||||
(MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'), (SAFRON, 'Safron'), (CHEFTAP, 'ChefTap'),
|
||||
(PEPPERPLATE, 'Pepperplate'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'),
|
||||
(MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'),
|
||||
(PEPPERPLATE, 'Pepperplate'), (RECETTETEK, 'RecetteTek'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'),
|
||||
(MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), (OPENEATS, 'Openeats'), (RECIPEKEEPER, 'Recipe Keeper'),
|
||||
|
||||
))
|
||||
|
||||
|
||||
class ImportForm(ImportExportBase):
|
||||
files = forms.FileField(required=True, widget=forms.ClearableFileInput(attrs={'multiple': True}))
|
||||
duplicates = forms.BooleanField(help_text=_('To prevent duplicates recipes with the same name as existing ones are ignored. Check this box to import everything.'), required=False)
|
||||
duplicates = forms.BooleanField(help_text=_(
|
||||
'To prevent duplicates recipes with the same name as existing ones are ignored. Check this box to import everything.'),
|
||||
required=False)
|
||||
|
||||
|
||||
class ExportForm(ImportExportBase):
|
||||
@@ -250,7 +265,8 @@ class StorageForm(forms.ModelForm):
|
||||
fields = ('name', 'method', 'username', 'password', 'token', 'url', 'path')
|
||||
|
||||
help_texts = {
|
||||
'url': _('Leave empty for dropbox and enter only base url for nextcloud (<code>/remote.php/webdav/</code> is added automatically)'),
|
||||
'url': _(
|
||||
'Leave empty for dropbox and enter only base url for nextcloud (<code>/remote.php/webdav/</code> is added automatically)'),
|
||||
}
|
||||
|
||||
|
||||
@@ -365,7 +381,8 @@ class MealPlanForm(forms.ModelForm):
|
||||
|
||||
help_texts = {
|
||||
'shared': _('You can list default users to share recipes with in the settings.'), # noqa: E501
|
||||
'note': _('You can use markdown to format this field. See the <a href="/docs/markdown/">docs here</a>') # noqa: E501
|
||||
'note': _('You can use markdown to format this field. See the <a href="/docs/markdown/">docs here</a>')
|
||||
# noqa: E501
|
||||
}
|
||||
|
||||
widgets = {
|
||||
@@ -386,17 +403,62 @@ class InviteLinkForm(forms.ModelForm):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['space'].queryset = Space.objects.filter(created_by=user).all()
|
||||
|
||||
def clean(self):
|
||||
space = self.cleaned_data['space']
|
||||
if space.max_users != 0 and (UserPreference.objects.filter(space=space).count() + InviteLink.objects.filter(space=space).count()) >= space.max_users:
|
||||
raise ValidationError(_('Maximum number of users for this space reached.'))
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data['email']
|
||||
with scopes_disabled():
|
||||
if email != '' and User.objects.filter(email=email).exists():
|
||||
raise ValidationError(_('Email address already taken!'))
|
||||
|
||||
return email
|
||||
|
||||
class Meta:
|
||||
model = InviteLink
|
||||
fields = ('username', 'group', 'valid_until', 'space')
|
||||
fields = ('email', 'group', 'valid_until', 'space')
|
||||
help_texts = {
|
||||
'username': _('A username is not required, if left blank the new user can choose one.') # noqa: E501
|
||||
'email': _('An email address is not required but if present the invite link will be send to the user.'),
|
||||
}
|
||||
field_classes = {
|
||||
'space': SafeModelChoiceField,
|
||||
}
|
||||
|
||||
|
||||
class SpaceCreateForm(forms.Form):
|
||||
prefix = 'create'
|
||||
name = forms.CharField()
|
||||
|
||||
def clean_name(self):
|
||||
name = self.cleaned_data['name']
|
||||
with scopes_disabled():
|
||||
if Space.objects.filter(name=name).exists():
|
||||
raise ValidationError(_('Name already taken.'))
|
||||
return name
|
||||
|
||||
|
||||
class SpaceJoinForm(forms.Form):
|
||||
prefix = 'join'
|
||||
token = forms.CharField()
|
||||
|
||||
|
||||
class AllAuthSignupForm(forms.Form):
|
||||
captcha = hCaptchaField()
|
||||
terms = forms.BooleanField(label=_('Accept Terms and Privacy'))
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(AllAuthSignupForm, self).__init__(**kwargs)
|
||||
if settings.PRIVACY_URL == '' and settings.TERMS_URL == '':
|
||||
self.fields.pop('terms')
|
||||
if settings.HCAPTCHA_SECRET == '':
|
||||
self.fields.pop('captcha')
|
||||
|
||||
def signup(self, request, user):
|
||||
pass
|
||||
|
||||
|
||||
class UserCreateForm(forms.Form):
|
||||
name = forms.CharField(label='Username')
|
||||
password = forms.CharField(
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import datetime
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from allauth.account.adapter import DefaultAccountAdapter
|
||||
from django.contrib import messages
|
||||
from django.core.cache import caches
|
||||
from gettext import gettext as _
|
||||
|
||||
from cookbook.models import InviteLink
|
||||
|
||||
|
||||
class AllAuthCustomAdapter(DefaultAccountAdapter):
|
||||
@@ -9,11 +16,23 @@ class AllAuthCustomAdapter(DefaultAccountAdapter):
|
||||
"""
|
||||
Whether to allow sign ups.
|
||||
"""
|
||||
if request.resolver_match.view_name == 'account_signup':
|
||||
signup_token = False
|
||||
if 'signup_token' in request.session and InviteLink.objects.filter(valid_until__gte=datetime.datetime.today(), used_by=None, uuid=request.session['signup_token']).exists():
|
||||
signup_token = True
|
||||
|
||||
if request.resolver_match.view_name == 'account_signup' and not settings.ENABLE_SIGNUP and not signup_token:
|
||||
return False
|
||||
else:
|
||||
return super(AllAuthCustomAdapter, self).is_open_for_signup(request)
|
||||
|
||||
# disable password reset for now
|
||||
def send_mail(self, template_prefix, email, context):
|
||||
pass
|
||||
if settings.EMAIL_HOST != '':
|
||||
default = datetime.datetime.now()
|
||||
c = caches['default'].get_or_set(email, default, timeout=360)
|
||||
if c == default:
|
||||
super(AllAuthCustomAdapter, self).send_mail(template_prefix, email, context)
|
||||
else:
|
||||
messages.add_message(self.request, messages.ERROR, _('In order to prevent spam, the requested email was not send. Please wait a few minutes and try again.'))
|
||||
else:
|
||||
pass
|
||||
|
||||
19
cookbook/helper/CustomStorageClass.py
Normal file
19
cookbook/helper/CustomStorageClass.py
Normal file
@@ -0,0 +1,19 @@
|
||||
import hashlib
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from storages.backends.s3boto3 import S3Boto3Storage
|
||||
|
||||
|
||||
class CachedS3Boto3Storage(S3Boto3Storage):
|
||||
def url(self, name, **kwargs):
|
||||
key = hashlib.md5(f'recipes_media_urls_{name}'.encode('utf-8')).hexdigest()
|
||||
if result := cache.get(key):
|
||||
return result
|
||||
|
||||
result = super(CachedS3Boto3Storage, self).url(name, **kwargs)
|
||||
|
||||
timeout = int(settings.AWS_QUERYSTRING_EXPIRE * .95)
|
||||
cache.set(key, result, timeout)
|
||||
|
||||
return result
|
||||
13
cookbook/helper/context_processors.py
Normal file
13
cookbook/helper/context_processors.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
def context_settings(request):
|
||||
return {
|
||||
'EMAIL_ENABLED': settings.EMAIL_HOST != '',
|
||||
'SIGNUP_ENABLED': settings.ENABLE_SIGNUP,
|
||||
'CAPTCHA_ENABLED': settings.HCAPTCHA_SITEKEY != '',
|
||||
'HOSTED': settings.HOSTED,
|
||||
'TERMS_URL': settings.TERMS_URL,
|
||||
'PRIVACY_URL': settings.PRIVACY_URL,
|
||||
'IMPRINT_URL': settings.IMPRINT_URL,
|
||||
}
|
||||
45
cookbook/helper/image_processing.py
Normal file
45
cookbook/helper/image_processing.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
from PIL import Image
|
||||
from io import BytesIO
|
||||
|
||||
|
||||
def rescale_image_jpeg(image_object, base_width=720):
|
||||
img = Image.open(image_object)
|
||||
icc_profile = img.info.get('icc_profile') # remember color profile to not mess up colors
|
||||
width_percent = (base_width / float(img.size[0]))
|
||||
height = int((float(img.size[1]) * float(width_percent)))
|
||||
|
||||
img = img.resize((base_width, height), Image.ANTIALIAS)
|
||||
img_bytes = BytesIO()
|
||||
img.save(img_bytes, 'JPEG', quality=75, optimize=True, icc_profile=icc_profile)
|
||||
|
||||
return img_bytes
|
||||
|
||||
|
||||
def rescale_image_png(image_object, base_width=720):
|
||||
basewidth = 720
|
||||
wpercent = (basewidth / float(image_object.size[0]))
|
||||
hsize = int((float(image_object.size[1]) * float(wpercent)))
|
||||
img = image_object.resize((basewidth, hsize), Image.ANTIALIAS)
|
||||
|
||||
im_io = BytesIO()
|
||||
img.save(im_io, 'PNG', quality=70)
|
||||
return img
|
||||
|
||||
|
||||
def get_filetype(name):
|
||||
try:
|
||||
return os.path.splitext(name)[1]
|
||||
except:
|
||||
return '.jpeg'
|
||||
|
||||
|
||||
def handle_image(request, image_object, filetype='.jpeg'):
|
||||
if sys.getsizeof(image_object) / 8 > 500:
|
||||
if filetype == '.jpeg':
|
||||
return rescale_image_jpeg(image_object), filetype
|
||||
if filetype == '.png':
|
||||
return rescale_image_png(image_object), filetype
|
||||
return image_object, filetype
|
||||
@@ -163,6 +163,8 @@ def parse(x):
|
||||
|
||||
# small utility functions to prevent emtpy unit/food creation
|
||||
def get_unit(unit, space):
|
||||
if not unit:
|
||||
return None
|
||||
if len(unit) > 0:
|
||||
u, created = Unit.objects.get_or_create(name=unit, space=space)
|
||||
return u
|
||||
@@ -170,6 +172,8 @@ def get_unit(unit, space):
|
||||
|
||||
|
||||
def get_food(food, space):
|
||||
if not food:
|
||||
return None
|
||||
if len(food) > 0:
|
||||
f, created = Food.objects.get_or_create(name=food, space=space)
|
||||
return f
|
||||
|
||||
@@ -19,7 +19,7 @@ class StyleTreeprocessor(Treeprocessor):
|
||||
|
||||
|
||||
class MarkdownFormatExtension(markdown.Extension):
|
||||
# md_ globals deprecated - see here:
|
||||
# md_ globals deprecated - see here:
|
||||
def extendMarkdown(self, md):
|
||||
md.treeprocessors.register(
|
||||
StyleTreeprocessor(),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"""
|
||||
Source: https://djangosnippets.org/snippets/1703/
|
||||
"""
|
||||
from django.conf import settings
|
||||
from django.core.cache import caches
|
||||
from django.views.generic.detail import SingleObjectTemplateResponseMixin
|
||||
from django.views.generic.edit import ModelFormMixin
|
||||
|
||||
@@ -90,7 +92,18 @@ def share_link_valid(recipe, share):
|
||||
:return: true if a share link with the given recipe and uuid exists
|
||||
"""
|
||||
try:
|
||||
return True if ShareLink.objects.filter(recipe=recipe, uuid=share).exists() else False
|
||||
CACHE_KEY = f'recipe_share_{recipe.pk}_{share}'
|
||||
if c := caches['default'].get(CACHE_KEY, False):
|
||||
return c
|
||||
|
||||
if link := ShareLink.objects.filter(recipe=recipe, uuid=share, abuse_blocked=False).first():
|
||||
if 0 < settings.SHARING_LIMIT < link.request_count:
|
||||
return False
|
||||
link.request_count += 1
|
||||
link.save()
|
||||
caches['default'].set(CACHE_KEY, True, timeout=3)
|
||||
return True
|
||||
return False
|
||||
except ValidationError:
|
||||
return False
|
||||
|
||||
@@ -120,13 +133,19 @@ class GroupRequiredMixin(object):
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not has_group_permission(request.user, self.groups_required):
|
||||
messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
|
||||
if not request.user.is_authenticated:
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You are not logged in and therefore cannot view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('account_login') + '?next=' + request.path)
|
||||
else:
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You do not have the required permissions to view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
try:
|
||||
obj = self.get_object()
|
||||
if obj.get_space() != request.space:
|
||||
messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!'))
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You do not have the required permissions to view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
except AttributeError:
|
||||
pass
|
||||
@@ -138,17 +157,20 @@ class OwnerRequiredMixin(object):
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not request.user.is_authenticated:
|
||||
messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!'))
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You are not logged in and therefore cannot view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('account_login') + '?next=' + request.path)
|
||||
else:
|
||||
if not is_object_owner(request.user, self.get_object()):
|
||||
messages.add_message(request, messages.ERROR, _('You cannot interact with this object as it is not owned by you!'))
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You cannot interact with this object as it is not owned by you!'))
|
||||
return HttpResponseRedirect(reverse('index'))
|
||||
|
||||
try:
|
||||
obj = self.get_object()
|
||||
if obj.get_space() != request.space:
|
||||
messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!'))
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You do not have the required permissions to view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
193
cookbook/helper/recipe_html_import.py
Normal file
193
cookbook/helper/recipe_html_import.py
Normal file
@@ -0,0 +1,193 @@
|
||||
import json
|
||||
import re
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from bs4.element import Tag
|
||||
from cookbook.helper import recipe_url_import as helper
|
||||
from cookbook.helper.scrapers.scrapers import text_scraper
|
||||
from json import JSONDecodeError
|
||||
from recipe_scrapers._utils import get_host_name, normalize_string
|
||||
from urllib.parse import unquote
|
||||
|
||||
|
||||
def get_recipe_from_source(text, url, space):
|
||||
def build_node(k, v):
|
||||
if isinstance(v, dict):
|
||||
node = {
|
||||
'name': k,
|
||||
'value': k,
|
||||
'children': get_children_dict(v)
|
||||
}
|
||||
elif isinstance(v, list):
|
||||
node = {
|
||||
'name': k,
|
||||
'value': k,
|
||||
'children': get_children_list(v)
|
||||
}
|
||||
else:
|
||||
node = {
|
||||
'name': k + ": " + normalize_string(str(v)),
|
||||
'value': normalize_string(str(v))
|
||||
}
|
||||
return node
|
||||
|
||||
def get_children_dict(children):
|
||||
kid_list = []
|
||||
for k, v in children.items():
|
||||
kid_list.append(build_node(k, v))
|
||||
return kid_list
|
||||
|
||||
def get_children_list(children):
|
||||
kid_list = []
|
||||
for kid in children:
|
||||
if type(kid) == list:
|
||||
node = {
|
||||
'name': "unknown list",
|
||||
'value': "unknown list",
|
||||
'children': get_children_list(kid)
|
||||
}
|
||||
kid_list.append(node)
|
||||
elif type(kid) == dict:
|
||||
for k, v in kid.items():
|
||||
kid_list.append(build_node(k, v))
|
||||
else:
|
||||
kid_list.append({
|
||||
'name': normalize_string(str(kid)),
|
||||
'value': normalize_string(str(kid))
|
||||
})
|
||||
return kid_list
|
||||
|
||||
recipe_json = {
|
||||
'name': '',
|
||||
'url': '',
|
||||
'description': '',
|
||||
'image': '',
|
||||
'keywords': [],
|
||||
'recipeIngredient': [],
|
||||
'recipeInstructions': '',
|
||||
'servings': '',
|
||||
'prepTime': '',
|
||||
'cookTime': ''
|
||||
}
|
||||
recipe_tree = []
|
||||
parse_list = []
|
||||
html_data = []
|
||||
images = []
|
||||
text = unquote(text)
|
||||
|
||||
try:
|
||||
parse_list.append(remove_graph(json.loads(text)))
|
||||
if not url and 'url' in parse_list[0]:
|
||||
url = parse_list[0]['url']
|
||||
scrape = text_scraper("<script type='application/ld+json'>" + text + "</script>", url=url)
|
||||
|
||||
except JSONDecodeError:
|
||||
soup = BeautifulSoup(text, "html.parser")
|
||||
html_data = get_from_html(soup)
|
||||
images += get_images_from_source(soup, url)
|
||||
for el in soup.find_all('script', type='application/ld+json'):
|
||||
el = remove_graph(el)
|
||||
if not url and 'url' in el:
|
||||
url = el['url']
|
||||
if type(el) == list:
|
||||
for le in el:
|
||||
parse_list.append(le)
|
||||
elif type(el) == dict:
|
||||
parse_list.append(el)
|
||||
for el in soup.find_all(type='application/json'):
|
||||
el = remove_graph(el)
|
||||
if type(el) == list:
|
||||
for le in el:
|
||||
parse_list.append(le)
|
||||
elif type(el) == dict:
|
||||
parse_list.append(el)
|
||||
scrape = text_scraper(text, url=url)
|
||||
|
||||
recipe_json = helper.get_from_scraper(scrape, space)
|
||||
|
||||
for el in parse_list:
|
||||
temp_tree = []
|
||||
if isinstance(el, Tag):
|
||||
try:
|
||||
el = json.loads(el.string)
|
||||
except TypeError:
|
||||
continue
|
||||
|
||||
for k, v in el.items():
|
||||
if isinstance(v, dict):
|
||||
node = {
|
||||
'name': k,
|
||||
'value': k,
|
||||
'children': get_children_dict(v)
|
||||
}
|
||||
elif isinstance(v, list):
|
||||
node = {
|
||||
'name': k,
|
||||
'value': k,
|
||||
'children': get_children_list(v)
|
||||
}
|
||||
else:
|
||||
node = {
|
||||
'name': k + ": " + normalize_string(str(v)),
|
||||
'value': normalize_string(str(v))
|
||||
}
|
||||
temp_tree.append(node)
|
||||
|
||||
if '@type' in el and el['@type'] == 'Recipe':
|
||||
recipe_tree += [{'name': 'ld+json', 'children': temp_tree}]
|
||||
else:
|
||||
recipe_tree += [{'name': 'json', 'children': temp_tree}]
|
||||
|
||||
return recipe_json, recipe_tree, html_data, images
|
||||
|
||||
|
||||
def get_from_html(soup):
|
||||
INVISIBLE_ELEMS = ('style', 'script', 'head', 'title')
|
||||
html = []
|
||||
for s in soup.strings:
|
||||
if ((s.parent.name not in INVISIBLE_ELEMS) and (len(s.strip()) > 0)):
|
||||
html.append(s)
|
||||
return html
|
||||
|
||||
|
||||
def get_images_from_source(soup, url):
|
||||
sources = ['src', 'srcset', 'data-src']
|
||||
images = []
|
||||
img_tags = soup.find_all('img')
|
||||
if url:
|
||||
site = get_host_name(url)
|
||||
prot = url.split(':')[0]
|
||||
|
||||
urls = []
|
||||
for img in img_tags:
|
||||
for src in sources:
|
||||
try:
|
||||
urls.append(img[src])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
for u in urls:
|
||||
u = u.split('?')[0]
|
||||
filename = re.search(r'/([\w_-]+[.](jpg|jpeg|gif|png))$', u)
|
||||
if filename:
|
||||
if (('http' not in u) and (url)):
|
||||
# sometimes an image source can be relative
|
||||
# if it is provide the base url
|
||||
u = '{}://{}{}'.format(prot, site, u)
|
||||
if 'http' in u:
|
||||
images.append(u)
|
||||
return images
|
||||
|
||||
|
||||
def remove_graph(el):
|
||||
# recipes type might be wrapped in @graph type
|
||||
if isinstance(el, Tag):
|
||||
try:
|
||||
el = json.loads(el.string)
|
||||
if '@graph' in el:
|
||||
for x in el['@graph']:
|
||||
if '@type' in x and x['@type'] == 'Recipe':
|
||||
el = x
|
||||
except TypeError:
|
||||
pass
|
||||
return el
|
||||
72
cookbook/helper/recipe_search.py
Normal file
72
cookbook/helper/recipe_search.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from datetime import datetime, timedelta
|
||||
from functools import reduce
|
||||
|
||||
from django.contrib.postgres.search import TrigramSimilarity
|
||||
from django.db.models import Q, Case, When, Value
|
||||
from django.forms import IntegerField
|
||||
|
||||
from cookbook.models import ViewLog
|
||||
from recipes import settings
|
||||
|
||||
|
||||
def search_recipes(request, queryset, params):
|
||||
search_string = params.get('query', '')
|
||||
search_keywords = params.getlist('keywords', [])
|
||||
search_foods = params.getlist('foods', [])
|
||||
search_books = params.getlist('books', [])
|
||||
|
||||
search_keywords_or = params.get('keywords_or', True)
|
||||
search_foods_or = params.get('foods_or', True)
|
||||
search_books_or = params.get('books_or', True)
|
||||
|
||||
search_internal = params.get('internal', None)
|
||||
search_random = params.get('random', False)
|
||||
search_last_viewed = int(params.get('last_viewed', 0))
|
||||
|
||||
if search_last_viewed > 0:
|
||||
last_viewed_recipes = ViewLog.objects.filter(created_by=request.user, space=request.space,
|
||||
created_at__gte=datetime.now() - timedelta(days=14)).order_by('pk').values_list('recipe__pk', flat=True).distinct()
|
||||
|
||||
return queryset.filter(pk__in=last_viewed_recipes[len(last_viewed_recipes) - min(len(last_viewed_recipes), search_last_viewed):])
|
||||
|
||||
queryset = queryset.annotate(
|
||||
new_recipe=Case(When(created_at__gte=(datetime.now() - timedelta(days=7)), then=Value(100)),
|
||||
default=Value(0), )).order_by('-new_recipe', 'name')
|
||||
|
||||
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2',
|
||||
'django.db.backends.postgresql']:
|
||||
queryset = queryset.annotate(similarity=TrigramSimilarity('name', search_string), ).filter(
|
||||
Q(similarity__gt=0.1) | Q(name__unaccent__icontains=search_string)).order_by('-similarity')
|
||||
else:
|
||||
queryset = queryset.filter(name__icontains=search_string)
|
||||
|
||||
if len(search_keywords) > 0:
|
||||
if search_keywords_or == 'true':
|
||||
queryset = queryset.filter(keywords__id__in=search_keywords)
|
||||
else:
|
||||
for k in search_keywords:
|
||||
queryset = queryset.filter(keywords__id=k)
|
||||
|
||||
if len(search_foods) > 0:
|
||||
if search_foods_or == 'true':
|
||||
queryset = queryset.filter(steps__ingredients__food__id__in=search_foods)
|
||||
else:
|
||||
for k in search_foods:
|
||||
queryset = queryset.filter(steps__ingredients__food__id=k)
|
||||
|
||||
if len(search_books) > 0:
|
||||
if search_books_or == 'true':
|
||||
queryset = queryset.filter(recipebookentry__book__id__in=search_books)
|
||||
else:
|
||||
for k in search_books:
|
||||
queryset = queryset.filter(recipebookentry__book__id=k)
|
||||
|
||||
queryset = queryset.distinct()
|
||||
|
||||
if search_internal == 'true':
|
||||
queryset = queryset.filter(internal=True)
|
||||
|
||||
if search_random == 'true':
|
||||
queryset = queryset.order_by("?")
|
||||
|
||||
return queryset
|
||||
@@ -1,269 +1,97 @@
|
||||
import json
|
||||
import random
|
||||
import re
|
||||
from json import JSONDecodeError
|
||||
from isodate import parse_duration as iso_parse_duration
|
||||
from isodate.isoerror import ISO8601Error
|
||||
from recipe_scrapers._exceptions import ElementNotFoundInHtml
|
||||
|
||||
import microdata
|
||||
from bs4 import BeautifulSoup
|
||||
from cookbook.helper.ingredient_parser import parse as parse_ingredient
|
||||
from cookbook.helper.ingredient_parser import parse as parse_single_ingredient
|
||||
from cookbook.models import Keyword
|
||||
from django.http import JsonResponse
|
||||
from django.utils.dateparse import parse_duration
|
||||
from django.utils.translation import gettext as _
|
||||
from recipe_scrapers import _utils
|
||||
|
||||
|
||||
def get_from_html(html_text, url, space):
|
||||
soup = BeautifulSoup(html_text, "html.parser")
|
||||
|
||||
# first try finding ld+json as its most common
|
||||
for ld in soup.find_all('script', type='application/ld+json'):
|
||||
try:
|
||||
ld_json = json.loads(ld.string.replace('\n', ''))
|
||||
if type(ld_json) != list:
|
||||
ld_json = [ld_json]
|
||||
|
||||
for ld_json_item in ld_json:
|
||||
# recipes type might be wrapped in @graph type
|
||||
if '@graph' in ld_json_item:
|
||||
for x in ld_json_item['@graph']:
|
||||
if '@type' in x and x['@type'] == 'Recipe':
|
||||
ld_json_item = x
|
||||
|
||||
if ('@type' in ld_json_item
|
||||
and ld_json_item['@type'] == 'Recipe'):
|
||||
return JsonResponse(find_recipe_json(ld_json_item, url, space))
|
||||
except JSONDecodeError:
|
||||
return JsonResponse(
|
||||
{
|
||||
'error': True,
|
||||
'msg': _('The requested site provided malformed data and cannot be read.') # noqa: E501
|
||||
},
|
||||
status=400)
|
||||
|
||||
# now try to find microdata
|
||||
items = microdata.get_items(html_text)
|
||||
for i in items:
|
||||
md_json = json.loads(i.json())
|
||||
if 'schema.org/Recipe' in str(md_json['type']):
|
||||
return JsonResponse(find_recipe_json(md_json['properties'], url, space))
|
||||
|
||||
return JsonResponse(
|
||||
{
|
||||
'error': True,
|
||||
'msg': _('The requested site does not provide any recognized data format to import the recipe from.') # noqa: E501
|
||||
},
|
||||
status=400)
|
||||
|
||||
|
||||
def find_recipe_json(ld_json, url, space):
|
||||
if type(ld_json['name']) == list:
|
||||
try:
|
||||
ld_json['name'] = ld_json['name'][0]
|
||||
except Exception:
|
||||
ld_json['name'] = 'ERROR'
|
||||
|
||||
# some sites use ingredients instead of recipeIngredients
|
||||
if 'recipeIngredient' not in ld_json and 'ingredients' in ld_json:
|
||||
ld_json['recipeIngredient'] = ld_json['ingredients']
|
||||
|
||||
if 'recipeIngredient' in ld_json:
|
||||
# some pages have comma separated ingredients in a single array entry
|
||||
if (len(ld_json['recipeIngredient']) == 1
|
||||
and type(ld_json['recipeIngredient']) == list):
|
||||
ld_json['recipeIngredient'] = ld_json['recipeIngredient'][0].split(',') # noqa: E501
|
||||
elif type(ld_json['recipeIngredient']) == str:
|
||||
ld_json['recipeIngredient'] = ld_json['recipeIngredient'].split(',')
|
||||
|
||||
for x in ld_json['recipeIngredient']:
|
||||
if '\n' in x:
|
||||
ld_json['recipeIngredient'].remove(x)
|
||||
for i in x.split('\n'):
|
||||
ld_json['recipeIngredient'].insert(0, i)
|
||||
|
||||
ingredients = []
|
||||
|
||||
for x in ld_json['recipeIngredient']:
|
||||
if x.replace(' ', '') != '':
|
||||
x = x.replace('½', "0.5").replace('¼', "0.25").replace('¾', "0.75")
|
||||
try:
|
||||
amount, unit, ingredient, note = parse_ingredient(x)
|
||||
if ingredient:
|
||||
ingredients.append(
|
||||
{
|
||||
'amount': amount,
|
||||
'unit': {
|
||||
'text': unit,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'ingredient': {
|
||||
'text': ingredient,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'note': note,
|
||||
'original': x
|
||||
}
|
||||
)
|
||||
except Exception:
|
||||
ingredients.append(
|
||||
{
|
||||
'amount': 0,
|
||||
'unit': {
|
||||
'text': '',
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'ingredient': {
|
||||
'text': x,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'note': '',
|
||||
'original': x
|
||||
}
|
||||
)
|
||||
|
||||
ld_json['recipeIngredient'] = ingredients
|
||||
else:
|
||||
ld_json['recipeIngredient'] = []
|
||||
|
||||
if 'keywords' in ld_json:
|
||||
ld_json['keywords'] = parse_keywords(listify_keywords(ld_json['keywords']), space)
|
||||
|
||||
if 'recipeInstructions' in ld_json:
|
||||
instructions = ''
|
||||
|
||||
# flatten instructions if they are in a list
|
||||
if type(ld_json['recipeInstructions']) == list:
|
||||
for i in ld_json['recipeInstructions']:
|
||||
if type(i) == str:
|
||||
instructions += i
|
||||
else:
|
||||
if 'text' in i:
|
||||
instructions += i['text'] + '\n\n'
|
||||
elif 'itemListElement' in i:
|
||||
for ile in i['itemListElement']:
|
||||
if type(ile) == str:
|
||||
instructions += ile + '\n\n'
|
||||
elif 'text' in ile:
|
||||
instructions += ile['text'] + '\n\n'
|
||||
else:
|
||||
instructions += str(i)
|
||||
ld_json['recipeInstructions'] = instructions
|
||||
|
||||
ld_json['recipeInstructions'] = re.sub(r'\n\s*\n', '\n\n', ld_json['recipeInstructions']) # noqa: E501
|
||||
ld_json['recipeInstructions'] = re.sub(' +', ' ', ld_json['recipeInstructions']) # noqa: E501
|
||||
ld_json['recipeInstructions'] = ld_json['recipeInstructions'].replace('<p>', '') # noqa: E501
|
||||
ld_json['recipeInstructions'] = ld_json['recipeInstructions'].replace('</p>', '') # noqa: E501
|
||||
else:
|
||||
ld_json['recipeInstructions'] = ''
|
||||
|
||||
if url != '':
|
||||
ld_json['recipeInstructions'] += '\n\n' + _('Imported from') + ' ' + url
|
||||
|
||||
if 'image' in ld_json:
|
||||
# check if list of images is returned, take first if so
|
||||
if (type(ld_json['image'])) == list:
|
||||
if type(ld_json['image'][0]) == str:
|
||||
ld_json['image'] = ld_json['image'][0]
|
||||
elif 'url' in ld_json['image'][0]:
|
||||
ld_json['image'] = ld_json['image'][0]['url']
|
||||
|
||||
# ignore relative image paths
|
||||
if 'http' not in ld_json['image']:
|
||||
ld_json['image'] = ''
|
||||
|
||||
if 'cookTime' in ld_json:
|
||||
try:
|
||||
if (type(ld_json['cookTime']) == list
|
||||
and len(ld_json['cookTime']) > 0):
|
||||
ld_json['cookTime'] = ld_json['cookTime'][0]
|
||||
ld_json['cookTime'] = round(
|
||||
parse_duration(
|
||||
ld_json['cookTime']
|
||||
).seconds / 60
|
||||
)
|
||||
except TypeError:
|
||||
ld_json['cookTime'] = 0
|
||||
else:
|
||||
ld_json['cookTime'] = 0
|
||||
|
||||
if 'prepTime' in ld_json:
|
||||
try:
|
||||
if (type(ld_json['prepTime']) == list
|
||||
and len(ld_json['prepTime']) > 0):
|
||||
ld_json['prepTime'] = ld_json['prepTime'][0]
|
||||
ld_json['prepTime'] = round(
|
||||
parse_duration(
|
||||
ld_json['prepTime']
|
||||
).seconds / 60
|
||||
)
|
||||
except TypeError:
|
||||
ld_json['prepTime'] = 0
|
||||
else:
|
||||
ld_json['prepTime'] = 0
|
||||
|
||||
ld_json['servings'] = 1
|
||||
try:
|
||||
if 'recipeYield' in ld_json:
|
||||
if type(ld_json['recipeYield']) == str:
|
||||
ld_json['servings'] = int(re.findall(r'\b\d+\b', ld_json['recipeYield'])[0])
|
||||
elif type(ld_json['recipeYield']) == list:
|
||||
ld_json['servings'] = int(re.findall(r'\b\d+\b', ld_json['recipeYield'][0])[0])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
for key in list(ld_json):
|
||||
if key not in [
|
||||
'prepTime', 'cookTime', 'image', 'recipeInstructions',
|
||||
'keywords', 'name', 'recipeIngredient', 'servings', 'description'
|
||||
]:
|
||||
ld_json.pop(key, None)
|
||||
|
||||
return ld_json
|
||||
from html import unescape
|
||||
from recipe_scrapers._schemaorg import SchemaOrgException
|
||||
from recipe_scrapers._utils import get_minutes
|
||||
|
||||
|
||||
def get_from_scraper(scrape, space):
|
||||
# converting the scrape_me object to the existing json format based on ld+json
|
||||
|
||||
recipe_json = {}
|
||||
recipe_json['name'] = scrape.title()
|
||||
try:
|
||||
recipe_json['name'] = parse_name(scrape.title() or None)
|
||||
except Exception:
|
||||
recipe_json['name'] = None
|
||||
if not recipe_json['name']:
|
||||
try:
|
||||
recipe_json['name'] = scrape.schema.data.get('name') or ''
|
||||
except Exception:
|
||||
recipe_json['name'] = ''
|
||||
|
||||
try:
|
||||
description = scrape.schema.data.get("description") or ''
|
||||
recipe_json['prepTime'] = _utils.get_minutes(scrape.schema.data.get("prepTime")) or 0
|
||||
recipe_json['cookTime'] = _utils.get_minutes(scrape.schema.data.get("cookTime")) or 0
|
||||
except AttributeError:
|
||||
except Exception:
|
||||
description = ''
|
||||
recipe_json['prepTime'] = 0
|
||||
recipe_json['cookTime'] = 0
|
||||
|
||||
recipe_json['description'] = description
|
||||
recipe_json['description'] = parse_description(description)
|
||||
|
||||
try:
|
||||
servings = scrape.yields()
|
||||
servings = int(re.findall(r'\b\d+\b', servings)[0])
|
||||
except (AttributeError, ValueError, IndexError):
|
||||
servings = 1
|
||||
recipe_json['servings'] = servings
|
||||
servings = scrape.yields() or None
|
||||
except Exception:
|
||||
servings = None
|
||||
if not servings:
|
||||
try:
|
||||
servings = scrape.schema.data.get('recipeYield') or 1
|
||||
except Exception:
|
||||
servings = 1
|
||||
if type(servings) != int:
|
||||
try:
|
||||
servings = int(re.findall(r'\b\d+\b', servings)[0])
|
||||
except Exception:
|
||||
servings = 1
|
||||
recipe_json['servings'] = max(servings, 1)
|
||||
|
||||
try:
|
||||
recipe_json['prepTime'] = get_minutes(scrape.schema.data.get("prepTime")) or 0
|
||||
except Exception:
|
||||
recipe_json['prepTime'] = 0
|
||||
try:
|
||||
recipe_json['cookTime'] = get_minutes(scrape.schema.data.get("cookTime")) or 0
|
||||
except Exception:
|
||||
recipe_json['cookTime'] = 0
|
||||
if recipe_json['cookTime'] + recipe_json['prepTime'] == 0:
|
||||
try:
|
||||
recipe_json['prepTime'] = scrape.total_time()
|
||||
except AttributeError:
|
||||
pass
|
||||
recipe_json['prepTime'] = get_minutes(scrape.total_time()) or 0
|
||||
except Exception:
|
||||
try:
|
||||
get_minutes(scrape.schema.data.get("totalTime")) or 0
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
recipe_json['image'] = scrape.image()
|
||||
except AttributeError:
|
||||
pass
|
||||
recipe_json['image'] = parse_image(scrape.image()) or None
|
||||
except Exception:
|
||||
recipe_json['image'] = None
|
||||
if not recipe_json['image']:
|
||||
try:
|
||||
recipe_json['image'] = parse_image(scrape.schema.data.get('image')) or ''
|
||||
except Exception:
|
||||
recipe_json['image'] = ''
|
||||
|
||||
keywords = []
|
||||
try:
|
||||
if scrape.schema.data.get("keywords"):
|
||||
keywords += listify_keywords(scrape.schema.data.get("keywords"))
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
if scrape.schema.data.get('recipeCategory'):
|
||||
keywords += listify_keywords(scrape.schema.data.get("recipeCategory"))
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
if scrape.schema.data.get('recipeCuisine'):
|
||||
keywords += listify_keywords(scrape.schema.data.get("recipeCuisine"))
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
recipe_json['keywords'] = parse_keywords(list(set(map(str.casefold, keywords))), space)
|
||||
except AttributeError:
|
||||
recipe_json['keywords'] = keywords
|
||||
@@ -272,23 +100,22 @@ def get_from_scraper(scrape, space):
|
||||
ingredients = []
|
||||
for x in scrape.ingredients():
|
||||
try:
|
||||
amount, unit, ingredient, note = parse_ingredient(x)
|
||||
if ingredient:
|
||||
ingredients.append(
|
||||
{
|
||||
'amount': amount,
|
||||
'unit': {
|
||||
'text': unit,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'ingredient': {
|
||||
'text': ingredient,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'note': note,
|
||||
'original': x
|
||||
}
|
||||
)
|
||||
amount, unit, ingredient, note = parse_single_ingredient(x)
|
||||
ingredients.append(
|
||||
{
|
||||
'amount': amount,
|
||||
'unit': {
|
||||
'text': unit,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'ingredient': {
|
||||
'text': ingredient,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'note': note,
|
||||
'original': x
|
||||
}
|
||||
)
|
||||
except Exception:
|
||||
ingredients.append(
|
||||
{
|
||||
@@ -306,38 +133,236 @@ def get_from_scraper(scrape, space):
|
||||
}
|
||||
)
|
||||
recipe_json['recipeIngredient'] = ingredients
|
||||
except AttributeError:
|
||||
except Exception:
|
||||
recipe_json['recipeIngredient'] = ingredients
|
||||
|
||||
try:
|
||||
recipe_json['recipeInstructions'] = scrape.instructions()
|
||||
except AttributeError:
|
||||
recipe_json['recipeInstructions'] = parse_instructions(scrape.instructions())
|
||||
except Exception:
|
||||
recipe_json['recipeInstructions'] = ""
|
||||
|
||||
recipe_json['recipeInstructions'] += "\n\nImported from " + scrape.url
|
||||
if scrape.url:
|
||||
recipe_json['url'] = scrape.url
|
||||
recipe_json['recipeInstructions'] += "\n\nImported from " + scrape.url
|
||||
return recipe_json
|
||||
|
||||
|
||||
def parse_name(name):
|
||||
if type(name) == list:
|
||||
try:
|
||||
name = name[0]
|
||||
except Exception:
|
||||
name = 'ERROR'
|
||||
return normalize_string(name)
|
||||
|
||||
|
||||
def parse_ingredients(ingredients):
|
||||
# some pages have comma separated ingredients in a single array entry
|
||||
try:
|
||||
if type(ingredients[0]) == dict:
|
||||
return ingredients
|
||||
except (KeyError, IndexError):
|
||||
pass
|
||||
|
||||
if (len(ingredients) == 1 and type(ingredients) == list):
|
||||
ingredients = ingredients[0].split(',')
|
||||
elif type(ingredients) == str:
|
||||
ingredients = ingredients.split(',')
|
||||
|
||||
for x in ingredients:
|
||||
if '\n' in x:
|
||||
ingredients.remove(x)
|
||||
for i in x.split('\n'):
|
||||
ingredients.insert(0, i)
|
||||
|
||||
ingredient_list = []
|
||||
|
||||
for x in ingredients:
|
||||
if x.replace(' ', '') != '':
|
||||
x = x.replace('½', "0.5").replace('¼', "0.25").replace('¾', "0.75")
|
||||
try:
|
||||
amount, unit, ingredient, note = parse_single_ingredient(x)
|
||||
if ingredient:
|
||||
ingredient_list.append(
|
||||
{
|
||||
'amount': amount,
|
||||
'unit': {
|
||||
'text': unit,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'ingredient': {
|
||||
'text': ingredient,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'note': note,
|
||||
'original': x
|
||||
}
|
||||
)
|
||||
except Exception:
|
||||
ingredient_list.append(
|
||||
{
|
||||
'amount': 0,
|
||||
'unit': {
|
||||
'text': '',
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'ingredient': {
|
||||
'text': x,
|
||||
'id': random.randrange(10000, 99999)
|
||||
},
|
||||
'note': '',
|
||||
'original': x
|
||||
}
|
||||
)
|
||||
|
||||
ingredients = ingredient_list
|
||||
else:
|
||||
ingredients = []
|
||||
return ingredients
|
||||
|
||||
|
||||
def parse_description(description):
|
||||
return normalize_string(description)
|
||||
|
||||
|
||||
def parse_instructions(instructions):
|
||||
instruction_text = ''
|
||||
|
||||
# flatten instructions if they are in a list
|
||||
if type(instructions) == list:
|
||||
for i in instructions:
|
||||
if type(i) == str:
|
||||
instruction_text += i
|
||||
else:
|
||||
if 'text' in i:
|
||||
instruction_text += i['text'] + '\n\n'
|
||||
elif 'itemListElement' in i:
|
||||
for ile in i['itemListElement']:
|
||||
if type(ile) == str:
|
||||
instruction_text += ile + '\n\n'
|
||||
elif 'text' in ile:
|
||||
instruction_text += ile['text'] + '\n\n'
|
||||
else:
|
||||
instruction_text += str(i)
|
||||
instructions = instruction_text
|
||||
|
||||
return normalize_string(instructions)
|
||||
|
||||
|
||||
def parse_image(image):
|
||||
# check if list of images is returned, take first if so
|
||||
if not image:
|
||||
return None
|
||||
if type(image) == list:
|
||||
for pic in image:
|
||||
if (type(pic) == str) and (pic[:4] == 'http'):
|
||||
image = pic
|
||||
elif 'url' in pic:
|
||||
image = pic['url']
|
||||
elif type(image) == dict:
|
||||
if 'url' in image:
|
||||
image = image['url']
|
||||
|
||||
# ignore relative image paths
|
||||
if image[:4] != 'http':
|
||||
image = ''
|
||||
return image
|
||||
|
||||
|
||||
def parse_servings(servings):
|
||||
if type(servings) == str:
|
||||
try:
|
||||
servings = int(re.search(r'\d+', servings).group())
|
||||
except AttributeError:
|
||||
servings = 1
|
||||
elif type(servings) == list:
|
||||
try:
|
||||
servings = int(re.findall(r'\b\d+\b', servings[0])[0])
|
||||
except KeyError:
|
||||
servings = 1
|
||||
return servings
|
||||
|
||||
|
||||
def parse_cooktime(cooktime):
|
||||
if type(cooktime) not in [int, float]:
|
||||
try:
|
||||
cooktime = float(re.search(r'\d+', cooktime).group())
|
||||
except (ValueError, AttributeError):
|
||||
try:
|
||||
cooktime = round(iso_parse_duration(cooktime).seconds / 60)
|
||||
except ISO8601Error:
|
||||
try:
|
||||
if (type(cooktime) == list and len(cooktime) > 0):
|
||||
cooktime = cooktime[0]
|
||||
cooktime = round(parse_duration(cooktime).seconds / 60)
|
||||
except AttributeError:
|
||||
cooktime = 0
|
||||
|
||||
return cooktime
|
||||
|
||||
|
||||
def parse_preptime(preptime):
|
||||
if type(preptime) not in [int, float]:
|
||||
try:
|
||||
preptime = float(re.search(r'\d+', preptime).group())
|
||||
except ValueError:
|
||||
try:
|
||||
preptime = round(iso_parse_duration(preptime).seconds / 60)
|
||||
except ISO8601Error:
|
||||
try:
|
||||
if (type(preptime) == list and len(preptime) > 0):
|
||||
preptime = preptime[0]
|
||||
preptime = round(parse_duration(preptime).seconds / 60)
|
||||
except AttributeError:
|
||||
preptime = 0
|
||||
|
||||
return preptime
|
||||
|
||||
|
||||
def parse_keywords(keyword_json, space):
|
||||
keywords = []
|
||||
# keywords as list
|
||||
for kw in keyword_json:
|
||||
if k := Keyword.objects.filter(name=kw, space=space).first():
|
||||
keywords.append({'id': str(k.id), 'text': str(k)})
|
||||
else:
|
||||
keywords.append({'id': random.randrange(1111111, 9999999, 1), 'text': kw})
|
||||
kw = normalize_string(kw)
|
||||
if len(kw) != 0:
|
||||
if k := Keyword.objects.filter(name=kw, space=space).first():
|
||||
keywords.append({'id': str(k.id), 'text': str(k)})
|
||||
else:
|
||||
keywords.append({'id': random.randrange(1111111, 9999999, 1), 'text': kw})
|
||||
|
||||
return keywords
|
||||
|
||||
|
||||
def listify_keywords(keyword_list):
|
||||
# keywords as string
|
||||
try:
|
||||
if type(keyword_list[0]) == dict:
|
||||
return keyword_list
|
||||
except (KeyError, IndexError):
|
||||
pass
|
||||
if type(keyword_list) == str:
|
||||
keyword_list = keyword_list.split(',')
|
||||
|
||||
# keywords as string in list
|
||||
if (type(keyword_list) == list
|
||||
and len(keyword_list) == 1
|
||||
and ',' in keyword_list[0]):
|
||||
if (type(keyword_list) == list and len(keyword_list) == 1 and ',' in keyword_list[0]):
|
||||
keyword_list = keyword_list[0].split(',')
|
||||
return [x.strip() for x in keyword_list]
|
||||
|
||||
|
||||
def normalize_string(string):
|
||||
# Convert all named and numeric character references (e.g. >, >)
|
||||
unescaped_string = unescape(string)
|
||||
unescaped_string = re.sub('<[^<]+?>', '', unescaped_string)
|
||||
unescaped_string = re.sub(' +', ' ', unescaped_string)
|
||||
unescaped_string = re.sub('</p>', '\n', unescaped_string)
|
||||
unescaped_string = re.sub(r'\n\s*\n', '\n\n', unescaped_string)
|
||||
unescaped_string = unescaped_string.replace("\xa0", " ").replace("\t", " ").strip()
|
||||
return unescaped_string
|
||||
|
||||
|
||||
def iso_duration_to_minutes(string):
|
||||
match = re.match(
|
||||
r'P((?P<years>\d+)Y)?((?P<months>\d+)M)?((?P<weeks>\d+)W)?((?P<days>\d+)D)?T((?P<hours>\d+)H)?((?P<minutes>\d+)M)?((?P<seconds>\d+)S)?',
|
||||
string
|
||||
).groupdict()
|
||||
return int(match['days'] or 0) * 24 * 60 + int(match['hours'] or 0) * 60 + int(match['minutes'] or 0)
|
||||
|
||||
@@ -16,6 +16,12 @@ class ScopeMiddleware:
|
||||
with scopes_disabled():
|
||||
return self.get_response(request)
|
||||
|
||||
if request.path.startswith('/signup/') or request.path.startswith('/invite/'):
|
||||
return self.get_response(request)
|
||||
|
||||
if request.path.startswith('/accounts/'):
|
||||
return self.get_response(request)
|
||||
|
||||
with scopes_disabled():
|
||||
if request.user.userpreference.space is None and not reverse('account_logout') in request.path:
|
||||
return views.no_space(request)
|
||||
|
||||
68
cookbook/helper/scrapers/cooksillustrated.py
Normal file
68
cookbook/helper/scrapers/cooksillustrated.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import json
|
||||
from recipe_scrapers._abstract import AbstractScraper
|
||||
|
||||
|
||||
class CooksIllustrated(AbstractScraper):
|
||||
@classmethod
|
||||
def host(cls, site='cooksillustrated'):
|
||||
return {
|
||||
'cooksillustrated': f"{site}.com",
|
||||
'americastestkitchen': f"{site}.com",
|
||||
'cookscountry': f"{site}.com",
|
||||
}.get(site)
|
||||
|
||||
def title(self):
|
||||
return self.schema.title()
|
||||
|
||||
def image(self):
|
||||
return self.schema.image()
|
||||
|
||||
def total_time(self):
|
||||
if not self.recipe:
|
||||
self.get_recipe()
|
||||
return self.recipe['recipeTimeNote']
|
||||
|
||||
def yields(self):
|
||||
if not self.recipe:
|
||||
self.get_recipe()
|
||||
return self.recipe['yields']
|
||||
|
||||
def ingredients(self):
|
||||
if not self.recipe:
|
||||
self.get_recipe()
|
||||
ingredients = []
|
||||
for group in self.recipe['ingredientGroups']:
|
||||
ingredients += group['fields']['recipeIngredientItems']
|
||||
return [
|
||||
"{} {} {}{}".format(
|
||||
i['fields']['qty'] or '',
|
||||
i['fields']['measurement'] or '',
|
||||
i['fields']['ingredient']['fields']['title'] or '',
|
||||
i['fields']['postText'] or ''
|
||||
)
|
||||
for i in ingredients
|
||||
]
|
||||
|
||||
def instructions(self):
|
||||
if not self.recipe:
|
||||
self.get_recipe()
|
||||
if self.recipe.get('headnote', False):
|
||||
i = ['Note: ' + self.recipe.get('headnote', '')]
|
||||
else:
|
||||
i = []
|
||||
return "\n".join(
|
||||
i
|
||||
+ [self.recipe.get('whyThisWorks', '')]
|
||||
+ [
|
||||
instruction['fields']['content']
|
||||
for instruction in self.recipe['instructions']
|
||||
]
|
||||
)
|
||||
|
||||
def nutrients(self):
|
||||
raise NotImplementedError("This should be implemented.")
|
||||
|
||||
def get_recipe(self):
|
||||
j = json.loads(self.soup.find(type='application/json').string)
|
||||
name = list(j['props']['initialState']['content']['documents'])[0]
|
||||
self.recipe = j['props']['initialState']['content']['documents'][name]
|
||||
43
cookbook/helper/scrapers/scrapers.py
Normal file
43
cookbook/helper/scrapers/scrapers.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from bs4 import BeautifulSoup
|
||||
from json import JSONDecodeError
|
||||
from recipe_scrapers import SCRAPERS, get_host_name
|
||||
from recipe_scrapers._factory import SchemaScraperFactory
|
||||
from recipe_scrapers._schemaorg import SchemaOrg
|
||||
|
||||
from .cooksillustrated import CooksIllustrated
|
||||
|
||||
CUSTOM_SCRAPERS = {
|
||||
CooksIllustrated.host(site="cooksillustrated"): CooksIllustrated,
|
||||
CooksIllustrated.host(site="americastestkitchen"): CooksIllustrated,
|
||||
CooksIllustrated.host(site="cookscountry"): CooksIllustrated,
|
||||
}
|
||||
SCRAPERS.update(CUSTOM_SCRAPERS)
|
||||
|
||||
|
||||
def text_scraper(text, url=None):
|
||||
domain = None
|
||||
if url:
|
||||
domain = get_host_name(url)
|
||||
if domain in SCRAPERS:
|
||||
scraper_class = SCRAPERS[domain]
|
||||
else:
|
||||
scraper_class = SchemaScraperFactory.SchemaScraper
|
||||
|
||||
class TextScraper(scraper_class):
|
||||
def __init__(
|
||||
self,
|
||||
page_data,
|
||||
url=None
|
||||
):
|
||||
self.wild_mode = False
|
||||
# self.exception_handling = None # TODO add new method here, old one was deprecated
|
||||
self.meta_http_equiv = False
|
||||
self.soup = BeautifulSoup(page_data, "html.parser")
|
||||
self.url = url
|
||||
self.recipe = None
|
||||
try:
|
||||
self.schema = SchemaOrg(page_data)
|
||||
except (JSONDecodeError, AttributeError):
|
||||
pass
|
||||
|
||||
return TextScraper(text, url)
|
||||
@@ -40,7 +40,7 @@ class Pepperplate(Integration):
|
||||
recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space)
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction='\n'.join(directions) + '\n\n'
|
||||
instruction='\n'.join(directions) + '\n\n', space=self.request.space,
|
||||
)
|
||||
|
||||
for ingredient in ingredients:
|
||||
@@ -49,7 +49,7 @@ class Pepperplate(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class ChefTap(Integration):
|
||||
|
||||
recipe = Recipe.objects.create(name=title, created_by=self.request.user, internal=True, space=self.request.space, )
|
||||
|
||||
step = Step.objects.create(instruction='\n'.join(directions))
|
||||
step = Step.objects.create(instruction='\n'.join(directions), space=self.request.space,)
|
||||
|
||||
if source_url != '':
|
||||
step.instruction += '\n' + source_url
|
||||
@@ -50,7 +50,7 @@ class ChefTap(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import re
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.helper.ingredient_parser import parse, get_food, get_unit
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword
|
||||
@@ -54,7 +55,7 @@ class Chowdown(Integration):
|
||||
recipe.keywords.add(keyword)
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction='\n'.join(directions) + '\n\n' + '\n'.join(descriptions)
|
||||
instruction='\n'.join(directions) + '\n\n' + '\n'.join(descriptions), space=self.request.space,
|
||||
)
|
||||
|
||||
for ingredient in ingredients:
|
||||
@@ -62,7 +63,7 @@ class Chowdown(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
@@ -71,7 +72,7 @@ class Chowdown(Integration):
|
||||
import_zip = ZipFile(f['file'])
|
||||
for z in import_zip.filelist:
|
||||
if re.match(f'^images/{image}$', z.filename):
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(z.filename)))
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(z.filename)), filetype=get_filetype(z.filename))
|
||||
|
||||
return recipe
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import json
|
||||
from io import BytesIO
|
||||
from re import match
|
||||
from zipfile import ZipFile
|
||||
|
||||
from rest_framework.renderers import JSONRenderer
|
||||
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.serializer import RecipeExportSerializer
|
||||
|
||||
@@ -15,8 +17,9 @@ class Default(Integration):
|
||||
|
||||
recipe_string = recipe_zip.read('recipe.json').decode("utf-8")
|
||||
recipe = self.decode_recipe(recipe_string)
|
||||
if 'image.png' in recipe_zip.namelist():
|
||||
self.import_recipe_image(recipe, BytesIO(recipe_zip.read('image.png')))
|
||||
images = list(filter(lambda v: match('image.*', v), recipe_zip.namelist()))
|
||||
if images:
|
||||
self.import_recipe_image(recipe, BytesIO(recipe_zip.read(images[0])), filetype=get_filetype(images[0]))
|
||||
return recipe
|
||||
|
||||
def decode_recipe(self, string):
|
||||
|
||||
@@ -28,7 +28,7 @@ class Domestica(Integration):
|
||||
recipe.save()
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction=file['directions']
|
||||
instruction=file['directions'], space=self.request.space,
|
||||
)
|
||||
|
||||
if file['source'] != '':
|
||||
@@ -40,12 +40,12 @@ class Domestica(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
if file['image'] != '':
|
||||
self.import_recipe_image(recipe, BytesIO(base64.b64decode(file['image'].replace('data:image/jpeg;base64,', ''))))
|
||||
self.import_recipe_image(recipe, BytesIO(base64.b64decode(file['image'].replace('data:image/jpeg;base64,', ''))), filetype='.jpeg')
|
||||
|
||||
return recipe
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import uuid
|
||||
from io import BytesIO, StringIO
|
||||
from zipfile import ZipFile, BadZipFile
|
||||
@@ -11,6 +13,7 @@ from django.utils.translation import gettext as _
|
||||
from django_scopes import scope
|
||||
|
||||
from cookbook.forms import ImportExportBase
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.models import Keyword, Recipe
|
||||
|
||||
|
||||
@@ -57,9 +60,8 @@ class Integration:
|
||||
recipe_stream.write(data)
|
||||
recipe_zip_obj.writestr(filename, recipe_stream.getvalue())
|
||||
recipe_stream.close()
|
||||
|
||||
try:
|
||||
recipe_zip_obj.write(r.image.path, 'image.png')
|
||||
recipe_zip_obj.writestr(f'image{get_filetype(r.image.file.name)}', r.image.file.read())
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
@@ -105,33 +107,90 @@ class Integration:
|
||||
try:
|
||||
self.files = files
|
||||
for f in files:
|
||||
if '.zip' in f['name'] or '.paprikarecipes' in f['name']:
|
||||
if 'RecipeKeeper' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
file_list = []
|
||||
for z in import_zip.filelist:
|
||||
if self.import_file_name_filter(z):
|
||||
file_list.append(z)
|
||||
il.total_recipes += len(file_list)
|
||||
|
||||
for z in file_list:
|
||||
data_list = self.split_recipe_file(import_zip.read(z.filename).decode('utf-8'))
|
||||
for d in data_list:
|
||||
recipe = self.get_recipe_from_file(d)
|
||||
recipe.keywords.add(self.keyword)
|
||||
il.msg += f'{recipe.pk} - {recipe.name} \n'
|
||||
self.handle_duplicates(recipe, import_duplicates)
|
||||
il.imported_recipes += 1
|
||||
il.save()
|
||||
import_zip.close()
|
||||
elif '.zip' in f['name'] or '.paprikarecipes' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
file_list = []
|
||||
for z in import_zip.filelist:
|
||||
if self.import_file_name_filter(z):
|
||||
file_list.append(z)
|
||||
il.total_recipes += len(file_list)
|
||||
|
||||
for z in file_list:
|
||||
try:
|
||||
recipe = self.get_recipe_from_file(BytesIO(import_zip.read(z.filename)))
|
||||
recipe.keywords.add(self.keyword)
|
||||
il.msg += f'{recipe.pk} - {recipe.name} \n'
|
||||
self.handle_duplicates(recipe, import_duplicates)
|
||||
|
||||
il.imported_recipes += 1
|
||||
il.save()
|
||||
except Exception as e:
|
||||
il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n'
|
||||
import_zip.close()
|
||||
elif '.json' in f['name'] or '.txt' in f['name']:
|
||||
data_list = self.split_recipe_file(f['file'])
|
||||
il.total_recipes += len(data_list)
|
||||
for d in data_list:
|
||||
recipe = self.get_recipe_from_file(d)
|
||||
recipe.keywords.add(self.keyword)
|
||||
il.msg += f'{recipe.pk} - {recipe.name} \n'
|
||||
self.handle_duplicates(recipe, import_duplicates)
|
||||
try:
|
||||
recipe = self.get_recipe_from_file(d)
|
||||
recipe.keywords.add(self.keyword)
|
||||
il.msg += f'{recipe.pk} - {recipe.name} \n'
|
||||
self.handle_duplicates(recipe, import_duplicates)
|
||||
il.imported_recipes += 1
|
||||
il.save()
|
||||
except Exception as e:
|
||||
il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n'
|
||||
elif '.rtk' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
for z in import_zip.filelist:
|
||||
if self.import_file_name_filter(z):
|
||||
data_list = self.split_recipe_file(import_zip.read(z.filename).decode('utf-8'))
|
||||
il.total_recipes += len(data_list)
|
||||
|
||||
for d in data_list:
|
||||
try:
|
||||
recipe = self.get_recipe_from_file(d)
|
||||
recipe.keywords.add(self.keyword)
|
||||
il.msg += f'{recipe.pk} - {recipe.name} \n'
|
||||
self.handle_duplicates(recipe, import_duplicates)
|
||||
il.imported_recipes += 1
|
||||
il.save()
|
||||
except Exception as e:
|
||||
il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n'
|
||||
import_zip.close()
|
||||
else:
|
||||
recipe = self.get_recipe_from_file(f['file'])
|
||||
recipe.keywords.add(self.keyword)
|
||||
il.msg += f'{recipe.pk} - {recipe.name} \n'
|
||||
self.handle_duplicates(recipe, import_duplicates)
|
||||
except BadZipFile:
|
||||
il.msg += 'ERROR ' + _('Importer expected a .zip file. Did you choose the correct importer type for your data ?') + '\n'
|
||||
il.msg += 'ERROR ' + _(
|
||||
'Importer expected a .zip file. Did you choose the correct importer type for your data ?') + '\n'
|
||||
except:
|
||||
il.msg += 'ERROR ' + _(
|
||||
'An unexpected error occurred during the import. Please make sure you have uploaded a valid file.') + '\n'
|
||||
|
||||
if len(self.ignored_recipes) > 0:
|
||||
il.msg += '\n' + _('The following recipes were ignored because they already existed:') + ' ' + ', '.join(self.ignored_recipes) + '\n\n'
|
||||
il.msg += '\n' + _(
|
||||
'The following recipes were ignored because they already existed:') + ' ' + ', '.join(
|
||||
self.ignored_recipes) + '\n\n'
|
||||
|
||||
il.keyword = self.keyword
|
||||
il.msg += (_('Imported %s recipes.') % Recipe.objects.filter(keywords=self.keyword).count()) + '\n'
|
||||
@@ -149,13 +208,14 @@ class Integration:
|
||||
self.ignored_recipes.append(recipe.name)
|
||||
|
||||
@staticmethod
|
||||
def import_recipe_image(recipe, image_file):
|
||||
def import_recipe_image(recipe, image_file, filetype='.jpeg'):
|
||||
"""
|
||||
Adds an image to a recipe naming it correctly
|
||||
:param recipe: Recipe object
|
||||
:param image_file: ByteIO stream containing the image
|
||||
:param filetype: type of file to write bytes to, default to .jpeg if unknown
|
||||
"""
|
||||
recipe.image = File(image_file, name=f'{uuid.uuid4()}_{recipe.pk}.png')
|
||||
recipe.image = File(image_file, name=f'{uuid.uuid4()}_{recipe.pk}{filetype}')
|
||||
recipe.save()
|
||||
|
||||
def get_recipe_from_file(self, file):
|
||||
|
||||
@@ -3,6 +3,7 @@ import re
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.helper.ingredient_parser import parse, get_food, get_unit
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Recipe, Step, Food, Unit, Ingredient
|
||||
@@ -11,40 +12,55 @@ from cookbook.models import Recipe, Step, Food, Unit, Ingredient
|
||||
class Mealie(Integration):
|
||||
|
||||
def import_file_name_filter(self, zip_info_object):
|
||||
return re.match(r'^recipes/([A-Za-z\d-])+.json$', zip_info_object.filename)
|
||||
return re.match(r'^recipes/([A-Za-z\d-])+/([A-Za-z\d-])+.json$', zip_info_object.filename)
|
||||
|
||||
def get_recipe_from_file(self, file):
|
||||
recipe_json = json.loads(file.getvalue().decode("utf-8"))
|
||||
|
||||
description = '' if len(recipe_json['description'].strip()) > 500 else recipe_json['description'].strip()
|
||||
|
||||
recipe = Recipe.objects.create(
|
||||
name=recipe_json['name'].strip(), description=recipe_json['description'].strip(),
|
||||
name=recipe_json['name'].strip(), description=description,
|
||||
created_by=self.request.user, internal=True, space=self.request.space)
|
||||
|
||||
# TODO parse times (given in PT2H3M )
|
||||
|
||||
ingredients_added = False
|
||||
for s in recipe_json['recipeInstructions']:
|
||||
for s in recipe_json['recipe_instructions']:
|
||||
step = Step.objects.create(
|
||||
instruction=s['text']
|
||||
instruction=s['text'], space=self.request.space,
|
||||
)
|
||||
if not ingredients_added:
|
||||
ingredients_added = True
|
||||
|
||||
for ingredient in recipe_json['recipeIngredient']:
|
||||
amount, unit, ingredient, note = parse(ingredient)
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
))
|
||||
if len(recipe_json['description'].strip()) > 500:
|
||||
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
|
||||
|
||||
for ingredient in recipe_json['recipe_ingredient']:
|
||||
try:
|
||||
if ingredient['food']:
|
||||
f = get_food(ingredient['food'], self.request.space)
|
||||
u = get_unit(ingredient['unit'], self.request.space)
|
||||
amount = ingredient['quantity']
|
||||
note = ingredient['note']
|
||||
else:
|
||||
amount, unit, ingredient, note = parse(ingredient['note'])
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
except:
|
||||
pass
|
||||
recipe.steps.add(step)
|
||||
|
||||
for f in self.files:
|
||||
if '.zip' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
for z in import_zip.filelist:
|
||||
if re.match(f'^images/{recipe_json["slug"]}.jpg$', z.filename):
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(z.filename)))
|
||||
try:
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(f'recipes/{recipe_json["slug"]}/images/min-original.webp')), filetype=get_filetype(f'recipes/{recipe_json["slug"]}/images/original'))
|
||||
except:
|
||||
pass
|
||||
|
||||
return recipe
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ class MealMaster(Integration):
|
||||
recipe.keywords.add(keyword)
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction='\n'.join(directions) + '\n\n'
|
||||
instruction='\n'.join(directions) + '\n\n', space=self.request.space,
|
||||
)
|
||||
|
||||
for ingredient in ingredients:
|
||||
@@ -53,7 +53,7 @@ class MealMaster(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import re
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.helper.ingredient_parser import parse, get_food, get_unit
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Recipe, Step, Food, Unit, Ingredient
|
||||
@@ -11,13 +12,15 @@ from cookbook.models import Recipe, Step, Food, Unit, Ingredient
|
||||
class NextcloudCookbook(Integration):
|
||||
|
||||
def import_file_name_filter(self, zip_info_object):
|
||||
return re.match(r'^Recipes/([A-Za-z\d\s])+/recipe.json$', zip_info_object.filename)
|
||||
return zip_info_object.filename.endswith('.json')
|
||||
|
||||
def get_recipe_from_file(self, file):
|
||||
recipe_json = json.loads(file.getvalue().decode("utf-8"))
|
||||
|
||||
description = '' if len(recipe_json['description'].strip()) > 500 else recipe_json['description'].strip()
|
||||
|
||||
recipe = Recipe.objects.create(
|
||||
name=recipe_json['name'].strip(), description=recipe_json['description'].strip(),
|
||||
name=recipe_json['name'].strip(), description=description,
|
||||
created_by=self.request.user, internal=True,
|
||||
servings=recipe_json['recipeYield'], space=self.request.space)
|
||||
|
||||
@@ -27,9 +30,12 @@ class NextcloudCookbook(Integration):
|
||||
ingredients_added = False
|
||||
for s in recipe_json['recipeInstructions']:
|
||||
step = Step.objects.create(
|
||||
instruction=s
|
||||
instruction=s, space=self.request.space,
|
||||
)
|
||||
if not ingredients_added:
|
||||
if len(recipe_json['description'].strip()) > 500:
|
||||
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
|
||||
|
||||
ingredients_added = True
|
||||
|
||||
for ingredient in recipe_json['recipeIngredient']:
|
||||
@@ -37,7 +43,7 @@ class NextcloudCookbook(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
@@ -46,7 +52,7 @@ class NextcloudCookbook(Integration):
|
||||
import_zip = ZipFile(f['file'])
|
||||
for z in import_zip.filelist:
|
||||
if re.match(f'^Recipes/{recipe.name}/full.jpg$', z.filename):
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(z.filename)))
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(z.filename)), filetype=get_filetype(z.filename))
|
||||
|
||||
return recipe
|
||||
|
||||
|
||||
71
cookbook/integration/openeats.py
Normal file
71
cookbook/integration/openeats.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import json
|
||||
import re
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from cookbook.helper.ingredient_parser import parse, get_food, get_unit
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Recipe, Step, Food, Unit, Ingredient
|
||||
|
||||
|
||||
class OpenEats(Integration):
|
||||
|
||||
def get_recipe_from_file(self, file):
|
||||
recipe = Recipe.objects.create(name=file['name'].strip(), created_by=self.request.user, internal=True,
|
||||
servings=file['servings'], space=self.request.space, waiting_time=file['cook_time'], working_time=file['prep_time'])
|
||||
|
||||
instructions = ''
|
||||
if file["info"] != '':
|
||||
instructions += file["info"]
|
||||
|
||||
if file["directions"] != '':
|
||||
instructions += file["directions"]
|
||||
|
||||
if file["source"] != '':
|
||||
instructions += file["source"]
|
||||
|
||||
step = Step.objects.create(instruction=instructions, space=self.request.space,)
|
||||
|
||||
for ingredient in file['ingredients']:
|
||||
f = get_food(ingredient['food'], self.request.space)
|
||||
u = get_unit(ingredient['unit'], self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=ingredient['amount'], space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
return recipe
|
||||
|
||||
def split_recipe_file(self, file):
|
||||
recipe_json = json.loads(file.read())
|
||||
recipe_dict = {}
|
||||
ingredient_group_dict = {}
|
||||
|
||||
for o in recipe_json:
|
||||
if o['model'] == 'recipe.recipe':
|
||||
recipe_dict[o['pk']] = {
|
||||
'name': o['fields']['title'],
|
||||
'info': o['fields']['info'],
|
||||
'directions': o['fields']['directions'],
|
||||
'source': o['fields']['source'],
|
||||
'prep_time': o['fields']['prep_time'],
|
||||
'cook_time': o['fields']['cook_time'],
|
||||
'servings': o['fields']['servings'],
|
||||
'ingredients': [],
|
||||
}
|
||||
if o['model'] == 'ingredient.ingredientgroup':
|
||||
ingredient_group_dict[o['pk']] = o['fields']['recipe']
|
||||
|
||||
for o in recipe_json:
|
||||
if o['model'] == 'ingredient.ingredient':
|
||||
ingredient = {
|
||||
'food': o['fields']['title'],
|
||||
'unit': o['fields']['measurement'],
|
||||
'amount': round(o['fields']['numerator'] / o['fields']['denominator'], 2),
|
||||
}
|
||||
recipe_dict[ingredient_group_dict[o['fields']['ingredient_group']]]['ingredients'].append(ingredient)
|
||||
|
||||
return list(recipe_dict.values())
|
||||
|
||||
def get_file_from_recipe(self, recipe):
|
||||
raise NotImplementedError('Method not implemented in storage integration')
|
||||
@@ -20,11 +20,13 @@ class Paprika(Integration):
|
||||
recipe_json = json.loads(recipe_zip.read().decode("utf-8"))
|
||||
|
||||
recipe = Recipe.objects.create(
|
||||
name=recipe_json['name'].strip(), description=recipe_json['description'].strip(),
|
||||
created_by=self.request.user, internal=True, space=self.request.space)
|
||||
name=recipe_json['name'].strip(), created_by=self.request.user, internal=True, space=self.request.space)
|
||||
|
||||
if 'description' in recipe_json:
|
||||
recipe.description = '' if len(recipe_json['description'].strip()) > 500 else recipe_json['description'].strip()
|
||||
|
||||
try:
|
||||
if re.match(r'([0-9])+\s(.)*', recipe_json['servings'] ):
|
||||
if re.match(r'([0-9])+\s(.)*', recipe_json['servings']):
|
||||
s = recipe_json['servings'].split(' ')
|
||||
recipe.servings = s[0]
|
||||
recipe.servings_text = s[1]
|
||||
@@ -40,34 +42,45 @@ class Paprika(Integration):
|
||||
recipe.save()
|
||||
|
||||
instructions = recipe_json['directions']
|
||||
if len(recipe_json['notes'].strip()) > 0:
|
||||
if recipe_json['notes'] and len(recipe_json['notes'].strip()) > 0:
|
||||
instructions += '\n\n### ' + _('Notes') + ' \n' + recipe_json['notes']
|
||||
|
||||
if len(recipe_json['nutritional_info'].strip()) > 0:
|
||||
if recipe_json['nutritional_info'] and len(recipe_json['nutritional_info'].strip()) > 0:
|
||||
instructions += '\n\n### ' + _('Nutritional Information') + ' \n' + recipe_json['nutritional_info']
|
||||
|
||||
if len(recipe_json['source'].strip()) > 0 or len(recipe_json['source_url'].strip()) > 0:
|
||||
instructions += '\n\n### ' + _('Source') + ' \n' + recipe_json['source'].strip() + ' \n' + recipe_json['source_url'].strip()
|
||||
try:
|
||||
if len(recipe_json['source'].strip()) > 0 or len(recipe_json['source_url'].strip()) > 0:
|
||||
instructions += '\n\n### ' + _('Source') + ' \n' + recipe_json['source'].strip() + ' \n' + recipe_json['source_url'].strip()
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction=instructions
|
||||
instruction=instructions, space=self.request.space,
|
||||
)
|
||||
|
||||
if len(recipe_json['description'].strip()) > 500:
|
||||
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
|
||||
|
||||
if 'categories' in recipe_json:
|
||||
for c in recipe_json['categories']:
|
||||
keyword, created = Keyword.objects.get_or_create(name=c.strip(), space=self.request.space)
|
||||
recipe.keywords.add(keyword)
|
||||
|
||||
for ingredient in recipe_json['ingredients'].split('\n'):
|
||||
if len(ingredient.strip()) > 0:
|
||||
amount, unit, ingredient, note = parse(ingredient)
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
))
|
||||
try:
|
||||
for ingredient in recipe_json['ingredients'].split('\n'):
|
||||
if len(ingredient.strip()) > 0:
|
||||
amount, unit, ingredient, note = parse(ingredient)
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
recipe.steps.add(step)
|
||||
|
||||
self.import_recipe_image(recipe, BytesIO(base64.b64decode(recipe_json['photo_data'])))
|
||||
if recipe_json.get("photo_data", None):
|
||||
self.import_recipe_image(recipe, BytesIO(base64.b64decode(recipe_json['photo_data'])), filetype='.jpeg')
|
||||
|
||||
return recipe
|
||||
|
||||
136
cookbook/integration/recettetek.py
Normal file
136
cookbook/integration/recettetek.py
Normal file
@@ -0,0 +1,136 @@
|
||||
import re
|
||||
import json
|
||||
import base64
|
||||
import requests
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
import imghdr
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.helper.ingredient_parser import parse, get_food, get_unit
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword
|
||||
|
||||
|
||||
class RecetteTek(Integration):
|
||||
|
||||
def import_file_name_filter(self, zip_info_object):
|
||||
print("testing", zip_info_object.filename)
|
||||
return re.match(r'^recipes_0.json$', zip_info_object.filename) or re.match(r'^recipes.json$', zip_info_object.filename)
|
||||
|
||||
def split_recipe_file(self, file):
|
||||
|
||||
recipe_json = json.loads(file)
|
||||
|
||||
recipe_list = [r for r in recipe_json]
|
||||
|
||||
return recipe_list
|
||||
|
||||
def get_recipe_from_file(self, file):
|
||||
|
||||
# Create initial recipe with just a title and a decription
|
||||
recipe = Recipe.objects.create(name=file['title'], created_by=self.request.user, internal=True, space=self.request.space, )
|
||||
|
||||
# set the description as an empty string for later use for the source URL, incase there is no description text.
|
||||
recipe.description = ''
|
||||
|
||||
try:
|
||||
if file['description'] != '':
|
||||
recipe.description = file['description'].strip()
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to parse recipe description ', str(e))
|
||||
|
||||
instructions = file['instructions']
|
||||
if not instructions:
|
||||
instructions = ''
|
||||
|
||||
step = Step.objects.create(instruction=instructions, space=self.request.space,)
|
||||
|
||||
# Append the original import url to the step (if it exists)
|
||||
try:
|
||||
if file['url'] != '':
|
||||
step.instruction += '\n\nImported from: ' + file['url']
|
||||
step.save()
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to import source url ', str(e))
|
||||
|
||||
try:
|
||||
# Process the ingredients. Assumes 1 ingredient per line.
|
||||
for ingredient in file['ingredients'].split('\n'):
|
||||
if len(ingredient.strip()) > 0:
|
||||
amount, unit, ingredient, note = parse(ingredient)
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to parse recipe ingredients ', str(e))
|
||||
recipe.steps.add(step)
|
||||
|
||||
# Attempt to import prep/cooking times
|
||||
# quick hack, this assumes only one number in the quantity field.
|
||||
try:
|
||||
if file['quantity'] != '':
|
||||
for item in file['quantity'].split(' '):
|
||||
if item.isdigit():
|
||||
recipe.servings = int(item)
|
||||
break
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to parse quantity ', str(e))
|
||||
|
||||
try:
|
||||
if file['totalTime'] != '':
|
||||
recipe.waiting_time = int(file['totalTime'])
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to parse total times ', str(e))
|
||||
|
||||
try:
|
||||
if file['preparationTime'] != '':
|
||||
recipe.working_time = int(file['preparationTime'])
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to parse prep time ', str(e))
|
||||
|
||||
try:
|
||||
if file['cookingTime'] != '':
|
||||
recipe.waiting_time = int(file['cookingTime'])
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to parse cooking time ', str(e))
|
||||
|
||||
recipe.save()
|
||||
|
||||
# Import the recipe keywords
|
||||
try:
|
||||
if file['keywords'] != '':
|
||||
for keyword in file['keywords'].split(';'):
|
||||
k, created = Keyword.objects.get_or_create(name=keyword.strip(), space=self.request.space)
|
||||
recipe.keywords.add(k)
|
||||
recipe.save()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
# TODO: Parse Nutritional Information
|
||||
|
||||
# Import the original image from the zip file, if we cannot do that, attempt to download it again.
|
||||
try:
|
||||
if file['pictures'][0] != '':
|
||||
image_file_name = file['pictures'][0].split('/')[-1]
|
||||
for f in self.files:
|
||||
if '.rtk' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(image_file_name)), filetype=get_filetype(image_file_name))
|
||||
else:
|
||||
if file['originalPicture'] != '':
|
||||
response = requests.get(file['originalPicture'])
|
||||
if imghdr.what(BytesIO(response.content)) != None:
|
||||
self.import_recipe_image(recipe, BytesIO(response.content), filetype=get_filetype(file['originalPicture']))
|
||||
else:
|
||||
raise Exception("Original image failed to download.")
|
||||
except Exception as e:
|
||||
print(recipe.name, ': failed to import image ', str(e))
|
||||
|
||||
return recipe
|
||||
|
||||
def get_file_from_recipe(self, recipe):
|
||||
raise NotImplementedError('Method not implemented in storage integration')
|
||||
80
cookbook/integration/recipekeeper.py
Normal file
80
cookbook/integration/recipekeeper.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import re
|
||||
from bs4 import BeautifulSoup
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from cookbook.helper.ingredient_parser import parse, get_food, get_unit
|
||||
from cookbook.helper.recipe_url_import import parse_servings, iso_duration_to_minutes
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword
|
||||
|
||||
|
||||
class RecipeKeeper(Integration):
|
||||
|
||||
def import_file_name_filter(self, zip_info_object):
|
||||
return re.match(r'^recipes.html$', zip_info_object.filename)
|
||||
|
||||
def split_recipe_file(self, file):
|
||||
recipe_html = BeautifulSoup(file, 'html.parser')
|
||||
return recipe_html.find_all('div', class_='recipe-details')
|
||||
|
||||
def get_recipe_from_file(self, file):
|
||||
# 'file' comes is as a beautifulsoup object
|
||||
recipe = Recipe.objects.create(name=file.find("h2", {"itemprop": "name"}).text.strip(), created_by=self.request.user, internal=True, space=self.request.space, )
|
||||
|
||||
# add 'Courses' and 'Categories' as keywords
|
||||
for course in file.find_all("span", {"itemprop": "recipeCourse"}):
|
||||
keyword, created = Keyword.objects.get_or_create(name=course.text, space=self.request.space)
|
||||
recipe.keywords.add(keyword)
|
||||
|
||||
for category in file.find_all("meta", {"itemprop": "recipeCategory"}):
|
||||
keyword, created = Keyword.objects.get_or_create(name=category.get("content"), space=self.request.space)
|
||||
recipe.keywords.add(keyword)
|
||||
|
||||
try:
|
||||
recipe.servings = parse_servings(file.find("span", {"itemprop": "recipeYield"}).text.strip())
|
||||
recipe.working_time = iso_duration_to_minutes(file.find("span", {"meta": "prepTime"}).text.strip())
|
||||
recipe.waiting_time = iso_duration_to_minutes(file.find("span", {"meta": "cookTime"}).text.strip())
|
||||
recipe.save()
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
step = Step.objects.create(instruction='', space=self.request.space,)
|
||||
|
||||
for ingredient in file.find("div", {"itemprop": "recipeIngredients"}).findChildren("p"):
|
||||
if ingredient.text == "":
|
||||
continue
|
||||
amount, unit, ingredient, note = parse(ingredient.text.strip())
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
|
||||
for s in file.find("div", {"itemprop": "recipeDirections"}).find_all("p"):
|
||||
if s.text == "":
|
||||
continue
|
||||
step.instruction += s.text + ' \n'
|
||||
|
||||
if file.find("span", {"itemprop": "recipeSource"}).text != '':
|
||||
step.instruction += "\n\nImported from: " + file.find("span", {"itemprop": "recipeSource"}).text
|
||||
step.save()
|
||||
source_url_added = True
|
||||
|
||||
recipe.steps.add(step)
|
||||
|
||||
# import the Primary recipe image that is stored in the Zip
|
||||
try:
|
||||
for f in self.files:
|
||||
if '.zip' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
self.import_recipe_image(recipe, BytesIO(import_zip.read(file.find("img", class_="recipe-photo").get("src"))), filetype='.jpeg')
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
return recipe
|
||||
|
||||
def get_file_from_recipe(self, recipe):
|
||||
raise NotImplementedError('Method not implemented in storage integration')
|
||||
@@ -36,7 +36,7 @@ class RecipeSage(Integration):
|
||||
ingredients_added = False
|
||||
for s in file['recipeInstructions']:
|
||||
step = Step.objects.create(
|
||||
instruction=s['text']
|
||||
instruction=s['text'], space=self.request.space,
|
||||
)
|
||||
if not ingredients_added:
|
||||
ingredients_added = True
|
||||
@@ -46,7 +46,7 @@ class RecipeSage(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ class RezKonv(Integration):
|
||||
recipe.keywords.add(keyword)
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction='\n'.join(directions) + '\n\n'
|
||||
instruction='\n'.join(directions) + '\n\n', space=self.request.space,
|
||||
)
|
||||
|
||||
for ingredient in ingredients:
|
||||
@@ -52,7 +52,7 @@ class RezKonv(Integration):
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
|
||||
@@ -43,14 +43,14 @@ class Safron(Integration):
|
||||
|
||||
recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space, )
|
||||
|
||||
step = Step.objects.create(instruction='\n'.join(directions))
|
||||
step = Step.objects.create(instruction='\n'.join(directions), space=self.request.space,)
|
||||
|
||||
for ingredient in ingredients:
|
||||
amount, unit, ingredient, note = parse(ingredient)
|
||||
f = get_food(ingredient, self.request.space)
|
||||
u = get_unit(unit, self.request.space)
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note
|
||||
food=f, unit=u, amount=amount, note=note, space=self.request.space,
|
||||
))
|
||||
recipe.steps.add(step)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
34
cookbook/migrations/0120_bookmarklet.py
Normal file
34
cookbook/migrations/0120_bookmarklet.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 3.1.7 on 2021-03-29 11:05
|
||||
|
||||
import cookbook.models
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('cookbook', '0119_auto_20210411_2101'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='userpreference',
|
||||
name='use_fractions',
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='BookmarkletImport',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('html', models.TextField()),
|
||||
('url', models.CharField(blank=True, max_length=256, null=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
('space', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space')),
|
||||
],
|
||||
bases=(models.Model, cookbook.models.PermissionModelMixin),
|
||||
),
|
||||
]
|
||||
23
cookbook/migrations/0121_auto_20210518_1638.py
Normal file
23
cookbook/migrations/0121_auto_20210518_1638.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.3 on 2021-05-18 14:38
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0120_bookmarklet'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='userpreference',
|
||||
name='search_style',
|
||||
field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large'), ('NEW', 'New')], default='LARGE', max_length=64),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userpreference',
|
||||
name='use_fractions',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
23
cookbook/migrations/0122_auto_20210527_1712.py
Normal file
23
cookbook/migrations/0122_auto_20210527_1712.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.3 on 2021-05-27 15:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0121_auto_20210518_1638'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='space',
|
||||
name='allow_files',
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='space',
|
||||
name='max_users',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0123_invitelink_email.py
Normal file
18
cookbook/migrations/0123_invitelink_email.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.3 on 2021-05-28 12:34
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0122_auto_20210527_1712'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='invitelink',
|
||||
name='email',
|
||||
field=models.EmailField(blank=True, max_length=254),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0124_alter_userpreference_theme.py
Normal file
18
cookbook/migrations/0124_alter_userpreference_theme.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.3 on 2021-05-30 15:53
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0123_invitelink_email'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='userpreference',
|
||||
name='theme',
|
||||
field=models.CharField(choices=[('BOOTSTRAP', 'Bootstrap'), ('DARKLY', 'Darkly'), ('FLATLY', 'Flatly'), ('SUPERHERO', 'Superhero'), ('TANDOOR', 'Tandoor')], default='FLATLY', max_length=128),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0125_space_demo.py
Normal file
18
cookbook/migrations/0125_space_demo.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.3 on 2021-06-04 14:52
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0124_alter_userpreference_theme'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='space',
|
||||
name='demo',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0126_alter_userpreference_theme.py
Normal file
18
cookbook/migrations/0126_alter_userpreference_theme.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.3 on 2021-06-05 15:11
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0125_space_demo'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='userpreference',
|
||||
name='theme',
|
||||
field=models.CharField(choices=[('TANDOOR', 'Tandoor'), ('BOOTSTRAP', 'Bootstrap'), ('DARKLY', 'Darkly'), ('FLATLY', 'Flatly'), ('SUPERHERO', 'Superhero')], default='TANDOOR', max_length=128),
|
||||
),
|
||||
]
|
||||
17
cookbook/migrations/0127_remove_invitelink_username.py
Normal file
17
cookbook/migrations/0127_remove_invitelink_username.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.3 on 2021-06-07 14:21
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0126_alter_userpreference_theme'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='invitelink',
|
||||
name='username',
|
||||
),
|
||||
]
|
||||
30
cookbook/migrations/0128_userfile.py
Normal file
30
cookbook/migrations/0128_userfile.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 3.2.3 on 2021-06-08 10:23
|
||||
|
||||
import cookbook.models
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('cookbook', '0127_remove_invitelink_username'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UserFile',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=128)),
|
||||
('file', models.FileField(upload_to='files/')),
|
||||
('file_size_kb', models.IntegerField()),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
('space', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space')),
|
||||
],
|
||||
bases=(models.Model, cookbook.models.PermissionModelMixin),
|
||||
),
|
||||
]
|
||||
22
cookbook/migrations/0129_auto_20210608_1233.py
Normal file
22
cookbook/migrations/0129_auto_20210608_1233.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 3.2.3 on 2021-06-08 10:33
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0128_userfile'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='space',
|
||||
name='allow_files',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='space',
|
||||
name='max_file_storage_mb',
|
||||
field=models.IntegerField(default=0, help_text='Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload.'),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0130_alter_userfile_file_size_kb.py
Normal file
18
cookbook/migrations/0130_alter_userfile_file_size_kb.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.3 on 2021-06-08 10:42
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0129_auto_20210608_1233'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='userfile',
|
||||
name='file_size_kb',
|
||||
field=models.IntegerField(blank=True, default=0),
|
||||
),
|
||||
]
|
||||
24
cookbook/migrations/0131_auto_20210608_1929.py
Normal file
24
cookbook/migrations/0131_auto_20210608_1929.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-08 17:29
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0130_alter_userfile_file_size_kb'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='step',
|
||||
name='file',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.userfile'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='step',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('TEXT', 'Text'), ('TIME', 'Time'), ('FILE', 'File')], default='TEXT', max_length=16),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0132_sharelink_request_count.py
Normal file
18
cookbook/migrations/0132_sharelink_request_count.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-12 18:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0131_auto_20210608_1929'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='sharelink',
|
||||
name='request_count',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0133_sharelink_abuse_blocked.py
Normal file
18
cookbook/migrations/0133_sharelink_abuse_blocked.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-12 18:53
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0132_sharelink_request_count'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='sharelink',
|
||||
name='abuse_blocked',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
18
cookbook/migrations/0134_space_allow_sharing.py
Normal file
18
cookbook/migrations/0134_space_allow_sharing.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-15 19:07
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0133_sharelink_abuse_blocked'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='space',
|
||||
name='allow_sharing',
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
]
|
||||
29
cookbook/migrations/0135_auto_20210615_2210.py
Normal file
29
cookbook/migrations/0135_auto_20210615_2210.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-15 20:10
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('cookbook', '0134_space_allow_sharing'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='ingredient',
|
||||
name='space',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='nutritioninformation',
|
||||
name='space',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='step',
|
||||
name='space',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
|
||||
]
|
||||
23
cookbook/migrations/0136_auto_20210617_1343.py
Normal file
23
cookbook/migrations/0136_auto_20210617_1343.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-17 11:43
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cookbook', '0135_auto_20210615_2210'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='importlog',
|
||||
name='imported_recipes',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='importlog',
|
||||
name='total_recipes',
|
||||
field=models.IntegerField(default=0),
|
||||
),
|
||||
]
|
||||
34
cookbook/migrations/0137_auto_20210617_1501.py
Normal file
34
cookbook/migrations/0137_auto_20210617_1501.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-17 13:01
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.models import Subquery, OuterRef
|
||||
from django_scopes import scopes_disabled
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
def migrate_spaces(apps, schema_editor):
|
||||
with scopes_disabled():
|
||||
Recipe = apps.get_model('cookbook', 'Recipe')
|
||||
Step = apps.get_model('cookbook', 'Step')
|
||||
Ingredient = apps.get_model('cookbook', 'Ingredient')
|
||||
NutritionInformation = apps.get_model('cookbook', 'NutritionInformation')
|
||||
|
||||
Step.objects.filter(recipe__isnull=True).delete()
|
||||
Ingredient.objects.filter(step__recipe__isnull=True).delete()
|
||||
NutritionInformation.objects.filter(recipe__isnull=True).delete()
|
||||
|
||||
Step.objects.update(space=Subquery(Step.objects.filter(pk=OuterRef('pk')).values('recipe__space')[:1]))
|
||||
Ingredient.objects.update(space=Subquery(Ingredient.objects.filter(pk=OuterRef('pk')).values('step__recipe__space')[:1]))
|
||||
NutritionInformation.objects.update(space=Subquery(NutritionInformation.objects.filter(pk=OuterRef('pk')).values('recipe__space')[:1]))
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('cookbook', '0136_auto_20210617_1343'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(migrate_spaces),
|
||||
|
||||
]
|
||||
31
cookbook/migrations/0138_auto_20210617_1602.py
Normal file
31
cookbook/migrations/0138_auto_20210617_1602.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 3.2.4 on 2021-06-17 14:02
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.models import Subquery, OuterRef
|
||||
from django_scopes import scopes_disabled
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('cookbook', '0137_auto_20210617_1501'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ingredient',
|
||||
name='space',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='nutritioninformation',
|
||||
name='space',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='step',
|
||||
name='space',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
]
|
||||
@@ -1,3 +1,5 @@
|
||||
import operator
|
||||
import pathlib
|
||||
import re
|
||||
import uuid
|
||||
from datetime import date, timedelta
|
||||
@@ -5,10 +7,12 @@ from datetime import date, timedelta
|
||||
from annoying.fields import AutoOneToOneField
|
||||
from django.contrib import auth
|
||||
from django.contrib.auth.models import Group, User
|
||||
from django.core.files.uploadedfile import UploadedFile, InMemoryUploadedFile
|
||||
from django.core.validators import MinLengthValidator
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext as _
|
||||
from django_prometheus.models import ExportModelOperationsMixin
|
||||
from django_scopes import ScopedManager
|
||||
|
||||
from recipes.settings import (COMMENT_PREF_DEFAULT, FRACTION_PREF_DEFAULT,
|
||||
@@ -52,16 +56,22 @@ class PermissionModelMixin:
|
||||
|
||||
def get_space(self):
|
||||
p = '.'.join(self.get_space_key())
|
||||
if getattr(self, p, None):
|
||||
return getattr(self, p)
|
||||
raise NotImplementedError('get space for method not implemented and standard fields not available')
|
||||
try:
|
||||
if space := operator.attrgetter(p)(self):
|
||||
return space
|
||||
except AttributeError:
|
||||
raise NotImplementedError('get space for method not implemented and standard fields not available')
|
||||
|
||||
|
||||
class Space(models.Model):
|
||||
class Space(ExportModelOperationsMixin('space'), models.Model):
|
||||
name = models.CharField(max_length=128, default='Default')
|
||||
created_by = models.ForeignKey(User, on_delete=models.PROTECT, null=True)
|
||||
message = models.CharField(max_length=512, default='', blank=True)
|
||||
max_recipes = models.IntegerField(default=0)
|
||||
max_file_storage_mb = models.IntegerField(default=0, help_text=_('Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload.'))
|
||||
max_users = models.IntegerField(default=0)
|
||||
allow_sharing = models.BooleanField(default=True)
|
||||
demo = models.BooleanField(default=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@@ -73,12 +83,14 @@ class UserPreference(models.Model, PermissionModelMixin):
|
||||
DARKLY = 'DARKLY'
|
||||
FLATLY = 'FLATLY'
|
||||
SUPERHERO = 'SUPERHERO'
|
||||
TANDOOR = 'TANDOOR'
|
||||
|
||||
THEMES = (
|
||||
(TANDOOR, 'Tandoor'),
|
||||
(BOOTSTRAP, 'Bootstrap'),
|
||||
(DARKLY, 'Darkly'),
|
||||
(FLATLY, 'Flatly'),
|
||||
(SUPERHERO, 'Superhero')
|
||||
(SUPERHERO, 'Superhero'),
|
||||
)
|
||||
|
||||
# Nav colors
|
||||
@@ -115,11 +127,12 @@ class UserPreference(models.Model, PermissionModelMixin):
|
||||
# Search Style
|
||||
SMALL = 'SMALL'
|
||||
LARGE = 'LARGE'
|
||||
NEW = 'NEW'
|
||||
|
||||
SEARCH_STYLE = ((SMALL, _('Small')), (LARGE, _('Large')),)
|
||||
SEARCH_STYLE = ((SMALL, _('Small')), (LARGE, _('Large')), (NEW, _('New')))
|
||||
|
||||
user = AutoOneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
||||
theme = models.CharField(choices=THEMES, max_length=128, default=FLATLY)
|
||||
theme = models.CharField(choices=THEMES, max_length=128, default=TANDOOR)
|
||||
nav_color = models.CharField(
|
||||
choices=COLORS, max_length=128, default=PRIMARY
|
||||
)
|
||||
@@ -242,7 +255,7 @@ class SyncLog(models.Model, PermissionModelMixin):
|
||||
return f"{self.created_at}:{self.sync} - {self.status}"
|
||||
|
||||
|
||||
class Keyword(models.Model, PermissionModelMixin):
|
||||
class Keyword(ExportModelOperationsMixin('keyword'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=64)
|
||||
icon = models.CharField(max_length=16, blank=True, null=True)
|
||||
description = models.TextField(default="", blank=True)
|
||||
@@ -262,7 +275,7 @@ class Keyword(models.Model, PermissionModelMixin):
|
||||
unique_together = (('space', 'name'),)
|
||||
|
||||
|
||||
class Unit(models.Model, PermissionModelMixin):
|
||||
class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=128, validators=[MinLengthValidator(1)])
|
||||
description = models.TextField(blank=True, null=True)
|
||||
|
||||
@@ -276,7 +289,7 @@ class Unit(models.Model, PermissionModelMixin):
|
||||
unique_together = (('space', 'name'),)
|
||||
|
||||
|
||||
class Food(models.Model, PermissionModelMixin):
|
||||
class Food(ExportModelOperationsMixin('food'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=128, validators=[MinLengthValidator(1)])
|
||||
recipe = models.ForeignKey('Recipe', null=True, blank=True, on_delete=models.SET_NULL)
|
||||
supermarket_category = models.ForeignKey(SupermarketCategory, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
@@ -293,7 +306,7 @@ class Food(models.Model, PermissionModelMixin):
|
||||
unique_together = (('space', 'name'),)
|
||||
|
||||
|
||||
class Ingredient(models.Model, PermissionModelMixin):
|
||||
class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, PermissionModelMixin):
|
||||
food = models.ForeignKey(Food, on_delete=models.PROTECT, null=True, blank=True)
|
||||
unit = models.ForeignKey(Unit, on_delete=models.PROTECT, null=True, blank=True)
|
||||
amount = models.DecimalField(default=0, decimal_places=16, max_digits=32)
|
||||
@@ -302,14 +315,8 @@ class Ingredient(models.Model, PermissionModelMixin):
|
||||
no_amount = models.BooleanField(default=False)
|
||||
order = models.IntegerField(default=0)
|
||||
|
||||
objects = ScopedManager(space='step__recipe__space')
|
||||
|
||||
@staticmethod
|
||||
def get_space_key():
|
||||
return 'step', 'recipe', 'space'
|
||||
|
||||
def get_space(self):
|
||||
return self.step_set.first().recipe_set.first().space
|
||||
space = models.ForeignKey(Space, on_delete=models.CASCADE)
|
||||
objects = ScopedManager(space='space')
|
||||
|
||||
def __str__(self):
|
||||
return str(self.amount) + ' ' + str(self.unit) + ' ' + str(self.food)
|
||||
@@ -318,13 +325,14 @@ class Ingredient(models.Model, PermissionModelMixin):
|
||||
ordering = ['order', 'pk']
|
||||
|
||||
|
||||
class Step(models.Model, PermissionModelMixin):
|
||||
class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixin):
|
||||
TEXT = 'TEXT'
|
||||
TIME = 'TIME'
|
||||
FILE = 'FILE'
|
||||
|
||||
name = models.CharField(max_length=128, default='', blank=True)
|
||||
type = models.CharField(
|
||||
choices=((TEXT, _('Text')), (TIME, _('Time')),),
|
||||
choices=((TEXT, _('Text')), (TIME, _('Time')), (FILE, _('File')),),
|
||||
default=TEXT,
|
||||
max_length=16
|
||||
)
|
||||
@@ -332,16 +340,11 @@ class Step(models.Model, PermissionModelMixin):
|
||||
ingredients = models.ManyToManyField(Ingredient, blank=True)
|
||||
time = models.IntegerField(default=0, blank=True)
|
||||
order = models.IntegerField(default=0)
|
||||
file = models.ForeignKey('UserFile', on_delete=models.PROTECT, null=True, blank=True)
|
||||
show_as_header = models.BooleanField(default=True)
|
||||
|
||||
objects = ScopedManager(space='recipe__space')
|
||||
|
||||
@staticmethod
|
||||
def get_space_key():
|
||||
return 'recipe', 'space'
|
||||
|
||||
def get_space(self):
|
||||
return self.recipe_set.first().space
|
||||
space = models.ForeignKey(Space, on_delete=models.CASCADE)
|
||||
objects = ScopedManager(space='space')
|
||||
|
||||
def get_instruction_render(self):
|
||||
from cookbook.helper.template_helper import render_instructions
|
||||
@@ -362,20 +365,14 @@ class NutritionInformation(models.Model, PermissionModelMixin):
|
||||
max_length=512, default="", null=True, blank=True
|
||||
)
|
||||
|
||||
objects = ScopedManager(space='recipe__space')
|
||||
|
||||
@staticmethod
|
||||
def get_space_key():
|
||||
return 'recipe', 'space'
|
||||
|
||||
def get_space(self):
|
||||
return self.recipe_set.first().space
|
||||
space = models.ForeignKey(Space, on_delete=models.CASCADE)
|
||||
objects = ScopedManager(space='space')
|
||||
|
||||
def __str__(self):
|
||||
return 'Nutrition'
|
||||
return f'Nutrition {self.pk}'
|
||||
|
||||
|
||||
class Recipe(models.Model, PermissionModelMixin):
|
||||
class Recipe(ExportModelOperationsMixin('recipe'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=128)
|
||||
description = models.CharField(max_length=512, blank=True, null=True)
|
||||
servings = models.IntegerField(default=1)
|
||||
@@ -407,7 +404,7 @@ class Recipe(models.Model, PermissionModelMixin):
|
||||
return self.name
|
||||
|
||||
|
||||
class Comment(models.Model, PermissionModelMixin):
|
||||
class Comment(ExportModelOperationsMixin('comment'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
|
||||
text = models.TextField()
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
@@ -420,6 +417,9 @@ class Comment(models.Model, PermissionModelMixin):
|
||||
def get_space_key():
|
||||
return 'recipe', 'space'
|
||||
|
||||
def get_space(self):
|
||||
return self.recipe.space
|
||||
|
||||
def __str__(self):
|
||||
return self.text
|
||||
|
||||
@@ -438,7 +438,7 @@ class RecipeImport(models.Model, PermissionModelMixin):
|
||||
return self.name
|
||||
|
||||
|
||||
class RecipeBook(models.Model, PermissionModelMixin):
|
||||
class RecipeBook(ExportModelOperationsMixin('book'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=128)
|
||||
description = models.TextField(blank=True)
|
||||
icon = models.CharField(max_length=16, blank=True, null=True)
|
||||
@@ -452,7 +452,7 @@ class RecipeBook(models.Model, PermissionModelMixin):
|
||||
return self.name
|
||||
|
||||
|
||||
class RecipeBookEntry(models.Model, PermissionModelMixin):
|
||||
class RecipeBookEntry(ExportModelOperationsMixin('book_entry'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
|
||||
book = models.ForeignKey(RecipeBook, on_delete=models.CASCADE)
|
||||
|
||||
@@ -487,7 +487,7 @@ class MealType(models.Model, PermissionModelMixin):
|
||||
return self.name
|
||||
|
||||
|
||||
class MealPlan(models.Model, PermissionModelMixin):
|
||||
class MealPlan(ExportModelOperationsMixin('meal_plan'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, blank=True, null=True)
|
||||
servings = models.DecimalField(default=1, max_digits=8, decimal_places=4)
|
||||
title = models.CharField(max_length=64, blank=True, default='')
|
||||
@@ -512,7 +512,7 @@ class MealPlan(models.Model, PermissionModelMixin):
|
||||
return f'{self.get_label()} - {self.date} - {self.meal_type.name}'
|
||||
|
||||
|
||||
class ShoppingListRecipe(models.Model, PermissionModelMixin):
|
||||
class ShoppingListRecipe(ExportModelOperationsMixin('shopping_list_recipe'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True)
|
||||
servings = models.DecimalField(default=1, max_digits=8, decimal_places=4)
|
||||
|
||||
@@ -535,7 +535,7 @@ class ShoppingListRecipe(models.Model, PermissionModelMixin):
|
||||
return None
|
||||
|
||||
|
||||
class ShoppingListEntry(models.Model, PermissionModelMixin):
|
||||
class ShoppingListEntry(ExportModelOperationsMixin('shopping_list_entry'), models.Model, PermissionModelMixin):
|
||||
list_recipe = models.ForeignKey(ShoppingListRecipe, on_delete=models.CASCADE, null=True, blank=True)
|
||||
food = models.ForeignKey(Food, on_delete=models.CASCADE)
|
||||
unit = models.ForeignKey(Unit, on_delete=models.CASCADE, null=True, blank=True)
|
||||
@@ -565,7 +565,7 @@ class ShoppingListEntry(models.Model, PermissionModelMixin):
|
||||
return None
|
||||
|
||||
|
||||
class ShoppingList(models.Model, PermissionModelMixin):
|
||||
class ShoppingList(ExportModelOperationsMixin('shopping_list'), models.Model, PermissionModelMixin):
|
||||
uuid = models.UUIDField(default=uuid.uuid4)
|
||||
note = models.TextField(blank=True, null=True)
|
||||
recipes = models.ManyToManyField(ShoppingListRecipe, blank=True)
|
||||
@@ -583,9 +583,11 @@ class ShoppingList(models.Model, PermissionModelMixin):
|
||||
return f'Shopping list {self.id}'
|
||||
|
||||
|
||||
class ShareLink(models.Model, PermissionModelMixin):
|
||||
class ShareLink(ExportModelOperationsMixin('share_link'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
|
||||
uuid = models.UUIDField(default=uuid.uuid4)
|
||||
request_count = models.IntegerField(default=0)
|
||||
abuse_blocked = models.BooleanField(default=False)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
@@ -600,9 +602,9 @@ def default_valid_until():
|
||||
return date.today() + timedelta(days=14)
|
||||
|
||||
|
||||
class InviteLink(models.Model, PermissionModelMixin):
|
||||
class InviteLink(ExportModelOperationsMixin('invite_link'), models.Model, PermissionModelMixin):
|
||||
uuid = models.UUIDField(default=uuid.uuid4)
|
||||
username = models.CharField(blank=True, max_length=64)
|
||||
email = models.EmailField(blank=True)
|
||||
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||||
valid_until = models.DateField(default=default_valid_until)
|
||||
used_by = models.ForeignKey(
|
||||
@@ -632,7 +634,7 @@ class TelegramBot(models.Model, PermissionModelMixin):
|
||||
return f"{self.name}"
|
||||
|
||||
|
||||
class CookLog(models.Model, PermissionModelMixin):
|
||||
class CookLog(ExportModelOperationsMixin('cook_log'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
created_at = models.DateTimeField(default=timezone.now)
|
||||
@@ -646,7 +648,7 @@ class CookLog(models.Model, PermissionModelMixin):
|
||||
return self.recipe.name
|
||||
|
||||
|
||||
class ViewLog(models.Model, PermissionModelMixin):
|
||||
class ViewLog(ExportModelOperationsMixin('view_log'), models.Model, PermissionModelMixin):
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
@@ -663,6 +665,10 @@ class ImportLog(models.Model, PermissionModelMixin):
|
||||
running = models.BooleanField(default=True)
|
||||
msg = models.TextField(default="")
|
||||
keyword = models.ForeignKey(Keyword, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
|
||||
total_recipes = models.IntegerField(default=0)
|
||||
imported_recipes = models.IntegerField(default=0)
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
|
||||
@@ -671,3 +677,30 @@ class ImportLog(models.Model, PermissionModelMixin):
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.created_at}:{self.type}"
|
||||
|
||||
|
||||
class BookmarkletImport(ExportModelOperationsMixin('bookmarklet_import'), models.Model, PermissionModelMixin):
|
||||
html = models.TextField()
|
||||
url = models.CharField(max_length=256, null=True, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
|
||||
objects = ScopedManager(space='space')
|
||||
space = models.ForeignKey(Space, on_delete=models.CASCADE)
|
||||
|
||||
|
||||
class UserFile(ExportModelOperationsMixin('user_files'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=128)
|
||||
file = models.FileField(upload_to='files/')
|
||||
file_size_kb = models.IntegerField(default=0, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
|
||||
objects = ScopedManager(space='space')
|
||||
space = models.ForeignKey(Space, on_delete=models.CASCADE)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if hasattr(self.file, 'file') and isinstance(self.file.file, UploadedFile) or isinstance(self.file.file, InMemoryUploadedFile):
|
||||
self.file.name = f'{uuid.uuid4()}' + pathlib.Path(self.file.name).suffix
|
||||
self.file_size_kb = round(self.file.size / 1000)
|
||||
super(UserFile, self).save(*args, **kwargs)
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
from decimal import Decimal
|
||||
from gettext import gettext as _
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import QuerySet
|
||||
from django.db.models import QuerySet, Sum
|
||||
from drf_writable_nested import (UniqueFieldsMixin,
|
||||
WritableNestedModelSerializer)
|
||||
from rest_framework import serializers
|
||||
from rest_framework.exceptions import ValidationError, NotAuthenticated, NotFound, ParseError
|
||||
from rest_framework.fields import ModelField
|
||||
from rest_framework.serializers import BaseSerializer, Serializer
|
||||
from rest_framework.exceptions import ValidationError, NotFound
|
||||
|
||||
from cookbook.models import (Comment, CookLog, Food, Ingredient, Keyword,
|
||||
MealPlan, MealType, NutritionInformation, Recipe,
|
||||
RecipeBook, RecipeBookEntry, RecipeImport,
|
||||
ShareLink, ShoppingList, ShoppingListEntry,
|
||||
ShoppingListRecipe, Step, Storage, Sync, SyncLog,
|
||||
Unit, UserPreference, ViewLog, SupermarketCategory, Supermarket, SupermarketCategoryRelation, ImportLog)
|
||||
Unit, UserPreference, ViewLog, SupermarketCategory, Supermarket,
|
||||
SupermarketCategoryRelation, ImportLog, BookmarkletImport, UserFile)
|
||||
from cookbook.templatetags.custom_tags import markdown
|
||||
|
||||
|
||||
@@ -102,6 +102,51 @@ class UserPreferenceSerializer(serializers.ModelSerializer):
|
||||
)
|
||||
|
||||
|
||||
class UserFileSerializer(serializers.ModelSerializer):
|
||||
|
||||
def check_file_limit(self, validated_data):
|
||||
if self.context['request'].space.max_file_storage_mb == -1:
|
||||
raise ValidationError(_('File uploads are not enabled for this Space.'))
|
||||
|
||||
try:
|
||||
current_file_size_mb = UserFile.objects.filter(space=self.context['request'].space).aggregate(Sum('file_size_kb'))['file_size_kb__sum'] / 1000
|
||||
except TypeError:
|
||||
current_file_size_mb = 0
|
||||
|
||||
if (validated_data['file'].size / 1000 / 1000 + current_file_size_mb - 5) > self.context['request'].space.max_file_storage_mb != 0:
|
||||
raise ValidationError(_('You have reached your file upload limit.'))
|
||||
|
||||
def create(self, validated_data):
|
||||
self.check_file_limit(validated_data)
|
||||
validated_data['created_by'] = self.context['request'].user
|
||||
validated_data['space'] = self.context['request'].space
|
||||
return super().create(validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
self.check_file_limit(validated_data)
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
class Meta:
|
||||
model = UserFile
|
||||
fields = ('name', 'file', 'file_size_kb', 'id',)
|
||||
read_only_fields = ('id', 'file_size_kb')
|
||||
extra_kwargs = {"file": {"required": False, }}
|
||||
|
||||
|
||||
class UserFileViewSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
raise ValidationError('Cannot create File over this view')
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
return instance
|
||||
|
||||
class Meta:
|
||||
model = UserFile
|
||||
fields = ('name', 'file', 'id',)
|
||||
read_only_fields = ('id', 'file')
|
||||
|
||||
|
||||
class StorageSerializer(SpacedModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
@@ -160,7 +205,7 @@ class KeywordSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
||||
return str(obj)
|
||||
|
||||
def create(self, validated_data):
|
||||
obj, created = Keyword.objects.get_or_create(name=validated_data['name'], space=self.context['request'].space)
|
||||
obj, created = Keyword.objects.get_or_create(name=validated_data['name'].strip(), space=self.context['request'].space)
|
||||
return obj
|
||||
|
||||
class Meta:
|
||||
@@ -174,9 +219,13 @@ class KeywordSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
||||
class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
obj, created = Unit.objects.get_or_create(name=validated_data['name'], space=self.context['request'].space)
|
||||
obj, created = Unit.objects.get_or_create(name=validated_data['name'].strip(), space=self.context['request'].space)
|
||||
return obj
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
validated_data['name'] = validated_data['name'].strip()
|
||||
return super(UnitSerializer, self).update(instance, validated_data)
|
||||
|
||||
class Meta:
|
||||
model = Unit
|
||||
fields = ('id', 'name', 'description')
|
||||
@@ -217,10 +266,11 @@ class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer):
|
||||
supermarket_category = SupermarketCategorySerializer(allow_null=True, required=False)
|
||||
|
||||
def create(self, validated_data):
|
||||
obj, created = Food.objects.get_or_create(name=validated_data['name'], space=self.context['request'].space)
|
||||
obj, created = Food.objects.get_or_create(name=validated_data['name'].strip(), space=self.context['request'].space)
|
||||
return obj
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
validated_data['name'] = validated_data['name'].strip()
|
||||
return super(FoodSerializer, self).update(instance, validated_data)
|
||||
|
||||
class Meta:
|
||||
@@ -233,6 +283,10 @@ class IngredientSerializer(WritableNestedModelSerializer):
|
||||
unit = UnitSerializer(allow_null=True)
|
||||
amount = CustomDecimalField()
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data['space'] = self.context['request'].space
|
||||
return super().create(validated_data)
|
||||
|
||||
class Meta:
|
||||
model = Ingredient
|
||||
fields = (
|
||||
@@ -245,6 +299,11 @@ class StepSerializer(WritableNestedModelSerializer):
|
||||
ingredients = IngredientSerializer(many=True)
|
||||
ingredients_markdown = serializers.SerializerMethodField('get_ingredients_markdown')
|
||||
ingredients_vue = serializers.SerializerMethodField('get_ingredients_vue')
|
||||
file = UserFileViewSerializer(allow_null=True, required=False)
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data['space'] = self.context['request'].space
|
||||
return super().create(validated_data)
|
||||
|
||||
def get_ingredients_vue(self, obj):
|
||||
return obj.get_instruction_render()
|
||||
@@ -256,11 +315,16 @@ class StepSerializer(WritableNestedModelSerializer):
|
||||
model = Step
|
||||
fields = (
|
||||
'id', 'name', 'type', 'instruction', 'ingredients', 'ingredients_markdown',
|
||||
'ingredients_vue', 'time', 'order', 'show_as_header'
|
||||
'ingredients_vue', 'time', 'order', 'show_as_header', 'file',
|
||||
)
|
||||
|
||||
|
||||
class NutritionInformationSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data['space'] = self.context['request'].space
|
||||
return super().create(validated_data)
|
||||
|
||||
class Meta:
|
||||
model = NutritionInformation
|
||||
fields = ('id', 'carbohydrates', 'fats', 'proteins', 'calories', 'source')
|
||||
@@ -269,6 +333,12 @@ class NutritionInformationSerializer(serializers.ModelSerializer):
|
||||
class RecipeOverviewSerializer(WritableNestedModelSerializer):
|
||||
keywords = KeywordLabelSerializer(many=True)
|
||||
|
||||
def create(self, validated_data):
|
||||
pass
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
return instance
|
||||
|
||||
class Meta:
|
||||
model = Recipe
|
||||
fields = (
|
||||
@@ -342,7 +412,8 @@ class RecipeBookEntrySerializer(serializers.ModelSerializer):
|
||||
fields = ('id', 'book', 'recipe',)
|
||||
|
||||
|
||||
class MealPlanSerializer(SpacedModelSerializer):
|
||||
class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer):
|
||||
recipe = RecipeOverviewSerializer(required=False, allow_null=True)
|
||||
recipe_name = serializers.ReadOnlyField(source='recipe.name')
|
||||
meal_type_name = serializers.ReadOnlyField(source='meal_type.name')
|
||||
note_markdown = serializers.SerializerMethodField('get_note_markdown')
|
||||
@@ -462,10 +533,25 @@ class ImportLogSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = ImportLog
|
||||
fields = ('id', 'type', 'msg', 'running', 'keyword', 'created_by', 'created_at')
|
||||
fields = ('id', 'type', 'msg', 'running', 'keyword', 'total_recipes', 'imported_recipes', 'created_by', 'created_at')
|
||||
read_only_fields = ('created_by',)
|
||||
|
||||
|
||||
# CORS, REST and Scopes aren't currently working
|
||||
# Scopes are evaluating before REST has authenticated the user assiging a None space
|
||||
# I've made the change below to fix the bookmarklet, other serializers likely need a similar/better fix
|
||||
class BookmarkletImportSerializer(serializers.ModelSerializer):
|
||||
def create(self, validated_data):
|
||||
validated_data['created_by'] = self.context['request'].user
|
||||
validated_data['space'] = self.context['request'].user.userpreference.space
|
||||
return super().create(validated_data)
|
||||
|
||||
class Meta:
|
||||
model = BookmarkletImport
|
||||
fields = ('id', 'url', 'html', 'created_by', 'created_at')
|
||||
read_only_fields = ('created_by', 'space')
|
||||
|
||||
|
||||
# Export/Import Serializers
|
||||
|
||||
class KeywordExportSerializer(KeywordSerializer):
|
||||
@@ -505,6 +591,10 @@ class IngredientExportSerializer(WritableNestedModelSerializer):
|
||||
unit = UnitExportSerializer(allow_null=True)
|
||||
amount = CustomDecimalField()
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data['space'] = self.context['request'].space
|
||||
return super().create(validated_data)
|
||||
|
||||
class Meta:
|
||||
model = Ingredient
|
||||
fields = ('food', 'unit', 'amount', 'note', 'order', 'is_header', 'no_amount')
|
||||
@@ -513,6 +603,10 @@ class IngredientExportSerializer(WritableNestedModelSerializer):
|
||||
class StepExportSerializer(WritableNestedModelSerializer):
|
||||
ingredients = IngredientExportSerializer(many=True)
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data['space'] = self.context['request'].space
|
||||
return super().create(validated_data)
|
||||
|
||||
class Meta:
|
||||
model = Step
|
||||
fields = ('name', 'type', 'instruction', 'ingredients', 'time', 'order', 'show_as_header')
|
||||
|
||||
BIN
cookbook/static/assets/brand_logo.png
Normal file
BIN
cookbook/static/assets/brand_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
165
cookbook/static/assets/brand_logo.svg
Normal file
165
cookbook/static/assets/brand_logo.svg
Normal file
@@ -0,0 +1,165 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:serif="http://www.serif.com/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="2048"
|
||||
height="512"
|
||||
viewBox="0 0 2048 512"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
|
||||
id="svg48"
|
||||
sodipodi:docname="brand_logo.svg"
|
||||
inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
|
||||
id="metadata52"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1377"
|
||||
id="namedview50"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.4921875"
|
||||
inkscape:cx="781.42929"
|
||||
inkscape:cy="329.59753"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="1072"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg48"
|
||||
inkscape:document-rotation="0" />
|
||||
<g
|
||||
id="Logo"
|
||||
transform="matrix(0.637323,0,0,0.637323,-243.095,-716.725)">
|
||||
<g
|
||||
id="Kreis"
|
||||
transform="matrix(1.44936,0,0,1.50279,387.258,1039.34)">
|
||||
<ellipse
|
||||
cx="273.12299"
|
||||
cy="324.01501"
|
||||
rx="259.82199"
|
||||
ry="250.584"
|
||||
style="fill:url(#_Linear1)"
|
||||
id="ellipse2" />
|
||||
<clipPath
|
||||
id="_clip2">
|
||||
<ellipse
|
||||
cx="273.12299"
|
||||
cy="324.01501"
|
||||
rx="259.82199"
|
||||
ry="250.584"
|
||||
id="ellipse4" />
|
||||
</clipPath>
|
||||
<g
|
||||
clip-path="url(#_clip2)"
|
||||
id="g18">
|
||||
<g
|
||||
id="Shadow"
|
||||
transform="matrix(1.10322,0,0,1.064,-5.58287,50.5786)">
|
||||
<path
|
||||
d="M 156.285,427.208 389.554,660.477 668.803,495.551 374.012,200.761 Z"
|
||||
style="fill:#161616"
|
||||
id="path7" />
|
||||
<g
|
||||
transform="translate(-4.22105,0.775864)"
|
||||
id="g11">
|
||||
<path
|
||||
d="M 208.628,178.613 485.935,455.919 590.027,364.63 296.923,71.526 l -2.748,67.463 z"
|
||||
style="fill:#161616"
|
||||
id="path9" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-85.3876,27.8512)"
|
||||
id="g15">
|
||||
<path
|
||||
d="m 310.385,145.641 277.307,277.307 2.7,-61.591 -293.104,-293.104 -3.113,70.736 z"
|
||||
style="fill:#161616"
|
||||
id="path13" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.471,0,0,1.471,406.537,1149.69)"
|
||||
id="g23">
|
||||
<path
|
||||
d="m 256.049,220 c 30.173,-0.006 56.607,-12.69 73.339,-25.866 16.962,-13.38 41.511,-10.728 55.223,5.966 22.518,27.276 35.987,61.844 35.987,99.43 0,61.55 -37.994,137.571 -90.834,164.176 -22.729,11.444 -46.298,16.88 -73.666,16.893 v 0 H 256.049 256 v 0 C 228.632,480.586 205.063,475.15 182.334,463.706 129.494,437.101 91.5,361.08 91.5,299.53 c 0,-37.586 13.469,-72.154 35.987,-99.43 13.712,-16.694 38.261,-19.346 55.223,-5.966 16.732,13.176 43.166,25.86 73.339,25.866 z"
|
||||
style="fill:#ffcb76"
|
||||
id="path21" />
|
||||
</g>
|
||||
<g
|
||||
id="Flame-2"
|
||||
serif:id="Flame 2"
|
||||
transform="matrix(0.965725,0,0,0.89175,164.497,436.391)">
|
||||
<path
|
||||
d="m 604.408,844.314 c -2.427,-3.469 -2.446,-8.258 -0.046,-11.749 2.401,-3.491 6.643,-4.844 10.407,-3.319 19.101,7.623 44.064,19.383 63.438,35.206 40.319,32.929 51.343,54.955 60.345,77.639 10.656,26.852 12.233,54.589 9.963,73.989 -6.497,55.53 -48.16,101.42 -107.481,101.42 -59.321,0 -106.541,-45.45 -107.481,-101.42 -0.567,-33.708 10.432,-60.637 22.435,-79.86 2.994,-4.783 8.606,-6.751 13.621,-4.776 5.014,1.975 8.148,7.387 7.606,13.136 -1.722,12.136 -2.853,24.792 -2.283,34.904 1.931,34.216 22.239,43.016 43.151,42.806 22.288,-0.21 44.842,-19.12 36.714,-67.395 -7.107,-42.214 -32.435,-84.701 -50.389,-110.581 z"
|
||||
style="fill:#ff6f00"
|
||||
id="path25" />
|
||||
<clipPath
|
||||
id="_clip3">
|
||||
<path
|
||||
d="m 604.408,844.314 c -2.427,-3.469 -2.446,-8.258 -0.046,-11.749 2.401,-3.491 6.643,-4.844 10.407,-3.319 19.101,7.623 44.064,19.383 63.438,35.206 40.319,32.929 51.343,54.955 60.345,77.639 10.656,26.852 12.233,54.589 9.963,73.989 -6.497,55.53 -48.16,101.42 -107.481,101.42 -59.321,0 -106.541,-45.45 -107.481,-101.42 -0.567,-33.708 10.432,-60.637 22.435,-79.86 2.994,-4.783 8.606,-6.751 13.621,-4.776 5.014,1.975 8.148,7.387 7.606,13.136 -1.722,12.136 -2.853,24.792 -2.283,34.904 1.931,34.216 22.239,43.016 43.151,42.806 22.288,-0.21 44.842,-19.12 36.714,-67.395 -7.107,-42.214 -32.435,-84.701 -50.389,-110.581 z"
|
||||
id="path27" />
|
||||
</clipPath>
|
||||
<g
|
||||
clip-path="url(#_clip3)"
|
||||
id="g34">
|
||||
<g
|
||||
transform="matrix(1.28784,-0.270602,0.285942,1.59598,247.349,825.209)"
|
||||
id="g32">
|
||||
<path
|
||||
d="m 255.004,46.957 c 24.543,11.588 50.996,38.49 58.303,73.204 12.13,57.63 -21.736,73.628 -50.811,72.242 -46.607,-2.222 -62.302,-39.157 -31.17,-83.503 19.305,-27.499 1.337,-72.492 23.678,-61.943 z"
|
||||
style="fill:#ffd100"
|
||||
id="path30" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="Hut"
|
||||
transform="matrix(1.521,0,0,1.521,393.566,1149.06)">
|
||||
<path
|
||||
d="m 228.197,408.524 c -5.499,0 -10.384,-1.836 -14.173,-4.905 -2.248,-1.825 -3.104,-4.867 -2.136,-7.595 0.968,-2.729 3.549,-4.552 6.444,-4.552 13.882,-0.072 37.78,-0.076 37.78,-0.076 0,0 23.897,0.004 37.779,0.076 2.895,0 5.476,1.823 6.444,4.552 0.968,2.728 0.112,5.77 -2.136,7.595 -3.789,3.069 -8.673,4.905 -14.172,4.905 z M 217.24,378.877 c -3.032,0 -5.94,-1.206 -8.082,-3.352 -2.143,-2.146 -3.344,-5.056 -3.338,-8.089 0.011,-6.317 0.022,-12.897 0.022,-12.897 0,-4.116 -2.745,-7.725 -6.711,-8.825 -13.818,-3.873 -23.931,-16.246 -23.931,-30.891 0,-17.753 14.859,-32.166 33.162,-32.166 0,0 0,0 0,0 7.039,0 13.313,-4.439 15.655,-11.076 3.226,-9.191 12.394,-19.566 31.983,-19.583 v 0 h 0.223 v 0 c 19.589,0.017 28.757,10.392 31.983,19.583 2.343,6.637 8.616,11.076 15.655,11.076 0,0 0,0 0,0 18.303,0 33.162,14.413 33.162,32.166 0,14.645 -10.112,27.018 -23.93,30.891 -3.966,1.1 -6.711,4.709 -6.712,8.825 0,0 0.005,6.588 0.01,12.908 0.003,3.031 -1.2,5.938 -3.342,8.082 -2.142,2.143 -5.048,3.348 -8.078,3.348 -19.356,0 -58.367,0 -77.731,0 z"
|
||||
style="fill:#161616"
|
||||
id="path37" />
|
||||
</g>
|
||||
</g>
|
||||
<defs
|
||||
id="defs46">
|
||||
<linearGradient
|
||||
id="_Linear1"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2e-6,0,0,2e-6,3755.77,81.7179)"><stop
|
||||
offset="0"
|
||||
style="stop-color:rgb(39,39,39);stop-opacity:1"
|
||||
id="stop41" /><stop
|
||||
offset="1"
|
||||
style="stop-color:rgb(108,108,108);stop-opacity:1"
|
||||
id="stop43" /></linearGradient>
|
||||
</defs>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:333.333px;line-height:1.25;font-family:sans-serif;fill:#2e2e2e;fill-opacity:1;stroke:none;"
|
||||
x="625.77777"
|
||||
y="373.5943"
|
||||
id="text56"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan54"
|
||||
x="625.77777"
|
||||
y="373.5943"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:333.333px;font-family:'Maiandra GD';-inkscape-font-specification:'Maiandra GD';fill:#2e2e2e;fill-opacity:1;">Tandoor</tspan></text></svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
167
cookbook/static/assets/brand_logo_white.svg
Normal file
167
cookbook/static/assets/brand_logo_white.svg
Normal file
@@ -0,0 +1,167 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:serif="http://www.serif.com/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="2048"
|
||||
height="512"
|
||||
viewBox="0 0 2048 512"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
|
||||
id="svg48"
|
||||
sodipodi:docname="brand_logo_white.svg"
|
||||
inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
|
||||
id="metadata52"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1377"
|
||||
id="namedview50"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.4921875"
|
||||
inkscape:cx="781.42929"
|
||||
inkscape:cy="329.59753"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="1072"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg48"
|
||||
inkscape:document-rotation="0" />
|
||||
<g
|
||||
id="g880"
|
||||
transform="translate(0,2.5332475e-4)"><g
|
||||
id="Logo"
|
||||
transform="matrix(0.637323,0,0,0.637323,-243.095,-716.725)">
|
||||
<g
|
||||
id="Kreis"
|
||||
transform="matrix(1.44936,0,0,1.50279,387.258,1039.34)">
|
||||
<ellipse
|
||||
cx="273.12299"
|
||||
cy="324.01501"
|
||||
rx="259.82199"
|
||||
ry="250.584"
|
||||
style="fill:url(#_Linear1)"
|
||||
id="ellipse2" />
|
||||
<clipPath
|
||||
id="_clip2">
|
||||
<ellipse
|
||||
cx="273.12299"
|
||||
cy="324.01501"
|
||||
rx="259.82199"
|
||||
ry="250.584"
|
||||
id="ellipse4" />
|
||||
</clipPath>
|
||||
<g
|
||||
clip-path="url(#_clip2)"
|
||||
id="g18">
|
||||
<g
|
||||
id="Shadow"
|
||||
transform="matrix(1.10322,0,0,1.064,-5.58287,50.5786)">
|
||||
<path
|
||||
d="M 156.285,427.208 389.554,660.477 668.803,495.551 374.012,200.761 Z"
|
||||
style="fill:#161616"
|
||||
id="path7" />
|
||||
<g
|
||||
transform="translate(-4.22105,0.775864)"
|
||||
id="g11">
|
||||
<path
|
||||
d="M 208.628,178.613 485.935,455.919 590.027,364.63 296.923,71.526 l -2.748,67.463 z"
|
||||
style="fill:#161616"
|
||||
id="path9" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-85.3876,27.8512)"
|
||||
id="g15">
|
||||
<path
|
||||
d="m 310.385,145.641 277.307,277.307 2.7,-61.591 -293.104,-293.104 -3.113,70.736 z"
|
||||
style="fill:#161616"
|
||||
id="path13" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.471,0,0,1.471,406.537,1149.69)"
|
||||
id="g23">
|
||||
<path
|
||||
d="m 256.049,220 c 30.173,-0.006 56.607,-12.69 73.339,-25.866 16.962,-13.38 41.511,-10.728 55.223,5.966 22.518,27.276 35.987,61.844 35.987,99.43 0,61.55 -37.994,137.571 -90.834,164.176 -22.729,11.444 -46.298,16.88 -73.666,16.893 v 0 H 256.049 256 v 0 C 228.632,480.586 205.063,475.15 182.334,463.706 129.494,437.101 91.5,361.08 91.5,299.53 c 0,-37.586 13.469,-72.154 35.987,-99.43 13.712,-16.694 38.261,-19.346 55.223,-5.966 16.732,13.176 43.166,25.86 73.339,25.866 z"
|
||||
style="fill:#ffcb76"
|
||||
id="path21" />
|
||||
</g>
|
||||
<g
|
||||
id="Flame-2"
|
||||
serif:id="Flame 2"
|
||||
transform="matrix(0.965725,0,0,0.89175,164.497,436.391)">
|
||||
<path
|
||||
d="m 604.408,844.314 c -2.427,-3.469 -2.446,-8.258 -0.046,-11.749 2.401,-3.491 6.643,-4.844 10.407,-3.319 19.101,7.623 44.064,19.383 63.438,35.206 40.319,32.929 51.343,54.955 60.345,77.639 10.656,26.852 12.233,54.589 9.963,73.989 -6.497,55.53 -48.16,101.42 -107.481,101.42 -59.321,0 -106.541,-45.45 -107.481,-101.42 -0.567,-33.708 10.432,-60.637 22.435,-79.86 2.994,-4.783 8.606,-6.751 13.621,-4.776 5.014,1.975 8.148,7.387 7.606,13.136 -1.722,12.136 -2.853,24.792 -2.283,34.904 1.931,34.216 22.239,43.016 43.151,42.806 22.288,-0.21 44.842,-19.12 36.714,-67.395 -7.107,-42.214 -32.435,-84.701 -50.389,-110.581 z"
|
||||
style="fill:#ff6f00"
|
||||
id="path25" />
|
||||
<clipPath
|
||||
id="_clip3">
|
||||
<path
|
||||
d="m 604.408,844.314 c -2.427,-3.469 -2.446,-8.258 -0.046,-11.749 2.401,-3.491 6.643,-4.844 10.407,-3.319 19.101,7.623 44.064,19.383 63.438,35.206 40.319,32.929 51.343,54.955 60.345,77.639 10.656,26.852 12.233,54.589 9.963,73.989 -6.497,55.53 -48.16,101.42 -107.481,101.42 -59.321,0 -106.541,-45.45 -107.481,-101.42 -0.567,-33.708 10.432,-60.637 22.435,-79.86 2.994,-4.783 8.606,-6.751 13.621,-4.776 5.014,1.975 8.148,7.387 7.606,13.136 -1.722,12.136 -2.853,24.792 -2.283,34.904 1.931,34.216 22.239,43.016 43.151,42.806 22.288,-0.21 44.842,-19.12 36.714,-67.395 -7.107,-42.214 -32.435,-84.701 -50.389,-110.581 z"
|
||||
id="path27" />
|
||||
</clipPath>
|
||||
<g
|
||||
clip-path="url(#_clip3)"
|
||||
id="g34">
|
||||
<g
|
||||
transform="matrix(1.28784,-0.270602,0.285942,1.59598,247.349,825.209)"
|
||||
id="g32">
|
||||
<path
|
||||
d="m 255.004,46.957 c 24.543,11.588 50.996,38.49 58.303,73.204 12.13,57.63 -21.736,73.628 -50.811,72.242 -46.607,-2.222 -62.302,-39.157 -31.17,-83.503 19.305,-27.499 1.337,-72.492 23.678,-61.943 z"
|
||||
style="fill:#ffd100"
|
||||
id="path30" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="Hut"
|
||||
transform="matrix(1.521,0,0,1.521,393.566,1149.06)">
|
||||
<path
|
||||
d="m 228.197,408.524 c -5.499,0 -10.384,-1.836 -14.173,-4.905 -2.248,-1.825 -3.104,-4.867 -2.136,-7.595 0.968,-2.729 3.549,-4.552 6.444,-4.552 13.882,-0.072 37.78,-0.076 37.78,-0.076 0,0 23.897,0.004 37.779,0.076 2.895,0 5.476,1.823 6.444,4.552 0.968,2.728 0.112,5.77 -2.136,7.595 -3.789,3.069 -8.673,4.905 -14.172,4.905 z M 217.24,378.877 c -3.032,0 -5.94,-1.206 -8.082,-3.352 -2.143,-2.146 -3.344,-5.056 -3.338,-8.089 0.011,-6.317 0.022,-12.897 0.022,-12.897 0,-4.116 -2.745,-7.725 -6.711,-8.825 -13.818,-3.873 -23.931,-16.246 -23.931,-30.891 0,-17.753 14.859,-32.166 33.162,-32.166 0,0 0,0 0,0 7.039,0 13.313,-4.439 15.655,-11.076 3.226,-9.191 12.394,-19.566 31.983,-19.583 v 0 h 0.223 v 0 c 19.589,0.017 28.757,10.392 31.983,19.583 2.343,6.637 8.616,11.076 15.655,11.076 0,0 0,0 0,0 18.303,0 33.162,14.413 33.162,32.166 0,14.645 -10.112,27.018 -23.93,30.891 -3.966,1.1 -6.711,4.709 -6.712,8.825 0,0 0.005,6.588 0.01,12.908 0.003,3.031 -1.2,5.938 -3.342,8.082 -2.142,2.143 -5.048,3.348 -8.078,3.348 -19.356,0 -58.367,0 -77.731,0 z"
|
||||
style="fill:#161616"
|
||||
id="path37" />
|
||||
</g>
|
||||
</g></g>
|
||||
<defs
|
||||
id="defs46">
|
||||
<linearGradient
|
||||
id="_Linear1"
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2e-6,0,0,2e-6,3755.77,81.7179)"><stop
|
||||
offset="0"
|
||||
style="stop-color:rgb(39,39,39);stop-opacity:1"
|
||||
id="stop41" /><stop
|
||||
offset="1"
|
||||
style="stop-color:rgb(108,108,108);stop-opacity:1"
|
||||
id="stop43" /></linearGradient>
|
||||
</defs>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:333.333px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
x="625.77777"
|
||||
y="373.5943"
|
||||
id="text56"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan54"
|
||||
x="625.77777"
|
||||
y="373.5943"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:333.333px;font-family:'Maiandra GD';-inkscape-font-specification:'Maiandra GD';fill:#ffffff;fill-opacity:1">Tandoor</tspan></text></svg>
|
||||
|
After Width: | Height: | Size: 7.6 KiB |
544
cookbook/static/assets/header.svg
Normal file
544
cookbook/static/assets/header.svg
Normal file
@@ -0,0 +1,544 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="3109.5654mm"
|
||||
height="485.83429mm"
|
||||
viewBox="0 0 3109.5654 485.83429"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="header.svg">
|
||||
<defs
|
||||
id="defs5069" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="4.3349334"
|
||||
inkscape:cx="130.47689"
|
||||
inkscape:cy="1650.2359"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2520"
|
||||
inkscape:window-height="1481"
|
||||
inkscape:window-x="8629"
|
||||
inkscape:window-y="570"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5072">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(1054.7827,-7.0828552)">
|
||||
<rect
|
||||
style="fill:#222222;fill-opacity:0.99215686;stroke:none;stroke-width:1.73483849;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5625"
|
||||
width="3109.5654"
|
||||
height="485.83429"
|
||||
x="-1054.7827"
|
||||
y="7.0828552" />
|
||||
<path
|
||||
id="path5627"
|
||||
d="m -1000.2201,176.94992 c -2.2188,0 -4.0001,-1.78126 -4.0001,-3.99999 0,-3.87501 4.0001,-2.875 4.0001,-8.00001 1.49995,0 3.99995,3.68753 3.99995,7 0,3.3125 -1.78125,5 -3.99995,5 z m 15.99995,0 c -2.21875,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.78125,5 -4,5 z m 16,0 c -2.21875,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.78125,5 -4,5 z m 5.99999,20.00002 h -3.99998 v -18.00002 h -4.00001 v 18.00002 h -12 v -18.00002 h -4 v 18.00002 h -11.99999 v -18.00002 h -4.00006 v 18.00002 h -3.9999 c -3.3126,0 -6,2.68747 -6,5.99997 v 26.00001 h 55.99994 v -26.00001 c 0,-3.3125 -2.6875,-5.99997 -6,-5.99997 z m 2.00001,27.99999 h -48.00005 v -9.00538 c 2.0278,-1.18486 2.991,-2.99462 5.3438,-2.99462 3.49388,0 3.90662,3.99998 9.34375,3.99998 5.35538,0 5.90213,-3.99998 9.3125,-3.99998 3.51849,0 3.90013,3.99998 9.34375,3.99998 5.41964,0 5.84587,-3.99998 9.34375,-3.99998 2.311,0 3.28061,1.80937 5.3125,2.99438 z m 0,-14.04676 c -1.20325,-0.98425 -2.65213,-1.95324 -5.3125,-1.95324 -5.42875,0 -5.85312,4 -9.34375,4 -3.46187,0 -3.93175,-4 -9.34375,-4 -5.35525,0 -5.90225,4 -9.3125,4 -3.51851,0 -3.90024,-4 -9.34375,-4 -2.6829,0 -4.1376,0.97177 -5.3438,1.95724 v -7.95726 c 0,-1.10272 0.8973,-1.99998 2.0001,-1.99998 h 43.99994 c 1.10276,0 2.00001,0.89726 2.00001,1.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5640"
|
||||
d="m -868.22025,214.94992 c -1.65751,0 -2.99998,1.34249 -2.99998,3 0,1.65624 1.34247,3 2.99998,3 1.65752,0 2.99999,-1.34376 2.99999,-3 0,-1.65751 -1.34247,-3 -2.99999,-3 z m 16.78123,-6.99624 11.21876,-43.00376 h -57.99999 c -3.30872,0 -5.99997,2.69127 -5.99997,6.00004 v 19.99996 c 0,3.30877 2.69125,6 5.99997,6 h 12.78252 l 0.94126,10.82001 c -4.50875,1.7275 -7.72376,6.06374 -7.72376,11.17999 v 6 c 0,2.20873 1.79125,4 3.99999,4 h 39.99999 c 2.20874,0 3.99999,-1.79127 3.99999,-4 v -6 c 0,-4.92499 -2.97374,-9.14752 -7.21876,-10.99624 z m -46.78123,-15.00376 c -1.10123,0 -1.99997,-0.89625 -1.99997,-2 v -19.99996 c 0,-1.10375 0.89874,-2 1.99997,-2 h 10.3475 l 2.08751,23.99996 z m 52.82248,-23.99996 -2.08748,7.99996 h -19.73498 c -0.55253,0 -1.00002,0.44751 -1.00002,1.00004 v 1.99996 c 0,0.55253 0.44749,1 1.00002,1 h 18.69247 l -2.0875,8 h -16.60497 c -0.55253,0 -1.00002,0.44751 -1.00002,1 v 2 c 0,0.55253 0.44749,1 1.00002,1 h 15.56122 l -3.65248,14 h -25.24125 l -3.30501,-37.99996 z m -2.82248,55.99996 h -39.99999 v -6 c 0,-4.41125 3.58875,-8 7.99999,-8 h 24 c 4.41125,0 8,3.58875 8,8 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249999" />
|
||||
<path
|
||||
id="path5651"
|
||||
d="m -587.90184,184.94991 h -17.53413 c -0.68885,0 -1.25244,-0.67497 -1.25244,-1.49998 v -0.99999 c 0,-0.82501 0.56359,-1.50002 1.25244,-1.50002 h 17.53413 c 0.68885,0 1.25244,0.67501 1.25244,1.50002 v 0.99999 c 0,0.82501 -0.56359,1.49998 -1.25244,1.49998 z m 1.25244,6.5 v -0.99999 c 0,-0.82501 -0.56359,-1.49998 -1.25244,-1.49998 h -17.53413 c -0.68885,0 -1.25244,0.67497 -1.25244,1.49998 v 0.99999 c 0,0.82501 0.56359,1.50002 1.25244,1.50002 h 17.53413 c 0.68885,0 1.25244,-0.67501 1.25244,-1.50002 z m 6.75274,33.49998 h 0.34442 c 0.68886,0 1.25244,0.67501 1.25244,1.50002 v 0.99999 c 0,0.82501 -0.56358,1.50002 -1.25244,1.50002 h -37.15569 c -4.61319,0 -8.34963,-4.47501 -8.34963,-10 v -43.99997 c 0,-5.52502 3.73644,-10.00003 8.34963,-10.00003 h 35.90324 c 1.38812,0 2.50489,1.33751 2.50489,3.00004 v 45.99995 c 0,1.25 -0.64707,2.32499 -1.55513,2.775 -0.37572,2.01252 -0.45921,5.7 -0.0416,8.22498 z m -31.80152,-11.99997 h 30.05855 v -43.99997 h -30.05855 z m -10.01952,1.99998 c 1.39856,-1.24997 3.13111,-1.99998 5.00977,-1.99998 h 1.66992 v -43.99997 h -1.66992 c -2.76582,0 -5.00977,2.68749 -5.00977,6 z m 38.85693,9.99999 c -0.32364,-2.54999 -0.30268,-5.64997 0,-7.99998 h -33.84716 c -6.67971,0 -6.67971,7.99998 0,7.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.11422013" />
|
||||
<path
|
||||
id="path5662"
|
||||
d="m -321.10736,168.9499 a 11.896253,11.896253 0 0 0 -7.21627,2.46752 c -2.9175,-3.90501 -7.53374,-6.4675 -12.78372,-6.4675 -5.25,0 -9.86628,2.56249 -12.78378,6.4675 a 11.945003,11.945003 0 0 0 -19.21627,9.53248 c 0,5.21751 8.00003,28.00002 8.00003,28.00002 v 16.00002 a 4.0000012,4.0000012 0 0 0 3.99998,3.99998 h 40.00003 a 4.0000012,4.0000012 0 0 0 3.99997,-3.99998 v -16.00002 c 0,0 8.00003,-22.78251 8.00003,-28.00002 a 12.000003,12.000003 0 0 0 -12,-12 z m -38.00003,54.00004 v -10 h 36.00002 v 10 z m 36.34251,-16.00002 h -3.69375 l 1.35126,-16.84376 a 1.0000003,1.0000003 0 0 0 -0.91624,-1.07622 l -2.00001,-0.16009 h -0.0812 a 1.0000003,1.0000003 0 0 0 -0.99999,0.92124 l -1.37498,17.16252 h -8.71002 v -17.00375 a 1.0000003,1.0000003 0 0 0 -0.99999,-1 h -2.00001 a 1.0000003,1.0000003 0 0 0 -1.00001,1 v 16.99999 h -8.55249 l -1.375,-17.16248 a 1.0000003,1.0000003 0 0 0 -1.00001,-0.92128 h -0.0812 l -2.00001,0.16009 a 1.0000003,1.0000003 0 0 0 -0.91626,1.07623 l 1.35877,16.84751 h -3.69375 c -3.65753,-10.40249 -7.6,-23.33251 -7.65751,-26.00002 a 5.9462515,5.9462515 0 0 1 9.59,-4.74999 l 4.81501,3.65251 3.61749,-4.84124 c 1.9275,-2.58127 4.83502,-4.06127 7.97752,-4.06127 3.14246,0 6.04997,1.48 7.97748,4.05876 l 3.61749,4.84125 4.81502,-3.65001 a 5.9462515,5.9462515 0 0 1 9.59003,4.74001 c -0.0575,2.67749 -4.00001,15.60751 -7.65755,26.01 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500003" />
|
||||
<path
|
||||
id="path5673"
|
||||
d="m -847.60614,77.650015 c -1.68752,-1.42499 -3.825,-2.2 -6.02501,-2.2 -2.7375,0 -5.3125,1.18748 -7.11249,3.26249 l -2.55,-11.12502 c -1.96251,-8.62499 -9.45,-14.63748 -18.20002,-14.63748 -1.41248,0 -2.83748,0.16241 -4.22498,0.4875 -10.05001,2.33751 -16.3375,12.50002 -14.025,22.63751 l 5.57499,24.375005 c 0.05,0.23744 0.1375,0.46249 0.19999,0.7 -1.17499,0.38749 -2.25,1.47499 -2.25,2.79999 V 113.95 c 0,1.66251 1.33752,3 2.97501,3 h 37.8875 c 1.63749,0 3.14999,-1.33749 3.14999,-3 v -9.99999 c 0,-1.42499 -1.17499,-2.55 -2.48751,-2.86248 l 8.3,-10.050035 c 3.32501,-4.02499 2.77501,-10.02498 -1.2125,-13.38748 z m -8.61251,35.300005 h -35.99999 v -8.00001 h 35.99999 z m 6.77501,-24.475005 -10.3125,12.475015 h -30.10001 c -0.14999,-0.46253 -0.33749,-0.92502 -0.44998,-1.412535 l -5.57502,-24.37499 c -1.82499,-7.98748 3.12501,-15.98751 11.05,-17.83751 1.10001,-0.25012 2.21251,-0.38748 3.32501,-0.38748 6.89999,0 12.79999,4.7375 14.34999,11.53751 l 3.43749,15.04998 0.90001,3.92501 2.5625,-3.1 2.42501,-2.9375 c 1.03751,-1.26252 2.56249,-1.97499 4.18749,-1.97499 1.27499,0 2.50002,0.44998 3.48749,1.27498 2.32501,1.94998 2.63752,5.42501 0.71252,7.76251 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5684"
|
||||
d="m -708.23518,188.94993 h -14.17124 l 13.34127,-13.34124 c 3.01372,-3.01376 2.18871,-8.09377 -1.62252,-10.00002 a 6.2446251,6.2446251 0 0 0 -2.79124,-0.65875 c -1.32752,0 -2.64502,0.42252 -3.74752,1.24875 l -30.33499,22.75126 h -22.67375 c -0.55252,0 -1,0.44749 -1,1.00001 v 2 c 0,0.55249 0.44748,0.99998 1,0.99998 h 3 v 4.00001 c 0,10.17749 6.345,18.85376 15.28624,22.34375 -1.595,2.0975 -2.71249,4.57875 -3.11501,7.30499 -0.18125,1.22877 0.7475,2.35125 1.99002,2.35125 h 27.67748 c 1.24251,0 2.17125,-1.12124 1.99,-2.35125 -0.40125,-2.72624 -1.51872,-5.20874 -3.11497,-7.30499 8.94124,-3.48999 15.28623,-12.16626 15.28623,-22.34375 v -4.00001 h 3 c 0.55252,0 1,-0.44749 1,-0.99998 v -2 c 0,-0.55252 -0.44748,-1.00001 -1,-1.00001 z m -6.59252,-19.55126 c 2.19753,-1.64749 4.90129,1.41375 2.93377,3.38127 l -16.16874,16.16999 h -12.83251 z m -0.40748,27.55126 c 0,8.28875 -5.00124,15.59624 -12.73999,18.6175 l -4.93876,1.92749 3.20999,4.21999 c 0.76002,1.00002 1.35877,2.09377 1.77376,3.23502 h -22.60875 c 0.415,-1.14125 1.01251,-2.235 1.77375,-3.23502 l 3.21001,-4.21999 -4.93877,-1.92749 c -7.73998,-3.02126 -12.74125,-10.32875 -12.74125,-18.6175 v -4.00001 h 48.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5695"
|
||||
d="m -204.53606,52.950005 h -39.99999 a 8.0000001,8.0000001 0 0 0 -8.00003,7.99999 v 52.000015 a 4.0000002,4.0000002 0 0 0 4.00001,3.99999 h 48.00002 a 4.0000002,4.0000002 0 0 0 3.99998,-3.99999 V 60.949995 a 8.0000001,8.0000001 0 0 0 -7.99999,-7.99999 z m 4.00001,60.000005 h -48.00002 V 72.950005 h 48.00002 z m 0,-43.999995 h -48.00002 v -8.00002 a 4.0000002,4.0000002 0 0 1 4.00002,-3.99998 h 39.99999 a 4.0000002,4.0000002 0 0 1 4.00001,3.99998 z m -6.00001,-8.00002 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2.00001,2 2.0000001,2.0000001 0 0 0 -2.00001,-2 z m -20,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -7.99999,0 a 2.0000001,2.0000001 0 1 0 1.99998,2 2.0000001,2.0000001 0 0 0 -1.99998,-2 z m 0,48.000025 h 35.99999 a 2.0000001,2.0000001 0 0 0 2,-2.00001 V 78.950015 a 2.0000001,2.0000001 0 0 0 -2,-2 h -35.99999 a 2.0000001,2.0000001 0 0 0 -2,2 v 27.999995 a 2.0000001,2.0000001 0 0 0 2,2.00001 z m 1.99998,-28.000005 h 31.99999 v 23.999995 h -31.99999 z m 26.00001,3.99999 h -20 a 2.0000053,2.0000053 0 0 0 0,4.00001 h 20 a 2.0000053,2.0000053 0 0 0 0,-4.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.125" />
|
||||
<path
|
||||
id="path5706"
|
||||
d="m -429.02571,80.321695 c -6.31838,-16.42668 -22.26007,-27.37169 -40.08167,-27.37169 -17.82164,0 -33.76502,10.94501 -40.07832,27.37169 -7.08834,0.27334 -7.92168,6.23499 -7.92168,7.65166 a 7.6816658,7.6816658 0 0 0 7.70333,7.64334 c 0.45338,0 0.79503,-0.0999 1.21997,-0.12669 l 5.41002,16.220015 a 7.6666657,7.6666657 0 0 0 7.27171,5.23998 h 52.79001 a 7.6666657,7.6666657 0 0 0 7.27163,-5.24163 l 5.40494,-16.218365 c 0.42339,0.0284 0.76675,0.12669 1.22005,0.12669 a 7.6816658,7.6816658 0 0 0 7.70828,-7.64334 c 0,-1.46168 -0.8583,-7.35667 -7.91827,-7.65166 z m -11.47331,29.696655 a 2.3333332,2.3333332 0 0 1 -2.21332,1.59832 h -52.79173 a 2.3333332,2.3333332 0 0 1 -2.21333,-1.59664 l -5.20999,-15.631675 a 21.178333,21.178333 0 0 0 4.86665,-2.78166 c 1.51505,-1.12332 2.10001,-1.57168 4.23505,0.0108 2.01999,1.5 5.41165,4.00001 11.32333,4.00001 5.91169,0 9.3066,-2.51001 11.33333,-4.01334 1.51164,-1.11834 2.08496,-1.56667 4.20167,0.008 2.02499,1.5 5.41002,3.99999 11.32163,3.99999 5.91168,0 9.3017,-2.51 11.32334,-4.01 1.81335,-1.34498 2.35331,-1.36667 4.18669,0 a 21.151665,21.151665 0 0 0 4.84659,2.78167 l -5.20991,15.633345 z m 11.68666,-19.735015 c -4.15673,0 -6.36499,-1.63998 -8.15168,-2.96832 -4.95171,-3.66666 -8.34337,-1.615 -10.53672,0.0108 -1.77326,1.31832 -3.98332,2.95833 -8.14497,2.95833 -4.16165,0 -6.36993,-1.64001 -8.15669,-2.9617 -5.30325,-3.94664 -8.91661,-1.2083 -10.54996,0 -1.77664,1.32169 -3.98505,2.9617 -8.15168,2.9617 -4.16658,0 -6.37502,-1.64001 -8.16659,-2.9617 -1.13005,-0.83331 -4.95172,-4.16665 -10.57837,0 -1.78005,1.31668 -4.00001,2.95669 -8.16665,2.95669 a 2.3116664,2.3116664 0 1 1 0,-4.62333 c 0.89828,0 1.84665,0.0801 4.45831,-1.36166 8.88831,-25.65333 33.13662,-26.01 35.84998,-26.01 2.66671,0 26.9534,0.33333 35.83336,25.99997 2.62493,1.48501 3.42832,1.38501 4.46332,1.38501 a 2.3116666,2.3116666 0 1 1 0,4.62333 z m -55.10166,-23.71832 a 2.678333,2.678333 0 0 0 -3.57835,1.19333 l -2.66672,5.33334 a 2.6666664,2.6666664 0 0 0 1.19339,3.57832 c 1.59001,0.78336 3.05998,-0.16676 3.57827,-1.19331 l 2.66671,-5.33333 a 2.6666664,2.6666664 0 0 0 -1.1933,-3.57835 z m 33.18997,1.19168 a 2.6672562,2.6672562 0 1 0 -4.77166,2.38499 l 2.66665,5.33333 c 0.51665,1.02834 1.98834,1.97668 3.57835,1.19334 a 2.6666664,2.6666664 0 0 0 1.1933,-3.57835 z m -18.38333,-1.47333 a 2.6666664,2.6666664 0 0 0 -2.66664,2.66667 v 5.3333 a 2.666681,2.666681 0 1 0 5.33335,0 v -5.3333 a 2.6666664,2.6666664 0 0 0 -2.66671,-2.66667 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16666664" />
|
||||
<path
|
||||
id="path5717"
|
||||
d="m -79.042211,183.93774 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 1.9999 a 0.99249264,0.99249264 0 0 0 1.0001,-1.02498 c -0.2627,-5.26247 -2.4125,-9.16245 -5.1999,-11.93742 -2.3001,-2.33747 -2.6376,-4.77497 -2.7376,-6.11246 a 0.9837427,0.9837427 0 0 0 -1,-0.88749 l -2,0.012 a 0.99999253,0.99999253 0 0 0 -0.9874,1.08748 13.182401,13.182401 0 0 0 3.9,8.71244 c 2.1624,2.14999 3.7999,5.08745 4.0249,9.17491 z m -13.9374,0 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 2 a 0.99249264,0.99249264 0 0 0 1,-1.02498 c -0.2625,-5.26247 -2.4125,-9.16245 -5.2,-11.93742 -2.28754,-2.33747 -2.62494,-4.77497 -2.72494,-6.11246 a 0.98749264,0.98749264 0 0 0 -1.0125,-0.88749 l -2,0.012 a 0.99999253,0.99999253 0 0 0 -0.987499,1.08748 c 0.125,1.86248 0.65,5.44995 3.899999,8.71244 2.16124,2.14999 3.79874,5.08745 4.02494,9.17491 z m 33.9998,5.01246 h -55.999639 a 3.9999701,3.9999701 0 0 0 -4,3.99996 c 0,11.83742 6.4449,22.14485 15.9999,27.68106 v 4.31873 a 3.9999701,3.9999701 0 0 0 3.999899,3.99997 h 23.99984 a 3.9999701,3.9999701 0 0 0 4.0001,-3.99997 v -4.31873 c 9.5548,-5.53621 15.9998,-15.84364 15.9998,-27.68106 a 3.9999701,3.9999701 0 0 0 -3.9999,-3.99996 z m -16,29.3748 v 6.62495 h -23.99984 V 218.325 c -16.542299,-9.58369 -15.999799,-23.22235 -15.999799,-25.37484 h 55.999639 c 0,2.1825 0.4212,15.86113 -16,25.37484 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499907" />
|
||||
<path
|
||||
id="path5728"
|
||||
d="m -984.22013,52.950005 c -17.67247,0 -32.00007,14.32752 -32.00007,32.00002 0,17.672495 14.3276,31.999975 32.00007,31.999975 17.67246,0 31.99999,-14.32748 31.99999,-31.999975 0,-17.6725 -14.32753,-32.00002 -31.99999,-32.00002 z m 0,59.999995 c -15.43875,0 -27.99997,-12.56124 -27.99997,-27.999975 0,-15.43877 12.56122,-28.00002 27.99997,-28.00002 15.43872,0 27.99998,12.56125 27.99998,28.00002 0,15.438735 -12.56126,27.999975 -27.99998,27.999975 z m 19.79873,-27.999975 3.53499,-3.53503 c 0.39001,-0.39 0.39001,-1.02374 0,-1.41373 l -1.41373,-1.41376 c -0.39,-0.38999 -1.02378,-0.38999 -1.41378,0 l -3.53499,3.535 -5.65748,-5.65624 2.82874,-2.82875 2.12126,2.12124 c 0.39,0.38999 1.02373,0.38999 1.41373,0 l 1.41378,-1.41373 c 0.39,-0.39002 0.39,-1.02376 0,-1.41376 l -2.12126,-2.12127 0.70748,-0.70748 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.41373,-1.41376 c -0.39,-0.38999 -1.02373,-0.38999 -1.41373,0 l -0.70753,0.70752 -2.12126,-2.12124 c -0.39,-0.39 -1.02373,-0.39 -1.41373,0 l -1.41374,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.12122,2.12124 -2.82874,2.82875 -5.65748,-5.65623 3.53622,-3.535 c 0.39,-0.39 0.39,-1.02373 0,-1.41376 l -1.41496,-1.41875 c -0.39,-0.39 -1.02378,-0.39 -1.41378,0 l -3.53623,3.53626 -3.53626,-3.53626 c -0.39,-0.39 -1.02373,-0.39 -1.41373,0 l -1.41379,1.41376 c -0.38999,0.38999 -0.38999,1.02373 0,1.41376 l 3.53627,3.535 -5.65625,5.65623 -2.82874,-2.82875 2.12121,-2.12124 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.41373,-1.41375 c -0.39,-0.39 -1.02373,-0.39 -1.41373,0 l -2.12126,2.12127 -0.70753,-0.70752 c -0.39,-0.38999 -1.02373,-0.38999 -1.41373,0 l -1.4137,1.41376 c -0.39,0.39 -0.39,1.02374 0,1.41376 l 0.7074,0.70748 -2.1212,2.12124 c -0.39,0.39003 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.12126,-2.12127 2.82874,2.82878 -5.6563,5.65624 -3.5362,-3.535 c -0.39,-0.38999 -1.0238,-0.38999 -1.4138,0 l -1.4175,1.41749 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 3.5363,3.53626 -3.5363,3.53623 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 1.4138,1.41376 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 3.5363,-3.535 5.65627,5.65623 -2.82879,2.82875 -2.12118,-2.12123 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4138,1.41372 c -0.3899,0.39 -0.3899,1.02377 0,1.41376 l 2.1213,2.12124 -0.7075,0.70751 c -0.39,0.390005 -0.39,1.023775 0,1.413765 l 1.4138,1.41373 c 0.39,0.39003 1.0237,0.39003 1.4137,0 l 0.70748,-0.70748 2.12126,2.12124 c 0.39,0.38999 1.02378,0.38999 1.41378,0 l 1.41373,-1.41376 c 0.39,-0.39 0.39,-1.02373 0,-1.41373 l -2.12126,-2.121275 2.82874,-2.82872 5.65753,5.657505 -3.53627,3.53623 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.41378,1.41373 c 0.39,0.39003 1.02373,0.39003 1.41373,0 l 3.53877,-3.535 3.53623,3.53626 c 0.39,0.39 1.02378,0.39 1.41378,0 l 1.41373,-1.41376 c 0.39,-0.38999 0.39,-1.02373 0,-1.41372 l -3.53627,-3.53626 5.65753,-5.657515 2.82874,2.82876 -2.12126,2.121235 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.41373,1.41376 c 0.39,0.39 1.02378,0.39 1.41378,0 l 2.12126,-2.12124 0.70748,0.70748 c 0.39,0.39 1.02373,0.39 1.41373,0 l 1.41378,-1.41376 c 0.39001,-0.38999 0.39001,-1.02373 0,-1.413725 l -0.70752,-0.70751 2.12126,-2.12124 c 0.39,-0.39 0.39,-1.02377 0,-1.41376 l -1.41374,-1.41376 c -0.39,-0.39 -1.02378,-0.39 -1.41378,0 l -2.12121,2.12127 -2.82879,-2.82875 5.65626,-5.65627 3.53626,3.535 c 0.39001,0.38999 1.02374,0.38999 1.41374,0 l 1.41378,-1.41373 c 0.38999,-0.39003 0.38999,-1.02377 0,-1.41376 z m -19.79873,-14.14252 5.65621,5.65627 -5.65621,5.6575 -5.65625,-5.65627 z m -14.14251,14.14252 5.65625,-5.6575 5.65748,5.6575 -5.65748,5.6575 z m 14.14251,14.14249 -5.65752,-5.65751 5.65752,-5.6575 5.65749,5.6575 z m 8.485,-8.48626 -5.65625,-5.65623 5.65748,-5.65627 5.65625,5.65627 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5739"
|
||||
d="m -456.09491,223.73742 1.77501,-20.60001 c -5.26252,-4.13751 -8.8,-9.62502 -8.8,-16.18747 0.0126,-11.78751 11.02499,-22.00002 19.01247,-22.00002 2.76251,0 5,2.16252 5,4.81249 v 54.37498 c 0,2.65001 -2.23749,4.81253 -5,4.81253 h -6.99998 c -2.84999,0 -5.225,-2.33754 -4.9875,-5.2125 z m -3.01251,-36.78748 c 0,6.37497 4.02501,10.68746 8.975,14.31247 l -1.97499,22.825 c -0.0361,0.46249 0.42497,0.8625 1,0.8625 h 6.99998 c 0.53752,0 1,-0.37512 1,-0.81252 v -54.37498 c 0,-0.43748 -0.46248,-0.81248 -1,-0.81248 -5.57499,0 -14.99999,8.22497 -14.99999,18.00001 z m -9.9125,-17.77502 c -0.41252,-2.43748 -2.64998,-4.225 -5.76248,-4.225 -1.4875,0 -3.01251,0.42502 -4.16253,1.40001 -1.04997,-0.8875 -2.49999,-1.40001 -4.16248,-1.40001 -1.66252,0 -3.11251,0.51251 -4.16252,1.40001 -1.14997,-0.97499 -2.67499,-1.40001 -4.16248,-1.40001 -3.15001,0 -5.35,1.81252 -5.76252,4.225 -0.22515,1.17498 -1.91247,10.57501 -1.91247,14.5125 0,6.36247 3.33749,11.45002 8.87498,13.83749 l -1.42499,26.35001 c -0.14999,2.74997 2.03748,5.075 4.79999,5.075 h 7.49999 c 2.75004,0 4.95002,-2.31253 4.80002,-5.075 l -1.42502,-26.35001 c 5.52502,-2.38747 8.87503,-7.47502 8.87503,-13.83749 0,-3.93749 -1.68754,-13.33752 -1.91252,-14.5125 z m -11.05001,25.775 1.52502,29.13749 c 0.0242,0.46249 -0.33734,0.8625 -0.81252,0.8625 h -7.49999 c -0.46249,0 -0.83749,-0.38759 -0.81249,-0.8625 l 1.52499,-29.13749 c -5.29999,-1.1 -8.96247,-5.37502 -8.96247,-11.2625 0,-3.71249 1.84999,-13.82502 1.84999,-13.82502 0.19982,-1.23749 3.53748,-1.21249 3.68748,0.0241 v 15.31248 c 0.11261,1.43748 3.52503,1.46249 3.6875,0.0241 l 0.92502,-15.36249 c 0.19982,-1.21249 3.4875,-1.21249 3.68748,0 l 0.92502,15.36249 c 0.16244,1.42502 3.575,1.40001 3.6875,-0.0241 v -15.30001 c 0.14999,-1.2375 3.48749,-1.26247 3.68748,-0.0241 0,0 1.84999,10.11252 1.84999,13.82502 0.0126,5.85 -3.625,10.14999 -8.95,11.24998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499996" />
|
||||
<path
|
||||
id="path5750"
|
||||
d="m -218.53608,180.94994 c 3.31375,0 6.00002,-2.68627 6.00002,-6.00002 0,-3.31374 -2.68627,-6.00001 -6.00002,-6.00001 -3.31375,0 -6.00001,2.68627 -6.00001,6.00001 0,3.31375 2.68626,6.00002 6.00001,6.00002 z m 0,-8.00001 c 1.10252,0 2,0.89747 2,1.99999 0,1.10252 -0.89748,1.99999 -2,1.99999 -1.10251,0 -1.99999,-0.89747 -1.99999,-1.99999 0,-1.10252 0.89748,-1.99999 1.99999,-1.99999 z m 22,14.99998 v -1.99999 c 0,-0.5525 -0.4475,-0.99999 -0.99999,-0.99999 h -54.00001 c -0.55249,0 -0.99999,0.44749 -0.99999,0.99999 v 1.99999 c 0,0.5525 0.4475,1 0.99999,1 h 5.84125 c -4.24374,5.72252 -6.84124,12.70252 -6.84124,19.20001 0,4.885 1.47749,8.83126 3.99999,11.94126 v 6.85875 c 0,1.105 0.89503,1.99999 2.00003,1.99999 1.105,0 1.99999,-0.89499 1.99999,-1.99999 v -3.16751 c 5.08248,3.50373 12.15998,5.1675 19.99997,5.1675 7.83875,0 14.91752,-1.66377 20,-5.16624 v 3.16625 c 0,1.105 0.89503,1.99999 2.00004,1.99999 1.105,0 1.99998,-0.89499 1.99998,-1.99999 v -6.85875 c 2.5225,-3.11 3.99999,-7.05626 3.99999,-11.94126 0,-6.49749 -2.5975,-13.47749 -6.84124,-19.20001 h 5.84125 c 0.55249,0 0.99999,-0.4475 0.99999,-1 z m -3.99999,20.20001 c 0,15.1625 -16.78374,16.80002 -24.00002,16.80002 -7.21622,0 -23.99999,-1.63752 -23.99999,-16.80002 0,-6.53124 3.01753,-13.75249 7.95503,-19.20001 h 32.08873 c 4.93872,5.44752 7.95625,12.66877 7.95625,19.20001 z m -32,-35.19999 c 2.20874,0 3.99999,-1.79124 3.99999,-4.00002 0,-2.20875 -1.79125,-3.99999 -3.99999,-3.99999 -2.20874,0 -3.99998,1.79124 -3.99998,3.99999 0,2.20878 1.79124,4.00002 3.99998,4.00002 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500001" />
|
||||
<path
|
||||
id="path5761"
|
||||
d="m -576.61441,73.757113 0.83999,-2.5214 v 0 l 6.09571,-18.28571 h -57.14279 a 11.428558,11.428558 0 0 0 -11.42857,11.42856 v 14.85712 a 1.1428558,1.1428558 0 0 0 1.14286,1.14287 h 2.28572 a 1.1428558,1.1428558 0 0 0 1.14286,-1.14287 v -14.85712 a 6.8571343,6.8571343 0 0 1 6.85713,-6.85711 h 3.80999 l 4.57141,13.71426 v 0 l 0.8643,2.59426 c -7.04426,5.67715 -11.5314,14.21856 -11.5314,23.77999 0,7.352827 2.66001,12.109977 7.0914,16.815687 a 8.1685613,8.1685613 0 0 0 5.93287,2.52429 h 37.9528 a 8.1542755,8.1542755 0 0 0 5.92141,-2.51429 c 4.42857,-4.70714 7.09858,-9.46286 7.10142,-16.817117 0,-9.47286 -4.37571,-18.12141 -11.50711,-23.86142 z m -41.57852,-16.23566 h 42.17137 l -4.57141,13.71426 h -33.02855 z m 5.44999,18.28568 h 31.38569 c 2.99999,2.41714 7.81139,6.01142 10.3571,13.71426 h -52.19421 c 2.58713,-7.71427 7.54572,-11.37283 10.45142,-13.71426 z m 37.2071,35.492797 a 3.5599955,3.5599955 0 0 1 -2.59429,1.07858 h -37.9528 a 3.5714241,3.5714241 0 0 1 -2.60429,-1.08858 c -4.26286,-4.52428 -5.84856,-8.23283 -5.84856,-13.679967 a 25.471396,25.471396 0 0 1 0.27125,-3.51716 h 54.31852 a 25.781397,25.781397 0 0 1 0.26713,3.5243 c 0,5.445697 -1.58857,9.154267 -5.85712,13.682827 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.14285697" />
|
||||
<path
|
||||
id="path5772"
|
||||
d="m -727.23533,93.949125 c -1.65623,0 -2.99995,1.34246 -2.99995,2.99995 0,1.65621 1.34372,2.99992 2.99995,2.99992 1.65621,0 2.99993,-1.34371 2.99993,-2.99992 0,-1.65749 -1.34372,-2.99995 -2.99993,-2.99995 z m -20.9996,-16.99966 c 0,-1.65749 -1.34373,-2.99995 -2.99996,-2.99995 -1.6562,0 -2.99993,1.34246 -2.99993,2.99995 0,1.65621 1.34373,2.99992 2.99993,2.99992 1.65623,0 2.99996,-1.34371 2.99996,-2.99992 z m 0.99998,16.99966 c -1.65622,0 -2.99993,1.34246 -2.99993,2.99995 0,1.65621 1.34371,2.99992 2.99993,2.99992 1.6562,0 2.99996,-1.34371 2.99996,-2.99992 0,-1.65749 -1.34376,-2.99995 -2.99996,-2.99995 z m 11.99976,-11.99978 c -1.6562,0 -2.99995,1.34246 -2.99995,2.99995 0,1.65621 1.34375,2.99995 2.99995,2.99995 1.65621,0 2.99995,-1.34374 2.99995,-2.99995 0,-1.65749 -1.34374,-2.99995 -2.99995,-2.99995 z m 27.81447,2.97744 c -8.7461,-0.10616 -15.80845,-7.21111 -15.80845,-15.98218 -8.77107,0 -15.8747,-7.0611 -15.98217,-15.80595 -0.82749,-0.1262 -1.66123,-0.18865 -2.49122,-0.18865 -2.58494,0 -5.1474,0.60625 -7.4736,1.79122 l -8.64108,4.40243 a 16.527304,16.527304 0 0 0 -7.22362,7.22609 l -4.38743,8.60983 a 16.580302,16.580302 0 0 0 -1.60244,10.11857 l 1.50995,9.53483 a 16.569053,16.569053 0 0 0 4.64493,9.119795 l 6.8461,6.84487 a 16.50418,16.50418 0 0 0 9.08858,4.63242 l 9.58857,1.51748 c 0.85748,0.13639 1.71997,0.20246 2.57995,0.20246 2.58994,0 5.15616,-0.61001 7.4861,-1.79748 l 8.64108,-4.40241 a 16.527304,16.527304 0 0 0 7.22359,-7.22609 l 4.38744,-8.609845 c 1.56998,-3.0787 2.12621,-6.57112 1.61372,-9.98733 z m -5.17739,8.16985 -4.38745,8.611085 c -1.20994,2.37496 -3.10367,4.26866 -5.4761,5.47739 l -8.6411,4.40244 c -1.74747,0.88994 -3.70869,1.36117 -5.66989,1.36117 -0.65124,0 -1.30874,-0.0512 -1.95372,-0.1538 l -9.58732,-1.51745 c -2.62494,-0.41624 -5.00615,-1.62997 -6.88611,-3.50993 l -6.84611,-6.84487 c -1.88746,-1.886215 -3.10495,-4.278665 -3.52244,-6.916135 l -1.50996,-9.53354 c -0.41875,-2.63997 0.004,-5.29489 1.21497,-7.6761 l 4.38742,-8.60983 c 1.20997,-2.37496 3.10368,-4.26866 5.47614,-5.47739 l 8.63983,-4.40368 c 1.41622,-0.72123 2.97495,-1.16624 4.56366,-1.30747 1.64372,7.89361 7.97985,14.11846 15.90593,15.60721 1.48871,7.92733 7.7136,14.26346 15.60846,15.90592 -0.13739,1.59123 -0.58,3.14243 -1.31621,4.58491 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499758" />
|
||||
<path
|
||||
id="path5794"
|
||||
d="m -79.787761,52.950005 c -16.55795,0 -31.006649,10.95333 -39.052249,20.33331 l -16.0613,-14.27832 c -2.2371,-1.84166 -5.5619,0.11165 -4.999,2.92669 l 4.4492,23.01832 -4.4508,23.020035 c -0.5613,2.81333 2.7602,4.76663 4.9922,2.93167 l 16.0615,-14.275035 c 8.0521,9.370005 22.509099,20.323325 39.060449,20.323325 25.291,0 45.7932,-25.600005 45.7932,-31.999995 0,-6.39999 -20.5022,-32 -45.7932,-32 z m 0,58.666695 c -14.1406,0 -27.375449,-9.54502 -35.045149,-18.478335 l -3.3695,-3.92501 c -5.1646,4.24667 -2.0268,1.47999 -15.2467,13.601665 3.6029,-18.981675 3.1079,-16.395005 3.4059,-17.865015 -0.298,-1.46835 0.1985,1.12166 -3.4043,-17.86501 13.2464,12.14167 10.1004,9.36833 15.2467,13.60336 l 3.3695,-3.92503 c 7.6699,-8.93333 20.896449,-18.48001 35.043549,-18.48001 21.2261,0 39.0905,21.08168 40.46,26.66669 -1.3695,5.58501 -19.2339,26.666695 -40.46,26.666695 z m -3.6063,-41.725025 -1.8727,-1.885 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -14.021449,14.11 a 1.3246526,1.333334 0 0 0 0,1.88499 l 1.872799,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 14.02305,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 18.5451,2.66667 -1.8727,-1.88499 a 1.3246526,1.333334 0 0 0 -1.8743,0 l -24.6188,24.77666 a 1.3246526,1.333334 0 0 0 0,1.885 l 1.8729,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 24.6202,-24.77001 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 6.0753,11.44835 a 1.3246526,1.333334 0 0 0 -1.8745,0 l -14.0214,14.11 a 1.3246526,1.333334 0 0 0 0,1.884995 l 1.8726,1.88499 a 1.3246526,1.333334 0 0 0 1.8729,0 l 14.0229,-14.103335 a 1.3246526,1.333334 0 0 0 0,-1.88666 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16612326" />
|
||||
<path
|
||||
id="path5805"
|
||||
d="m -341.10743,94.950015 c -1.09999,0 -2.00002,0.9 -2.00002,1.99998 0,1.1 0.90003,1.99999 2.00002,1.99999 1.09996,0 2,-0.89999 2,-1.99999 0,-1.09998 -0.90004,-1.99998 -2,-1.99998 z m -4.00005,-31.00001 c -1.09996,0 -1.99992,0.9 -1.99992,2.00002 0,1.1 0.89996,1.99999 1.99992,1.99999 1.1001,0 2.00003,-0.89999 2.00003,-1.99999 0,-1.10002 -0.89993,-2.00002 -2.00003,-2.00002 z m 4.00005,23.00001 c -1.09999,0 -2.00002,0.9 -2.00002,1.99999 0,1.1 0.90003,1.99998 2.00002,1.99998 1.09996,0 2,-0.89998 2,-1.99998 0,-1.09999 -0.90004,-1.99999 -2,-1.99999 z m 0,-7.99999 c -1.09999,0 -2.00002,0.9 -2.00002,1.99998 0,1.1 0.90003,2.00003 2.00002,2.00003 1.09996,0 2,-0.90003 2,-2.00003 0,-1.09998 -0.90004,-1.99998 -2,-1.99998 z m 4.00003,-15.00002 c -1.10007,0 -2.00003,0.9 -2.00003,2.00002 0,1.1 0.89996,1.99999 2.00003,1.99999 1.09998,0 2.00001,-0.89999 2.00001,-1.99999 0,-1.10002 -0.90003,-2.00002 -2.00001,-2.00002 z m 23.99995,19.00003 c 0,-5.51253 -4.4875,-10.00002 -9.99996,-10.00002 h -4.95 c 1.28743,-2.88749 1.57497,-6.17501 0.72496,-9.44999 -1.2375,-4.84999 -5.17502,-8.79998 -9.99998,-10.06251 -1.24997,-0.32487 -2.51253,-0.48751 -3.775,-0.48751 -3.81248,0 -7.38754,1.48752 -10.07497,4.17501 -2.68753,2.6875 -4.17501,6.26249 -4.17501,10.07501 0,1.99999 0.42495,3.96249 1.225,5.74999 h -4.97506 c -5.51247,0 -9.99996,4.48749 -9.99996,10.00002 0,5.51246 4.48749,9.99998 9.99996,9.99998 h 3.48761 l -7.25004,7.700005 c -3.47501,4.27498 -2.82504,10.5875 1.44992,14.06247 1.78751,1.4375 4.02512,2.23751 6.31256,2.23751 3.02496,0 5.86249,-1.35001 7.76254,-3.7 l 6.23745,-6.44997 6.23753,6.44997 c 1.89995,2.34999 4.73748,3.7 7.76244,3.7 2.28757,0 4.52496,-0.80001 6.29998,-2.23751 4.27507,-3.47497 4.92501,-9.78749 1.45003,-14.06247 l -7.24993,-7.700005 h 3.49997 c 5.51246,0 9.99996,-4.48752 9.99996,-9.99998 z m -17.925,10.88749 8.57499,9.324985 c 2.0875,2.57501 1.70001,6.35 -0.87498,8.43751 -1.11256,0.89998 -2.45,1.34997 -3.77502,1.34997 -1.74993,0 -3.47497,-0.7625 -4.66245,-2.21247 l -6.23753,-6.45 c -0.79999,-0.98751 -1.95,-1.47501 -3.09999,-1.47501 -1.15001,0 -2.29993,0.4875 -3.10001,1.47501 l -6.23753,6.45 c -1.18744,1.46248 -2.91241,2.21247 -4.66245,2.21247 -1.32499,0 -2.66247,-0.43748 -3.77503,-1.34997 -2.57498,-2.08751 -2.96248,-5.8625 -0.87497,-8.43751 l 8.57502,-9.324985 c 1.58744,-1.9625 0.1999,-4.88752 -2.325,-4.88752 h -5.60007 c -3.31252,0 -5.99995,-2.68749 -5.99995,-5.99997 0,-3.31251 2.68743,-6.00001 5.99995,-6.00001 h 10.20001 c 1.16251,0 1.77499,-1.4375 0.91253,-2.21252 -2.06255,-1.86248 -3.36247,-4.53748 -3.36247,-7.53748 0,-5.6625 4.58747,-10.25001 10.24997,-10.25001 0.90004,0 1.82503,0.11255 2.76252,0.3625 3.44995,0.9 6.26249,3.725 7.13746,7.18748 1.03747,4.06251 -0.33744,7.83754 -3.00001,10.23751 -0.8625,0.78752 -0.27481,2.22502 0.90004,2.22502 h 10.20001 c 3.31241,0 5.99994,2.6875 5.99994,5.99997 0,3.31251 -2.68753,6 -5.99994,6 h -5.58758 c -2.52492,-0.0134 -3.92494,2.91253 -2.33746,4.87503 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499995" />
|
||||
<path
|
||||
id="path5627-3"
|
||||
d="m -755.23517,400.94978 c -2.21875,0 -4.00001,-1.78126 -4.00001,-3.99999 0,-3.87502 4.00001,-2.87501 4.00001,-8.00002 1.49999,0 4,3.68753 4,7.00001 0,3.3125 -1.78126,5 -4,5 z m 15.99999,0 c -2.21874,0 -3.99999,-1.78126 -3.99999,-3.99999 0,-3.87502 3.99999,-2.87501 3.99999,-8.00002 1.5,0 4.00001,3.68753 4.00001,7.00001 0,3.3125 -1.78125,5 -4.00001,5 z m 16,0 c -2.21875,0 -4,-1.78126 -4,-3.99999 0,-3.87502 4,-2.87501 4,-8.00002 1.5,0 4,3.68753 4,7.00001 0,3.3125 -1.78124,5 -4,5 z m 6,20.00002 h -3.99999 v -18.00002 h -4.00001 v 18.00002 h -11.99999 v -18.00002 h -4 v 18.00002 h -12 v -18.00002 h -4 v 18.00002 h -4 c -3.3125,0 -6,2.68747 -6,5.99998 v 26 h 55.99999 v -26 c 0,-3.31251 -2.6875,-5.99998 -6,-5.99998 z m 2.00001,27.99999 h -48.00001 v -9.00537 c 2.02775,-1.18487 2.991,-2.99463 5.34375,-2.99463 3.49388,0 3.90662,3.99999 9.34376,3.99999 5.35537,0 5.90212,-3.99999 9.31249,-3.99999 3.5185,0 3.90013,3.99999 9.34375,3.99999 5.41964,0 5.84588,-3.99999 9.34375,-3.99999 2.31101,0 3.28062,1.80938 5.31251,2.99438 z m 0,-14.04676 c -1.20324,-0.98425 -2.65213,-1.95323 -5.31251,-1.95323 -5.42874,0 -5.85312,3.99999 -9.34375,3.99999 -3.46186,0 -3.93175,-3.99999 -9.34375,-3.99999 -5.35525,0 -5.90224,3.99999 -9.31249,3.99999 -3.51851,0 -3.90025,-3.99999 -9.34376,-3.99999 -2.68286,0 -4.13762,0.97176 -5.34375,1.95723 v -7.95725 c 0,-1.10273 0.89725,-1.99999 2.00001,-1.99999 h 43.99999 c 1.10276,0 2.00001,0.89726 2.00001,1.99999 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5640-5"
|
||||
d="m -597.67869,438.94978 c -1.65751,0 -2.99998,1.34249 -2.99998,3 0,1.65624 1.34247,3 2.99998,3 1.65752,0 2.99999,-1.34376 2.99999,-3 0,-1.65751 -1.34247,-3 -2.99999,-3 z m 16.78123,-6.99624 11.21876,-43.00377 h -58 c -3.30872,0 -5.99997,2.69127 -5.99997,6.00005 v 19.99996 c 0,3.30877 2.69125,6 5.99997,6 h 12.78253 l 0.94126,10.82001 c -4.50875,1.7275 -7.72376,6.06374 -7.72376,11.17999 v 6 c 0,2.20873 1.79125,4 3.99999,4 h 39.99999 c 2.20874,0 3.99999,-1.79127 3.99999,-4 v -6 c 0,-4.92499 -2.97374,-9.14752 -7.21876,-10.99624 z m -46.78124,-15.00376 c -1.10123,0 -1.99997,-0.89625 -1.99997,-2 v -19.99996 c 0,-1.10376 0.89874,-2.00001 1.99997,-2.00001 h 10.34751 l 2.08751,23.99997 z m 52.82249,-23.99997 -2.08748,7.99997 h -19.73498 c -0.55253,0 -1.00002,0.44751 -1.00002,1.00004 v 1.99996 c 0,0.55253 0.44749,1 1.00002,1 h 18.69247 l -2.0875,8 h -16.60497 c -0.55253,0 -1.00002,0.44751 -1.00002,1 v 2 c 0,0.55253 0.44749,1 1.00002,1 h 15.56122 l -3.65248,14 h -25.24125 l -3.30501,-37.99997 z m -2.82248,55.99997 h -39.99999 v -6 c 0,-4.41125 3.58875,-8 7.99999,-8 h 24 c 4.41125,0 8,3.58875 8,8 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249999" />
|
||||
<path
|
||||
id="path5651-5"
|
||||
d="m -327.33062,408.94977 h -17.53412 c -0.68884,0 -1.25243,-0.67497 -1.25243,-1.49998 v -0.99999 c 0,-0.82501 0.56359,-1.50002 1.25243,-1.50002 h 17.53412 c 0.68887,0 1.25246,0.67501 1.25246,1.50002 v 0.99999 c 0,0.82501 -0.56359,1.49998 -1.25246,1.49998 z m 1.25246,6.5 v -0.99999 c 0,-0.82501 -0.56359,-1.49998 -1.25246,-1.49998 h -17.53412 c -0.68884,0 -1.25243,0.67497 -1.25243,1.49998 v 0.99999 c 0,0.82501 0.56359,1.50002 1.25243,1.50002 h 17.53412 c 0.68887,0 1.25246,-0.67501 1.25246,-1.50002 z m 6.75272,33.49998 h 0.34444 c 0.68884,0 1.25243,0.67501 1.25243,1.50002 v 0.99999 c 0,0.82501 -0.56359,1.50002 -1.25243,1.50002 h -37.1557 c -4.6132,0 -8.34962,-4.47501 -8.34962,-10 v -43.99997 c 0,-5.52503 3.73642,-10.00004 8.34962,-10.00004 h 35.90324 c 1.38811,0 2.50489,1.33751 2.50489,3.00004 v 45.99996 c 0,1.25 -0.64707,2.32499 -1.55514,2.775 -0.37571,2.01252 -0.45919,5.7 -0.0416,8.22498 z m -31.80151,-11.99997 h 30.05854 V 392.9498 h -30.05854 z m -10.01951,1.99998 c 1.39854,-1.24997 3.13111,-1.99998 5.00976,-1.99998 h 1.66991 V 392.9498 h -1.66991 c -2.76583,0 -5.00976,2.6875 -5.00976,6.00001 z m 38.85692,9.99999 c -0.32364,-2.54999 -0.30268,-5.64997 0,-7.99998 h -33.84716 c -6.6797,0 -6.6797,7.99998 0,7.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.11422013" />
|
||||
<path
|
||||
id="path5662-5"
|
||||
d="m -66.979571,392.94975 a 11.896253,11.896253 0 0 0 -7.2163,2.46753 c -2.9175,-3.90502 -7.5338,-6.46751 -12.7838,-6.46751 -5.25,0 -9.86628,2.56249 -12.78378,6.46751 a 11.945003,11.945003 0 0 0 -19.216199,9.53248 c 0,5.21751 8,28.00002 8,28.00002 v 16.00002 a 4.0000013,4.0000013 0 0 0 4,3.99998 h 40.000079 a 4.0000013,4.0000013 0 0 0 4,-3.99998 v -16.00002 c 0,0 8,-22.78251 8,-28.00002 a 12.000003,12.000003 0 0 0 -12,-12.00001 z m -38.000079,54.00005 v -10 h 36.000079 v 10 z m 36.342579,-16.00002 h -3.6938 l 1.3513,-16.84376 a 1.0000003,1.0000003 0 0 0 -0.9162,-1.07622 l -2,-0.16009 h -0.081 a 1.0000003,1.0000003 0 0 0 -1,0.92124 l -1.375,17.16252 h -8.7101 v -17.00375 a 1.0000003,1.0000003 0 0 0 -1,-1 h -2 a 1.0000003,1.0000003 0 0 0 -1.0001,1 v 16.99999 h -8.55238 l -1.375,-17.16248 a 1.0000003,1.0000003 0 0 0 -1.0001,-0.92128 h -0.081 l -1.9999,0.16009 a 1.0000003,1.0000003 0 0 0 -0.9163,1.07623 l 1.3587,16.84751 h -3.6937 c -3.6575,-10.40249 -7.6,-23.33251 -7.6575,-26.00002 a 5.9462517,5.9462517 0 0 1 9.59,-4.74999 l 4.814994,3.65251 3.61748,-4.84124 c 1.9275,-2.58127 4.835,-4.06127 7.9775,-4.06127 3.1425,0 6.05,1.48 7.9775,4.05876 l 3.6176,4.84125 4.815,-3.65001 a 5.9462517,5.9462517 0 0 1 9.59,4.74001 c -0.058,2.67749 -4,15.60751 -7.6575,26.01 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500003" />
|
||||
<path
|
||||
id="path5673-3"
|
||||
d="m -444.49331,301.64985 c -1.68752,-1.42499 -3.825,-2.2 -6.02501,-2.2 -2.7375,0 -5.3125,1.18748 -7.11249,3.26249 l -2.55,-11.12502 c -1.96251,-8.62499 -9.45,-14.63748 -18.20002,-14.63748 -1.41248,0 -2.83748,0.16241 -4.22498,0.4875 -10.05001,2.33751 -16.3375,12.50002 -14.025,22.63751 l 5.57499,24.375 c 0.05,0.23744 0.1375,0.46249 0.19999,0.7 -1.17499,0.38749 -2.25,1.47499 -2.25,2.79999 v 10 c 0,1.66251 1.33752,3 2.97501,3 h 37.8875 c 1.63749,0 3.14999,-1.33749 3.14999,-3 v -10 c 0,-1.42499 -1.17499,-2.55 -2.48751,-2.86248 l 8.3,-10.05003 c 3.32501,-4.02499 2.77501,-10.02498 -1.2125,-13.38748 z m -8.61251,35.30001 h -35.99999 v -8.00002 h 35.99999 z m 6.77501,-24.47501 -10.3125,12.47501 h -30.10001 c -0.14999,-0.46253 -0.33749,-0.92502 -0.44998,-1.41253 l -5.57502,-24.37499 c -1.82499,-7.98748 3.12501,-15.98751 11.05,-17.83751 1.10001,-0.25012 2.21251,-0.38748 3.32501,-0.38748 6.89999,0 12.79999,4.7375 14.34999,11.53751 l 3.43749,15.04998 0.90001,3.92501 2.5625,-3.1 2.42501,-2.9375 c 1.03751,-1.26252 2.56249,-1.97499 4.18749,-1.97499 1.27499,0 2.50002,0.44998 3.48749,1.27498 2.32501,1.94998 2.63752,5.42501 0.71252,7.76251 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5684-1"
|
||||
d="m -438.10741,412.94979 h -14.17124 l 13.34127,-13.34124 c 3.01371,-3.01376 2.18869,-8.09378 -1.62253,-10.00003 a 6.2446252,6.2446252 0 0 0 -2.79125,-0.65875 c -1.32752,0 -2.64501,0.42252 -3.7475,1.24875 l -30.33501,22.75127 h -22.67374 c -0.55252,0 -1,0.44749 -1,1.00001 v 2 c 0,0.55249 0.44748,0.99998 1,0.99998 h 3 v 4.00001 c 0,10.17749 6.345,18.85376 15.28623,22.34375 -1.59499,2.0975 -2.71248,4.57875 -3.115,7.30499 -0.18125,1.22877 0.74751,2.35125 1.99002,2.35125 h 27.67748 c 1.24251,0 2.17125,-1.12124 1.99001,-2.35125 -0.40127,-2.72624 -1.51873,-5.20874 -3.11499,-7.30499 8.94125,-3.48999 15.28625,-12.16626 15.28625,-22.34375 v -4.00001 h 3 c 0.5525,0 0.99999,-0.44749 0.99999,-0.99998 v -2 c 0,-0.55252 -0.44749,-1.00001 -0.99999,-1.00001 z m -6.59254,-19.55127 c 2.19755,-1.64749 4.9013,1.41376 2.93378,3.38128 l -16.16874,16.16999 h -12.83251 z m -0.40746,27.55127 c 0,8.28875 -5.00126,15.59624 -12.74,18.6175 l -4.93877,1.92749 3.21,4.21999 c 0.76002,1.00002 1.35877,2.09377 1.77377,3.23502 h -22.60875 c 0.415,-1.14125 1.01251,-2.235 1.77374,-3.23502 l 3.21,-4.21999 -4.93876,-1.92749 c -7.73998,-3.02126 -12.74125,-10.32875 -12.74125,-18.6175 v -4.00001 h 48.00002 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5695-7"
|
||||
d="m -852.22024,276.94984 h -40 a 8.0000001,8.0000001 0 0 0 -8,7.99999 v 52.00003 a 4.0000002,4.0000002 0 0 0 4,3.99999 h 48 a 4.0000002,4.0000002 0 0 0 4,-3.99999 v -52.00003 a 8.0000001,8.0000001 0 0 0 -8,-7.99999 z m 4,60.00002 h -48 v -40.00001 h 48 z m 0,-44 h -48 v -8.00003 a 4.0000002,4.0000002 0 0 1 4,-3.99998 h 40 a 4.0000002,4.0000002 0 0 1 4,3.99998 z m -6,-8.00003 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -20,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m 0,48.00003 h 36 a 2.0000001,2.0000001 0 0 0 2,-2.00001 v -27.99999 a 2.0000001,2.0000001 0 0 0 -2,-2 h -36 a 2.0000001,2.0000001 0 0 0 -2,2 v 27.99999 a 2.0000001,2.0000001 0 0 0 2,2.00001 z m 2,-28 h 32 v 23.99999 h -32 z m 26,3.99999 h -20 a 2.0000055,2.0000055 0 0 0 0,4.00001 h 20 a 2.0000055,2.0000055 0 0 0 0,-4.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.125" />
|
||||
<path
|
||||
id="path5706-9"
|
||||
d="m -46.898011,304.32153 c -6.3184,-16.42668 -22.26,-27.37169 -40.0816,-27.37169 -17.821639,0 -33.765039,10.94501 -40.078339,27.37169 -7.0884,0.27334 -7.9217,6.23499 -7.9217,7.65166 a 7.6816659,7.6816659 0 0 0 7.7033,7.64334 c 0.4534,0 0.795,-0.0999 1.22,-0.12669 l 5.41,16.22001 a 7.6666659,7.6666659 0 0 0 7.2717,5.23999 h 52.790039 a 7.6666659,7.6666659 0 0 0 7.2716,-5.24164 l 5.405,-16.21836 c 0.4234,0.0284 0.7667,0.12669 1.22,0.12669 a 7.6816659,7.6816659 0 0 0 7.7083,-7.64334 c 0,-1.46168 -0.8583,-7.35667 -7.9183,-7.65166 z m -11.4733,29.69665 a 2.3333332,2.3333332 0 0 1 -2.2133,1.59832 h -52.791739 a 2.3333332,2.3333332 0 0 1 -2.2133,-1.59664 l -5.21,-15.63167 a 21.178333,21.178333 0 0 0 4.8666,-2.78166 c 1.5151,-1.12332 2.1,-1.57168 4.2351,0.0108 2.02,1.5 5.4116,4.00001 11.3233,4.00001 5.911739,0 9.306639,-2.51001 11.333339,-4.01334 1.5117,-1.11834 2.085,-1.56667 4.2017,0.008 2.025,1.5 5.41,3.99999 11.3216,3.99999 5.9117,0 9.3017,-2.51 11.3233,-4.01 1.8134,-1.34498 2.3534,-1.36667 4.1867,0 a 21.151665,21.151665 0 0 0 4.8466,2.78167 l -5.2099,15.63334 z m 11.6867,-19.73501 c -4.1568,0 -6.365,-1.63998 -8.1517,-2.96832 -4.9517,-3.66666 -8.3434,-1.615 -10.5367,0.0108 -1.7733,1.31832 -3.9833,2.95833 -8.145,2.95833 -4.1616,0 -6.3699,-1.64001 -8.1566,-2.9617 -5.3033,-3.94664 -8.9167,-1.2083 -10.55,0 -1.7766,1.32169 -3.9851,2.9617 -8.151739,2.9617 -4.1666,0 -6.375,-1.64001 -8.1666,-2.9617 -1.13,-0.83331 -4.9517,-4.16665 -10.5784,0 -1.78,1.31668 -4,2.95669 -8.1666,2.95669 a 2.3116664,2.3116664 0 1 1 0,-4.62333 c 0.8983,0 1.8466,0.0801 4.4583,-1.36166 8.8883,-25.65333 33.136639,-26.01 35.850039,-26.01 2.6667,0 26.9534,0.33333 35.8333,25.99997 2.6249,1.48501 3.4283,1.38501 4.4633,1.38501 a 2.3116666,2.3116666 0 1 1 0,4.62333 z m -55.101739,-23.71832 a 2.6783329,2.6783329 0 0 0 -3.5783,1.19333 l -2.6667,5.33334 a 2.6666664,2.6666664 0 0 0 1.1934,3.57832 c 1.59,0.78336 3.06,-0.16676 3.5782,-1.19331 l 2.6667,-5.33333 a 2.6666664,2.6666664 0 0 0 -1.1933,-3.57835 z m 33.190039,1.19168 a 2.6672561,2.6672561 0 1 0 -4.7716,2.38499 l 2.6666,5.33333 c 0.5167,1.02834 1.9884,1.97668 3.5783,1.19334 a 2.6666664,2.6666664 0 0 0 1.1933,-3.57835 z m -18.3833,-1.47333 a 2.6666664,2.6666664 0 0 0 -2.6667,2.66667 v 5.3333 a 2.6667,2.6667 0 1 0 5.3334,0 v -5.3333 a 2.6666664,2.6666664 0 0 0 -2.6667,-2.66667 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16666666" />
|
||||
<path
|
||||
id="path5717-1"
|
||||
d="m -864.28279,407.93759 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 1.9999 a 0.99249264,0.99249264 0 0 0 1.0001,-1.02498 c -0.2627,-5.26247 -2.4125,-9.16245 -5.1999,-11.93742 -2.3001,-2.33747 -2.6376,-4.77497 -2.7376,-6.11246 a 0.98374271,0.98374271 0 0 0 -1,-0.88749 l -2,0.012 a 0.99999255,0.99999255 0 0 0 -0.9874,1.08748 13.182401,13.182401 0 0 0 3.9,8.71244 c 2.1624,2.14999 3.7999,5.08745 4.0249,9.17491 z m -13.9374,0 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 2 a 0.99249264,0.99249264 0 0 0 1,-1.02498 c -0.2625,-5.26247 -2.4125,-9.16245 -5.2,-11.93742 -2.2875,-2.33747 -2.6249,-4.77497 -2.7249,-6.11246 a 0.98749265,0.98749265 0 0 0 -1.0125,-0.88749 l -2,0.012 a 0.99999255,0.99999255 0 0 0 -0.9875,1.08748 c 0.125,1.86248 0.65,5.44995 3.9,8.71244 2.1612,2.14999 3.7987,5.08745 4.0249,9.17491 z m 33.9998,5.01246 h -55.9996 a 3.99997,3.99997 0 0 0 -4,3.99996 c 0,11.83742 6.4449,22.14485 15.9999,27.68106 v 4.31873 a 3.99997,3.99997 0 0 0 3.9999,3.99997 h 23.9998 a 3.99997,3.99997 0 0 0 4.0001,-3.99997 v -4.31873 c 9.5548,-5.53621 15.9998,-15.84364 15.9998,-27.68106 a 3.99997,3.99997 0 0 0 -3.9999,-3.99996 z m -16,29.3748 v 6.62495 h -23.9998 v -6.62495 c -16.5423,-9.58369 -15.9998,-23.22235 -15.9998,-25.37484 h 55.9996 c 0,2.1825 0.4212,15.86113 -16,25.37484 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499908" />
|
||||
<path
|
||||
id="path5728-1"
|
||||
d="m -601.67865,276.94984 c -17.67251,0 -32.00004,14.32752 -32.00004,32.00002 0,17.67249 14.32753,31.99998 32.00004,31.99998 17.67246,0 31.99998,-14.32749 31.99998,-31.99998 0,-17.6725 -14.32752,-32.00002 -31.99998,-32.00002 z m 0,60 c -15.43876,0 -28.00003,-12.56125 -28.00003,-27.99998 0,-15.43877 12.56127,-28.00002 28.00003,-28.00002 15.43871,0 27.99997,12.56125 27.99997,28.00002 0,15.43873 -12.56126,27.99998 -27.99997,27.99998 z m 19.79873,-27.99998 3.53499,-3.53503 c 0.39,-0.39 0.39,-1.02374 0,-1.41373 l -1.41373,-1.41376 c -0.39,-0.38999 -1.02378,-0.38999 -1.41378,0 l -3.535,3.535 -5.65748,-5.65624 2.82874,-2.82875 2.12126,2.12124 c 0.39,0.38999 1.02374,0.38999 1.41374,0 l 1.41378,-1.41373 c 0.39,-0.39002 0.39,-1.02376 0,-1.41376 l -2.12126,-2.12127 0.70748,-0.70748 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.41374,-1.41376 c -0.39,-0.38999 -1.02373,-0.38999 -1.41373,0 l -0.70753,0.70752 -2.12126,-2.12124 c -0.38999,-0.39 -1.02373,-0.39 -1.41373,0 l -1.41373,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.12121,2.12124 -2.82874,2.82875 -5.65748,-5.65623 3.53622,-3.535 c 0.39,-0.39 0.39,-1.02373 0,-1.41376 l -1.41496,-1.41875 c -0.39,-0.39 -1.02378,-0.39 -1.41378,0 l -3.53622,3.53626 -3.53627,-3.53626 c -0.39,-0.39 -1.02373,-0.39 -1.41373,0 l -1.41378,1.41376 c -0.39,0.38999 -0.39,1.02373 0,1.41376 l 3.53627,3.535 -5.65625,5.65623 -2.82874,-2.82875 2.12121,-2.12124 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.41373,-1.41375 c -0.39,-0.39 -1.02374,-0.39 -1.41374,0 l -2.12126,2.12127 -0.70752,-0.70752 c -0.39001,-0.38999 -1.02374,-0.38999 -1.41374,0 l -1.41373,1.41376 c -0.39,0.39 -0.39,1.02374 0,1.41376 l 0.70748,0.70748 -2.12126,2.12124 c -0.39,0.39003 -0.39,1.02377 0,1.41376 l 1.41378,1.41376 c 0.39,0.39 1.02373,0.39 1.41373,0 l 2.12126,-2.12127 2.82875,2.82878 -5.65626,5.65624 -3.53627,-3.535 c -0.39,-0.38999 -1.02373,-0.38999 -1.41373,0 l -1.41751,1.41749 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 3.53627,3.53626 -3.53627,3.53623 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 1.41378,1.41376 c 0.39,0.38999 1.02373,0.38999 1.41373,0 l 3.53627,-3.535 5.65625,5.65623 -2.82879,2.82875 -2.12121,-2.12123 c -0.39,-0.39 -1.02378,-0.39 -1.41378,0 l -1.41373,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.12126,2.12124 -0.70753,0.70751 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.41378,1.41373 c 0.39,0.39003 1.02373,0.39003 1.41373,0 l 0.70748,-0.70748 2.12127,2.12124 c 0.38999,0.38999 1.02377,0.38999 1.41377,0 l 1.41374,-1.41376 c 0.38999,-0.39 0.38999,-1.02373 0,-1.41373 l -2.12126,-2.12127 2.82874,-2.82872 5.65753,5.6575 -3.53627,3.53623 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.41378,1.41373 c 0.39,0.39003 1.02373,0.39003 1.41373,0 l 3.53877,-3.535 3.53622,3.53626 c 0.39,0.39 1.02378,0.39 1.41378,0 l 1.41373,-1.41376 c 0.39001,-0.38999 0.39001,-1.02373 0,-1.41372 l -3.53626,-3.53626 5.65752,-5.65751 2.82874,2.82876 -2.12126,2.12123 c -0.38999,0.39 -0.38999,1.02377 0,1.41376 l 1.41374,1.41376 c 0.38999,0.39 1.02378,0.39 1.41378,0 l 2.12126,-2.12124 0.70748,0.70748 c 0.39,0.39 1.02373,0.39 1.41373,0 l 1.41378,-1.41376 c 0.39,-0.38999 0.39,-1.02373 0,-1.41372 l -0.70753,-0.70751 2.12126,-2.12124 c 0.39,-0.39 0.39,-1.02377 0,-1.41376 l -1.41373,-1.41376 c -0.39,-0.39 -1.02378,-0.39 -1.41378,0 l -2.12121,2.12127 -2.82879,-2.82875 5.65625,-5.65627 3.53627,3.535 c 0.39,0.38999 1.02373,0.38999 1.41373,0 l 1.41378,-1.41373 c 0.39,-0.39003 0.39,-1.02377 0,-1.41376 z m -19.79873,-14.14252 5.6562,5.65627 -5.6562,5.6575 -5.65625,-5.65627 z m -14.14252,14.14252 5.65625,-5.6575 5.65748,5.6575 -5.65748,5.6575 z m 14.14252,14.14249 -5.65753,-5.65751 5.65753,-5.6575 5.65748,5.6575 z m 8.48499,-8.48626 -5.65625,-5.65623 5.65748,-5.65627 5.65625,5.65627 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5739-8"
|
||||
d="m -211.52356,447.73728 1.77501,-20.60001 c -5.26251,-4.13751 -8.79999,-9.62502 -8.79999,-16.18747 0.0127,-11.78751 11.02498,-22.00003 19.01246,-22.00003 2.76251,0 4.99999,2.16252 4.99999,4.81249 v 54.37499 c 0,2.65001 -2.23748,4.81253 -4.99999,4.81253 h -6.99998 c -2.84998,0 -5.22499,-2.33754 -4.9875,-5.2125 z m -3.01252,-36.78748 c 0,6.37497 4.02503,10.68746 8.97501,14.31247 l -1.97498,22.825 c -0.0361,0.46249 0.42495,0.8625 0.99999,0.8625 h 6.99998 c 0.53753,0 0.99999,-0.37512 0.99999,-0.81252 v -54.37499 c 0,-0.43748 -0.46246,-0.81248 -0.99999,-0.81248 -5.57498,0 -15,8.22498 -15,18.00002 z m -9.91248,-17.77503 c -0.41254,-2.43748 -2.64999,-4.225 -5.76249,-4.225 -1.48749,0 -3.01252,0.42502 -4.16253,1.40001 -1.04997,-0.8875 -2.5,-1.40001 -4.16248,-1.40001 -1.66251,0 -3.11251,0.51251 -4.16253,1.40001 -1.14996,-0.97499 -2.67499,-1.40001 -4.16248,-1.40001 -3.15,0 -5.34998,1.81252 -5.76252,4.225 -0.22513,1.17499 -1.91246,10.57502 -1.91246,14.51251 0,6.36247 3.33748,11.45002 8.87497,13.83749 l -1.42499,26.35001 c -0.14997,2.74997 2.0375,5.075 4.79999,5.075 h 7.50001 c 2.75003,0 4.95001,-2.31253 4.80002,-5.075 l -1.42502,-26.35001 c 5.525,-2.38747 8.87503,-7.47502 8.87503,-13.83749 0,-3.93749 -1.68754,-13.33752 -1.91252,-14.51251 z m -11.05003,25.77501 1.52503,29.13749 c 0.0241,0.46249 -0.33734,0.8625 -0.81251,0.8625 h -7.50001 c -0.46249,0 -0.83748,-0.38759 -0.81248,-0.8625 l 1.525,-29.13749 c -5.3,-1.1 -8.96249,-5.37502 -8.96249,-11.2625 0,-3.71249 1.84999,-13.82503 1.84999,-13.82503 0.19984,-1.23749 3.53748,-1.21249 3.6875,0.0241 v 15.31249 c 0.11261,1.43748 3.52502,1.46249 3.6875,0.0241 l 0.92501,-15.3625 c 0.19981,-1.21249 3.4875,-1.21249 3.68747,0 l 0.92503,15.3625 c 0.16243,1.42502 3.575,1.40001 3.6875,-0.0241 v -15.30002 c 0.14999,-1.2375 3.4875,-1.26247 3.68747,-0.0241 0,0 1.85,10.11253 1.85,13.82503 0.0127,5.85 -3.62501,10.14999 -8.95001,11.24998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499996" />
|
||||
<path
|
||||
id="path5750-4"
|
||||
d="m -978.22015,404.9498 c 3.3137,0 6,-2.68627 6,-6.00002 0,-3.31374 -2.6863,-6.00002 -6,-6.00002 -3.3138,0 -6,2.68628 -6,6.00002 0,3.31375 2.6862,6.00002 6,6.00002 z m 0,-8.00001 c 1.1025,0 2,0.89747 2,1.99999 0,1.10252 -0.8975,1.99999 -2,1.99999 -1.1025,0 -2,-0.89747 -2,-1.99999 0,-1.10252 0.8975,-1.99999 2,-1.99999 z m 22,14.99998 v -1.99999 c 0,-0.5525 -0.4475,-0.99999 -1,-0.99999 h -54.00005 c -0.5525,0 -1,0.44749 -1,0.99999 v 1.99999 c 0,0.5525 0.4475,1 1,1 h 5.8412 c -4.2437,5.72252 -6.8412,12.70252 -6.8412,19.20001 0,4.885 1.4775,8.83126 4,11.94126 v 6.85875 c 0,1.105 0.895,1.99999 2,1.99999 1.105,0 2,-0.89499 2,-1.99999 v -3.16751 c 5.08255,3.50373 12.16005,5.1675 20.00005,5.1675 7.8387,0 14.9175,-1.66377 20,-5.16624 v 3.16625 c 0,1.105 0.895,1.99999 2,1.99999 1.105,0 2,-0.89499 2,-1.99999 v -6.85875 c 2.5225,-3.11 4,-7.05626 4,-11.94126 0,-6.49749 -2.5975,-13.47749 -6.8413,-19.20001 h 5.8413 c 0.5525,0 1,-0.4475 1,-1 z m -4,20.20001 c 0,15.1625 -16.7837,16.80002 -24,16.80002 -7.2163,0 -24.00005,-1.63752 -24.00005,-16.80002 0,-6.53124 3.0175,-13.75249 7.955,-19.20001 h 32.08875 c 4.9388,5.44752 7.9563,12.66877 7.9563,19.20001 z m -32,-35.19999 c 2.2087,0 4,-1.79124 4,-4.00003 0,-2.20875 -1.7913,-3.99999 -4,-3.99999 -2.2087,0 -4,1.79124 -4,3.99999 0,2.20879 1.7913,4.00003 4,4.00003 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500001" />
|
||||
<path
|
||||
id="path5761-6"
|
||||
d="m -199.4718,297.75695 0.84,-2.5214 v 0 l 6.09571,-18.28571 h -57.1428 a 11.428558,11.428558 0 0 0 -11.42855,11.42856 v 14.85712 a 1.1428558,1.1428558 0 0 0 1.14284,1.14287 h 2.28574 a 1.1428558,1.1428558 0 0 0 1.14284,-1.14287 V 288.3784 a 6.8571343,6.8571343 0 0 1 6.85713,-6.85711 h 3.81 l 4.57141,13.71426 v 0 l 0.86429,2.59426 c -7.04427,5.67715 -11.53139,14.21856 -11.53139,23.77999 0,7.35283 2.65999,12.10998 7.09139,16.81569 a 8.1685614,8.1685614 0 0 0 5.93286,2.52429 h 37.95281 a 8.1542755,8.1542755 0 0 0 5.9214,-2.51429 c 4.42857,-4.70714 7.09859,-9.46286 7.10142,-16.81712 0,-9.47286 -4.37571,-18.12141 -11.5071,-23.86142 z m -41.57853,-16.23566 h 42.17138 l -4.57142,13.71426 h -33.02854 z m 5.44999,18.28568 h 31.3857 c 3,2.41714 7.8114,6.01142 10.35711,13.71426 h -52.19422 c 2.58712,-7.71427 7.54573,-11.37283 10.45141,-13.71426 z m 37.20711,35.4928 a 3.5599955,3.5599955 0 0 1 -2.59429,1.07858 h -37.95281 a 3.5714241,3.5714241 0 0 1 -2.60427,-1.08858 c -4.26286,-4.52428 -5.84856,-8.23283 -5.84856,-13.67997 a 25.471396,25.471396 0 0 1 0.27125,-3.51716 h 54.31851 a 25.781397,25.781397 0 0 1 0.26712,3.5243 c 0,5.4457 -1.58856,9.15427 -5.8571,13.68283 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.14285697" />
|
||||
<path
|
||||
id="path5772-1"
|
||||
d="m -329.10761,317.94896 c -1.65624,0 -2.99995,1.34246 -2.99995,2.99995 0,1.65621 1.34371,2.99992 2.99995,2.99992 1.65621,0 2.99993,-1.34371 2.99993,-2.99992 0,-1.65749 -1.34372,-2.99995 -2.99993,-2.99995 z m -20.99961,-16.99966 c 0,-1.65749 -1.34371,-2.99995 -2.99995,-2.99995 -1.65621,0 -2.99992,1.34246 -2.99992,2.99995 0,1.65621 1.34371,2.99992 2.99992,2.99992 1.65624,0 2.99995,-1.34371 2.99995,-2.99992 z m 1,16.99966 c -1.65624,0 -2.99993,1.34246 -2.99993,2.99995 0,1.65621 1.34369,2.99992 2.99993,2.99992 1.65618,0 2.99995,-1.34371 2.99995,-2.99992 0,-1.65749 -1.34377,-2.99995 -2.99995,-2.99995 z m 11.99975,-11.99978 c -1.65621,0 -2.99995,1.34246 -2.99995,2.99995 0,1.65621 1.34374,2.99995 2.99995,2.99995 1.65621,0 2.99995,-1.34374 2.99995,-2.99995 0,-1.65749 -1.34374,-2.99995 -2.99995,-2.99995 z m 27.81448,2.97744 c -8.74612,-0.10616 -15.80846,-7.21111 -15.80846,-15.98218 -8.77107,0 -15.8747,-7.0611 -15.98218,-15.80595 -0.82748,-0.1262 -1.66121,-0.18865 -2.49121,-0.18865 -2.58495,0 -5.14739,0.60625 -7.47361,1.79122 l -8.64108,4.40243 a 16.527304,16.527304 0 0 0 -7.22362,7.22609 l -4.38743,8.60983 a 16.580302,16.580302 0 0 0 -1.60242,10.11857 l 1.50995,9.53483 a 16.569053,16.569053 0 0 0 4.64492,9.11979 l 6.84609,6.84487 a 16.50418,16.50418 0 0 0 9.0886,4.63243 l 9.58855,1.51748 c 0.85749,0.13639 1.71998,0.20246 2.57995,0.20246 2.58996,0 5.15618,-0.61001 7.4861,-1.79748 l 8.64108,-4.40242 a 16.527304,16.527304 0 0 0 7.2236,-7.22609 l 4.38745,-8.60984 c 1.56996,-3.0787 2.12619,-6.57112 1.61372,-9.98733 z m -5.17739,8.16985 -4.38745,8.61108 c -1.20994,2.37496 -3.10367,4.26866 -5.47611,5.47739 l -8.64111,4.40244 c -1.74747,0.88995 -3.70869,1.36118 -5.66989,1.36118 -0.65124,0 -1.30873,-0.0512 -1.95371,-0.1538 l -9.58733,-1.51746 c -2.62493,-0.41624 -5.00613,-1.62997 -6.8861,-3.50993 l -6.84612,-6.84487 c -1.88746,-1.88621 -3.10494,-4.27866 -3.52243,-6.91613 l -1.50997,-9.53354 c -0.41873,-2.63997 0.004,-5.29489 1.21499,-7.6761 l 4.3874,-8.60983 c 1.20997,-2.37496 3.10369,-4.26866 5.47616,-5.47739 l 8.63981,-4.40368 c 1.41624,-0.72123 2.97495,-1.16624 4.56367,-1.30747 1.64372,7.89361 7.97986,14.11846 15.90593,15.60721 1.4887,7.92733 7.71361,14.26346 15.60845,15.90592 -0.13739,1.59123 -0.57999,3.14243 -1.31619,4.58491 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499759" />
|
||||
<path
|
||||
id="path5794-5"
|
||||
d="m -732.04318,276.94984 c -16.5581,0 -31.0068,10.95333 -39.0524,20.33332 l -16.0613,-14.27833 c -2.2371,-1.84166 -5.5619,0.11165 -4.999,2.92669 l 4.4492,23.01833 -4.4508,23.02003 c -0.5613,2.81333 2.7602,4.76664 4.9922,2.93167 l 16.0615,-14.27503 c 8.0521,9.37 22.5091,20.32333 39.0606,20.32333 25.291,0 45.7932,-25.60001 45.7932,-32 0,-6.39999 -20.5022,-32.00001 -45.7932,-32.00001 z m 0,58.6667 c -14.1407,0 -27.3756,-9.54502 -35.0453,-18.47833 l -3.3695,-3.92501 c -5.1646,4.24667 -2.0268,1.47999 -15.2467,13.60166 3.6029,-18.98167 3.1079,-16.395 3.4059,-17.86501 -0.298,-1.46835 0.1985,1.12166 -3.4043,-17.86501 13.2464,12.14167 10.1004,9.36833 15.2467,13.60335 l 3.3695,-3.92502 c 7.6699,-8.93333 20.8965,-18.48002 35.0437,-18.48002 21.2261,0 39.0905,21.08169 40.46,26.6667 -1.3695,5.58501 -19.2339,26.66669 -40.46,26.66669 z m -3.6063,-41.72502 -1.8728,-1.885 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -14.0215,14.11 a 1.3246526,1.333334 0 0 0 0,1.88498 l 1.8728,1.885 a 1.3246526,1.333334 0 0 0 1.8727,0 l 14.0232,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 18.5451,2.66667 -1.8727,-1.88499 a 1.3246526,1.333334 0 0 0 -1.8743,0 l -24.6189,24.77666 a 1.3246526,1.333334 0 0 0 0,1.885 l 1.8729,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 24.6203,-24.77001 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 6.0753,11.44835 a 1.3246526,1.333334 0 0 0 -1.8745,0 l -14.0214,14.11 a 1.3246526,1.333334 0 0 0 0,1.88499 l 1.8726,1.88499 a 1.3246526,1.333334 0 0 0 1.8729,0 l 14.0229,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.88666 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16612327" />
|
||||
<path
|
||||
id="path5805-4"
|
||||
d="m -984.22005,318.94986 c -1.1001,0 -2.0001,0.9 -2.0001,1.99998 0,1.1 0.9,1.99999 2.0001,1.99999 1.0999,0 1.9999,-0.89999 1.9999,-1.99999 0,-1.09998 -0.9,-1.99998 -1.9999,-1.99998 z m -4.0001,-31.00002 c -1.1,0 -1.9999,0.90001 -1.9999,2.00003 0,1.1 0.8999,1.99999 1.9999,1.99999 1.1001,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.8999,-2.00003 -2,-2.00003 z m 4.0001,23.00002 c -1.1001,0 -2.0001,0.9 -2.0001,1.99999 0,1.1 0.9,1.99998 2.0001,1.99998 1.0999,0 1.9999,-0.89998 1.9999,-1.99998 0,-1.09999 -0.9,-1.99999 -1.9999,-1.99999 z m 0,-7.99999 c -1.1001,0 -2.0001,0.9 -2.0001,1.99998 0,1.1 0.9,2.00003 2.0001,2.00003 1.0999,0 1.9999,-0.90003 1.9999,-2.00003 0,-1.09998 -0.9,-1.99998 -1.9999,-1.99998 z m 4,-15.00003 c -1.1001,0 -2.0001,0.90001 -2.0001,2.00003 0,1.1 0.9,1.99999 2.0001,1.99999 1.1,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.9,-2.00003 -2,-2.00003 z m 23.9999,19.00004 c 0,-5.51253 -4.4875,-10.00002 -9.9999,-10.00002 h -4.95 c 1.2874,-2.88749 1.5749,-6.17501 0.7249,-9.45 -1.2375,-4.84999 -5.175,-8.79998 -10,-10.06251 -1.2499,-0.32487 -2.5125,-0.48751 -3.7749,-0.48751 -3.8125,0 -7.3876,1.48752 -10.075,4.17501 -2.6876,2.6875 -4.175,6.26249 -4.175,10.07502 0,1.99999 0.4249,3.96249 1.225,5.74999 h -4.97515 c -5.5125,0 -10,4.48749 -10,10.00002 0,5.51246 4.4875,9.99998 10,9.99998 h 3.48765 l -7.25005,7.7 c -3.475,4.27498 -2.8251,10.5875 1.4499,14.06248 1.7875,1.4375 4.0251,2.23751 6.31255,2.23751 3.025,0 5.8625,-1.35001 7.7626,-3.7 l 6.2375,-6.44998 6.2375,6.44998 c 1.8999,2.34999 4.7374,3.7 7.7624,3.7 2.2876,0 4.525,-0.80001 6.3,-2.23751 4.2751,-3.47498 4.925,-9.7875 1.45,-14.06248 l -7.2499,-7.7 h 3.5 c 5.5124,0 9.9999,-4.48753 9.9999,-9.99998 z m -17.925,10.88749 8.575,9.32498 c 2.0875,2.575 1.7,6.35 -0.875,8.43751 -1.1125,0.89999 -2.45,1.34998 -3.775,1.34998 -1.7499,0 -3.475,-0.7625 -4.6624,-2.21248 l -6.2376,-6.45 c -0.8,-0.98751 -1.95,-1.47501 -3.0999,-1.47501 -1.1501,0 -2.3,0.4875 -3.1001,1.47501 l -6.2375,6.45 c -1.1874,1.46249 -2.9124,2.21248 -4.6625,2.21248 -1.3249,0 -2.66245,-0.43748 -3.77505,-1.34998 -2.575,-2.08751 -2.9625,-5.8625 -0.875,-8.43751 l 8.57515,-9.32498 c 1.5874,-1.9625 0.1999,-4.88752 -2.325,-4.88752 h -5.60015 c -3.3125,0 -6,-2.68749 -6,-5.99997 0,-3.31251 2.6875,-6.00001 6,-6.00001 h 10.20005 c 1.1625,0 1.775,-1.4375 0.9126,-2.21252 -2.0626,-1.86248 -3.3625,-4.53748 -3.3625,-7.53748 0,-5.66251 4.5874,-10.25002 10.25,-10.25002 0.9,0 1.825,0.11255 2.7625,0.3625 3.4499,0.9 6.2624,3.725 7.1374,7.18748 1.0375,4.06252 -0.3374,7.83755 -3,10.23752 -0.8625,0.78752 -0.2748,2.22502 0.9,2.22502 h 10.2001 c 3.3124,0 5.9999,2.6875 5.9999,5.99997 0,3.31251 -2.6875,6 -5.9999,6 h -5.5876 c -2.5249,-0.0134 -3.925,2.91253 -2.3375,4.87503 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499995" />
|
||||
<path
|
||||
id="path5627-7"
|
||||
d="m 30.005309,176.94992 c -2.2187,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.7812,5 -4,5 z m 16,0 c -2.2187,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.7812,5 -4,5 z m 16,0 c -2.2187,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.7812,5 -4,5 z m 6,20.00002 h -4 v -18.00002 h -4 v 18.00002 h -12 v -18.00002 h -4 v 18.00002 h -12 v -18.00002 h -4 v 18.00002 h -4 c -3.3125,0 -6,2.68747 -6,5.99997 v 26.00001 h 56 v -26.00001 c 0,-3.3125 -2.6875,-5.99997 -6,-5.99997 z m 2,27.99999 h -48 v -9.00538 c 2.0278,-1.18486 2.991,-2.99462 5.3438,-2.99462 3.4939,0 3.9066,3.99998 9.3437,3.99998 5.3554,0 5.9022,-3.99998 9.3125,-3.99998 3.5185,0 3.9002,3.99998 9.3438,3.99998 5.4196,0 5.8459,-3.99998 9.3437,-3.99998 2.311,0 3.2806,1.80937 5.3125,2.99438 z m 0,-14.04676 c -1.2032,-0.98425 -2.6521,-1.95324 -5.3125,-1.95324 -5.4287,0 -5.8531,4 -9.3437,4 -3.4619,0 -3.9318,-4 -9.3438,-4 -5.3552,0 -5.9022,4 -9.3125,4 -3.5185,0 -3.9002,-4 -9.3437,-4 -2.6829,0 -4.1376,0.97177 -5.3438,1.95724 v -7.95726 c 0,-1.10272 0.8973,-1.99998 2,-1.99998 h 44 c 1.1028,0 2,0.89726 2,1.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5640-9"
|
||||
d="m 162.00531,214.94992 c -1.6575,0 -3,1.34249 -3,3 0,1.65624 1.3425,3 3,3 1.6575,0 3,-1.34376 3,-3 0,-1.65751 -1.3425,-3 -3,-3 z m 16.7812,-6.99624 11.2188,-43.00376 h -58 c -3.3087,0 -6,2.69127 -6,6.00004 v 19.99996 c 0,3.30877 2.6913,6 6,6 h 12.7825 l 0.9413,10.82001 c -4.5088,1.7275 -7.7238,6.06374 -7.7238,11.17999 v 6 c 0,2.20873 1.7913,4 4,4 h 40 c 2.2088,0 4,-1.79127 4,-4 v -6 c 0,-4.92499 -2.9737,-9.14752 -7.2188,-10.99624 z m -46.7812,-15.00376 c -1.1012,0 -2,-0.89625 -2,-2 v -19.99996 c 0,-1.10375 0.8988,-2 2,-2 h 10.3475 l 2.0875,23.99996 z m 52.8225,-23.99996 -2.0875,7.99996 h -19.735 c -0.5525,0 -1,0.44751 -1,1.00004 v 1.99996 c 0,0.55253 0.4475,1 1,1 h 18.6925 l -2.0875,8 h -16.605 c -0.5525,0 -1,0.44751 -1,1 v 2 c 0,0.55253 0.4475,1 1,1 h 15.5613 l -3.6525,14 h -25.2413 l -3.305,-37.99996 z m -2.8225,55.99996 h -40 v -6 c 0,-4.41125 3.5888,-8 8,-8 h 24 c 4.4113,0 8,3.58875 8,8 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249999" />
|
||||
<path
|
||||
id="path5651-8"
|
||||
d="m 442.32375,184.94991 h -17.5341 c -0.6889,0 -1.2525,-0.67497 -1.2525,-1.49998 v -0.99999 c 0,-0.82501 0.5636,-1.50002 1.2525,-1.50002 h 17.5341 c 0.6889,0 1.2524,0.67501 1.2524,1.50002 v 0.99999 c 0,0.82501 -0.5635,1.49998 -1.2524,1.49998 z m 1.2524,6.5 v -0.99999 c 0,-0.82501 -0.5635,-1.49998 -1.2524,-1.49998 h -17.5341 c -0.6889,0 -1.2525,0.67497 -1.2525,1.49998 v 0.99999 c 0,0.82501 0.5636,1.50002 1.2525,1.50002 h 17.5341 c 0.6889,0 1.2524,-0.67501 1.2524,-1.50002 z m 6.7528,33.49998 h 0.3444 c 0.6889,0 1.2525,0.67501 1.2525,1.50002 v 0.99999 c 0,0.82501 -0.5636,1.50002 -1.2525,1.50002 h -37.1557 c -4.6132,0 -8.3496,-4.47501 -8.3496,-10 v -43.99997 c 0,-5.52502 3.7364,-10.00003 8.3496,-10.00003 h 35.9033 c 1.3881,0 2.5049,1.33751 2.5049,3.00004 v 45.99995 c 0,1.25 -0.6471,2.32499 -1.5552,2.775 -0.3757,2.01252 -0.4592,5.7 -0.042,8.22498 z m -31.8015,-11.99997 h 30.0585 v -43.99997 h -30.0585 z m -10.0196,1.99998 c 1.3986,-1.24997 3.1311,-1.99998 5.0098,-1.99998 h 1.6699 v -43.99997 h -1.6699 c -2.7658,0 -5.0098,2.68749 -5.0098,6 z m 38.857,9.99999 c -0.3237,-2.54999 -0.3027,-5.64997 0,-7.99998 h -33.8472 c -6.6797,0 -6.6797,7.99998 0,7.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.11422013" />
|
||||
<path
|
||||
id="path5662-1"
|
||||
d="m 709.11835,168.9499 a 11.896253,11.896253 0 0 0 -7.2163,2.46752 c -2.9175,-3.90501 -7.5337,-6.4675 -12.7837,-6.4675 -5.25,0 -9.8663,2.56249 -12.7838,6.4675 a 11.945003,11.945003 0 0 0 -19.2163,9.53248 c 0,5.21751 8.0001,28.00002 8.0001,28.00002 v 16.00002 a 4.0000013,4.0000013 0 0 0 3.9999,3.99998 h 40.0001 a 4.0000013,4.0000013 0 0 0 3.9999,-3.99998 v -16.00002 c 0,0 8.0001,-22.78251 8.0001,-28.00002 a 12.000003,12.000003 0 0 0 -12,-12 z m -38.0001,54.00004 v -10 h 36.0001 v 10 z m 36.3426,-16.00002 h -3.6938 l 1.3513,-16.84376 a 1.0000003,1.0000003 0 0 0 -0.9163,-1.07622 l -2,-0.16009 h -0.081 a 1.0000003,1.0000003 0 0 0 -1,0.92124 l -1.375,17.16252 h -8.71 v -17.00375 a 1.0000003,1.0000003 0 0 0 -1,-1 h -2 a 1.0000003,1.0000003 0 0 0 -1,1 v 16.99999 h -8.5525 l -1.375,-17.16248 a 1.0000003,1.0000003 0 0 0 -1,-0.92128 h -0.081 l -2,0.16009 a 1.0000003,1.0000003 0 0 0 -0.9162,1.07623 l 1.3587,16.84751 h -3.6937 c -3.6576,-10.40249 -7.6,-23.33251 -7.6575,-26.00002 a 5.9462517,5.9462517 0 0 1 9.5899,-4.74999 l 4.8151,3.65251 3.6175,-4.84124 c 1.9274,-2.58127 4.835,-4.06127 7.9775,-4.06127 3.1424,0 6.0499,1.48 7.9775,4.05876 l 3.6174,4.84125 4.8151,-3.65001 a 5.9462517,5.9462517 0 0 1 9.59,4.74001 c -0.058,2.67749 -4,15.60751 -7.6576,26.01 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500003" />
|
||||
<path
|
||||
id="path5673-8"
|
||||
d="m 182.61931,77.650015 c -1.6875,-1.42499 -3.825,-2.2 -6.025,-2.2 -2.7375,0 -5.3125,1.18748 -7.1125,3.26249 l -2.55,-11.12502 c -1.9625,-8.62499 -9.45,-14.63748 -18.2,-14.63748 -1.4125,0 -2.8375,0.16241 -4.225,0.4875 -10.05,2.33751 -16.3375,12.50002 -14.025,22.63751 l 5.575,24.375005 c 0.05,0.23744 0.1375,0.46249 0.2,0.7 -1.175,0.38749 -2.25,1.47499 -2.25,2.79999 V 113.95 c 0,1.66251 1.3375,3 2.975,3 h 37.8875 c 1.6375,0 3.15,-1.33749 3.15,-3 v -9.99999 c 0,-1.42499 -1.175,-2.55 -2.4875,-2.86248 l 8.3,-10.050035 c 3.325,-4.02499 2.775,-10.02498 -1.2125,-13.38748 z m -8.6125,35.300005 h -36 v -8.00001 h 36 z m 6.775,-24.475005 -10.3125,12.475015 h -30.1 c -0.15,-0.46253 -0.3375,-0.92502 -0.45,-1.412535 l -5.575,-24.37499 c -1.825,-7.98748 3.125,-15.98751 11.05,-17.83751 1.1,-0.25012 2.2125,-0.38748 3.325,-0.38748 6.9,0 12.8,4.7375 14.35,11.53751 l 3.4375,15.04998 0.9,3.92501 2.5625,-3.1 2.425,-2.9375 c 1.0375,-1.26252 2.5625,-1.97499 4.1875,-1.97499 1.275,0 2.5,0.44998 3.4875,1.27498 2.325,1.94998 2.6375,5.42501 0.7125,7.76251 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5684-6"
|
||||
d="m 321.99045,188.94993 h -14.1713 l 13.3413,-13.34124 c 3.0137,-3.01376 2.1887,-8.09377 -1.6225,-10.00002 a 6.2446252,6.2446252 0 0 0 -2.7912,-0.65875 c -1.3276,0 -2.6451,0.42252 -3.7476,1.24875 l -30.335,22.75126 h -22.67374 c -0.5525,0 -1,0.44749 -1,1.00001 v 2 c 0,0.55249 0.4475,0.99998 1,0.99998 h 3 v 4.00001 c 0,10.17749 6.345,18.85376 15.28624,22.34375 -1.595,2.0975 -2.7125,4.57875 -3.115,7.30499 -0.1812,1.22877 0.7475,2.35125 1.99,2.35125 h 27.6775 c 1.2425,0 2.1713,-1.12124 1.99,-2.35125 -0.4012,-2.72624 -1.5187,-5.20874 -3.1149,-7.30499 8.9412,-3.48999 15.2862,-12.16626 15.2862,-22.34375 v -4.00001 h 3 c 0.5525,0 1,-0.44749 1,-0.99998 v -2 c 0,-0.55252 -0.4475,-1.00001 -1,-1.00001 z m -6.5925,-19.55126 c 2.1975,-1.64749 4.9013,1.41375 2.9337,3.38127 l -16.1687,16.16999 h -12.8325 z m -0.4075,27.55126 c 0,8.28875 -5.0013,15.59624 -12.74,18.6175 l -4.9388,1.92749 3.21,4.21999 c 0.7601,1.00002 1.3588,2.09377 1.7738,3.23502 h -22.6088 c 0.415,-1.14125 1.0125,-2.235 1.7738,-3.23502 l 3.21,-4.21999 -4.9388,-1.92749 c -7.74004,-3.02126 -12.74124,-10.32875 -12.74124,-18.6175 v -4.00001 h 48.00004 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5695-2"
|
||||
d="m 825.68965,52.950005 h -40 a 8.0000001,8.0000001 0 0 0 -8.0001,7.99999 v 52.000015 a 4.0000002,4.0000002 0 0 0 4,3.99999 h 48.0001 a 4.0000002,4.0000002 0 0 0 4,-3.99999 V 60.949995 a 8.0000001,8.0000001 0 0 0 -8,-7.99999 z m 4,60.000005 h -48.0001 V 72.950005 h 48.0001 z m 0,-43.999995 h -48.0001 v -8.00002 a 4.0000002,4.0000002 0 0 1 4.0001,-3.99998 h 40 a 4.0000002,4.0000002 0 0 1 4,3.99998 z m -6.0001,-8.00002 a 2.0000001,2.0000001 0 1 0 2.0001,2 2.0000001,2.0000001 0 0 0 -2.0001,-2 z m -7.9999,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -20,0 a 2.0000001,2.0000001 0 1 0 1.9999,2 2.0000001,2.0000001 0 0 0 -1.9999,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m 0,48.000025 h 35.9999 a 2.0000001,2.0000001 0 0 0 2.0001,-2.00001 V 78.950015 a 2.0000001,2.0000001 0 0 0 -2.0001,-2 h -35.9999 a 2.0000001,2.0000001 0 0 0 -2,2 v 27.999995 a 2.0000001,2.0000001 0 0 0 2,2.00001 z m 2,-28.000005 h 31.9999 v 23.999995 h -31.9999 z m 26,3.99999 h -20 a 2.0000055,2.0000055 0 0 0 0,4.00001 h 20 a 2.0000055,2.0000055 0 0 0 0,-4.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.125" />
|
||||
<path
|
||||
id="path5706-1"
|
||||
d="m 601.19995,80.321695 c -6.3184,-16.42668 -22.26,-27.37169 -40.0816,-27.37169 -17.8217,0 -33.7651,10.94501 -40.0784,27.37169 -7.0883,0.27334 -7.9217,6.23499 -7.9217,7.65166 a 7.6816659,7.6816659 0 0 0 7.7034,7.64334 c 0.4534,0 0.795,-0.0999 1.22,-0.12669 l 5.41,16.220015 a 7.6666659,7.6666659 0 0 0 7.2717,5.23998 h 52.79 a 7.6666659,7.6666659 0 0 0 7.2716,-5.24163 l 5.405,-16.218365 c 0.4234,0.0284 0.7667,0.12669 1.22,0.12669 a 7.6816659,7.6816659 0 0 0 7.7083,-7.64334 c 0,-1.46168 -0.8583,-7.35667 -7.9183,-7.65166 z m -11.4733,29.696655 a 2.3333332,2.3333332 0 0 1 -2.2133,1.59832 h -52.7917 a 2.3333332,2.3333332 0 0 1 -2.2134,-1.59664 l -5.2099,-15.631675 a 21.178333,21.178333 0 0 0 4.8666,-2.78166 c 1.5151,-1.12332 2.1,-1.57168 4.235,0.0108 2.02,1.5 5.4117,4.00001 11.3234,4.00001 5.9117,0 9.3066,-2.51001 11.3333,-4.01334 1.5117,-1.11834 2.085,-1.56667 4.2017,0.008 2.025,1.5 5.41,3.99999 11.3216,3.99999 5.9117,0 9.3017,-2.51 11.3234,-4.01 1.8133,-1.34498 2.3533,-1.36667 4.1866,0 a 21.151665,21.151665 0 0 0 4.8466,2.78167 l -5.2099,15.633345 z m 11.6867,-19.735015 c -4.1567,0 -6.365,-1.63998 -8.1517,-2.96832 -4.9517,-3.66666 -8.3434,-1.615 -10.5367,0.0108 -1.7733,1.31832 -3.9833,2.95833 -8.145,2.95833 -4.1617,0 -6.3699,-1.64001 -8.1567,-2.9617 -5.3032,-3.94664 -8.9166,-1.2083 -10.5499,0 -1.7767,1.32169 -3.9851,2.9617 -8.1517,2.9617 -4.1666,0 -6.3751,-1.64001 -8.1666,-2.9617 -1.1301,-0.83331 -4.9517,-4.16665 -10.5784,0 -1.78,1.31668 -4,2.95669 -8.1666,2.95669 a 2.3116664,2.3116664 0 1 1 0,-4.62333 c 0.8982,0 1.8466,0.0801 4.4583,-1.36166 8.8883,-25.65333 33.1366,-26.01 35.85,-26.01 2.6667,0 26.9534,0.33333 35.8333,25.99997 2.6249,1.48501 3.4283,1.38501 4.4633,1.38501 a 2.3116666,2.3116666 0 1 1 0,4.62333 z m -55.1017,-23.71832 a 2.6783329,2.6783329 0 0 0 -3.5783,1.19333 l -2.6668,5.33334 a 2.6666664,2.6666664 0 0 0 1.1934,3.57832 c 1.5901,0.78336 3.06,-0.16676 3.5783,-1.19331 l 2.6667,-5.33333 a 2.6666664,2.6666664 0 0 0 -1.1933,-3.57835 z m 33.19,1.19168 a 2.6672691,2.6672691 0 1 0 -4.7717,2.38499 l 2.6667,5.33333 c 0.5166,1.02834 1.9883,1.97668 3.5783,1.19334 a 2.6666664,2.6666664 0 0 0 1.1933,-3.57835 z m -18.3833,-1.47333 a 2.6666664,2.6666664 0 0 0 -2.6667,2.66667 v 5.3333 a 2.6667,2.6667 0 1 0 5.3334,0 v -5.3333 a 2.6666664,2.6666664 0 0 0 -2.6667,-2.66667 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16666666" />
|
||||
<path
|
||||
id="path5717-4"
|
||||
d="m 951.18345,183.93774 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 1.9999 a 0.99249264,0.99249264 0 0 0 1.0001,-1.02498 c -0.2627,-5.26247 -2.4125,-9.16245 -5.1999,-11.93742 -2.3001,-2.33747 -2.6376,-4.77497 -2.7376,-6.11246 a 0.98374271,0.98374271 0 0 0 -1,-0.88749 l -2,0.012 a 0.99999255,0.99999255 0 0 0 -0.9874,1.08748 13.182401,13.182401 0 0 0 3.9,8.71244 c 2.1624,2.15 3.7999,5.08746 4.0249,9.17492 z m -13.9374,0 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 2 a 0.99249264,0.99249264 0 0 0 1,-1.02498 c -0.2625,-5.26247 -2.4125,-9.16245 -5.2,-11.93742 -2.2875,-2.33747 -2.625,-4.77497 -2.7249,-6.11246 a 0.98749265,0.98749265 0 0 0 -1.0125,-0.88749 l -2,0.012 a 0.99999255,0.99999255 0 0 0 -0.9875,1.08748 c 0.1249,1.86249 0.65,5.44996 3.8999,8.71244 2.1613,2.15 3.7988,5.08746 4.025,9.17492 z m 33.9998,5.01246 h -55.9996 a 3.99997,3.99997 0 0 0 -4,3.99996 c 0,11.83742 6.4449,22.14485 15.9999,27.68106 v 4.31873 a 3.99997,3.99997 0 0 0 3.9999,3.99997 h 23.9998 a 3.99997,3.99997 0 0 0 4.0001,-3.99997 v -4.31873 c 9.5548,-5.53621 15.9998,-15.84364 15.9998,-27.68106 a 3.99997,3.99997 0 0 0 -3.9999,-3.99996 z m -16,29.3748 v 6.62495 h -23.9998 V 218.325 c -16.5423,-9.58369 -15.9998,-23.22235 -15.9998,-25.37484 h 55.9996 c 0,2.1825 0.4212,15.86113 -16,25.37484 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499908" />
|
||||
<path
|
||||
id="path5728-6"
|
||||
d="m 46.005409,52.950005 c -17.6725,0 -32.0001,14.32752 -32.0001,32.00002 0,17.672495 14.3276,31.999975 32.0001,31.999975 17.6724,0 31.9999,-14.32748 31.9999,-31.999975 0,-17.6725 -14.3275,-32.00002 -31.9999,-32.00002 z m 0,59.999995 c -15.4388,0 -28.0001,-12.56124 -28.0001,-27.999975 0,-15.43877 12.5613,-28.00002 28.0001,-28.00002 15.4387,0 27.9999,12.56125 27.9999,28.00002 0,15.438735 -12.5612,27.999975 -27.9999,27.999975 z m 19.7987,-27.999975 3.535,-3.53503 c 0.39,-0.39 0.39,-1.02374 0,-1.41373 l -1.4138,-1.41376 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -3.535,3.535 -5.6575,-5.65624 2.8287,-2.82875 2.1213,2.12124 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 1.4138,-1.41373 c 0.39,-0.39002 0.39,-1.02376 0,-1.41376 l -2.1213,-2.12127 0.7075,-0.70748 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4137,-1.41376 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -0.7076,0.70752 -2.1212,-2.12124 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4137,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.1212,2.12124 -2.8287,2.82875 -5.6575,-5.65623 3.5362,-3.535 c 0.39,-0.39 0.39,-1.02373 0,-1.41376 l -1.4149,-1.41875 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -3.5362,3.53626 -3.5363,-3.53626 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -1.4138,1.41376 c -0.39,0.38999 -0.39,1.02373 0,1.41376 l 3.5362,3.535 -5.6562,5.65623 -2.8287,-2.82875 2.1212,-2.12124 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4138,-1.41375 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -2.1213,2.12127 -0.7075,-0.70752 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -1.4137,1.41376 c -0.39,0.39 -0.39,1.02374 0,1.41376 l 0.7074,0.70748 -2.1212,2.12124 c -0.39,0.39003 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.1212,-2.12127 2.8288,2.82878 -5.6563,5.65624 -3.5362,-3.535 c -0.39,-0.38999 -1.0238,-0.38999 -1.4138,0 l -1.4175,1.41749 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 3.5363,3.53626 -3.5363,3.53623 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 1.4138,1.41376 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 3.5363,-3.535 5.6563,5.65623 -2.8288,2.82875 -2.1212,-2.12123 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4138,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.1213,2.12124 -0.7075,0.70751 c -0.39,0.390005 -0.39,1.023775 0,1.413765 l 1.4138,1.41373 c 0.39,0.39003 1.0237,0.39003 1.4137,0 l 0.7075,-0.70748 2.1212,2.12124 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4137,-1.41376 c 0.39,-0.39 0.39,-1.02373 0,-1.41373 l -2.1212,-2.121275 2.8287,-2.82872 5.6575,5.657505 -3.5362,3.53623 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.4138,1.41373 c 0.39,0.39003 1.0237,0.39003 1.4137,0 l 3.5388,-3.535 3.5362,3.53626 c 0.39,0.39 1.0238,0.39 1.4138,0 l 1.4137,-1.41376 c 0.39,-0.38999 0.39,-1.02373 0,-1.41372 l -3.5363,-3.53626 5.6576,-5.657515 2.8287,2.82876 -2.1213,2.121235 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.1213,-2.12124 0.7075,0.70748 c 0.39,0.39 1.0237,0.39 1.4137,0 l 1.4138,-1.41376 c 0.39,-0.38999 0.39,-1.02373 0,-1.413725 l -0.7075,-0.70751 2.1212,-2.12124 c 0.39,-0.39 0.39,-1.02377 0,-1.41376 l -1.4137,-1.41376 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -2.1212,2.12127 -2.8288,-2.82875 5.6563,-5.65627 3.5362,3.535 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4138,-1.41373 c 0.3899,-0.39003 0.3899,-1.02377 0,-1.41376 z m -19.7987,-14.14252 5.6562,5.65627 -5.6562,5.6575 -5.6563,-5.65627 z m -14.1426,14.14252 5.6563,-5.6575 5.6575,5.6575 -5.6575,5.6575 z m 14.1426,14.14249 -5.6576,-5.65751 5.6576,-5.6575 5.6574,5.6575 z m 8.485,-8.48626 -5.6563,-5.65623 5.6575,-5.65627 5.6562,5.65627 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5739-2"
|
||||
d="m 574.13075,223.73742 1.775,-20.60001 c -5.2625,-4.13751 -8.8,-9.62502 -8.8,-16.18747 0.013,-11.78751 11.025,-22.00002 19.0125,-22.00002 2.7625,0 5,2.16252 5,4.81249 v 54.37498 c 0,2.65001 -2.2375,4.81253 -5,4.81253 h -7 c -2.85,0 -5.225,-2.33754 -4.9875,-5.2125 z m -3.0125,-36.78748 c 0,6.37497 4.025,10.68746 8.975,14.31247 l -1.975,22.825 c -0.036,0.46249 0.425,0.8625 1,0.8625 h 7 c 0.5375,0 1,-0.37512 1,-0.81252 v -54.37498 c 0,-0.43748 -0.4625,-0.81248 -1,-0.81248 -5.575,0 -15,8.22497 -15,18.00001 z m -9.9125,-17.77502 c -0.4125,-2.43748 -2.65,-4.225 -5.7625,-4.225 -1.4875,0 -3.0125,0.42502 -4.1625,1.40001 -1.0499,-0.8875 -2.5,-1.40001 -4.1625,-1.40001 -1.6625,0 -3.1125,0.51251 -4.1625,1.40001 -1.15,-0.97499 -2.675,-1.40001 -4.1625,-1.40001 -3.15,0 -5.35,1.81252 -5.7625,4.225 -0.2251,1.17498 -1.9125,10.57501 -1.9125,14.5125 0,6.36247 3.3375,11.45002 8.875,13.83749 l -1.425,26.35001 c -0.15,2.74997 2.0375,5.075 4.8,5.075 h 7.5 c 2.75,0 4.95,-2.31253 4.8,-5.075 l -1.425,-26.35001 c 5.525,-2.38747 8.875,-7.47502 8.875,-13.83749 0,-3.93749 -1.6875,-13.33752 -1.9125,-14.5125 z m -11.05,25.775 1.525,29.13749 c 0.024,0.46249 -0.3373,0.8625 -0.8125,0.8625 h -7.5 c -0.4625,0 -0.8375,-0.38759 -0.8125,-0.8625 l 1.525,-29.13749 c -5.3,-1.1 -8.9624,-5.37502 -8.9624,-11.2625 0,-3.71249 1.8499,-13.82502 1.8499,-13.82502 0.1999,-1.23749 3.5375,-1.21249 3.6875,0.0241 v 15.31248 c 0.1126,1.43748 3.525,1.46249 3.6875,0.0241 l 0.925,-15.36249 c 0.1999,-1.21249 3.4875,-1.21249 3.6875,0 l 0.925,15.36249 c 0.1625,1.42502 3.575,1.40001 3.6875,-0.0241 v -15.30001 c 0.15,-1.2375 3.4875,-1.26247 3.6875,-0.0241 0,0 1.85,10.11252 1.85,13.82502 0.013,5.85 -3.625,10.14999 -8.95,11.24998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499996" />
|
||||
<path
|
||||
id="path5750-2"
|
||||
d="m 811.68965,180.94994 c 3.3138,0 6.0001,-2.68627 6.0001,-6.00002 0,-3.31374 -2.6863,-6.00001 -6.0001,-6.00001 -3.3137,0 -6,2.68627 -6,6.00001 0,3.31375 2.6863,6.00002 6,6.00002 z m 0,-8.00001 c 1.1025,0 2,0.89747 2,1.99999 0,1.10252 -0.8975,1.99999 -2,1.99999 -1.1025,0 -2,-0.89747 -2,-1.99999 0,-1.10252 0.8975,-1.99999 2,-1.99999 z m 22,14.99998 v -1.99999 c 0,-0.5525 -0.4475,-0.99999 -1,-0.99999 h -54 c -0.5524,0 -1,0.44749 -1,0.99999 v 1.99999 c 0,0.5525 0.4476,1 1,1 h 5.8413 c -4.2438,5.72252 -6.8413,12.70252 -6.8413,19.20001 0,4.885 1.4775,8.83126 4,11.94126 v 6.85875 c 0,1.105 0.8951,1.99999 2.0001,1.99999 1.105,0 2,-0.89499 2,-1.99999 v -3.16751 c 5.0824,3.50373 12.1599,5.1675 19.9999,5.1675 7.8388,0 14.9175,-1.66377 20,-5.16624 v 3.16625 c 0,1.105 0.8951,1.99999 2.0001,1.99999 1.105,0 2,-0.89499 2,-1.99999 v -6.85875 c 2.5224,-3.11 3.9999,-7.05626 3.9999,-11.94126 0,-6.49749 -2.5975,-13.47749 -6.8412,-19.20001 h 5.8412 c 0.5525,0 1,-0.4475 1,-1 z m -3.9999,20.20001 c 0,15.1625 -16.7838,16.80002 -24.0001,16.80002 -7.2162,0 -24,-1.63752 -24,-16.80002 0,-6.53124 3.0176,-13.75249 7.955,-19.20001 h 32.0888 c 4.9387,5.44752 7.9563,12.66877 7.9563,19.20001 z m -32.0001,-35.19999 c 2.2088,0 4,-1.79124 4,-4.00002 0,-2.20875 -1.7912,-3.99999 -4,-3.99999 -2.2087,0 -3.9999,1.79124 -3.9999,3.99999 0,2.20878 1.7912,4.00002 3.9999,4.00002 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500001" />
|
||||
<path
|
||||
id="path5761-9"
|
||||
d="m 453.61115,73.757113 0.84,-2.5214 v 0 l 6.0957,-18.28571 h -57.1427 a 11.428558,11.428558 0 0 0 -11.4286,11.42856 v 14.85712 a 1.1428558,1.1428558 0 0 0 1.1429,1.14287 h 2.2857 a 1.1428558,1.1428558 0 0 0 1.1428,-1.14287 v -14.85712 a 6.8571343,6.8571343 0 0 1 6.8572,-6.85711 h 3.8099 l 4.5714,13.71426 v 0 l 0.8643,2.59426 c -7.0442,5.67715 -11.5314,14.21856 -11.5314,23.77999 0,7.352827 2.6601,12.109977 7.0914,16.815687 a 8.1685614,8.1685614 0 0 0 5.9329,2.52429 h 37.9528 a 8.1542755,8.1542755 0 0 0 5.9214,-2.51429 c 4.4286,-4.70714 7.0986,-9.46286 7.1015,-16.817117 0,-9.47286 -4.3758,-18.12141 -11.5072,-23.86142 z m -41.5785,-16.23566 h 42.1714 l -4.5714,13.71426 h -33.0286 z m 5.45,18.28568 h 31.3857 c 3,2.41714 7.8114,6.01142 10.3571,13.71426 h -52.1942 c 2.5871,-7.71427 7.5457,-11.37283 10.4514,-13.71426 z m 37.2071,35.492797 a 3.5599955,3.5599955 0 0 1 -2.5943,1.07858 h -37.9528 a 3.5714241,3.5714241 0 0 1 -2.6043,-1.08858 c -4.2628,-4.52428 -5.8485,-8.23283 -5.8485,-13.679967 a 25.471396,25.471396 0 0 1 0.2712,-3.51716 h 54.3185 a 25.781397,25.781397 0 0 1 0.2672,3.5243 c 0,5.445697 -1.5886,9.154267 -5.8572,13.682827 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.14285697" />
|
||||
<path
|
||||
id="path5772-4"
|
||||
d="m 302.99025,93.949125 c -1.6562,0 -2.9999,1.34246 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65749 -1.3438,-2.99995 -3,-2.99995 z m -20.9996,-16.99966 c 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99992 3,2.99992 1.6562,0 2.9999,-1.34371 2.9999,-2.99992 z m 1,16.99966 c -1.6562,0 -2.9999,1.34246 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65749 -1.3438,-2.99995 -3,-2.99995 z m 11.9998,-11.99978 c -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99995 3,2.99995 1.6562,0 2.9999,-1.34374 2.9999,-2.99995 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 z m 27.8145,2.97744 c -8.7461,-0.10616 -15.8085,-7.21111 -15.8085,-15.98218 -8.7711,0 -15.8747,-7.0611 -15.9822,-15.80595 -0.8275,-0.1262 -1.6612,-0.18865 -2.4912,-0.18865 -2.5849,0 -5.1474,0.60625 -7.4736,1.79122 l -8.64114,4.40243 a 16.527304,16.527304 0 0 0 -7.2236,7.22609 l -4.3874,8.60983 a 16.580302,16.580302 0 0 0 -1.6025,10.11857 l 1.51,9.53483 a 16.569053,16.569053 0 0 0 4.6449,9.119795 l 6.8461,6.84487 a 16.50418,16.50418 0 0 0 9.08864,4.63242 l 9.5886,1.51748 c 0.8574,0.13639 1.7199,0.20246 2.5799,0.20246 2.59,0 5.1562,-0.61001 7.4861,-1.79748 l 8.6411,-4.40241 a 16.527304,16.527304 0 0 0 7.2236,-7.22609 l 4.3874,-8.609845 c 1.57,-3.0787 2.1262,-6.57112 1.6138,-9.98733 z m -5.1774,8.16985 -4.3875,8.611085 c -1.2099,2.37496 -3.1037,4.26866 -5.4761,5.47739 l -8.6411,4.40244 c -1.7475,0.88995 -3.7087,1.36117 -5.6699,1.36117 -0.6512,0 -1.3087,-0.0512 -1.9537,-0.1538 l -9.5873,-1.51745 c -2.625,-0.41624 -5.0062,-1.62997 -6.8861,-3.50993 l -6.84614,-6.84487 c -1.8875,-1.886215 -3.105,-4.278665 -3.5225,-6.916135 l -1.5099,-9.53354 c -0.4188,-2.63997 0,-5.29489 1.2149,-7.6761 l 4.3874,-8.60983 c 1.21,-2.37496 3.1037,-4.26866 5.47624,-5.47739 l 8.6398,-4.40368 c 1.4162,-0.72123 2.975,-1.16624 4.5637,-1.30747 1.6437,7.89361 7.9798,14.11846 15.9059,15.60721 1.4887,7.92733 7.7136,14.26346 15.6085,15.90592 -0.1374,1.59123 -0.58,3.14243 -1.3162,4.58491 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499759" />
|
||||
<path
|
||||
id="path5794-0"
|
||||
d="m 950.43795,52.950005 c -16.558,0 -31.0067,10.95333 -39.0523,20.33331 l -16.0613,-14.27832 c -2.2371,-1.84166 -5.5619,0.11165 -4.999,2.92669 l 4.4492,23.01832 -4.4508,23.020035 c -0.5613,2.81333 2.7602,4.76663 4.9922,2.93167 l 16.0615,-14.275035 c 8.0521,9.370005 22.5091,20.323325 39.0605,20.323325 25.2909,0 45.7931,-25.600005 45.7931,-31.999995 0,-6.39999 -20.5022,-32 -45.7931,-32 z m 0,58.666695 c -14.1407,0 -27.3755,-9.54502 -35.0452,-18.478335 l -3.3695,-3.92501 c -5.1646,4.24667 -2.0268,1.47999 -15.2467,13.601665 3.6029,-18.981675 3.1079,-16.395005 3.4059,-17.865015 -0.298,-1.46835 0.1985,1.12166 -3.4043,-17.86501 13.2464,12.14167 10.1004,9.36833 15.2467,13.60336 l 3.3695,-3.92503 c 7.6699,-8.93333 20.8964,-18.48001 35.0436,-18.48001 21.226,0 39.0904,21.08168 40.46,26.66669 -1.3696,5.58501 -19.234,26.666695 -40.46,26.666695 z m -3.6063,-41.725025 -1.8728,-1.885 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -14.0214,14.11 a 1.3246526,1.333334 0 0 0 0,1.88499 l 1.8728,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 14.0231,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 18.5451,2.66667 -1.8727,-1.88499 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -24.6188,24.77666 a 1.3246526,1.333334 0 0 0 0,1.885 l 1.8729,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 24.6203,-24.77001 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 6.0752,11.44835 a 1.3246526,1.333334 0 0 0 -1.8745,0 l -14.0214,14.11 a 1.3246526,1.333334 0 0 0 0,1.884995 l 1.8726,1.88499 a 1.3246526,1.333334 0 0 0 1.873,0 l 14.0228,-14.103335 a 1.3246526,1.333334 0 0 0 0,-1.88666 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16612327" />
|
||||
<path
|
||||
id="path5805-7"
|
||||
d="m 689.11825,94.950015 c -1.1,0 -2,0.9 -2,1.99998 0,1.1 0.9,1.99999 2,1.99999 1.0999,0 2,-0.89999 2,-1.99999 0,-1.09998 -0.9001,-1.99998 -2,-1.99998 z m -4.0001,-31.00001 c -1.0999,0 -1.9999,0.9 -1.9999,2.00002 0,1.1 0.9,1.99999 1.9999,1.99999 1.1001,0 2.0001,-0.89999 2.0001,-1.99999 0,-1.10002 -0.9,-2.00002 -2.0001,-2.00002 z m 4.0001,23.00001 c -1.1,0 -2,0.9 -2,1.99999 0,1.1 0.9,1.99998 2,1.99998 1.0999,0 2,-0.89998 2,-1.99998 0,-1.09999 -0.9001,-1.99999 -2,-1.99999 z m 0,-7.99999 c -1.1,0 -2,0.9 -2,1.99998 0,1.1 0.9,2.00003 2,2.00003 1.0999,0 2,-0.90003 2,-2.00003 0,-1.09998 -0.9001,-1.99998 -2,-1.99998 z m 4,-15.00002 c -1.1,0 -2,0.9 -2,2.00002 0,1.1 0.9,1.99999 2,1.99999 1.1,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.9,-2.00002 -2,-2.00002 z m 24,19.00003 c 0,-5.51253 -4.4875,-10.00002 -10,-10.00002 h -4.95 c 1.2874,-2.88749 1.575,-6.17501 0.725,-9.44999 -1.2375,-4.84999 -5.175,-8.79998 -10,-10.06251 -1.25,-0.32487 -2.5125,-0.48751 -3.775,-0.48751 -3.8125,0 -7.3875,1.48752 -10.075,4.17501 -2.6875,2.6875 -4.175,6.26249 -4.175,10.07501 0,1.99999 0.425,3.96249 1.225,5.74999 h -4.9751 c -5.5124,0 -9.9999,4.48749 -9.9999,10.00002 0,5.51246 4.4875,9.99998 9.9999,9.99998 h 3.4877 l -7.2501,7.700005 c -3.475,4.27498 -2.825,10.5875 1.4499,14.06247 1.7876,1.4375 4.0252,2.23751 6.3126,2.23751 3.025,0 5.8625,-1.35001 7.7626,-3.7 l 6.2374,-6.44997 6.2375,6.44997 c 1.9,2.34999 4.7375,3.7 7.7625,3.7 2.2875,0 4.5249,-0.80001 6.2999,-2.23751 4.2751,-3.47497 4.925,-9.78749 1.4501,-14.06247 l -7.25,-7.700005 h 3.5 c 5.5125,0 10,-4.48752 10,-9.99998 z m -17.925,10.88749 8.575,9.324985 c 2.0875,2.57501 1.7,6.35 -0.875,8.43751 -1.1126,0.89999 -2.45,1.34997 -3.775,1.34997 -1.75,0 -3.475,-0.76249 -4.6625,-2.21247 l -6.2375,-6.45 c -0.8,-0.98751 -1.95,-1.47501 -3.1,-1.47501 -1.15,0 -2.2999,0.4875 -3.1,1.47501 l -6.2375,6.45 c -1.1875,1.46249 -2.9124,2.21247 -4.6625,2.21247 -1.325,0 -2.6625,-0.43747 -3.775,-1.34997 -2.575,-2.08751 -2.9625,-5.8625 -0.875,-8.43751 l 8.575,-9.324985 c 1.5875,-1.9625 0.1999,-4.88752 -2.325,-4.88752 h -5.6001 c -3.3125,0 -5.9999,-2.68749 -5.9999,-5.99997 0,-3.31251 2.6874,-6.00001 5.9999,-6.00001 h 10.2001 c 1.1625,0 1.775,-1.4375 0.9125,-2.21252 -2.0626,-1.86248 -3.3625,-4.53748 -3.3625,-7.53748 0,-5.6625 4.5875,-10.25001 10.25,-10.25001 0.9,0 1.825,0.11255 2.7625,0.3625 3.45,0.9 6.2625,3.725 7.1375,7.18748 1.0374,4.06251 -0.3375,7.83754 -3,10.23751 -0.8625,0.78752 -0.2748,2.22502 0.9,2.22502 h 10.2 c 3.3124,0 6,2.6875 6,5.99997 0,3.31251 -2.6876,6 -6,6 h -5.5876 c -2.5249,-0.0134 -3.9249,2.91253 -2.3374,4.87503 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499995" />
|
||||
<path
|
||||
id="path5627-3-2"
|
||||
d="m 274.99045,400.94979 c -2.2188,0 -4.00004,-1.78128 -4.00004,-4 0,-3.87501 4.00004,-2.87501 4.00004,-8.00002 1.5,0 4,3.68752 4,7 0,3.31251 -1.7813,5.00002 -4,5.00002 z m 16,0 c -2.2187,0 -4,-1.78128 -4,-4 0,-3.87501 4,-2.87501 4,-8.00002 1.5,0 4,3.68752 4,7 0,3.31251 -1.7813,5.00002 -4,5.00002 z m 16,0 c -2.2188,0 -4,-1.78128 -4,-4 0,-3.87501 4,-2.87501 4,-8.00002 1.5,0 4,3.68752 4,7 0,3.31251 -1.7812,5.00002 -4,5.00002 z m 6,20.00001 h -4 v -18.00003 h -4 v 18.00003 h -12 v -18.00003 h -4 v 18.00003 h -12 v -18.00003 h -4 v 18.00003 h -4.00004 c -3.3125,0 -6,2.68748 -6,5.99998 v 26 h 56.00004 v -26 c 0,-3.3125 -2.6875,-5.99998 -6,-5.99998 z m 2,27.99998 h -48.00004 v -9.00536 c 2.0277,-1.18488 2.991,-2.99463 5.3437,-2.99463 3.49394,0 3.90674,4 9.34384,4 5.3554,0 5.9021,-4 9.3125,-4 3.5185,0 3.9001,4 9.3437,4 5.4197,0 5.8459,-4 9.3438,-4 2.311,0 3.2806,1.80938 5.3125,2.99437 z m 0,-14.04675 c -1.2032,-0.98425 -2.6521,-1.95324 -5.3125,-1.95324 -5.4288,0 -5.8531,4 -9.3438,4 -3.4618,0 -3.9317,-4 -9.3437,-4 -5.3553,0 -5.9022,4 -9.3125,4 -3.5185,0 -3.9003,-4 -9.34384,-4 -2.6828,0 -4.1376,0.97177 -5.3437,1.95723 v -7.95724 c 0,-1.10273 0.8972,-1.99998 2,-1.99998 h 44.00004 c 1.1028,0 2,0.89725 2,1.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5640-5-1"
|
||||
d="m 432.54695,438.94978 c -1.6576,0 -3,1.34249 -3,3 0,1.65624 1.3424,3.00001 3,3.00001 1.6575,0 3,-1.34377 3,-3.00001 0,-1.65751 -1.3425,-3 -3,-3 z m 16.7812,-6.99625 11.2188,-43.00376 h -58 c -3.3088,0 -6,2.69126 -6,6.00006 v 19.99996 c 0,3.30875 2.6912,5.99999 6,5.99999 h 12.7825 l 0.9412,10.82 c -4.5087,1.72752 -7.7237,6.06375 -7.7237,11.17999 v 6.00001 c 0,2.20872 1.7912,4 4,4 h 40 c 2.2087,0 3.9999,-1.79128 3.9999,-4 v -6.00001 c 0,-4.92498 -2.9737,-9.14752 -7.2187,-10.99624 z m -46.7812,-15.00375 c -1.1013,0 -2,-0.89625 -2,-1.99999 v -19.99996 c 0,-1.10376 0.8987,-2.00001 2,-2.00001 h 10.3475 l 2.0875,23.99996 z m 52.8224,-23.99996 -2.0874,7.99997 h -19.735 c -0.5526,0 -1,0.44749 -1,1.00002 v 1.99998 c 0,0.55253 0.4474,1 1,1 h 18.6924 l -2.0874,7.99999 h -16.605 c -0.5526,0 -1,0.44752 -1,0.99999 v 2.00002 c 0,0.55252 0.4474,0.99999 1,0.99999 h 15.5612 l -3.6525,14 h -25.2412 l -3.305,-37.99996 z m -2.8224,55.99996 h -40 v -6.00001 c 0,-4.41124 3.5887,-7.99999 8,-7.99999 h 23.9999 c 4.4113,0 8.0001,3.58875 8.0001,7.99999 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249999" />
|
||||
<path
|
||||
id="path5651-5-5"
|
||||
d="m 702.89505,408.94978 h -17.5341 c -0.6888,0 -1.2524,-0.67498 -1.2524,-1.5 v -0.99999 c 0,-0.825 0.5636,-1.5 1.2524,-1.5 h 17.5341 c 0.6889,0 1.2525,0.675 1.2525,1.5 v 0.99999 c 0,0.82502 -0.5636,1.5 -1.2525,1.5 z m 1.2525,6.5 v -1 c 0,-0.82502 -0.5636,-1.49997 -1.2525,-1.49997 h -17.5341 c -0.6888,0 -1.2524,0.67495 -1.2524,1.49997 v 1 c 0,0.82499 0.5636,1.5 1.2524,1.5 h 17.5341 c 0.6889,0 1.2525,-0.67501 1.2525,-1.5 z m 6.7527,33.49998 h 0.3444 c 0.6889,0 1.2525,0.675 1.2525,1.5 v 0.99999 c 0,0.82503 -0.5636,1.50003 -1.2525,1.50003 h -37.1557 c -4.6132,0 -8.3496,-4.475 -8.3496,-10.00001 V 398.9498 c 0,-5.52503 3.7364,-10.00003 8.3496,-10.00003 h 35.9033 c 1.3881,0 2.5049,1.33752 2.5049,3.00003 v 45.99998 c 0,1.25 -0.6471,2.32498 -1.5552,2.77498 -0.3757,2.01253 -0.4592,5.7 -0.042,8.225 z m -31.8015,-11.99997 h 30.0585 v -44 h -30.0585 z m -10.0195,1.99996 c 1.3985,-1.24997 3.1311,-1.99996 5.0097,-1.99996 h 1.6699 v -44 h -1.6699 c -2.7658,0 -5.0097,2.68751 -5.0097,6.00001 z m 38.8569,10.00001 c -0.3237,-2.55 -0.3027,-5.64997 0,-8 h -33.8472 c -6.6797,0 -6.6797,8 0,8 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.11422013" />
|
||||
<path
|
||||
id="path5662-5-0"
|
||||
d="m 963.24615,392.94974 a 11.896253,11.896253 0 0 0 -7.2163,2.46753 c -2.9175,-3.90501 -7.5338,-6.4675 -12.7838,-6.4675 -5.25,0 -9.8662,2.56249 -12.7837,6.4675 a 11.945003,11.945003 0 0 0 -19.2163,9.53249 c 0,5.2175 8.0001,28.00003 8.0001,28.00003 v 16.00002 a 4.0000013,4.0000013 0 0 0 4,3.99997 h 40 a 4.0000013,4.0000013 0 0 0 4,-3.99997 v -16.00002 c 0,0 8,-22.78253 8,-28.00003 a 12.000003,12.000003 0 0 0 -12,-12.00002 z m -38.0001,54.00006 v -10.00001 h 36.0001 v 10.00001 z m 36.3426,-16.00002 h -3.6938 l 1.3513,-16.84377 a 1.0000003,1.0000003 0 0 0 -0.9162,-1.07622 l -2,-0.16007 h -0.081 a 1.0000003,1.0000003 0 0 0 -1,0.92122 l -1.375,17.16252 h -8.7101 v -17.00374 a 1.0000003,1.0000003 0 0 0 -1,-0.99999 h -2 a 1.0000003,1.0000003 0 0 0 -1.0001,0.99999 v 16.99998 h -8.5523 l -1.3751,-17.16246 a 1.0000003,1.0000003 0 0 0 -1.0001,-0.92128 h -0.081 l -1.9999,0.16007 a 1.0000003,1.0000003 0 0 0 -0.9163,1.07625 l 1.3588,16.8475 h -3.6938 c -3.6574,-10.40249 -7.5999,-23.33252 -7.6574,-26.00002 a 5.9462517,5.9462517 0 0 1 9.59,-4.74999 l 4.815,3.6525 3.6174,-4.84124 c 1.9275,-2.58125 4.835,-4.06125 7.9775,-4.06125 3.1425,0 6.05,1.48 7.9775,4.05876 l 3.6176,4.84124 4.815,-3.65001 a 5.9462517,5.9462517 0 0 1 9.59,4.74001 c -0.058,2.67748 -4,15.60751 -7.6575,26.01 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500003" />
|
||||
<path
|
||||
id="path5673-3-8"
|
||||
d="m 585.73235,301.64985 c -1.6875,-1.42499 -3.825,-2.2 -6.025,-2.2 -2.7375,0 -5.3125,1.18748 -7.1125,3.26249 l -2.55,-11.12502 c -1.9625,-8.62499 -9.45,-14.63748 -18.2,-14.63748 -1.4125,0 -2.8375,0.16241 -4.225,0.4875 -10.05,2.33751 -16.3375,12.50002 -14.025,22.63751 l 5.575,24.375 c 0.05,0.23743 0.1375,0.46249 0.2,0.70001 -1.175,0.38748 -2.25,1.47497 -2.25,2.79998 v 10 c 0,1.66251 1.3375,3.00001 2.975,3.00001 h 37.8875 c 1.6375,0 3.15,-1.3375 3.15,-3.00001 v -10 c 0,-1.425 -1.175,-2.55001 -2.4875,-2.86248 l 8.3,-10.05003 c 3.325,-4.02499 2.775,-10.02498 -1.2125,-13.38748 z m -8.6125,35.3 h -36 v -8.00002 h 36 z m 6.775,-24.475 -10.3125,12.47501 h -30.1 c -0.15,-0.46252 -0.3375,-0.92501 -0.45,-1.41253 l -5.575,-24.37499 c -1.825,-7.98748 3.125,-15.98751 11.05,-17.83751 1.1,-0.25012 2.2125,-0.38748 3.325,-0.38748 6.9,0 12.8,4.7375 14.35,11.53751 l 3.4375,15.04998 0.9,3.92501 2.5625,-3.1 2.425,-2.9375 c 1.0375,-1.26252 2.5625,-1.97499 4.1875,-1.97499 1.275,0 2.5,0.44998 3.4875,1.27498 2.325,1.94998 2.6375,5.42501 0.7125,7.76251 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5684-1-6"
|
||||
d="m 592.11825,412.94978 h -14.1712 l 13.3413,-13.34122 c 3.0137,-3.01376 2.1887,-8.09379 -1.6226,-10.00003 a 6.2446252,6.2446252 0 0 0 -2.7912,-0.65876 c -1.3275,0 -2.645,0.42251 -3.7475,1.24875 l -30.335,22.75126 h -22.6738 c -0.5525,0 -1,0.44749 -1,1.00002 v 2.00001 c 0,0.55248 0.4475,0.99997 1,0.99997 h 3 v 4.00002 c 0,10.17749 6.345,18.85376 15.2863,22.34375 -1.595,2.09748 -2.7125,4.57874 -3.1151,7.30498 -0.1812,1.22878 0.7476,2.35125 1.9901,2.35125 h 27.6775 c 1.2425,0 2.1712,-1.12125 1.99,-2.35125 -0.4013,-2.72624 -1.5188,-5.20874 -3.115,-7.30498 8.9412,-3.48999 15.2862,-12.16626 15.2862,-22.34375 v -4.00002 h 3 c 0.5525,0 1,-0.44749 1,-0.99997 v -2.00001 c 0,-0.55253 -0.4475,-1.00002 -1,-1.00002 z m -6.5925,-19.55125 c 2.1975,-1.64751 4.9013,1.41375 2.9338,3.38127 l -16.1688,16.16998 h -12.8325 z m -0.4075,27.55127 c 0,8.28874 -5.0012,15.59624 -12.74,18.61749 l -4.9387,1.92749 3.21,4.22 c 0.76,1.00001 1.3587,2.09375 1.7737,3.235 h -22.6087 c 0.415,-1.14125 1.0125,-2.23499 1.7737,-3.235 l 3.21,-4.22 -4.9387,-1.92749 c -7.74,-3.02125 -12.7413,-10.32875 -12.7413,-18.61749 v -4.00002 h 48 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5695-7-5"
|
||||
d="m 178.00531,276.94983 h -40 a 8.0000001,8.0000001 0 0 0 -8,7.99999 v 52.00003 a 4.0000002,4.0000002 0 0 0 4,4 h 48 a 4.0000002,4.0000002 0 0 0 4,-4 v -52.00003 a 8.0000001,8.0000001 0 0 0 -8,-7.99999 z m 4,60.00002 h -48 v -40.00001 h 48 z m 0,-44 h -48 v -8.00003 a 4.0000002,4.0000002 0 0 1 4,-3.99998 h 40 a 4.0000002,4.0000002 0 0 1 4,3.99998 z m -6,-8.00003 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -20,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m 0,48.00003 h 36 a 2.0000001,2.0000001 0 0 0 2,-2.00001 v -27.99999 a 2.0000001,2.0000001 0 0 0 -2,-2 h -36 a 2.0000001,2.0000001 0 0 0 -2,2 v 27.99999 a 2.0000001,2.0000001 0 0 0 2,2.00001 z m 2,-28 h 32 v 23.99998 h -32 z m 26,3.99999 h -20 a 2.0000055,2.0000055 0 0 0 0,4.00001 h 20 a 2.0000055,2.0000055 0 0 0 0,-4.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.125" />
|
||||
<path
|
||||
id="path5706-9-5"
|
||||
d="m 983.32765,304.32153 c -6.3184,-16.42668 -22.26,-27.37169 -40.0816,-27.37169 -17.8216,0 -33.765,10.94501 -40.0783,27.37169 -7.0884,0.27334 -7.9217,6.23499 -7.9217,7.65166 a 7.6816659,7.6816659 0 0 0 7.7032,7.64333 c 0.4535,0 0.7951,-0.0999 1.2201,-0.12668 l 5.41,16.22001 a 7.6666659,7.6666659 0 0 0 7.2717,5.24 h 52.79 a 7.6666659,7.6666659 0 0 0 7.2716,-5.24164 l 5.405,-16.21837 c 0.4234,0.0284 0.7667,0.12668 1.22,0.12668 a 7.6816659,7.6816659 0 0 0 7.7083,-7.64333 c 0,-1.46168 -0.8583,-7.35667 -7.9183,-7.65166 z m -11.4733,29.69666 a 2.3333332,2.3333332 0 0 1 -2.2133,1.59832 h -52.7917 a 2.3333332,2.3333332 0 0 1 -2.2134,-1.59666 l -5.2099,-15.63166 a 21.178333,21.178333 0 0 0 4.8665,-2.78166 c 1.5152,-1.12332 2.1001,-1.57168 4.2351,0.0108 2.0201,1.5 5.4117,4.00001 11.3233,4.00001 5.9118,0 9.3067,-2.51001 11.3334,-4.01334 1.5117,-1.11834 2.085,-1.56667 4.2017,0.008 2.025,1.5 5.41,4 11.3216,4 5.9117,0 9.3017,-2.51001 11.3233,-4.01001 1.8134,-1.34498 2.3534,-1.36667 4.1867,0 a 21.151665,21.151665 0 0 0 4.8466,2.78169 l -5.2099,15.63333 z m 11.6867,-19.73502 c -4.1568,0 -6.365,-1.63998 -8.1517,-2.96832 -4.9517,-3.66666 -8.3434,-1.615 -10.5367,0.0108 -1.7733,1.31832 -3.9833,2.95833 -8.145,2.95833 -4.1616,0 -6.3699,-1.64001 -8.1566,-2.9617 -5.3033,-3.94664 -8.9167,-1.2083 -10.55,0 -1.7766,1.32169 -3.9851,2.9617 -8.1518,2.9617 -4.1666,0 -6.375,-1.64001 -8.1666,-2.9617 -1.1299,-0.8333 -4.9517,-4.16664 -10.5783,0 -1.7801,1.31668 -4,2.9567 -8.1666,2.9567 a 2.31167,2.31167 0 1 1 0,-4.62334 c 0.8982,0 1.8466,0.0801 4.4583,-1.36166 8.8882,-25.65333 33.1366,-26.01 35.85,-26.01 2.6667,0 26.9534,0.33333 35.8333,25.99997 2.6249,1.48501 3.4283,1.38502 4.4633,1.38502 a 2.3116666,2.3116666 0 1 1 0,4.62332 z m -55.1017,-23.71832 a 2.6783329,2.6783329 0 0 0 -3.5783,1.19333 l -2.6668,5.33334 a 2.6666664,2.6666664 0 0 0 1.1934,3.57832 c 1.5901,0.78336 3.0601,-0.16676 3.5782,-1.19331 l 2.6668,-5.33333 a 2.6666664,2.6666664 0 0 0 -1.1933,-3.57835 z m 33.19,1.19168 a 2.6672561,2.6672561 0 1 0 -4.7716,2.38499 l 2.6666,5.33333 c 0.5167,1.02834 1.9884,1.97668 3.5783,1.19334 a 2.6666664,2.6666664 0 0 0 1.1933,-3.57835 z m -18.3833,-1.47333 a 2.6666664,2.6666664 0 0 0 -2.6667,2.66667 v 5.3333 a 2.6667,2.6667 0 1 0 5.3334,0 v -5.3333 a 2.6666664,2.6666664 0 0 0 -2.6667,-2.66667 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16666667" />
|
||||
<path
|
||||
id="path5717-1-3"
|
||||
d="m 165.94271,407.93759 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 1.9999 a 0.99249264,0.99249264 0 0 0 1.0001,-1.02497 c -0.2627,-5.26248 -2.4125,-9.16246 -5.1999,-11.93744 -2.3001,-2.33746 -2.6376,-4.77496 -2.7376,-6.11246 a 0.98374271,0.98374271 0 0 0 -1,-0.88749 l -2,0.0119 a 0.99999255,0.99999255 0 0 0 -0.9874,1.08749 13.182401,13.182401 0 0 0 3.9,8.71244 c 2.1624,2.14997 3.7999,5.08743 4.0249,9.1749 z m -13.9374,0 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 2 a 0.99249264,0.99249264 0 0 0 1,-1.02497 c -0.2625,-5.26248 -2.4125,-9.16246 -5.2,-11.93744 -2.2875,-2.33746 -2.6249,-4.77496 -2.7249,-6.11246 a 0.98749265,0.98749265 0 0 0 -1.0125,-0.88749 l -2,0.0119 a 0.99999255,0.99999255 0 0 0 -0.9875,1.08749 c 0.125,1.86245 0.65,5.44994 3.9,8.71244 2.1612,2.14997 3.7987,5.08743 4.0249,9.1749 z m 33.9998,5.01246 h -55.9996 a 3.99997,3.99997 0 0 0 -4,3.99997 c 0,11.8374 6.4449,22.14485 15.9999,27.68105 v 4.31874 a 3.99997,3.99997 0 0 0 3.9999,3.99997 h 23.9998 a 3.99997,3.99997 0 0 0 4.0001,-3.99997 v -4.31874 c 9.5548,-5.5362 15.9998,-15.84365 15.9998,-27.68105 a 3.99997,3.99997 0 0 0 -3.9999,-3.99997 z m -16,29.3748 v 6.62496 h -23.9998 v -6.62496 c -16.5423,-9.58368 -15.9998,-23.22234 -15.9998,-25.37483 h 55.9996 c 0,2.18249 0.4212,15.86113 -16,25.37483 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499909" />
|
||||
<path
|
||||
id="path5728-1-8"
|
||||
d="m 428.54695,276.94984 c -17.6725,0 -32,14.32752 -32,32.00002 0,17.67248 14.3275,31.99999 32,31.99999 17.6725,0 32,-14.32751 32,-31.99999 0,-17.6725 -14.3275,-32.00002 -32,-32.00002 z m 0,60.00001 c -15.4388,0 -28,-12.56125 -28,-27.99999 0,-15.43877 12.5612,-28.00002 28,-28.00002 15.4387,0 28,12.56125 28,28.00002 0,15.43874 -12.5613,27.99999 -28,27.99999 z m 19.7987,-27.99999 3.535,-3.53503 c 0.39,-0.39 0.39,-1.02374 0,-1.41373 l -1.4137,-1.41376 c -0.39,-0.38999 -1.0238,-0.38999 -1.4138,0 l -3.535,3.535 -5.6575,-5.65624 2.8288,-2.82875 2.1212,2.12124 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4137,-1.41373 c 0.39,-0.39002 0.39,-1.02376 0,-1.41376 l -2.1212,-2.12127 0.7075,-0.70748 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4138,-1.41376 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -0.7075,0.70752 -2.1213,-2.12124 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -1.4137,1.41372 c -0.3901,0.39 -0.3901,1.02377 0,1.41376 l 2.1211,2.12124 -2.8287,2.82875 -5.6575,-5.65623 3.5363,-3.535 c 0.39,-0.39 0.39,-1.02373 0,-1.41376 l -1.415,-1.41875 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -3.5362,3.53626 -3.5363,-3.53626 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -1.4138,1.41376 c -0.39,0.38999 -0.39,1.02373 0,1.41376 l 3.5363,3.535 -5.6563,5.65623 -2.8287,-2.82875 2.1212,-2.12124 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4137,-1.41375 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -2.1212,2.12127 -0.7076,-0.70752 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -1.4137,1.41376 c -0.39,0.39 -0.39,1.02374 0,1.41376 l 0.7075,0.70748 -2.1213,2.12124 c -0.39,0.39003 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.1213,-2.12127 2.8287,2.82878 -5.6562,5.65624 -3.5363,-3.535 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -1.4175,1.41749 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 3.5362,3.53626 -3.5362,3.53623 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 1.4137,1.41376 c 0.39,0.38999 1.0238,0.38999 1.4137,0 l 3.5363,-3.535 5.6563,5.65623 -2.8288,2.82874 -2.1212,-2.12121 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4137,1.41372 c -0.39,0.38999 -0.39,1.02375 0,1.41375 l 2.1212,2.12124 -0.7075,0.70752 c -0.39,0.39 -0.39,1.02375 0,1.41375 l 1.4138,1.41372 c 0.39,0.39005 1.0237,0.39005 1.4137,0 l 0.7075,-0.70747 2.1212,2.12125 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4138,-1.41378 c 0.39,-0.38999 0.39,-1.02372 0,-1.41372 l -2.1213,-2.12127 2.8287,-2.82871 5.6576,5.6575 -3.5363,3.53621 c -0.39,0.39 -0.39,1.02378 0,1.41378 l 1.4138,1.41372 c 0.39,0.39002 1.0237,0.39002 1.4137,0 l 3.5388,-3.53499 3.5362,3.53626 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4137,-1.41378 c 0.39,-0.38999 0.39,-1.02372 0,-1.41372 l -3.5362,-3.53626 5.6575,-5.65751 2.8287,2.82877 -2.1212,2.12122 c -0.39,0.39002 -0.39,1.02378 0,1.41377 l 1.4137,1.41375 c 0.39,0.39002 1.0238,0.39002 1.4138,0 l 2.1212,-2.12122 0.7075,0.70747 c 0.39,0.39 1.0237,0.39 1.4137,0 l 1.4138,-1.41377 c 0.39,-0.38997 0.39,-1.02373 0,-1.4137 l -0.7075,-0.70752 2.1213,-2.12124 c 0.39,-0.39 0.39,-1.02378 0,-1.41375 l -1.4138,-1.41378 c -0.39,-0.38999 -1.0237,-0.38999 -1.4138,0 l -2.1212,2.12127 -2.8287,-2.82874 5.6562,-5.65627 3.5363,3.535 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 1.4138,-1.41373 c 0.39,-0.39003 0.39,-1.02377 0,-1.41376 z m -19.7987,-14.14252 5.6562,5.65627 -5.6562,5.6575 -5.6563,-5.65627 z m -14.1425,14.14252 5.6562,-5.6575 5.6575,5.6575 -5.6575,5.6575 z m 14.1425,14.14249 -5.6575,-5.65751 5.6575,-5.6575 5.6575,5.6575 z m 8.485,-8.48626 -5.6563,-5.65623 5.6575,-5.65627 5.6563,5.65627 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5739-8-9"
|
||||
d="m 818.70205,447.73728 1.7751,-20.60001 c -5.2626,-4.1375 -8.8,-9.62501 -8.8,-16.18747 0.013,-11.78751 11.0249,-22.00003 19.0124,-22.00003 2.7625,0 5,2.16252 5,4.81248 v 54.375 c 0,2.65001 -2.2375,4.81253 -5,4.81253 h -7 c -2.8499,0 -5.2249,-2.33754 -4.9875,-5.2125 z m -3.0125,-36.78748 c 0,6.37497 4.0251,10.68747 8.975,14.31247 l -1.9749,22.825 c -0.036,0.46249 0.4249,0.86251 0.9999,0.86251 h 7 c 0.5376,0 1,-0.37512 1,-0.81253 v -54.375 c 0,-0.43746 -0.4624,-0.81248 -1,-0.81248 -5.5749,0 -15,8.22499 -15,18.00003 z m -9.9125,-17.77503 c -0.4125,-2.43747 -2.6499,-4.225 -5.7625,-4.225 -1.4874,0 -3.0125,0.42503 -4.1625,1.40002 -1.0499,-0.88752 -2.5,-1.40002 -4.1625,-1.40002 -1.6625,0 -3.1125,0.5125 -4.1625,1.40002 -1.1499,-0.97499 -2.675,-1.40002 -4.1625,-1.40002 -3.15,0 -5.3499,1.81253 -5.7625,4.225 -0.2251,1.17499 -1.9124,10.57502 -1.9124,14.5125 0,6.36249 3.3374,11.45003 8.8749,13.8375 l -1.425,26.35001 c -0.1499,2.74997 2.0375,5.075 4.8,5.075 h 7.5 c 2.7501,0 4.95,-2.31254 4.8001,-5.075 l -1.4251,-26.35001 c 5.525,-2.38747 8.8751,-7.47501 8.8751,-13.8375 0,-3.93748 -1.6876,-13.33751 -1.9126,-14.5125 z m -11.05,25.77502 1.525,29.13748 c 0.024,0.46249 -0.3373,0.86251 -0.8125,0.86251 h -7.5 c -0.4625,0 -0.8374,-0.38761 -0.8125,-0.86251 l 1.525,-29.13748 c -5.3,-1.10001 -8.9624,-5.37504 -8.9624,-11.26252 0,-3.71247 1.8499,-13.82501 1.8499,-13.82501 0.1999,-1.23751 3.5375,-1.2125 3.6875,0.0241 v 15.3125 c 0.1127,1.43748 3.5251,1.46248 3.6876,0.0241 l 0.925,-15.3625 c 0.1998,-1.21248 3.4875,-1.21248 3.6874,0 l 0.9251,15.3625 c 0.1624,1.42502 3.575,1.40002 3.6875,-0.0241 v -15.30001 c 0.1499,-1.23751 3.4875,-1.26249 3.6874,-0.0241 0,0 1.85,10.11253 1.85,13.82504 0.013,5.84999 -3.625,10.14997 -8.95,11.24997 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499996" />
|
||||
<path
|
||||
id="path5750-4-7"
|
||||
d="m 52.005309,404.94981 c 3.3137,0 6,-2.68629 6,-6.00003 0,-3.31375 -2.6863,-6.00001 -6,-6.00001 -3.3138,0 -6,2.68626 -6,6.00001 0,3.31374 2.6862,6.00003 6,6.00003 z m 0,-8.00002 c 1.1025,0 2,0.89747 2,1.99999 0,1.10252 -0.8975,1.99998 -2,1.99998 -1.1025,0 -2,-0.89746 -2,-1.99998 0,-1.10252 0.8975,-1.99999 2,-1.99999 z m 22,14.99997 v -1.99998 c 0,-0.55251 -0.4475,-1 -1,-1 h -54 c -0.5525,0 -1,0.44749 -1,1 v 1.99998 c 0,0.5525 0.4475,1.00002 1,1.00002 h 5.8412 c -4.2437,5.72251 -6.8412,12.70251 -6.8412,19.19999 0,4.88501 1.4775,8.83127 4,11.94128 v 6.85874 c 0,1.10501 0.895,1.99999 2,1.99999 1.105,0 2,-0.89498 2,-1.99999 v -3.16751 c 5.0825,3.50372 12.16,5.1675 20,5.1675 7.8387,0 14.9175,-1.66378 20,-5.16623 v 3.16624 c 0,1.10501 0.895,1.99999 2,1.99999 1.105,0 2,-0.89498 2,-1.99999 v -6.85874 c 2.5225,-3.11001 4,-7.05627 4,-11.94128 0,-6.49748 -2.5975,-13.47748 -6.8413,-19.19999 h 5.8413 c 0.5525,0 1,-0.44752 1,-1.00002 z m -4,20.20001 c 0,15.16251 -16.7837,16.80004 -24,16.80004 -7.2163,0 -24,-1.63753 -24,-16.80004 0,-6.53124 3.0175,-13.75248 7.955,-19.19999 h 32.0887 c 4.9388,5.44751 7.9563,12.66875 7.9563,19.19999 z m -32,-35.19998 c 2.2087,0 4,-1.79123 4,-4.00002 0,-2.20877 -1.7913,-4 -4,-4 -2.2087,0 -4,1.79123 -4,4 0,2.20879 1.7913,4.00002 4,4.00002 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500001" />
|
||||
<path
|
||||
id="path5761-6-1"
|
||||
d="m 830.75385,297.75696 0.84,-2.5214 v 0 l 6.0957,-18.28571 h -57.1428 a 11.428558,11.428558 0 0 0 -11.4285,11.42856 v 14.85712 a 1.1428558,1.1428558 0 0 0 1.1428,1.14287 h 2.2858 a 1.1428558,1.1428558 0 0 0 1.1428,-1.14287 v -14.85712 a 6.8571343,6.8571343 0 0 1 6.8571,-6.85711 h 3.81 l 4.5714,13.71426 v 0 l 0.8643,2.59426 c -7.0442,5.67715 -11.5314,14.21856 -11.5314,23.78 0,7.35282 2.66,12.10998 7.0914,16.81567 a 8.1685614,8.1685614 0 0 0 5.9329,2.52429 h 37.9528 a 8.1542755,8.1542755 0 0 0 5.9214,-2.51429 c 4.4286,-4.70712 7.0986,-9.46284 7.1014,-16.8171 0,-9.47287 -4.3757,-18.12142 -11.5071,-23.86143 z m -41.5785,-16.23566 h 42.1714 l -4.5715,13.71426 h -33.0285 z m 5.45,18.28568 h 31.3857 c 3,2.41714 7.8114,6.01142 10.3571,13.71426 h -52.1942 c 2.5871,-7.71427 7.5457,-11.37283 10.4514,-13.71426 z m 37.2071,35.49281 a 3.5599955,3.5599955 0 0 1 -2.5943,1.07857 h -37.9528 a 3.5714241,3.5714241 0 0 1 -2.6043,-1.08858 c -4.2628,-4.52429 -5.8485,-8.23282 -5.8485,-13.67996 a 25.471396,25.471396 0 0 1 0.2712,-3.51716 h 54.3185 a 25.781397,25.781397 0 0 1 0.2671,3.52428 c 0,5.4457 -1.5885,9.15429 -5.8571,13.68285 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.14285697" />
|
||||
<path
|
||||
id="path5772-1-7"
|
||||
d="m 701.11805,317.94896 c -1.6562,0 -2.9999,1.34247 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65748 -1.3438,-2.99995 -3,-2.99995 z m -20.9996,-16.99966 c 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99992 3,2.99992 1.6562,0 2.9999,-1.34371 2.9999,-2.99992 z m 1,16.99966 c -1.6562,0 -2.9999,1.34247 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65748 -1.3438,-2.99995 -3,-2.99995 z m 11.9998,-11.99978 c -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99995 3,2.99995 1.6562,0 2.9999,-1.34374 2.9999,-2.99995 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 z m 27.8144,2.97744 c -8.7461,-0.10616 -15.8084,-7.21111 -15.8084,-15.98218 -8.7711,0 -15.8747,-7.0611 -15.9822,-15.80595 -0.8275,-0.1262 -1.6612,-0.18865 -2.4912,-0.18865 -2.585,0 -5.1474,0.60625 -7.4736,1.79122 l -8.6411,4.40243 a 16.527304,16.527304 0 0 0 -7.2236,7.22609 l -4.3874,8.60983 a 16.580302,16.580302 0 0 0 -1.6025,10.11857 l 1.51,9.53482 a 16.569053,16.569053 0 0 0 4.6449,9.11979 l 6.8461,6.84488 a 16.50418,16.50418 0 0 0 9.0886,4.63243 l 9.5885,1.51749 c 0.8575,0.13639 1.72,0.20246 2.58,0.20246 2.59,0 5.1562,-0.61003 7.4861,-1.7975 l 8.6411,-4.40241 a 16.527304,16.527304 0 0 0 7.2236,-7.22608 l 4.3874,-8.60986 c 1.57,-3.07869 2.1262,-6.57111 1.6137,-9.98732 z m -5.1773,8.16985 -4.3875,8.61107 c -1.2099,2.37496 -3.1037,4.26866 -5.4761,5.47741 l -8.6411,4.40243 c -1.7475,0.88995 -3.7087,1.36117 -5.6699,1.36117 -0.6512,0 -1.3087,-0.0512 -1.9537,-0.1538 l -9.5873,-1.51744 c -2.625,-0.41624 -5.0062,-1.62999 -6.8861,-3.50993 l -6.8462,-6.84488 c -1.8874,-1.88622 -3.1049,-4.27866 -3.5224,-6.91613 l -1.51,-9.53354 c -0.4187,-2.63997 0,-5.29489 1.215,-7.6761 l 4.3874,-8.60983 c 1.21,-2.37496 3.1037,-4.26866 5.4762,-5.47739 l 8.6398,-4.40368 c 1.4162,-0.72123 2.9749,-1.16624 4.5637,-1.30747 1.6437,7.89361 7.9798,14.11846 15.9059,15.60721 1.4887,7.92733 7.7136,14.26346 15.6085,15.90592 -0.1374,1.59123 -0.58,3.14243 -1.3162,4.58491 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249976" />
|
||||
<path
|
||||
id="path5794-5-6"
|
||||
d="m 298.18245,276.94983 c -16.5581,0 -31.00684,10.95333 -39.05244,20.33332 l -16.0613,-14.27833 c -2.2371,-1.84166 -5.5619,0.11165 -4.999,2.92669 l 4.4492,23.01833 -4.4508,23.02002 c -0.5613,2.81334 2.7602,4.76666 4.9922,2.93169 l 16.0615,-14.27504 c 8.0521,9.37001 22.50914,20.32334 39.06064,20.32334 25.291,0 45.7932,-25.60002 45.7932,-32.00001 0,-6.39999 -20.5022,-32.00001 -45.7932,-32.00001 z m 0,58.6667 c -14.1407,0 -27.37564,-9.54502 -35.04534,-18.47833 l -3.3695,-3.92501 c -5.1646,4.24667 -2.0268,1.47999 -15.2467,13.60166 3.6029,-18.98167 3.1079,-16.395 3.4059,-17.86501 -0.298,-1.46835 0.1985,1.12166 -3.4043,-17.86501 13.2464,12.14167 10.1004,9.36833 15.2467,13.60335 l 3.3695,-3.92502 c 7.6699,-8.93333 20.89654,-18.48002 35.04374,-18.48002 21.2261,0 39.0905,21.08169 40.46,26.6667 -1.3695,5.58501 -19.2339,26.66669 -40.46,26.66669 z m -3.6063,-41.72502 -1.8728,-1.885 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -14.0215,14.11 a 1.3246526,1.333334 0 0 0 0,1.88498 l 1.8728,1.885 a 1.3246526,1.333334 0 0 0 1.8727,0 l 14.0232,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 18.5451,2.66667 -1.8727,-1.88499 a 1.3246526,1.333334 0 0 0 -1.8743,0 l -24.6189,24.77667 a 1.3246526,1.333334 0 0 0 0,1.885 l 1.8729,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 24.6203,-24.77002 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 6.0753,11.44835 a 1.3246526,1.333334 0 0 0 -1.8745,0 l -14.0214,14.11001 a 1.3246526,1.333334 0 0 0 0,1.88497 l 1.8726,1.885 a 1.3246526,1.333334 0 0 0 1.8729,0 l 14.0229,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.88666 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16612327" />
|
||||
<path
|
||||
id="path5805-4-6"
|
||||
d="m 46.005409,318.94985 c -1.1001,0 -2.0001,0.9 -2.0001,1.99998 0,1.10001 0.9,1.99999 2.0001,1.99999 1.0999,0 1.9999,-0.89998 1.9999,-1.99999 0,-1.09998 -0.9,-1.99998 -1.9999,-1.99998 z m -4.0001,-31.00002 c -1.1,0 -1.9999,0.90001 -1.9999,2.00003 0,1.1 0.8999,1.99999 1.9999,1.99999 1.1001,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.8999,-2.00003 -2,-2.00003 z m 4.0001,23.00002 c -1.1001,0 -2.0001,0.9 -2.0001,1.99999 0,1.1 0.9,1.99998 2.0001,1.99998 1.0999,0 1.9999,-0.89998 1.9999,-1.99998 0,-1.09999 -0.9,-1.99999 -1.9999,-1.99999 z m 0,-7.99999 c -1.1001,0 -2.0001,0.9 -2.0001,1.99998 0,1.1 0.9,2.00003 2.0001,2.00003 1.0999,0 1.9999,-0.90003 1.9999,-2.00003 0,-1.09998 -0.9,-1.99998 -1.9999,-1.99998 z m 4,-15.00003 c -1.1001,0 -2.0001,0.90001 -2.0001,2.00003 0,1.1 0.9,1.99999 2.0001,1.99999 1.1,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.9,-2.00003 -2,-2.00003 z m 23.9999,19.00004 c 0,-5.51253 -4.4875,-10.00002 -9.9999,-10.00002 h -4.95 c 1.2874,-2.88749 1.5749,-6.17501 0.7249,-9.45 -1.2375,-4.84999 -5.175,-8.79998 -10,-10.06251 -1.2499,-0.32487 -2.5125,-0.48751 -3.7749,-0.48751 -3.8125,0 -7.3876,1.48752 -10.075,4.17501 -2.6876,2.6875 -4.175,6.26249 -4.175,10.07502 0,1.99999 0.4249,3.96249 1.225,5.74999 h -4.9751 c -5.5125,0 -10,4.48749 -10,10.00002 0,5.51246 4.4875,9.99998 10,9.99998 h 3.4876 l -7.25,7.7 c -3.475,4.27498 -2.8251,10.58751 1.4499,14.06247 1.7875,1.43751 4.0251,2.23753 6.3125,2.23753 3.025,0 5.8625,-1.35001 7.7626,-3.70002 l 6.2375,-6.44998 6.2375,6.44998 c 1.8999,2.35001 4.7374,3.70002 7.7624,3.70002 2.2876,0 4.525,-0.80002 6.3,-2.23753 4.2751,-3.47496 4.925,-9.78749 1.45,-14.06247 l -7.2499,-7.7 h 3.5 c 5.5124,0 9.9999,-4.48753 9.9999,-9.99998 z m -17.925,10.88748 8.575,9.32498 c 2.0875,2.575 1.7,6.35 -0.875,8.43751 -1.1125,0.90001 -2.45,1.34998 -3.775,1.34998 -1.7499,0 -3.475,-0.7625 -4.6624,-2.21247 l -6.2376,-6.45001 c -0.8,-0.98751 -1.95,-1.475 -3.0999,-1.475 -1.1501,0 -2.3,0.48749 -3.1001,1.475 l -6.2375,6.45001 c -1.1874,1.46248 -2.9124,2.21247 -4.6625,2.21247 -1.3249,0 -2.6624,-0.43746 -3.775,-1.34998 -2.575,-2.08751 -2.9625,-5.86248 -0.875,-8.43751 l 8.5751,-9.32498 c 1.5874,-1.96249 0.1999,-4.88751 -2.325,-4.88751 h -5.6001 c -3.3125,0 -6,-2.68749 -6,-5.99997 0,-3.31251 2.6875,-6.00001 6,-6.00001 h 10.2 c 1.1625,0 1.775,-1.4375 0.9126,-2.21252 -2.0626,-1.86248 -3.3625,-4.53748 -3.3625,-7.53748 0,-5.66251 4.5874,-10.25002 10.25,-10.25002 0.9,0 1.825,0.11255 2.7625,0.3625 3.4499,0.9 6.2624,3.725 7.1374,7.18748 1.0375,4.06252 -0.3374,7.83755 -3,10.23752 -0.8625,0.78752 -0.2748,2.22502 0.9,2.22502 h 10.2001 c 3.3124,0 5.9999,2.6875 5.9999,5.99997 0,3.31251 -2.6875,6 -5.9999,6 h -5.5876 c -2.5249,-0.0134 -3.925,2.91253 -2.3375,4.87502 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499995" />
|
||||
<path
|
||||
id="path5627-7-8"
|
||||
d="m 1060.2309,176.94992 c -2.2187,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.7812,5 -4,5 z m 16,0 c -2.2187,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.7812,5 -4,5 z m 16,0 c -2.2187,0 -4,-1.78126 -4,-3.99999 0,-3.87501 4,-2.875 4,-8.00001 1.5,0 4,3.68753 4,7 0,3.3125 -1.7812,5 -4,5 z m 6,20.00002 h -4 v -18.00002 h -4 v 18.00002 h -12 v -18.00002 h -4 v 18.00002 h -12 v -18.00002 h -4 v 18.00002 h -4 c -3.3125,0 -6,2.68747 -6,5.99997 v 26.00001 h 56 v -26.00001 c 0,-3.3125 -2.6875,-5.99997 -6,-5.99997 z m 2,27.99999 h -48 v -9.00538 c 2.0278,-1.18486 2.991,-2.99462 5.3438,-2.99462 3.4939,0 3.9066,3.99998 9.3437,3.99998 5.3554,0 5.9022,-3.99998 9.3125,-3.99998 3.5185,0 3.9002,3.99998 9.3438,3.99998 5.4196,0 5.8459,-3.99998 9.3437,-3.99998 2.311,0 3.2806,1.80937 5.3125,2.99438 z m 0,-14.04676 c -1.2032,-0.98425 -2.6521,-1.95324 -5.3125,-1.95324 -5.4287,0 -5.8531,4 -9.3437,4 -3.4619,0 -3.9318,-4 -9.3438,-4 -5.3552,0 -5.9022,4 -9.3125,4 -3.5185,0 -3.9002,-4 -9.3437,-4 -2.6829,0 -4.1376,0.97177 -5.3438,1.95724 v -7.95726 c 0,-1.10272 0.8973,-1.99998 2,-1.99998 h 44 c 1.1028,0 2,0.89726 2,1.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5640-9-7"
|
||||
d="m 1192.2309,214.94992 c -1.6575,0 -3,1.34249 -3,3 0,1.65624 1.3425,3 3,3 1.6575,0 3,-1.34376 3,-3 0,-1.65751 -1.3425,-3 -3,-3 z m 16.7812,-6.99624 11.2188,-43.00376 h -58 c -3.3087,0 -6,2.69127 -6,6.00004 v 19.99996 c 0,3.30877 2.6913,6 6,6 h 12.7825 l 0.9413,10.82001 c -4.5088,1.7275 -7.7238,6.06374 -7.7238,11.17999 v 6 c 0,2.20873 1.7913,4 4,4 h 40 c 2.2088,0 4,-1.79127 4,-4 v -6 c 0,-4.92499 -2.9737,-9.14752 -7.2188,-10.99624 z m -46.7812,-15.00376 c -1.1012,0 -2,-0.89625 -2,-2 v -19.99996 c 0,-1.10375 0.8988,-2 2,-2 h 10.3475 l 2.0875,23.99996 z m 52.8225,-23.99996 -2.0875,7.99996 h -19.735 c -0.5525,0 -1,0.44751 -1,1.00004 v 1.99996 c 0,0.55253 0.4475,1 1,1 h 18.6925 l -2.0875,8 h -16.605 c -0.5525,0 -1,0.44751 -1,1 v 2 c 0,0.55253 0.4475,1 1,1 h 15.5613 l -3.6525,14 h -25.2413 l -3.305,-37.99996 z m -2.8225,55.99996 h -40 v -6 c 0,-4.41125 3.5888,-8 8,-8 h 24 c 4.4113,0 8,3.58875 8,8 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249999" />
|
||||
<path
|
||||
id="path5651-8-3"
|
||||
d="m 1472.5493,184.94991 h -17.5341 c -0.6889,0 -1.2525,-0.67497 -1.2525,-1.49998 v -0.99999 c 0,-0.82501 0.5636,-1.50002 1.2525,-1.50002 h 17.5341 c 0.6889,0 1.2524,0.67501 1.2524,1.50002 v 0.99999 c 0,0.82501 -0.5635,1.49998 -1.2524,1.49998 z m 1.2524,6.5 v -0.99999 c 0,-0.82501 -0.5635,-1.49998 -1.2524,-1.49998 h -17.5341 c -0.6889,0 -1.2525,0.67497 -1.2525,1.49998 v 0.99999 c 0,0.82501 0.5636,1.50002 1.2525,1.50002 h 17.5341 c 0.6889,0 1.2524,-0.67501 1.2524,-1.50002 z m 6.7528,33.49998 h 0.3444 c 0.6889,0 1.2525,0.67501 1.2525,1.50002 v 0.99999 c 0,0.82501 -0.5636,1.50002 -1.2525,1.50002 h -37.1557 c -4.6132,0 -8.3496,-4.47501 -8.3496,-10 v -43.99997 c 0,-5.52502 3.7364,-10.00003 8.3496,-10.00003 h 35.9033 c 1.3881,0 2.5049,1.33751 2.5049,3.00004 v 45.99995 c 0,1.25 -0.6471,2.32499 -1.5552,2.775 -0.3757,2.01252 -0.4592,5.7 -0.042,8.22498 z m -31.8015,-11.99997 h 30.0585 v -43.99997 h -30.0585 z m -10.0196,1.99998 c 1.3986,-1.24997 3.1311,-1.99998 5.0098,-1.99998 h 1.6699 v -43.99997 h -1.6699 c -2.7658,0 -5.0098,2.68749 -5.0098,6 z m 38.857,9.99999 c -0.3237,-2.54999 -0.3027,-5.64997 0,-7.99998 h -33.8472 c -6.6797,0 -6.6797,7.99998 0,7.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.11422013" />
|
||||
<path
|
||||
id="path5662-1-7"
|
||||
d="m 1739.3439,168.9499 a 11.896253,11.896253 0 0 0 -7.2163,2.46752 c -2.9175,-3.90501 -7.5337,-6.4675 -12.7837,-6.4675 -5.25,0 -9.8663,2.56249 -12.7838,6.4675 a 11.945003,11.945003 0 0 0 -19.2163,9.53248 c 0,5.21751 8.0001,28.00002 8.0001,28.00002 v 16.00002 a 4.0000013,4.0000013 0 0 0 3.9999,3.99998 h 40.0001 a 4.0000013,4.0000013 0 0 0 3.9999,-3.99998 v -16.00002 c 0,0 8.0001,-22.78251 8.0001,-28.00002 a 12.000003,12.000003 0 0 0 -12,-12 z m -38.0001,54.00004 v -10 h 36.0001 v 10 z m 36.3426,-16.00002 h -3.6938 l 1.3513,-16.84376 a 1.0000003,1.0000003 0 0 0 -0.9163,-1.07622 l -2,-0.16009 h -0.081 a 1.0000003,1.0000003 0 0 0 -1,0.92124 l -1.375,17.16252 h -8.71 v -17.00375 a 1.0000003,1.0000003 0 0 0 -1,-1 h -2 a 1.0000003,1.0000003 0 0 0 -1,1 v 16.99999 h -8.5525 l -1.375,-17.16248 a 1.0000003,1.0000003 0 0 0 -1,-0.92128 h -0.081 l -2,0.16009 a 1.0000003,1.0000003 0 0 0 -0.9162,1.07623 l 1.3587,16.84751 h -3.6937 c -3.6576,-10.40249 -7.6,-23.33251 -7.6575,-26.00002 a 5.9462517,5.9462517 0 0 1 9.5899,-4.74999 l 4.8151,3.65251 3.6175,-4.84124 c 1.9274,-2.58127 4.835,-4.06127 7.9775,-4.06127 3.1424,0 6.0499,1.48 7.9775,4.05876 l 3.6174,4.84125 4.8151,-3.65001 a 5.9462517,5.9462517 0 0 1 9.59,4.74001 c -0.058,2.67749 -4,15.60751 -7.6576,26.01 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500003" />
|
||||
<path
|
||||
id="path5673-8-0"
|
||||
d="m 1212.8449,77.650015 c -1.6875,-1.42499 -3.825,-2.2 -6.025,-2.2 -2.7375,0 -5.3125,1.18748 -7.1125,3.26249 l -2.55,-11.12502 c -1.9625,-8.62499 -9.45,-14.63748 -18.2,-14.63748 -1.4125,0 -2.8375,0.16241 -4.225,0.4875 -10.05,2.33751 -16.3375,12.50002 -14.025,22.63751 l 5.575,24.375005 c 0.05,0.23744 0.1375,0.46249 0.2,0.7 -1.175,0.38749 -2.25,1.47499 -2.25,2.79999 V 113.95 c 0,1.66251 1.3375,3 2.975,3 h 37.8875 c 1.6375,0 3.15,-1.33749 3.15,-3 v -9.99999 c 0,-1.42499 -1.175,-2.55 -2.4875,-2.86248 l 8.3,-10.050035 c 3.325,-4.02499 2.775,-10.02498 -1.2125,-13.38748 z m -8.6125,35.300005 h -36 v -8.00001 h 36 z m 6.775,-24.475005 -10.3125,12.475015 h -30.1 c -0.15,-0.46253 -0.3375,-0.92502 -0.45,-1.412535 l -5.575,-24.37499 c -1.825,-7.98748 3.125,-15.98751 11.05,-17.83751 1.1,-0.25012 2.2125,-0.38748 3.325,-0.38748 6.9,0 12.8,4.7375 14.35,11.53751 l 3.4375,15.04998 0.9,3.92501 2.5625,-3.1 2.425,-2.9375 c 1.0375,-1.26252 2.5625,-1.97499 4.1875,-1.97499 1.275,0 2.5,0.44998 3.4875,1.27498 2.325,1.94998 2.6375,5.42501 0.7125,7.76251 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5684-6-6"
|
||||
d="m 1352.216,188.94993 h -14.1713 l 13.3413,-13.34124 c 3.0137,-3.01376 2.1887,-8.09377 -1.6225,-10.00002 a 6.2446252,6.2446252 0 0 0 -2.7912,-0.65875 c -1.3276,0 -2.6451,0.42252 -3.7476,1.24875 l -30.335,22.75126 h -22.6737 c -0.5525,0 -1,0.44749 -1,1.00001 v 2 c 0,0.55249 0.4475,0.99998 1,0.99998 h 3 v 4.00001 c 0,10.17749 6.345,18.85376 15.2862,22.34375 -1.595,2.0975 -2.7125,4.57875 -3.115,7.30499 -0.1812,1.22877 0.7475,2.35125 1.99,2.35125 h 27.6775 c 1.2425,0 2.1713,-1.12124 1.99,-2.35125 -0.4012,-2.72624 -1.5187,-5.20874 -3.1149,-7.30499 8.9412,-3.48999 15.2862,-12.16626 15.2862,-22.34375 v -4.00001 h 3 c 0.5525,0 1,-0.44749 1,-0.99998 v -2 c 0,-0.55252 -0.4475,-1.00001 -1,-1.00001 z m -6.5925,-19.55126 c 2.1975,-1.64749 4.9013,1.41375 2.9337,3.38127 l -16.1687,16.16999 h -12.8325 z m -0.4075,27.55126 c 0,8.28875 -5.0013,15.59624 -12.74,18.6175 l -4.9388,1.92749 3.21,4.21999 c 0.7601,1.00002 1.3588,2.09377 1.7738,3.23502 h -22.6088 c 0.415,-1.14125 1.0125,-2.235 1.7738,-3.23502 l 3.21,-4.21999 -4.9388,-1.92749 c -7.74,-3.02126 -12.7412,-10.32875 -12.7412,-18.6175 v -4.00001 h 48 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5695-2-6"
|
||||
d="m 1855.9152,52.950005 h -40 a 8.0000001,8.0000001 0 0 0 -8.0001,7.99999 v 52.000015 a 4.0000002,4.0000002 0 0 0 4,3.99999 h 48.0001 a 4.0000002,4.0000002 0 0 0 4,-3.99999 V 60.949995 a 8.0000001,8.0000001 0 0 0 -8,-7.99999 z m 4,60.000005 h -48.0001 V 72.950005 h 48.0001 z m 0,-43.999995 h -48.0001 v -8.00002 a 4.0000002,4.0000002 0 0 1 4.0001,-3.99998 h 40 a 4.0000002,4.0000002 0 0 1 4,3.99998 z m -6.0001,-8.00002 a 2.0000001,2.0000001 0 1 0 2.0001,2 2.0000001,2.0000001 0 0 0 -2.0001,-2 z m -7.9999,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -20,0 a 2.0000001,2.0000001 0 1 0 1.9999,2 2.0000001,2.0000001 0 0 0 -1.9999,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m 0,48.000025 h 35.9999 a 2.0000001,2.0000001 0 0 0 2.0001,-2.00001 V 78.950015 a 2.0000001,2.0000001 0 0 0 -2.0001,-2 h -35.9999 a 2.0000001,2.0000001 0 0 0 -2,2 v 27.999995 a 2.0000001,2.0000001 0 0 0 2,2.00001 z m 2,-28.000005 h 31.9999 v 23.999995 h -31.9999 z m 26,3.99999 h -20 a 2.0000055,2.0000055 0 0 0 0,4.00001 h 20 a 2.0000055,2.0000055 0 0 0 0,-4.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.125" />
|
||||
<path
|
||||
id="path5706-1-5"
|
||||
d="m 1631.4255,80.321695 c -6.3184,-16.42668 -22.26,-27.37169 -40.0816,-27.37169 -17.8217,0 -33.7651,10.94501 -40.0784,27.37169 -7.0883,0.27334 -7.9217,6.23499 -7.9217,7.65166 a 7.6816659,7.6816659 0 0 0 7.7034,7.64334 c 0.4534,0 0.795,-0.0999 1.22,-0.12669 l 5.41,16.220005 a 7.6666659,7.6666659 0 0 0 7.2717,5.23999 h 52.79 a 7.6666659,7.6666659 0 0 0 7.2716,-5.24164 l 5.405,-16.218355 c 0.4234,0.0284 0.7667,0.12669 1.22,0.12669 a 7.6816659,7.6816659 0 0 0 7.7083,-7.64334 c 0,-1.46168 -0.8583,-7.35667 -7.9183,-7.65166 z m -11.4733,29.696645 a 2.3333332,2.3333332 0 0 1 -2.2133,1.59832 h -52.7917 a 2.3333332,2.3333332 0 0 1 -2.2134,-1.59664 l -5.2099,-15.631665 a 21.178333,21.178333 0 0 0 4.8666,-2.78166 c 1.5151,-1.12332 2.1,-1.57168 4.235,0.0108 2.02,1.5 5.4117,4.00001 11.3234,4.00001 5.9117,0 9.3066,-2.51001 11.3333,-4.01334 1.5117,-1.11834 2.085,-1.56667 4.2017,0.008 2.025,1.5 5.41,3.99999 11.3216,3.99999 5.9117,0 9.3017,-2.51 11.3234,-4.01 1.8133,-1.34498 2.3533,-1.36667 4.1866,0 a 21.151665,21.151665 0 0 0 4.8466,2.78167 l -5.2099,15.633335 z m 11.6867,-19.735005 c -4.1567,0 -6.365,-1.63998 -8.1517,-2.96832 -4.9517,-3.66666 -8.3434,-1.615 -10.5367,0.0108 -1.7733,1.31832 -3.9833,2.95833 -8.145,2.95833 -4.1617,0 -6.3699,-1.64001 -8.1567,-2.9617 -5.3032,-3.94664 -8.9166,-1.2083 -10.5499,0 -1.7767,1.32169 -3.9851,2.9617 -8.1517,2.9617 -4.1666,0 -6.3751,-1.64001 -8.1666,-2.9617 -1.1301,-0.83331 -4.9517,-4.16665 -10.5784,0 -1.78,1.31668 -4,2.95669 -8.1666,2.95669 a 2.3116664,2.3116664 0 1 1 0,-4.62333 c 0.8982,0 1.8466,0.0801 4.4583,-1.36166 8.8883,-25.65333 33.1366,-26.01 35.85,-26.01 2.6667,0 26.9534,0.33333 35.8333,25.99997 2.6249,1.48501 3.4283,1.38501 4.4633,1.38501 a 2.3116666,2.3116666 0 1 1 0,4.62333 z m -55.1017,-23.71832 a 2.6783329,2.6783329 0 0 0 -3.5783,1.19333 l -2.6668,5.33334 a 2.6666664,2.6666664 0 0 0 1.1934,3.57832 c 1.5901,0.78336 3.06,-0.16676 3.5783,-1.19331 l 2.6667,-5.33333 a 2.6666664,2.6666664 0 0 0 -1.1933,-3.57835 z m 33.19,1.19168 a 2.6672691,2.6672691 0 1 0 -4.7717,2.38499 l 2.6667,5.33333 c 0.5166,1.02834 1.9883,1.97668 3.5783,1.19334 a 2.6666664,2.6666664 0 0 0 1.1933,-3.57835 z m -18.3833,-1.47333 a 2.6666664,2.6666664 0 0 0 -2.6667,2.66667 v 5.3333 a 2.6667,2.6667 0 1 0 5.3334,0 v -5.3333 a 2.6666664,2.6666664 0 0 0 -2.6667,-2.66667 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16666667" />
|
||||
<path
|
||||
id="path5717-4-6"
|
||||
d="m 1981.409,183.93774 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 1.9999 a 0.99249264,0.99249264 0 0 0 1.0001,-1.02498 c -0.2627,-5.26247 -2.4125,-9.16245 -5.1999,-11.93742 -2.3001,-2.33747 -2.6376,-4.77497 -2.7376,-6.11246 a 0.98374271,0.98374271 0 0 0 -1,-0.88749 l -2,0.012 a 0.99999255,0.99999255 0 0 0 -0.9874,1.08748 13.182401,13.182401 0 0 0 3.9,8.71244 c 2.1624,2.15 3.7999,5.08746 4.0249,9.17492 z m -13.9374,0 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 2 a 0.99249264,0.99249264 0 0 0 1,-1.02498 c -0.2625,-5.26247 -2.4125,-9.16245 -5.2,-11.93742 -2.2875,-2.33747 -2.625,-4.77497 -2.7249,-6.11246 a 0.98749265,0.98749265 0 0 0 -1.0125,-0.88749 l -2,0.012 a 0.99999255,0.99999255 0 0 0 -0.9875,1.08748 c 0.1249,1.86249 0.65,5.44996 3.8999,8.71244 2.1613,2.15 3.7988,5.08746 4.025,9.17492 z m 33.9998,5.01246 h -55.9996 a 3.99997,3.99997 0 0 0 -4,3.99996 c 0,11.83742 6.4449,22.14485 15.9999,27.68106 v 4.31873 a 3.99997,3.99997 0 0 0 3.9999,3.99997 h 23.9998 a 3.99997,3.99997 0 0 0 4.0001,-3.99997 v -4.31873 c 9.5548,-5.53621 15.9998,-15.84364 15.9998,-27.68106 a 3.99997,3.99997 0 0 0 -3.9999,-3.99996 z m -16,29.3748 v 6.62495 h -23.9998 V 218.325 c -16.5423,-9.58369 -15.9998,-23.22235 -15.9998,-25.37484 h 55.9996 c 0,2.1825 0.4212,15.86113 -16,25.37484 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499909" />
|
||||
<path
|
||||
id="path5728-6-1"
|
||||
d="m 1076.231,52.950005 c -17.6725,0 -32.0001,14.32752 -32.0001,32.00002 0,17.672495 14.3276,31.999975 32.0001,31.999975 17.6724,0 31.9999,-14.32748 31.9999,-31.999975 0,-17.6725 -14.3275,-32.00002 -31.9999,-32.00002 z m 0,59.999995 c -15.4388,0 -28.0001,-12.56124 -28.0001,-27.999975 0,-15.43877 12.5613,-28.00002 28.0001,-28.00002 15.4387,0 27.9999,12.56125 27.9999,28.00002 0,15.438735 -12.5612,27.999975 -27.9999,27.999975 z m 19.7987,-27.999975 3.535,-3.53503 c 0.39,-0.39 0.39,-1.02374 0,-1.41373 l -1.4138,-1.41376 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -3.535,3.535 -5.6575,-5.65624 2.8287,-2.82875 2.1213,2.12124 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 1.4138,-1.41373 c 0.39,-0.39002 0.39,-1.02376 0,-1.41376 l -2.1213,-2.12127 0.7075,-0.70748 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4137,-1.41376 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -0.7076,0.70752 -2.1212,-2.12124 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4137,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.1212,2.12124 -2.8287,2.82875 -5.6575,-5.65623 3.5362,-3.535 c 0.39,-0.39 0.39,-1.02373 0,-1.41376 l -1.4149,-1.41875 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -3.5362,3.53626 -3.5363,-3.53626 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -1.4138,1.41376 c -0.39,0.38999 -0.39,1.02373 0,1.41376 l 3.5362,3.535 -5.6562,5.65623 -2.8287,-2.82875 2.1212,-2.12124 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4138,-1.41375 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -2.1213,2.12127 -0.7075,-0.70752 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -1.4137,1.41376 c -0.39,0.39 -0.39,1.02374 0,1.41376 l 0.7074,0.70748 -2.1212,2.12124 c -0.39,0.39003 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.1212,-2.12127 2.8288,2.82878 -5.6563,5.65624 -3.5362,-3.535 c -0.39,-0.38999 -1.0238,-0.38999 -1.4138,0 l -1.4175,1.41749 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 3.5363,3.53626 -3.5363,3.53623 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 1.4138,1.41376 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 3.5363,-3.535 5.6563,5.65623 -2.8288,2.82875 -2.1212,-2.12123 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4138,1.41372 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 2.1213,2.12124 -0.7075,0.70751 c -0.39,0.390005 -0.39,1.023775 0,1.413765 l 1.4138,1.41373 c 0.39,0.39003 1.0237,0.39003 1.4137,0 l 0.7075,-0.70748 2.1212,2.12124 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4137,-1.41376 c 0.39,-0.39 0.39,-1.02373 0,-1.41373 l -2.1212,-2.121275 2.8287,-2.82872 5.6575,5.657505 -3.5362,3.53623 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.4138,1.41373 c 0.39,0.39003 1.0237,0.39003 1.4137,0 l 3.5388,-3.535 3.5362,3.53626 c 0.39,0.39 1.0238,0.39 1.4138,0 l 1.4137,-1.41376 c 0.39,-0.38999 0.39,-1.02373 0,-1.41372 l -3.5363,-3.53626 5.6576,-5.657515 2.8287,2.82876 -2.1213,2.121235 c -0.39,0.39 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.1213,-2.12124 0.7075,0.70748 c 0.39,0.39 1.0237,0.39 1.4137,0 l 1.4138,-1.41376 c 0.39,-0.38999 0.39,-1.02373 0,-1.413725 l -0.7075,-0.70751 2.1212,-2.12124 c 0.39,-0.39 0.39,-1.02377 0,-1.41376 l -1.4137,-1.41376 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -2.1212,2.12127 -2.8288,-2.82875 5.6563,-5.65627 3.5362,3.535 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4138,-1.41373 c 0.3899,-0.39003 0.3899,-1.02377 0,-1.41376 z m -19.7987,-14.14252 5.6562,5.65627 -5.6562,5.6575 -5.6563,-5.65627 z m -14.1426,14.14252 5.6563,-5.6575 5.6575,5.6575 -5.6575,5.6575 z m 14.1426,14.14249 -5.6576,-5.65751 5.6576,-5.6575 5.6574,5.6575 z m 8.485,-8.48626 -5.6563,-5.65623 5.6575,-5.65627 5.6562,5.65627 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5739-2-6"
|
||||
d="m 1604.3563,223.73742 1.775,-20.60001 c -5.2625,-4.13751 -8.8,-9.62502 -8.8,-16.18747 0.013,-11.78751 11.025,-22.00002 19.0125,-22.00002 2.7625,0 5,2.16252 5,4.81249 v 54.37498 c 0,2.65001 -2.2375,4.81253 -5,4.81253 h -7 c -2.85,0 -5.225,-2.33754 -4.9875,-5.2125 z m -3.0125,-36.78748 c 0,6.37497 4.025,10.68746 8.975,14.31247 l -1.975,22.825 c -0.036,0.46249 0.425,0.8625 1,0.8625 h 7 c 0.5375,0 1,-0.37512 1,-0.81252 v -54.37498 c 0,-0.43748 -0.4625,-0.81248 -1,-0.81248 -5.575,0 -15,8.22497 -15,18.00001 z m -9.9125,-17.77502 c -0.4125,-2.43748 -2.65,-4.225 -5.7625,-4.225 -1.4875,0 -3.0125,0.42502 -4.1625,1.40001 -1.0499,-0.8875 -2.5,-1.40001 -4.1625,-1.40001 -1.6625,0 -3.1125,0.51251 -4.1625,1.40001 -1.15,-0.97499 -2.675,-1.40001 -4.1625,-1.40001 -3.15,0 -5.35,1.81252 -5.7625,4.225 -0.2251,1.17498 -1.9125,10.57501 -1.9125,14.5125 0,6.36247 3.3375,11.45002 8.875,13.83749 l -1.425,26.35001 c -0.15,2.74997 2.0375,5.075 4.8,5.075 h 7.5 c 2.75,0 4.95,-2.31253 4.8,-5.075 l -1.425,-26.35001 c 5.525,-2.38747 8.875,-7.47502 8.875,-13.83749 0,-3.93749 -1.6875,-13.33752 -1.9125,-14.5125 z m -11.05,25.775 1.525,29.13749 c 0.024,0.46249 -0.3373,0.8625 -0.8125,0.8625 h -7.5 c -0.4625,0 -0.8375,-0.38759 -0.8125,-0.8625 l 1.525,-29.13749 c -5.3,-1.1 -8.9624,-5.37502 -8.9624,-11.2625 0,-3.71249 1.8499,-13.82502 1.8499,-13.82502 0.1999,-1.23749 3.5375,-1.21249 3.6875,0.0241 v 15.31248 c 0.1126,1.43748 3.525,1.4625 3.6875,0.0241 l 0.925,-15.36249 c 0.1999,-1.21249 3.4875,-1.21249 3.6875,0 l 0.925,15.36249 c 0.1625,1.42502 3.575,1.40001 3.6875,-0.0241 v -15.30001 c 0.15,-1.2375 3.4875,-1.26247 3.6875,-0.0241 0,0 1.85,10.11252 1.85,13.82502 0.013,5.85 -3.625,10.14999 -8.95,11.24998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499996" />
|
||||
<path
|
||||
id="path5750-2-5"
|
||||
d="m 1841.9152,180.94994 c 3.3138,0 6.0001,-2.68627 6.0001,-6.00002 0,-3.31374 -2.6863,-6.00001 -6.0001,-6.00001 -3.3137,0 -6,2.68627 -6,6.00001 0,3.31375 2.6863,6.00002 6,6.00002 z m 0,-8.00001 c 1.1025,0 2,0.89747 2,1.99999 0,1.10252 -0.8975,1.99999 -2,1.99999 -1.1025,0 -2,-0.89747 -2,-1.99999 0,-1.10252 0.8975,-1.99999 2,-1.99999 z m 22,14.99998 v -1.99999 c 0,-0.5525 -0.4475,-0.99999 -1,-0.99999 h -54 c -0.5524,0 -1,0.44749 -1,0.99999 v 1.99999 c 0,0.5525 0.4476,1 1,1 h 5.8413 c -4.2438,5.72252 -6.8413,12.70252 -6.8413,19.20001 0,4.885 1.4775,8.83126 4,11.94126 v 6.85875 c 0,1.105 0.8951,1.99999 2.0001,1.99999 1.105,0 2,-0.89499 2,-1.99999 v -3.16751 c 5.0824,3.50373 12.1599,5.1675 19.9999,5.1675 7.8388,0 14.9175,-1.66377 20,-5.16624 v 3.16625 c 0,1.105 0.8951,1.99999 2.0001,1.99999 1.105,0 2,-0.89499 2,-1.99999 v -6.85875 c 2.5224,-3.11 3.9999,-7.05626 3.9999,-11.94126 0,-6.49749 -2.5975,-13.47749 -6.8412,-19.20001 h 5.8412 c 0.5525,0 1,-0.4475 1,-1 z m -3.9999,20.20001 c 0,15.1625 -16.7838,16.80002 -24.0001,16.80002 -7.2162,0 -24,-1.63752 -24,-16.80002 0,-6.53124 3.0176,-13.75249 7.955,-19.20001 h 32.0888 c 4.9387,5.44752 7.9563,12.66877 7.9563,19.20001 z m -32.0001,-35.19999 c 2.2088,0 4,-1.79124 4,-4.00002 0,-2.20875 -1.7912,-3.99999 -4,-3.99999 -2.2087,0 -3.9999,1.79124 -3.9999,3.99999 0,2.20878 1.7912,4.00002 3.9999,4.00002 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500001" />
|
||||
<path
|
||||
id="path5761-9-3"
|
||||
d="m 1483.8367,73.757113 0.84,-2.5214 v 0 l 6.0957,-18.28571 h -57.1427 a 11.428558,11.428558 0 0 0 -11.4286,11.42856 v 14.85712 a 1.1428558,1.1428558 0 0 0 1.1429,1.14287 h 2.2857 a 1.1428558,1.1428558 0 0 0 1.1428,-1.14287 v -14.85712 a 6.8571343,6.8571343 0 0 1 6.8572,-6.85711 h 3.8099 l 4.5714,13.71426 v 0 l 0.8643,2.59426 c -7.0442,5.67715 -11.5314,14.21856 -11.5314,23.77999 0,7.352827 2.6601,12.109977 7.0914,16.815687 a 8.1685614,8.1685614 0 0 0 5.9329,2.52429 h 37.9528 a 8.1542755,8.1542755 0 0 0 5.9214,-2.51429 c 4.4286,-4.70714 7.0986,-9.46286 7.1015,-16.817117 0,-9.47286 -4.3758,-18.12141 -11.5072,-23.86142 z m -41.5785,-16.23566 h 42.1714 l -4.5714,13.71426 h -33.0286 z m 5.45,18.28568 h 31.3857 c 3,2.41714 7.8114,6.01142 10.3571,13.71426 h -52.1942 c 2.5871,-7.71427 7.5457,-11.37283 10.4514,-13.71426 z m 37.2071,35.492797 a 3.5599955,3.5599955 0 0 1 -2.5943,1.07858 h -37.9528 a 3.5714241,3.5714241 0 0 1 -2.6043,-1.08858 c -4.2628,-4.52428 -5.8485,-8.23283 -5.8485,-13.679967 a 25.471396,25.471396 0 0 1 0.2712,-3.51716 h 54.3185 a 25.781397,25.781397 0 0 1 0.2672,3.5243 c 0,5.445697 -1.5886,9.154267 -5.8572,13.682827 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.14285697" />
|
||||
<path
|
||||
id="path5772-4-4"
|
||||
d="m 1333.2158,93.949125 c -1.6562,0 -2.9999,1.34246 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65749 -1.3438,-2.99995 -3,-2.99995 z m -20.9996,-16.99966 c 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99992 3,2.99992 1.6562,0 2.9999,-1.34371 2.9999,-2.99992 z m 1,16.99966 c -1.6562,0 -2.9999,1.34246 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65749 -1.3438,-2.99995 -3,-2.99995 z m 11.9998,-11.99978 c -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99995 3,2.99995 1.6562,0 2.9999,-1.34374 2.9999,-2.99995 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 z m 27.8145,2.97744 c -8.7461,-0.10616 -15.8085,-7.21111 -15.8085,-15.98218 -8.7711,0 -15.8747,-7.0611 -15.9822,-15.80595 -0.8275,-0.1262 -1.6612,-0.18865 -2.4912,-0.18865 -2.5849,0 -5.1474,0.60625 -7.4736,1.79122 l -8.6411,4.40243 a 16.527304,16.527304 0 0 0 -7.2236,7.22609 l -4.3874,8.60983 a 16.580302,16.580302 0 0 0 -1.6025,10.11857 l 1.51,9.53483 a 16.569053,16.569053 0 0 0 4.6449,9.119795 l 6.8461,6.84486 a 16.50418,16.50418 0 0 0 9.0886,4.63243 l 9.5886,1.51748 c 0.8574,0.13639 1.7199,0.20246 2.5799,0.20246 2.59,0 5.1562,-0.61001 7.4861,-1.79748 l 8.6411,-4.40242 a 16.527304,16.527304 0 0 0 7.2236,-7.22608 l 4.3874,-8.609845 c 1.57,-3.0787 2.1262,-6.57112 1.6138,-9.98733 z m -5.1774,8.16985 -4.3875,8.611085 c -1.2099,2.37496 -3.1037,4.26866 -5.4761,5.47739 l -8.6411,4.40243 c -1.7475,0.88995 -3.7087,1.36118 -5.6699,1.36118 -0.6512,0 -1.3087,-0.0512 -1.9537,-0.1538 l -9.5873,-1.51746 c -2.625,-0.41624 -5.0062,-1.62996 -6.8861,-3.50992 l -6.8461,-6.84487 c -1.8875,-1.886215 -3.105,-4.278665 -3.5225,-6.916135 l -1.5099,-9.53354 c -0.4188,-2.63997 0,-5.29489 1.2149,-7.6761 l 4.3874,-8.60983 c 1.21,-2.37496 3.1037,-4.26866 5.4762,-5.47739 l 8.6398,-4.40368 c 1.4162,-0.72123 2.975,-1.16624 4.5637,-1.30747 1.6437,7.89361 7.9798,14.11846 15.9059,15.60721 1.4887,7.92733 7.7136,14.26346 15.6085,15.90592 -0.1374,1.59123 -0.58,3.14243 -1.3162,4.58491 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249976" />
|
||||
<path
|
||||
id="path5794-0-3"
|
||||
d="m 1980.6635,52.950005 c -16.558,0 -31.0067,10.95333 -39.0523,20.33331 l -16.0613,-14.27832 c -2.2371,-1.84166 -5.5619,0.11165 -4.999,2.92669 l 4.4492,23.01832 -4.4508,23.020035 c -0.5613,2.81332 2.7602,4.76663 4.9922,2.93166 l 16.0615,-14.275025 c 8.0521,9.370005 22.5091,20.323325 39.0605,20.323325 25.2909,0 45.7931,-25.600005 45.7931,-31.999995 0,-6.39999 -20.5022,-32 -45.7931,-32 z m 0,58.666685 c -14.1407,0 -27.3755,-9.54501 -35.0452,-18.478325 l -3.3695,-3.92501 c -5.1646,4.24667 -2.0268,1.47999 -15.2467,13.601665 3.6029,-18.981675 3.1079,-16.395005 3.4059,-17.865015 -0.298,-1.46835 0.1985,1.12166 -3.4043,-17.86501 13.2464,12.14167 10.1004,9.36833 15.2467,13.60336 l 3.3695,-3.92503 c 7.6699,-8.93333 20.8964,-18.48001 35.0436,-18.48001 21.226,0 39.0904,21.08168 40.46,26.66669 -1.3696,5.58501 -19.234,26.666685 -40.46,26.666685 z m -3.6063,-41.725015 -1.8728,-1.885 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -14.0214,14.11 a 1.3246526,1.333334 0 0 0 0,1.88499 l 1.8728,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 14.0231,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 18.5451,2.66667 -1.8727,-1.88499 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -24.6188,24.77666 a 1.3246526,1.333334 0 0 0 0,1.885 l 1.8729,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 24.6203,-24.77001 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 6.0752,11.44835 a 1.3246526,1.333334 0 0 0 -1.8745,0 l -14.0214,14.11 a 1.3246526,1.333334 0 0 0 0,1.884995 l 1.8726,1.88499 a 1.3246526,1.333334 0 0 0 1.873,0 L 2003.55,87.783345 a 1.3246526,1.333334 0 0 0 0,-1.88666 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16612327" />
|
||||
<path
|
||||
id="path5805-7-7"
|
||||
d="m 1719.3438,94.950015 c -1.1,0 -2,0.9 -2,1.99998 0,1.1 0.9,1.99999 2,1.99999 1.0999,0 2,-0.89999 2,-1.99999 0,-1.09998 -0.9001,-1.99998 -2,-1.99998 z m -4.0001,-31.00001 c -1.0999,0 -1.9999,0.9 -1.9999,2.00002 0,1.1 0.9,1.99999 1.9999,1.99999 1.1001,0 2.0001,-0.89999 2.0001,-1.99999 0,-1.10002 -0.9,-2.00002 -2.0001,-2.00002 z m 4.0001,23.00001 c -1.1,0 -2,0.9 -2,1.99999 0,1.1 0.9,1.99998 2,1.99998 1.0999,0 2,-0.89998 2,-1.99998 0,-1.09999 -0.9001,-1.99999 -2,-1.99999 z m 0,-7.99999 c -1.1,0 -2,0.9 -2,1.99998 0,1.1 0.9,2.00003 2,2.00003 1.0999,0 2,-0.90003 2,-2.00003 0,-1.09998 -0.9001,-1.99998 -2,-1.99998 z m 4,-15.00002 c -1.1,0 -2,0.9 -2,2.00002 0,1.1 0.9,1.99999 2,1.99999 1.1,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.9,-2.00002 -2,-2.00002 z m 24,19.00003 c 0,-5.51253 -4.4875,-10.00002 -10,-10.00002 h -4.95 c 1.2874,-2.88749 1.575,-6.17501 0.725,-9.44999 -1.2375,-4.84999 -5.175,-8.79998 -10,-10.06251 -1.25,-0.32487 -2.5125,-0.48751 -3.775,-0.48751 -3.8125,0 -7.3875,1.48752 -10.075,4.17501 -2.6875,2.6875 -4.175,6.26249 -4.175,10.07501 0,1.99999 0.425,3.96249 1.225,5.74999 h -4.9751 c -5.5124,0 -9.9999,4.48749 -9.9999,10.00002 0,5.51246 4.4875,9.99998 9.9999,9.99998 h 3.4877 l -7.2501,7.700005 c -3.475,4.27498 -2.825,10.58749 1.4499,14.06247 1.7876,1.4375 4.0252,2.23751 6.3126,2.23751 3.025,0 5.8625,-1.35001 7.7626,-3.7 l 6.2374,-6.44997 6.2375,6.44997 c 1.9,2.34999 4.7375,3.7 7.7625,3.7 2.2875,0 4.5249,-0.80001 6.2999,-2.23751 4.2751,-3.47498 4.925,-9.78749 1.4501,-14.06247 l -7.25,-7.700005 h 3.5 c 5.5125,0 10,-4.48752 10,-9.99998 z m -17.925,10.88749 8.575,9.324985 c 2.0875,2.57501 1.7,6.35 -0.875,8.4375 -1.1126,0.89999 -2.45,1.34998 -3.775,1.34998 -1.75,0 -3.475,-0.7625 -4.6625,-2.21248 l -6.2375,-6.44999 c -0.8,-0.98751 -1.95,-1.47501 -3.1,-1.47501 -1.15,0 -2.2999,0.4875 -3.1,1.47501 l -6.2375,6.44999 c -1.1875,1.46249 -2.9124,2.21248 -4.6625,2.21248 -1.325,0 -2.6625,-0.43748 -3.775,-1.34998 -2.575,-2.0875 -2.9625,-5.86249 -0.875,-8.4375 l 8.575,-9.324985 c 1.5875,-1.9625 0.1999,-4.88752 -2.325,-4.88752 h -5.6001 c -3.3125,0 -5.9999,-2.68749 -5.9999,-5.99997 0,-3.31251 2.6874,-6.00001 5.9999,-6.00001 h 10.2001 c 1.1625,0 1.775,-1.4375 0.9125,-2.21252 -2.0626,-1.86248 -3.3625,-4.53748 -3.3625,-7.53748 0,-5.6625 4.5875,-10.25001 10.25,-10.25001 0.9,0 1.825,0.11255 2.7625,0.3625 3.45,0.9 6.2625,3.725 7.1375,7.18748 1.0374,4.06251 -0.3375,7.83754 -3,10.23751 -0.8625,0.78752 -0.2748,2.22502 0.9,2.22502 h 10.2 c 3.3124,0 6,2.6875 6,5.99997 0,3.31251 -2.6876,6 -6,6 h -5.5876 c -2.5249,-0.0134 -3.9249,2.91253 -2.3374,4.87503 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499995" />
|
||||
<path
|
||||
id="path5627-3-2-2"
|
||||
d="m 1305.216,400.94979 c -2.2188,0 -4,-1.78128 -4,-4 0,-3.87501 4,-2.87501 4,-8.00002 1.5,0 4,3.68752 4,7 0,3.31251 -1.7813,5.00002 -4,5.00002 z m 16,0 c -2.2187,0 -4,-1.78128 -4,-4 0,-3.87501 4,-2.87501 4,-8.00002 1.5,0 4,3.68752 4,7 0,3.31251 -1.7813,5.00002 -4,5.00002 z m 16,0 c -2.2188,0 -4,-1.78128 -4,-4 0,-3.87501 4,-2.87501 4,-8.00002 1.5,0 4,3.68752 4,7 0,3.31251 -1.7812,5.00002 -4,5.00002 z m 6,20.00001 h -4 v -18.00003 h -4 v 18.00003 h -12 v -18.00003 h -4 v 18.00003 h -12 v -18.00003 h -4 v 18.00003 h -4 c -3.3125,0 -6,2.68748 -6,5.99998 v 26 h 56 v -26 c 0,-3.3125 -2.6875,-5.99998 -6,-5.99998 z m 2,27.99998 h -48 v -9.00536 c 2.0277,-1.18488 2.991,-2.99463 5.3437,-2.99463 3.4939,0 3.9067,4 9.3438,4 5.3554,0 5.9021,-4 9.3125,-4 3.5185,0 3.9001,4 9.3437,4 5.4197,0 5.8459,-4 9.3438,-4 2.311,0 3.2806,1.80938 5.3125,2.99437 z m 0,-14.04675 c -1.2032,-0.98425 -2.6521,-1.95324 -5.3125,-1.95324 -5.4288,0 -5.8531,4 -9.3438,4 -3.4618,0 -3.9317,-4 -9.3437,-4 -5.3553,0 -5.9022,4 -9.3125,4 -3.5185,0 -3.9003,-4 -9.3438,-4 -2.6828,0 -4.1376,0.97177 -5.3437,1.95723 v -7.95724 c 0,-1.10273 0.8972,-1.99998 2,-1.99998 h 44 c 1.1028,0 2,0.89725 2,1.99998 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5640-5-1-1"
|
||||
d="m 1462.7725,438.94978 c -1.6576,0 -3,1.34249 -3,3 0,1.65624 1.3424,3.00001 3,3.00001 1.6575,0 3,-1.34377 3,-3.00001 0,-1.65751 -1.3425,-3 -3,-3 z m 16.7812,-6.99625 11.2188,-43.00376 h -58 c -3.3088,0 -6,2.69126 -6,6.00006 v 19.99996 c 0,3.30875 2.6912,5.99999 6,5.99999 h 12.7825 l 0.9412,10.82 c -4.5087,1.72752 -7.7237,6.06375 -7.7237,11.17999 v 6.00001 c 0,2.20872 1.7912,4 4,4 h 40 c 2.2087,0 3.9999,-1.79128 3.9999,-4 v -6.00001 c 0,-4.92498 -2.9737,-9.14752 -7.2187,-10.99624 z m -46.7812,-15.00375 c -1.1013,0 -2,-0.89625 -2,-1.99999 v -19.99996 c 0,-1.10376 0.8987,-2.00001 2,-2.00001 h 10.3475 l 2.0875,23.99996 z m 52.8224,-23.99996 -2.0874,7.99997 h -19.735 c -0.5526,0 -1,0.44749 -1,1.00002 v 1.99998 c 0,0.55253 0.4474,1 1,1 h 18.6924 l -2.0874,7.99999 h -16.605 c -0.5526,0 -1,0.44752 -1,0.99999 v 2.00002 c 0,0.55252 0.4474,0.99999 1,0.99999 h 15.5612 l -3.6525,14 H 1450.44 l -3.305,-37.99996 z m -2.8224,55.99996 h -40 v -6.00001 c 0,-4.41124 3.5887,-7.99999 8,-7.99999 h 23.9999 c 4.4113,0 8.0001,3.58875 8.0001,7.99999 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249999" />
|
||||
<path
|
||||
id="path5651-5-5-4"
|
||||
d="m 1733.1206,408.94978 h -17.5341 c -0.6888,0 -1.2524,-0.67498 -1.2524,-1.5 v -0.99999 c 0,-0.825 0.5636,-1.5 1.2524,-1.5 h 17.5341 c 0.6889,0 1.2525,0.675 1.2525,1.5 v 0.99999 c 0,0.82502 -0.5636,1.5 -1.2525,1.5 z m 1.2525,6.5 v -1 c 0,-0.82502 -0.5636,-1.49997 -1.2525,-1.49997 h -17.5341 c -0.6888,0 -1.2524,0.67495 -1.2524,1.49997 v 1 c 0,0.82499 0.5636,1.5 1.2524,1.5 h 17.5341 c 0.6889,0 1.2525,-0.67501 1.2525,-1.5 z m 6.7527,33.49998 h 0.3444 c 0.6889,0 1.2525,0.675 1.2525,1.5 v 0.99999 c 0,0.82503 -0.5636,1.50003 -1.2525,1.50003 h -37.1557 c -4.6132,0 -8.3496,-4.475 -8.3496,-10.00001 V 398.9498 c 0,-5.52503 3.7364,-10.00003 8.3496,-10.00003 h 35.9033 c 1.3881,0 2.5049,1.33752 2.5049,3.00003 v 45.99998 c 0,1.25 -0.6471,2.32498 -1.5552,2.77498 -0.3757,2.01253 -0.4592,5.7 -0.042,8.225 z m -31.8015,-11.99997 h 30.0585 v -44 h -30.0585 z m -10.0195,1.99996 c 1.3985,-1.24997 3.1311,-1.99996 5.0097,-1.99996 h 1.6699 v -44 h -1.6699 c -2.7658,0 -5.0097,2.68751 -5.0097,6.00001 z m 38.8569,10.00001 c -0.3237,-2.55 -0.3027,-5.64997 0,-8 h -33.8472 c -6.6797,0 -6.6797,8 0,8 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.11422013" />
|
||||
<path
|
||||
id="path5662-5-0-6"
|
||||
d="m 1993.4717,392.94974 a 11.896253,11.896253 0 0 0 -7.2163,2.46753 c -2.9175,-3.90501 -7.5338,-6.4675 -12.7838,-6.4675 -5.25,0 -9.8662,2.56249 -12.7837,6.4675 a 11.945003,11.945003 0 0 0 -19.2163,9.53249 c 0,5.2175 8.0001,28.00003 8.0001,28.00003 v 16.00002 a 4.0000013,4.0000013 0 0 0 4,3.99997 h 40 a 4.0000013,4.0000013 0 0 0 4,-3.99997 v -16.00002 c 0,0 8,-22.78253 8,-28.00003 a 12.000003,12.000003 0 0 0 -12,-12.00002 z m -38.0001,54.00006 v -10.00001 h 36.0001 v 10.00001 z m 36.3426,-16.00002 h -3.6938 l 1.3513,-16.84377 a 1.0000003,1.0000003 0 0 0 -0.9162,-1.07622 l -2,-0.16007 h -0.081 a 1.0000003,1.0000003 0 0 0 -1,0.92122 l -1.375,17.16252 h -8.7101 v -17.00374 a 1.0000003,1.0000003 0 0 0 -1,-0.99999 h -2 a 1.0000003,1.0000003 0 0 0 -1.0001,0.99999 v 16.99998 h -8.5523 l -1.3751,-17.16246 a 1.0000003,1.0000003 0 0 0 -1.0001,-0.92128 h -0.081 l -1.9999,0.16007 a 1.0000003,1.0000003 0 0 0 -0.9163,1.07625 l 1.3588,16.8475 h -3.6938 c -3.6574,-10.40249 -7.5999,-23.33252 -7.6574,-26.00002 a 5.9462517,5.9462517 0 0 1 9.59,-4.74999 l 4.815,3.6525 3.6174,-4.84124 c 1.9275,-2.58125 4.835,-4.06125 7.9775,-4.06125 3.1425,0 6.05,1.48 7.9775,4.05876 l 3.6176,4.84124 4.815,-3.65001 a 5.9462517,5.9462517 0 0 1 9.59,4.74001 c -0.058,2.67748 -4,15.60751 -7.6575,26.01 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500003" />
|
||||
<path
|
||||
id="path5673-3-8-1"
|
||||
d="m 1615.9579,301.64985 c -1.6875,-1.42499 -3.825,-2.2 -6.025,-2.2 -2.7375,0 -5.3125,1.18748 -7.1125,3.26249 l -2.55,-11.12502 c -1.9625,-8.62499 -9.45,-14.63748 -18.2,-14.63748 -1.4125,0 -2.8375,0.16241 -4.225,0.4875 -10.05,2.33751 -16.3375,12.50002 -14.025,22.63751 l 5.575,24.375 c 0.05,0.23743 0.1375,0.46249 0.2,0.70001 -1.175,0.38748 -2.25,1.47497 -2.25,2.79998 v 10 c 0,1.66251 1.3375,3.00001 2.975,3.00001 h 37.8875 c 1.6375,0 3.15,-1.3375 3.15,-3.00001 v -10 c 0,-1.425 -1.175,-2.55001 -2.4875,-2.86248 l 8.3,-10.05003 c 3.325,-4.02499 2.775,-10.02498 -1.2125,-13.38748 z m -8.6125,35.3 h -36 v -8.00002 h 36 z m 6.775,-24.475 -10.3125,12.47501 h -30.1 c -0.15,-0.46252 -0.3375,-0.92501 -0.45,-1.41253 l -5.575,-24.37499 c -1.825,-7.98748 3.125,-15.98751 11.05,-17.83751 1.1,-0.25012 2.2125,-0.38748 3.325,-0.38748 6.9,0 12.8,4.7375 14.35,11.53751 l 3.4375,15.04998 0.9,3.92501 2.5625,-3.1 2.425,-2.9375 c 1.0375,-1.26252 2.5625,-1.97499 4.1875,-1.97499 1.275,0 2.5,0.44998 3.4875,1.27498 2.325,1.94998 2.6375,5.42501 0.7125,7.76251 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5684-1-6-3"
|
||||
d="m 1622.3438,412.94978 h -14.1712 l 13.3413,-13.34122 c 3.0137,-3.01376 2.1887,-8.09379 -1.6226,-10.00003 a 6.2446252,6.2446252 0 0 0 -2.7912,-0.65876 c -1.3275,0 -2.645,0.42251 -3.7475,1.24875 l -30.335,22.75126 h -22.6738 c -0.5525,0 -1,0.44749 -1,1.00002 v 2.00001 c 0,0.55248 0.4475,0.99997 1,0.99997 h 3 v 4.00002 c 0,10.17749 6.345,18.85376 15.2863,22.34375 -1.595,2.09748 -2.7125,4.57874 -3.1151,7.30498 -0.1812,1.22878 0.7476,2.35125 1.9901,2.35125 h 27.6775 c 1.2425,0 2.1712,-1.12125 1.99,-2.35125 -0.4013,-2.72624 -1.5188,-5.20874 -3.115,-7.30498 8.9412,-3.48999 15.2862,-12.16626 15.2862,-22.34375 v -4.00002 h 3 c 0.5525,0 1,-0.44749 1,-0.99997 v -2.00001 c 0,-0.55253 -0.4475,-1.00002 -1,-1.00002 z m -6.5925,-19.55125 c 2.1975,-1.64751 4.9013,1.41375 2.9338,3.38127 l -16.1688,16.16998 h -12.8325 z m -0.4075,27.55127 c 0,8.28874 -5.0012,15.59624 -12.74,18.61749 l -4.9387,1.92749 3.21,4.22 c 0.76,1.00001 1.3587,2.09375 1.7737,3.235 h -22.6087 c 0.415,-1.14125 1.0125,-2.23499 1.7737,-3.235 l 3.21,-4.22 -4.9387,-1.92749 c -7.74,-3.02125 -12.7413,-10.32875 -12.7413,-18.61749 v -4.00002 h 48 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5695-7-5-0"
|
||||
d="m 1208.2309,276.94983 h -40 a 8.0000001,8.0000001 0 0 0 -8,7.99999 v 52.00003 a 4.0000002,4.0000002 0 0 0 4,4 h 48 a 4.0000002,4.0000002 0 0 0 4,-4 v -52.00003 a 8.0000001,8.0000001 0 0 0 -8,-7.99999 z m 4,60.00002 h -48 v -40.00001 h 48 z m 0,-44 h -48 v -8.00003 a 4.0000002,4.0000002 0 0 1 4,-3.99998 h 40 a 4.0000002,4.0000002 0 0 1 4,3.99998 z m -6,-8.00003 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -20,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m -8,0 a 2.0000001,2.0000001 0 1 0 2,2 2.0000001,2.0000001 0 0 0 -2,-2 z m 0,48.00003 h 36 a 2.0000001,2.0000001 0 0 0 2,-2.00001 v -27.99999 a 2.0000001,2.0000001 0 0 0 -2,-2 h -36 a 2.0000001,2.0000001 0 0 0 -2,2 v 27.99999 a 2.0000001,2.0000001 0 0 0 2,2.00001 z m 2,-28 h 32 v 23.99998 h -32 z m 26,3.99999 h -20 a 2.0000055,2.0000055 0 0 0 0,4.00001 h 20 a 2.0000055,2.0000055 0 0 0 0,-4.00001 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.125" />
|
||||
<path
|
||||
id="path5706-9-5-9"
|
||||
d="m 2013.5532,304.32153 c -6.3184,-16.42668 -22.26,-27.37169 -40.0816,-27.37169 -17.8216,0 -33.765,10.94501 -40.0783,27.37169 -7.0884,0.27334 -7.9217,6.23499 -7.9217,7.65166 a 7.6816659,7.6816659 0 0 0 7.7032,7.64333 c 0.4535,0 0.7951,-0.0999 1.2201,-0.12668 l 5.41,16.22001 a 7.6666659,7.6666659 0 0 0 7.2717,5.24 h 52.79 a 7.6666659,7.6666659 0 0 0 7.2716,-5.24164 l 5.405,-16.21837 c 0.4234,0.0284 0.7667,0.12668 1.22,0.12668 a 7.6816659,7.6816659 0 0 0 7.7083,-7.64333 c 0,-1.46168 -0.8583,-7.35667 -7.9183,-7.65166 z m -11.4733,29.69666 a 2.3333332,2.3333332 0 0 1 -2.2133,1.59832 h -52.7917 a 2.3333332,2.3333332 0 0 1 -2.2134,-1.59666 l -5.2099,-15.63166 a 21.178333,21.178333 0 0 0 4.8665,-2.78166 c 1.5152,-1.12332 2.1001,-1.57168 4.2351,0.0108 2.0201,1.5 5.4117,4.00001 11.3233,4.00001 5.9118,0 9.3067,-2.51002 11.3334,-4.01334 1.5117,-1.11834 2.085,-1.56668 4.2017,0.008 2.025,1.5 5.41,4 11.3216,4 5.9117,0 9.3017,-2.51001 11.3233,-4.01001 1.8134,-1.34498 2.3534,-1.36667 4.1867,0 a 21.151665,21.151665 0 0 0 4.8466,2.78171 l -5.2099,15.63333 z m 11.6867,-19.73502 c -4.1568,0 -6.365,-1.63998 -8.1517,-2.96832 -4.9517,-3.66666 -8.3434,-1.615 -10.5367,0.0108 -1.7733,1.31831 -3.9833,2.95833 -8.145,2.95833 -4.1616,0 -6.3699,-1.64002 -8.1566,-2.9617 -5.3033,-3.94665 -8.9167,-1.2083 -10.55,0 -1.7766,1.32168 -3.9851,2.9617 -8.1518,2.9617 -4.1666,0 -6.375,-1.64002 -8.1666,-2.9617 -1.1299,-0.8333 -4.9517,-4.16664 -10.5783,0 -1.7801,1.31668 -4,2.9567 -8.1666,2.9567 a 2.31167,2.31167 0 1 1 0,-4.62334 c 0.8982,0 1.8466,0.0801 4.4583,-1.36167 8.8882,-25.65332 33.1366,-26.01 35.85,-26.01 2.6667,0 26.9534,0.33333 35.8333,25.99998 2.6249,1.485 3.4283,1.38502 4.4633,1.38502 a 2.3116666,2.3116666 0 1 1 0,4.62331 z m -55.1017,-23.71832 a 2.6783329,2.6783329 0 0 0 -3.5783,1.19333 l -2.6668,5.33334 a 2.6666664,2.6666664 0 0 0 1.1934,3.57832 c 1.5901,0.78336 3.0601,-0.16676 3.5782,-1.19331 l 2.6668,-5.33333 a 2.6666664,2.6666664 0 0 0 -1.1933,-3.57835 z m 33.19,1.19168 a 2.6672561,2.6672561 0 1 0 -4.7716,2.38499 l 2.6666,5.33333 c 0.5167,1.02834 1.9884,1.97668 3.5783,1.19334 a 2.6666664,2.6666664 0 0 0 1.1933,-3.57835 z m -18.3833,-1.47333 a 2.6666664,2.6666664 0 0 0 -2.6667,2.66667 v 5.3333 a 2.6667,2.6667 0 1 0 5.3334,0 v -5.3333 a 2.6666664,2.6666664 0 0 0 -2.6667,-2.66667 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16666667" />
|
||||
<path
|
||||
id="path5717-1-3-4"
|
||||
d="m 1196.1683,407.93759 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 1.9999 a 0.99249264,0.99249264 0 0 0 1.0001,-1.02497 c -0.2627,-5.26248 -2.4125,-9.16246 -5.1999,-11.93744 -2.3001,-2.33746 -2.6376,-4.77496 -2.7376,-6.11246 a 0.98374271,0.98374271 0 0 0 -1,-0.88749 l -2,0.0119 a 0.99999255,0.99999255 0 0 0 -0.9874,1.08749 13.182401,13.182401 0 0 0 3.9,8.71244 c 2.1624,2.14997 3.7999,5.08743 4.0249,9.1749 z m -13.9374,0 a 1.0149924,1.0149924 0 0 0 1,0.97499 h 2 a 0.99249264,0.99249264 0 0 0 1,-1.02497 c -0.2625,-5.26248 -2.4125,-9.16246 -5.2,-11.93744 -2.2875,-2.33746 -2.6249,-4.77496 -2.7249,-6.11246 a 0.98749265,0.98749265 0 0 0 -1.0125,-0.88749 l -2,0.0119 a 0.99999255,0.99999255 0 0 0 -0.9875,1.08749 c 0.125,1.86245 0.65,5.44994 3.9,8.71244 2.1612,2.14997 3.7987,5.08743 4.0249,9.1749 z m 33.9998,5.01246 h -55.9996 a 3.99997,3.99997 0 0 0 -4,3.99997 c 0,11.8374 6.4449,22.14485 15.9999,27.68105 v 4.31874 a 3.99997,3.99997 0 0 0 3.9999,3.99997 h 23.9998 a 3.99997,3.99997 0 0 0 4.0001,-3.99997 v -4.31874 c 9.5548,-5.5362 15.9998,-15.84365 15.9998,-27.68105 a 3.99997,3.99997 0 0 0 -3.9999,-3.99997 z m -16,29.3748 v 6.62496 h -23.9998 v -6.62496 c -16.5423,-9.58368 -15.9998,-23.22234 -15.9998,-25.37483 h 55.9996 c 0,2.18249 0.4212,15.86113 -16,25.37483 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499909" />
|
||||
<path
|
||||
id="path5728-1-8-8"
|
||||
d="m 1458.7725,276.94984 c -17.6725,0 -32,14.32752 -32,32.00002 0,17.67248 14.3275,31.99999 32,31.99999 17.6725,0 32,-14.32751 32,-31.99999 0,-17.6725 -14.3275,-32.00002 -32,-32.00002 z m 0,60.00001 c -15.4388,0 -28,-12.56125 -28,-27.99999 0,-15.43877 12.5612,-28.00002 28,-28.00002 15.4387,0 28,12.56125 28,28.00002 0,15.43874 -12.5613,27.99999 -28,27.99999 z m 19.7987,-27.99999 3.535,-3.53503 c 0.39,-0.39 0.39,-1.02374 0,-1.41373 l -1.4137,-1.41376 c -0.39,-0.38999 -1.0238,-0.38999 -1.4138,0 l -3.535,3.535 -5.6575,-5.65624 2.8288,-2.82875 2.1212,2.12124 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4137,-1.41373 c 0.39,-0.39002 0.39,-1.02376 0,-1.41376 l -2.1212,-2.12127 0.7075,-0.70748 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4138,-1.41376 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -0.7075,0.70752 -2.1213,-2.12124 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -1.4137,1.41372 c -0.3901,0.39 -0.3901,1.02377 0,1.41376 l 2.1211,2.12124 -2.8287,2.82875 -5.6575,-5.65623 3.5363,-3.535 c 0.39,-0.39 0.39,-1.02373 0,-1.41376 l -1.415,-1.41875 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -3.5362,3.53626 -3.5363,-3.53626 c -0.39,-0.39 -1.0237,-0.39 -1.4137,0 l -1.4138,1.41376 c -0.39,0.38999 -0.39,1.02373 0,1.41376 l 3.5363,3.535 -5.6563,5.65623 -2.8287,-2.82875 2.1212,-2.12124 c 0.39,-0.38999 0.39,-1.02376 0,-1.41376 l -1.4137,-1.41375 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -2.1212,2.12127 -0.7076,-0.70752 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -1.4137,1.41376 c -0.39,0.39 -0.39,1.02374 0,1.41376 l 0.7075,0.70748 -2.1213,2.12124 c -0.39,0.39003 -0.39,1.02377 0,1.41376 l 1.4138,1.41376 c 0.39,0.39 1.0237,0.39 1.4137,0 l 2.1213,-2.12127 2.8287,2.82878 -5.6562,5.65624 -3.5363,-3.535 c -0.39,-0.38999 -1.0237,-0.38999 -1.4137,0 l -1.4175,1.41749 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 3.5362,3.53626 -3.5362,3.53623 c -0.39,0.39002 -0.39,1.02376 0,1.41376 l 1.4137,1.41376 c 0.39,0.38999 1.0238,0.38999 1.4137,0 l 3.5363,-3.535 5.6563,5.65623 -2.8288,2.82874 -2.1212,-2.12121 c -0.39,-0.39 -1.0238,-0.39 -1.4138,0 l -1.4137,1.41372 c -0.39,0.38999 -0.39,1.02375 0,1.41375 l 2.1212,2.12124 -0.7075,0.70752 c -0.39,0.39 -0.39,1.02375 0,1.41375 l 1.4138,1.41372 c 0.39,0.39005 1.0237,0.39005 1.4137,0 l 0.7075,-0.70747 2.1212,2.12125 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4138,-1.41378 c 0.39,-0.38999 0.39,-1.02372 0,-1.41372 l -2.1213,-2.12127 2.8287,-2.82871 5.6576,5.6575 -3.5363,3.53621 c -0.39,0.39 -0.39,1.02378 0,1.41378 l 1.4138,1.41372 c 0.39,0.39002 1.0237,0.39002 1.4137,0 l 3.5388,-3.53499 3.5362,3.53626 c 0.39,0.38999 1.0238,0.38999 1.4138,0 l 1.4137,-1.41378 c 0.39,-0.38999 0.39,-1.02372 0,-1.41372 l -3.5362,-3.53626 5.6575,-5.65751 2.8287,2.82877 -2.1212,2.12122 c -0.39,0.39002 -0.39,1.02378 0,1.41377 l 1.4137,1.41375 c 0.39,0.39002 1.0238,0.39002 1.4138,0 l 2.1212,-2.12122 0.7075,0.70747 c 0.39,0.39 1.0237,0.39 1.4137,0 l 1.4138,-1.41377 c 0.39,-0.38997 0.39,-1.02373 0,-1.4137 l -0.7075,-0.70752 2.1213,-2.12124 c 0.39,-0.39 0.39,-1.02378 0,-1.41375 l -1.4138,-1.41378 c -0.39,-0.38999 -1.0237,-0.38999 -1.4138,0 l -2.1212,2.12127 -2.8287,-2.82874 5.6562,-5.65627 3.5363,3.535 c 0.39,0.38999 1.0237,0.38999 1.4137,0 l 1.4138,-1.41373 c 0.39,-0.39003 0.39,-1.02377 0,-1.41376 z m -19.7987,-14.14252 5.6562,5.65627 -5.6562,5.6575 -5.6563,-5.65627 z m -14.1425,14.14252 5.6562,-5.6575 5.6575,5.6575 -5.6575,5.6575 z m 14.1425,14.14249 -5.6575,-5.65751 5.6575,-5.6575 5.6575,5.6575 z m 8.485,-8.48626 -5.6563,-5.65623 5.6575,-5.65627 5.6563,5.65627 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499999" />
|
||||
<path
|
||||
id="path5739-8-9-8"
|
||||
d="m 1848.9276,447.73728 1.7751,-20.60001 c -5.2626,-4.1375 -8.8,-9.62501 -8.8,-16.18747 0.013,-11.78751 11.0249,-22.00003 19.0124,-22.00003 2.7625,0 5,2.16252 5,4.81248 v 54.375 c 0,2.65001 -2.2375,4.81253 -5,4.81253 h -7 c -2.8499,0 -5.2249,-2.33754 -4.9875,-5.2125 z m -3.0125,-36.78748 c 0,6.37497 4.0251,10.68747 8.975,14.31247 l -1.9749,22.825 c -0.036,0.46249 0.4249,0.86251 0.9999,0.86251 h 7 c 0.5376,0 1,-0.37512 1,-0.81253 v -54.375 c 0,-0.43746 -0.4624,-0.81248 -1,-0.81248 -5.5749,0 -15,8.22499 -15,18.00003 z m -9.9125,-17.77503 c -0.4125,-2.43747 -2.6499,-4.225 -5.7625,-4.225 -1.4874,0 -3.0125,0.42503 -4.1625,1.40002 -1.0499,-0.88752 -2.5,-1.40002 -4.1625,-1.40002 -1.6625,0 -3.1125,0.5125 -4.1625,1.40002 -1.1499,-0.97499 -2.675,-1.40002 -4.1625,-1.40002 -3.15,0 -5.3499,1.81253 -5.7625,4.225 -0.2251,1.17499 -1.9124,10.57502 -1.9124,14.5125 0,6.36249 3.3374,11.45003 8.8749,13.8375 l -1.425,26.35001 c -0.1499,2.74997 2.0375,5.075 4.8,5.075 h 7.5 c 2.7501,0 4.95,-2.31254 4.8001,-5.075 l -1.4251,-26.35001 c 5.525,-2.38747 8.8751,-7.47501 8.8751,-13.8375 0,-3.93748 -1.6876,-13.33751 -1.9126,-14.5125 z m -11.05,25.77502 1.525,29.13748 c 0.024,0.46249 -0.3373,0.86251 -0.8125,0.86251 h -7.5 c -0.4625,0 -0.8374,-0.38761 -0.8125,-0.86251 l 1.525,-29.13748 c -5.3,-1.10001 -8.9624,-5.37504 -8.9624,-11.26252 0,-3.71247 1.8499,-13.82501 1.8499,-13.82501 0.1999,-1.23751 3.5375,-1.2125 3.6875,0.0241 v 15.3125 c 0.1127,1.43748 3.5251,1.46248 3.6876,0.0241 l 0.925,-15.3625 c 0.1998,-1.21248 3.4875,-1.21248 3.6874,0 l 0.9251,15.3625 c 0.1624,1.42502 3.575,1.40002 3.6875,-0.0241 v -15.30001 c 0.1499,-1.23751 3.4875,-1.26249 3.6874,-0.0241 0,0 1.85,10.11254 1.85,13.82504 0.013,5.84999 -3.625,10.14997 -8.95,11.24997 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499996" />
|
||||
<path
|
||||
id="path5750-4-7-1"
|
||||
d="m 1082.2309,404.94981 c 3.3137,0 6,-2.68629 6,-6.00003 0,-3.31375 -2.6863,-6.00001 -6,-6.00001 -3.3138,0 -6,2.68626 -6,6.00001 0,3.31374 2.6862,6.00003 6,6.00003 z m 0,-8.00002 c 1.1025,0 2,0.89747 2,1.99999 0,1.10252 -0.8975,1.99998 -2,1.99998 -1.1025,0 -2,-0.89746 -2,-1.99998 0,-1.10252 0.8975,-1.99999 2,-1.99999 z m 22,14.99997 v -1.99998 c 0,-0.55251 -0.4475,-1 -1,-1 h -54 c -0.5525,0 -1,0.44749 -1,1 v 1.99998 c 0,0.5525 0.4475,1.00002 1,1.00002 h 5.8412 c -4.2437,5.72251 -6.8412,12.70251 -6.8412,19.19999 0,4.88501 1.4775,8.83127 4,11.94128 v 6.85874 c 0,1.10501 0.895,1.99999 2,1.99999 1.105,0 2,-0.89498 2,-1.99999 v -3.16751 c 5.0825,3.50372 12.16,5.1675 20,5.1675 7.8387,0 14.9175,-1.66378 20,-5.16623 v 3.16624 c 0,1.10501 0.895,1.99999 2,1.99999 1.105,0 2,-0.89498 2,-1.99999 v -6.85874 c 2.5225,-3.11001 4,-7.05627 4,-11.94128 0,-6.49748 -2.5975,-13.47748 -6.8413,-19.19999 h 5.8413 c 0.5525,0 1,-0.44752 1,-1.00002 z m -4,20.20001 c 0,15.16251 -16.7837,16.80004 -24,16.80004 -7.2163,0 -24,-1.63753 -24,-16.80004 0,-6.53124 3.0175,-13.75248 7.955,-19.19999 h 32.0887 c 4.9388,5.44751 7.9563,12.66875 7.9563,19.19999 z m -32,-35.19998 c 2.2087,0 4,-1.79123 4,-4.00002 0,-2.20877 -1.7913,-4 -4,-4 -2.2087,0 -4,1.79123 -4,4 0,2.20879 1.7913,4.00002 4,4.00002 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12500001" />
|
||||
<path
|
||||
id="path5761-6-1-0"
|
||||
d="m 1860.9794,297.75696 0.84,-2.5214 v 0 l 6.0957,-18.28571 h -57.1428 a 11.428558,11.428558 0 0 0 -11.4285,11.42856 v 14.85712 a 1.1428558,1.1428558 0 0 0 1.1428,1.14287 h 2.2858 a 1.1428558,1.1428558 0 0 0 1.1428,-1.14287 v -14.85712 a 6.8571343,6.8571343 0 0 1 6.8571,-6.85711 h 3.81 l 4.5714,13.71426 v 0 l 0.8643,2.59426 c -7.0442,5.67715 -11.5314,14.21856 -11.5314,23.78 0,7.35282 2.66,12.10998 7.0914,16.81567 a 8.1685614,8.1685614 0 0 0 5.9329,2.52429 h 37.9528 a 8.1542755,8.1542755 0 0 0 5.9214,-2.51429 c 4.4286,-4.70712 7.0986,-9.46284 7.1014,-16.8171 0,-9.47287 -4.3757,-18.12142 -11.5071,-23.86143 z m -41.5785,-16.23566 h 42.1714 l -4.5715,13.71426 h -33.0285 z m 5.45,18.28568 h 31.3857 c 3,2.41714 7.8114,6.01142 10.3571,13.71426 h -52.1942 c 2.5871,-7.71427 7.5457,-11.37283 10.4514,-13.71426 z m 37.2071,35.49281 a 3.5599955,3.5599955 0 0 1 -2.5943,1.07857 h -37.9528 a 3.5714241,3.5714241 0 0 1 -2.6043,-1.08858 c -4.2628,-4.52429 -5.8485,-8.23282 -5.8485,-13.67996 a 25.471396,25.471396 0 0 1 0.2712,-3.51716 h 54.3185 a 25.781397,25.781397 0 0 1 0.2671,3.52428 c 0,5.4457 -1.5885,9.15429 -5.8571,13.68285 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.14285697" />
|
||||
<path
|
||||
id="path5772-1-7-4"
|
||||
d="m 1731.3436,317.94896 c -1.6562,0 -2.9999,1.34247 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65748 -1.3438,-2.99995 -3,-2.99995 z M 1710.344,300.9493 c 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99992 3,2.99992 1.6562,0 2.9999,-1.34371 2.9999,-2.99992 z m 1,16.99966 c -1.6562,0 -2.9999,1.34247 -2.9999,2.99995 0,1.65621 1.3437,2.99992 2.9999,2.99992 1.6562,0 3,-1.34371 3,-2.99992 0,-1.65748 -1.3438,-2.99995 -3,-2.99995 z m 11.9998,-11.99978 c -1.6562,0 -3,1.34246 -3,2.99995 0,1.65621 1.3438,2.99995 3,2.99995 1.6562,0 2.9999,-1.34374 2.9999,-2.99995 0,-1.65749 -1.3437,-2.99995 -2.9999,-2.99995 z m 27.8144,2.97744 c -8.7461,-0.10616 -15.8084,-7.21111 -15.8084,-15.98218 -8.7711,0 -15.8747,-7.0611 -15.9822,-15.80595 -0.8275,-0.1262 -1.6612,-0.18865 -2.4912,-0.18865 -2.585,0 -5.1474,0.60625 -7.4736,1.79122 l -8.6411,4.40243 a 16.527304,16.527304 0 0 0 -7.2236,7.22609 l -4.3874,8.60983 a 16.580302,16.580302 0 0 0 -1.6025,10.11857 l 1.51,9.53482 a 16.569053,16.569053 0 0 0 4.6449,9.11979 l 6.8461,6.84488 a 16.50418,16.50418 0 0 0 9.0886,4.63243 l 9.5885,1.51749 c 0.8575,0.13639 1.72,0.20246 2.58,0.20246 2.59,0 5.1562,-0.61003 7.4861,-1.7975 l 8.6411,-4.40241 a 16.527304,16.527304 0 0 0 7.2236,-7.22608 l 4.3874,-8.60986 c 1.57,-3.07869 2.1262,-6.57111 1.6137,-9.98732 z m -5.1773,8.16985 -4.3875,8.61107 c -1.2099,2.37496 -3.1037,4.26866 -5.4761,5.47741 l -8.6411,4.40243 c -1.7475,0.88995 -3.7087,1.36117 -5.6699,1.36117 -0.6512,0 -1.3087,-0.0512 -1.9537,-0.1538 l -9.5873,-1.51744 c -2.625,-0.41624 -5.0062,-1.62999 -6.8861,-3.50993 l -6.8462,-6.84488 c -1.8874,-1.88622 -3.1049,-4.27866 -3.5224,-6.91613 l -1.51,-9.53354 c -0.4187,-2.63997 0,-5.29489 1.215,-7.6761 l 4.3874,-8.60983 c 1.21,-2.37496 3.1037,-4.26866 5.4762,-5.47739 l 8.6398,-4.40368 c 1.4162,-0.72123 2.9749,-1.16624 4.5637,-1.30747 1.6437,7.89361 7.9798,14.11846 15.9059,15.60721 1.4887,7.92733 7.7136,14.26346 15.6085,15.90592 -0.1374,1.59123 -0.58,3.14243 -1.3162,4.58491 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.1249976" />
|
||||
<path
|
||||
id="path5794-5-6-2"
|
||||
d="m 1328.408,276.94983 c -16.5581,0 -31.0068,10.95333 -39.0524,20.33332 l -16.0613,-14.27833 c -2.2371,-1.84166 -5.5619,0.11165 -4.999,2.92669 l 4.4492,23.01833 -4.4508,23.02002 c -0.5613,2.81334 2.7602,4.76666 4.9922,2.93169 l 16.0615,-14.27504 c 8.0521,9.37001 22.5091,20.32334 39.0606,20.32334 25.291,0 45.7932,-25.60002 45.7932,-32.00001 0,-6.39999 -20.5022,-32.00001 -45.7932,-32.00001 z m 0,58.6667 c -14.1407,0 -27.3756,-9.54502 -35.0453,-18.47833 l -3.3695,-3.92501 c -5.1646,4.24667 -2.0268,1.47999 -15.2467,13.60166 3.6029,-18.98167 3.1079,-16.395 3.4059,-17.86501 -0.298,-1.46835 0.1985,1.12166 -3.4043,-17.86501 13.2464,12.14167 10.1004,9.36833 15.2467,13.60335 l 3.3695,-3.92502 c 7.6699,-8.93333 20.8965,-18.48002 35.0437,-18.48002 21.2261,0 39.0905,21.08169 40.46,26.6667 -1.3695,5.58501 -19.2339,26.66669 -40.46,26.66669 z m -3.6063,-41.72502 -1.8728,-1.885 a 1.3246526,1.333334 0 0 0 -1.8744,0 l -14.0215,14.11 a 1.3246526,1.333334 0 0 0 0,1.88498 l 1.8728,1.885 a 1.3246526,1.333334 0 0 0 1.8727,0 l 14.0232,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 18.5451,2.66667 -1.8727,-1.88499 a 1.3246526,1.333334 0 0 0 -1.8743,0 l -24.6189,24.77667 a 1.3246526,1.333334 0 0 0 0,1.885 l 1.8729,1.88499 a 1.3246526,1.333334 0 0 0 1.8727,0 l 24.6203,-24.77002 a 1.3246526,1.333334 0 0 0 0,-1.89165 z m 6.0753,11.44835 a 1.3246526,1.333334 0 0 0 -1.8745,0 l -14.0214,14.11001 a 1.3246526,1.333334 0 0 0 0,1.88497 l 1.8726,1.885 a 1.3246526,1.333334 0 0 0 1.8729,0 l 14.0229,-14.10333 a 1.3246526,1.333334 0 0 0 0,-1.88666 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.16612327" />
|
||||
<path
|
||||
id="path5805-4-6-7"
|
||||
d="m 1076.231,318.94985 c -1.1001,0 -2.0001,0.9 -2.0001,1.99998 0,1.10001 0.9,1.99999 2.0001,1.99999 1.0999,0 1.9999,-0.89998 1.9999,-1.99999 0,-1.09998 -0.9,-1.99998 -1.9999,-1.99998 z m -4.0001,-31.00002 c -1.1,0 -1.9999,0.90001 -1.9999,2.00003 0,1.1 0.8999,1.99999 1.9999,1.99999 1.1001,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.8999,-2.00003 -2,-2.00003 z m 4.0001,23.00002 c -1.1001,0 -2.0001,0.9 -2.0001,1.99999 0,1.1 0.9,1.99998 2.0001,1.99998 1.0999,0 1.9999,-0.89998 1.9999,-1.99998 0,-1.09999 -0.9,-1.99999 -1.9999,-1.99999 z m 0,-7.99999 c -1.1001,0 -2.0001,0.9 -2.0001,1.99998 0,1.1 0.9,2.00003 2.0001,2.00003 1.0999,0 1.9999,-0.90003 1.9999,-2.00003 0,-1.09998 -0.9,-1.99998 -1.9999,-1.99998 z m 4,-15.00003 c -1.1001,0 -2.0001,0.90001 -2.0001,2.00003 0,1.1 0.9,1.99999 2.0001,1.99999 1.1,0 2,-0.89999 2,-1.99999 0,-1.10002 -0.9,-2.00003 -2,-2.00003 z m 23.9999,19.00004 c 0,-5.51253 -4.4875,-10.00002 -9.9999,-10.00002 h -4.95 c 1.2874,-2.88749 1.5749,-6.17501 0.7249,-9.45 -1.2375,-4.84999 -5.175,-8.79998 -10,-10.06251 -1.2499,-0.32487 -2.5125,-0.48751 -3.7749,-0.48751 -3.8125,0 -7.3876,1.48752 -10.075,4.17501 -2.6876,2.6875 -4.175,6.26249 -4.175,10.07502 0,1.99999 0.4249,3.96249 1.225,5.74999 h -4.9751 c -5.5125,0 -10,4.48749 -10,10.00002 0,5.51246 4.4875,9.99998 10,9.99998 h 3.4876 l -7.25,7.7 c -3.475,4.27498 -2.8251,10.58751 1.4499,14.06247 1.7875,1.43751 4.0251,2.23753 6.3125,2.23753 3.025,0 5.8625,-1.35001 7.7626,-3.70002 l 6.2375,-6.44998 6.2375,6.44998 c 1.8999,2.35001 4.7374,3.70002 7.7624,3.70002 2.2876,0 4.525,-0.80002 6.3,-2.23753 4.2751,-3.47496 4.925,-9.78749 1.45,-14.06247 l -7.2499,-7.7 h 3.5 c 5.5124,0 9.9999,-4.48753 9.9999,-9.99998 z m -17.925,10.88748 8.575,9.32498 c 2.0875,2.575 1.7,6.35 -0.875,8.43751 -1.1125,0.90001 -2.45,1.34998 -3.775,1.34998 -1.7499,0 -3.475,-0.7625 -4.6624,-2.21247 l -6.2376,-6.45001 c -0.8,-0.98751 -1.95,-1.475 -3.0999,-1.475 -1.1501,0 -2.3,0.48749 -3.1001,1.475 l -6.2375,6.45001 c -1.1874,1.46248 -2.9124,2.21247 -4.6625,2.21247 -1.3249,0 -2.6624,-0.43746 -3.775,-1.34998 -2.575,-2.08751 -2.9625,-5.86248 -0.875,-8.43751 l 8.5751,-9.32498 c 1.5874,-1.96249 0.1999,-4.88751 -2.325,-4.88751 h -5.6001 c -3.3125,0 -6,-2.68749 -6,-5.99997 0,-3.31251 2.6875,-6.00001 6,-6.00001 h 10.2 c 1.1625,0 1.775,-1.4375 0.9126,-2.21252 -2.0626,-1.86248 -3.3625,-4.53748 -3.3625,-7.53748 0,-5.66251 4.5874,-10.25002 10.25,-10.25002 0.9,0 1.825,0.11255 2.7625,0.3625 3.4499,0.9 6.2624,3.725 7.1374,7.18748 1.0375,4.06252 -0.3374,7.83755 -3,10.23752 -0.8625,0.78752 -0.2748,2.22502 0.9,2.22502 h 10.2001 c 3.3124,0 5.9999,2.6875 5.9999,5.99997 0,3.31251 -2.6875,6 -5.9999,6 h -5.5876 c -2.5249,-0.0134 -3.925,2.91253 -2.3375,4.87502 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.12499995" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 168 KiB |
115
cookbook/static/assets/spinner.svg
Normal file
115
cookbook/static/assets/spinner.svg
Normal file
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="2000px"
|
||||
height="2000px"
|
||||
viewBox="0 0 2000 2000"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
sodipodi:docname="spinner.svg"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||
<defs
|
||||
id="defs265" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.24748737"
|
||||
inkscape:cx="507.59315"
|
||||
inkscape:cy="671.7335"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata268">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
id="path5640-9"
|
||||
d="m 1363.6895,468.03149 c -6.2646,0 -11.3386,5.07398 -11.3386,11.33858 0,6.25981 5.074,11.33859 11.3386,11.33859 6.2645,0 11.3386,-5.07878 11.3386,-11.33859 0,-6.2646 -5.0741,-11.33858 -11.3386,-11.33858 z m 63.425,-26.44248 42.4018,-162.5339 h -219.2126 c -12.5054,0 -22.6772,10.17173 -22.6772,22.67732 v 75.5904 c 0,12.50559 10.1718,22.67716 22.6772,22.67716 h 48.3118 l 3.5576,40.89453 c -17.0411,6.52913 -29.1923,22.91807 -29.1923,42.25508 v 22.67717 c 0,8.34795 6.7703,15.11811 15.1181,15.11811 H 1439.28 c 8.3483,0 15.1181,-6.77016 15.1181,-15.11811 V 483.1496 c 0,-18.61414 -11.2391,-34.5733 -27.2836,-41.56059 z m -176.8108,-56.70713 c -4.1621,0 -7.5591,-3.3874 -7.5591,-7.55905 v -75.5904 c 0,-4.17165 3.397,-7.55905 7.5591,-7.55905 h 39.1086 l 7.8898,90.7085 z m 199.644,-90.7085 -7.8897,30.23606 h -74.589 c -2.0882,0 -3.7795,1.69138 -3.7795,3.77968 v 7.55891 c 0,2.0883 1.6913,3.77953 3.7795,3.77953 h 70.6488 l -7.8897,30.23622 h -62.7591 c -2.0882,0 -3.7795,1.69137 -3.7795,3.77952 v 7.55906 c 0,2.0883 1.6913,3.77952 3.7795,3.77952 h 58.8144 l -13.8048,52.91339 h -95.4001 L 1304.5871,294.17338 Z M 1439.28,505.82677 H 1288.0989 V 483.1496 c 0,-16.67244 13.564,-30.23622 30.2362,-30.23622 h 90.7087 c 16.6726,0 30.2362,13.56378 30.2362,30.23622 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5684-6-0"
|
||||
d="m 1740.0225,645.7638 h -53.5609 l 50.4238,-50.42358 c 11.3904,-11.39059 8.2723,-30.59063 -6.1322,-37.79536 a 23.601733,23.601733 0 0 0 -10.5495,-2.48976 c -5.0177,0 -9.9972,1.59693 -14.1641,4.71969 l -114.652,85.98901 h -85.6959 c -2.0881,0 -3.7795,1.6913 -3.7795,3.77957 v 7.55905 c 0,2.08815 1.6914,3.77945 3.7795,3.77945 h 11.3386 V 676 c 0,38.4661 23.9811,71.2583 57.7746,84.4488 -6.0283,7.9276 -10.2519,17.3056 -11.7732,27.6095 -0.6848,4.6441 2.8252,8.8866 7.5213,8.8866 h 104.6078 c 4.6961,0 8.2065,-4.2378 7.5213,-8.8866 -1.5163,-10.3039 -5.74,-19.6866 -11.7728,-27.6095 33.7935,-13.1905 57.7746,-45.9827 57.7746,-84.4488 v -15.11813 h 11.3386 c 2.0881,0 3.7795,-1.6913 3.7795,-3.77945 v -7.55905 c 0,-2.08827 -1.6914,-3.77957 -3.7795,-3.77957 z m -24.9166,-73.89453 c 8.3055,-6.22673 18.5246,5.34331 11.088,12.77961 l -61.11,61.11492 h -48.5008 z M 1713.5658,676 c 0,31.3276 -18.9026,58.9464 -48.1512,70.3654 l -18.6664,7.285 12.1323,15.9495 c 2.8729,3.7797 5.1357,7.9135 6.7042,12.2269 h -85.4506 c 1.5685,-4.3134 3.8267,-8.4472 6.7041,-12.2269 l 12.1323,-15.9495 -18.6663,-7.285 C 1551.0506,734.9464 1532.1484,707.3276 1532.1484,676 v -15.11813 h 181.4174 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5695-2"
|
||||
d="M 1075.5907,1636.198 H 924.40969 a 30.236221,30.236221 0 0 0 -30.2366,30.2361 v 196.5355 a 15.118111,15.118111 0 0 0 15.11811,15.1181 h 181.4177 a 15.118111,15.118111 0 0 0 15.118,-15.1181 v -196.5355 a 30.236221,30.236221 0 0 0 -30.2362,-30.2361 z m 15.1181,226.7716 H 909.2912 v -151.1811 h 181.4176 z m 0,-166.2992 H 909.2912 v -30.2363 a 15.118111,15.118111 0 0 1 15.11849,-15.118 h 151.18101 a 15.118111,15.118111 0 0 1 15.1181,15.118 z m -22.6775,-30.2363 a 7.5590556,7.5590556 0 1 0 7.5594,7.5591 7.5590556,7.5590556 0 0 0 -7.5594,-7.5591 z m -30.2359,0 a 7.5590556,7.5590556 0 1 0 7.5591,7.5591 7.5590556,7.5590556 0 0 0 -7.5591,-7.5591 z m -75.59041,0 a 7.5590556,7.5590556 0 1 0 7.5587,7.5591 7.5590556,7.5590556 0 0 0 -7.5587,-7.5591 z m -30.23625,0 a 7.5590556,7.5590556 0 1 0 7.55906,7.5591 7.5590556,7.5590556 0 0 0 -7.55906,-7.5591 z m 0,181.4175 h 136.06256 a 7.5590556,7.5590556 0 0 0 7.5594,-7.5591 v -105.8268 a 7.5590556,7.5590556 0 0 0 -7.5594,-7.559 H 931.96874 a 7.5590556,7.5590556 0 0 0 -7.55905,7.559 v 105.8268 a 7.5590556,7.5590556 0 0 0 7.55905,7.5591 z m 7.55906,-105.8268 h 120.9444 v 90.7086 H 939.5278 Z m 98.2676,15.118 h -75.59041 a 7.5591,7.5591 0 0 0 0,15.1182 h 75.59041 a 7.5591,7.5591 0 0 0 0,-15.1182 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5673-8-4-5"
|
||||
d="m 1467.3153,1614.6952 c -6.378,-5.3858 -14.4567,-8.315 -22.7717,-8.315 -10.3464,0 -20.0787,4.4881 -26.8819,12.3307 l -9.6378,-42.0473 c -7.4173,-32.5984 -35.7165,-55.3228 -68.7874,-55.3228 -5.3386,0 -10.7244,0.6139 -15.9685,1.8425 -37.9842,8.8347 -61.748,47.2442 -53.0078,85.5592 l 21.0708,92.126 c 0.189,0.8974 0.5197,1.7479 0.7559,2.6456 -4.4409,1.4646 -8.5039,5.5748 -8.5039,10.5827 v 37.7952 c 0,6.2835 5.0551,11.3386 11.2441,11.3386 h 143.1968 c 6.189,0 11.9055,-5.0551 11.9055,-11.3386 v -37.7952 c 0,-5.3858 -4.4409,-9.6378 -9.4015,-10.8189 l 31.37,-37.9843 c 12.5671,-15.2126 10.4884,-37.8897 -4.5826,-50.5984 z m -32.5512,133.4173 h -136.063 v -30.2362 h 136.063 z m 25.6063,-92.5039 -38.9764,47.1497 h -113.7638 c -0.5669,-1.7482 -1.2756,-3.4962 -1.7008,-5.3388 l -21.0708,-92.1259 c -6.8976,-30.1889 11.811,-60.4253 41.7637,-67.4174 4.1575,-0.9453 8.3622,-1.4645 12.567,-1.4645 26.0787,0 48.3779,17.9055 54.2362,43.6064 l 12.9921,56.8818 3.4016,14.8347 9.685,-11.7166 9.1654,-11.1023 c 3.9213,-4.7718 9.685,-7.4646 15.8268,-7.4646 4.8189,0 9.4488,1.7007 13.1811,4.8189 8.7874,7.37 9.9685,20.504 2.6929,29.3386 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5706-9"
|
||||
d="m 455.99659,983.47136 c -22.56427,-58.66282 -79.4948,-97.74958 -143.13917,-97.74958 -63.64457,0 -120.58155,39.08676 -143.12757,97.74958 -25.31405,0.97615 -28.28993,22.26634 -28.28993,27.32554 a 27.43272,27.43272 0 0 0 27.50999,27.2958 c 1.61917,0 2.83909,-0.3566 4.35685,-0.4524 l 19.32015,57.9249 a 27.379152,27.379152 0 0 0 25.96867,18.713 h 188.52348 a 27.379152,27.379152 0 0 0 25.96829,-18.719 l 19.30226,-57.9189 c 1.51209,0.1014 2.73806,0.4524 4.35693,0.4524 a 27.43272,27.43272 0 0 0 27.5278,-27.2958 c 0,-5.22 -3.06519,-26.272 -28.27775,-27.32554 z m -40.97343,106.05254 a 8.3327858,8.3327858 0 0 1 -7.9041,5.7079 H 218.5895 a 8.3327858,8.3327858 0 0 1 -7.90412,-5.702 l -18.60593,-55.8237 a 75.631939,75.631939 0 0 0 17.37958,-9.9338 c 5.41071,-4.0116 7.49951,-5.6128 15.12436,0.039 7.21381,5.3568 19.32588,14.2849 40.4377,14.2849 21.11197,0 33.23583,-8.9638 40.47356,-14.3325 5.39857,-3.9937 7.44592,-5.5948 15.00504,0.028 7.23173,5.3568 19.32022,14.2848 40.43164,14.2848 21.11189,0 33.21824,-8.9637 40.43777,-14.3205 6.47601,-4.8032 8.40441,-4.8807 14.95147,0 a 75.536702,75.536702 0 0 0 17.30819,9.9339 l -18.6056,55.8297 z m 41.73547,-70.4775 c -14.8447,0 -22.73066,-5.8568 -29.11133,-10.6005 -17.6834,-13.09438 -29.79589,-5.7675 -37.62855,0.039 -6.33277,4.708 -14.22515,10.5648 -29.08742,10.5648 -14.86181,0 -22.74814,-5.8568 -29.12872,-10.5768 -18.93914,-14.09428 -31.84332,-4.3152 -37.67614,0 -6.34458,4.72 -14.23157,10.5768 -29.11144,10.5768 -14.87973,0 -22.76637,-5.8568 -29.16451,-10.5768 -4.03546,-2.976 -17.68349,-14.87988 -37.77753,0 -6.35673,4.7021 -14.28477,10.5589 -29.16452,10.5589 a 8.2554502,8.2554502 0 1 1 0,-16.5109 c 3.20802,0 6.59458,0.2861 15.92147,-4.86268 31.74184,-91.61298 118.33737,-92.88672 128.02748,-92.88672 9.52324,0 96.25581,1.19038 127.96763,92.85092 9.37404,5.30318 12.24317,4.94608 15.93934,4.94608 a 8.25545,8.25545 0 1 1 0,16.5109 z m -196.779,-84.70277 a 9.5648466,9.5648466 0 0 0 -12.7788,4.26161 l -9.5233,19.04637 a 9.5231832,9.5231832 0 0 0 4.26186,12.77891 c 5.6782,2.7975 10.92787,-0.59555 12.77845,-4.26159 l 9.5233,-19.04632 a 9.5231832,9.5231832 0 0 0 -4.26151,-12.77898 z m 118.52804,4.25571 a 9.5252893,9.5252893 0 1 0 -17.04022,8.51727 l 9.52286,19.04637 c 1.84526,3.67236 7.10105,7.05909 12.77882,4.26159 a 9.5231832,9.5231832 0 0 0 4.2615,-12.77891 z m -65.65025,-5.26154 a 9.5231832,9.5231832 0 0 0 -9.52334,9.5232 v 19.04625 a 9.5233032,9.5233032 0 1 0 19.04658,0 V 942.861 a 9.5231832,9.5231832 0 0 0 -9.52324,-9.5232 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.595201" />
|
||||
<path
|
||||
id="path5662-5"
|
||||
d="m 1075.5909,154.17314 a 44.962217,44.962217 0 0 0 -27.2742,9.3261 C 1037.2899,148.7401 1019.8425,139.0551 1000,139.0551 c -19.84243,0 -37.28983,9.685 -48.31663,24.44414 a 45.146469,45.146469 0 0 0 -72.62811,36.02827 c 0,19.71972 30.23621,105.82684 30.23621,105.82684 v 60.47252 a 15.118115,15.118115 0 0 0 15.1181,15.11803 h 151.18133 a 15.118115,15.118115 0 0 0 15.1181,-15.11803 v -60.47252 c 0,0 30.2362,-86.10712 30.2362,-105.82684 a 45.354343,45.354343 0 0 0 -45.3543,-45.35437 z M 931.96867,358.26781 v -37.79527 h 136.06323 v 37.79527 z M 1069.3264,297.7953 h -13.9609 l 5.1073,-63.66146 a 3.7795287,3.7795287 0 0 0 -3.4628,-4.0676 l -7.5591,-0.60506 h -0.3061 a 3.7795287,3.7795287 0 0 0 -3.7795,3.48185 l -5.1969,64.86621 h -32.92 V 233.5431 a 3.7795287,3.7795287 0 0 0 -3.7796,-3.77952 h -7.55897 a 3.7795287,3.7795287 0 0 0 -3.77986,3.77952 v 64.25193 h -32.324 l -5.1968,-64.86606 a 3.7795287,3.7795287 0 0 0 -3.7799,-3.48201 h -0.3062 l -7.5587,0.60507 a 3.7795287,3.7795287 0 0 0 -3.4631,4.06764 l 5.1352,63.67563 h -13.9604 c -13.8237,-39.3165 -28.72444,-88.18587 -28.94176,-98.26779 a 22.474022,22.474022 0 0 1 36.24566,-17.95272 l 18.1984,13.80476 13.6724,-18.2976 c 7.285,-9.75598 18.274,-15.34968 30.15113,-15.34968 11.8771,0 22.8661,5.5937 30.1511,15.34019 l 13.6729,18.29764 18.1984,-13.79531 a 22.474022,22.474022 0 0 1 36.2456,17.915 c -0.2192,10.11964 -15.1181,58.98901 -28.9417,98.30551 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5739"
|
||||
d="m 689.18112,501.24409 6.7087,-77.85831 c -19.88984,-15.63783 -33.25984,-36.37803 -33.25984,-61.18099 0.0476,-44.55122 41.66925,-83.14968 71.85815,-83.14968 10.44099,0 18.89764,8.1733 18.89764,18.18894 v 205.51174 c 0,10.01578 -8.45665,18.18909 -18.89764,18.18909 h -26.45661 c -10.77162,0 -19.74803,-8.8348 -18.8504,-19.70079 z m -11.38586,-139.0393 c 0,24.09438 15.21263,40.39355 33.92126,54.09438 l -7.46453,86.26772 c -0.13644,1.74799 1.60619,3.25984 3.77953,3.25984 h 26.45661 c 2.03158,0 3.77953,-1.41778 3.77953,-3.07094 V 297.24405 c 0,-1.65347 -1.74795,-3.0708 -3.77953,-3.0708 -21.07082,0 -56.69287,31.08651 -56.69287,68.03154 z m -37.46457,-67.18118 c -1.55913,-9.21252 -10.01567,-15.9685 -21.77945,-15.9685 -5.62205,0 -11.38587,1.60637 -15.7324,5.29137 -3.96839,-3.35433 -9.44878,-5.29137 -15.73221,-5.29137 -6.28354,0 -11.76382,1.93704 -15.73236,5.29137 -4.34634,-3.685 -10.1102,-5.29137 -15.73221,-5.29137 -11.90555,0 -20.22047,6.85047 -21.7796,15.9685 -0.85096,4.44087 -7.22823,39.96854 -7.22823,54.85039 0,24.04714 12.61413,43.27568 33.54323,52.29918 l -5.38579,99.59059 c -0.56689,10.39359 7.70071,19.18111 18.1417,19.18111 h 28.34641 c 10.39386,0 18.70874,-8.74027 18.14181,-19.18111 l -5.3859,-99.59059 c 20.88197,-9.0235 33.54342,-28.25204 33.54342,-52.29918 0,-14.88185 -6.3781,-50.40952 -7.22842,-54.85039 z m -41.76382,97.41733 5.76386,110.12595 c 0.0915,1.74799 -1.27499,3.25984 -3.07095,3.25984 h -28.34641 c -1.748,0 -3.16532,-1.46491 -3.07083,-3.25984 l 5.76374,-110.12595 c -20.03146,-4.15748 -33.8739,-20.31504 -33.8739,-42.56694 0,-14.03145 6.99208,-52.25204 6.99208,-52.25204 0.75523,-4.67713 13.37001,-4.58264 13.93694,0.0911 V 355.587 c 0.42561,5.433 13.32294,5.52752 13.937,0.0911 l 3.49614,-58.06295 c 0.75523,-4.58264 13.18111,-4.58264 13.93694,0 l 3.49613,58.06295 c 0.61395,5.3859 13.51182,5.29138 13.93701,-0.0911 v -57.82681 c 0.56689,-4.67716 13.18107,-4.77154 13.93693,-0.0911 0,0 6.9921,38.22055 6.9921,52.25205 0.0476,22.11023 -13.70079,38.36217 -33.82678,42.51961 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5772-1"
|
||||
d="m 1751.068,1034.0124 c -6.2598,0 -11.3384,5.0739 -11.3384,11.3384 0,6.2597 5.0786,11.3383 11.3384,11.3383 6.2597,0 11.3383,-5.0786 11.3383,-11.3383 0,-6.2645 -5.0786,-11.3384 -11.3383,-11.3384 z m -79.3686,-64.25069 c 0,-6.26453 -5.0786,-11.3384 -11.3384,-11.3384 -6.2597,0 -11.3383,5.07387 -11.3383,11.3384 0,6.25969 5.0786,11.33828 11.3383,11.33828 6.2598,0 11.3384,-5.07859 11.3384,-11.33828 z m 3.7795,64.25069 c -6.2598,0 -11.3383,5.0739 -11.3383,11.3384 0,6.2597 5.0785,11.3383 11.3383,11.3383 6.2596,0 11.3384,-5.0786 11.3384,-11.3383 0,-6.2645 -5.0788,-11.3384 -11.3384,-11.3384 z m 45.3534,-45.3535 c -6.2597,0 -11.3384,5.07386 -11.3384,11.33839 0,6.25971 5.0787,11.33841 11.3384,11.33841 6.2597,0 11.3384,-5.0787 11.3384,-11.33841 0,-6.26453 -5.0787,-11.33839 -11.3384,-11.33839 z m 105.1256,11.25331 c -33.0562,-0.40123 -59.7485,-27.25459 -59.7485,-60.40509 -33.1505,0 -59.9989,-26.68762 -60.4051,-59.73902 -3.1275,-0.47698 -6.2786,-0.71299 -9.4156,-0.71299 -9.7699,0 -19.4547,2.29133 -28.2467,6.76995 l -32.6592,16.6391 a 62.465402,62.465402 0 0 0 -27.3019,27.3112 l -16.5824,32.5411 a 62.665709,62.665709 0 0 0 -6.0564,38.24344 l 5.7069,36.0371 a 62.623193,62.623193 0 0 0 17.5556,34.4685 l 25.875,25.8704 a 62.378004,62.378004 0 0 0 34.3506,17.5084 l 36.2402,5.7354 c 3.2409,0.5155 6.5007,0.7652 9.751,0.7652 9.7888,0 19.4879,-2.3056 28.2939,-6.7937 l 32.6592,-16.639 a 62.465402,62.465402 0 0 0 27.3018,-27.3112 l 16.5825,-32.5412 c 5.9337,-11.636 8.036,-24.8357 6.0991,-37.74735 z m -19.5681,30.87819 -16.5825,32.5458 c -4.573,8.9762 -11.7304,16.1335 -20.6971,20.702 l -32.6593,16.6391 c -6.6046,3.3636 -14.0171,5.1446 -21.4295,5.1446 -2.4614,0 -4.9464,-0.1935 -7.3841,-0.5813 l -36.2356,-5.7353 c -9.921,-1.5731 -18.9208,-6.1605 -26.0262,-13.2658 l -25.8751,-25.8704 c -7.1337,-7.129 -11.7352,-16.1713 -13.3131,-26.1397 l -5.707,-36.03228 c -1.5826,-9.97784 0.015,-20.01219 4.5921,-29.01204 l 16.5823,-32.54109 c 4.5731,-8.97622 11.7305,-16.13351 20.6973,-20.70194 l 32.6544,-16.64383 c 5.3527,-2.72591 11.2439,-4.40784 17.2485,-4.94162 6.2125,29.83412 30.1601,53.36111 60.1169,58.98788 5.6266,29.96157 29.1538,53.90912 58.9926,60.11682 -0.5193,6.0141 -2.1921,11.8769 -4.9746,17.3288 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472433" />
|
||||
<path
|
||||
id="path5627-3"
|
||||
d="m 1556.6704,1294.1237 c -8.3858,0 -15.1181,-6.7323 -15.1181,-15.118 0,-14.6458 15.1181,-10.8662 15.1181,-30.2363 5.6693,0 15.1181,13.9371 15.1181,26.4567 0,12.5197 -6.7323,18.8976 -15.1181,18.8976 z m 60.4724,0 c -8.3858,0 -15.118,-6.7323 -15.118,-15.118 0,-14.6458 15.118,-10.8662 15.118,-30.2363 5.6693,0 15.1182,13.9371 15.1182,26.4567 0,12.5197 -6.7323,18.8976 -15.1182,18.8976 z m 60.4725,0 c -8.3858,0 -15.1181,-6.7323 -15.1181,-15.118 0,-14.6458 15.1181,-10.8662 15.1181,-30.2363 5.6693,0 15.1181,13.9371 15.1181,26.4567 0,12.5197 -6.7323,18.8976 -15.1181,18.8976 z m 22.6771,75.5907 h -15.118 v -68.0316 h -15.1182 v 68.0316 h -45.3543 v -68.0316 h -15.1181 v 68.0316 h -45.3543 v -68.0316 h -15.1181 v 68.0316 h -15.1181 c -12.5197,0 -22.6772,10.1573 -22.6772,22.6771 v 98.2677 h 211.6535 v -98.2677 c 0,-12.5198 -10.1575,-22.6771 -22.6772,-22.6771 z m 7.5591,105.8267 h -181.4173 v -34.036 c 7.6639,-4.4783 11.3045,-11.3183 20.1968,-11.3183 13.2052,0 14.7652,15.118 35.315,15.118 20.2408,0 22.3072,-15.118 35.1968,-15.118 13.2983,0 14.7407,15.118 35.315,15.118 20.4837,0 22.0947,-15.118 35.315,-15.118 8.7345,0 12.3992,6.8386 20.0787,11.3173 z m 0,-53.0901 c -4.5476,-3.72 -10.0238,-7.3823 -20.0787,-7.3823 -20.5181,0 -22.1221,15.1181 -35.315,15.1181 -13.0842,0 -14.8602,-15.1181 -35.315,-15.1181 -20.2403,0 -22.3076,15.1181 -35.1968,15.1181 -13.2983,0 -14.7411,-15.1181 -35.315,-15.1181 -10.1399,0 -15.6382,3.6728 -20.1968,7.3974 v -30.0746 c 0,-4.1678 3.3912,-7.5591 7.5591,-7.5591 h 166.2991 c 4.168,0 7.5591,3.3913 7.5591,7.5591 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5794"
|
||||
d="m 455.82468,561.09456 c -59.4562,0 -111.33852,39.33117 -140.22863,73.01275 l -57.67284,-51.27053 c -8.03297,-6.61302 -19.97164,0.40092 -17.95038,10.50915 L 255.94899,676 239.96708,758.66025 c -2.01551,10.10208 9.91131,17.11599 17.92597,10.52702 l 57.67356,-51.25873 c 28.91344,33.64577 80.82557,72.9769 140.25807,72.9769 90.81482,0 164.43402,-91.92438 164.43402,-114.90544 0,-22.98105 -73.6192,-114.90544 -164.43402,-114.90544 z m 0,210.66009 c -50.77599,0 -98.29963,-34.27421 -125.83995,-66.35192 l -12.09918,-14.09391 c -18.54503,15.24893 -7.27783,5.31435 -54.74779,48.8408 12.93728,-68.15931 11.15984,-58.87111 12.2299,-64.14962 -1.07006,-5.27254 0.71277,4.02766 -12.22415,-64.14959 47.56512,43.59825 36.26847,33.63976 54.74778,48.84688 l 12.09918,-14.09398 c 27.54104,-32.07776 75.03488,-66.35793 125.83421,-66.35793 76.21859,0 140.366,75.69999 145.28359,95.75462 -4.91759,20.05463 -69.065,95.75465 -145.28359,95.75465 z m -12.94948,-149.82603 -6.72448,-6.76864 a 4.7565564,4.7877296 0 0 0 -6.73058,0 l -50.34816,50.66611 a 4.7565564,4.7877296 0 0 0 0,6.76863 l 6.72484,6.76862 a 4.7565564,4.7877296 0 0 0 6.72448,0 l 50.3539,-50.64218 a 4.7565564,4.7877296 0 0 0 0,-6.79254 z m 66.59166,9.57547 -6.72448,-6.7686 a 4.7565564,4.7877296 0 0 0 -6.73023,0 l -88.40107,88.9679 a 4.7565564,4.7877296 0 0 0 0,6.76865 l 6.7252,6.76861 a 4.7565564,4.7877296 0 0 0 6.72449,0 l 88.40609,-88.94403 a 4.7565564,4.7877296 0 0 0 0,-6.79253 z m 21.81517,41.10869 a 4.7565564,4.7877296 0 0 0 -6.73096,0 l -50.34798,50.66612 a 4.7565564,4.7877296 0 0 0 0,6.76863 l 6.72413,6.76861 a 4.7565564,4.7877296 0 0 0 6.7252,0 l 50.35336,-50.64219 a 4.7565564,4.7877296 0 0 0 0,-6.77461 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.596513" />
|
||||
<path
|
||||
id="path5728"
|
||||
d="m 385.71444,1248.7695 c -66.79359,0 -120.94515,54.1512 -120.94515,120.9449 0,66.7937 54.15156,120.9448 120.94515,120.9448 66.79355,0 120.94484,-54.1511 120.94484,-120.9448 0,-66.7937 -54.15129,-120.9449 -120.94484,-120.9449 z m 0,226.7716 c -58.35119,0 -105.82666,-47.4756 -105.82666,-105.8267 0,-58.3512 47.47547,-105.8268 105.82666,-105.8268 58.35107,0 105.82669,47.4756 105.82669,105.8268 0,58.3511 -47.47562,105.8267 -105.82669,105.8267 z m 74.82984,-105.8267 13.3606,-13.3607 c 1.47405,-1.474 1.47405,-3.8693 0,-5.3433 l -5.34324,-5.3433 c -1.47401,-1.474 -3.8694,-1.474 -5.34342,0 l -13.36059,13.3606 -21.3826,-21.3779 10.6913,-10.6913 8.01736,8.0173 c 1.47402,1.4739 3.86922,1.4739 5.34323,0 l 5.34342,-5.3433 c 1.47402,-1.4741 1.47402,-3.8693 0,-5.3433 l -8.01736,-8.0174 2.67394,-2.674 c 1.47402,-1.4739 1.47402,-3.8693 0,-5.3433 l -5.34323,-5.3434 c -1.47401,-1.4739 -3.86921,-1.4739 -5.34323,0 l -2.67413,2.6741 -8.01736,-8.0172 c -1.47402,-1.474 -3.86922,-1.474 -5.34323,0 l -5.34327,5.3431 c -1.47402,1.4741 -1.47402,3.8694 0,5.3434 l 8.01721,8.0173 -10.6913,10.6913 -21.3826,-21.3779 13.36524,-13.3606 c 1.47401,-1.474 1.47401,-3.8692 0,-5.3433 l -5.34788,-5.3622 c -1.47402,-1.474 -3.86941,-1.474 -5.34342,0 l -13.36528,13.3654 -13.36539,-13.3654 c -1.47402,-1.474 -3.86922,-1.474 -5.34324,0 l -5.34346,5.3433 c -1.47397,1.474 -1.47397,3.8692 0,5.3434 l 13.36544,13.3606 -21.37796,21.3779 -10.6913,-10.6914 8.01717,-8.0173 c 1.47402,-1.4739 1.47402,-3.8693 0,-5.3433 l -5.34323,-5.3433 c -1.47402,-1.474 -3.86922,-1.474 -5.34323,0 l -8.01736,8.0174 -2.67413,-2.6741 c -1.47402,-1.474 -3.86922,-1.474 -5.34323,0 l -5.34312,5.3433 c -1.47402,1.474 -1.47402,3.8693 0,5.3434 l 2.67364,2.6739 -8.01714,8.0173 c -1.47401,1.4741 -1.47401,3.8694 0,5.3433 l 5.3435,5.3434 c 1.47401,1.474 3.8691,1.474 5.34312,0 l 8.01736,-8.0174 10.6913,10.6914 -21.37814,21.378 -13.36517,-13.3607 c -1.47402,-1.4739 -3.86948,-1.4739 -5.3435,0 l -5.35748,5.3575 c -1.47401,1.4741 -1.47401,3.8693 0,5.3433 l 13.36555,13.3654 -13.36555,13.3653 c -1.47401,1.4741 -1.47401,3.8693 0,5.3433 l 5.3435,5.3434 c 1.47402,1.474 3.8691,1.474 5.34312,0 l 13.36554,-13.3606 21.37803,21.3778 -10.69149,10.6914 -8.01706,-8.0173 c -1.47401,-1.474 -3.86948,-1.474 -5.34349,0 l -5.3435,5.3432 c -1.47364,1.474 -1.47364,3.8694 0,5.3434 l 8.01751,8.0172 -2.67401,2.6741 c -1.47402,1.474 -1.47402,3.8694 0,5.3434 l 5.34349,5.3432 c 1.47402,1.4741 3.8691,1.4741 5.34312,0 l 2.67394,-2.6739 8.01736,8.0172 c 1.47402,1.474 3.86941,1.474 5.34342,0 l 5.34323,-5.3433 c 1.47402,-1.474 1.47402,-3.8692 0,-5.3432 l -8.01736,-8.0175 10.6913,-10.6912 21.3828,21.3827 -13.36544,13.3652 c -1.47401,1.474 -1.47401,3.8695 0,5.3433 l 5.34343,5.3433 c 1.47401,1.4741 3.86921,1.4741 5.34323,0 l 13.37488,-13.3606 13.36528,13.3653 c 1.47401,1.474 3.8694,1.474 5.34342,0 l 5.34323,-5.3433 c 1.47401,-1.4739 1.47401,-3.8692 0,-5.3432 l -13.36543,-13.3653 21.38279,-21.3828 10.6913,10.6913 -8.01736,8.0173 c -1.47402,1.474 -1.47402,3.8694 0,5.3434 l 5.34323,5.3433 c 1.47402,1.474 3.86941,1.474 5.34342,0 l 8.01736,-8.0173 2.67394,2.674 c 1.47402,1.474 3.86922,1.474 5.34323,0 l 5.34342,-5.3434 c 1.47406,-1.474 1.47406,-3.8692 0,-5.3432 l -2.67409,-2.6741 8.01736,-8.0172 c 1.47402,-1.4741 1.47402,-3.8694 0,-5.3434 l -5.34327,-5.3433 c -1.47401,-1.474 -3.8694,-1.474 -5.34342,0 l -8.01717,8.0174 -10.69149,-10.6914 21.37799,-21.378 13.3654,13.3606 c 1.47405,1.474 3.86925,1.474 5.34326,0 l 5.34343,-5.3432 c 1.47397,-1.474 1.47397,-3.8694 0,-5.3433 z m -74.82984,-53.452 21.3778,21.378 -21.3778,21.3827 -21.37795,-21.3781 z m -53.45201,53.452 21.37795,-21.3827 21.38261,21.3827 -21.38261,21.3827 z m 53.45201,53.4519 -21.38275,-21.3827 21.38275,-21.3826 21.38264,21.3826 z m 32.06929,-32.074 -21.37795,-21.3779 21.3826,-21.378 21.37795,21.378 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472441" />
|
||||
<path
|
||||
id="path5717-1"
|
||||
d="m 692.85695,1593.1058 a 3.8361918,3.8361918 0 0 0 3.77953,3.685 h 7.55867 a 3.7511533,3.7511533 0 0 0 3.77991,-3.8739 c -0.99288,-19.8897 -9.11811,-34.6297 -19.65317,-45.1178 -8.69329,-8.8345 -9.96888,-18.0471 -10.34683,-23.1022 a 3.7180827,3.7180827 0 0 0 -3.77953,-3.3543 l -7.55905,0.045 a 3.7794994,3.7794994 0 0 0 -3.73191,4.1102 49.823248,49.823248 0 0 0 14.74016,32.9289 c 8.17285,8.1259 14.36183,19.2282 15.21222,34.6768 z m -52.67679,0 a 3.8361918,3.8361918 0 0 0 3.77953,3.685 h 7.55905 a 3.7511533,3.7511533 0 0 0 3.77953,-3.8739 c -0.99212,-19.8897 -9.11811,-34.6297 -19.65354,-45.1178 -8.64567,-8.8345 -9.92088,-18.0471 -10.29884,-23.1022 a 3.7322557,3.7322557 0 0 0 -3.82677,-3.3543 l -7.55905,0.045 a 3.7794994,3.7794994 0 0 0 -3.73229,4.1102 c 0.47244,7.0393 2.45669,20.5982 14.74016,32.9289 8.16831,8.1259 14.35729,19.2282 15.21222,34.6768 z m 128.50318,18.9448 H 557.03131 a 15.117997,15.117997 0 0 0 -15.11811,15.1179 c 0,44.7399 24.35868,83.6971 60.47206,104.6214 v 16.3227 a 15.117997,15.117997 0 0 0 15.11773,15.118 h 90.70791 a 15.117997,15.117997 0 0 0 15.11849,-15.118 v -16.3227 c 36.11263,-20.9243 60.47169,-59.8815 60.47169,-104.6214 a 15.117997,15.117997 0 0 0 -15.11774,-15.1179 z m -60.47244,111.0228 v 25.0392 h -90.70791 v -25.0392 c -62.52207,-36.2218 -60.47168,-87.7695 -60.47168,-95.9049 h 211.65203 c 0,8.2488 1.59194,59.9476 -60.47244,95.9049 z"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#303030;fill-opacity:1;stroke-width:0.472437" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
17
cookbook/static/css/app.min.css
vendored
Normal file
17
cookbook/static/css/app.min.css
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
.spinner-tandoor {
|
||||
animation: rotation 3s infinite linear;
|
||||
content: url("../assets/spinner.svg");
|
||||
width: auto;
|
||||
height: 20vh;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
47
cookbook/static/js/bookmarklet.js
Normal file
47
cookbook/static/js/bookmarklet.js
Normal file
@@ -0,0 +1,47 @@
|
||||
(function(){
|
||||
|
||||
var v = "1.3.2";
|
||||
|
||||
if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
|
||||
var done = false;
|
||||
var script = document.createElement("script");
|
||||
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js";
|
||||
script.onload = script.onreadystatechange = function(){
|
||||
if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
|
||||
done = true;
|
||||
initBookmarklet();
|
||||
}
|
||||
};
|
||||
document.getElementsByTagName("head")[0].appendChild(script);
|
||||
} else {
|
||||
initBookmarklet();
|
||||
}
|
||||
function initBookmarklet() {
|
||||
(window.bookmarkletTandoor = function() {
|
||||
let recipe = document.documentElement.innerHTML
|
||||
let windowName = "ImportRecipe"
|
||||
let url = localStorage.getItem('importURL')
|
||||
let redirect = localStorage.getItem('redirectURL')
|
||||
let token = localStorage.getItem('token')
|
||||
let params = { 'url': window.location.protocol + '//' + window.location.host + window.location.pathname, 'html' : recipe};
|
||||
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', url, true);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
xhr.setRequestHeader('Authorization', 'Token ' + token);
|
||||
|
||||
// listen for `onload` event
|
||||
xhr.onload = () => {
|
||||
// process response
|
||||
if (xhr.readyState == 4 && xhr.status == 201) {
|
||||
// parse JSON data
|
||||
window.open(redirect.concat('?id=', JSON.parse(xhr.response).id) )
|
||||
} else {
|
||||
console.error('Error!');
|
||||
}
|
||||
};
|
||||
xhr.send(JSON.stringify(params));
|
||||
}
|
||||
)();
|
||||
}
|
||||
})();
|
||||
2
cookbook/static/js/vue-jstree.js
Normal file
2
cookbook/static/js/vue-jstree.js
Normal file
File diff suppressed because one or more lines are too long
1
cookbook/static/js/vue-jstree.js.map
Normal file
1
cookbook/static/js/vue-jstree.js.map
Normal file
File diff suppressed because one or more lines are too long
10470
cookbook/static/themes/tandoor.min.css
vendored
Normal file
10470
cookbook/static/themes/tandoor.min.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
cookbook/static/vue/js/recipe_search_view.js
Normal file
1
cookbook/static/vue/js/recipe_search_view.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
cookbook/static/vue/js/supermarket_view.js
Normal file
1
cookbook/static/vue/js/supermarket_view.js
Normal file
File diff suppressed because one or more lines are too long
1
cookbook/static/vue/js/user_file_view.js
Normal file
1
cookbook/static/vue/js/user_file_view.js
Normal file
File diff suppressed because one or more lines are too long
1
cookbook/static/vue/recipe_search_view.html
Normal file
1
cookbook/static/vue/recipe_search_view.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="css/chunk-vendors.css" rel="preload" as="style"><link href="js/chunk-vendors.js" rel="preload" as="script"><link href="js/recipe_search_view.js" rel="preload" as="script"><link href="css/chunk-vendors.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="apple-mobile-web-app-title" content="Recipes"><link rel="apple-touch-icon" href="img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><div id="app"></div><script src="js/chunk-vendors.js"></script></body></html>
|
||||
1
cookbook/static/vue/supermarket_view.html
Normal file
1
cookbook/static/vue/supermarket_view.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="css/chunk-vendors.css" rel="preload" as="style"><link href="js/chunk-vendors.js" rel="preload" as="script"><link href="js/supermarket_view.js" rel="preload" as="script"><link href="css/chunk-vendors.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="apple-mobile-web-app-title" content="Recipes"><link rel="apple-touch-icon" href="img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><div id="app"></div><script src="js/chunk-vendors.js"></script></body></html>
|
||||
1
cookbook/static/vue/user_file_view.html
Normal file
1
cookbook/static/vue/user_file_view.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="css/chunk-vendors.css" rel="preload" as="style"><link href="js/chunk-vendors.js" rel="preload" as="script"><link href="js/user_file_view.js" rel="preload" as="script"><link href="css/chunk-vendors.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="apple-mobile-web-app-title" content="Recipes"><link rel="apple-touch-icon" href="img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><div id="app"></div><script src="js/chunk-vendors.js"></script></body></html>
|
||||
BIN
cookbook/static/webfonts/poppins_devanagari_400.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_devanagari_400.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_devanagari_500.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_devanagari_500.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_devanagari_700.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_devanagari_700.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_latin_400.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_latin_400.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_latin_500.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_latin_500.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_latin_700.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_latin_700.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_latin_ext_400.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_latin_ext_400.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_latin_ext_500.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_latin_ext_500.woff2
Normal file
Binary file not shown.
BIN
cookbook/static/webfonts/poppins_latin_ext_700.woff2
Normal file
BIN
cookbook/static/webfonts/poppins_latin_ext_700.woff2
Normal file
Binary file not shown.
@@ -141,17 +141,17 @@ class ShoppingListTable(tables.Table):
|
||||
|
||||
class InviteLinkTable(tables.Table):
|
||||
link = tables.TemplateColumn(
|
||||
"<a href='{% url 'view_signup' record.uuid %}' >" + _('Link') + "</a>"
|
||||
"<input value='{{ request.scheme }}://{{ request.get_host }}{% url 'view_invite' record.uuid %}' class='form-control' />"
|
||||
)
|
||||
delete = tables.TemplateColumn(
|
||||
"<a href='{% url 'delete_invite_link' record.id %}' >" + _('Delete') + "</a>" # noqa: E501
|
||||
delete_link = tables.TemplateColumn(
|
||||
"<a href='{% url 'delete_invite_link' record.pk %}' >" + _('Delete') + "</a>", verbose_name=_('Delete')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = InviteLink
|
||||
template_name = 'generic/table_template.html'
|
||||
fields = (
|
||||
'username', 'group', 'valid_until', 'created_by', 'created_at'
|
||||
'username', 'group', 'valid_until',
|
||||
)
|
||||
|
||||
|
||||
|
||||
82
cookbook/templates/account/email.html
Normal file
82
cookbook/templates/account/email.html
Normal file
@@ -0,0 +1,82 @@
|
||||
{% extends "base.html" %}
|
||||
{% load crispy_forms_filters %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "E-mail Addresses" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h3>{% trans "E-mail Addresses" %}</h3>
|
||||
{% if user.emailaddress_set.all %}
|
||||
<p>{% trans 'The following e-mail addresses are associated with your account:' %}</p>
|
||||
|
||||
<form action="{% url 'account_email' %}" class="email_list" method="post">
|
||||
{% csrf_token %}
|
||||
<fieldset class="blockLabels">
|
||||
|
||||
{% for emailaddress in user.emailaddress_set.all %}
|
||||
<div class="ctrlHolder">
|
||||
<label for="email_radio_{{ forloop.counter }}"
|
||||
class="{% if emailaddress.primary %}primary_email{% endif %}">
|
||||
|
||||
<input id="email_radio_{{ forloop.counter }}" type="radio" name="email"
|
||||
{% if emailaddress.primary or user.emailaddress_set.count == 1 %}checked="checked"{% endif %}
|
||||
value="{{ emailaddress.email }}"/>
|
||||
|
||||
{{ emailaddress.email }}
|
||||
{% if emailaddress.verified %}
|
||||
<span class="badge badge-pill badge-success">{% trans "Verified" %}</span>
|
||||
{% else %}
|
||||
<span class="badge badge-pill badge-warning">{% trans "Unverified" %}</span>
|
||||
{% endif %}
|
||||
{% if emailaddress.primary %}<span class="badge badge-pill badge-info">{% trans "Primary" %}</span>{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="buttonHolder">
|
||||
<button class="btn btn-success" type="submit"
|
||||
name="action_primary">{% trans 'Make Primary' %}</button>
|
||||
<button class="btn btn-info" type="submit"
|
||||
name="action_send">{% trans 'Re-send Verification' %}</button>
|
||||
<button class="btn btn-warning" type="submit" name="action_remove">{% trans 'Remove' %}</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
{% else %}
|
||||
<p>
|
||||
<strong>{% trans 'Warning:' %}</strong> {% trans "You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc." %}
|
||||
</p>
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if can_add_email %}
|
||||
<h3>{% trans "Add E-mail Address" %}</h3>
|
||||
|
||||
<form method="post" action="{% url 'account_email' %}" class="add_email">
|
||||
{% csrf_token %}
|
||||
{{ form | crispy }}
|
||||
<button name="action_add" class="btn btn-success" type="submit">{% trans "Add E-mail" %}</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block extra_body %}
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
var message = "{% trans 'Do you really want to remove the selected e-mail address?' %}";
|
||||
var actions = document.getElementsByName('action_remove');
|
||||
if (actions.length) {
|
||||
actions[0].addEventListener("click", function (e) {
|
||||
if (!confirm(message)) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user