Redesign #3

Closed
arek wants to merge 15 commits from redesign into master
61 changed files with 5741 additions and 1619 deletions

3
.editorconfig Normal file
View File

@ -0,0 +1,3 @@
[*]
indent_style = space
indent_size = 4

5
.prettierrc Normal file
View File

@ -0,0 +1,5 @@
trailingComma: "es5"
tabWidth: 4
printWidth: 80
semi: true
singleQuote: true

9
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,9 @@
{
"cSpell.words": [
"ECLI",
"EROD",
"targetowania",
"targetowaniem",
"TSUE"
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41L17.59 5Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 240 B

3
assets/icons/cookie.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9837 21.9999C6.47237 21.9938 2.00605 17.5203 2 11.9999C2.39311 12.1112 2.79955 12.168 3.20803 12.1689C4.55933 12.1789 5.82888 11.5217 6.6025 10.412C7.29413 9.41154 7.44027 8.13091 6.99186 6.99997C7.27858 7.05119 7.5692 7.07729 7.86045 7.07797C9.1552 7.08764 10.3841 6.50698 11.2 5.49998C11.9984 4.52274 12.3106 3.2352 12.0486 2C17.5625 2.01795 22.0178 6.50963 21.9999 12.0324C21.982 17.5553 17.4976 22.0178 11.9837 21.9999ZM12.7455 18.5679C12.8991 18.634 13.0645 18.6681 13.2317 18.6679C13.7362 18.6674 14.1909 18.363 14.3842 17.8961C14.5775 17.4293 14.4714 16.8919 14.1152 16.5339C13.8805 16.2998 13.5629 16.1683 13.2317 16.1679C12.6392 16.1693 12.1294 16.5877 12.0115 17.1693C11.8937 17.7509 12.2004 18.3353 12.7455 18.5679ZM6.91199 16.8749C7.11205 16.9578 7.32647 17.0003 7.54296 16.9999C8.21842 16.9997 8.82678 16.5907 9.08272 15.9646C9.33866 15.3385 9.19143 14.6195 8.71006 14.1449C8.3989 13.838 7.97969 13.6659 7.54296 13.6659C6.62442 13.667 5.88022 14.4129 5.87967 15.3329C5.87984 16.0017 6.2781 16.606 6.89202 16.8689H6.89702H6.908L6.91199 16.8749ZM16.3276 14.3679C16.9987 14.6502 17.775 14.4627 18.2439 13.9051C18.7127 13.3475 18.7652 12.5493 18.3733 11.9349C18.2506 11.7436 18.0902 11.5793 17.9021 11.4519C17.3853 11.1024 16.7167 11.0716 16.17 11.3721C15.6233 11.6726 15.2902 12.254 15.307 12.8784C15.3238 13.5028 15.6877 14.0654 16.2498 14.3359H16.2378L16.2677 14.3489L16.2877 14.3569H16.2817C16.296 14.3615 16.31 14.3669 16.3236 14.3729L16.3276 14.3679ZM11.9837 10.333C11.5855 10.3323 11.2426 10.6141 11.1655 11.0054C11.0883 11.3967 11.2986 11.7879 11.6672 11.9389C12.0357 12.0899 12.4594 11.9583 12.6782 11.625C12.8969 11.2917 12.8493 10.8499 12.5648 10.571C12.4906 10.4978 12.4032 10.4394 12.3072 10.399L12.2892 10.391L12.2623 10.381C12.1729 10.349 12.0786 10.3328 11.9837 10.333ZM15.7276 6.16697C15.0888 6.16539 14.5526 6.64873 14.4871 7.28522C14.4216 7.92172 14.8481 8.50444 15.4738 8.63339C16.0995 8.76235 16.7211 8.39562 16.9118 7.78494C17.1025 7.17425 16.8004 6.51814 16.2128 6.26698H16.2028C16.0525 6.20267 15.8911 6.16869 15.7276 6.16697ZM4.49593 9.49996C4.03663 9.49996 3.66429 9.12701 3.66429 8.66696C3.66429 8.20691 4.03663 7.83397 4.49593 7.83397C4.95523 7.83397 5.32757 8.20691 5.32757 8.66696C5.32702 9.12679 4.95501 9.49941 4.49593 9.49996ZM3.24797 6.99997C2.55873 6.99997 2 6.44033 2 5.74998C2 5.05963 2.55873 4.49999 3.24797 4.49999C3.9372 4.49999 4.49593 5.05963 4.49593 5.74998C4.49483 6.43988 3.93674 6.99887 3.24797 6.99997ZM8.23983 5.33298C7.55059 5.33298 6.99186 4.77334 6.99186 4.08299C6.99186 3.39264 7.55059 2.833 8.23983 2.833C8.92906 2.833 9.48779 3.39264 9.48779 4.08299C9.48779 4.7735 8.92922 5.33343 8.23983 5.33398V5.33298ZM5.32857 3.66699C4.8694 3.66699 4.49711 3.29425 4.49693 2.83433C4.49675 2.37441 4.86873 2.00137 5.32791 2.001C5.78708 2.00063 6.15967 2.37308 6.16022 2.833C6.16022 3.29321 5.78804 3.66644 5.32857 3.66699Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C21.9939 17.5203 17.5203 21.9939 12 22ZM4 12.172C4.04732 16.5732 7.64111 20.1095 12.0425 20.086C16.444 20.0622 19.9995 16.4875 19.9995 12.086C19.9995 7.68451 16.444 4.10977 12.0425 4.086C7.64111 4.06246 4.04732 7.59876 4 12V12.172ZM14 17H11V13H10V11H13V15H14V17ZM13 9H11V7H13V9Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 492 B

3
assets/icons/mail.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 20H4C2.89543 20 2 19.1046 2 18V5.913C2.04661 4.84255 2.92853 3.99899 4 4H20C21.1046 4 22 4.89543 22 6V18C22 19.1046 21.1046 20 20 20ZM4 7.868V18H20V7.868L12 13.2L4 7.868ZM4.8 6L12 10.8L19.2 6H4.8Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 331 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.8199 22H10.1799C9.71003 22 9.30347 21.673 9.20292 21.214L8.79592 19.33C8.25297 19.0921 7.73814 18.7946 7.26092 18.443L5.42392 19.028C4.97592 19.1709 4.48891 18.9823 4.25392 18.575L2.42992 15.424C2.19751 15.0165 2.27758 14.5025 2.62292 14.185L4.04792 12.885C3.98312 12.2961 3.98312 11.7019 4.04792 11.113L2.62292 9.816C2.27707 9.49837 2.19697 8.98372 2.42992 8.576L4.24992 5.423C4.48491 5.0157 4.97192 4.82714 5.41992 4.97L7.25692 5.555C7.50098 5.37416 7.75505 5.20722 8.01792 5.055C8.27026 4.91269 8.52995 4.78385 8.79592 4.669L9.20392 2.787C9.30399 2.32797 9.71011 2.00049 10.1799 2H13.8199C14.2897 2.00049 14.6958 2.32797 14.7959 2.787L15.2079 4.67C15.4887 4.79352 15.7622 4.93308 16.0269 5.088C16.2739 5.23081 16.5126 5.38739 16.7419 5.557L18.5799 4.972C19.0276 4.82967 19.514 5.01816 19.7489 5.425L21.5689 8.578C21.8013 8.98548 21.7213 9.49951 21.3759 9.817L19.9509 11.117C20.0157 11.7059 20.0157 12.3001 19.9509 12.889L21.3759 14.189C21.7213 14.5065 21.8013 15.0205 21.5689 15.428L19.7489 18.581C19.514 18.9878 19.0276 19.1763 18.5799 19.034L16.7419 18.449C16.5093 18.6203 16.2677 18.7789 16.0179 18.924C15.7557 19.0759 15.4853 19.2131 15.2079 19.335L14.7959 21.214C14.6954 21.6726 14.2894 21.9996 13.8199 22ZM7.61992 16.229L8.43992 16.829C8.62477 16.9652 8.81743 17.0904 9.01692 17.204C9.20462 17.3127 9.39788 17.4115 9.59592 17.5L10.5289 17.909L10.9859 20H13.0159L13.4729 17.908L14.4059 17.499C14.8132 17.3194 15.1998 17.0961 15.5589 16.833L16.3799 16.233L18.4209 16.883L19.4359 15.125L17.8529 13.682L17.9649 12.67C18.0141 12.2274 18.0141 11.7806 17.9649 11.338L17.8529 10.326L19.4369 8.88L18.4209 7.121L16.3799 7.771L15.5589 7.171C15.1997 6.90671 14.8132 6.68175 14.4059 6.5L13.4729 6.091L13.0159 4H10.9859L10.5269 6.092L9.59592 6.5C9.39772 6.58704 9.20444 6.68486 9.01692 6.793C8.81866 6.90633 8.62701 7.03086 8.44292 7.166L7.62192 7.766L5.58192 7.116L4.56492 8.88L6.14792 10.321L6.03592 11.334C5.98672 11.7766 5.98672 12.2234 6.03592 12.666L6.14792 13.678L4.56492 15.121L5.57992 16.879L7.61992 16.229ZM11.9959 16C9.78678 16 7.99592 14.2091 7.99592 12C7.99592 9.79086 9.78678 8 11.9959 8C14.2051 8 15.9959 9.79086 15.9959 12C15.9932 14.208 14.2039 15.9972 11.9959 16ZM11.9959 10C10.9033 10.0011 10.0138 10.8788 9.99815 11.9713C9.98249 13.0638 10.8465 13.9667 11.9386 13.9991C13.0307 14.0315 13.9468 13.1815 13.9959 12.09V12.49V12C13.9959 10.8954 13.1005 10 11.9959 10Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.83 11L11.41 7.41L10 6L4 12L10 18L11.41 16.59L7.83 13H20V11H7.83Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 198 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17 22H7C5.89543 22 5 21.1046 5 20V7H3V5H7V4C7 2.89543 7.89543 2 9 2H15C16.1046 2 17 2.89543 17 4V5H21V7H19V20C19 21.1046 18.1046 22 17 22ZM7 7V20H17V7H7ZM9 4V5H15V4H9ZM15 18H13V9H15V18ZM11 18H9V9H11V18Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 334 B

3
assets/icons/warning.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.2659 20.998H2.73288C2.37562 20.998 2.04551 20.8074 1.86688 20.498C1.68825 20.1886 1.68825 19.8074 1.86688 19.498L11.1329 3.49799C11.3117 3.1891 11.6415 2.9989 11.9984 2.9989C12.3553 2.9989 12.6851 3.1891 12.8639 3.49799L22.1299 19.498C22.3084 19.8072 22.3085 20.1882 22.1301 20.4975C21.9518 20.8069 21.622 20.9976 21.2649 20.998H21.2659ZM10.9999 15.998V17.998H11.9329H11.9979H12.0629H12.9979V15.998H10.9999ZM10.9999 8.99799V13.998H12.9999V8.99799H10.9999Z" fill="#2E3A59"/>
</svg>

After

Width:  |  Height:  |  Size: 590 B

View File

@ -0,0 +1,777 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="2048" height="768" viewBox="0 0 541.86663 203.2" version="1.1" id="svg8199" inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" sodipodi:docname="logo-black-small.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs id="defs8193">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7">
<g id="g3766-5-67-6-5" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2"/>
</g>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Color Blindness" id="filter4949">
<feColorMatrix values="0.299 0.587 0.114 0 0 0.299 0.587 0.114 0 0 0.299 0.587 0.114 0 0 0 0 0 1 0 " type="matrix" result="colormatrix1" id="feColorMatrix4947"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-2-2">
<g id="g3766-5-2-9" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-2-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-0-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-5-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-5-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-2-7"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1700-2">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1702-6" cx="-2554.873" cy="-73.034241" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter4192-4" height="1" width="1" y="0" x="0">
<feColorMatrix type="hueRotate" values="355" result="color1" id="feColorMatrix4188-1"/>
<feColorMatrix type="saturate" values="0.42" result="fbSourceGraphic" id="feColorMatrix4190-2"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6919-8"/>
<feColorMatrix id="feColorMatrix6921-8" values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" in="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6927-9"/>
<feColorMatrix id="feColorMatrix6929-2" values="1.219 0 0 0.145508 -0.1095 0 1.219 0 0.145508 -0.1095 0 0 1.219 0.145508 -0.1095 0 0 0 1 0" in="fbSourceGraphic" result="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6943-8"/>
<feColorMatrix id="feColorMatrix6945-8" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1704-6-8">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1706-1-6" cx="-2193.8486" cy="0.084396847" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Greyscale" id="filter6833-8">
<feColorMatrix values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" id="feColorMatrix6831-3"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6835-8"/>
<feColorMatrix id="feColorMatrix6837-3" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-7-3">
<g id="g3766-5-3" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-6-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-9-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-8-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-7-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-2-6"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9366">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle9364" cx="-2554.873" cy="-73.034241" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter9384" height="1" width="1" y="0" x="0">
<feColorMatrix type="hueRotate" values="355" result="color1" id="feColorMatrix9368"/>
<feColorMatrix type="saturate" values="0.42" result="fbSourceGraphic" id="feColorMatrix9370"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix9372"/>
<feColorMatrix id="feColorMatrix9374" values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" in="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix9376"/>
<feColorMatrix id="feColorMatrix9378" values="1.219 0 0 0.145508 -0.1095 0 1.219 0 0.145508 -0.1095 0 0 1.219 0.145508 -0.1095 0 0 0 1 0" in="fbSourceGraphic" result="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix9380"/>
<feColorMatrix id="feColorMatrix9382" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9388">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle9386" cx="-2193.8486" cy="0.084396847" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Greyscale" id="filter9396">
<feColorMatrix values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" id="feColorMatrix9390"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix9392"/>
<feColorMatrix id="feColorMatrix9394" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9410">
<g id="g9408" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path9398"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path9400"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path9402"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path9404"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path9406"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1700-2-64">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1702-6-3" cx="-2554.873" cy="-73.034241" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter4192-4-7" height="1" width="1" y="0" x="0">
<feColorMatrix type="hueRotate" values="355" result="color1" id="feColorMatrix4188-1-5"/>
<feColorMatrix type="saturate" values="0.42" result="fbSourceGraphic" id="feColorMatrix4190-2-81"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6919-8-0"/>
<feColorMatrix id="feColorMatrix6921-8-93" values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" in="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6927-9-02"/>
<feColorMatrix id="feColorMatrix6929-2-6" values="1.219 0 0 0.145508 -0.1095 0 1.219 0 0.145508 -0.1095 0 0 1.219 0.145508 -0.1095 0 0 0 1 0" in="fbSourceGraphic" result="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6943-8-4"/>
<feColorMatrix id="feColorMatrix6945-8-3" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1704-6-8-8">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1706-1-6-6" cx="-2193.8486" cy="0.084396847" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Greyscale" id="filter6833-8-7">
<feColorMatrix values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" id="feColorMatrix6831-3-0"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6835-8-8"/>
<feColorMatrix id="feColorMatrix6837-3-1" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-7-3-9">
<g id="g3766-5-3-8" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-6-8-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-9-0-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-8-4-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-7-7-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-2-6-5"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4">
<g id="g3766-5" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-7-3-8">
<g id="g3766-5-3-9" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-6-8-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-9-0-63"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-8-4-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-7-7-04"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-2-6-4"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1700-2-4">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1702-6-35" cx="-2554.873" cy="-73.034241" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter4192-4-1" height="1" width="1" y="0" x="0">
<feColorMatrix type="hueRotate" values="355" result="color1" id="feColorMatrix4188-1-7"/>
<feColorMatrix type="saturate" values="0.42" result="fbSourceGraphic" id="feColorMatrix4190-2-4"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6919-8-3"/>
<feColorMatrix id="feColorMatrix6921-8-1" values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" in="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6927-9-4"/>
<feColorMatrix id="feColorMatrix6929-2-69" values="1.219 0 0 0.145508 -0.1095 0 1.219 0 0.145508 -0.1095 0 0 1.219 0.145508 -0.1095 0 0 0 1 0" in="fbSourceGraphic" result="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6943-8-42"/>
<feColorMatrix id="feColorMatrix6945-8-2" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1704-6-8-6">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1706-1-6-4" cx="-2193.8486" cy="0.084396847" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Greyscale" id="filter6833-8-1">
<feColorMatrix values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" id="feColorMatrix6831-3-2"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6835-8-88"/>
<feColorMatrix id="feColorMatrix6837-3-9" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-7-3-2">
<g id="g3766-5-3-88" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-6-8-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-9-0-68"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-8-4-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-7-7-83"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-2-6-3"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1">
<g id="g3766-5-67-6-5-0" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1700-2-5">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1702-6-9" cx="-2554.873" cy="-73.034241" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter4192-4-3" height="1" width="1" y="0" x="0">
<feColorMatrix type="hueRotate" values="355" result="color1" id="feColorMatrix4188-1-57"/>
<feColorMatrix type="saturate" values="0.42" result="fbSourceGraphic" id="feColorMatrix4190-2-0"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6919-8-8"/>
<feColorMatrix id="feColorMatrix6921-8-19" values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" in="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6927-9-9"/>
<feColorMatrix id="feColorMatrix6929-2-7" values="1.219 0 0 0.145508 -0.1095 0 1.219 0 0.145508 -0.1095 0 0 1.219 0.145508 -0.1095 0 0 0 1 0" in="fbSourceGraphic" result="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6943-8-8"/>
<feColorMatrix id="feColorMatrix6945-8-25" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1704-6-8-3">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1706-1-6-49" cx="-2193.8486" cy="0.084396847" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Greyscale" id="filter6833-8-0">
<feColorMatrix values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" id="feColorMatrix6831-3-20"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6835-8-1"/>
<feColorMatrix id="feColorMatrix6837-3-96" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-7-3-21">
<g id="g3766-5-3-2" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-6-8-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-9-0-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-8-4-31"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-7-7-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-2-6-9"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1700-2-64-0">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1702-6-3-1" cx="-2554.873" cy="-73.034241" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter4192-4-7-3" height="1" width="1" y="0" x="0">
<feColorMatrix type="hueRotate" values="355" result="color1" id="feColorMatrix4188-1-5-7"/>
<feColorMatrix type="saturate" values="0.42" result="fbSourceGraphic" id="feColorMatrix4190-2-81-7"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6919-8-0-2"/>
<feColorMatrix id="feColorMatrix6921-8-93-6" values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" in="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6927-9-02-4"/>
<feColorMatrix id="feColorMatrix6929-2-6-5" values="1.219 0 0 0.145508 -0.1095 0 1.219 0 0.145508 -0.1095 0 0 1.219 0.145508 -0.1095 0 0 0 1 0" in="fbSourceGraphic" result="fbSourceGraphic"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6943-8-4-2"/>
<feColorMatrix id="feColorMatrix6945-8-3-0" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1704-6-8-8-2">
<circle style="opacity:1;fill:#9a9a9a;fill-opacity:1;stroke:#000000;stroke-width:0.209504;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="circle1706-1-6-6-9" cx="-2193.8486" cy="0.084396847" r="120.84013"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" height="1" width="1" y="0" x="0" inkscape:label="Greyscale" id="filter6833-8-7-0">
<feColorMatrix values="0.618 0.32 0.062 0 0 0.163 0.775 0.062 0 0 0.163 0.32 0.516 0 0 0 0 0 1 0 " type="matrix" result="fbSourceGraphic" id="feColorMatrix6831-3-0-9"/>
<feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6835-8-8-9"/>
<feColorMatrix id="feColorMatrix6837-3-1-4" values="0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0.21 0.72 0.072 0 0 0 0 0 1 0 " in="fbSourceGraphic"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-7-3-9-5">
<g id="g3766-5-3-8-1" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-6-8-1-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-9-0-6-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-8-4-4-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-7-7-8-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-2-6-5-8"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9">
<g id="g3766-5-67-6-5-0-8" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7">
<g id="g3766-5-67-6-5-0-8-4" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1"/>
</g>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26778-6" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26776-2"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26782-6" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26780-7"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-6-5">
<g id="g3766-5-6-6" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-8-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-7-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-7-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-6-2"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-6-8"/>
</g>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26786-2" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26784-9"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26790-9" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26788-6"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26794-0" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26792-2"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26798-7" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26796-6"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26802-1" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26800-3"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26806-2" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26804-1"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-6">
<g id="g3766-5-67-6-5-0-8-3" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-9"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-6-2">
<g id="g3766-5-67-6-5-0-8-3-7" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-7-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-9-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-7-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-4-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-9-3"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-9">
<g id="g3766-5-67-6-5-0-8-36" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-2"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-18"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3">
<g id="g3766-5-67-6-5-0-8-4-6" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-2">
<g id="g3766-5-67-6-5-0-8-4-6-2" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-8"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-6"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-4">
<g id="g3766-5-67-6-5-0-8-4-6-7" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-3"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-4-6">
<g id="g3766-5-67-6-5-0-8-4-6-7-7" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-6-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-5-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-6-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-9-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-3-2"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-4-6-5">
<g id="g3766-5-67-6-5-0-8-4-6-7-7-6" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-6-5-2"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-5-3-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-6-5-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-9-6-2"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-3-2-7"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-4-6-5-7">
<g id="g3766-5-67-6-5-0-8-4-6-7-7-6-3" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-6-5-2-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-5-3-9-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-6-5-1-2"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-9-6-2-9"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-3-2-7-3"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2028">
<rect style="fill:#b7b7b7;fill-opacity:1;stroke:none;stroke-width:12.6145;stroke-opacity:1" id="rect2030" width="130.175" height="43.331154" x="-2228.6987" y="156.12671"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2136">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -2623.452,-877.4706 c -1.0381,-21.6059 -0.4966,-226.7511 -0.4966,-226.7511 0,0 -3.5768,-43.1064 31.0995,-42.2457 34.6764,0.8608 162.7414,9.871 162.7414,9.871 0,0 20.387,10.9137 19.4517,45.1759 -0.9352,34.2622 1.0576,240.07206 1.0576,240.07206 l -188.0918,52.67946 z" id="path2138"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1678">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1676"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1682">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1680"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1678-7">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1676-5"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1682-5">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1680-6"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1678-7-7">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1676-5-0"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1682-5-9">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1680-6-3"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1682-5-2">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1680-6-0"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1678-7-5">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1676-5-9"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter1678-7-5-9">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix1676-5-9-7"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2231">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -4201.6869,279.03202 5.521,-33.39309 -1.9193,-19.38719 11.8735,-6.42268 -9.5512,-23.16141 -5.8751,-15.1533 -6.4884,-6.08086 -12.1253,-3.20937 -14.1396,-6.85692 -2.8824,-2.88835 2.058,-17.33031 4.3251,-8.03439 2.3469,-3.52671 1.5197,-4.92088 -1.0953,-4.35883 0.2709,-3.73007 6.6064,-3.77071 1.057,-5.93217 -1.2541,-7.7022 -2.5363,-7.236939 -6.3519,-8.943896 -7.5803,-5.203692 -6.3087,-2.3944 -5.6817,-0.434975 -7.2879,-0.679186 -10.3667,0.08178 -9.2316,5.96937 -6.8659,5.653749 -2.6598,9.60374 -4.5363,14.723409 -0.5398,11.68034 1.2899,10.31061 1.3067,6.50946 0.8769,7.26226 -3.1134,3.45977 -2.3892,2.86885 2.3257,2.97106 8.6127,-3.37643 -3.1972,3.90628 -10.6934,5.03986 -7.2845,5.60348 -26.0506,11.25014 -1.7859,1.89418 -88.4484,11.22381 7.5184,6.00678 76.0127,-11.32263 -9.6107,22.14748 -1.9024,0.64666 -70.118,-5.90343 3.7793,3.84193 67.1594,4.78523 -7.458,19.24545 14.2851,4.81928 -0.093,13.16376 v 12.67076 l 2.3241,14.48827 22.9129,74.45195 77.8264,-8.56372 32.4829,-10.97224 z" id="path2233"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2249">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -4255.3495,-9.963071 c -0.976,-5.196443 -14.2771,-75.432629 -14.2771,-75.432629 l 0.8151,-16.91714 0.6805,-23.11744 2.9142,-16.20417 1.5319,-8.87801 1.8047,-13.58025 5.4523,-17.56399 4.4617,-4.06723 8.7056,-4.95503 13.7464,-1.70061 -1.3288,-9.08963 0.9949,-7.03834 2.3241,-5.10299 2.9408,-3.34667 4.2349,-2.73902 2.1342,-1.30024 -0.984,-3.82735 -1.2737,-2.74955 -0.4157,-1.40391 -2.16,-4.38515 -0.4215,-3.86392 0.214,-1.3021 -2.94,-0.39055 -1.9214,-3.73031 -1.3309,-4.32231 -0.4196,-3.68527 1.2755,-1.47376 3.4171,-0.38796 1.9976,-3.20812 1.5047,-2.87084 4.2215,-9.94129 v 0 l -3.9413,-2.94066 c -2.2114,0.18364 -7.975,6.08901 -1.2594,-4.60248 0.322,-0.51253 -0.1273,-1.1153 0.158,-1.7375 l 11.4985,-6.92269 10.5931,-3.40153 9.3276,-2.2773 16.9082,-1.43878 6.0788,1.75607 4.2072,3.28935 4.6773,3.18956 3.7372,0.27365 -0.2206,3.32463 3.4647,1.27711 1.3067,8.8941 -1.1924,20.38165 -2.2974,7.477 -8.6926,12.39697 -3.6105,8.03989 1.3716,8.94829 2.1815,9.13569 3.7644,1.66823 5.9974,3.50313 7.8388,4.3896 25.1663,10.72107 7.3285,1.52149 5.683,4.74975 5.3649,4.5779 2.2193,2.39413 1.8278,-0.685 0.5871,-1.19354 4.9794,-0.15967 2.3863,1.9033 44.2235,1.78086 16.3079,-0.60582 -3.6079,8.2966 -56.1628,-3.19646 -0.952,1.14998 -5.1773,0.032 4.7402,9.07444 3.0711,7.49991 2.1709,7.82053 4.9905,18.75247 v 1.54215 l 0.1845,1.89402 11.8393,24.944812 6.1163,18.403544 -35.755,-0.189945 -10.5354,-8.586099 0.036,-1.15316 -15.2324,-41.212342 -2.386,1.59443 -1.2324,3.5669 -7.0773,43.376716 -102.2075,63.675551 z" id="path2251" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2255">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2253"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2259">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2257"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2231-1">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -4201.6869,279.03202 5.521,-33.39309 -1.9193,-19.38719 11.8735,-6.42268 -9.5512,-23.16141 -5.8751,-15.1533 -6.4884,-6.08086 -12.1253,-3.20937 -14.1396,-6.85692 -2.8824,-2.88835 2.058,-17.33031 4.3251,-8.03439 2.3469,-3.52671 1.5197,-4.92088 -1.0953,-4.35883 0.2709,-3.73007 6.6064,-3.77071 1.057,-5.93217 -1.2541,-7.7022 -2.5363,-7.236939 -6.3519,-8.943896 -7.5803,-5.203692 -6.3087,-2.3944 -5.6817,-0.434975 -7.2879,-0.679186 -10.3667,0.08178 -9.2316,5.96937 -6.8659,5.653749 -2.6598,9.60374 -4.5363,14.723409 -0.5398,11.68034 1.2899,10.31061 1.3067,6.50946 0.8769,7.26226 -3.1134,3.45977 -2.3892,2.86885 2.3257,2.97106 8.6127,-3.37643 -3.1972,3.90628 -10.6934,5.03986 -7.2845,5.60348 -26.0506,11.25014 -1.7859,1.89418 -88.4484,11.22381 7.5184,6.00678 76.0127,-11.32263 -9.6107,22.14748 -1.9024,0.64666 -70.118,-5.90343 3.7793,3.84193 67.1594,4.78523 -7.458,19.24545 14.2851,4.81928 -0.093,13.16376 v 12.67076 l 2.3241,14.48827 22.9129,74.45195 77.8264,-8.56372 32.4829,-10.97224 z" id="path2233-2"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2259-9">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2257-3"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2249-4">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -4255.3495,-9.963071 c -0.976,-5.196443 -14.2771,-75.432629 -14.2771,-75.432629 l 0.8151,-16.91714 0.6805,-23.11744 2.9142,-16.20417 1.5319,-8.87801 1.8047,-13.58025 5.4523,-17.56399 4.4617,-4.06723 8.7056,-4.95503 13.7464,-1.70061 -1.3288,-9.08963 0.9949,-7.03834 2.3241,-5.10299 2.9408,-3.34667 4.2349,-2.73902 2.1342,-1.30024 -0.984,-3.82735 -1.2737,-2.74955 -0.4157,-1.40391 -2.16,-4.38515 -0.4215,-3.86392 0.214,-1.3021 -2.94,-0.39055 -1.9214,-3.73031 -1.3309,-4.32231 -0.4196,-3.68527 1.2755,-1.47376 3.4171,-0.38796 1.9976,-3.20812 1.5047,-2.87084 4.2215,-9.94129 v 0 l -3.9413,-2.94066 c -2.2114,0.18364 -7.975,6.08901 -1.2594,-4.60248 0.322,-0.51253 -0.1273,-1.1153 0.158,-1.7375 l 11.4985,-6.92269 10.5931,-3.40153 9.3276,-2.2773 16.9082,-1.43878 6.0788,1.75607 4.2072,3.28935 4.6773,3.18956 3.7372,0.27365 -0.2206,3.32463 3.4647,1.27711 1.3067,8.8941 -1.1924,20.38165 -2.2974,7.477 -8.6926,12.39697 -3.6105,8.03989 1.3716,8.94829 2.1815,9.13569 3.7644,1.66823 5.9974,3.50313 7.8388,4.3896 25.1663,10.72107 7.3285,1.52149 5.683,4.74975 5.3649,4.5779 2.2193,2.39413 1.8278,-0.685 0.5871,-1.19354 4.9794,-0.15967 2.3863,1.9033 44.2235,1.78086 16.3079,-0.60582 -3.6079,8.2966 -56.1628,-3.19646 -0.952,1.14998 -5.1773,0.032 4.7402,9.07444 3.0711,7.49991 2.1709,7.82053 4.9905,18.75247 v 1.54215 l 0.1845,1.89402 11.8393,24.944812 6.1163,18.403544 -35.755,-0.189945 -10.5354,-8.586099 0.036,-1.15316 -15.2324,-41.212342 -2.386,1.59443 -1.2324,3.5669 -7.0773,43.376716 -102.2075,63.675551 z" id="path2251-7" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2255-8">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2253-4"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2231-1-6">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -4201.6869,279.03202 5.521,-33.39309 -1.9193,-19.38719 11.8735,-6.42268 -9.5512,-23.16141 -5.8751,-15.1533 -6.4884,-6.08086 -12.1253,-3.20937 -14.1396,-6.85692 -2.8824,-2.88835 2.058,-17.33031 4.3251,-8.03439 2.3469,-3.52671 1.5197,-4.92088 -1.0953,-4.35883 0.2709,-3.73007 6.6064,-3.77071 1.057,-5.93217 -1.2541,-7.7022 -2.5363,-7.236939 -6.3519,-8.943896 -7.5803,-5.203692 -6.3087,-2.3944 -5.6817,-0.434975 -7.2879,-0.679186 -10.3667,0.08178 -9.2316,5.96937 -6.8659,5.653749 -2.6598,9.60374 -4.5363,14.723409 -0.5398,11.68034 1.2899,10.31061 1.3067,6.50946 0.8769,7.26226 -3.1134,3.45977 -2.3892,2.86885 2.3257,2.97106 8.6127,-3.37643 -3.1972,3.90628 -10.6934,5.03986 -7.2845,5.60348 -26.0506,11.25014 -1.7859,1.89418 -88.4484,11.22381 7.5184,6.00678 76.0127,-11.32263 -9.6107,22.14748 -1.9024,0.64666 -70.118,-5.90343 3.7793,3.84193 67.1594,4.78523 -7.458,19.24545 14.2851,4.81928 -0.093,13.16376 v 12.67076 l 2.3241,14.48827 22.9129,74.45195 77.8264,-8.56372 32.4829,-10.97224 z" id="path2233-2-3"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2259-9-2">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2257-3-0"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2249-4-6">
<path style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m -4255.3495,-9.963071 c -0.976,-5.196443 -14.2771,-75.432629 -14.2771,-75.432629 l 0.8151,-16.91714 0.6805,-23.11744 2.9142,-16.20417 1.5319,-8.87801 1.8047,-13.58025 5.4523,-17.56399 4.4617,-4.06723 8.7056,-4.95503 13.7464,-1.70061 -1.3288,-9.08963 0.9949,-7.03834 2.3241,-5.10299 2.9408,-3.34667 4.2349,-2.73902 2.1342,-1.30024 -0.984,-3.82735 -1.2737,-2.74955 -0.4157,-1.40391 -2.16,-4.38515 -0.4215,-3.86392 0.214,-1.3021 -2.94,-0.39055 -1.9214,-3.73031 -1.3309,-4.32231 -0.4196,-3.68527 1.2755,-1.47376 3.4171,-0.38796 1.9976,-3.20812 1.5047,-2.87084 4.2215,-9.94129 v 0 l -3.9413,-2.94066 c -2.2114,0.18364 -7.975,6.08901 -1.2594,-4.60248 0.322,-0.51253 -0.1273,-1.1153 0.158,-1.7375 l 11.4985,-6.92269 10.5931,-3.40153 9.3276,-2.2773 16.9082,-1.43878 6.0788,1.75607 4.2072,3.28935 4.6773,3.18956 3.7372,0.27365 -0.2206,3.32463 3.4647,1.27711 1.3067,8.8941 -1.1924,20.38165 -2.2974,7.477 -8.6926,12.39697 -3.6105,8.03989 1.3716,8.94829 2.1815,9.13569 3.7644,1.66823 5.9974,3.50313 7.8388,4.3896 25.1663,10.72107 7.3285,1.52149 5.683,4.74975 5.3649,4.5779 2.2193,2.39413 1.8278,-0.685 0.5871,-1.19354 4.9794,-0.15967 2.3863,1.9033 44.2235,1.78086 16.3079,-0.60582 -3.6079,8.2966 -56.1628,-3.19646 -0.952,1.14998 -5.1773,0.032 4.7402,9.07444 3.0711,7.49991 2.1709,7.82053 4.9905,18.75247 v 1.54215 l 0.1845,1.89402 11.8393,24.944812 6.1163,18.403544 -35.755,-0.189945 -10.5354,-8.586099 0.036,-1.15316 -15.2324,-41.212342 -2.386,1.59443 -1.2324,3.5669 -7.0773,43.376716 -102.2075,63.675551 z" id="path2251-7-1" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2255-8-5">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2253-4-5"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2648">
<rect style="opacity:0.209608;fill:#ffee2c;fill-opacity:1;stroke:none;stroke-width:14.5858;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect2650" width="508" height="237.44432" x="-5413.7036" y="830.2475"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-7">
<g id="g3766-5-67-6-5-4" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-43"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-78"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-88"/>
</g>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2881">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2879"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2921">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2919"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2943">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2941"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2881-7">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2879-1"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Brilliance" id="filter2943-1">
<feColorMatrix values="1.2 -0 -0 0 0 -0 1.2 -0 0 0 -0 -0 1.2 0 0 0 0 0 1 0 " id="feColorMatrix2941-5"/>
</filter>
<filter inkscape:label="Fluorescence" inkscape:menu="Color" inkscape:menu-tooltip="Oversaturate colors which can be fluorescent in real world" style="color-interpolation-filters:sRGB" id="filter3610">
<feColorMatrix type="hueRotate" values="0" id="feColorMatrix3604"/>
<feColorMatrix type="saturate" values="1" id="feColorMatrix3606"/>
<feColorMatrix type="matrix" values="2 -1 0 0 0 0 2 -1 0 0 -1 0 2 0 0 0 0 0 1 0 " id="feColorMatrix3608"/>
</filter>
<filter inkscape:label="Fluorescence" inkscape:menu="Color" inkscape:menu-tooltip="Oversaturate colors which can be fluorescent in real world" style="color-interpolation-filters:sRGB" id="filter3618">
<feColorMatrix type="hueRotate" values="0" id="feColorMatrix3612"/>
<feColorMatrix type="saturate" values="1" id="feColorMatrix3614"/>
<feColorMatrix type="matrix" values="2 -1 0 0 0 0 2 -1 0 0 -1 0 2 0 0 0 0 0 1 0 " id="feColorMatrix3616"/>
</filter>
<filter inkscape:label="Fluorescence" inkscape:menu="Color" inkscape:menu-tooltip="Oversaturate colors which can be fluorescent in real world" style="color-interpolation-filters:sRGB" id="filter3626">
<feColorMatrix type="hueRotate" values="0" id="feColorMatrix3620"/>
<feColorMatrix type="saturate" values="1" id="feColorMatrix3622"/>
<feColorMatrix type="matrix" values="2 -1 0 0 0 0 2 -1 0 0 -1 0 2 0 0 0 0 0 1 0 " id="feColorMatrix3624"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-3">
<g id="g3766-5-67-6-5-0-8-4-6-6" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-53"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-2"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-3-4">
<g id="g3766-5-67-6-5-0-8-4-6-6-7" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-7-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-53-3"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-5-1"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-6-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-2-5"/>
</g>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-3-0-7-1-9-7-3-3-9">
<g id="g3766-5-67-6-5-0-8-4-6-6-2" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-5-2-6-4-8-1-7-7-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-3-9-9-8-5-7-5-53-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-56-90-8-7-8-1-3-5-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-2-8-7-0-4-1-5-6-5"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-9-1-2-8-3-1-6-2-9"/>
</g>
</clipPath>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-10.6996" y1="616.5791" x2="-15.3646" y2="555.9151" gradientTransform="matrix(-0.53940384,2.0130825,2.0130825,0.53940384,-1862.7829,951.04449)">
<stop offset="0" style="stop-color:#29D3DA" id="stop31"/>
<stop offset="0.519" style="stop-color:#0077FF" id="stop33"/>
<stop offset="0.999" style="stop-color:#064093" id="stop35"/>
<stop offset="1" style="stop-color:#084698" id="stop37"/>
</linearGradient>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-36.325901" y1="590.0163" x2="9.8745003" y2="590.0163" gradientTransform="matrix(-0.53940384,2.0130825,2.0130825,0.53940384,-1862.7829,951.04449)">
<stop offset="0" style="stop-color:#29D3DA" id="stop20"/>
<stop offset="0.519" style="stop-color:#0077FF" id="stop22"/>
<stop offset="0.999" style="stop-color:#064093" id="stop24"/>
<stop offset="1" style="stop-color:#084698" id="stop26"/>
</linearGradient>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-10.5885" y1="594.63062" x2="-22.251499" y2="637.63062" gradientTransform="matrix(-0.53940384,2.0130825,2.0130825,0.53940384,-1862.7829,951.04449)">
<stop offset="0.012" style="stop-color:#E0B386" id="stop11"/>
<stop offset="0.519" style="stop-color:#DA498C" id="stop13"/>
<stop offset="1" style="stop-color:#961484" id="stop15"/>
</linearGradient>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0.98760003" y1="635.56958" x2="-41.7784" y2="592.80359" gradientTransform="matrix(-0.53940384,2.0130825,2.0130825,0.53940384,-1862.7829,951.04449)">
<stop offset="0.012" style="stop-color:#E0B386" id="stop2"/>
<stop offset="0.519" style="stop-color:#DA498C" id="stop4"/>
<stop offset="1" style="stop-color:#961484" id="stop6"/>
</linearGradient>
<linearGradient id="n" x1="-1230.731" y1="-532.56598" x2="-1190.37" y2="-492.20499" gradientTransform="matrix(0.81143699,0,0,0.81143699,-193.72309,1744.3544)" gradientUnits="userSpaceOnUse">
<stop offset=".805" stop-color="#722291" stop-opacity="0" id="stop117"/>
<stop offset="1" stop-color="#592acb" stop-opacity=".5" id="stop119"/>
</linearGradient>
<linearGradient id="m" x1="40.584999" y1="-0.67000002" x2="62.299999" y2="62.202999" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.81143699,0,0,0.81143699,-1224.3299,1308.2979)">
<stop offset="0" stop-color="#b833e1" id="stop108"/>
<stop offset=".371" stop-color="#9059ff" id="stop110"/>
<stop offset=".614" stop-color="#5b6df8" id="stop112"/>
<stop offset="1" stop-color="#0090ed" id="stop114"/>
</linearGradient>
<linearGradient id="l" x1="59.051998" y1="7.0830002" x2="18.155001" y2="77.919998" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.81143699,0,0,0.81143699,-1220.6892,1266.0502)">
<stop offset="0" stop-color="#fff36e" stop-opacity=".8" id="stop101"/>
<stop offset=".094" stop-color="#fff36e" stop-opacity=".699" id="stop103"/>
<stop offset=".752" stop-color="#fff36e" stop-opacity="0" id="stop105"/>
</linearGradient>
<radialGradient id="k" cx="-1238.198" cy="-87.432999" r="150.19501" gradientTransform="matrix(0.77816806,0,0,0.77979095,-181.92722,1375.8082)" gradientUnits="userSpaceOnUse">
<stop offset=".054" stop-color="#fff36e" id="stop94"/>
<stop offset=".457" stop-color="#ff9640" id="stop96"/>
<stop offset=".639" stop-color="#ff9640" id="stop98"/>
</radialGradient>
<radialGradient id="j" cx="42.737" cy="42.193001" r="41.790001" gradientTransform="matrix(0.81143699,0,0,0.81143699,-1183.3376,1329.4537)" gradientUnits="userSpaceOnUse">
<stop offset=".216" stop-color="#fc4055" stop-opacity=".8" id="stop85"/>
<stop offset=".267" stop-color="#fd5251" stop-opacity=".633" id="stop87"/>
<stop offset=".41" stop-color="#fe8345" stop-opacity=".181" id="stop89"/>
<stop offset=".474" stop-color="#ff9640" stop-opacity="0" id="stop91"/>
</radialGradient>
<radialGradient id="i" cx="49.941002" cy="38.653999" r="41.790001" gradientTransform="matrix(0.20042493,0.78790531,-0.82036281,0.21016217,-1150.2959,1298.3412)" gradientUnits="userSpaceOnUse">
<stop offset=".363" stop-color="#fc4055" id="stop76"/>
<stop offset=".443" stop-color="#fd604d" stop-opacity=".633" id="stop78"/>
<stop offset=".545" stop-color="#fe8644" stop-opacity=".181" id="stop80"/>
<stop offset=".59" stop-color="#ff9640" stop-opacity="0" id="stop82"/>
</radialGradient>
<radialGradient id="h" cx="-1255.933" cy="-77.394997" r="88.862999" gradientTransform="matrix(0.77816806,0,0,0.77979095,-184.86642,1388.6853)" gradientUnits="userSpaceOnUse">
<stop offset=".084" stop-color="#ffde67" id="stop61"/>
<stop offset=".147" stop-color="#ffdc66" stop-opacity=".968" id="stop63"/>
<stop offset=".246" stop-color="#ffd562" stop-opacity=".879" id="stop65"/>
<stop offset=".369" stop-color="#ffcb5d" stop-opacity=".734" id="stop67"/>
<stop offset=".511" stop-color="#ffbc55" stop-opacity=".533" id="stop69"/>
<stop offset=".667" stop-color="#ffaa4b" stop-opacity=".28" id="stop71"/>
<stop offset=".822" stop-color="#ff9640" stop-opacity="0" id="stop73"/>
</radialGradient>
<radialGradient id="g" cx="-1255.933" cy="-77.394997" r="88.862999" gradientTransform="matrix(0.77816806,0,0,0.77979095,-189.93972,1349.0821)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9640" id="stop56"/>
<stop offset=".8" stop-color="#fc4055" id="stop58"/>
</radialGradient>
<linearGradient id="f" x1="-1212.61" y1="-525.10303" x2="-1189.052" y2="-484.29901" gradientTransform="matrix(0.81143699,0,0,0.81143699,-223.26049,1800.2764)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ffbd4f" id="stop51"/>
<stop offset=".508" stop-color="#ff9640" stop-opacity="0" id="stop53"/>
</linearGradient>
<radialGradient id="e" cx="31.878" cy="42.77" r="137.521" gradientTransform="matrix(0.81143699,0,0,0.81143699,-1236.7136,1273.2711)" gradientUnits="userSpaceOnUse">
<stop offset=".113" stop-color="#810220" id="stop40"/>
<stop offset=".133" stop-color="#920b27" stop-opacity=".861" id="stop42"/>
<stop offset=".204" stop-color="#cb2740" stop-opacity=".398" id="stop44"/>
<stop offset=".257" stop-color="#ef394f" stop-opacity=".11" id="stop46"/>
<stop offset=".284" stop-color="#fc4055" stop-opacity="0" id="stop48"/>
</radialGradient>
<radialGradient id="d" cx="42.285" cy="44.499001" r="137.521" gradientTransform="matrix(0.81143699,0,0,0.81143699,-1227.5146,1265.2378)" gradientUnits="userSpaceOnUse">
<stop offset=".153" stop-color="#810220" id="stop29"/>
<stop offset=".167" stop-color="#920b27" stop-opacity=".861" id="stop31-2"/>
<stop offset=".216" stop-color="#cb2740" stop-opacity=".398" id="stop33-6"/>
<stop offset=".253" stop-color="#ef394f" stop-opacity=".11" id="stop35-0"/>
<stop offset=".272" stop-color="#fc4055" stop-opacity="0" id="stop37-6"/>
</radialGradient>
<radialGradient id="c" cx="-1179.15" cy="-522.84198" r="106.599" gradientTransform="matrix(0.81143699,0,0,0.81143699,-200.99269,1706.8036)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ffde67" stop-opacity=".6" id="stop14"/>
<stop offset=".093" stop-color="#ffd966" stop-opacity=".581" id="stop16"/>
<stop offset=".203" stop-color="#ffca65" stop-opacity=".525" id="stop18"/>
<stop offset=".321" stop-color="#feb262" stop-opacity=".432" id="stop20-6"/>
<stop offset=".446" stop-color="#fe8f5e" stop-opacity=".302" id="stop22-4"/>
<stop offset=".573" stop-color="#fd6459" stop-opacity=".137" id="stop24-6"/>
<stop offset=".664" stop-color="#fc4055" stop-opacity="0" id="stop26-2"/>
</radialGradient>
<radialGradient id="b" cx="-1251.812" cy="-513.92102" r="53.726002" gradientTransform="matrix(0.81143699,0,0,0.81143699,-227.86039,1708.6568)" gradientUnits="userSpaceOnUse">
<stop offset=".001" stop-color="#c60084" id="stop9"/>
<stop offset="1" stop-color="#fc4055" stop-opacity="0" id="stop11-8"/>
</radialGradient>
<radialGradient id="a" cx="-1186.91" cy="-517.67603" r="90.779999" gradientTransform="matrix(0.81143699,0,0,0.81143699,-291.4025,1838.0702)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff36e" id="stop2-9"/>
<stop offset=".5" stop-color="#fc4055" id="stop4-6"/>
<stop offset="1" stop-color="#e31587" id="stop6-0"/>
</radialGradient>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26778-6-3" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26776-2-3"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26782-6-3" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26780-7-7"/>
</filter>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3754-4-6-5-9">
<g id="g3766-5-6-6-8" transform="translate(195.00886,2725.0245)" style="fill:#20f29f;fill-opacity:1">
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 32.702627,3769.5889 h -0.003 c -7.70202,-5.6066 -10.75267,-2.7914 -11.91154,-0.4683 -0.54504,1.0981 -1.65629,1.7807 -2.86015,1.7807 -0.11112,0 -0.22489,-0.01 -0.33602,-0.019 -1.57956,-0.1667 -2.82046,-1.4632 -2.86014,-3.0481 -0.17463,-6.6306 4.1566,-13.2745 4.1566,-13.2745 5.56419,4.0059 10.27642,9.1231 13.8139,15.0261 z" id="path3756-8-8-9-6"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m 39.830497,3795.4235 c 0,5.9718 -1.03981,11.7028 -2.9501,17.0184 h -0.003 c -1.60602,-2.7305 -2.21456,-5.9665 -2.37596,-8.8214 -0.17991,-3.1645 -3.04006,-5.5273 -6.17273,-5.0404 -0.0635,0.01 -0.127,0.019 -0.1905,0.026 -4.34181,0.635 -8.32908,-2.4342 -8.90323,-6.7841 -0.25664,-1.958 -0.32808,-3.7307 -0.25664,-5.3341 0,0 0.60854,-7.6837 4.2836,-11.3774 0.72496,-0.7276 1.37848,-1.3177 1.94734,-1.7278 0.81756,-0.5874 1.82827,-0.8308 2.82839,-0.7064 3.60098,0.4445 6.28915,-0.1588 6.28915,-0.1588 3.51896,6.8714 5.50333,14.6557 5.50333,22.9056 z" id="path3758-4-7-8-7"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -2.3626031,3753.4251 -6.08542,7.9377 c -0.79375,-6.0856 -7.9877699,-11.2716 -6.0854199,-11.1128 9.5249999,0.7938 12.1708399,3.1751 12.1708399,3.1751 z" id="path3760-0-7-7-0"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -14.946193,3761.7994 c 1.92088,2.5744 0.97632,6.2602 -1.94733,7.5963 -4.46088,2.0427 -10.56481,5.2733 -13.35881,8.7209 -1.18005,1.4579 -3.08769,2.1194 -4.90538,1.659 -2.28335,-0.5794 -5.1726,-0.5239 -6.89239,2.4898 -3.175,5.5564 9.10166,11.8854 8.38729,18.9738 -0.005,-0.021 -0.0106,-0.04 -0.0159,-0.061 -0.42333,-1.741 -1.65629,-3.1751 -3.30464,-3.8842 -4.29948,-1.8574 -8.17034,-4.7494 -10.62302,-9.2077 -5.35782,-9.7422 -1.55046,-21.3762 2.19339,-28.9118 4.64079,-4.4742 10.14148,-8.062 16.2269,-10.4963 0,0 8.3476,5.2098 14.23987,13.1211 z" id="path3762-8-6-2-4"/>
<path style="fill:#20f29f;fill-opacity:1;stroke-width:0.264587" d="m -3.1590031,3810.4072 c 4.70165,2.855 5.80231,9.2157 2.31775005,13.473 -1.96056005,2.3945 -4.21481005,4.9584 -6.47435005,7.4403 l -7.8263799,8.3002 c -3.71475,3.8577 -5.13027,5.1833 -5.13027,5.1833 -4.67783,-6.7841 -2.99244,-19.675 -2.99244,-19.675 l -4.91066,-3.4264 c -3.60098,-2.511 -5.56155,-6.792 -5.05619,-11.1525 0.4736,-4.072 0.0741,-7.2101 -0.43127,-9.3109 4.16189,-1.2965 8.36083,-1.9421 11.32416,-2.2623 2.30717,-0.2487 4.61169,0.5213 6.2865,2.1273 3.33111,3.1989 8.5037099,6.6386 12.8931499,9.303 z" id="path3764-4-6-8-8"/>
</g>
</clipPath>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26786-2-4" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26784-9-8"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26790-9-1" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26788-6-6"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26794-0-8" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26792-2-5"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26798-7-2" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26796-6-1"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26802-1-9" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26800-3-9"/>
</filter>
<filter style="color-interpolation-filters:sRGB" inkscape:label="Greyscale" id="filter26806-2-6" x="0" y="0" width="1" height="1">
<feColorMatrix values="0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0.21 0.72 0.072 0.239862 0 0 0 0 1 0 " id="feColorMatrix26804-1-0"/>
</filter>
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.16" inkscape:cx="956.25" inkscape:cy="537.5" inkscape:document-units="mm" inkscape:current-layer="g8987" inkscape:document-rotation="0" showgrid="false" units="px" inkscape:window-width="1920" inkscape:window-height="1024" inkscape:window-x="0" inkscape:window-y="28" inkscape:window-maximized="1" showguides="false" inkscape:pagecheckerboard="0" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0"/>
<metadata id="metadata8196">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-47.874655,-200.14825)">
<g id="g8987" transform="translate(115.40045,102.69502)">
<rect style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.950416;stroke-opacity:1" id="rect5184-7-6-0-0-9" width="541.86664" height="203.2" x="-67.525795" y="97.453232"/>
<g id="g5194-5-2-3-2-1" transform="matrix(3.595428,0,0,3.595428,-699.04445,-9026.4434)" style="fill:#ffffff">
<g aria-label="DZIAŁAĆ!" id="text5188-2-6-9-7-9" style="font-weight:900;font-stretch:condensed;font-size:15.3811px;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, Heavy Condensed';word-spacing:0px;stroke-width:0.382614" inkscape:transform-center-x="5.7184075" inkscape:transform-center-y="-93.600746">
<path d="m 237.95964,2573.0194 h -4.53743 l -1.92264,10.8898 h 4.53743 c 3.47613,0 6.07553,-2.3687 6.62925,-5.4757 0.55372,-3.1377 -1.23049,-5.4141 -4.70661,-5.4141 z m -1.69192,7.8443 h -0.8152 l 0.86134,-4.8604 h 0.8152 c 1.50734,0 2.35331,0.846 2.07645,2.4302 -0.27686,1.5843 -1.43045,2.4302 -2.93779,2.4302 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1440"/>
<path d="m 252.55627,2575.588 0.44605,-2.5686 h -8.15198 l -0.47681,2.707 h 4.3067 l -5.29109,5.6141 -0.46144,2.5687 h 8.15199 l 0.47681,-2.7225 h -4.36823 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1442"/>
<path d="m 254.54042,2573.0194 -1.92264,10.8898 h 3.41461 l 1.92263,-10.8898 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1444"/>
<path d="m 265.09183,2583.9092 h 3.59918 l -2.04569,-10.8898 h -3.93756 l -5.90634,10.8898 h 3.5838 l 0.83057,-1.6458 h 3.62994 z m -0.61524,-4.2144 h -1.96878 l 1.52273,-3.0301 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1446"/>
<path d="m 275.028,2573.0194 h -3.4146 l -0.69215,3.9375 -0.8921,0.2307 -0.58448,3.3224 0.8921,-0.2308 -0.64601,3.63 h 6.70616 l 0.46144,-2.584 h -3.29156 l 0.35377,-1.9842 1.19972,-0.323 0.58448,-3.3223 -1.19972,0.323 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1448"/>
<path d="m 284.99496,2583.9092 h 3.59918 l -2.04569,-10.8898 h -3.93756 l -5.90634,10.8898 h 3.58379 l 0.83058,-1.6458 h 3.62994 z m -0.61525,-4.2144 h -1.96878 l 1.52273,-3.0301 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1450"/>
<path d="m 290.02456,2578.4489 c -0.5691,3.2454 1.0613,5.5372 4.39899,5.5372 2.87627,0 5.13729,-1.7227 6.04478,-4.2913 h -3.59918 c -0.46143,0.7229 -1.16896,1.1382 -1.93802,1.1382 -1.15358,0 -1.7073,-0.9383 -1.44582,-2.3841 0.24609,-1.4458 1.12282,-2.3841 2.2764,-2.3841 0.76905,0 1.33816,0.4153 1.53811,1.1382 h 3.59918 c 0.0154,-2.5686 -1.64578,-4.2913 -4.52205,-4.2913 -3.33769,0 -5.78329,2.2918 -6.35239,5.5372 z m 9.07485,-10.0285 -4.27595,1.6919 -0.41529,2.2764 4.24519,-1.4458 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1452"/>
<path d="m 303.86752,2572.2964 -0.87672,7.2907 h 2.92241 l 1.67654,-7.2907 z m -0.19995,11.7358 c 1.19973,0 2.07645,-0.7383 2.24564,-1.6765 0.16919,-0.9536 -0.44605,-1.7073 -1.64578,-1.7073 -1.2151,0 -2.10721,0.7537 -2.2764,1.7073 -0.16919,0.9382 0.46143,1.6765 1.67654,1.6765 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1454"/>
</g>
<g aria-label="CZAS" id="text5192-8-8-9-1-2" style="font-weight:900;font-stretch:condensed;font-size:15.3811px;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, Heavy Condensed';word-spacing:0px;stroke-width:0.382614" inkscape:transform-center-x="5.7184075" inkscape:transform-center-y="-93.600746">
<path d="m 182.82099,2578.4643 c -0.5691,3.2454 1.0613,5.5372 4.399,5.5372 2.87626,0 5.13729,-1.7227 6.04477,-4.2914 h -3.59918 c -0.46143,0.723 -1.16896,1.1382 -1.93801,1.1382 -1.15359,0 -1.70731,-0.9382 -1.44583,-2.384 0.2461,-1.4459 1.12282,-2.3841 2.2764,-2.3841 0.76906,0 1.33816,0.4153 1.53811,1.1382 h 3.59918 c 0.0154,-2.5686 -1.64578,-4.2913 -4.52204,-4.2913 -3.3377,0 -5.7833,2.2918 -6.3524,5.5372 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1473"/>
<path d="m 203.37012,2575.6034 0.44605,-2.5687 h -8.15198 l -0.47682,2.7071 h 4.30671 l -5.2911,5.6141 -0.46143,2.5687 h 8.15198 l 0.47682,-2.7225 h -4.36824 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1475"/>
<path d="m 210.95299,2583.9246 h 3.59917 l -2.04568,-10.8899 h -3.93756 l -5.90635,10.8899 h 3.5838 l 0.83058,-1.6458 h 3.62994 z m -0.61525,-4.2145 h -1.96878 l 1.52273,-3.03 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1477"/>
<path d="m 219.99706,2584.0322 c 2.79936,0 4.42975,-1.5227 4.42975,-3.5069 0,-3.1223 -4.33747,-3.1531 -4.33747,-4.4605 0,-0.3384 0.26148,-0.5537 0.59987,-0.5537 0.44605,0 0.70753,0.2922 0.59986,0.8613 h 3.67608 c 0.27686,-2.2148 -1.55349,-3.5222 -4.07599,-3.5222 -2.63017,0 -4.53742,1.3227 -4.53742,3.6914 0,3.1378 4.35285,2.9071 4.35285,4.2914 0,0.3537 -0.29224,0.5383 -0.64601,0.5383 -0.59986,0 -0.84596,-0.3076 -0.78444,-0.9382 h -3.62994 c -0.27686,2.4455 1.61502,3.5991 4.35286,3.5991 z" style="-inkscape-font-specification:'Poppins Heavy Italic'" id="path1479"/>
</g>
</g>
<g id="g5216-6-9-9-2-4" transform="matrix(3.3079433,0,0,3.3079433,-551.081,-5594.972)" style="fill:#ffffff;fill-opacity:1">
<g id="g5214-0-20-3-1-4" transform="translate(-146.29537,198.647)" style="fill:#ffffff;fill-opacity:1">
<path d="m 334.82283,1533.1907 h -6.18557 l -1.78322,10.0864 -4.76456,-10.0864 h -6.18556 l -3.48286,19.7269 h 6.18556 l 1.75536,-9.9192 4.79242,9.9192 h 6.18557 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5196-09-2-3-5-9"/>
<path d="m 307.70543,1533.1907 -3.48286,19.7269 h 6.18557 l 3.48286,-19.7269 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5198-1-3-8-9-9"/>
<path d="m 336.83457,1533.1907 -0.86375,4.9039 h 5.1825 l -2.61911,14.823 h 6.18556 l 2.61912,-14.823 h 5.23822 l 0.86375,-4.9039 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5200-2-7-0-9-3"/>
<path d="m 367.74261,1538.0946 0.86375,-4.9039 h -13.15129 l -3.48286,19.7269 h 13.15129 l 0.86375,-4.9317 h -6.96573 l 0.50154,-2.7863 h 6.12983 l 0.83589,-4.6531 h -6.12984 l 0.41795,-2.4519 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5202-69-5-5-1-6"/>
<path d="m 379.84082,1540.045 c -0.22291,1.1702 -0.91948,1.6717 -2.08972,1.6717 h -2.45194 l 0.58513,-3.3435 h 2.45193 c 1.17024,0 1.67177,0.6687 1.5046,1.6718 z m -0.0279,-6.8543 h -9.19475 l -3.48286,19.7269 h 6.18556 l 1.25383,-7.0771 2.4798,7.0771 h 6.79854 l -2.95346,-7.5508 c 2.98133,-0.9195 4.79242,-3.1207 5.26609,-5.7119 0.64084,-3.6222 -1.39315,-6.4642 -6.35275,-6.4642 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5204-4-92-6-4-0"/>
<path d="m 408.26903,1533.1907 h -6.18556 l -1.78322,10.0864 -4.76456,-10.0864 h -6.18556 l -3.48287,19.7269 h 6.18557 l 1.75536,-9.9192 4.79242,9.9192 h 6.18556 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5206-82-2-6-9-5"/>
<path d="m 422.56957,1538.0946 0.86375,-4.9039 h -13.15129 l -3.48286,19.7269 h 13.15129 l 0.86375,-4.9317 h -6.96573 l 0.50154,-2.7863 h 6.12983 l 0.83589,-4.6531 h -6.12984 l 0.41795,-2.4519 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5208-8-8-4-1-0"/>
<path d="m 425.44671,1533.1907 -0.86375,4.9039 h 5.18249 l -2.61911,14.823 h 6.18557 l 2.61911,-14.823 h 5.23822 l 0.86375,-4.9039 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5210-2-9-0-0-2"/>
<path d="m 444.48661,1553.1405 c 2.17331,0 3.76149,-1.3374 4.06799,-3.037 0.30649,-1.7275 -0.80803,-3.0928 -2.98133,-3.0928 -2.20117,0 -3.81722,1.3653 -4.12371,3.0928 -0.30649,1.6996 0.83588,3.037 3.03705,3.037 z" style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:27.8629px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';text-align:end;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.415865" id="path5212-7-73-0-7-9"/>
</g>
</g>
<g id="g30" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g32" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g34" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g36" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g38" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g40" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g42" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g44" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g46" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g48" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g50" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g52" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g54" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g56" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g58" transform="matrix(0.26458333,0,0,0.26458333,110.25914,891.54092)"/>
<g id="g80046" transform="matrix(1.7154716,0,0,1.7154716,897.91039,-1028.9738)"/>
<g id="g14" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g16" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g18" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g20" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g22" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g24" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g26" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g28-8" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g30-9" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g32-2" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g34-6" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g36-6" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g38-4" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g40-9" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g42-5" transform="matrix(0.10754977,0.10754977,-0.10754977,0.10754977,-1076.6293,815.1033)"/>
<g id="g32-7" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g34-2" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g36-2" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g38-6" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g40-1" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g42-0" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g44-6" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g46-1" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g48-5" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g50-9" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g52-4" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g54-9" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g56-0" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g58-9" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g60" transform="matrix(0.26458333,0,0,0.26458333,-859.26997,856.42131)"/>
<g id="g12-5" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g14-9" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g16-7" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g18-7" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g20-6" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g22-7" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g24-3" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g26-6" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g28-5" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g30-6" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g32-3" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g34-9" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g36-4" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g38-8" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g40-12" transform="matrix(0.26458333,0,0,0.26458333,-1400.349,886.44561)"/>
<g id="g42-4" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g44-62" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g46-5" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g48-8" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g50-6" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g52-2" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g54-8" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g56-4" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g58-7" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g60-2" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g62" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g64" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g66" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g68" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g70" transform="matrix(0.26458333,0,0,0.26458333,-62.128037,1514.9725)"/>
<g id="g56731" transform="translate(174.22865,78.329538)"/>
<g id="g19" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g21" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g23" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g25" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g27" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g29" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g31" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g33" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g35" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g37" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g39" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g41" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g43" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g45" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="g47" transform="matrix(2.5200732,0,0,2.5200732,-1920.9491,1055.4731)"/>
<g id="text175562" style="font-size:105.833px;font-family:Poppins;-inkscape-font-specification:Poppins;word-spacing:0px;stroke-width:0.264583"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 141 KiB

29
esbuild.config.js Normal file
View File

@ -0,0 +1,29 @@
import esbuild from 'esbuild';
import scss from 'esbuild-plugin-sass';
import svg from 'esbuild-plugin-svgr';
esbuild
.build({
entryPoints: [
'sidebar/sidebar.tsx',
'test.ts',
'report-window/report-window.tsx',
'background.ts',
],
bundle: true,
outdir: './lib',
loader: { '.woff': 'file', '.woff2': 'file' },
plugins: [scss(), svg()],
watch: {
onRebuild(error, result) {
try {
console.log('watch build succeeded:', result);
} catch (error) {
console.error('watch build failed:', error);
}
},
},
})
.catch(() => process.exit(1));
// npx esbuild sidebar/sidebar.tsx test.ts --bundle report-window/report-window.tsx --bundle background.ts --bundle --outdir=./lib

BIN
icons/logo-black-square.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="2048"
height="2048"
viewBox="0 0 541.86667 541.86667"
version="1.1"
id="svg2399"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
sodipodi:docname="logo-black-square.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2401"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px"
lock-margins="true"
inkscape:zoom="0.083628825"
inkscape:cx="-131.53359"
inkscape:cy="2845.9087"
inkscape:window-width="1920"
inkscape:window-height="1024"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g5214-0-20-3-1-92" />
<defs
id="defs2396" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(195.39804,196.97992)">
<g
id="g2559">
<rect
y="-196.9799"
x="-195.39803"
height="541.86664"
width="541.86664"
id="rect5174-5-2-1-8-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:89.9968;stroke-opacity:1"
inkscape:export-xdpi="562.5"
inkscape:export-ydpi="562.5" />
<g
id="g5216-6-9-9-2-87"
transform="matrix(25.209725,0,0,25.209725,-5013.7768,-42754.638)"
style="fill:#ffffff;fill-opacity:1">
<g
id="g5214-0-20-3-1-92"
transform="translate(-146.29537,198.647)"
style="fill:#ffffff;fill-opacity:1">
<g
id="g17009"
transform="matrix(1.0494588,0,0,1.0494588,-16.219745,-80.475607)">
<text
xml:space="preserve"
style="font-size:13.4678px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:Poppins;word-spacing:0px;stroke-width:0.0935269"
x="338.93002"
y="1510.9918"
id="text3426"><tspan
sodipodi:role="line"
id="tspan3424"
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:13.4678px;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';stroke-width:0.0935269"
x="338.93002"
y="1510.9918">Pr</tspan></text>
<text
xml:space="preserve"
style="font-size:13.4678px;line-height:1.25;font-family:Poppins;-inkscape-font-specification:Poppins;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke-width:0.0935269"
x="352.05331"
y="1510.884"
id="text3426-3"><tspan
sodipodi:role="line"
id="tspan3424-6"
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:13.4678px;font-family:Poppins;-inkscape-font-specification:'Poppins Heavy Italic';stroke-width:0.0935269"
x="352.05331"
y="1510.884">.</tspan></text>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -1,33 +1,35 @@
{
"manifest_version": 2,
"name": "Problematyczne requesty",
"version": "1.0",
"manifest_version": 2,
"name": "Problematyczne requesty",
"version": "1.0",
"description": "Adds a red border to all webpages matching mozilla.org.",
"description": "",
"sidebar_action": {
"default_title": "ICD Skaner",
"default_panel": "sidebar/sidebar.html",
"default_icon": "sidebar_icon.png"
},
"background": {
"scripts": ["lib/background.js"]
},
"icons": {
"48": "icons/border-48.png"
},
"permissions": [
"proxy",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking",
"cookies",
"privacy"
],
"browser_specific_settings": {
"gecko": {
"id": "problematic-requests@internet-czas-dzialac.pl"
"sidebar_action": {
"default_title": "Problematic requests",
"default_panel": "sidebar/sidebar.html",
"default_icon": "icons/logo-black-square.svg",
"browser_style": true,
"open_at_install": true
},
"background": {
"scripts": ["lib/background.js"]
},
"icons": {
"48": "icons/border-48.png"
},
"permissions": [
"proxy",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking",
"cookies",
"privacy"
],
"browser_specific_settings": {
"gecko": {
"id": "problematic-requests@internet-czas-dzialac.pl"
}
}
}
}

View File

@ -56,7 +56,7 @@ export default class Memory extends EventEmitter {
}
return true;
} catch (e) {
debugger;
// debugger;
}
}

30
options.scss Normal file
View File

@ -0,0 +1,30 @@
@import './sidebar/colors.scss';
.options-container {
padding-top: 0.5rem;
span {
color: $mid-grey;
font-size: 0.875rem;
font-weight: 600;
}
fieldset {
padding: 0.5rem 0 1rem;
border: none;
display: flex;
flex-flow: column;
.label-checkbox {
cursor: pointer;
margin-left: 0.5rem;
}
.input-container {
padding-bottom: 0.25rem;
}
#minValueLength {
width: 3rem;
}
}
}

View File

@ -1,50 +1,115 @@
import React from "react";
import React from 'react';
import './options.scss';
export default function Options({
minValueLength,
setMinValueLength,
cookiesOnly,
setCookiesOnly,
cookiesOrOriginOnly,
setCookiesOrOriginOnly,
minValueLength,
setMinValueLength,
cookiesOnly,
setCookiesOnly,
cookiesOrOriginOnly,
setCookiesOrOriginOnly,
warningDataDialogAck,
setWarningDataDialogAck,
logoVisibility,
setLogoVisibility,
}: {
minValueLength: number;
setMinValueLength: (n: number) => void;
cookiesOnly: boolean;
setCookiesOnly: (b: boolean) => void;
cookiesOrOriginOnly: boolean;
setCookiesOrOriginOnly: (b: boolean) => void;
minValueLength: number;
setMinValueLength: (n: number) => void;
cookiesOnly: boolean;
setCookiesOnly: (b: boolean) => void;
cookiesOrOriginOnly: boolean;
setCookiesOrOriginOnly: (b: boolean) => void;
warningDataDialogAck: boolean;
setWarningDataDialogAck: (b: boolean) => void;
logoVisibility: boolean;
setLogoVisibility: (b: boolean) => void;
}) {
return (
<fieldset>
<h3>Zaawansowane ustawienia</h3>
<label htmlFor="minValueLength">
Pokazuj tylko wartości o długości co najmniej{" "}
</label>
<input
type="number"
id="minValueLength"
value={minValueLength}
onChange={(e) => setMinValueLength(parseInt(e.target.value))}
/>
<br />
<input
type="checkbox"
id="cookiesOnly"
checked={cookiesOnly}
onChange={(e) => setCookiesOnly(e.target.checked)}
/>
<label htmlFor="cookiesOnly">Pokazuj tylko dane z cookiesów</label>
<br />
<input
type="checkbox"
id="cookiesOrOriginOnly"
checked={cookiesOrOriginOnly}
onChange={(e) => setCookiesOrOriginOnly(e.target.checked)}
/>
<label htmlFor="cookiesOrOriginOnly">
Pokazuj tylko dane z cookiesów lub z częścią historii przeglądania
</label>
</fieldset>
);
return (
<div className="options-container">
<span>Interfejs</span>
<fieldset>
<div className="input-container">
<input
type="checkbox"
id="logoVisibility"
checked={logoVisibility}
onChange={(e) => {
setLogoVisibility(e.target.checked);
localStorage.setItem(
'logoVisibility',
e.target.checked as unknown as string
);
}}
/>
<label className="label-checkbox" htmlFor="logoVisibility">
Wyświetlaj logo <i>Internet. Czas działać!</i>
</label>
</div>
<div className="input-container">
<input
type="checkbox"
id="warningDataDialogAck"
checked={warningDataDialogAck}
onChange={(e) => {
setWarningDataDialogAck(e.target.checked);
localStorage.setItem(
'warningDataDialogAck',
e.target.checked as unknown as string
);
}}
/>
<label
className="label-checkbox"
htmlFor="warningDataDialogAck"
>
Wyświetlaj komunikat o pozyskiwanych danych
</label>
</div>
</fieldset>
<span>Ustawienia zaawansowane</span>
<fieldset>
<div className="input-container">
<label htmlFor="minValueLength">
Pokazuj tylko wartości o długości co najmniej{' '}
</label>
<input
type="number"
id="minValueLength"
value={minValueLength}
onChange={(e) =>
setMinValueLength(parseInt(e.target.value))
}
/>
</div>
<div className="input-container">
<input
type="checkbox"
id="cookiesOnly"
checked={cookiesOnly}
onChange={(e) => setCookiesOnly(e.target.checked)}
/>
<label className="label-checkbox" htmlFor="cookiesOnly">
Pokazuj tylko dane z cookiesów
</label>
</div>
<div className="input-container">
<input
type="checkbox"
id="cookiesOrOriginOnly"
checked={cookiesOrOriginOnly}
onChange={(e) =>
setCookiesOrOriginOnly(e.target.checked)
}
/>
<label
className="label-checkbox"
htmlFor="cookiesOrOriginOnly"
>
Pokazuj tylko dane z cookiesów lub z częścią historii
przeglądania
</label>
</div>
</fieldset>
</div>
);
}

2324
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -2,15 +2,16 @@
"name": "problematic-requests",
"version": "1.0.0",
"description": "",
"main": "email-template-harsh.js",
"main": "esbuild.config.js",
"type": "module",
"scripts": {
"build": "npx esbuild sidebar/sidebar.tsx test.ts --bundle report-window/report-window.tsx --bundle background.ts --bundle --outdir=./lib",
"build": "node esbuild.config.js",
"watch": "npm run build -- --watch",
"typecheck": "tsc --noEmit"
},
"repository": {
"type": "git",
"url": "https://git.kuba-orlik.name/kuba/problematic-requests.git"
"url": "https://git.internet-czas-dzialac.pl/icd/problematic-requests.git"
},
"author": "",
"license": "ISC",
@ -26,6 +27,8 @@
"devDependencies": {
"@types/events": "^3.0.0",
"@types/react-dom": "^17.0.9",
"esbuild-plugin-sass": "^1.0.1",
"esbuild-plugin-svgr": "^1.0.0",
"web-ext-types": "^3.2.1"
}
}

View File

@ -1,41 +1,42 @@
import React from "react";
import { RequestCluster } from "../request-cluster";
import { Classifications, Sources } from "../stolen-data-entry";
import React from 'react';
import { RequestCluster } from '../request-cluster';
import { Classifications, Sources } from '../stolen-data-entry';
const emailClassifications: Record<keyof typeof Classifications, string> = {
id: "mój identyfikator internetowy",
history: "część mojej historii przeglądania",
location: "informacje na temat mojej lokalizacji geograficznej",
id: 'mój identyfikator internetowy',
history: 'część mojej historii przeglądania',
location: 'informacje na temat mojej lokalizacji geograficznej',
};
const emailSources: Record<Sources, string> = {
header: "w nagłówku HTTP",
cookie: "z pliku Cookie",
pathname: "jako części adresu URL",
queryparams: "jako część adresu URL (query-params)",
request_body: "w body zapytania POST",
header: 'w nagłówku HTTP',
cookie: 'z pliku Cookie',
pathname: 'jako części adresu URL',
queryparams: 'jako część adresu URL (query-params)',
request_body: 'w body zapytania POST',
};
export default function DomainSummary({
cluster,
cluster,
}: {
cluster: RequestCluster;
cluster: RequestCluster;
}) {
return (
<li>
Właścicielowi domeny <strong>{cluster.id}</strong> zostały ujawnione:{" "}
<ul>
<li>Mój adres IP</li>
{cluster.representativeStolenData
.filter((entry) => entry.isMarked)
.map((entry) => (
<li key={entry.id}>
{emailClassifications[entry.classification]}{" "}
{emailSources[entry.source]} (nazwa: <code>{entry.name}</code>,{" "}
wartość: <code>{entry.getValuePreview()}</code>)
</li>
))}
</ul>
</li>
);
return (
<li>
Właścicielowi domeny <strong>{cluster.id}</strong> zostały
ujawnione:{' '}
<ul>
{cluster.representativeStolenData
.filter((entry) => entry.isMarked)
.map((entry) => (
<li key={entry.id}>
{emailClassifications[entry.classification]}{' '}
{emailSources[entry.source]} (nazwa:{' '}
<code>{entry.name}</code>, wartość:{' '}
<code>{entry.getValuePreview()}</code>)
</li>
))}
</ul>
</li>
);
}

View File

@ -1,215 +1,232 @@
import React from "react";
import { useState } from "react";
import { RequestCluster } from "../request-cluster";
import { StolenDataEntry } from "../stolen-data-entry";
import { getDate, toBase64 } from "../util";
import DomainSummary from "./domain-summary";
import React from 'react';
import { useState } from 'react';
import { RequestCluster } from '../request-cluster';
import { StolenDataEntry } from '../stolen-data-entry';
import { getDate, toBase64 } from '../util';
import DomainSummary from './domain-summary';
type PopupState = "not_clicked" | "clicked_but_no_reject_all";
type PopupState = 'not_clicked' | 'clicked_but_no_reject_all';
export default function EmailTemplate1({
entries,
clusters,
entries,
clusters,
}: {
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
}): JSX.Element {
const [popupState, setPopupState] = useState<PopupState>("not_clicked");
const [acceptAllName, setAcceptAllName] = useState<string>(
"Zaakceptuj wszystkie"
);
const [popupScreenshotBase64, setPopupScreenshotBase64] =
useState<string>(null);
const [popupState, setPopupState] = useState<PopupState>('not_clicked');
const [acceptAllName, setAcceptAllName] = useState<string>(
'Zaakceptuj wszystkie'
);
const [popupScreenshotBase64, setPopupScreenshotBase64] =
useState<string>(null);
return (
<div>
<label htmlFor="popupState">Status okienka o rodo:</label>
<select
id="popupState"
value={popupState}
onChange={(e) => setPopupState(e.target.value as PopupState)}
>
<option value="not_clicked">Nic nie kliknięte</option>
<option value="clicked_but_no_reject_all">
Kliknięte "akceptuj wszystkie", ale nie było opcji "Odrzuć wszystkie"
</option>
</select>
{popupState === "clicked_but_no_reject_all" ? (
<>
<div>
<label htmlFor="acceptAllName">
Tekst na przycisku do zatwierdzania wszystkich zgód:
</label>
<input
{...{
type: "text",
value: acceptAllName,
onChange: (e) => setAcceptAllName(e.target.value),
}}
/>
</div>
<div>
<label htmlFor="popup-screenshot">
Zrzut ekranu z tego, jak wyglądał popup przed kliknięciem
{acceptAllName}:
</label>
<input
{...{
type: "file",
id: "popup-screenshot",
onChange: async (e) => {
setPopupScreenshotBase64(await toBase64(e.target.files[0]));
},
}}
/>
</div>
</>
) : null}
<p>
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{" "}
{entries[0].request.originalURL}. Strona ta wysłała moje dane osobowe do
podmiotów trzecich - bez mojej zgody.{" "}
</p>
<ul>
{Object.values(clusters)
.filter((cluster) => cluster.hasMarks())
.map((cluster) => (
<DomainSummary cluster={cluster} />
))}
</ul>
<p>
{" "}
Dane te zostały wysłane przez Państwa stronę - a mówiąc dokładniej,
przez zamieszczone przez Państwa na tej stronie skrypty.
</p>
{popupState === "not_clicked" ? (
<p>
Nastąpiło to, zanim zdążyłem w ogóle przeczytać treść wyskakującego
okienka ze zgodami i zanim miałem szansę wyrazić sprzeciw takiemu
przetwarzaniu danych osobowych.
</p>
) : null}
{popupState === "clicked_but_no_reject_all" ? (
<p>
O ile po wejściu na stronę wcisnąłem w wyskakującym okienku przycisk
{acceptAllName}, o tyle nie stanowi to według mnie ważnej w świetle
RODO zgody, gdyż brakowało w tym okienku równie łatwo osiągalnego
przycisku, którego kliknięcie skutkowałoby zasygnalizowaniem braku
mojej zgody na takie przetwarzanie moich danych. Mówiąc wprost -
wyrażenie zgody było łatwiejsze niż jej niewyrażenie. Niewyrażenie
zgody wiąże się z negatywną konsekwencją konieczności przechodzenia
przez dodatkowe kroki w wyskakującym okienku. Zatem tak otrzymana
przez Państwo moja zgoda nie jest poprawną podstawą prawną do
przetwarzania moich danych osobowych, gdyż nie spełnia warunku
dobrowolności wspomnianego w Art. 4. pkt 11{" "}
<em>
rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia
27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z
przetwarzaniem danych osobowych i w sprawie swobodnego przepływu
takich danych oraz uchylenia dyrektywy 95/46/WE
</em>
.{<img {...{ src: popupScreenshotBase64 }} />}
</p>
) : null}
<p>
Udokumentowałem to na zrzutach ekranu z mojej przeglądarki internetowej,
które to zrzuty przesyłam w załączeniu.
</p>
<p>
Wiem, że nie wszystkie rodzaje przetwarzania danych wymagają zgody
użytkownika. W kontekście stron internetowych z wymienionych w Art. 6.
pkt 1. RODO mogą mieć zastosowanie albo zgoda (Art. 6. pkt 1. lit.
a)), albo niezbędność tego przetwarzania do wykonania umowy (Art. 6. pkt
1. lit. b)), albo uzasadniony interes (Art. 6. pkt 1. lit. f)). Wiem
też, że każda z tych podstaw prawnych ma moc dopiero po spełnieniu
określonych warunków.
</p>
<p>
Nie widzę ważnej podstawy prawnej legalizującej procesy przetwarzania
moich danych osobowych, jakie wymieniłem powyżej (na pewno nie jest to
przetwarzanie konieczne do wyświetlenia strony z technicznego punktu
widzenia). Jeżeli takie przesłanki legalizujące jednak występują, proszę
o ich wskazanie,
<strong>
{" "}
dla każdego z celów i podmiotów z <em>osobna</em>
</strong>
.
</p>
<p>
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany element
procesu przetwarzania danych osobowych przez Państwa stronę jest Art 6.
pkt 1 lit. a) RODO (zgoda), na mocy Art. 7 pkt 1 RODO proszę o
wykazanie, że udzieliłem Państwu zgodę na takie przetwarzanie moich
danych osobowych zanim to przetwarzanie nastąpiło, oraz że ta zgoda jest
ważna w świetle RODO (odnosząc się w szczególności do art. 7 ust. 3
RODO). Z góry zaznaczam, że ustawienia przeglądarki nie stanowią
ważnej w świetle RODO zgody.
</p>
<p>
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany element
procesu przetwarzania danych osobowych przez Państwa stronę jest Art 6.
pkt 1 lit. b) RODO (niezbędność takiego przetwarzania do wykonania
umowy), proszę o wskazanie, w jaki sposób ta konieczność zachodzi, oraz
co sprawia, że Państwa zdaniem nie można wykonać umowy związanej z
wyświetleniem Państwa strony bez przekazywania identyfikatora
internetowego z plików Cookies lub historii przeglądania w nagłówku
Referer do wskazanych podmiotów trzecich.
</p>
<p>
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany element
procesu przetwarzania danych osobowych przez Państwa stronę jest Art 6.
pkt 1 lit. f) RODO (uzasadniony interes), proszę o wskazanie, jaki to
jest <strong>konkretny interes</strong> (prosze o bardziej dokładny opis
niż np. tylko "marketing"), oraz o wynik testu równowagi pomiędzy
Państwa interesem a moimi podstawowymi wolnościami i prawami - ze
wskazaniem tego, co sprawia, że w Państwa ocenie Państwa uzasadniony
interes przeważa moje prawa i interesy w kontekście wspomnianych powyżej
procesów przetwarzania danych. Proszę też pamiętać, że aby w ramach
danego celu przetwarzania powołać się na prawnie uzasadniony interes,
powinni mi Państo umożliwić wyrażenie sprzeciwu wobec przetwarzania
moich danych w tym celu <em>przed</em> rozpoczęciem przetwarzania - zob.{" "}
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
Wytyczne 8/2020 Europejskiej Rady Ochrony Danych dotyczące
targetowania użytkowników mediów społecznościowych
</a>
</p>
<p>
Niniejszym zwracam się także z żądaniem ujawnienia tożsamości podmiotów,
które właścicielami wyżej wymienionych domen, abym mógł zapoznać się
z ich politykami prywatności i zwrócić się do tych podmiotów o usunięcie
z ich baz wysłanych przez Państwa stronę moich danych.
</p>
<p>
Proszę też o wysłanie kopii danych zebranych na mój temat i wysłanych do
wyżej wymienionych podmiotów.
</p>
<p>
W odpowiedzi proszę się nie powoływać na IAB Europe i ich rzekomą renomę
w tworzeniu rozwiązań zgodnych z RODO. IAB chroni interes reklamodawców,
a nie Użytkowników, i ich rozwiązania (np. TCF) {" "}
<a href="https://panoptykon.org/search/site/IAB">
notorycznie niezgodne z RODO i pozbawione szacunku dla Użytkowników
</a>
.
</p>
<p>
Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie
pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki
legalizującej dane przetwarzane przez wspomniane podmioty trzecie,
lub tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować
prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze
oficjalne wytyczne EROD dotyczące zgody w kontekście RODO:
https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf
). Aby na przykład zapobiec automatycznemu wysyłaniu historii
przeglądania do podmiotów trzecich przez Państwa stronę, można po prostu
ustawić odpowiednio treść nagłówka{" "}
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
Referrer-Policy{" "}
</a>
.
</p>
</div>
);
return (
<div>
<label htmlFor="popupState">Status okienka o rodo:</label>
<select
id="popupState"
value={popupState}
onChange={(e) => setPopupState(e.target.value as PopupState)}
>
<option value="not_clicked">Nic nie kliknięte</option>
<option value="clicked_but_no_reject_all">
Kliknięte "akceptuj wszystkie", ale nie było opcji "Odrzuć
wszystkie"
</option>
</select>
{popupState === 'clicked_but_no_reject_all' ? (
<>
<div>
<label htmlFor="acceptAllName">
Tekst na przycisku do zatwierdzania wszystkich zgód:
</label>
<input
{...{
type: 'text',
value: acceptAllName,
onChange: (e) =>
setAcceptAllName(e.target.value),
}}
/>
</div>
<div>
<label htmlFor="popup-screenshot">
Zrzut ekranu z tego, jak wyglądał popup przed
kliknięciem {acceptAllName}:
</label>
<input
{...{
type: 'file',
id: 'popup-screenshot',
onChange: async (e) => {
setPopupScreenshotBase64(
await toBase64(e.target.files[0])
);
},
}}
/>
</div>
</>
) : null}
<p>
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{' '}
{entries[0].request.originalURL}. Strona ta wysłała moje dane
osobowe do podmiotów trzecich - bez mojej zgody.{' '}
</p>
<ul>
{Object.values(clusters)
.filter((cluster) => cluster.hasMarks())
.map((cluster) => (
<DomainSummary cluster={cluster} />
))}
</ul>
<p>
{' '}
Dane te zostały wysłane przez Państwa stronę - a mówiąc
dokładniej, przez zamieszczone przez Państwa na tej stronie
skrypty.
</p>
{popupState === 'not_clicked' ? (
<p>
Nastąpiło to, zanim zdążyłem w ogóle przeczytać treść
wyskakującego okienka ze zgodami i zanim miałem szansę
wyrazić sprzeciw takiemu przetwarzaniu danych osobowych.
</p>
) : null}
{popupState === 'clicked_but_no_reject_all' ? (
<p>
O ile po wejściu na stronę wcisnąłem w wyskakującym okienku
przycisk {acceptAllName}, o tyle nie stanowi to według
mnie ważnej w świetle RODO zgody, gdyż brakowało w tym
okienku równie łatwo osiągalnego przycisku, którego
kliknięcie skutkowałoby zasygnalizowaniem braku mojej zgody
na takie przetwarzanie moich danych. Mówiąc wprost -
wyrażenie zgody było łatwiejsze niż jej niewyrażenie.
Niewyrażenie zgody wiąże się z negatywną konsekwencją
konieczności przechodzenia przez dodatkowe kroki w
wyskakującym okienku. Zatem tak otrzymana przez Państwo moja
zgoda nie jest poprawną podstawą prawną do przetwarzania
moich danych osobowych, gdyż nie spełnia warunku
dobrowolności wspomnianego w Art. 4. pkt 11{' '}
<em>
rozporządzenia Parlamentu Europejskiego i Rady (UE)
2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony
osób fizycznych w związku z przetwarzaniem danych
osobowych i w sprawie swobodnego przepływu takich danych
oraz uchylenia dyrektywy 95/46/WE
</em>
.{<img {...{ src: popupScreenshotBase64 }} />}
</p>
) : null}
<p>
Udokumentowałem to na zrzutach ekranu z mojej przeglądarki
internetowej, które to zrzuty przesyłam w załączeniu.
</p>
<p>
Wiem, że nie wszystkie rodzaje przetwarzania danych wymagają
zgody użytkownika. W kontekście stron internetowych z
wymienionych w Art. 6. pkt 1. RODO mogą mieć zastosowanie albo
zgoda (Art. 6. pkt 1. lit. a)), albo niezbędność tego
przetwarzania do wykonania umowy (Art. 6. pkt 1. lit. b)), albo
uzasadniony interes (Art. 6. pkt 1. lit. f)). Wiem też, że każda
z tych podstaw prawnych ma moc dopiero po spełnieniu określonych
warunków.
</p>
<p>
Nie widzę ważnej podstawy prawnej legalizującej procesy
przetwarzania moich danych osobowych, jakie wymieniłem powyżej
(na pewno nie jest to przetwarzanie konieczne do wyświetlenia
strony z technicznego punktu widzenia). Jeżeli takie przesłanki
legalizujące jednak występują, proszę o ich wskazanie,
<strong>
{' '}
dla każdego z celów i podmiotów z <em>osobna</em>
</strong>
.
</p>
<p>
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany
element procesu przetwarzania danych osobowych przez Państwa
stronę jest Art 6. pkt 1 lit. a) RODO (zgoda), na mocy Art. 7
pkt 1 RODO proszę o wykazanie, że udzieliłem Państwu zgodę na
takie przetwarzanie moich danych osobowych zanim to
przetwarzanie nastąpiło, oraz że ta zgoda jest ważna w świetle
RODO (odnosząc się w szczególności do art. 7 ust. 3 RODO). Z
góry zaznaczam, że ustawienia przeglądarki nie stanowią ważnej
w świetle RODO zgody.
</p>
<p>
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany
element procesu przetwarzania danych osobowych przez Państwa
stronę jest Art 6. pkt 1 lit. b) RODO (niezbędność takiego
przetwarzania do wykonania umowy), proszę o wskazanie, w jaki
sposób ta konieczność zachodzi, oraz co sprawia, że Państwa
zdaniem nie można wykonać umowy związanej z wyświetleniem
Państwa strony bez przekazywania identyfikatora internetowego z
plików Cookies lub historii przeglądania w nagłówku Referer do
wskazanych podmiotów trzecich.
</p>
<p>
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany
element procesu przetwarzania danych osobowych przez Państwa
stronę jest Art 6. pkt 1 lit. f) RODO (uzasadniony interes),
proszę o wskazanie, jaki to jest{' '}
<strong>konkretny interes</strong> (prosze o bardziej dokładny
opis niż np. tylko "marketing"), oraz o wynik testu równowagi
pomiędzy Państwa interesem a moimi podstawowymi wolnościami i
prawami - ze wskazaniem tego, co sprawia, że w Państwa ocenie
Państwa uzasadniony interes przeważa moje prawa i interesy w
kontekście wspomnianych powyżej procesów przetwarzania danych.
Proszę też pamiętać, że aby w ramach danego celu przetwarzania
powołać się na prawnie uzasadniony interes, powinni mi Państo
umożliwić wyrażenie sprzeciwu wobec przetwarzania moich danych w
tym celu <em>przed</em> rozpoczęciem przetwarzania - zob.{' '}
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
Wytyczne 8/2020 Europejskiej Rady Ochrony Danych dotyczące
targetowania użytkowników mediów społecznościowych
</a>
</p>
<p>
Niniejszym zwracam się także z żądaniem ujawnienia tożsamości
podmiotów, które właścicielami wyżej wymienionych domen, abym
mógł zapoznać się z ich politykami prywatności i zwrócić się do
tych podmiotów o usunięcie z ich baz wysłanych przez Państwa
stronę moich danych.
</p>
<p>
Proszę też o wysłanie kopii danych zebranych na mój temat i
wysłanych do wyżej wymienionych podmiotów.
</p>
<p>
W odpowiedzi proszę się nie powoływać na IAB Europe i ich
rzekomą renomę w tworzeniu rozwiązań zgodnych z RODO. IAB chroni
interes reklamodawców, a nie Użytkowników, i ich rozwiązania
(np. TCF) {' '}
<a href="https://panoptykon.org/search/site/IAB">
notorycznie niezgodne z RODO i pozbawione szacunku dla
Użytkowników
</a>
.
</p>
<p>
Apeluję także o wprowadzenie stosownych zmian na stronie tak,
aby nie pozostawiać cienia wątpliwości odnośnie tego, na mocy
jakiej przesłanki legalizującej dane przetwarzane przez
wspomniane podmioty trzecie, lub tak, aby te dane po prostu nie
były wysyłane. Pomoże to zachować prywatność innym użytkownikom
Państwa strony. Polecam Państwa uwadze oficjalne wytyczne EROD
dotyczące zgody w kontekście RODO:
https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf
). Aby na przykład zapobiec automatycznemu wysyłaniu historii
przeglądania do podmiotów trzecich przez Państwa stronę, można
po prostu ustawić odpowiednio treść nagłówka{' '}
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
Referrer-Policy{' '}
</a>
.
</p>
</div>
);
}

View File

@ -1,163 +1,170 @@
import React from "react";
import { Dispatch, SetStateAction } from "react";
import { toBase64 } from "../util";
import { EmailTemplate2Config } from "./email-template-2";
import React from 'react';
import { Dispatch, SetStateAction } from 'react';
import { toBase64 } from '../util';
import { EmailTemplate2Config } from './email-template-2';
export default function EmailTemplate2Controls({
config,
setConfig,
config,
setConfig,
}: {
config: EmailTemplate2Config;
setConfig: Dispatch<SetStateAction<EmailTemplate2Config>>;
config: EmailTemplate2Config;
setConfig: Dispatch<SetStateAction<EmailTemplate2Config>>;
}): JSX.Element {
return (
<div>
<div>
<label htmlFor="poup_type">Typ okienka o RODO:</label>
<select
id="poup_type"
value={config.popup_type}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_type: e.target.value as EmailTemplate2Config["popup_type"],
}))
}
>
<option value="none">Brak jakiejkolwiek informacji</option>
<option value="passive_cookie_banner">
Pasywne powiadomienie o cookiesach
</option>
<option value="consent">Okienko z pytaniem o zgodę</option>
</select>
</div>
{config.popup_type !== "none" ? (
return (
<div>
<label htmlFor="popup_screenshot">Zrzut ekranu okienka o RODO:</label>
<input
{...{
type: "file",
id: "popup_screenshot",
onChange: async (e) => {
const popup_screenshot_base64 = await toBase64(
e.target.files[0]
);
setConfig((v) => ({
...v,
popup_screenshot_base64,
}));
},
}}
/>
<div>
<label htmlFor="poup_type">Typ okienka o RODO: </label>
<select
id="poup_type"
value={config.popup_type}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_type: e.target
.value as EmailTemplate2Config['popup_type'],
}))
}
>
<option value="none">Brak jakiejkolwiek informacji</option>
<option value="passive_cookie_banner">
Pasywne powiadomienie o cookiesach
</option>
<option value="consent">Okienko z pytaniem o zgodę</option>
</select>
</div>
{config.popup_type !== 'none' ? (
<div>
<label htmlFor="popup_screenshot">
Zrzut ekranu okienka o RODO:
</label>
<input
{...{
type: 'file',
id: 'popup_screenshot',
onChange: async (e) => {
const popup_screenshot_base64 = await toBase64(
e.target.files[0]
);
setConfig((v) => ({
...v,
popup_screenshot_base64,
}));
},
}}
/>
</div>
) : (
''
)}
{config.popup_type === 'consent' ? (
<div>
<label htmlFor="acceptAllName">
Tekst na przycisku do zatwierdzania wszystkich zgód:
</label>
<input
{...{
type: 'text',
value: config.popup_accept_all_text,
onChange: (e) =>
setConfig((v) => ({
...v,
popup_accept_all_text: e.target.value,
})),
}}
/>
</div>
) : (
''
)}
<div>
<label htmlFor="popup_action">
Czy coś klikn*ł*m w informacjach o RODO?
</label>
<select
id="popup_action"
value={config.popup_type}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_action: e.target
.value as EmailTemplate2Config['popup_action'],
}))
}
>
<option value="ignored">Nic nie klin*ł*m</option>
<option value="accepted">
Kliknięte {config.popup_accept_all_text}
</option>
<option value="closed">
Zamkn*ł*m okienko (np. przyciskiem "X")
</option>
</select>
</div>
{config.popup_action === 'closed' ? (
<div>
<label htmlFor="popup_closed_how">
Jak okienko zostało zamknięte? Poprzez
</label>
<input
id="popup_closed_how"
type="text"
placeholder="kliknięcie przycisku „X”"
value={config.popup_closed_how}
style={{ width: '300px' }}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_closed_how: e.target.value,
}))
}
/>
</div>
) : (
''
)}
{config.popup_type !== 'none' ? (
<div>
<input
type="checkbox"
id="popup_mentions_passive_consent"
checked={config.popup_mentions_passive_consent}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_mentions_passive_consent:
e.target.checked,
}))
}
/>
<label htmlFor="popup_mentions_passive_consent">
okienko wspomina o pasywnej zgodzie (np. korzystając ze
strony wyrażasz zgodę)
</label>
</div>
) : (
''
)}
{config.popup_mentions_passive_consent ? (
<div>
<label htmlFor="popup_passive_consent_text">
Jak okienko próbuje wmówić Ci, że wyrażasz zgodę?
Przeklej z treści okienka:
</label>
<input
id="popup_passive_consent_text"
placeholder="Korzystając ze strony wyrażasz zgodę"
value={config.popup_passive_consent_text}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_passive_consent_text: e.target.value,
}))
}
/>
</div>
) : (
''
)}
</div>
) : (
""
)}
{config.popup_type === "consent" ? (
<div>
<label htmlFor="acceptAllName">
Tekst na przycisku do zatwierdzania wszystkich zgód:
</label>
<input
{...{
type: "text",
value: config.popup_accept_all_text,
onChange: (e) =>
setConfig((v) => ({
...v,
popup_accept_all_text: e.target.value,
})),
}}
/>
</div>
) : (
""
)}
<div>
<label htmlFor="popup_action">
Czy coś klikn*ł*m w informacjach o RODO?
</label>
<select
id="popup_action"
value={config.popup_type}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_action: e.target
.value as EmailTemplate2Config["popup_action"],
}))
}
>
<option value="ignored">Nic nie klin*ł*m</option>
<option value="accepted">
Kliknięte {config.popup_accept_all_text}
</option>
<option value="closed">
Zamkn*ł*m okienko (np. przyciskiem "X")
</option>
</select>
</div>
{config.popup_action === "closed" ? (
<div>
<label htmlFor="popup_closed_how">
Jak okienko zostało zamknięte? Poprzez
</label>
<input
id="popup_closed_how"
type="text"
placeholder="kliknięcie przycisku „X”"
value={config.popup_closed_how}
style={{ width: "300px" }}
onChange={(e) =>
setConfig((v) => ({ ...v, popup_closed_how: e.target.value }))
}
/>
</div>
) : (
""
)}
{config.popup_type !== "none" ? (
<div>
<input
type="checkbox"
id="popup_mentions_passive_consent"
checked={config.popup_mentions_passive_consent}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_mentions_passive_consent: e.target.checked,
}))
}
/>
<label htmlFor="popup_mentions_passive_consent">
okienko wspomina o pasywnej zgodzie (np. korzystając ze strony
wyrażasz zgodę)
</label>
</div>
) : (
""
)}
{config.popup_mentions_passive_consent ? (
<div>
<label htmlFor="popup_passive_consent_text">
Jak okienko próbuje wmówić Ci, że wyrażasz zgodę? Przeklej z treści
okienka:
</label>
<input
id="popup_passive_consent_text"
placeholder="Korzystając ze strony wyrażasz zgodę"
value={config.popup_passive_consent_text}
onChange={(e) =>
setConfig((v) => ({
...v,
popup_passive_consent_text: e.target.value,
}))
}
/>
</div>
) : (
""
)}
</div>
);
);
}

View File

@ -1,419 +1,488 @@
import React, { useState } from "react";
import { RequestCluster } from "../request-cluster";
import { StolenDataEntry } from "../stolen-data-entry";
import { getDate, unique } from "../util";
import DomainSummary from "./domain-summary";
import EmailTemplate2Controls from "./email-template-2-controls";
import React, { useState } from 'react';
import { RequestCluster } from '../request-cluster';
import { StolenDataEntry } from '../stolen-data-entry';
import { getDate, unique } from '../util';
import DomainSummary from './domain-summary';
import EmailTemplate2Controls from './email-template-2-controls';
export type EmailTemplate2Config = {
popup_type: "none" | "passive_cookie_banner" | "consent";
popup_action: "ignored" | "accepted" | "closed";
popup_closed_how: string;
popup_screenshot_base64: string | null;
popup_accept_all_text: string;
popup_mentions_passive_consent: boolean;
popup_passive_consent_text: string;
popup_type: 'none' | 'passive_cookie_banner' | 'consent';
popup_action: 'ignored' | 'accepted' | 'closed';
popup_closed_how: string;
popup_screenshot_base64: string | null;
popup_accept_all_text: string;
popup_mentions_passive_consent: boolean;
popup_passive_consent_text: string;
};
function ClusterRangeSummary({ cluster }: { cluster: RequestCluster }) {
const range = unique(
cluster.getMarkedEntries().map((entry) => entry.classification)
);
const has_cookie_ids = cluster
.getMarkedEntries()
.filter((entry) => entry.source === "cookie")
.some((entry) => entry.classification == "id");
return (
<>
{[
"Pańskiego adresu IP",
range.includes("id")
? "Pańskiego identyfikatora interenetowego" +
(has_cookie_ids ? " z cookie" : "")
: "",
range.includes("history")
? "części Pańskiej historii przeglądania"
: "",
range.includes("location") ? "informacji na temat Pana położenia" : "",
]
.filter((e) => e !== "")
.join(", ")}
</>
);
const range = unique(
cluster.getMarkedEntries().map((entry) => entry.classification)
);
const has_cookie_ids = cluster
.getMarkedEntries()
.filter((entry) => entry.source === 'cookie')
.some((entry) => entry.classification == 'id');
return (
<>
{[
range.includes('id')
? 'Pańskiego identyfikatora internetowego' +
(has_cookie_ids ? ' z cookie' : '')
: '',
range.includes('history')
? 'części Pańskiej historii przeglądania'
: '',
range.includes('location')
? 'informacji na temat Pana położenia'
: '',
]
.filter((e) => e !== '')
.join(', ')}
</>
);
}
function Placeholder({ children }: { children: string }) {
return (
<span
style={{
textDecoration: "underline",
fontSize: "0.8em",
position: "relative",
textUnderlineOffset: "4px",
bottom: "3px",
}}
>
<span dangerouslySetInnerHTML={{ __html: "&nbsp;".repeat(12) }}></span>
<span style={{ color: "gray" }}>({children})</span>
<span dangerouslySetInnerHTML={{ __html: "&nbsp;".repeat(12) }}></span>
</span>
);
return (
<span
style={{
textDecoration: 'underline',
fontSize: '0.8em',
position: 'relative',
textUnderlineOffset: '4px',
bottom: '3px',
}}
>
<span
dangerouslySetInnerHTML={{ __html: '&nbsp;'.repeat(12) }}
></span>
<span style={{ color: 'gray' }}>({children})</span>
<span
dangerouslySetInnerHTML={{ __html: '&nbsp;'.repeat(12) }}
></span>
</span>
);
}
function Base64Image({ base64 }: { base64: string }) {
return <img style={{ maxWidth: "100%" }} {...{ src: base64 }} />;
return <img style={{ maxWidth: '100%' }} {...{ src: base64 }} />;
}
export default function EmailTemplate2({
entries,
clusters,
entries,
clusters,
}: {
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
}): JSX.Element {
const [config, setConfig] = useState<EmailTemplate2Config>({
popup_type: "none",
popup_action: "ignored",
popup_screenshot_base64: null,
popup_accept_all_text: "Zaakceptuj wszystkie",
popup_mentions_passive_consent: false,
popup_passive_consent_text: "",
popup_closed_how: "kliknięcie przycisku „X”",
});
const [config, setConfig] = useState<EmailTemplate2Config>({
popup_type: 'none',
popup_action: 'ignored',
popup_screenshot_base64: null,
popup_accept_all_text: 'Zaakceptuj wszystkie',
popup_mentions_passive_consent: false,
popup_passive_consent_text: '',
popup_closed_how: 'kliknięcie przycisku „X”',
});
const visited_url = entries[0].request.originalURL;
const visited_url = entries[0].request.originalURL;
return (
<>
<EmailTemplate2Controls {...{ config, setConfig }} />
<p>
Dzień dobry, w dniu {getDate()} odwiedziłem stronę {visited_url}.
</p>
{config.popup_type === "none" ? (
<p>
Nie ukazał mi się na stronie żaden mechanizm pozyskujący zgodę na
przetwarzanie moich danych osobowych lub umożliwiający mi wyrażenie
sprzeciwu wobec przetwarzania przez stronę moich danych osobowych w
zakresie wyraczającym poza procesy konieczne do wyświetlenia strony
</p>
) : config.popup_type == "passive_cookie_banner" ? (
return (
<>
<p>Na stronie była widoczna informacja o plikach Cookie. </p>
<p>
<Base64Image {...{ base64: config.popup_screenshot_base64 }} />
</p>
<EmailTemplate2Controls {...{ config, setConfig }} />
<article
style={{
boxShadow: '0 20px 40px rgba(0,0,0,.2)',
padding: '4rem 3rem',
borderRadius: '0.25rem',
margin: '2rem 0',
color: 'hsl(240, 5.7%, 15.8%);',
}}
>
<p>
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{' '}
{visited_url}.
</p>
{config.popup_type === 'none' ? (
<p>
Nie ukazał mi się na stronie żaden mechanizm pozyskujący
zgodę na przetwarzanie moich danych osobowych lub
umożliwiający mi wyrażenie sprzeciwu wobec przetwarzania
przez stronę moich danych osobowych w zakresie
wykraczającym poza procesy konieczne do wyświetlenia
strony
</p>
) : config.popup_type == 'passive_cookie_banner' ? (
<>
<p>
Na stronie była widoczna informacja o plikach
Cookie.{' '}
</p>
<p>
<Base64Image
{...{ base64: config.popup_screenshot_base64 }}
/>
</p>
</>
) : (
<>
<p>
Ukazało mi się okienko z informacjami i pytaniami
dotyczącymi sposobów, w jaki strona przetwarza moje
dane osobowe.{' '}
</p>
<p>
<Base64Image
{...{ base64: config.popup_screenshot_base64 }}
/>
</p>
<p>
{config.popup_action === 'ignored'
? /* HTML */ `Nie kliknąłem żadnego przycisku w
tym okienku. W szczególności nie kliknąłem
przycisku ${config.popup_accept_all_text}.`
: config.popup_action === 'accepted'
? `Kliknąłem na widoczną w tym okienku opcję „${config.popup_accept_all_text}”.`
: ''}
</p>
</>
)}
<p>
W tym samym czasie rejestrowałem ruch sieciowy generowany
przez stronę za pomocą narzędzi w przeglądarce Firefox.
Okazało się, że Państwa strona wysłała była moje dane
osobowe do następujących podmiotów:
</p>
<ul>
{Object.values(clusters)
.filter((cluster) => cluster.hasMarks())
.map((cluster) => (
<DomainSummary cluster={cluster} key={cluster.id} />
))}
</ul>
{config.popup_action === 'ignored' ? (
<p>
Dane te zostały wysłane, zanim kliknąłem cokolwiek na
tej stronie.
</p>
) : config.popup_action === 'accepted' ? (
<p>
Dane te zostały wysłane po tym, jak kliknąłem przycisk
{config.popup_accept_all_text}
</p>
) : (
''
)}
<p>
W załączeniu przesyłam część zrzutów ekranu dokumentujących
fakt wysłania tych danych przez Państwa stronę.{' '}
</p>
<h3>Podstawa prawna</h3>
<p>
Ustawa Prawo Telekomunikacyjne w art. 173 reguluje warunki,
które musi spełnić administrator strony, aby jego strona
mogła zapisywać i czytać treść plików cookie. Nie reguluje
jednak tego, jakim podmiotom i w jakim zakresie dane mogą
być <em>ujawniane</em> przez stronę. Tym zajmuje się
Rozporządzenie 2016/679 Parlamentu Europejskiego i Rady (UE)
z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych
w związku z przetwarzaniem danych osobowych i w sprawie
swobodnego przepływu takich danych oraz uchylenia dyrektywy
95/46/WE (ogólne rozporządzenie o ochronie danych) RODO.
Zapis/odczyt plików cookie a ujawnianie ich treści podmiotom
trzecim to dwa różne procesy. Niniejsza wiadomość i pytania
w niej zawarte dotyczą właśnie <em>ujawniania</em> moich
danych osobowych (pochodzących m.in. z Cookies) podmiotom
trzecim.
</p>
<p>
W kontekście stron internetowych właściwie dopuszczalne
tylko trzy z sześciu wymienionych w Art. 6 pkt 1 RODO
podstaw prawnych dla przetwarzania danych osobowych:
</p>
<ol>
<li>
Zgoda &mdash; osoba, której dane dotyczą wyraziła
zgodę na przetwarzanie swoich danych osobowych w jednym
lub większej liczbie określonych celów (
<em>Art. 6 pkt 1 lit. a)</em>).
</li>
<li>
Niezbędność &mdash; przetwarzanie jest niezbędne do
wykonania umowy, której stroną jest osoba, której dane
dotyczą, lub do podjęcia działań na żądanie osoby,
której dane dotyczą, przed zawarciem umowy (
<em>Art. 6 pkt 1 lit. b)</em>);{' '}
</li>
<li>
Uzasadniony Interes &mdash; przetwarzanie jest
niezbędne do celów wynikających z prawnie uzasadnionych
interesów realizowanych przez administratora lub przez
stronę trzecią, z wyjątkiem sytuacji, w których
nadrzędny charakter wobec tych interesów mają interesy
lub podstawowe prawa i wolności osoby, której dane
dotyczą, wymagające ochrony danych osobowych, w
szczególności gdy osoba, której dane dotyczą, jest
dzieckiem (<em>Art. 6 pkt 1 lit. f)</em>
);
</li>
</ol>
<p>
W przypadku opisywanej przeze mnie mojej wizyty na Państwa
stronie nie ma zastosowania Zgoda, gdyż{' '}
{config.popup_action === 'ignored' ? (
<>
nie wyrażałem żadnej zgody na takie przetwarzanie
moich danych
{config.popup_type === 'consent' ? (
<>
&mdash; w szczególności nie kliknąłem
przycisku {config.popup_accept_all_text}
</>
) : (
''
)}
.
</>
) : config.popup_action === 'accepted' ? (
<>
o ile po wejściu na stronę wcisnąłem w wyskakującym
okienku przycisk {config.popup_accept_all_text}, o
tyle nie stanowi to według mnie ważnej w świetle
RODO zgody, gdyż brakowało w tym okienku równie
łatwo osiągalnego przycisku, którego kliknięcie
skutkowałoby zasygnalizowaniem braku mojej zgody na
takie przetwarzanie moich danych. Mówiąc wprost
&mdash; wyrażenie zgody było łatwiejsze niż jej
niewyrażenie. Niewyrażenie zgody wiąże się z
negatywną konsekwencją konieczności przechodzenia
przez dodatkowe kroki w wyskakującym okienku. Zatem
tak otrzymana przez Państwo moja zgoda nie jest
poprawną podstawą prawną do przetwarzania moich
danych osobowych, gdyż nie spełnia warunku
dobrowolności wspomnianego w motywie (42) RODO.
</>
) : config.popup_action === 'closed' ? (
<>
zamknąłem okienko pytające o zgodę poprzez{' '}
{config.popup_closed_how}. Nie może być to uznane za
zgodę, bo nie spełnia to warunku jednoznaczności
opisanego w motywie (32) Rozporządzenia 2016/679.{' '}
</>
) : (
''
)}{' '}
Za zgodę nie można też uznać posiadania włączonej obsługi
cookies w przeglądarce (gdyż aby zgoda była ważna, musi być
szczegółowa dla każdego celów z osobna), jakichkolwiek
innych ustawień przeglądarki, ani pasywnych działań z mojej
strony (np. kontynuowanie korzystania ze strony)
{config.popup_mentions_passive_consent ? (
<>
{' '}
&mdash; nieprawdą więc jest zawarty na Państwa
stronie komunikat
{config.popup_passive_consent_text.trim()} (por.
paragraf 97.{' '}
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
oficjalnych wytycznych EROD dotyczących zgody na
mocy rozporządzenia 2016/679
</a>
)
</>
) : (
''
)}
.
</p>
<p>
W mojej ocenie Niezbędność nie ma zastosowania co do
opisanych powyżej sposobów przetwarzania danych. Nie widzę,
co miałoby sprawiać, aby wysyłanie moich danych osobowych do
wspomnianych powyżej podmiotów trzecich było konieczne do
wyświetlenia Państwa strony na ekranie mojego komputera
(zob.{' '}
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
Wytyczne 8/2020 EROD dotyczące targetowania użytkowników
mediów społecznościowych
</a>
, par. 49);.{' '}
</p>
<p>
Pozostaje zatem Uzasadniony Interes. Aby Administrator
mógł używać uzasadnionego interesu jako podstawy prawnej
targetowania użytkowników Sieci, muszą zostać spełnione
m.in. następujące warunki:{' '}
</p>
<ol>
<li>
Administrator danych lub podmiot trzeci, któremu dane
ujawniane musi{' '}
<strong>
faktycznie realizować dany konkretny uzasadniony
interes
</strong>{' '}
(
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion
ID, C-40/17, ECLI:EU:C:2019:629
</a>
, pkt 95.)
</li>
<li>
Takie przetwarzanie danych jest{' '}
<strong>konieczne</strong> dla potrzeb wynikających z
danego uzasadnionego interesu (
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion
ID, C-40/17, ECLI:EU:C:2019:629
</a>
, pkt 95.)
</li>
<li>
Wybrany uzasadniony interes musi mieć pierwszeństwo nad
prawami i wolnościami osoby, której dotyczą przetwarzane
dane (
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion
ID, C-40/17, ECLI:EU:C:2019:629
</a>
, pkt 95.)
</li>
<li>
Osoby, których dane dotyczą, powinny mieć możliwość
wyrażenia sprzeciwu wobec przetwarzania ich danych do
celów związanych z targetowaniem{' '}
<strong>przed rozpoczęciem przetwarzania</strong> (zob.{' '}
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
Wytyczne 8/2020 EROD dotyczące targetowania
użytkowników mediów społecznościowych
</a>
, par. 54);
</li>
</ol>
{config.popup_action !== 'accepted' ? (
<p>
Moje dane zostały ujawnione podmiotom trzecim tuż po
włączeniu strony, zatem nie jest spełniony warunek 4.
Apeluję o wdrożenie zmian na stronie, które sprawią, że
dopiero po świadomym niewyrażeniu sprzeciwu przez
użytkownika aktywowane procesy przetwarzania danych
osobowych, których podstawą prawną jest uzasadniony
interes.
</p>
) : (
''
)}
<p>
Jeżeli istnieją jednak inne niż uzasadniony interes ważne
podstawy prawne do takiego przetwarzania moich danych
osobowych przez Państwa stronę, proszę o ich wskazanie,{' '}
<em>dla każdego z wymienionych podmiotów z osobna</em>.
(Przypominam, że Art. 173 ustawy Prawo Telekomunikacyjne nie
ma tutaj zastosowania, ponieważ nie pytam o zapis/odczyt
plików na moim komputerze, tylko o ujawnianie moich danych
osobowych podmiotom trzecim). W przeciwnym wypadku, aby
ustalić, czy moje dane były przez Państwa przetwarzane na
mocy uzasadnionego interesu zgodnie z prawem, proszę o
wypełnienie następującego szablonu (lub udzielenie tych
samych informacji w innej postaci, przy zachowaniu zakresu i
szczegółowości informacji:
</p>
<div style={{ border: '1px solid black', padding: '1rem' }}>
<p>
W dniu {getDate()} strona {visited_url}:
</p>
<ul>
{Object.values(clusters)
.filter((cluster) => cluster.hasMarks())
.map((cluster) => (
<li
key={cluster.id}
style={{ paddingBottom: '1rem' }}
>
ujawniła pańskie dane w zakresie{' '}
<em>
<ClusterRangeSummary {...{ cluster }} />
</em>{' '}
firmie{' '}
<Placeholder>nazwa firmy</Placeholder>,
która jest właścicielem domeny{' '}
<strong>{cluster.id}</strong> i swoją
politykę prywatności publikuje pod adresem{' '}
<Placeholder>
adres URL polityki prywatności tej firmy
</Placeholder>
. Podstawą prawną takiego przetwarzania
danych przez naszą stronę jest uzasadniony
interes:{' '}
<Placeholder>
na czym polega ten uzasadniony interes,
tzn. bieżące działania podejmowane przez
podmiot realizujący ten interes lub
korzyści dla podmiotu realizującego ten
interes oczekiwane w bardzo bliskiej
przyszłości
</Placeholder>{' '}
realizowany przez{' '}
<Placeholder>
kogo? jaki podmiot podejmuje wspomniane
działania lub jest beneficjentem
wspomnianych korzyści?
</Placeholder>
. Ujawnienie{' '}
<ClusterRangeSummary {...{ cluster }} />{' '}
temu podmiotowi przez naszą stronę było
konieczne dla potrzeb wynikających z tego
interesu, ponieważ
<Placeholder>
uzasadnienie konieczności
</Placeholder>
.<br />
</li>
))}
</ul>
</div>
<p>
Proszę w szczególności zwrócić uwagę na podanie adresów do
polityk prywatności tych firm, abym wiedział, jak
skontaktować się z nimi i wnioskować o usunięcie z ich baz
wysłanych przez Państwa stronę moich danych. )
</p>
<p>
W odpowiedzi proszę się nie powoływać na IAB Europe i ich
rzekomą renomę w tworzeniu rozwiązań zgodnych z RODO. IAB
chroni interes reklamodawców, a nie Użytkowników, i ich
rozwiązania (np. TCF) {' '}
<a href="https://panoptykon.org/search/site/IAB">
notorycznie niezgodne z RODO i pozbawione szacunku dla
Użytkowników
</a>
.
</p>
<p>
Apeluję także o wprowadzenie stosownych zmian na stronie
tak, aby nie pozostawiać cienia wątpliwości odnośnie tego,
na mocy jakiej przesłanki legalizującej dane przetwarzane
przez wspomniane podmioty trzecie, lub tak, aby te dane po
prostu nie były wysyłane. Pomoże to zachować prywatność
innym użytkownikom Państwa strony. Polecam Państwa uwadze
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
{' '}
oficjalne wytyczne EROD dotyczące zgody w kontekście
RODO
</a>
. Aby na przykład zapobiec automatycznemu wysyłaniu historii
przeglądania do podmiotów trzecich przez Państwa stronę,
można po prostu ustawić odpowiednio treść nagłówka{' '}
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
Referrer-Policy{' '}
</a>
.
</p>
</article>
</>
) : (
<>
<p>
Ukazało mi się okienko z informacjami i pytaniami dotyczącymi
sposobów, w jaki strona przetwarza moje dane osobowe.{" "}
</p>
<p>
<Base64Image {...{ base64: config.popup_screenshot_base64 }} />
</p>
<p>
{config.popup_action === "ignored"
? /* HTML */ `Nie kliknąłem żadnego przycisku w tym okienku. W
szczególności nie kliknąłem przycisku
${config.popup_accept_all_text}.`
: config.popup_action === "accepted"
? `Kliknąlem na widoczną w tym okienku opcję „${config.popup_accept_all_text}”.`
: ""}
</p>
</>
)}
<p>
W tym samym czasie rejestrowałem ruch sieciowy generowany przez
stronę za pomocą narzędzi w przeglądarce Firefox. Okazało się, że
Państwa strona wysłała była moje dane osobowe do następujących
podmiotów:
</p>
<ul>
{Object.values(clusters)
.filter((cluster) => cluster.hasMarks())
.map((cluster) => (
<DomainSummary cluster={cluster} key={cluster.id} />
))}
</ul>
{config.popup_action === "ignored" ? (
<p>
Dane te zostały wysłane, zanim kliknąłem cokolwiek na tej stronie.
</p>
) : config.popup_action === "accepted" ? (
<p>
Dane te zostały wysłane po tym, jak kliknąłem przycisk
{config.popup_accept_all_text}
</p>
) : (
""
)}
<p>
W załączeniu przesyłam część zrzutów ekranu dokumentujących fakt
wysłania tych danych przez Państwa stronę.{" "}
</p>
<h3>Podstawa prawna</h3>
<p>
Ustawa Prawo Telekomunikacyjne w art. 173 reguluje warunki, które musi
spełnić administrator strony, aby jego strona mogła zapisywać i czytać
treść plików cookie. Nie reguluje jednak tego, jakim podmiotom i w jakim
zakresie dane mogą być <em>ujawniane</em> przez stronę. Tym zajmuje się
Rozporządzenie 2016/679 Parlamentu Europejskiego i Rady (UE) z dnia 27
kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z
przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich
danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o
ochronie danych) RODO. Zapis/odczyt plików cookie a ujawnianie ich
treści podmiotom trzecim to dwa różne procesy. Niniejsza wiadomość i
pytania w niej zawarte dotyczą właśnie <em>ujawniania</em> moich danych
osobowych (pochodzących m.in. z Cookies) podmiotom trzecim.
</p>
<p>
W kontekście stron internetowych właściwie dopuszczalne tylko trzy z
sześciu wymienionych w Art. 6 pkt 1 RODO podstaw prawnych dla
przetwarzania danych osobowych:
</p>
<ol>
<li>
Zgoda &mdash; osoba, której dane dotyczą wyraziła zgodę na
przetwarzanie swoich danych osobowych w jednym lub większej liczbie
określonych celów (<em>Art. 6 pkt 1 lit. a)</em>).
</li>
<li>
Niezbędność &mdash; przetwarzanie jest niezbędne do wykonania umowy,
której stroną jest osoba, której dane dotyczą, lub do podjęcia działań
na żądanie osoby, której dane dotyczą, przed zawarciem umowy (
<em>Art. 6 pkt 1 lit. b)</em>);{" "}
</li>
<li>
Uzasadniony Interes &mdash; przetwarzanie jest niezbędne do celów
wynikających z prawnie uzasadnionych interesów realizowanych przez
administratora lub przez stronę trzecią, z wyjątkiem sytuacji, w
których nadrzędny charakter wobec tych interesów mają interesy lub
podstawowe prawa i wolności osoby, której dane dotyczą, wymagające
ochrony danych osobowych, w szczególności gdy osoba, której dane
dotyczą, jest dzieckiem (<em>Art. 6 pkt 1 lit. f)</em>
);
</li>
</ol>
<p>
W przypadku opisywanej przeze mnie mojej wizyty na Państwa stronie nie
ma zastosowania Zgoda, gdyż{" "}
{config.popup_action === "ignored" ? (
<>
nie wyrażałem żadnej zgody na takie przetwarzanie moich danych
{config.popup_type === "consent" ? (
<>
&mdash; w szczególności nie kliknąłem przycisku
{config.popup_accept_all_text}
</>
) : (
""
)}
.
</>
) : config.popup_action === "accepted" ? (
<>
o ile po wejściu na stronę wcisnąłem w wyskakującym okienku przycisk
{config.popup_accept_all_text}, o tyle nie stanowi to według mnie
ważnej w świetle RODO zgody, gdyż brakowało w tym okienku równie
łatwo osiągalnego przycisku, którego kliknięcie skutkowałoby
zasygnalizowaniem braku mojej zgody na takie przetwarzanie moich
danych. Mówiąc wprost &mdash; wyrażenie zgody było łatwiejsze niż
jej niewyrażenie. Niewyrażenie zgody wiąże się z negatywną
konsekwencją konieczności przechodzenia przez dodatkowe kroki w
wyskakującym okienku. Zatem tak otrzymana przez Państwo moja zgoda
nie jest poprawną podstawą prawną do przetwarzania moich danych
osobowych, gdyż nie spełnia warunku dobrowolności wspomnianego w
motywie (42) RODO.
</>
) : config.popup_action === "closed" ? (
<>
zamknąłem okienko pytające o zgodę poprzez {config.popup_closed_how}
. Nie może być to uznane za zgodę, bo nie spełnia to warunku
jednoznaczności opisanego w motywie (32) Rozporządzenia 2016/679.{" "}
</>
) : (
""
)}{" "}
Za zgodę nie można też uznać posiadania włączonej obsługi cookies w
przeglądarce (gdyż aby zgoda była ważna, musi być szczegółowa dla
każdego celów z osobna), jakichkolwiek innych ustawień przeglądarki, ani
pasywnych działań z mojej strony (np. kontynuowanie korzystania ze
strony)
{config.popup_mentions_passive_consent ? (
<>
{" "}
&mdash; nieprawdą więc jest zawarty na Państwa stronie komunikat
{config.popup_passive_consent_text.trim()} (por. paragraf 97.{" "}
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
oficjalnych wytycznych EROD dotyczących zgody na mocy
rozporządzenia 2016/679
</a>
)
</>
) : (
""
)}
.
</p>
<p>
W mojej ocenie Niezbędność nie ma zastosowania co do opisanych powyżej
sposobów przetwarzania danych. Nie widzę, co miałoby sprawiać, aby
wysyłanie moich danych osobowych do wspomnianych powyżej podmiotów
trzecich było konieczne do wyświetlenia Państwa strony na ekranie mojego
komputera (zob.{" "}
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
Wytyczne 8/2020 EROD dotyczące targetowania użytkowników mediów
społecznościowych
</a>
, par. 49);.{" "}
</p>
<p>
Pozostaje zatem Uzasadniony Interes. Aby Administrator mógł używać
uzasadnionego interesu jako podstawy prawnej targetowania użytkowników
Sieci, muszą zostać spełnione m.in. następujące warunki:{" "}
</p>
<ol>
<li>
Administrator danych lub podmiot trzeci, któremu dane ujawniane
musi{" "}
<strong>
faktycznie realizować dany konkretny uzasadniony interes
</strong>{" "}
(
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion ID, C-40/17,
ECLI:EU:C:2019:629
</a>
, pkt 95.)
</li>
<li>
Takie przetwarzanie danych jest <strong>konieczne</strong> dla potrzeb
wynikających z danego uzasadnionego interesu (
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion ID, C-40/17,
ECLI:EU:C:2019:629
</a>
, pkt 95.)
</li>
<li>
Wybrany uzasadniony interes musi mieć pierwszeństwo nad prawami i
wolnościami osoby, której dotyczą przetwarzane dane (
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion ID, C-40/17,
ECLI:EU:C:2019:629
</a>
, pkt 95.)
</li>
<li>
Osoby, których dane dotyczą, powinny mieć możliwość wyrażenia
sprzeciwu wobec przetwarzania ich danych do celów związanych z
targetowaniem <strong>przed rozpoczęciem przetwarzania</strong> (zob.{" "}
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
Wytyczne 8/2020 EROD dotyczące targetowania użytkowników mediów
społecznościowych
</a>
, par. 54);
</li>
</ol>
{config.popup_action !== "accepted" ? (
<p>
Moje dane zostały ujawnione podmiotom trzecim tuż po włączeniu strony,
zatem nie jest spełniony warunek 4. Apeluję o wdrożenie zmian na
stronie, które sprawią, że dopiero po świadomym niewyrażeniu sprzeciwu
przez użytkownika aktywowane procesy przetwarzania danych
osobowych, których podstawą prawną jest uzasadniony interes.
</p>
) : (
""
)}
<p>
Jeżeli istnieją jednak inne niż uzasadniony interes ważne podstawy
prawne do takiego przetwarzania moich danych osobowych przez Państwa
stronę, proszę o ich wskazanie,{" "}
<em>dla każdego z wymienionych podmiotów z osobna</em>. (Przypominam, że
Art. 173 ustawy Prawo Telekomunikacyjne nie ma tutaj zastosowania,
ponieważ nie pytam o zapis/odczyt plików na moim komputerze, tylko o
ujawnianie moich danych osobowych podmiotom trzecim). W przeciwnym
wypadku, aby ustalić, czy moje dane były przez Państwa przetwarzane na
mocy uzasadnionego interesu zgodnie z prawem, proszę o wypełnienie
następującego szablonu (lub udzielenie tych samych informacji w innej
postaci, przy zachowaniu zakresu i szczegółowości informacji:
</p>
<div style={{ border: "1px solid black", padding: "1rem" }}>
<p>
W dniu {getDate()} strona {visited_url}:
</p>
<ul>
{Object.values(clusters)
.filter((cluster) => cluster.hasMarks())
.map((cluster) => (
<li key={cluster.id} style={{ paddingBottom: "1rem" }}>
ujawniła pańskie dane w zakresie{" "}
<em>
<ClusterRangeSummary {...{ cluster }} />
</em>{" "}
firmie <Placeholder>nazwa firmy</Placeholder>, która jest
właścicielem domeny <strong>{cluster.id}</strong> i swoją
politykę prywatności publikuje pod adresem{" "}
<Placeholder>
adres URL polityki prywatności tej firmy
</Placeholder>
. Podstawą prawną takiego przetwarzania danych przez naszą
stronę jest uzasadniony interes:{" "}
<Placeholder>
na czym polega ten uzasadniony interes, tzn. bieżące działania
podejmowane przez podmiot realizujący ten interes lub korzyści
dla podmiotu realizującego ten interes oczekiwane w bardzo
bliskiej przyszłości
</Placeholder>{" "}
realizowany przez{" "}
<Placeholder>
kogo? jaki podmiot podejmuje wspomniane działania lub jest
beneficjentem wspomnianych korzyści?
</Placeholder>
. Ujawnienie <ClusterRangeSummary {...{ cluster }} /> temu
podmiotowi przez naszą stronę było konieczne dla potrzeb
wynikających z tego interesu, ponieważ
<Placeholder>uzasadnienie konieczności</Placeholder>.<br />
</li>
))}
</ul>
</div>
<p>
Proszę w szczególności zwrócić uwagę na podanie adresów do polityk
prywatności tych firm, abym wiedział, jak skontaktować się z nimi i
wnioskować o usunięcie z ich baz wysłanych przez Państwa stronę moich
danych. )
</p>
<p>
W odpowiedzi proszę się nie powoływać na IAB Europe i ich rzekomą renomę
w tworzeniu rozwiązań zgodnych z RODO. IAB chroni interes reklamodawców,
a nie Użytkowników, i ich rozwiązania (np. TCF) {" "}
<a href="https://panoptykon.org/search/site/IAB">
notorycznie niezgodne z RODO i pozbawione szacunku dla Użytkowników
</a>
.
</p>
<p>
Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie
pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki
legalizującej dane przetwarzane przez wspomniane podmioty trzecie,
lub tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować
prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
{" "}
oficjalne wytyczne EROD dotyczące zgody w kontekście RODO
</a>
. Aby na przykład zapobiec automatycznemu wysyłaniu historii
przeglądania do podmiotów trzecich przez Państwa stronę, można po prostu
ustawić odpowiednio treść nagłówka{" "}
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
Referrer-Policy{" "}
</a>
.
</p>
</>
);
);
}

View File

@ -1,33 +1,33 @@
import React, { useState } from "react";
import { RequestCluster } from "../request-cluster";
import { StolenDataEntry } from "../stolen-data-entry";
import EmailTemplate1 from "./email-template-1";
import EmailTemplate2 from "./email-template-2";
import React, { useState } from 'react';
import { RequestCluster } from '../request-cluster';
import { StolenDataEntry } from '../stolen-data-entry';
import EmailTemplate1 from './email-template-1';
import EmailTemplate2 from './email-template-2';
export default function EmailTemplate({
entries,
clusters,
version,
entries,
clusters,
version,
}: {
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
}) {
const [templateVersion, setTemplateVersion] = useState("2");
return (
<div>
<select
value={templateVersion}
onChange={(e) => setTemplateVersion(e.target.value)}
>
<option value="1">wersja 1</option>
<option value="2">wersja 2</option>
</select>
{templateVersion === "1" ? (
<EmailTemplate1 {...{ entries, clusters, version }} />
) : (
<EmailTemplate2 {...{ entries, clusters, version }} />
)}
</div>
);
const [templateVersion, setTemplateVersion] = useState('2');
return (
<div>
<select
value={templateVersion}
onChange={(e) => setTemplateVersion(e.target.value)}
>
<option value="1">wersja 1</option>
<option value="2">wersja 2</option>
</select>
{templateVersion === '1' ? (
<EmailTemplate1 {...{ entries, clusters, version }} />
) : (
<EmailTemplate2 {...{ entries, clusters, version }} />
)}
</div>
);
}

View File

@ -1,117 +1,124 @@
import React, { useEffect, useState } from "react";
import { HAREntry } from "../extended-request";
import { StolenDataEntry } from "../stolen-data-entry";
import { getshorthost, unique } from "../util";
import React, { useEffect, useState } from 'react';
import { HAREntry } from '../extended-request';
import { StolenDataEntry } from '../stolen-data-entry';
import { getshorthost, unique } from '../util';
function handleNewFile(
element: HTMLInputElement,
entries: StolenDataEntry[],
setFiltered: (Blob) => void
element: HTMLInputElement,
entries: StolenDataEntry[],
setFiltered: (Blob) => void
): void {
const reader = new FileReader();
reader.addEventListener("load", () => {
const content = JSON.parse(reader.result as string);
content.log.entries = content.log.entries.filter((har_entry: HAREntry) =>
entries.some((entry) => entry.matchesHAREntry(har_entry))
);
setFiltered(
new Blob([JSON.stringify(content)], { type: "application/json" })
);
});
reader.readAsText(element.files[0]);
const reader = new FileReader();
reader.addEventListener('load', () => {
const content = JSON.parse(reader.result as string);
content.log.entries = content.log.entries.filter(
(har_entry: HAREntry) =>
entries.some((entry) => entry.matchesHAREntry(har_entry))
);
setFiltered(
new Blob([JSON.stringify(content)], { type: 'application/json' })
);
});
reader.readAsText(element.files[0]);
}
function generateFakeHAR(entries: StolenDataEntry[]) {
const requests = unique(entries.map((entry) => entry.request))
.sort((request1, request2) => {
if (request1.shorthost < request2.shorthost) {
return -1;
} else if (request1.shorthost > request2.shorthost) {
return 1;
} else {
return request2.getBalancedPriority() - request1.getBalancedPriority();
}
})
.filter((_, index, array) => {
if (index == 0) return true;
if (array[index].shorthost == array[index - 1].shorthost) {
return false;
}
return true;
})
.sort(
(entry1, entry2) =>
entry2.getBalancedPriority() - entry1.getBalancedPriority()
);
const requests = unique(entries.map((entry) => entry.request))
.sort((request1, request2) => {
if (request1.shorthost < request2.shorthost) {
return -1;
} else if (request1.shorthost > request2.shorthost) {
return 1;
} else {
return (
request2.getBalancedPriority() -
request1.getBalancedPriority()
);
}
})
.filter((_, index, array) => {
if (index == 0) return true;
if (array[index].shorthost == array[index - 1].shorthost) {
return false;
}
return true;
})
.sort(
(entry1, entry2) =>
entry2.getBalancedPriority() - entry1.getBalancedPriority()
);
return {
log: {
version: "1.2",
creator: {
name: "Firefox",
version: "94.0",
},
browser: {
name: "Firefox",
version: "94.0",
},
pages: [
{
startedDateTime: "2021-11-08T20:27:23.195+01:00",
id: "page_1",
title: "HAR DUmp",
pageTimings: {
onContentLoad: 467,
onLoad: 4226,
},
return {
log: {
version: '1.2',
creator: {
name: 'Firefox',
version: '94.0',
},
browser: {
name: 'Firefox',
version: '94.0',
},
pages: [
{
startedDateTime: '2021-11-08T20:27:23.195+01:00',
id: 'page_1',
title: 'HAR DUmp',
pageTimings: {
onContentLoad: 467,
onLoad: 4226,
},
},
],
entries: requests.map((r) => r.toHAR()),
},
],
entries: requests.map((r) => r.toHAR()),
},
};
};
}
export default function HARConverter({
entries,
entries,
}: {
entries: StolenDataEntry[];
entries: StolenDataEntry[];
}) {
const [filtered, setFiltered] = useState<Blob | null>(null);
const [filename, setFilename] = useState("");
const [fakeHAR, setFakeHAR] = useState<ReturnType<typeof generateFakeHAR>>();
useEffect(() => {
setFakeHAR(generateFakeHAR(entries));
}, []);
const [filtered, setFiltered] = useState<Blob | null>(null);
const [filename, setFilename] = useState('');
const [fakeHAR, setFakeHAR] =
useState<ReturnType<typeof generateFakeHAR>>();
useEffect(() => {
setFakeHAR(generateFakeHAR(entries));
}, []);
return (
<div>
<input
type="file"
accept=".har"
onChange={(e) => {
setFilename(e.target.files[0].name);
handleNewFile(e.target, entries, setFiltered);
}}
/>
{(filtered && (
<a
href={URL.createObjectURL(filtered)}
download={filename.replace(".har", "-filtered.har")}
>
Pobierz wyfiltrowany HAR
</a>
)) ||
null}
<a
href={URL.createObjectURL(
new Blob([JSON.stringify(fakeHAR)], { type: "application/json" })
)}
download={`${getshorthost(
entries[0].request.originalURL
)}-${new Date().toJSON()}-trimmed.har`}
>
Pobierz "zfałszowany" HAR
</a>
</div>
);
return (
<div>
<input
type="file"
accept=".har"
onChange={(e) => {
setFilename(e.target.files[0].name);
handleNewFile(e.target, entries, setFiltered);
}}
/>
{(filtered && (
<a
href={URL.createObjectURL(filtered)}
download={filename.replace('.har', '-filtered.har')}
>
Pobierz wyfiltrowany HAR
</a>
)) ||
null}
<a
href={URL.createObjectURL(
new Blob([JSON.stringify(fakeHAR)], {
type: 'application/json',
})
)}
download={`${getshorthost(
entries[0].request.originalURL
)}-${new Date().toJSON()}-trimmed.har`}
>
Pobierz "zredukowany" HAR
</a>
</div>
);
}

View File

@ -1,16 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<head>
<meta charset="utf-8" />
<title>Wygeneruj maila co zgłoszenia</title>
</head>
<body>
<div id="app"></div>
<title>Treść maila do zgłoszenia</title>
</head>
<body>
<div
id="app"
style="max-width: 50rem; margin: 0 auto; padding: 1rem 0rem 2rem;"
></div>
<style>
tr:hover {
background-color: hsla(0, 0%, 0%, 0.1);
}
tr:hover {
background-color: hsla(0, 0%, 0%, 0.1);
}
</style>
<script src="/lib/report-window/report-window.js"></script>
</body>
</html>
</body>
</html>

View File

@ -1,123 +1,127 @@
import React, { useEffect, useState } from "react";
import ReactDOM from "react-dom";
import { getMemory } from "../memory";
import { Classifications, StolenDataEntry } from "../stolen-data-entry";
import { reduceConcat, useEmitter } from "../util";
import EmailTemplate from "./email-template";
import HARConverter from "./har-converter";
import React, { useEffect, useState } from 'react';
import ReactDOM from 'react-dom';
import { getMemory } from '../memory';
import { Classifications, StolenDataEntry } from '../stolen-data-entry';
import { reduceConcat, useEmitter } from '../util';
import EmailTemplate from './email-template';
import HARConverter from './har-converter';
function DataPreview({
entries,
refresh,
entries,
refresh,
}: {
entries: StolenDataEntry[];
refresh: () => void;
entries: StolenDataEntry[];
refresh: () => void;
}) {
// currently not used, maybe scraped entirely in the future
return (
<table>
<thead>
<tr>
<th>Adres docelowy</th>
<th>Źródło danych</th>
<th>Treść danych</th>
<th>Klasyfikacja</th>
</tr>
</thead>
<tbody>
{entries.map((entry) => (
<tr
key={entry.id}
style={{
backgroundColor:
entry.classification == "id" ? "yellow" : "white",
}}
>
<td>{entry.request.shorthost}</td>
<td style={{ overflowWrap: "anywhere" }}>
{entry.source}:{entry.name}
</td>
<td
style={{
width: "400px",
overflowWrap: "anywhere",
backgroundColor: entry.isRelatedToID() ? "#ffff0054" : "white",
}}
>
{entry.getValuePreview()}
{/* always gonna have
// currently not used, maybe scraped entirely in the future
return (
<table>
<thead>
<tr>
<th>Adres docelowy</th>
<th>Źródło danych</th>
<th>Treść danych</th>
<th>Klasyfikacja</th>
</tr>
</thead>
<tbody>
{entries.map((entry) => (
<tr
key={entry.id}
style={{
backgroundColor:
entry.classification == 'id'
? 'yellow'
: 'white',
}}
>
<td>{entry.request.shorthost}</td>
<td style={{ overflowWrap: 'anywhere' }}>
{entry.source}:{entry.name}
</td>
<td
style={{
width: '400px',
overflowWrap: 'anywhere',
backgroundColor: entry.isRelatedToID()
? '#ffff0054'
: 'white',
}}
>
{entry.getValuePreview()}
{/* always gonna have
one key, because unwrapEntry is called above */}
</td>
<td>
<select
value={entry.classification}
onChange={(e) => {
entry.classification = e.target
.value as keyof typeof Classifications;
refresh();
}}
>
{[
["history", "Historia przeglądania"],
["id", "Identyfikator internetowy"],
["location", "Lokalizacja"],
].map(([key, name]) => (
<option key={key} value={key}>
{name}
</option>
</td>
<td>
<select
value={entry.classification}
onChange={(e) => {
entry.classification = e.target
.value as keyof typeof Classifications;
refresh();
}}
>
{[
['history', 'Historia przeglądania'],
['id', 'Identyfikator internetowy'],
['location', 'Lokalizacja'],
].map(([key, name]) => (
<option key={key} value={key}>
{name}
</option>
))}
</select>
</td>
</tr>
))}
</select>
</td>
</tr>
))}
</tbody>
</table>
);
</tbody>
</table>
);
}
function Report() {
console.time("getOrigin");
const origin = new URL(document.location.toString()).searchParams.get(
"origin"
);
console.timeEnd("getOrigin");
console.time("useMemory");
const [counter, setCounter] = useEmitter(getMemory());
console.timeEnd("useMemory");
function refresh() {
setCounter((c) => c + 1);
}
console.time("getClustersForOrigin");
const clusters = getMemory().getClustersForOrigin(origin);
console.timeEnd("getClustersForOrigin");
const [entries, setEntries] = useState<StolenDataEntry[]>([]);
console.time("useEffect report-window");
useEffect(() => {
setEntries(
Object.values(clusters)
.map((cluster) => {
cluster.calculatetRepresentativeStolenData();
return cluster.representativeStolenData;
})
.reduce(reduceConcat, [])
.filter((entry) => entry.isMarked)
console.time('getOrigin');
const origin = new URL(document.location.toString()).searchParams.get(
'origin'
);
}, []);
console.timeEnd("useEffect report-window");
if (entries.length == 0) {
return <>Wczytywanie...</>;
}
console.time("rendering template");
const result = (
<div {...{ "data-version": counter }}>
{/*<DataPreview {...{entries, refresh}} */}
<h1>Generuj treść maila dla {origin}</h1>
<EmailTemplate {...{ entries, clusters, version: counter }} />
<HARConverter {...{ entries }} />
</div>
);
console.timeEnd("rendering template");
return result;
console.timeEnd('getOrigin');
console.time('useMemory');
const [counter, setCounter] = useEmitter(getMemory());
console.timeEnd('useMemory');
function refresh() {
setCounter((c) => c + 1);
}
console.time('getClustersForOrigin');
const clusters = getMemory().getClustersForOrigin(origin);
console.timeEnd('getClustersForOrigin');
const [entries, setEntries] = useState<StolenDataEntry[]>([]);
console.time('useEffect report-window');
useEffect(() => {
setEntries(
Object.values(clusters)
.map((cluster) => {
cluster.calculateRepresentativeStolenData();
return cluster.representativeStolenData;
})
.reduce(reduceConcat, [])
.filter((entry) => entry.isMarked)
);
}, []);
console.timeEnd('useEffect report-window');
if (entries.length == 0) {
return <>Wczytywanie...</>;
}
console.time('rendering template');
const result = (
<div {...{ 'data-version': counter }}>
{/*<DataPreview {...{entries, refresh}} */}
<h1>Generuj treść maila dla {origin}</h1>
<EmailTemplate {...{ entries, clusters, version: counter }} />
<HARConverter {...{ entries }} />
</div>
);
console.timeEnd('rendering template');
return result;
}
ReactDOM.render(<Report />, document.getElementById("app"));
ReactDOM.render(<Report />, document.getElementById('app'));

View File

@ -1,173 +1,183 @@
import { EventEmitter } from "events";
import ExtendedRequest from "./extended-request";
import { Sources, StolenDataEntry } from "./stolen-data-entry";
import { EventEmitter } from 'events';
import ExtendedRequest from './extended-request';
import { Sources, StolenDataEntry } from './stolen-data-entry';
import { allSubhosts, isSameURL, reduceConcat, unique } from "./util";
import { allSubhosts, isSameURL, reduceConcat, unique } from './util';
const source_priority: Array<Sources> = [
"cookie",
"pathname",
"queryparams",
"header",
'cookie',
'pathname',
'queryparams',
'header',
];
export class RequestCluster extends EventEmitter {
public requests: ExtendedRequest[] = [];
public representativeStolenData: StolenDataEntry[] = [];
constructor(public id: string) {
super();
}
add(request: ExtendedRequest) {
this.requests.push(request);
this.emit("change");
}
hasCookies() {
for (const request of this.requests) {
if (request.hasCookie()) {
return true;
}
public requests: ExtendedRequest[] = [];
public representativeStolenData: StolenDataEntry[] = [];
public expanded: boolean;
constructor(public id: string) {
super();
}
return false;
}
calculatetRepresentativeStolenData(
filter: {
minValueLength: number;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
} = { minValueLength: 0, cookiesOnly: false, cookiesOrOriginOnly: false }
): StolenDataEntry[] {
this.representativeStolenData = this.requests
.map((request) => request.stolenData)
.reduce((a, b) => a.concat(b), [])
.filter((entry) => {
return entry.value.length >= filter.minValueLength;
})
.filter((entry) => !filter.cookiesOnly || entry.source === "cookie")
.filter(
(entry) =>
!filter.cookiesOrOriginOnly ||
entry.source === "cookie" ||
entry.classification === "history"
)
.sort((entry1, entry2) => {
if (entry1.value > entry2.value) {
return -1;
} else if (entry1.value < entry2.value) {
return 1;
} else {
const indexA = source_priority.indexOf(entry1.source);
const indexB = source_priority.indexOf(entry2.source);
if (indexA < indexB) {
return -1;
} else if (indexA > indexB) {
return 1;
} else if (entry1.value.length > entry2.value.length) {
return -1;
} else if (entry1.value.length < entry2.value.length) {
return 1;
} else if (entry1.isMarked && !entry2.isMarked) {
return -1;
} else if (!entry1.isMarked && entry2.isMarked) {
return 1;
} else {
return 0;
}
}
})
.filter((_, index, array) => {
// removing value duplicates
if (index == 0) {
return true;
}
if (
array[index].getValuePreview() ===
array[index - 1].getValuePreview() ||
isSameURL(array[index].value, array[index - 1].value)
) {
return false;
} else {
return true;
}
})
.sort((entry1, entry2) => {
if (entry1.name < entry2.name) {
return -1;
} else if (entry1.name > entry2.name) {
return 1;
} else {
if (entry1.value.length > entry2.value.length) {
return 1;
} else {
return -1;
}
}
})
.filter((_, index, array) => {
// removing name duplicates, keeping only the first - which is the longest. Some data loss may occur.
if (index == 0) {
return true;
}
if (array[index].name === array[index - 1].name) {
return false;
} else {
return true;
}
})
.sort((entry1, entry2) =>
entry1.getPriority() > entry2.getPriority() ? -1 : 1
);
return this.representativeStolenData;
}
static sortCompare(a: RequestCluster, b: RequestCluster) {
if (a.hasCookies() == b.hasCookies()) {
if (a.id < b.id) {
return -1;
} else {
return 1;
}
} else {
if (a.hasCookies()) {
return -1;
} else {
return 1;
}
add(request: ExtendedRequest) {
this.requests.push(request);
this.emit('change');
}
}
getMarkedRequests() {
return this.requests.filter((request) => request.hasMark());
}
toggleExpanded(state: boolean) {
this.expanded = state;
this.emit('change');
}
getFullHosts() {
return unique(
this.requests
.map((request) => allSubhosts(request.getHost()))
.reduce((a, b) => a.concat(b), [])
);
}
hasCookies() {
for (const request of this.requests) {
if (request.hasCookie()) {
return true;
}
}
return false;
}
hasMarks() {
return this.requests.some((request) => request.hasMark());
}
calculateRepresentativeStolenData(
filter: {
minValueLength: number;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
} = {
minValueLength: 0,
cookiesOnly: false,
cookiesOrOriginOnly: false,
}
): StolenDataEntry[] {
this.representativeStolenData = this.requests
.map((request) => request.stolenData)
getMarkedEntries(): StolenDataEntry[] {
return this.requests
.map((request) => request.getMarkedEntries())
.reduce(reduceConcat, []);
}
.reduce((a, b) => a.concat(b), [])
.filter((entry) => {
return entry.value.length >= filter.minValueLength;
})
.filter((entry) => !filter.cookiesOnly || entry.source === 'cookie')
.filter(
(entry) =>
!filter.cookiesOrOriginOnly ||
entry.source === 'cookie' ||
entry.classification === 'history'
)
.sort((entry1, entry2) => {
if (entry1.value > entry2.value) {
return -1;
} else if (entry1.value < entry2.value) {
return 1;
} else {
const indexA = source_priority.indexOf(entry1.source);
const indexB = source_priority.indexOf(entry2.source);
if (indexA < indexB) {
return -1;
} else if (indexA > indexB) {
return 1;
} else if (entry1.value.length > entry2.value.length) {
return -1;
} else if (entry1.value.length < entry2.value.length) {
return 1;
} else if (entry1.isMarked && !entry2.isMarked) {
return -1;
} else if (!entry1.isMarked && entry2.isMarked) {
return 1;
} else {
return 0;
}
}
})
.filter((_, index, array) => {
// removing value duplicates
if (index == 0) {
return true;
}
if (
array[index].getValuePreview() ===
array[index - 1].getValuePreview() ||
isSameURL(array[index].value, array[index - 1].value)
) {
return false;
} else {
return true;
}
})
.sort((entry1, entry2) => {
if (entry1.name < entry2.name) {
return -1;
} else if (entry1.name > entry2.name) {
return 1;
} else {
if (entry1.value.length > entry2.value.length) {
return 1;
} else {
return -1;
}
}
})
.filter((_, index, array) => {
// removing name duplicates, keeping only the first - which is the longest. Some data loss may occur.
if (index == 0) {
return true;
}
if (array[index].name === array[index - 1].name) {
return false;
} else {
return true;
}
})
.sort((entry1, entry2) =>
entry1.getPriority() > entry2.getPriority() ? -1 : 1
);
return this.representativeStolenData;
}
exposesOrigin() {
return this.requests.some((request) => request.exposesOrigin());
}
static sortCompare(a: RequestCluster, b: RequestCluster) {
if (a.hasCookies() == b.hasCookies()) {
if (a.id < b.id) {
return -1;
} else {
return 1;
}
} else {
if (a.hasCookies()) {
return -1;
} else {
return 1;
}
}
}
autoMark() {
this.calculatetRepresentativeStolenData();
this.representativeStolenData.forEach((entry) => {
entry.autoMark();
});
}
getMarkedRequests() {
return this.requests.filter((request) => request.hasMark());
}
getFullHosts() {
return unique(
this.requests
.map((request) => allSubhosts(request.getHost()))
.reduce((a, b) => a.concat(b), [])
);
}
hasMarks() {
return this.requests.some((request) => request.hasMark());
}
getMarkedEntries(): StolenDataEntry[] {
return this.requests
.map((request) => request.getMarkedEntries())
.reduce(reduceConcat, []);
}
exposesOrigin() {
return this.requests.some((request) => request.exposesOrigin());
}
autoMark() {
this.calculateRepresentativeStolenData();
this.representativeStolenData.forEach((entry) => {
entry.autoMark();
});
}
}

7
sidebar/colors.scss Normal file
View File

@ -0,0 +1,7 @@
$mid-grey: #2e3a59;
$disabled-grey: #8a949f;
$light-grey: #d1d1d1;
$blue: #0048D9;
$icd-yellow: #ffee2c;
$pale-yellow: #fff8e5;
$contrast-yellow: #ffb900;

49
sidebar/fonts.scss Normal file
View File

@ -0,0 +1,49 @@
@font-face {
font-family: 'Fira Code';
src: url('./../assets/fonts/fira-code/woff2/FiraCode-Light.woff2') format('woff2'),
url('./../assets/fonts/fira-code/woff/FiraCode-Light.woff') format('woff');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('./../assets/fonts/fira-code/woff2/FiraCode-Regular.woff2') format('woff2'),
url('./../assets/fonts/fira-code/woff/FiraCode-Regular.woff') format('woff');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('./../assets/fonts/fira-code/woff2/FiraCode-Medium.woff2') format('woff2'),
url('./../assets/fonts/fira-code/woff/FiraCode-Medium.woff') format('woff');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('./../assets/fonts/fira-code/woff2/FiraCode-SemiBold.woff2') format('woff2'),
url('./../assets/fonts/fira-code/woff/FiraCode-SemiBold.woff') format('woff');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('./../assets/fonts/fira-code/woff2/FiraCode-Bold.woff2') format('woff2'),
url('./../assets/fonts/fira-code/woff/FiraCode-Bold.woff') format('woff');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Fira Code VF';
src: url('./../assets/fonts/fira-code/woff2/FiraCode-VF.woff2')
format('woff2-variations'),
url('./../assets/fonts/fira-code/woff/FiraCode-VF.woff') format('woff-variations');
/* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */
font-weight: 300 700;
font-style: normal;
}

54
sidebar/global.scss Normal file
View File

@ -0,0 +1,54 @@
@import './fonts.scss';
* {
margin: 0px;
padding: 0px;
box-sizing: border-box;
text-rendering: optimizelegibility;
font-smooth: auto;
-webkit-font-smoothing: auto;
user-select: none;
}
body {
min-width: 24rem;
}
html {
font-size: 1rem;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
button {
display: inline-block;
line-height: 3rem;
padding: 0 1rem;
white-space: nowrap;
}
select {
height: 3rem;
line-height: 3rem;
flex-shrink: 1;
}
#tab_dropdown {
flex-basis: 20px;
width: 100px !important;
flex-grow: 1;
}
#selector {
display: flex;
flex-flow: row nowrap;
align-items: center;
}
#app {
user-select: text;
padding: 0rem 0.75rem;
display: flex;
flex-flow: column;
justify-content: flex-start;
}

View File

@ -1,45 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<head>
<meta charset="utf-8" />
<style>
button {
display: inline-block;
line-height: 3rem;
padding: 0 1rem;
white-space: nowrap;
}
select {
height: 3rem;
line-height: 3rem;
flex-shrink: 1;
}
#tab_dropdown {
flex-basis: 20px;
width: 100px !important;
flex-grow: 1;
}
#selector {
display: flex;
flex-flow: row nowrap;
align-items: center;
}
#app {
user-select: text;
}
tr:hover {
background-color: hsla(0, 0%, 0%, 0.1);
}
</style>
</head>
<body>
</head>
<body>
<div id="app"></div>
<link
rel="stylesheet"
href="/lib/sidebar/global.css"
>
<link
rel="stylesheet"
href="/lib/sidebar/sidebar.css"
>
<script src="/lib/sidebar/sidebar.js"></script>
</body>
</html>
</body>
</html>

115
sidebar/sidebar.scss Normal file
View File

@ -0,0 +1,115 @@
@import './colors.scss';
.sidebar {
.header {
display: grid;
grid-template-columns: 6.67rem 1fr 1.25rem;
align-items: center;
max-height: 3.5rem;
min-height: 3.5rem;
border-bottom: 1px solid $light-grey;
position: sticky;
top: 0;
background: #fff;
z-index: 1;
&--without-logo {
grid-template-columns: 1fr 1.25rem;
}
.webpage-metadata {
word-break: break-all;
display: flex;
flex-flow: column;
flex-wrap: nowrap;
font-size: 0.875rem;
font-weight: 600;
justify-content: center;
padding-left: 1rem;
color: #000;
&--without-logo {
padding-left: 0;
}
&--hyperlink {
font-weight: 400;
color: $mid-grey;
max-height: 2rem;
overflow: hidden;
}
}
button {
border: none;
background: transparent;
cursor: pointer;
padding: 0;
}
}
nav {
padding: 0.25rem 0;
border-bottom: 1px solid $light-grey;
button {
border: none;
cursor: pointer;
color: $mid-grey;
padding: 0.25rem 0rem;
display: flex;
flex-wrap: nowrap;
line-height: 1.25rem;
background: #fff;
width: 100%;
&:hover {
color: #000;
text-decoration: underline;
svg path {
fill: #000;
}
}
&:disabled {
cursor: not-allowed;
color: $disabled-grey;
svg path {
fill: $disabled-grey;
}
}
span {
padding-left: 0.5rem;
font-size: 0.875rem;
font-weight: 500;
}
}
}
.warning-container {
background-color: $pale-yellow;
border-left: 4px solid $contrast-yellow;
margin-top: 0.5rem;
font-size: 0.875rem;
display: grid;
grid-template-columns: calc(100% - 2rem) 2rem;
align-items: flex-start;
span {
padding: 1rem;
}
button {
justify-content: flex-end;
border: none;
cursor: pointer;
color: $mid-grey;
line-height: 1.25rem;
background: transparent;
padding: 0.5rem 0.5rem;
display: flex;
align-self: flex-start;
}
}
}

View File

@ -1,46 +1,81 @@
import React, { useEffect, useState } from "react";
import ReactDOM from "react-dom";
import Options from "../options";
import { StolenData } from "./stolen-data";
import { useEmitter } from "../util";
import { getMemory } from "../memory";
import React, { Fragment, useEffect, useState } from 'react';
import ReactDOM from 'react-dom';
import Options from '../options';
import { StolenData } from './stolen-data';
import { getshorthost, useEmitter } from '../util';
import { getMemory } from '../memory';
import InfoCircleIcon from '../assets/icons/info_circle_outline.svg';
import SettingsIcon from '../assets/icons/settings.svg';
import TrashIcon from '../assets/icons/trash_full.svg';
import MailIcon from '../assets/icons/mail.svg';
import ShortLeftIcon from '../assets/icons/short_left.svg';
import CloseBigIcon from '../assets/icons/close_big.svg';
async function getCurrentTab() {
const [tab] = await browser.tabs.query({
active: true,
windowId: browser.windows.WINDOW_ID_CURRENT,
});
return tab;
const [tab] = await browser.tabs.query({
active: true,
windowId: browser.windows.WINDOW_ID_CURRENT,
});
return tab;
}
import './global.scss';
import './sidebar.scss';
const Sidebar = () => {
const [origin, setOrigin] = useState<string | null>(null);
const [minValueLength, setMinValueLength] = useState<number | null>(7);
const [cookiesOnly, setCookiesOnly] = useState<boolean>(false);
const [cookiesOrOriginOnly, setCookiesOrOriginOnly] = useState<boolean>(
false
);
const [counter, setCounter] = useEmitter(getMemory());
const [origin, setOrigin] = useState<string | null>(null);
const [minValueLength, setMinValueLength] = useState<number | null>(7);
const [cookiesOnly, setCookiesOnly] = useState<boolean>(false);
const [stolenDataView, setStolenDataView] = useState<boolean>(true);
const [cookiesOrOriginOnly, setCookiesOrOriginOnly] =
useState<boolean>(false);
const [counter, setCounter] = useEmitter(getMemory());
const [marksOccurrence, setMarksOccurrence] = useState<boolean>(false);
const [warningDataDialogAck, setWarningDataDialogAck] = useState<boolean>(
localStorage.getItem('warningDataDialogAck') === null
? true
: localStorage.getItem('warningDataDialogAck') == 'true'
? true
: false
);
const [logoVisibility, setLogoVisibility] = useState<boolean>(
localStorage.getItem('logoVisibility') === null
? true
: localStorage.getItem('logoVisibility') == 'true'
? true
: false
);
useEffect(() => {
const listener = async (data) => {
console.log("tab change!");
const tab = await getCurrentTab();
const url = new URL(tab.url);
if (url.origin.startsWith("moz-extension")) {
return;
}
setOrigin(url.origin);
};
browser.tabs.onUpdated.addListener(listener);
return () => {
browser.tabs.onUpdated.removeListener(listener);
};
});
useEffect(() => {
const listener = async (data: any) => {
console.log('tab change!');
const tab = await getCurrentTab();
const url = new URL(tab.url);
if (url.origin.startsWith('moz-extension')) {
return;
}
setOrigin(url.origin);
};
browser.tabs.onUpdated.addListener(listener);
return () => {
browser.tabs.onUpdated.removeListener(listener);
};
});
return (
<>
{/* <div id="selector">
useEffect(() => {
for (const cluster of Object.values(
getMemory().getClustersForOrigin(origin)
)) {
if (cluster.hasMarks()) {
return setMarksOccurrence(true);
}
}
return setMarksOccurrence(false);
}, [counter, origin]);
return (
<div className="sidebar">
{/* <div id="selector">
<TabDropdown setPickedTab={setPickedTab} pickedTab={pickedTab} />
<button
id="get_current_tab_button"
@ -49,24 +84,158 @@ const Sidebar = () => {
Wybierz aktywną kartę{" "}
</button>
</div> */}
<Options
minValueLength={minValueLength}
setMinValueLength={setMinValueLength}
cookiesOnly={cookiesOnly}
setCookiesOnly={setCookiesOnly}
cookiesOrOriginOnly={cookiesOrOriginOnly}
setCookiesOrOriginOnly={setCookiesOrOriginOnly}
/>
<StolenData
origin={origin}
refreshToken={counter}
refresh={() => setCounter((c) => c + 1)}
minValueLength={minValueLength}
cookiesOnly={cookiesOnly}
cookiesOrOriginOnly={cookiesOrOriginOnly}
/>
</>
);
<header
className={
logoVisibility ? 'header' : 'header header--without-logo'
}
>
<img
src="../assets/logo-internet-czas-dzialac.svg"
height={40}
style={!logoVisibility ? { display: 'none' } : null}
></img>
<div
className={
logoVisibility
? 'webpage-metadata'
: 'webpage-metadata webpage-metadata--without-logo'
}
>
{origin ? (
<Fragment>
<span>Analiza strony</span>
<span className="webpage-metadata--hyperlink">
{origin}
</span>
</Fragment>
) : (
<span>Przejdź do wybranej strony internetowej</span>
)}
</div>
{stolenDataView ? (
<a href="https://internet-czas-dzialac.pl">
<InfoCircleIcon />
</a>
) : (
<button onClick={() => setStolenDataView(true)}>
<ShortLeftIcon />
</button>
)}
</header>
{stolenDataView ? (
<nav>
<button onClick={() => setStolenDataView(!stolenDataView)}>
{/* {stolenDataView ? 'Options' : 'Data'}
*/}
<SettingsIcon width={20} height={20} />
<span>Ustawienia wtyczki</span>
</button>
{/* <button
onClick={() => {
getMemory().removeCookiesFor(
origin,
getshorthost(new URL(origin).host)
);
setMarksOccurrence(false);
}}
>
<TrashIcon />
<span>Wyczyść ciasteczka first-party</span>
</button> */}
<button
onClick={() => {
getMemory().removeRequestsFor(origin);
setCounter((c) => c + 1);
setMarksOccurrence(false);
}}
>
{/* {stolenDataView ? 'Options' : 'Data'}
*/}
<TrashIcon width={20} height={20} />
<span>Wyczyść ciasteczka</span>
</button>
<button
disabled={!marksOccurrence}
title={
marksOccurrence
? 'Kliknij, aby wygenerować wiadomość'
: 'Zaznacz poniżej elementy, aby móc wygenerować wiadomość'
}
onClick={() => {
const params = [
'height=' + screen.height,
'width=' + screen.width,
'fullscreen=yes',
].join(',');
window.open(
`/report-window/report-window.html?origin=${origin}`,
'new_window',
params
);
}}
>
<MailIcon width={20} height={20} />
<span>
Utwórz wiadomość dla administratora tej witryny
</span>
</button>
</nav>
) : null}
<section>
{stolenDataView ? (
<Fragment>
{warningDataDialogAck ? (
<section className="warning-container">
<span>
<strong>Uwaga!</strong> Niekoniecznie każda
przechwycona poniżej informacja jest daną
osobową. Niektóre z podanych domen mogą
należeć do właściciela strony i nie
reprezentować podmiotów trzecich.
</span>
<button
onClick={() => {
setWarningDataDialogAck(false);
localStorage.setItem(
'warningDataDialogAck',
false as unknown as string
);
}}
>
<CloseBigIcon width={16} height={16} />
</button>
</section>
) : null}
<StolenData
origin={origin}
refreshToken={counter}
refresh={() => setCounter((c) => c + 1)}
minValueLength={minValueLength}
cookiesOnly={cookiesOnly}
cookiesOrOriginOnly={cookiesOrOriginOnly}
/>
</Fragment>
) : (
<Options
minValueLength={minValueLength}
setMinValueLength={setMinValueLength}
cookiesOnly={cookiesOnly}
setCookiesOnly={setCookiesOnly}
cookiesOrOriginOnly={cookiesOrOriginOnly}
setCookiesOrOriginOnly={setCookiesOrOriginOnly}
warningDataDialogAck={warningDataDialogAck}
setWarningDataDialogAck={setWarningDataDialogAck}
logoVisibility={logoVisibility}
setLogoVisibility={setLogoVisibility}
/>
)}
</section>
{/* <footer>Footer marks → {JSON.stringify(marksOccurrence)}</footer> */}
</div>
);
};
ReactDOM.render(<Sidebar />, document.getElementById("app"));
ReactDOM.render(<Sidebar />, document.getElementById('app'));

View File

@ -0,0 +1,143 @@
@import './colors.scss';
.stolen-data-cluster-container {
.domains-container {
padding-top: 0.5rem;
display: flex;
flex-flow: column;
border-bottom: none;
.domain {
color: $mid-grey;
font-size: 0.875rem;
font-weight: 600;
text-decoration: none;
}
.subdomains-container {
.subdomain {
color: $blue;
font-size: 0.75rem;
font-weight: 600;
text-decoration: none;
}
}
}
section {
padding-bottom: 0.5rem;
border-bottom: 1px solid $light-grey;
}
table {
width: 100%;
position: relative;
left: -1px;
text-align: left;
font-size: 0.75rem;
font-family: 'Fira Code';
border-collapse: separate;
border-spacing: 1px;
tr {
vertical-align: middle;
line-height: 1rem;
&:hover {
background-color: $icd-yellow;
color: $mid-grey !important;
cursor: pointer;
}
&.untoggled {
color: $disabled-grey;
font-weight: 500;
}
&.toggled {
font-weight: 600;
color: $mid-grey;
th {
font-weight: 600;
}
}
th {
text-align: left;
text-overflow: ellipsis;
overflow: hidden;
word-wrap: normal;
word-break: normal;
padding-left: 0.25rem;
font-weight: 500;
vertical-align: middle;
width: 10rem;
min-width: 10rem;
max-width: 10rem;
}
}
.value {
overflow: hidden;
word-break: break-all;
text-overflow: clip;
padding-left: 0.25rem;
}
.icons {
white-space: nowrap;
padding: 0 0.25rem;
position: relative;
top: 2px;
max-width: 10%;
min-width: 5%;
.cookie-data {
path {
fill: $mid-grey;
}
}
.request-with-cookie {
path {
fill: $mid-grey;
}
}
.show-history-part {
path {
fill: $mid-grey;
}
}
.request-with-history-part {
path {
fill: $mid-grey;
}
}
}
.table-header {
color: $mid-grey;
font-size: 0.75rem;
font-weight: 600;
padding: 0.5rem 0;
text-align: left;
cursor: default;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue',
sans-serif;
&:hover {
background: #fff;
}
}
.checkbox {
position: relative;
top: 1px;
width: 0.875rem;
input {
cursor: pointer;
}
}
}
}

View File

@ -1,154 +1,249 @@
import React from "react";
import { getMemory } from "../memory";
import { StolenDataEntry } from "../stolen-data-entry";
import React, { Fragment } from 'react';
import { getMemory } from '../memory';
import { StolenDataEntry } from '../stolen-data-entry';
import { maskString, useEmitter } from "../util";
import { maskString, useEmitter } from '../util';
import CookieIcon from '../assets/icons/cookie.svg';
import WarningIcon from '../assets/icons/warning.svg';
import './stolen-data-cluster.scss';
const MAX_STRING_VALUE_LENGTH = 100;
function StolenDataValue({
entry,
entry,
refresh,
}: {
entry: StolenDataEntry;
prefixKey?: string;
entry: StolenDataEntry;
refresh: Function;
prefixKey?: string;
}) {
const [version] = useEmitter(entry);
let body = null;
if (!entry.value) {
body = <></>;
} else {
body = (
<div data-version={version}>
{maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)}
</div>
const [version] = useEmitter(entry);
let body = null;
if (!entry.value) {
body = <></>;
} else {
body = (
<div data-version={version}>
{maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)}
</div>
);
}
return (
<td
className="value"
onClick={(e) => {
entry.toggleMark();
refresh();
e.stopPropagation();
}}
title={maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)}
// style={{ color: entry.isMarked ? 'black' : 'gray' }}
>
{body}
</td>
);
}
return (
<div
onClick={(e) => {
entry.toggleMark();
e.stopPropagation();
}}
style={{ color: entry.isMarked ? "black" : "gray" }}
>
{body}
</div>
);
}
function StolenDataRow({ entry }: { entry: StolenDataEntry }) {
const [version] = useEmitter(entry);
return (
<tr data-key={entry.id} data-version={version}>
<td>
<input
type="checkbox"
checked={entry.isMarked}
onChange={() => entry.toggleMark()}
/>
</td>
<th
style={{
width: "100px",
overflowWrap: "anywhere",
}}
title={"Źródło: " + entry.source}
onClick={() => entry.toggleMark()}
>
{entry.name}
</th>
<td style={{ whiteSpace: "nowrap" }}>
{entry.source === "cookie" ? (
<span title="Dane przechowywane w Cookies">🍪</span>
) : entry.request.hasCookie() ? (
<span
title="Wysłane w zapytaniu opatrzonym cookies"
style={{ opacity: 0.5, fontSize: "0.5em" }}
>
🍪
</span>
) : null}
{entry.exposesOrigin() ? (
<span title="Pokazuje część historii przeglądania"></span>
) : entry.request.exposesOrigin() ? (
<span
title="Jest częścią zapytania, które ujawnia historię przeglądania"
style={{ opacity: 0.5, fontSize: "0.5em" }}
>
</span>
) : null}
</td>
<td style={{ wordWrap: "anywhere" as any }}>
<StolenDataValue entry={entry} />
</td>
</tr>
);
function StolenDataRow({
entry,
refresh,
}: {
entry: StolenDataEntry;
refresh: Function;
}) {
const [version] = useEmitter(entry);
return (
<tr
data-key={entry.id}
data-version={version}
className={`${entry.isMarked ? 'toggled' : 'untoggled'}`}
>
<td className="checkbox">
<input
type="checkbox"
checked={entry.isMarked}
onChange={() => {
entry.toggleMark();
refresh();
}}
/>
</td>
<th
title={`Nazwa: ${entry.name}\nŹródło: ${entry.source}`}
onClick={() => {
entry.toggleMark();
refresh();
}}
>
{entry.name}
</th>
<td className="icons">
{entry.source === 'cookie' ? (
<span title="Dane przechowywane w Cookies">
<CookieIcon
height={16}
width={16}
className="cookie-data"
/>
</span>
) : entry.request.hasCookie() ? (
<span
title="Wysłane w zapytaniu opatrzonym Cookies"
style={{ opacity: 0.25 }}
>
<CookieIcon
height={16}
width={16}
className="request-with-cookie"
/>
</span>
) : null}
{entry.exposesOrigin() ? (
<span title="Pokazuje część historii przeglądania">
<WarningIcon
height={16}
width={16}
className="show-history-part"
/>
</span>
) : entry.request.exposesOrigin() ? (
<span
title="Jest częścią zapytania, które ujawnia historię przeglądania"
style={{ opacity: 0.25 }}
>
<WarningIcon
height={16}
width={16}
className="request-with-history-part"
/>
</span>
) : null}
</td>
{/* <td style={{ wordWrap: 'anywhere' as any }}> */}
<StolenDataValue refresh={refresh} entry={entry} />
</tr>
);
}
export default function StolenDataCluster({
origin,
shorthost,
minValueLength,
cookiesOnly,
cookiesOrOriginOnly,
origin,
shorthost,
minValueLength,
refresh,
cookiesOnly,
cookiesOrOriginOnly,
}: {
origin: string;
shorthost: string;
refreshToken: number;
minValueLength: number;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
origin: string;
shorthost: string;
refreshToken: number;
minValueLength: number;
refresh: Function;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
}) {
const cluster = getMemory().getClustersForOrigin(origin)[shorthost];
return (
<div>
<h2>
<a href={"https://" + cluster.id}>{cluster.id}</a>{" "}
{cluster.hasCookies() ? "🍪" : ""} x{cluster.requests.length}{" "}
{/* <a
* href="#"
* style={{ fontSize: "10px" }}
* onClick={() => getMemory().removeCookiesFor(origin, shorthost)}
* >
* Wyczyść cookiesy
* </a> */}
<a
href="#"
style={{ fontSize: "10px" }}
onClick={(e) => {
cluster.autoMark();
e.preventDefault();
}}
>
Zaznacz auto
</a>
</h2>
<div>
{cluster.getFullHosts().map((host) => (
<a key={host} href={`https://${host}`}>
{host},{" "}
</a>
))}
</div>
<table>
<tbody>
{cluster
.calculatetRepresentativeStolenData({
minValueLength,
cookiesOnly,
cookiesOrOriginOnly,
})
.map((entry) => (
<StolenDataRow
{...{
entry,
key: entry.id,
}}
/>
))}
</tbody>
</table>
</div>
);
const cluster = getMemory().getClustersForOrigin(origin)[shorthost];
const fullHosts = cluster.getFullHosts();
return (
<div className="stolen-data-cluster-container">
<header className="domains-container">
<a className="domain" href={'https://' + cluster.id}>
{cluster.id}
</a>
<div className="subdomains-container">
{fullHosts.map((host, index) => (
<a
className="subdomain"
key={host}
href={`https://${host}`}
>
{host}{' '}
{`${fullHosts.length - 1 !== index ? '· ' : ''}`}
</a>
))}
</div>
</header>
<section>
<table>
<thead>
<tr>
<th className="table-header" colSpan={4}>
Znalezione ustawienia:
</th>
</tr>
</thead>
<tbody>
{cluster
.calculateRepresentativeStolenData({
minValueLength,
cookiesOnly,
cookiesOrOriginOnly,
})
.map((entry) => (
<StolenDataRow
refresh={refresh}
{...{
entry,
key: entry.id,
}}
/>
))}
</tbody>
</table>
</section>
</div>
// <div>
// <h2>
// <a href={'https://' + cluster.id}>{cluster.id}</a>{' '}
// {cluster.hasCookies() ? '🍪' : ''} x{cluster.requests.length}{' '}
// {/* <a
// * href="#"
// * style={{ fontSize: "10px" }}
// * onClick={() => getMemory().removeCookiesFor(origin, shorthost)}
// * >
// * Wyczyść cookiesy
// * </a> */}
// <a
// href="#"
// style={{ fontSize: '10px' }}
// onClick={(e) => {
// cluster.autoMark();
// refresh();
// e.preventDefault();
// }}
// >
// Zaznacz auto
// </a>
// </h2>
// <div>
// {cluster.getFullHosts().map((host) => (
// <a key={host} href={`https://${host}`}>
// {host},{' '}
// </a>
// ))}
// </div>
// <table>
// <tbody>
// {cluster
// .calculateRepresentativeStolenData({
// minValueLength,
// cookiesOnly,
// cookiesOrOriginOnly,
// })
// .map((entry) => (
// <StolenDataRow
// refresh={refresh}
// {...{
// entry,
// key: entry.id,
// }}
// />
// ))}
// </tbody>
// </table>
// </div>
);
}

10
sidebar/stolen-data.scss Normal file
View File

@ -0,0 +1,10 @@
@import './colors.scss';
.stolen-data-container {
padding-top: .5rem;
span {
color: $mid-grey;
font-size: 0.75rem;
font-weight: 600;
}
}

View File

@ -1,93 +1,104 @@
import React from "react";
import { RequestCluster } from "../request-cluster";
import React from 'react';
import { RequestCluster } from '../request-cluster';
import StolenDataCluster from "./stolen-data-cluster";
import { getshorthost } from "../util";
import { getMemory } from "../memory";
import StolenDataCluster from './stolen-data-cluster';
import { getshorthost } from '../util';
import { getMemory } from '../memory';
import './stolen-data.scss';
export function StolenData({
origin,
minValueLength,
refreshToken,
refresh,
cookiesOnly,
cookiesOrOriginOnly,
origin,
minValueLength,
refreshToken,
refresh,
cookiesOnly,
cookiesOrOriginOnly,
}: {
origin: string;
refreshToken: number;
refresh: () => void;
minValueLength: number;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
origin: string;
refreshToken: number;
refresh: () => void;
minValueLength: number;
cookiesOnly: boolean;
cookiesOrOriginOnly: boolean;
}) {
if (!origin) {
return <div></div>;
}
const clusters = Object.values(getMemory().getClustersForOrigin(origin))
.sort(RequestCluster.sortCompare)
.filter((cluster) => !cookiesOnly || cluster.hasCookies())
.filter(
(cluster) =>
!cookiesOrOriginOnly || cluster.hasCookies() || cluster.exposesOrigin()
if (!origin) {
return (
<div className="stolen-data-container">
<span>Otwórz nową kartę z wybraną stroną internetową</span>
</div>
);
}
const clusters = Object.values(getMemory().getClustersForOrigin(origin))
.sort(RequestCluster.sortCompare)
.filter((cluster) => !cookiesOnly || cluster.hasCookies())
.filter(
(cluster) =>
!cookiesOrOriginOnly ||
cluster.hasCookies() ||
cluster.exposesOrigin()
);
return (
<div className="stolen-data-container">
{/* <button
style={{ marginLeft: '1rem' }}
onClick={() =>
getMemory().removeCookiesFor(
origin,
getshorthost(new URL(origin).host)
)
}
>
Wyczyść cookiesy 1st party
</button>
<button
style={{ marginLeft: '1rem' }}
onClick={() => {
getMemory().removeRequestsFor(origin);
refresh();
}}
>
Wyczyść pamięć
</button> */}
{/* <button
style={{ marginLeft: '1rem' }}
onClick={() =>
window.open(
`/report-window/report-window.html?origin=${origin}`,
'new_window',
'width=800,height=600'
)
}
>
Generuj maila
</button> */}
{/* <button
onClick={() => {
clusters.forEach((cluster) => cluster.autoMark());
refresh();
}}
>
Zaznacz automatycznie
</button> */}
<span>Domeny oraz przesłane informacje</span>
{clusters.map((cluster) => {
return (
<StolenDataCluster
origin={origin}
shorthost={cluster.id}
key={cluster.id + origin}
refresh={refresh}
refreshToken={refreshToken}
minValueLength={minValueLength}
cookiesOnly={cookiesOnly}
cookiesOrOriginOnly={cookiesOrOriginOnly}
/>
);
})}
</div>
);
return (
<div style={{ padding: "5px" }}>
{" "}
<div>
<h1>
{origin}
<button
style={{ marginLeft: "1rem" }}
onClick={() =>
getMemory().removeCookiesFor(
origin,
getshorthost(new URL(origin).host)
)
}
>
Wyczyść cookiesy 1st party
</button>
<button
style={{ marginLeft: "1rem" }}
onClick={() => {
getMemory().removeRequestsFor(origin);
refresh();
}}
>
Wyczyść pamięć
</button>
<button
onClick={() => clusters.forEach((cluster) => cluster.autoMark())}
>
Zaznacz automatycznie
</button>
<button
style={{ marginLeft: "1rem" }}
onClick={() =>
window.open(
`/report-window/report-window.html?origin=${origin}`,
"new_window",
"width=800,height=600"
)
}
>
Generuj maila
</button>
</h1>
{clusters.map((cluster) => {
return (
<StolenDataCluster
origin={origin}
shorthost={cluster.id}
key={cluster.id + origin}
refreshToken={refreshToken}
minValueLength={minValueLength}
cookiesOnly={cookiesOnly}
cookiesOrOriginOnly={cookiesOrOriginOnly}
/>
);
})}
</div>
</div>
);
}

View File

@ -1,30 +1,30 @@
import React from "react";
import { useEffect, useState } from "react";
import React from 'react';
import { useEffect, useState } from 'react';
export default function TabDropdown({
setPickedTab,
pickedTab,
setPickedTab,
pickedTab,
}: {
setPickedTab: (tab_id: number) => void;
pickedTab: number;
setPickedTab: (tab_id: number) => void;
pickedTab: number;
}) {
const [tabs, setTabs] = useState([]);
useEffect(() => {
browser.tabs.query({ currentWindow: true }).then(setTabs);
}, []);
return (
<select
id="tab_dropdown"
value={pickedTab}
onChange={async (e) => {
setPickedTab(parseInt(e.target.value));
}}
>
{tabs.map((tab) => (
<option value={tab.id} key={tab.id}>
{tab.title}
</option>
))}
</select>
);
const [tabs, setTabs] = useState([]);
useEffect(() => {
browser.tabs.query({ currentWindow: true }).then(setTabs);
}, []);
return (
<select
id="tab_dropdown"
value={pickedTab}
onChange={async (e) => {
setPickedTab(parseInt(e.target.value));
}}
>
{tabs.map((tab) => (
<option value={tab.id} key={tab.id}>
{tab.title}
</option>
))}
</select>
);
}

View File

@ -42,7 +42,7 @@ export function getshorthost(host: string) {
.replace(/^.*:\/\//, "")
.replace(/\/.*$/, "")
.split(".");
let lookback = parts.at(-2).length > 3 ? -2 : -3;
let lookback = !['co','com'].includes(parts.at(-2)) ? -2 : -3;
if (parts.at(-2) == "doubleclick" || parts.at(-2) == "google") {
lookback = -4; // to distinguish between google ads and stats
} else if (parts.at(-2) == "google") {