This commit is contained in:
2026-03-31 12:28:51 +08:00
parent df29bbbfd9
commit 654724a213
2561 changed files with 108 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
<script setup>
import { RouterLink, RouterView } from 'vue-router'
import HeardMain from './components/HeardMain.vue';
import FooterMain from './components/FooterMain.vue';
</script>
<template>
<div class="page">
<HeardMain />
<RouterView />
<FooterMain />
</div>
</template>
+491
View File
@@ -0,0 +1,491 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created by Svg.la -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="600" height="600">
<path d="M0 0 C198 0 396 0 600 0 C600 198 600 396 600 600 C402 600 204 600 0 600 C0 402 0 204 0 0 Z " fill="#0B1751" transform="translate(0,0)"/>
<path d="M0 0 C0.941 0.402 1.882 0.804 2.852 1.219 C17.645 7.96 26.411 18.799 32.371 33.711 C33.063 36.23 33.115 38.399 33 41 C33.41 40.434 33.82 39.868 34.242 39.285 C34.781 38.552 35.32 37.818 35.875 37.062 C36.409 36.332 36.942 35.601 37.492 34.848 C39 33 39 33 41 32 C41.402 32.961 41.402 32.961 41.812 33.941 C45.342 41.732 49.678 46.215 56.812 50.812 C61.427 52.532 66.143 53.265 71 54 C70.401 57.55 69.448 60.548 67.938 63.812 C67.575 64.603 67.213 65.393 66.84 66.207 C66.563 66.799 66.286 67.39 66 68 C66.614 68.26 67.227 68.521 67.859 68.789 C71.595 70.902 72.709 74.031 74 78 C74.717 85.978 73.626 93.618 72.023 101.414 C71.715 102.983 71.715 102.983 71.4 104.583 C70.737 107.933 70.057 111.279 69.375 114.625 C68.913 116.93 68.451 119.236 67.99 121.541 C65.642 133.216 63.26 144.886 60.625 156.5 C60.411 157.45 60.198 158.399 59.978 159.377 C55.423 178.673 55.423 178.673 47 184 C40.97 187.585 33.983 186.552 27.453 184.949 C14.975 181.65 14.975 181.65 11 179 C10.67 180.32 10.34 181.64 10 183 C9.34 183 8.68 183 8 183 C7.773 184.217 7.546 185.434 7.312 186.688 C3.765 202.382 -3.931 214.556 -15 226 C-15.536 226.557 -16.072 227.113 -16.625 227.687 C-23.367 234.657 -30.082 241.351 -38 247 C-38.678 247.553 -39.356 248.106 -40.055 248.676 C-42 250 -42 250 -45 250 C-45.135 250.559 -45.271 251.119 -45.41 251.695 C-49.21 265.848 -56.255 276.391 -66 287 C-77.428 285.644 -87.74 277.736 -95 269 C-98.207 262.586 -94.77 254.418 -93 248 C-93.99 250.97 -94.98 253.94 -96 257 C-100.378 256.735 -103.225 255 -106.352 252.078 C-112.297 244.582 -112.358 234.951 -112.438 225.812 C-112.448 224.899 -112.458 223.985 -112.469 223.043 C-112.348 213.68 -110.39 205.086 -104 198 C-99.692 194 -99.692 194 -96 194 C-95.747 193.416 -95.495 192.832 -95.234 192.23 C-91.499 185.481 -83.905 181.098 -77.562 177 C-76.64 176.403 -76.64 176.403 -75.698 175.794 C-71.263 173 -71.263 173 -69 173 C-67.251 166.598 -67.251 166.598 -67 160 C-63.959 158.986 -61.222 158.752 -58.035 158.574 C-55.787 158.138 -55.787 158.138 -54.152 155.914 C-52 154 -52 154 -48.906 154.012 C-47.782 154.235 -46.658 154.458 -45.5 154.688 C-44.376 154.898 -43.252 155.108 -42.094 155.324 C-41.073 155.547 -40.052 155.77 -39 156 C-37.863 156.178 -37.863 156.178 -36.703 156.359 C-35 157 -35 157 -33.25 160.562 C-32.837 161.697 -32.425 162.831 -32 164 C-33.765 160.912 -34 159.767 -34 156 C-39.61 155.01 -45.22 154.02 -51 153 C-51.33 150.36 -51.66 147.72 -52 145 C-52.66 144.67 -53.32 144.34 -54 144 C-53.942 144.592 -53.884 145.183 -53.824 145.793 C-53.576 150.136 -53.598 152.372 -56 156.125 C-59.145 158.091 -59.769 158.251 -63.25 157.875 C-67 157 -67 157 -68 156 C-68.385 152.727 -68.657 150.128 -66.953 147.203 C-65.625 145.562 -65.625 145.562 -63 143 C-62.34 143 -61.68 143 -61 143 C-60.939 142.336 -60.879 141.672 -60.816 140.988 C-60.733 140.105 -60.649 139.222 -60.562 138.312 C-60.481 137.442 -60.4 136.572 -60.316 135.676 C-60.009 133.077 -59.548 130.558 -59 128 C-60.14 128.361 -61.279 128.722 -62.453 129.094 C-74.542 132.709 -85.425 133.596 -98 133 C-97.007 131.001 -96.005 129.01 -94.965 127.035 C-94.626 126.384 -94.287 125.733 -93.938 125.062 C-93.596 124.414 -93.254 123.766 -92.902 123.098 C-90.722 118.028 -90.715 112.622 -90.438 107.188 C-90.394 106.399 -90.351 105.611 -90.307 104.799 C-90.201 102.866 -90.1 100.933 -90 99 C-80.6 95.736 -72.353 93.786 -62.367 93.441 C-58.68 92.958 -56.231 91.792 -53 90 C-50.625 89.312 -50.625 89.312 -49 89 C-49 88.01 -49 87.02 -49 86 C-50.768 84.583 -50.768 84.583 -53.062 83.312 C-62.684 77.155 -67.545 69.073 -70 58 C-71.474 41.949 -68.762 30.008 -59 17 C-58.393 16.184 -57.786 15.368 -57.16 14.527 C-43.994 -0.877 -18.996 -9.052 0 0 Z " fill="#476D97" transform="translate(383,178)"/>
<path d="M0 0 C0.99 0.34 1.98 0.681 3 1.031 C20.973 7.817 33.457 21.393 41.75 38.375 C49.08 55.478 49.017 73.703 42.252 90.9 C34.304 109.54 20.692 121.7 2.641 130.098 C-5.226 133.228 -13.094 134.332 -21.5 134.25 C-22.29 134.258 -23.08 134.265 -23.895 134.273 C-41.387 134.216 -57.768 126.443 -70.188 114.375 C-83.502 100.933 -90.242 83.791 -90.375 64.938 C-90.139 45.687 -82.645 28.586 -69 15 C-50.021 -1.638 -24.331 -8.77 0 0 Z " fill="#FDD842" transform="translate(197,71)"/>
<path d="M0 0 C0.941 0.402 1.882 0.804 2.852 1.219 C17.645 7.96 26.411 18.799 32.371 33.711 C33.063 36.23 33.115 38.399 33 41 C32.336 40.87 31.672 40.74 30.988 40.605 C25.13 39.58 25.13 39.58 20 42.188 C15.98 47.841 15.236 52.104 16 59 C16.939 61.029 17.926 63.039 19 65 C18.372 69.339 15.844 72.555 13.375 76.062 C12.961 76.687 12.547 77.312 12.121 77.955 C7.082 85.131 0.091 86.519 -8.237 88.069 C-23.995 90.698 -42.191 90.876 -56 82 C-63.828 76.018 -67.784 67.435 -70 58 C-71.691 42.024 -68.694 29.917 -59 17 C-58.393 16.184 -57.786 15.368 -57.16 14.527 C-43.994 -0.877 -18.996 -9.052 0 0 Z " fill="#FBFBFC" transform="translate(383,178)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.075 0.557 1.15 1.114 1.227 1.688 C2.474 8.926 5.216 13.869 10.902 18.574 C17.434 22.819 24.389 22.881 32 23 C30.125 28.75 30.125 28.75 29 31 C30.418 28.334 31.834 25.667 33.25 23 C33.646 22.256 34.041 21.512 34.449 20.746 C37.038 15.865 39.547 10.951 42 6 C45.999 7.884 47.385 9.424 49.172 13.455 C51.848 21.681 49.721 31.16 48.023 39.414 C47.715 40.983 47.715 40.983 47.4 42.583 C46.737 45.933 46.057 49.279 45.375 52.625 C44.913 54.93 44.451 57.236 43.99 59.541 C41.642 71.216 39.26 82.886 36.625 94.5 C36.411 95.45 36.198 96.399 35.978 97.377 C31.423 116.673 31.423 116.673 23 122 C16.955 125.594 9.954 124.558 3.418 122.914 C-8.655 119.672 -8.655 119.672 -12 118 C-11.711 117.319 -11.423 116.639 -11.125 115.938 C-9.569 111.876 -8.23 107.819 -7.684 103.492 C-6.676 98.343 -4.853 93.51 -3.125 88.562 C-0.704 81.543 1.42 74.769 2.625 67.438 C3.672 61.266 5.384 58.206 10 54 C-3.166 67.989 -3.166 67.989 -11.062 68.688 C-16.223 67.786 -18.833 66.153 -22 62 C-26.462 53.707 -27.414 44.815 -25.188 35.688 C-23.02 29.923 -18.787 25.356 -14.93 20.648 C-11.3 16.197 -8.097 11.492 -4.875 6.742 C-3.303 4.443 -1.745 2.171 0 0 Z " fill="#C5E0E9" transform="translate(407,240)"/>
<path d="M0 0 C8.282 5.334 12.674 11.62 16.844 20.527 C18.685 29.548 17.917 38.614 13.344 46.652 C6.985 55.998 -0.852 59.463 -11.531 62.59 C-13.387 63.141 -13.387 63.141 -15.281 63.703 C-20.335 64.93 -25.353 64.958 -30.531 64.965 C-31.477 64.989 -32.424 65.014 -33.398 65.039 C-40.645 65.069 -45.89 63.648 -51.484 58.949 C-58.327 50.458 -58.327 50.458 -59.531 45.59 C-58.359 41.441 -54.938 39.139 -51.719 36.527 C-50.538 35.55 -49.357 34.572 -48.176 33.594 C-47.571 33.096 -46.966 32.599 -46.342 32.086 C-43.505 29.742 -40.708 27.351 -37.906 24.965 C-33.923 21.584 -29.904 18.254 -25.844 14.965 C-21.237 11.229 -16.857 7.295 -12.527 3.242 C-10.531 1.59 -10.531 1.59 -8.531 1.59 C-8.531 0.93 -8.531 0.27 -8.531 -0.41 C-21.339 -2.625 -35.964 -3.047 -48.422 0.934 C-50.531 1.59 -50.531 1.59 -53.531 1.59 C-39.108 -12.444 -16.131 -9.479 0 0 Z " fill="#263C75" transform="translate(376.53125,196.41015625)"/>
<path d="M0 0 C0 3.656 -1.079 6.047 -2.438 9.438 C-5.562 17.262 -6.182 23.228 -6.188 31.625 C-6.206 33.189 -6.206 33.189 -6.225 34.785 C-6.26 53.473 0.674 71.409 13.301 85.328 C25.013 96.852 41.296 106.828 58 108 C58.907 108.075 59.815 108.15 60.75 108.227 C68.393 108.582 74.589 107.244 81.707 104.691 C86.727 102.909 86.727 102.909 90 104 C76.94 115.367 60.892 122.42 43.5 122.25 C42.315 122.262 42.315 122.262 41.105 122.273 C23.613 122.216 7.232 114.443 -5.188 102.375 C-18.502 88.933 -25.242 71.791 -25.375 52.938 C-25.137 33.496 -17.502 16.847 -4 3 C-2.695 1.963 -1.372 0.947 0 0 Z " fill="#FCAE33" transform="translate(132,83)"/>
<path d="M0 0 C19.638 0.42 42.929 5.144 60.312 14.375 C59.83 18.509 59.324 22.33 58.312 26.375 C53.692 25.385 49.072 24.395 44.312 23.375 C46.107 23.973 47.901 24.571 49.75 25.188 C52.809 26.207 52.809 26.207 55.312 27.375 C56.312 30.375 56.312 30.375 55.484 32.398 C51.183 39.513 46.067 45.687 40.596 51.912 C39.486 53.178 38.388 54.455 37.293 55.734 C34.466 59.027 31.562 62.238 28.562 65.375 C28.011 65.952 27.459 66.53 26.891 67.125 C25.312 68.375 25.312 68.375 22.312 68.375 C20.805 66.688 20.805 66.688 19.188 64.375 C12.639 55.63 3.829 47.88 -6.688 44.375 C-5.122 40.338 -2.246 37.904 0.938 35.125 C1.711 34.437 1.711 34.437 2.5 33.734 C3.766 32.609 5.039 31.491 6.312 30.375 C5.652 30.375 4.993 30.375 4.312 30.375 C-1.688 18.375 -1.688 18.375 -3.277 15.102 C-4.554 12.367 -4.554 12.367 -6.438 10.375 C-7.688 8.375 -7.688 8.375 -7.5 5.25 C-6.184 0.592 -4.548 0.066 0 0 Z " fill="#FEFEFE" transform="translate(322.6875,342.625)"/>
<path d="M0 0 C12.022 1.39 22.711 12.718 30.062 21.75 C32.451 24.785 33.66 27.116 34 31 C33.131 32.905 32.242 34.804 31.23 36.637 C29.834 39.319 28.777 42.055 27.688 44.875 C23.844 54.208 17.78 61.622 11 69 C-0.428 67.644 -10.74 59.736 -18 51 C-20.841 45.318 -18.339 38.72 -16.5 33.062 C-16.235 32.238 -15.97 31.413 -15.698 30.563 C-11.995 19.48 -6.945 9.389 0 0 Z " fill="#FCFCFD" transform="translate(306,396)"/>
<path d="M0 0 C1.675 0.286 3.344 0.618 5 1 C6.653 5.864 5.019 9.338 3.062 13.812 C2.772 14.505 2.481 15.198 2.182 15.912 C1.466 17.613 0.735 19.307 0 21 C0.66 21 1.32 21 2 21 C2.227 20.196 2.454 19.391 2.688 18.562 C4.729 13.02 7.329 6.831 12 3 C14.188 3.312 14.188 3.312 16 4 C16.925 6.493 17.262 8.286 16.333 10.819 C15.303 12.857 14.207 14.836 13.062 16.812 C12.676 17.505 12.29 18.198 11.893 18.912 C10.941 20.615 9.972 22.309 9 24 C12.577 20.587 15.307 16.876 18.121 12.828 C20 11 20 11 22.723 10.734 C23.474 10.822 24.226 10.91 25 11 C25.84 13.012 25.84 13.012 26 16 C24.513 18.851 22.554 21.297 20.562 23.812 C19.769 24.852 19.769 24.852 18.959 25.912 C17.653 27.618 16.328 29.311 15 31 C16.313 30.022 17.626 29.042 18.938 28.062 C19.668 27.517 20.399 26.972 21.152 26.41 C22.913 25.131 22.913 25.131 24 24 C26.5 23.875 26.5 23.875 29 24 C30 25 30 25 30.324 27.281 C29.888 30.939 28.486 32.023 25.812 34.5 C24.988 35.285 24.163 36.07 23.312 36.879 C21.65 38.403 19.983 39.922 18.312 41.438 C16.107 43.882 14.688 46.155 13.062 49 C10.183 53.993 7.24 57.38 2 60 C-4.287 60.818 -9.008 60.296 -14.184 56.531 C-21.293 50.538 -23.243 45.098 -25 36 C-25.205 35.116 -25.41 34.231 -25.621 33.32 C-26.826 27.987 -27.801 22.466 -27 17 C-26.34 16.34 -25.68 15.68 -25 15 C-22.625 15 -22.625 15 -20 16 C-16.953 19.376 -15.758 21.897 -15.75 26.375 C-15.832 27.571 -15.915 28.767 -16 30 C-11.564 26.134 -9.772 22.721 -7.938 17.188 C-7.436 15.762 -6.93 14.337 -6.422 12.914 C-6.061 11.899 -6.061 11.899 -5.693 10.864 C-2.631 2.631 -2.631 2.631 0 0 Z " fill="#FBFBFC" transform="translate(456,154)"/>
<path d="M0 0 C4.042 1.715 5.422 3.508 7.172 7.455 C9.848 15.681 7.721 25.16 6.023 33.414 C5.715 34.983 5.715 34.983 5.4 36.583 C4.737 39.933 4.057 43.279 3.375 46.625 C2.913 48.93 2.451 51.236 1.99 53.541 C-0.358 65.216 -2.74 76.886 -5.375 88.5 C-5.589 89.45 -5.802 90.399 -6.022 91.377 C-10.32 109.585 -10.32 109.585 -17.316 114.977 C-20.93 117.173 -23.615 116.994 -27.688 116.562 C-28.681 116.461 -29.675 116.359 -30.699 116.254 C-31.838 116.128 -31.838 116.128 -33 116 C-32.709 115.429 -32.419 114.859 -32.119 114.271 C-27.856 105.622 -25.588 96.77 -23.562 87.375 C-23.259 85.998 -22.955 84.622 -22.651 83.245 C-19.599 69.386 -16.705 55.492 -13.91 41.578 C-13.565 39.885 -13.22 38.193 -12.875 36.5 C-12.728 35.753 -12.582 35.005 -12.431 34.235 C-11.682 30.578 -10.749 27.166 -9.402 23.68 C-7.859 20.126 -7.859 20.126 -7.688 16.625 C-6.831 12.109 -4.847 9.062 -2.375 5.234 C-0.862 2.966 -0.862 2.966 0 0 Z " fill="#FCFCFC" transform="translate(449,246)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.075 0.557 1.15 1.114 1.227 1.688 C2.306 7.951 4.219 12.681 9 17 C12.874 19.317 16.851 21.228 21 23 C20.124 27.554 17.453 30.256 14.438 33.625 C13.331 34.887 12.225 36.15 11.121 37.414 C10.582 38.029 10.043 38.644 9.488 39.278 C7.594 41.47 5.789 43.723 4 46 C2.669 47.668 1.335 49.335 0 51 C-0.464 51.584 -0.929 52.168 -1.407 52.77 C-2.964 54.714 -4.542 56.639 -6.125 58.562 C-6.616 59.183 -7.107 59.804 -7.613 60.443 C-10.082 63.405 -11.455 64.821 -15.199 66.051 C-18 66 -18 66 -20.688 63.625 C-26.275 55.785 -26.945 47.116 -25.707 37.793 C-24.028 30.988 -19.27 25.946 -14.93 20.648 C-11.3 16.197 -8.097 11.492 -4.875 6.742 C-3.303 4.443 -1.745 2.171 0 0 Z " fill="#FDFDFD" transform="translate(407,240)"/>
<path d="M0 0 C1.99 1.99 2.561 3.158 3.625 5.688 C6.897 12.402 13.041 17.407 20 20 C23.649 20.8 27.307 21.441 31 22 C30.37 26.773 28.42 30.584 26.25 34.812 C25.888 35.522 25.526 36.231 25.153 36.961 C24.113 38.98 23.06 40.992 22 43 C21.517 43.92 21.033 44.841 20.535 45.789 C17.749 50.685 17.749 50.685 14.625 52 C13.759 52 12.892 52 12 52 C10.391 52.155 10.391 52.155 8.75 52.312 C1.2 51.683 -4.473 48.397 -9.559 42.852 C-12.966 38.474 -14.658 33.869 -14.41 28.285 C-12.701 18.762 -6.838 6.838 0 0 Z " fill="#FCFCFD" transform="translate(423,210)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.159 0.895 1.317 1.789 1.48 2.711 C3.648 13.945 6.195 23.307 16 30 C18.434 31.217 20.418 31.32 23.125 31.562 C24.035 31.646 24.945 31.73 25.883 31.816 C26.581 31.877 27.28 31.938 28 32 C27.436 38.734 25.654 44.635 23.438 51 C23.108 51.966 22.779 52.931 22.439 53.926 C21.633 56.286 20.82 58.644 20 61 C16.668 60.415 13.739 59.599 10.637 58.258 C9.832 57.914 9.027 57.569 8.197 57.215 C7.369 56.855 6.541 56.496 5.688 56.125 C4.046 55.418 2.404 54.712 0.762 54.008 C-0.431 53.496 -0.431 53.496 -1.647 52.974 C-3.906 52.039 -6.18 51.193 -8.48 50.367 C-11.996 49.001 -13.335 48.33 -15 45 C-15 44.01 -15 43.02 -15 42 C-18.3 42 -21.6 42 -25 42 C-25 41.34 -25 40.68 -25 40 C-26.96 38.363 -26.96 38.363 -29 37 C-27.913 36.944 -27.913 36.944 -26.805 36.887 C-18.882 36.507 -18.882 36.507 -12 33 C-10.577 30.087 -9.751 27.145 -9 24 C-8.773 23.196 -8.546 22.391 -8.312 21.562 C-7.607 15.777 -6.979 10.17 -10 5 C-8.417 3.417 -6.62 3.653 -4.438 3.438 C-3.611 3.354 -2.785 3.27 -1.934 3.184 C-0.976 3.093 -0.976 3.093 0 3 C0 2.01 0 1.02 0 0 Z " fill="#FBFBFC" transform="translate(378,283)"/>
<path d="M0 0 C19.638 0.42 42.929 5.144 60.312 14.375 C59.834 18.473 59.34 22.38 58.312 26.375 C57.598 26.156 56.883 25.936 56.147 25.71 C48.278 23.492 41.375 23.11 33.25 23.625 C32.137 23.678 31.024 23.731 29.877 23.785 C21.515 24.064 21.515 24.064 14.91 28.766 C12.878 30.813 10.763 32.752 8.625 34.688 C7.858 35.385 7.091 36.082 6.301 36.801 C4.312 38.375 4.312 38.375 2.312 38.375 C1.983 41.015 1.652 43.655 1.312 46.375 C2.303 46.705 3.293 47.035 4.312 47.375 C1.312 48.375 1.312 48.375 -0.73 47.598 C-1.792 47.023 -1.792 47.023 -2.875 46.438 C-3.948 45.867 -3.948 45.867 -5.043 45.285 C-5.586 44.985 -6.128 44.684 -6.688 44.375 C-5.122 40.338 -2.246 37.904 0.938 35.125 C1.711 34.437 1.711 34.437 2.5 33.734 C3.766 32.609 5.039 31.491 6.312 30.375 C5.652 30.375 4.993 30.375 4.312 30.375 C-1.688 18.375 -1.688 18.375 -3.277 15.102 C-4.554 12.367 -4.554 12.367 -6.438 10.375 C-7.688 8.375 -7.688 8.375 -7.5 5.25 C-6.184 0.592 -4.548 0.066 0 0 Z " fill="#FAFBFC" transform="translate(322.6875,342.625)"/>
<path d="M0 0 C1.002 -0.008 2.004 -0.015 3.037 -0.023 C8.564 -0.009 13.218 0.405 18.438 2.25 C18.438 2.91 18.438 3.57 18.438 4.25 C16.865 5.664 15.226 7.006 13.562 8.312 C9.749 11.36 6.039 14.455 2.438 17.75 C-1.774 21.584 -6.124 25.197 -10.551 28.777 C-14.69 32.176 -18.744 35.671 -22.792 39.177 C-25.647 41.642 -28.502 44.039 -31.562 46.25 C-30.05 54.147 -25.256 59.748 -19.562 65.25 C-21.048 65.745 -21.048 65.745 -22.562 66.25 C-30.434 59.399 -35.682 50.566 -36.8 40.01 C-37.407 29.146 -37.045 19.925 -31.562 10.25 C-30.957 9.123 -30.957 9.123 -30.34 7.973 C-29.457 6.374 -28.518 4.807 -27.562 3.25 C-27.233 3.91 -26.902 4.57 -26.562 5.25 C-25.572 4.796 -24.582 4.343 -23.562 3.875 C-15.824 0.328 -8.374 -0.065 0 0 Z " fill="#B5AAA9" transform="translate(349.5625,193.75)"/>
<path d="M0 0 C0.808 0.111 1.616 0.222 2.449 0.336 C3.372 0.479 3.372 0.479 4.312 0.625 C5.392 3.375 5.363 4.483 4.352 7.316 C3.885 8.264 3.418 9.211 2.938 10.188 C-0.065 16.369 -2.118 21.834 -0.074 28.68 C2.841 35.28 7.877 40.012 14.375 43.062 C17.786 43.716 20.845 43.814 24.312 43.625 C25.523 43.59 25.523 43.59 26.758 43.555 C30.639 42.142 31.828 39.051 33.625 35.562 C33.984 34.899 34.343 34.236 34.713 33.553 C35.595 31.918 36.456 30.273 37.312 28.625 C38.312 31.625 38.312 31.625 37.344 33.613 C36.586 34.764 36.586 34.764 35.812 35.938 C32.385 41.346 29.658 46.94 26.926 52.719 C25.312 55.625 25.312 55.625 22.312 57.625 C23.879 53.317 25.996 49.563 28.312 45.625 C26.971 45.729 26.971 45.729 25.602 45.836 C16.858 46.227 11.037 45.434 4.312 39.625 C-0.561 34.69 -2.184 30.292 -3.688 23.625 C-4.426 24.678 -5.165 25.731 -5.926 26.816 C-6.95 28.274 -7.975 29.731 -9 31.188 C-9.537 31.952 -10.073 32.717 -10.626 33.505 C-13.319 37.328 -16.038 41.121 -18.863 44.848 C-19.36 45.506 -19.856 46.165 -20.368 46.844 C-21.306 48.081 -22.252 49.313 -23.208 50.537 C-28.503 57.546 -29.612 65.008 -28.688 73.625 C-27.47 78.895 -25.902 83.968 -21.938 87.812 C-17.991 90.013 -15.038 90.73 -10.688 89.625 C-3.92 86.366 1.25 81.06 6.312 75.625 C6.312 76.615 6.312 77.605 6.312 78.625 C5.116 79.76 5.116 79.76 3.895 80.918 C0.862 84.097 0.569 85.646 0 89.938 C-1.332 98.384 -4.095 106.269 -6.907 114.323 C-8.564 119.101 -10.011 123.594 -10.688 128.625 C-11.126 130.241 -11.602 131.847 -12.125 133.438 C-12.371 134.207 -12.617 134.977 -12.871 135.77 C-13.688 137.625 -13.688 137.625 -15.688 138.625 C-14.697 135.325 -13.707 132.025 -12.688 128.625 C-13.47 128.377 -14.252 128.13 -15.059 127.875 C-19.688 126.28 -24.211 124.458 -28.75 122.625 C-29.635 122.269 -30.52 121.913 -31.432 121.547 C-33.12 120.868 -34.809 120.188 -36.497 119.508 C-38.892 118.543 -41.289 117.582 -43.688 116.625 C-43.78 117.708 -43.78 117.708 -43.875 118.812 C-44.993 122.682 -46.463 124.224 -49.688 126.625 C-52.813 127.456 -54.343 127.209 -57.688 126.625 C-60.633 123.378 -62.688 120.077 -62.688 115.625 C-59.594 110.078 -59.594 110.078 -56.688 108.625 C-49.464 108.042 -49.464 108.042 -46.188 110.5 C-44.688 112.625 -44.688 112.625 -44.688 114.625 C-43.958 114.754 -43.228 114.883 -42.476 115.016 C-39.848 115.59 -37.558 116.359 -35.07 117.367 C-33.788 117.883 -33.788 117.883 -32.48 118.41 C-31.16 118.95 -31.16 118.95 -29.812 119.5 C-28.503 120.028 -28.503 120.028 -27.168 120.566 C-22.316 122.529 -17.49 124.544 -12.688 126.625 C-12.556 125.918 -12.425 125.212 -12.289 124.484 C-11.675 121.566 -10.9 118.747 -10.059 115.887 C-9.746 114.82 -9.433 113.753 -9.111 112.654 C-8.786 111.552 -8.46 110.449 -8.125 109.312 C-7.796 108.19 -7.466 107.068 -7.127 105.912 C-6.316 103.149 -5.502 100.387 -4.688 97.625 C-5.714 97.652 -5.714 97.652 -6.761 97.68 C-7.66 97.694 -8.558 97.708 -9.484 97.723 C-10.375 97.741 -11.265 97.759 -12.183 97.778 C-17.356 97.462 -20.424 94.066 -23.812 90.5 C-30.899 81.605 -31.976 71.759 -31.036 60.7 C-30.233 55.919 -27.637 52.338 -24.688 48.625 C-24.688 48.295 -24.688 47.965 -24.688 47.625 C-25.551 47.932 -26.415 48.239 -27.305 48.555 C-41.884 53.167 -61.294 54.171 -75.688 48.625 C-75.688 47.965 -75.688 47.305 -75.688 46.625 C-74.981 46.769 -74.275 46.914 -73.547 47.062 C-56.649 50.119 -36.869 50.649 -20.918 43.359 C-18.065 41.141 -16.399 38.716 -14.438 35.688 C-13.752 34.647 -13.066 33.607 -12.359 32.535 C-10.46 29.248 -10.46 29.248 -9.688 25.625 C-10.162 24.759 -10.636 23.892 -11.125 23 C-13.242 18.427 -13.519 14.586 -12.688 9.625 C-10.094 3.643 -7.047 -1.021 0 0 Z " fill="#3B5383" transform="translate(410.6875,217.375)"/>
<path d="M0 0 C-0.023 1.195 -0.046 2.39 -0.07 3.621 C-0.18 11.757 -0.109 19.092 2 27 C2.039 29 2.045 31.001 2 33 C-0.416 33.814 -2.833 34.627 -5.25 35.438 C-5.932 35.668 -6.614 35.898 -7.316 36.135 C-12.299 37.804 -16.504 39.131 -21.766 39.098 C-22.655 39.094 -23.545 39.091 -24.461 39.088 C-25.842 39.075 -25.842 39.075 -27.25 39.062 C-28.654 39.056 -28.654 39.056 -30.086 39.049 C-32.391 39.037 -34.695 39.021 -37 39 C-36.005 37.002 -35.005 35.01 -33.965 33.035 C-33.626 32.384 -33.287 31.733 -32.938 31.062 C-32.425 30.09 -32.425 30.09 -31.902 29.098 C-29.722 24.028 -29.715 18.622 -29.438 13.188 C-29.373 12.005 -29.373 12.005 -29.307 10.799 C-29.201 8.866 -29.1 6.933 -29 5 C-18.958 1.513 -10.682 -0.32 0 0 Z " fill="#FAFAFC" transform="translate(322,272)"/>
<path d="M0 0 C5.905 0.33 8.538 2.739 12.562 6.688 C13.389 7.464 13.389 7.464 14.232 8.256 C15.858 9.805 17.436 11.389 19 13 C19.512 13.514 20.023 14.028 20.55 14.557 C23.985 18.26 23.985 18.26 24.047 21.383 C22.612 24.97 20.971 28.418 19.25 31.875 C15.429 39.736 12.532 47.637 10 56 C4.523 55.136 1.453 53.353 -2 49 C-6.07 41.337 -6.364 33.306 -6.438 24.812 C-6.448 23.899 -6.458 22.985 -6.469 22.043 C-6.365 13.981 -5.202 6.386 0 0 Z " fill="#FAFAFC" transform="translate(277,379)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.445 1.539 3.445 1.539 5.125 3.625 C11.058 10.563 17.543 14.672 26 18 C24.274 23.696 20.945 28.38 15.699 31.266 C13.16 32.324 10.633 33.203 8 34 C7.267 34.226 6.533 34.451 5.777 34.684 C-0.933 36.45 -8.918 37.677 -15.473 34.984 C-18.871 32.937 -20.772 31.341 -23 28 C-23.541 23.288 -23.613 21.072 -21.25 16.938 C-17.806 13.286 -13.236 11.209 -8.887 8.812 C-5.016 6.382 -2.782 3.587 0 0 Z " fill="#FAFAFB" transform="translate(280,456)"/>
<path d="M0 0 C4.01 1.39 6.9 3.267 10.188 5.938 C11.047 6.627 11.907 7.317 12.793 8.027 C15.241 10.215 16.831 11.892 17.336 15.207 C17.493 25.684 15.145 35.466 9 44 C0.251 43.442 -6.73 38.991 -13 33 C-19.079 25.865 -19.079 25.865 -20 21 C-19.264 20.636 -18.528 20.273 -17.77 19.898 C-9.795 15.79 -5.229 12.035 -1 4 C-0.304 1.809 -0.304 1.809 0 0 Z " fill="#FBFBFC" transform="translate(275,266)"/>
<path d="M0 0 C3.46 1.678 4.48 4.457 5.961 7.82 C6.247 8.433 6.533 9.046 6.828 9.678 C7.674 11.491 8.505 13.312 9.336 15.133 C10.214 16.751 10.214 16.751 11.109 18.402 C12.336 21.133 12.336 21.133 11.336 24.133 C9.77 25.676 9.77 25.676 7.773 27.32 C3.386 31.033 -0.651 35.023 -4.664 39.133 C-7.24 36.613 -9.619 34.032 -11.914 31.258 C-16.031 26.511 -20.626 22.145 -26.664 20.133 C-23.166 12.024 -9.083 0.453 0 0 Z " fill="#FBFCFC" transform="translate(313.6640625,351.8671875)"/>
<path d="M0 0 C2.898 0.207 2.898 0.207 6.375 0.812 C8.088 1.101 8.088 1.101 9.836 1.395 C10.88 1.594 11.924 1.794 13 2 C13.763 2.117 14.526 2.235 15.312 2.355 C17 3 17 3 18.625 6.5 C19.306 8.233 19.306 8.233 20 10 C23.2 11.6 26.527 11.496 30 11 C33.476 8.53 34.515 5.894 36 2 C46.986 4.192 56.926 9.279 67 14 C66.337 17.543 65.453 20.536 63.938 23.812 C63.575 24.603 63.213 25.393 62.84 26.207 C62.424 27.095 62.424 27.095 62 28 C58.081 26.768 54.351 25.303 50.596 23.639 C29.603 14.459 7.723 10.903 -15 10 C-14.67 8.35 -14.34 6.7 -14 5 C-12.948 5.062 -11.896 5.124 -10.812 5.188 C-5.862 4.944 -3.444 3.444 0 0 Z " fill="#B1C5D8" transform="translate(331,332)"/>
<path d="M0 0 C-0.364 0.534 -0.727 1.067 -1.102 1.617 C-4.506 6.662 -7.716 11.785 -10.801 17.031 C-12 19 -12 19 -13 20 C-14.691 19.935 -16.379 19.796 -18.062 19.625 C-19.064 19.526 -20.066 19.426 -21.098 19.324 C-23.407 19.066 -25.7 18.767 -28 18.438 C-38.882 17.038 -50.698 16.731 -60 23 C-59.567 15.632 -57.541 8.499 -54 2 C-50.387 0.596 -47.905 1.495 -44.239 2.502 C-40.305 3.377 -36.388 3.294 -32.375 3.25 C-31.503 3.245 -30.632 3.239 -29.734 3.234 C-21.302 3.111 -12.763 2.656 -4.742 -0.133 C-2 -1 -2 -1 0 0 Z " fill="#FAFCFB" transform="translate(388,265)"/>
<path d="M0 0 C2.375 0 2.375 0 5 1 C7.955 4.366 8.95 6.383 9.312 10.875 C9.739 15.335 11.51 17.936 14.551 21.168 C18.835 24.373 26.525 28 32 28 C32.927 30.78 33.696 33.119 34 36 C31.708 40.038 27.639 41.2 23.363 42.445 C19.452 43.363 17.058 43.644 13 43 C6.618 38.902 2.547 33.866 0.832 26.453 C0.482 24.721 0.143 22.986 -0.188 21.25 C-0.365 20.394 -0.542 19.538 -0.725 18.656 C-1.832 13.012 -2.344 7.753 -2 2 C-1.34 1.34 -0.68 0.68 0 0 Z M32 27 C34 28 34 28 34 28 Z " fill="#FAFBFB" transform="translate(431,169)"/>
<path d="M0 0 C2.625 0.375 2.625 0.375 5 1 C5.374 4.83 5.663 8.662 5.938 12.5 C6.044 13.578 6.15 14.655 6.26 15.766 C6.628 21.524 6.579 25.137 2.754 29.656 C-0.463 32.888 -3.389 34.685 -7.875 35.562 C-12.588 34.714 -14.324 31.782 -17 28 C-17.681 26.969 -18.361 25.938 -19.062 24.875 C-20.927 21.863 -20.927 21.863 -23.812 19.438 C-24.534 18.633 -25.256 17.829 -26 17 C-25.812 14.188 -25.812 14.188 -25 12 C-21.644 12.599 -19.622 13.846 -17 16 C-18.268 14.639 -18.268 14.639 -19.562 13.25 C-22.026 10.33 -22.026 10.33 -21.812 7.625 C-21.544 7.089 -21.276 6.553 -21 6 C-19.35 6.33 -17.7 6.66 -16 7 C-16 5.02 -16 3.04 -16 1 C-13.695 1.188 -13.695 1.188 -11 2 C-9.305 4.25 -9.305 4.25 -7.875 7 C-5.933 11.108 -5.933 11.108 -2 13 C-2.023 12.229 -2.046 11.458 -2.07 10.664 C-2.088 9.661 -2.106 8.658 -2.125 7.625 C-2.148 6.627 -2.171 5.63 -2.195 4.602 C-2 2 -2 2 0 0 Z " fill="#F9F9FA" transform="translate(259,240)"/>
<path d="M0 0 C3.63 0 7.26 0 11 0 C9.352 5.577 9.352 5.577 7.438 7.875 C5.257 11.098 5.321 14.15 5 18 C4.01 18.33 3.02 18.66 2 19 C1.856 19.598 1.711 20.196 1.562 20.812 C0.766 23.91 -0.526 24.97 -3 27 C-4.22 27.582 -5.45 28.143 -6.688 28.688 C-10.338 30.394 -12.716 32.533 -15.5 35.438 C-20.397 40.528 -24.981 45.198 -32.375 45.438 C-36 45 -36 45 -38 43 C-36.695 42.459 -36.695 42.459 -35.363 41.906 C-31.351 39.632 -29.06 37.038 -26.188 33.5 C-25.667 32.876 -25.146 32.251 -24.61 31.608 C-23.063 29.747 -21.53 27.875 -20 26 C-19.199 25.028 -18.399 24.056 -17.574 23.055 C-16.125 21.288 -14.68 19.518 -13.242 17.742 C-11.597 15.731 -9.939 13.738 -8.258 11.758 C-7.569 10.943 -7.569 10.943 -6.866 10.112 C-5.57 8.582 -4.269 7.057 -2.969 5.531 C-0.845 3.091 -0.845 3.091 0 0 Z " fill="#C4E0E9" transform="translate(428,263)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C6.658 16.546 -1.723 30.158 -11.062 40.812 C-12.692 42.557 -14.34 44.284 -16 46 C-16.552 46.573 -17.104 47.145 -17.673 47.735 C-19.502 49.624 -21.342 51.502 -23.188 53.375 C-24.061 54.268 -24.061 54.268 -24.951 55.179 C-28.407 58.64 -31.834 61.433 -36 64 C-37.906 56.568 -37.906 56.568 -35.915 53.122 C-34.24 51.326 -32.489 49.724 -30.625 48.125 C-29.318 46.914 -28.015 45.699 -26.715 44.48 C-26.075 43.891 -25.436 43.301 -24.777 42.693 C-14.626 33.021 -3.302 18.542 -0.812 4.562 C-0.575 3.265 -0.575 3.265 -0.332 1.941 C-0.222 1.301 -0.113 0.66 0 0 Z " fill="#C2DDE8" transform="translate(384,358)"/>
<path d="M0 0 C0.909 0.398 0.909 0.398 1.836 0.805 C13.101 5.554 23.929 6.431 36 7 C36 7.33 36 7.66 36 8 C31.545 8.495 31.545 8.495 27 9 C27.99 9.66 28.98 10.32 30 11 C29.67 11.66 29.34 12.32 29 13 C29.66 12.67 30.32 12.34 31 12 C36.538 11.769 36.538 11.769 39 13 C38.67 13.66 38.34 14.32 38 15 C36.762 14.918 35.525 14.835 34.25 14.75 C31.062 14.744 30.288 14.774 27.688 16.812 C26.043 18.886 26.043 18.886 24.875 20.719 C23 22 23 22 19.426 21.637 C18.051 21.338 16.68 21.021 15.312 20.688 C14.611 20.531 13.909 20.374 13.186 20.213 C11.453 19.824 9.726 19.414 8 19 C7.805 16.949 7.609 14.898 7.414 12.848 C7.277 12.238 7.141 11.628 7 11 C6.34 10.67 5.68 10.34 5 10 C5.087 10.888 5.087 10.888 5.176 11.793 C5.424 16.136 5.402 18.372 3 22.125 C-0.145 24.091 -0.769 24.251 -4.25 23.875 C-8 23 -8 23 -9 22 C-9.385 18.727 -9.657 16.128 -7.953 13.203 C-6.625 11.562 -6.625 11.562 -4 9 C-3.34 9 -2.68 9 -2 9 C-1.34 6.03 -0.68 3.06 0 0 Z " fill="#F9FAFB" transform="translate(324,312)"/>
<path d="M0 0 C1.33 0.1 2.658 0.224 3.984 0.367 C5.036 0.459 5.036 0.459 6.108 0.553 C8.32 0.757 10.526 0.995 12.734 1.242 C13.816 1.356 13.816 1.356 14.919 1.471 C27.284 2.791 27.284 2.791 29.734 5.242 C30.368 13.099 29.585 21.96 25.125 28.66 C21.587 31.002 18.665 30.025 14.734 29.242 C13.137 29.018 11.537 28.802 9.938 28.594 C8.286 28.353 6.635 28.111 4.984 27.867 C4.148 27.754 3.311 27.64 2.449 27.523 C-5.66 26.308 -5.66 26.308 -8.266 23.242 C-8.656 20.98 -8.656 20.98 -8.516 18.555 C-8.48 17.746 -8.443 16.938 -8.406 16.105 C-8.36 15.491 -8.313 14.876 -8.266 14.242 C-7.399 14.696 -6.533 15.15 -5.641 15.617 C3.418 19.486 14.029 19.599 23.734 19.242 C25.48 16.026 25.939 13.922 25.734 10.242 C20.902 8.76 16.263 7.772 11.234 7.117 C9.363 6.866 9.363 6.866 7.453 6.609 C3.852 6.254 0.351 6.177 -3.266 6.242 C-4.256 8.552 -5.246 10.862 -6.266 13.242 C-6.596 13.242 -6.926 13.242 -7.266 13.242 C-7.178 11.824 -7.07 10.408 -6.953 8.992 C-6.895 8.203 -6.837 7.414 -6.777 6.602 C-5.806 2.121 -4.732 0.351 0 0 Z " fill="#F2F9F9" transform="translate(333.265625,287.7578125)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.413 1.052 2.825 2.104 3.25 3.188 C6.903 11.515 12.711 14.42 20.562 18.25 C24.017 19.313 27.405 19.634 31 20 C30.373 24.261 29.132 28.868 26 32 C16.241 33.046 10.285 30.78 2.75 24.812 C-1.247 21.138 -3.622 17.261 -5 12 C-5 7.005 -3.054 3.887 0 0 Z " fill="#B4C5D7" transform="translate(430,198)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.656 1.715 3.656 1.715 5.5 3.938 C7.889 6.92 7.889 6.92 11 9 C9.021 15.748 6.712 22.475 1 27 C-1.523 27.363 -1.523 27.363 -4.375 27.312 C-5.311 27.309 -6.247 27.305 -7.211 27.301 C-10.187 26.98 -12.34 26.366 -15 25 C-17.705 20.943 -17.632 17.759 -17 13 C-14.471 7.821 -9.407 5.845 -4.461 3.332 C-1.915 2.105 -1.915 2.105 0 0 Z " fill="#F9FAFB" transform="translate(274,434)"/>
<path d="M0 0 C0.808 0.111 1.616 0.222 2.449 0.336 C3.372 0.479 3.372 0.479 4.312 0.625 C5.392 3.375 5.363 4.483 4.352 7.316 C3.885 8.264 3.418 9.211 2.938 10.188 C-0.065 16.369 -2.118 21.834 -0.074 28.68 C2.841 35.28 7.877 40.012 14.375 43.062 C17.786 43.716 20.845 43.814 24.312 43.625 C25.119 43.602 25.926 43.579 26.758 43.555 C30.639 42.142 31.828 39.051 33.625 35.562 C33.984 34.899 34.343 34.236 34.713 33.553 C35.595 31.918 36.456 30.273 37.312 28.625 C38.312 31.625 38.312 31.625 37.344 33.613 C36.838 34.38 36.333 35.147 35.812 35.938 C32.385 41.346 29.658 46.94 26.926 52.719 C25.312 55.625 25.312 55.625 22.312 57.625 C23.879 53.317 25.996 49.563 28.312 45.625 C26.971 45.729 26.971 45.729 25.602 45.836 C16.858 46.227 11.037 45.434 4.312 39.625 C-0.561 34.69 -2.184 30.292 -3.688 23.625 C-4.209 24.366 -4.209 24.366 -4.741 25.122 C-6.327 27.373 -7.913 29.624 -9.5 31.875 C-10.321 33.041 -10.321 33.041 -11.158 34.23 C-11.69 34.985 -12.222 35.739 -12.77 36.516 C-13.5 37.553 -13.5 37.553 -14.245 38.61 C-15.697 40.638 -17.184 42.636 -18.688 44.625 C-19.348 44.295 -20.007 43.965 -20.688 43.625 C-19.417 41.875 -18.146 40.125 -16.875 38.375 C-15.813 36.913 -15.813 36.913 -14.73 35.422 C-13.488 33.721 -12.222 32.037 -10.914 30.387 C-9.468 28.715 -9.468 28.715 -9.875 26.688 C-10.667 24.587 -10.667 24.587 -11.75 22.5 C-13.401 17.436 -13.815 12.241 -11.672 7.27 C-8.631 2.241 -6.269 -0.909 0 0 Z " fill="#3E618B" transform="translate(410.6875,217.375)"/>
<path d="M0 0 C11.48 4.332 22.255 13.091 29.355 23.098 C31.212 27.273 31.091 31.803 30.312 36.25 C29.653 36.91 28.993 37.57 28.312 38.25 C27.322 38.25 26.332 38.25 25.312 38.25 C24.838 37.136 24.364 36.022 23.875 34.875 C17.513 22.262 4.781 12.377 -7.688 6.25 C-3.582 0.333 -3.582 0.333 0 0 Z " fill="#B1C6D9" transform="translate(315.6875,387.75)"/>
<path d="M0 0 C4 6 4 6 3.752 7.978 C2.502 11.338 0.424 14.152 -1.625 17.062 C-2.246 17.999 -2.246 17.999 -2.879 18.955 C-7.918 26.131 -14.909 27.519 -23.237 29.069 C-38.225 31.57 -55.628 31.924 -69 24 C-69.33 23.34 -69.66 22.68 -70 22 C-68.592 22.238 -68.592 22.238 -67.156 22.48 C-53.034 24.476 -36.752 24.509 -23.789 17.867 C-22 17 -22 17 -19 17 C-19 17.66 -19 18.32 -19 19 C-20.454 19.681 -20.454 19.681 -21.938 20.375 C-25.071 21.658 -25.071 21.658 -26 24 C-19.38 24.72 -14.426 22.832 -9 19 C-3.897 13.577 -1.697 7.131 0 0 Z " fill="#EFF2F5" transform="translate(398,237)"/>
<path d="M0 0 C26.532 1.532 26.532 1.532 30 5 C30.047 6.875 30.047 6.875 29.75 9 C29.662 9.701 29.575 10.402 29.484 11.125 C29 13 29 13 27 15 C20.236 16.033 13.198 14.735 6.5 13.688 C5.71 13.57 4.921 13.452 4.107 13.331 C0.059 12.648 -2.294 12.094 -5 9 C-3.846 5.538 -2.062 2.993 0 0 Z " fill="#69C3DF" transform="translate(330,293)"/>
<path d="M0 0 C0.619 0.639 1.238 1.279 1.875 1.938 C2.915 2.96 3.957 3.981 5 5 C5.682 5.69 6.364 6.379 7.066 7.09 C13.709 13.492 20.68 17.272 29 21 C27.721 23.854 26.526 26.098 24 28 C15.707 28.441 8.703 22.225 2.848 17.125 C-2.561 11.993 -2.561 11.993 -3 8 C-2.441 5.859 -2.441 5.859 -1.562 3.75 C-1.275 3.044 -0.988 2.337 -0.691 1.609 C-0.463 1.078 -0.235 0.547 0 0 Z " fill="#B2C6DB" transform="translate(285,445)"/>
<path d="M0 0 C-1.98 2.97 -3.96 5.94 -6 9 C-6.495 7.02 -6.495 7.02 -7 5 C-8.814 5.281 -10.626 5.575 -12.438 5.875 C-13.447 6.037 -14.456 6.2 -15.496 6.367 C-16.322 6.576 -17.149 6.785 -18 7 C-18.33 7.66 -18.66 8.32 -19 9 C-19.66 9 -20.32 9 -21 9 C-21.33 9.99 -21.66 10.98 -22 12 C-25.96 12 -29.92 12 -34 12 C-34.33 12.99 -34.66 13.98 -35 15 C-36.65 15 -38.3 15 -40 15 C-39.67 14.01 -39.34 13.02 -39 12 C-38.34 12 -37.68 12 -37 12 C-37 11.01 -37 10.02 -37 9 C-37.804 9.021 -38.609 9.041 -39.438 9.062 C-42 9 -42 9 -43 8 C-43.99 9.32 -44.98 10.64 -46 12 C-47.65 11.67 -49.3 11.34 -51 11 C-51.33 9.35 -51.66 7.7 -52 6 C-49.812 3.938 -49.812 3.938 -47 2 C-45.326 2.295 -43.661 2.639 -42 3 C-38.855 3.188 -35.713 3.19 -32.562 3.188 C-31.677 3.187 -30.792 3.186 -29.88 3.185 C-21.386 3.107 -12.827 2.678 -4.742 -0.133 C-2 -1 -2 -1 0 0 Z " fill="#C4E3ED" transform="translate(388,265)"/>
<path d="M0 0 C-0.482 0.641 -0.964 1.281 -1.461 1.941 C-7.644 10.409 -10.129 17.471 -9 28 C-7.804 33.178 -6.214 38.301 -2.438 42.188 C2.424 44.751 6.612 44.766 12 44 C15.556 42.688 15.556 42.688 18 41 C17.34 45.29 16.68 49.58 16 54 C15.67 53.34 15.34 52.68 15 52 C14.348 52.046 13.695 52.093 13.023 52.141 C7.07 52.386 3.637 52.11 -1 48 C-8.045 41.327 -11.078 34.004 -11.573 24.378 C-11.763 15.702 -10.535 9.968 -5 3 C-5 2.67 -5 2.34 -5 2 C-5.864 2.307 -6.727 2.614 -7.617 2.93 C-22.196 7.542 -41.606 8.546 -56 3 C-56 2.34 -56 1.68 -56 1 C-54.94 1.217 -54.94 1.217 -53.859 1.438 C-39.074 4.112 -24.686 3.983 -10.091 0.335 C-6.318 -0.601 -3.72 -1.16 0 0 Z " fill="#3A5B80" transform="translate(391,263)"/>
<path d="M0 0 C3.151 0.332 4.94 0.697 7.562 2.375 C7.032 6.196 6.065 8.437 3.562 11.375 C1.094 10.223 -0.485 9.327 -2.438 7.375 C-2.703 8.111 -2.969 8.847 -3.242 9.605 C-3.772 11.069 -3.772 11.069 -4.312 12.562 C-4.661 13.525 -5.009 14.488 -5.367 15.48 C-6.053 17.334 -6.771 19.176 -7.531 21 C-8.706 24.079 -9.054 27.113 -9.438 30.375 C-7.457 30.045 -5.478 29.715 -3.438 29.375 C-3.108 31.025 -2.777 32.675 -2.438 34.375 C-3.098 34.375 -3.757 34.375 -4.438 34.375 C-4.582 35.138 -4.726 35.901 -4.875 36.688 C-5.438 39.375 -5.438 39.375 -6.438 42.375 C-4.293 49.179 0.623 54.435 5.562 59.375 C4.077 59.87 4.077 59.87 2.562 60.375 C-5.309 53.524 -10.557 44.691 -11.675 34.135 C-12.344 22.157 -11.559 12.443 -4.984 2.086 C-3.438 0.375 -3.438 0.375 0 0 Z " fill="#B4ABA8" transform="translate(324.4375,199.625)"/>
<path d="M0 0 C1.671 0.062 1.671 0.062 3.375 0.125 C-1.932 14.788 -7.751 26.686 -18.625 38.125 C-21.595 37.465 -24.565 36.805 -27.625 36.125 C-26.892 35.404 -26.158 34.684 -25.402 33.941 C-13.177 21.753 -13.177 21.753 -7.625 6.125 C-6.965 5.465 -6.305 4.805 -5.625 4.125 C-5.625 3.465 -5.625 2.805 -5.625 2.125 C-3.625 0.125 -3.625 0.125 0 0 Z " fill="#C4DFE8" transform="translate(335.625,426.875)"/>
<path d="M0 0 C2.475 0.495 2.475 0.495 5 1 C5 5.29 5 9.58 5 14 C4.01 14 3.02 14 2 14 C2 13.01 2 12.02 2 11 C1.01 11 0.02 11 -1 11 C-0.67 12.32 -0.34 13.64 0 15 C-0.66 15 -1.32 15 -2 15 C-2 15.99 -2 16.98 -2 18 C-2.66 18 -3.32 18 -4 18 C-4 18.66 -4 19.32 -4 20 C-5.98 20.66 -7.96 21.32 -10 22 C-10.33 20.35 -10.66 18.7 -11 17 C-12.609 16.66 -12.609 16.66 -14.25 16.312 C-18.403 14.859 -19.837 13.786 -22 10 C-21.75 7.688 -21.75 7.688 -21 6 C-19.35 6.33 -17.7 6.66 -16 7 C-16 5.02 -16 3.04 -16 1 C-13.695 1.188 -13.695 1.188 -11 2 C-9.305 4.25 -9.305 4.25 -7.875 7 C-5.933 11.108 -5.933 11.108 -2 13 C-2.023 12.229 -2.046 11.458 -2.07 10.664 C-2.088 9.661 -2.106 8.658 -2.125 7.625 C-2.148 6.627 -2.171 5.63 -2.195 4.602 C-2 2 -2 2 0 0 Z " fill="#F5F7F8" transform="translate(259,240)"/>
<path d="M0 0 C-13.293 11.57 -29.394 18.481 -47.062 18.125 C-47.928 18.116 -48.794 18.107 -49.686 18.098 C-51.79 18.074 -53.895 18.039 -56 18 C-56 17.67 -56 17.34 -56 17 C-55.036 16.939 -54.072 16.879 -53.078 16.816 C-51.815 16.733 -50.552 16.649 -49.25 16.562 C-47.997 16.481 -46.744 16.4 -45.453 16.316 C-42.817 16.075 -40.52 15.757 -38 15 C-38 14.01 -38 13.02 -38 12 C-37.34 12 -36.68 12 -36 12 C-35.34 9.69 -34.68 7.38 -34 5 C-33.103 4.986 -32.206 4.972 -31.281 4.957 C-23.045 4.642 -15.97 3.419 -8.193 0.64 C-3.276 -1.092 -3.276 -1.092 0 0 Z " fill="#FCAF31" transform="translate(222,187)"/>
<path d="M0 0 C3.3 0 6.6 0 10 0 C9.436 6.734 7.654 12.635 5.438 19 C5.108 19.966 4.779 20.931 4.439 21.926 C3.633 24.286 2.82 26.644 2 29 C-2.117 28.278 -5.305 26.976 -9 25 C-8.567 24.381 -8.134 23.762 -7.688 23.125 C-5.417 18.92 -4.287 14.585 -3 10 C-2.441 8.124 -1.879 6.249 -1.312 4.375 C-0.879 2.931 -0.446 1.488 0 0 Z " fill="#C5E0E9" transform="translate(396,315)"/>
<path d="M0 0 C12.292 7.073 21.211 18.208 25 32 C25.098 34.789 25.098 34.789 25 37 C23.375 36.859 21.75 36.712 20.125 36.562 C19.22 36.481 18.315 36.4 17.383 36.316 C15 36 15 36 13 35 C12.762 33.172 12.762 33.172 12.688 30.75 C11.981 21.967 8.552 12.892 3 6 C2.34 5.67 1.68 5.34 1 5 C0.375 2.438 0.375 2.438 0 0 Z " fill="#C5DFE8" transform="translate(391,182)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.495 5.445 1.495 5.445 2 11 C-0.416 11.814 -2.833 12.627 -5.25 13.438 C-5.932 13.668 -6.614 13.898 -7.316 14.135 C-12.299 15.804 -16.504 17.131 -21.766 17.098 C-22.655 17.094 -23.545 17.091 -24.461 17.088 C-25.381 17.08 -26.302 17.071 -27.25 17.062 C-28.186 17.058 -29.122 17.053 -30.086 17.049 C-32.391 17.037 -34.695 17.021 -37 17 C-36.531 16.069 -36.531 16.069 -36.053 15.12 C-35.092 13.185 -34.217 11.24 -33.375 9.25 C-32.921 8.178 -32.467 7.105 -32 6 C-31.34 7.32 -30.68 8.64 -30 10 C-19.883 9.697 -10.197 8.599 -1 4 C-0.348 1.975 -0.348 1.975 0 0 Z " fill="#C2DDE6" transform="translate(322,294)"/>
<path d="M0 0 C2.851 1.278 5.221 2.379 7 5 C7 10.494 4.387 14.844 1 19 C-2.834 22.401 -6.691 25.589 -11.812 26.5 C-15 26 -15 26 -16.504 24.508 C-20 19.707 -20 19.707 -20 17 C-19.34 17 -18.68 17 -18 17 C-18 17.66 -18 18.32 -18 19 C-11.078 16.797 -5.722 14.494 -2 8 C-1.027 5.304 -0.499 2.841 0 0 Z " fill="#AFC3D7" transform="translate(267,259)"/>
<path d="M0 0 C-0.361 1.048 -0.722 2.096 -1.094 3.176 C-1.563 4.555 -2.031 5.934 -2.5 7.312 C-2.738 8.003 -2.977 8.693 -3.223 9.404 C-4.232 12.389 -5 14.827 -5 18 C-4.531 17.509 -4.062 17.018 -3.578 16.512 C0.282 14.249 3.865 14.679 8.25 14.812 C9.511 14.833 9.511 14.833 10.797 14.854 C12.865 14.889 14.933 14.943 17 15 C17 15.33 17 15.66 17 16 C15.831 16.026 14.662 16.052 13.457 16.078 C11.909 16.134 10.361 16.192 8.812 16.25 C7.659 16.271 7.659 16.271 6.482 16.293 C1.459 16.509 -1.416 17.158 -5 21 C-8.38 27.011 -8.635 34.259 -9 41 C-9.124 40.361 -9.248 39.721 -9.375 39.062 C-9.581 38.382 -9.788 37.701 -10 37 C-10.66 36.67 -11.32 36.34 -12 36 C-11.34 36 -10.68 36 -10 36 C-10.217 35.091 -10.433 34.182 -10.656 33.246 C-12.771 23.698 -15.177 12.532 -12 3 C-10.293 1.797 -10.293 1.797 -8.188 0.75 C-7.5 0.394 -6.813 0.038 -6.105 -0.328 C-3.649 -1.112 -2.4 -0.841 0 0 Z " fill="#426A92" transform="translate(334,269)"/>
<path d="M0 0 C8.86 0.596 15.99 9.76 21.699 15.824 C23 18 23 18 22.957 20.582 C21.823 23.446 20.592 24.411 18 26 C17.618 25.572 17.236 25.144 16.842 24.702 C15.071 22.73 13.286 20.771 11.5 18.812 C10.899 18.139 10.299 17.465 9.68 16.771 C5.545 12.263 1.359 8.953 -4 6 C-2.848 3.532 -1.952 1.952 0 0 Z " fill="#B0C5DB" transform="translate(284,372)"/>
<path d="M0 0 C2.64 0.33 5.28 0.66 8 1 C7.37 5.773 5.42 9.584 3.25 13.812 C2.707 14.876 2.707 14.876 2.153 15.961 C1.113 17.98 0.06 19.992 -1 22 C-1.725 23.381 -1.725 23.381 -2.465 24.789 C-5.251 29.685 -5.251 29.685 -8.375 31 C-9.241 31 -10.108 31 -11 31 C-12.258 31.021 -13.516 31.041 -14.812 31.062 C-15.864 31.042 -16.916 31.021 -18 31 C-17.381 30.938 -16.762 30.876 -16.125 30.812 C-15.424 30.544 -14.723 30.276 -14 30 C-13.287 28.353 -12.629 26.681 -12 25 C-11.083 23.172 -10.141 21.356 -9.18 19.551 C-8.645 18.538 -8.11 17.526 -7.559 16.482 C-6.43 14.357 -5.299 12.232 -4.168 10.107 C-3.636 9.099 -3.103 8.09 -2.555 7.051 C-2.065 6.13 -1.575 5.208 -1.07 4.259 C0.143 2.115 0.143 2.115 0 0 Z " fill="#C2DEE7" transform="translate(446,231)"/>
<path d="M0 0 C3.63 0 7.26 0 11 0 C9.352 5.577 9.352 5.577 7.438 7.875 C5.257 11.098 5.321 14.15 5 18 C4.01 18.33 3.02 18.66 2 19 C1.783 19.897 1.783 19.897 1.562 20.812 C0.772 23.887 -0.548 24.999 -3 27 C-5.298 28.159 -7.592 29.074 -10 30 C-8.422 26.29 -6.093 23.701 -3.375 20.75 C-2.149 19.412 -2.149 19.412 -0.898 18.047 C-0.272 17.371 0.355 16.696 1 16 C-1.581 14.71 -4.26 13.894 -7 13 C-6.67 13.99 -6.34 14.98 -6 16 C-6.598 16.268 -7.196 16.536 -7.812 16.812 C-9.972 17.985 -11.358 19.194 -13 21 C-13.33 20.01 -13.66 19.02 -14 18 C-12.987 16.931 -12.987 16.931 -11.953 15.84 C-7.303 10.847 -3.021 6.18 0 0 Z " fill="#C8E1E9" transform="translate(428,263)"/>
<path d="M0 0 C0 0.33 0 0.66 0 1 C-0.918 1.049 -1.836 1.098 -2.781 1.148 C-16.347 1.561 -16.347 1.561 -27 9 C-28.545 10.456 -30.109 11.892 -31.688 13.312 C-32.454 14.01 -33.221 14.707 -34.012 15.426 C-36 17 -36 17 -38 17 C-38.33 19.64 -38.66 22.28 -39 25 C-38.01 25.33 -37.02 25.66 -36 26 C-39 27 -39 27 -41.043 26.223 C-42.105 25.648 -42.105 25.648 -43.188 25.062 C-43.903 24.682 -44.618 24.302 -45.355 23.91 C-45.898 23.61 -46.441 23.309 -47 23 C-45.434 18.963 -42.558 16.529 -39.375 13.75 C-38.859 13.291 -38.344 12.832 -37.812 12.359 C-36.547 11.234 -35.274 10.116 -34 9 C-34.66 9 -35.32 9 -36 9 C-37.485 6.03 -37.485 6.03 -39 3 C-36.69 3.33 -34.38 3.66 -32 4 C-32 3.34 -32 2.68 -32 2 C-22.429 -2.254 -10.176 -2.524 0 0 Z " fill="#F3F7F9" transform="translate(363,364)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 3.96 1 7.92 1 12 C0.34 10.68 -0.32 9.36 -1 8 C-2.459 8.309 -3.917 8.622 -5.375 8.938 C-6.187 9.112 -6.999 9.286 -7.836 9.465 C-10.029 9.923 -10.029 9.923 -12 11 C-14.164 10.441 -14.164 10.441 -16.625 9.562 C-17.851 9.131 -17.851 9.131 -19.102 8.691 C-19.728 8.463 -20.355 8.235 -21 8 C-20.34 8.33 -19.68 8.66 -19 9 C-19 10.32 -19 11.64 -19 13 C-28.756 12.429 -38.331 11.395 -48 10 C-44.645 5.208 -44.645 5.208 -41.809 4.293 C-41.026 4.258 -40.244 4.223 -39.438 4.188 C-38.554 4.144 -37.671 4.1 -36.762 4.055 C-35.85 4.037 -34.939 4.019 -34 4 C-33.14 3.961 -32.28 3.923 -31.395 3.883 C-24.856 3.709 -18.612 4.514 -12.164 5.562 C-8.087 6.136 -8.087 6.136 -4 6 C-1.718 3.077 -1.718 3.077 0 0 Z " fill="#7FCCE4" transform="translate(379,278)"/>
<path d="M0 0 C2.188 0.375 2.188 0.375 3.188 1.375 C3.512 3.656 3.512 3.656 3.188 6.375 C1.395 8.656 1.395 8.656 -1 10.875 C-1.825 11.66 -2.65 12.445 -3.5 13.254 C-5.162 14.778 -6.829 16.297 -8.5 17.812 C-10.706 20.257 -12.124 22.53 -13.75 25.375 C-16.63 30.368 -19.572 33.755 -24.812 36.375 C-26.476 36.496 -28.145 36.55 -29.812 36.562 C-30.699 36.577 -31.586 36.591 -32.5 36.605 C-34.812 36.375 -34.812 36.375 -36.812 34.375 C-35.92 34.182 -35.028 33.988 -34.109 33.789 C-32.939 33.529 -31.768 33.268 -30.562 33 C-29.402 32.745 -28.242 32.49 -27.047 32.227 C-21.278 30.708 -19.398 29.245 -16.312 24.062 C-14.031 20.262 -11.646 16.787 -8.812 13.375 C-10.447 11.667 -11.682 10.44 -13.812 9.375 C-12.812 7.375 -12.812 7.375 -11.125 6.562 C-8.551 5.364 -8.551 5.364 -5.875 2.75 C-2.812 0.375 -2.812 0.375 0 0 Z " fill="#FAFAFB" transform="translate(482.8125,177.625)"/>
<path d="M0 0 C0.701 0.171 1.402 0.343 2.125 0.52 C4 1.188 4 1.188 6 3.188 C6.453 7.189 6.375 9.498 4.438 13.062 C1.222 15.865 -0.754 16.339 -5 16.188 C-7.569 13.889 -8.701 11.916 -10 8.75 C-10 4.982 -8.296 3.074 -6 0.188 C-3.5 -1.063 -2.661 -0.68 0 0 Z " fill="#6A82AE" transform="translate(358,326.8125)"/>
<path d="M0 0 C6.39 2.411 12.457 5.461 16.312 11.25 C15.322 11.91 14.332 12.57 13.312 13.25 C12.589 15.309 12.589 15.309 12.312 17.25 C7.593 16.955 4.95 14.631 1.383 11.816 C-1.493 9.641 -4.52 7.966 -7.688 6.25 C-3.582 0.333 -3.582 0.333 0 0 Z " fill="#B3C6DB" transform="translate(315.6875,387.75)"/>
<path d="M0 0 C0.495 0.33 0.99 0.66 1.5 1 C5.091 2.436 8.145 2.129 12 2 C11.959 3.237 11.918 4.475 11.875 5.75 C11.863 9.016 12.143 11.215 14 14 C11.69 14 9.38 14 7 14 C6.34 15.65 5.68 17.3 5 19 C4.01 19 3.02 19 2 19 C1.794 18.216 1.587 17.433 1.375 16.625 C0.193 13.691 0.193 13.691 -3.125 12.688 C-4.548 12.347 -4.548 12.347 -6 12 C-5.67 11.01 -5.34 10.02 -5 9 C-2.438 7.812 -2.438 7.812 0 7 C0 4.69 0 2.38 0 0 Z " fill="#FD621C" transform="translate(52,532)"/>
<path d="M0 0 C4 6 4 6 3.752 7.978 C2.502 11.338 0.424 14.152 -1.625 17.062 C-2.246 17.999 -2.246 17.999 -2.879 18.955 C-7.921 26.135 -14.893 27.488 -23.213 29.073 C-32.081 30.58 -41.041 30.248 -50 30 C-50 29.67 -50 29.34 -50 29 C-48.733 28.879 -47.466 28.758 -46.16 28.633 C-44.461 28.464 -42.762 28.295 -41.062 28.125 C-40.232 28.046 -39.401 27.968 -38.545 27.887 C-28.393 26.86 -17.211 25.305 -9.125 18.625 C-4.295 12.658 -1.923 7.37 0 0 Z " fill="#C0DEEA" transform="translate(398,237)"/>
<path d="M0 0 C0.5 2 0.5 2 1 4 C1.278 4.928 1.278 4.928 1.562 5.875 C2.375 9.822 2.272 13.185 1 17 C1.66 17.33 2.32 17.66 3 18 C3 18.66 3 19.32 3 20 C2.34 20.33 1.68 20.66 1 21 C1.035 21.615 1.07 22.23 1.105 22.863 C1.133 23.672 1.16 24.48 1.188 25.312 C1.222 26.113 1.257 26.914 1.293 27.738 C0.931 30.533 0.004 31.119 -2 33 C-2.73 36.61 -2.73 36.61 -3 40 C-2.34 40 -1.68 40 -1 40 C0.158 43.473 0.069 46.361 0 50 C0.66 50.33 1.32 50.66 2 51 C1.67 51.66 1.34 52.32 1 53 C1.66 53.33 2.32 53.66 3 54 C2.34 54.99 1.68 55.98 1 57 C-6.901 41.198 -7.254 21.654 -2 5 C-1.354 3.325 -0.694 1.656 0 0 Z " fill="#FCAF37" transform="translate(112,109)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C3.97 3.495 3.97 3.495 7 4 C7.47 8.799 7.66 11.968 5 16.125 C1.855 18.091 1.231 18.251 -2.25 17.875 C-6 17 -6 17 -7 16 C-7.385 12.727 -7.657 10.128 -5.953 7.203 C-4.625 5.562 -4.625 5.562 -2 3 C-1.34 3 -0.68 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#7B91B5" transform="translate(322,318)"/>
<path d="M0 0 C2.125 0.375 2.125 0.375 4 1 C3.01 2.176 3.01 2.176 2 3.375 C-0.202 5.715 -0.202 5.715 0 8 C1.145 6.515 1.145 6.515 2.312 5 C3.613 3.312 3.613 3.312 5 2 C5.99 2 6.98 2 8 2 C7.714 2.695 7.428 3.39 7.133 4.105 C5.943 7.146 4.897 10.211 3.875 13.312 C3.522 14.381 3.169 15.45 2.805 16.551 C2.406 17.763 2.406 17.763 2 19 C1.34 19 0.68 19 0 19 C-0.33 18.01 -0.66 17.02 -1 16 C-1 18.31 -1 20.62 -1 23 C-1.99 23 -2.98 23 -4 23 C-6.805 18.221 -6.656 13.396 -6 8 C-4.633 4.73 -2.498 2.498 0 0 Z " fill="#E5EEF4" transform="translate(406,219)"/>
<path d="M0 0 C7.062 0.255 12.188 0.83 18 5 C21.131 11.262 18.616 19.794 17.145 26.238 C15.635 29.88 14.178 31.642 11 34 C8.039 34.698 5.217 34.663 2.188 34.562 C1.357 34.549 0.526 34.535 -0.33 34.521 C-9.188 34.219 -19.498 33.001 -27 28 C-27.66 28.66 -28.32 29.32 -29 30 C-29 28.68 -29 27.36 -29 26 C-26.595 26.577 -24.238 27.228 -21.867 27.938 C-12.137 30.72 1.288 34.487 11.156 31.305 C13.737 29.478 13.962 27.852 14.688 24.812 C14.925 23.833 15.162 22.853 15.406 21.844 C16.091 18.562 16.63 15.331 17 12 C16.01 11.67 15.02 11.34 14 11 C15.32 11 16.64 11 18 11 C16.98 7.227 16.341 6.198 12.875 4.188 C11.926 3.796 10.978 3.404 10 3 C10.495 5.475 10.495 5.475 11 8 C10.01 7.34 9.02 6.68 8 6 C8 4.68 8 3.36 8 2 C5.36 1.67 2.72 1.34 0 1 C0 0.67 0 0.34 0 0 Z " fill="#34799D" transform="translate(352,285)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C4.258 7.749 0.906 12.429 -4.406 15.301 C-8.857 17.144 -13.186 18.493 -18 19 C-16.001 14.474 -13.017 11.806 -9 9 C-7.004 8.322 -5.005 7.653 -3 7 C-1.608 5.133 -1.608 5.133 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z " fill="#C5DDE8" transform="translate(300,472)"/>
<path d="M0 0 C2.31 0.66 4.62 1.32 7 2 C3.824 9.046 -2.907 14.985 -10 18 C-12.925 18.495 -14.998 18.362 -18 18 C-18.66 17.34 -19.32 16.68 -20 16 C-17.333 14.667 -14.667 13.333 -12 12 C-11.01 12.33 -10.02 12.66 -9 13 C-8.752 12.257 -8.505 11.515 -8.25 10.75 C-6.613 7.149 -4.556 4.778 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z " fill="#BEDCE7" transform="translate(410,290)"/>
<path d="M0 0 C0.99 0.66 1.98 1.32 3 2 C5.057 2.241 5.057 2.241 7.188 2.125 C8.446 2.084 9.704 2.043 11 2 C10.967 3.986 10.935 5.971 10.902 7.957 C10.917 10.203 10.917 10.203 12 13 C10.608 13.124 10.608 13.124 9.188 13.25 C5.915 13.703 5.915 13.703 4.125 16.062 C3.754 16.702 3.382 17.341 3 18 C2.608 17.216 2.216 16.433 1.812 15.625 C-0.243 12.648 -1.597 12.012 -5 11 C-5 10.34 -5 9.68 -5 9 C-4.041 8.722 -4.041 8.722 -3.062 8.438 C-0.579 7.058 -0.579 7.058 -0.25 3.375 C-0.167 2.261 -0.085 1.147 0 0 Z " fill="#F06326" transform="translate(168,393)"/>
<path d="M0 0 C-5.19 3.46 -8.76 4.273 -15 4.438 C-21.499 4.699 -27.404 5.552 -33.68 7.379 C-36 8 -36 8 -39 8 C-28.294 -2.417 -14.011 -2.672 0 0 Z " fill="#3A4B83" transform="translate(362,190)"/>
<path d="M0 0 C3 1 3 1 4.438 3.812 C4.953 4.864 5.469 5.916 6 7 C8.062 9.314 8.062 9.314 10 11 C9.446 11.242 8.891 11.485 8.32 11.734 C7.596 12.07 6.871 12.405 6.125 12.75 C5.406 13.075 4.686 13.4 3.945 13.734 C1.663 15.219 0.996 16.504 0 19 C-0.66 19 -1.32 19 -2 19 C-2.227 17.907 -2.454 16.814 -2.688 15.688 C-4.179 11.497 -5.164 10.918 -9 9 C-9 8.34 -9 7.68 -9 7 C-7.886 6.773 -6.773 6.546 -5.625 6.312 C-1.84 5.394 -1.84 5.394 -0.562 2.375 C-0.377 1.591 -0.191 0.808 0 0 Z " fill="#ADCB28" transform="translate(529,116)"/>
<path d="M0 0 C0.671 0.632 0.671 0.632 1.355 1.277 C5.984 5.538 5.984 5.538 12 7 C12 7.66 12 8.32 12 9 C10.824 9.866 10.824 9.866 9.625 10.75 C6.602 13.341 5.951 15.197 5 19 C4.319 18.216 3.639 17.433 2.938 16.625 C-0.513 13.541 -2.566 12.956 -7 12 C-7 11.34 -7 10.68 -7 10 C-6.216 9.608 -5.433 9.216 -4.625 8.812 C-1.096 6.375 -0.85 4.094 0 0 Z " fill="#B2CE2A" transform="translate(85,282)"/>
<path d="M0 0 C5.72 5.72 6.3 18.243 6.5 26 C6.146 38.453 2.721 49.933 -3 61 C-3.33 61 -3.66 61 -4 61 C-4 58.03 -4 55.06 -4 52 C-2.02 51.505 -2.02 51.505 0 51 C0.33 48.36 0.66 45.72 1 43 C0.01 42.67 -0.98 42.34 -2 42 C-2 41.34 -2 40.68 -2 40 C-0.35 40 1.3 40 3 40 C3.33 32.08 3.66 24.16 4 16 C3.34 16 2.68 16 2 16 C0.375 13.5 0.375 13.5 -1 11 C-0.67 10.67 -0.34 10.34 0 10 C0.072 8.314 0.084 6.625 0.062 4.938 C0.049 3.559 0.049 3.559 0.035 2.152 C0.024 1.442 0.012 0.732 0 0 Z " fill="#D8C249" transform="translate(238,110)"/>
<path d="M0 0 C0.625 1.625 0.625 1.625 1 4 C0.546 4.908 0.092 5.815 -0.375 6.75 C-1.338 9.878 -1.338 9.878 0.07 11.918 C6.144 19.221 13.648 25.246 23.188 26.711 C25 27 25 27 27 28 C27 30 27 30 25 32.125 C24.01 33.053 24.01 33.053 23 34 C23.33 34.99 23.66 35.98 24 37 C23.01 37 22.02 37 21 37 C20.897 37.763 20.794 38.526 20.688 39.312 C19.953 42.184 19.328 43.23 17 45 C16.34 45 15.68 45 15 45 C15 44.01 15 43.02 15 42 C12.525 42.495 12.525 42.495 10 43 C10.701 42.505 11.402 42.01 12.125 41.5 C16.15 38 19.603 33.795 22 29 C21.273 28.887 20.546 28.773 19.797 28.656 C11 26.592 3.627 19.796 -2 13 C-2 12.34 -2 11.68 -2 11 C-2.66 11 -3.32 11 -4 11 C-3.523 9.541 -3.043 8.083 -2.562 6.625 C-2.296 5.813 -2.029 5.001 -1.754 4.164 C-1 2 -1 2 0 0 Z " fill="#243668" transform="translate(284,445)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.392 0.928 2.784 1.856 3.188 2.812 C5.128 6.226 6.53 7.312 10 9 C7.451 11.932 7.451 11.932 4.938 12.312 C4.298 12.539 3.659 12.766 3 13 C1.695 15.996 1.695 15.996 1 19 C0.34 19 -0.32 19 -1 19 C-1.413 17.886 -1.825 16.773 -2.25 15.625 C-3.355 13.007 -3.749 12.165 -6.188 10.562 C-6.786 10.377 -7.384 10.191 -8 10 C-7.67 9.01 -7.34 8.02 -7 7 C-6.381 6.711 -5.763 6.423 -5.125 6.125 C-2.332 4.646 -1.556 2.688 0 0 Z " fill="#ADCB28" transform="translate(528,505)"/>
<path d="M0 0 C1.671 0.062 1.671 0.062 3.375 0.125 C2.502 2.76 1.603 5.38 0.688 8 C0.443 8.746 0.199 9.493 -0.053 10.262 C-2.023 15.798 -2.023 15.798 -5.156 17.5 C-5.971 17.706 -6.786 17.913 -7.625 18.125 C-9.328 19.412 -11.004 20.736 -12.625 22.125 C-13.285 21.795 -13.945 21.465 -14.625 21.125 C-14.12 20.294 -13.614 19.462 -13.094 18.605 C-12.444 17.519 -11.794 16.432 -11.125 15.312 C-10.475 14.234 -9.826 13.155 -9.156 12.043 C-7.393 9.231 -7.393 9.231 -7.625 6.125 C-6.965 5.465 -6.305 4.805 -5.625 4.125 C-5.625 3.465 -5.625 2.805 -5.625 2.125 C-3.625 0.125 -3.625 0.125 0 0 Z " fill="#C8E1EA" transform="translate(335.625,426.875)"/>
<path d="M0 0 C7.92 0.33 15.84 0.66 24 1 C24 1.99 24 2.98 24 4 C23.34 4 22.68 4 22 4 C21.67 4.99 21.34 5.98 21 7 C17.04 7 13.08 7 9 7 C8.67 7.99 8.34 8.98 8 10 C6.35 10 4.7 10 3 10 C3.33 9.01 3.66 8.02 4 7 C4.66 7 5.32 7 6 7 C6 6.01 6 5.02 6 4 C4.35 4 2.7 4 1 4 C0.67 2.68 0.34 1.36 0 0 Z " fill="#F5FAFB" transform="translate(345,270)"/>
<path d="M0 0 C2.933 0.533 4.951 1.033 7.438 2.625 C6.907 6.446 5.94 8.687 3.438 11.625 C0.969 10.473 -0.61 9.577 -2.562 7.625 C-3.553 9.935 -4.543 12.245 -5.562 14.625 C-6.882 14.295 -8.202 13.965 -9.562 13.625 C-8.987 7.49 -6.36 1.116 0 0 Z " fill="#B0A8AB" transform="translate(324.5625,199.375)"/>
<path d="M0 0 C0.577 0.763 1.155 1.526 1.75 2.312 C3.717 4.662 5.485 6.293 8 8 C7.526 8.392 7.051 8.784 6.562 9.188 C4.648 11.408 4.387 13.134 4 16 C3.092 15.814 2.185 15.629 1.25 15.438 C-1.683 15.043 -3.264 15.053 -6 16 C-5.959 14.928 -5.918 13.855 -5.875 12.75 C-5.989 9.343 -6.213 7.793 -8 5 C-7.051 4.732 -6.102 4.464 -5.125 4.188 C-1.747 3.25 -1.747 3.25 0 0 Z " fill="#F25D2A" transform="translate(538,185)"/>
<path d="M0 0 C1.675 0.286 3.344 0.618 5 1 C6.242 5.273 5.691 7.715 4.062 11.812 C3.682 12.788 3.302 13.764 2.91 14.77 C2.61 15.506 2.309 16.242 2 17 C1.01 16.01 0.02 15.02 -1 14 C-1.928 14.99 -1.928 14.99 -2.875 16 C-5 18 -5 18 -7 18 C-5.928 11.906 -4.562 4.562 0 0 Z " fill="#F8F9FA" transform="translate(456,154)"/>
<path d="M0 0 C1.128 3.383 0.818 4.768 0.062 8.188 C-0.132 9.089 -0.327 9.99 -0.527 10.918 C-0.683 11.605 -0.839 12.292 -1 13 C-1.33 12.34 -1.66 11.68 -2 11 C-2.652 11.046 -3.305 11.093 -3.977 11.141 C-9.91 11.386 -13.359 11.089 -18 7 C-20.375 4.25 -20.375 4.25 -22 2 C-21.361 2.33 -20.721 2.66 -20.062 3 C-14.148 4.931 -9.033 4.798 -3.438 2 C-2.303 1.34 -1.169 0.68 0 0 Z " fill="#849BBC" transform="translate(408,304)"/>
<path d="M0 0 C0 0.33 0 0.66 0 1 C-1.29 1.039 -1.29 1.039 -2.605 1.078 C-11.32 1.496 -18.792 3.114 -27 6 C-28.77 6.585 -30.541 7.169 -32.312 7.75 C-34.138 8.369 -34.138 8.369 -36 9 C-36.99 7.02 -37.98 5.04 -39 3 C-36.69 3.33 -34.38 3.66 -32 4 C-32 3.34 -32 2.68 -32 2 C-22.429 -2.254 -10.176 -2.524 0 0 Z " fill="#93BBCF" transform="translate(363,364)"/>
<path d="M0 0 C3.161 1.37 3.993 1.989 6 5 C6.266 7.629 6.266 7.629 6.25 10.562 C6.255 11.533 6.26 12.504 6.266 13.504 C6 16 6 16 4 18 C3.01 18 2.02 18 1 18 C0.352 16.73 -0.294 15.459 -0.938 14.188 C-1.297 13.48 -1.657 12.772 -2.027 12.043 C-3 10 -3 10 -4 7 C-3.34 7 -2.68 7 -2 7 C-2 5.68 -2 4.36 -2 3 C-2.66 2.67 -3.32 2.34 -4 2 C-2.68 2 -1.36 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#AEC3DA" transform="translate(340,408)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 3.96 1 7.92 1 12 C0.34 10.68 -0.32 9.36 -1 8 C-2.459 8.309 -3.917 8.622 -5.375 8.938 C-6.187 9.112 -6.999 9.286 -7.836 9.465 C-10.029 9.923 -10.029 9.923 -12 11 C-14.023 10.477 -14.023 10.477 -16.375 9.625 C-20.825 8.032 -24.807 6.908 -29.547 6.684 C-30.391 6.642 -31.236 6.6 -32.105 6.557 C-32.978 6.517 -33.851 6.478 -34.75 6.438 C-36.082 6.373 -36.082 6.373 -37.441 6.307 C-39.627 6.201 -41.814 6.099 -44 6 C-44 5.67 -44 5.34 -44 5 C-33.076 3.673 -23.047 3.794 -12.164 5.562 C-8.087 6.136 -8.087 6.136 -4 6 C-1.718 3.077 -1.718 3.077 0 0 Z " fill="#B5D7E7" transform="translate(379,278)"/>
<path d="M0 0 C0.909 0.398 0.909 0.398 1.836 0.805 C13.101 5.554 23.929 6.431 36 7 C36 7.33 36 7.66 36 8 C27.256 9.374 19.811 8.527 11.273 6.691 C8.231 5.931 8.231 5.931 6 6 C6 6.66 6 7.32 6 8 C7.98 7.67 9.96 7.34 12 7 C11.67 8.65 11.34 10.3 11 12 C10.34 12 9.68 12 9 12 C9.33 14.31 9.66 16.62 10 19 C9.34 19 8.68 19 8 19 C7.805 16.982 7.609 14.964 7.414 12.945 C7.136 10.773 7.136 10.773 5 9 C3.012 8.602 1.011 8.262 -1 8 C-0.67 5.36 -0.34 2.72 0 0 Z " fill="#E5EFF4" transform="translate(324,312)"/>
<path d="M0 0 C-0.193 0.568 -0.387 1.137 -0.586 1.723 C-3.746 10.881 -3.746 10.881 -5.5 20.375 C-5.665 21.571 -5.83 22.767 -6 24 C-6.66 24.33 -7.32 24.66 -8 25 C-9.276 21.172 -9.184 17.55 -9.188 13.562 C-9.2 12.799 -9.212 12.035 -9.225 11.248 C-9.243 4.078 -9.243 4.078 -7 1 C-4.537 -0.231 -2.72 -0.072 0 0 Z " fill="#ADC2D6" transform="translate(332,269)"/>
<path d="M0 0 C2.722 1.069 3.939 1.916 5.688 4.312 C11.794 11.41 21.005 14.085 30 15 C30 15.99 30 16.98 30 18 C21.19 18.92 15.159 17.253 8 12 C4.153 8.452 0.96 5.268 0 0 Z " fill="#F2F3F6" transform="translate(431,203)"/>
<path d="M0 0 C5.333 -0.356 5.333 -0.356 7.875 1 C9.705 4.253 9.181 7.314 9 11 C9.961 11.073 9.961 11.073 10.941 11.148 C21.725 12.081 21.725 12.081 26 14 C27.875 17.5 27.875 17.5 29 21 C29.495 21.99 29.495 21.99 30 23 C28.062 22.375 28.062 22.375 26 21 C25.25 17.875 25.25 17.875 25 15 C24.443 14.939 23.886 14.879 23.312 14.816 C22.549 14.733 21.786 14.649 21 14.562 C20.181 14.477 19.363 14.392 18.52 14.305 C16.926 14.112 15.338 13.873 13.762 13.57 C11.433 13.094 11.433 13.094 8 13 C6.624 14.29 5.292 15.627 4 17 C0.609 17.919 -2.76 18.62 -6 17 C-6 16.34 -6 15.68 -6 15 C-4.928 15.082 -3.855 15.165 -2.75 15.25 C0.926 15.294 0.926 15.294 3.375 13.562 C5.711 9.879 5.817 6.291 6 2 C3.03 1.505 3.03 1.505 0 1 C0 0.67 0 0.34 0 0 Z " fill="#384D80" transform="translate(323,320)"/>
<path d="M0 0 C2.375 0.188 2.375 0.188 5 1 C5.433 1.639 5.866 2.279 6.312 2.938 C8.947 6.158 11.985 6.21 16 7 C16 7.99 16 8.98 16 10 C14.288 11.712 12.082 11.172 9.75 11.188 C8.319 11.209 8.319 11.209 6.859 11.23 C3.873 10.99 1.706 10.249 -1 9 C-1.098 2.848 -1.098 2.848 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#AFC3D6" transform="translate(441,219)"/>
<path d="M0 0 C1.373 4.398 0.243 7.925 -0.938 12.25 C-1.133 12.995 -1.328 13.74 -1.529 14.508 C-2.011 16.341 -2.504 18.171 -3 20 C-7.401 18.645 -9.273 16.888 -11.875 13.125 C-12.491 12.261 -13.107 11.398 -13.742 10.508 C-15 8 -15 8 -14.695 5.68 C-14.466 5.125 -14.236 4.571 -14 4 C-13.312 4.632 -13.312 4.632 -12.609 5.277 C-11.996 5.825 -11.382 6.373 -10.75 6.938 C-10.147 7.483 -9.543 8.028 -8.922 8.59 C-6.915 10.062 -5.43 10.575 -3 11 C-2.867 10.374 -2.734 9.747 -2.598 9.102 C-2.421 8.284 -2.244 7.467 -2.062 6.625 C-1.888 5.813 -1.714 5.001 -1.535 4.164 C-1 2 -1 2 0 0 Z " fill="#4A6D95" transform="translate(290,424)"/>
<path d="M0 0 C0 0.66 0 1.32 0 2 C0.66 2.33 1.32 2.66 2 3 C1.01 4.485 1.01 4.485 0 6 C-0.33 4.35 -0.66 2.7 -1 1 C-1.66 1 -2.32 1 -3 1 C-3.227 1.763 -3.454 2.526 -3.688 3.312 C-5.278 6.569 -6.868 7.314 -10 9 C-10.33 9.66 -10.66 10.32 -11 11 C-10.216 11.268 -9.433 11.536 -8.625 11.812 C-6 13 -6 13 -4 16 C-4 16.99 -4 17.98 -4 19 C-4.99 19 -5.98 19 -7 19 C-7 17.68 -7 16.36 -7 15 C-7.99 15 -8.98 15 -10 15 C-10 14.34 -10 13.68 -10 13 C-11.32 12.67 -12.64 12.34 -14 12 C-13.835 11.072 -13.67 10.144 -13.5 9.188 C-12.923 6.044 -12.923 6.044 -13 3 C-8.378 0.781 -5.232 -0.383 0 0 Z " fill="#0F1E4A" transform="translate(531,504)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 1.99 2 2.98 2 4 C3.031 4.516 4.062 5.031 5.125 5.562 C9.35 7.946 12.078 11.189 15 15 C10.9 16.367 9.098 15.154 5.297 13.391 C1.74 11.237 -0.601 8.35 -3 5 C-2.01 3.35 -1.02 1.7 0 0 Z " fill="#C6D6E1" transform="translate(444,180)"/>
<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1.319 2.598 0.639 3.196 -0.062 3.812 C-2.712 6.425 -4.51 9.327 -6.438 12.5 C-9.587 17.603 -12.549 21.275 -18 24 C-19.663 24.121 -21.332 24.175 -23 24.188 C-24.33 24.209 -24.33 24.209 -25.688 24.23 C-28 24 -28 24 -30 22 C-29.108 21.807 -28.216 21.613 -27.297 21.414 C-26.126 21.154 -24.956 20.893 -23.75 20.625 C-22.59 20.37 -21.43 20.115 -20.234 19.852 C-14.944 18.472 -14.944 18.472 -11.289 14.609 C-10.74 13.666 -10.191 12.722 -9.625 11.75 C-6.818 7.137 -3.998 3.608 0 0 Z " fill="#C4D2E2" transform="translate(476,190)"/>
<path d="M0 0 C0.495 0.33 0.99 0.66 1.5 1 C5.091 2.436 8.145 2.129 12 2 C12 4.97 12 7.94 12 11 C11.01 11.495 11.01 11.495 10 12 C10 9.36 10 6.72 10 4 C9.34 4 8.68 4 8 4 C8 5.32 8 6.64 8 8 C6.68 8 5.36 8 4 8 C4 8.66 4 9.32 4 10 C3.01 10 2.02 10 1 10 C1 9.34 1 8.68 1 8 C0.34 8 -0.32 8 -1 8 C-1 8.99 -1 9.98 -1 11 C-0.34 11.33 0.32 11.66 1 12 C0.67 12.66 0.34 13.32 0 14 C-1.98 13.34 -3.96 12.68 -6 12 C-5.67 11.01 -5.34 10.02 -5 9 C-2.438 7.812 -2.438 7.812 0 7 C0 4.69 0 2.38 0 0 Z " fill="#EC5E2B" transform="translate(52,532)"/>
<path d="M0 0 C-1.11 3.329 -1.925 4.015 -4.562 6.188 C-8.95 9.9 -12.986 13.89 -17 18 C-17.99 16.68 -18.98 15.36 -20 14 C-16.374 10.272 -12.681 6.608 -8.875 3.062 C-7.943 2.183 -7.943 2.183 -6.992 1.285 C-4.511 -0.316 -2.897 -0.246 0 0 Z " fill="#BDDDE9" transform="translate(326,373)"/>
<path d="M0 0 C0.516 0.701 1.031 1.403 1.562 2.125 C5.264 6.491 9.559 10.928 15 13 C17.984 13.167 17.984 13.167 21.125 13 C24.32 12.875 24.32 12.875 27 13 C29 15 29 15 29.125 17.625 C29.084 18.409 29.043 19.192 29 20 C28.67 19.34 28.34 18.68 28 18 C26.298 18.124 26.298 18.124 24.562 18.25 C16.395 18.221 8.778 13.544 3 8 C1.371 5.719 0.22 3.541 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#29376B" transform="translate(433,200)"/>
<path d="M0 0 C0.87 2.897 1.031 5.043 0.598 8.027 C-0.105 13.53 -0.339 19.023 -0.562 24.562 C-0.606 25.571 -0.649 26.58 -0.693 27.619 C-0.798 30.079 -0.9 32.54 -1 35 C-0.34 35 0.32 35 1 35 C2.158 38.473 2.069 41.361 2 45 C2.66 45.33 3.32 45.66 4 46 C3.67 46.66 3.34 47.32 3 48 C3.66 48.33 4.32 48.66 5 49 C4.34 49.99 3.68 50.98 3 52 C-5.014 35.971 -5.014 16.893 0 0 Z " fill="#D29F44" transform="translate(110,114)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.124 1.072 2.248 2.145 2.375 3.25 C2.896 6.379 3.401 8.335 5 11 C3.907 11.309 2.814 11.619 1.688 11.938 C-0.554 12.583 -2.787 13.262 -5 14 C-5.309 12.907 -5.619 11.814 -5.938 10.688 C-6.583 8.446 -7.262 6.213 -8 4 C-6.577 3.567 -6.577 3.567 -5.125 3.125 C-1.948 2.232 -1.948 2.232 0 0 Z " fill="#EE5631" transform="translate(434,478)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-0.795 3.75 -1.591 4.5 -2.41 5.273 C-5.484 8.51 -5.813 10.26 -6.438 14.625 C-7.97 24.054 -10.991 32.955 -14 42 C-14.66 41.67 -15.32 41.34 -16 41 C-15.83 40.392 -15.66 39.783 -15.484 39.156 C-13.856 33.268 -12.307 27.361 -10.812 21.438 C-10.634 20.735 -10.455 20.032 -10.271 19.309 C-9.327 15.699 -9.327 15.699 -9 12 C-9.763 12.516 -10.526 13.031 -11.312 13.562 C-12.199 14.037 -13.086 14.511 -14 15 C-14.99 14.67 -15.98 14.34 -17 14 C-16.165 13.49 -16.165 13.49 -15.312 12.969 C-9.464 9.254 -4.716 5.063 0 0 Z " fill="#3C5E8B" transform="translate(417,293)"/>
<path d="M0 0 C1.836 0.038 3.671 0.155 5.5 0.312 C6.5 0.391 7.501 0.47 8.531 0.551 C9.753 0.773 9.753 0.773 11 1 C11.33 1.66 11.66 2.32 12 3 C11.67 3.66 11.34 4.32 11 5 C11.66 5.33 12.32 5.66 13 6 C12.01 6.33 11.02 6.66 10 7 C10 7.99 10 8.98 10 10 C8.02 10.33 6.04 10.66 4 11 C4 10.01 4 9.02 4 8 C3.01 7.67 2.02 7.34 1 7 C-0.188 3.938 -0.188 3.938 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#091443" transform="translate(315,94)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C3.527 2.656 3.527 2.656 6 3 C5.34 5.64 4.68 8.28 4 11 C1.69 11.66 -0.62 12.32 -3 13 C-3.103 12.381 -3.206 11.762 -3.312 11.125 C-3.875 8.635 -3.875 8.635 -7 7 C-7 5 -7 5 -4.625 2.375 C-2 0 -2 0 0 0 Z " fill="#F45C25" transform="translate(518,372)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C3.015 3.733 3.015 3.733 5 4 C3.75 7.653 3.329 8.781 0 11 C-2.771 11.016 -5.252 10.488 -8 10 C-9 9 -9 9 -9.062 5.438 C-9.042 4.303 -9.021 3.169 -9 2 C-8.34 2.66 -7.68 3.32 -7 4 C-6.34 3.67 -5.68 3.34 -5 3 C-5 3.66 -5 4.32 -5 5 C-3.35 4.67 -1.7 4.34 0 4 C0 2.68 0 1.36 0 0 Z " fill="#748CB2" transform="translate(324,325)"/>
<path d="M0 0 C-0.33 0.99 -0.66 1.98 -1 3 C-7.93 3 -14.86 3 -22 3 C-22.33 1.68 -22.66 0.36 -23 -1 C-19.543 -1.225 -16.084 -1.427 -12.625 -1.625 C-11.64 -1.689 -10.655 -1.754 -9.641 -1.82 C-8.7 -1.872 -7.759 -1.923 -6.789 -1.977 C-5.92 -2.029 -5.05 -2.081 -4.155 -2.135 C-2 -2 -2 -2 0 0 Z " fill="#F4F9F9" transform="translate(362,263)"/>
<path d="M0 0 C0.804 0.495 1.609 0.99 2.438 1.5 C4.649 3.084 4.649 3.084 6 3 C6.66 3 7.32 3 8 3 C8 2.34 8 1.68 8 1 C14.625 -0.25 14.625 -0.25 18 2 C16.525 2.634 15.045 3.257 13.562 3.875 C12.739 4.223 11.915 4.571 11.066 4.93 C3.646 7.52 -3.231 8.283 -11.062 8.125 C-11.928 8.116 -12.794 8.107 -13.686 8.098 C-15.79 8.074 -17.895 8.039 -20 8 C-20 7.67 -20 7.34 -20 7 C-19.036 6.939 -18.072 6.879 -17.078 6.816 C-15.815 6.733 -14.552 6.649 -13.25 6.562 C-11.997 6.481 -10.744 6.4 -9.453 6.316 C-6.817 6.075 -4.52 5.757 -2 5 C-2 4.01 -2 3.02 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#E0A13E" transform="translate(186,197)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 1.99 2 2.98 2 4 C2.33 3.34 2.66 2.68 3 2 C3.66 2.33 4.32 2.66 5 3 C5.625 6.062 5.625 6.062 6 9 C5.01 9 4.02 9 3 9 C3 9.66 3 10.32 3 11 C0.03 11 -2.94 11 -6 11 C-6.625 8.188 -6.625 8.188 -7 5 C-6.34 4.01 -5.68 3.02 -5 2 C-2.375 1.812 -2.375 1.812 0 2 C0 1.34 0 0.68 0 0 Z " fill="#122349" transform="translate(489,19)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C-3.224 11.762 -15.087 22.986 -25 31 C-25 28 -25 28 -22.91 25.688 C-21.97 24.801 -21.031 23.914 -20.062 23 C-14.558 17.694 -9.737 12.005 -5 6 C-3.375 3.942 -1.746 1.958 0 0 Z " fill="#B3CDDE" transform="translate(372,380)"/>
<path d="M0 0 C0.706 0.144 1.413 0.289 2.141 0.438 C9.235 1.721 16.05 2.193 23.25 2.188 C24.077 2.188 24.903 2.189 25.755 2.189 C30.612 2.147 35.282 1.787 40.081 1.017 C42 1 42 1 45 3 C30.452 5.698 14.092 7.43 0 2 C0 1.34 0 0.68 0 0 Z " fill="#4B799C" transform="translate(335,264)"/>
<path d="M0 0 C2.64 0.33 5.28 0.66 8 1 C7.447 4.315 6.925 7.208 5 10 C2.5 11.188 2.5 11.188 0 12 C-0.99 12.495 -0.99 12.495 -2 13 C-2.66 12.67 -3.32 12.34 -4 12 C-2.667 8 -1.333 4 0 0 Z " fill="#C5DEE9" transform="translate(446,231)"/>
<path d="M0 0 C5.75 1.625 5.75 1.625 8 5 C8 5.99 8 6.98 8 8 C6.68 8.33 5.36 8.66 4 9 C3.662 10.265 3.325 11.529 2.977 12.832 C2.526 14.492 2.076 16.152 1.625 17.812 C1.403 18.646 1.182 19.479 0.953 20.338 C0.734 21.14 0.515 21.943 0.289 22.77 C0.09 23.508 -0.109 24.246 -0.314 25.007 C-1 27 -1 27 -3 30 C-3.99 29.67 -4.98 29.34 -6 29 C-5.34 29 -4.68 29 -4 29 C-3.518 27.438 -3.039 25.876 -2.562 24.312 C-2.296 23.442 -2.029 22.572 -1.754 21.676 C-0.31 16.551 0.112 12.03 0.062 6.688 C0.049 4.806 0.049 4.806 0.035 2.887 C0.024 1.934 0.012 0.981 0 0 Z " fill="#58A8C4" transform="translate(362,288)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C3.68 1.33 2.36 1.66 1 2 C1.289 2.626 1.577 3.253 1.875 3.898 C2.246 4.716 2.618 5.533 3 6.375 C3.557 7.593 3.557 7.593 4.125 8.836 C5 11 5 11 5 13 C3.35 13.66 1.7 14.32 0 15 C-5.571 9.857 -5.571 9.857 -6 6 C-1.125 5 -1.125 5 0 5 C0 3.35 0 1.7 0 0 Z " fill="#D1D5DE" transform="translate(243,241)"/>
<path d="M0 0 C1.98 0 3.96 0 6 0 C6.625 2.375 6.625 2.375 7 5 C4.861 7.139 3.867 7.427 1 8 C1.759 8.121 2.519 8.242 3.301 8.367 C4.792 8.619 4.792 8.619 6.312 8.875 C7.299 9.037 8.285 9.2 9.301 9.367 C12 10 12 10 15 12 C13.27 11.885 11.541 11.757 9.812 11.625 C8.368 11.521 8.368 11.521 6.895 11.414 C2.817 10.831 -0.067 9.933 -3 7 C-2.165 4.496 -1.206 2.332 0 0 Z " fill="#76C9E2" transform="translate(328,295)"/>
<path d="M0 0 C2.125 0.375 2.125 0.375 4 1 C5.149 4.553 5.087 5.8 3.562 9.312 C2.789 10.643 2.789 10.643 2 12 C1.01 11.34 0.02 10.68 -1 10 C-3.153 10.308 -3.153 10.308 -5 11 C-5.33 10.01 -5.66 9.02 -6 8 C-4.226 5.002 -2.465 2.465 0 0 Z " fill="#F2F2F5" transform="translate(468,157)"/>
<path d="M0 0 C0 3 0 3 -1.574 4.719 C-9.613 11.495 -9.613 11.495 -13 13 C-15.312 12.688 -15.312 12.688 -17 12 C-17 11.01 -17 10.02 -17 9 C-16.34 9 -15.68 9 -15 9 C-15 8.34 -15 7.68 -15 7 C-15.66 7 -16.32 7 -17 7 C-17 6.34 -17 5.68 -17 5 C-15.662 4.961 -15.662 4.961 -14.297 4.922 C-13.126 4.865 -11.956 4.808 -10.75 4.75 C-9.01 4.68 -9.01 4.68 -7.234 4.609 C-3.533 3.912 -2.329 2.882 0 0 Z " fill="#09154F" transform="translate(279,456)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C2.65 1.34 4.3 0.68 6 0 C5.67 1.32 5.34 2.64 5 4 C6.32 4.33 7.64 4.66 9 5 C8.67 5.66 8.34 6.32 8 7 C9.32 6.34 10.64 5.68 12 5 C12 5.99 12 6.98 12 8 C8.831 10.689 7.382 11.031 3.188 10.688 C2.136 10.461 1.084 10.234 0 10 C-0.749 6.337 -1.238 3.576 0 0 Z " fill="#232843" transform="translate(476,415)"/>
<path d="M0 0 C0.248 0.577 0.495 1.155 0.75 1.75 C2.323 4.582 3.311 6.118 6 8 C8.591 8.234 11.063 8.187 13.66 8.043 C16 8 16 8 19 9 C19.688 11.062 19.688 11.062 20 13 C15.367 14.43 11.691 13.394 7.188 12.062 C6.495 11.867 5.802 11.672 5.088 11.471 C3.389 10.99 1.694 10.497 0 10 C-0.194 8.522 -0.38 7.042 -0.562 5.562 C-0.667 4.739 -0.771 3.915 -0.879 3.066 C-0.919 2.384 -0.959 1.703 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#ACC1DB" transform="translate(347,335)"/>
<path d="M0 0 C10.716 4.65 20.063 12.599 27 22 C27 22.66 27 23.32 27 24 C28.32 24.33 29.64 24.66 31 25 C30.856 25.701 30.711 26.402 30.562 27.125 C29.985 30.076 29.483 33.033 29 36 C28.67 36 28.34 36 28 36 C28.032 35.406 28.064 34.811 28.098 34.199 C27.978 25.616 23.973 20.848 18 15 C12.15 9.847 6.091 5.317 -1 2 C-0.67 1.34 -0.34 0.68 0 0 Z " fill="#415781" transform="translate(318,387)"/>
<path d="M0 0 C4.434 2.217 5.245 3.247 7.25 7.492 C8.67 12.239 8.294 17.1 8 22 C7.67 22 7.34 22 7 22 C6.927 21.06 6.927 21.06 6.852 20.102 C6.777 19.284 6.702 18.467 6.625 17.625 C6.555 16.813 6.486 16.001 6.414 15.164 C6.171 12.797 6.171 12.797 4 11 C3.34 10.01 2.68 9.02 2 8 C0.68 8.33 -0.64 8.66 -2 9 C-2 9.66 -2 10.32 -2 11 C-2.99 10.67 -3.98 10.34 -5 10 C-3.35 6.7 -1.7 3.4 0 0 Z " fill="#F0F3F5" transform="translate(449,246)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.33 0.66 3.66 1.32 4 2 C4.99 2.33 5.98 2.66 7 3 C7 4.98 7 6.96 7 9 C7.66 9 8.32 9 9 9 C10.484 11.357 11.016 12.686 10.875 15.5 C9.828 18.491 8.367 19.939 6 22 C5.34 21.34 4.68 20.68 4 20 C4.99 20 5.98 20 7 20 C3.992 9.819 3.992 9.819 0 0 Z " fill="#11225A" transform="translate(409,199)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 1.66 4 2.32 4 3 C4.99 3 5.98 3 7 3 C7 5.31 7 7.62 7 10 C5.02 10 3.04 10 1 10 C0.67 9.34 0.34 8.68 0 8 C-0.99 7.67 -1.98 7.34 -3 7 C-3.688 4.938 -3.688 4.938 -4 3 C-3.01 2.67 -2.02 2.34 -1 2 C-0.67 1.34 -0.34 0.68 0 0 Z " fill="#252641" transform="translate(395,431)"/>
<path d="M0 0 C2.64 0.33 5.28 0.66 8 1 C9.097 4.29 8.8 5.713 8 9 C8.66 9.33 9.32 9.66 10 10 C6.675 11.108 4.378 10.845 1 10 C0.67 6.7 0.34 3.4 0 0 Z " fill="#2A424D" transform="translate(459,90)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C2.714 0.695 2.428 1.39 2.133 2.105 C0.943 5.146 -0.103 8.211 -1.125 11.312 C-1.478 12.381 -1.831 13.45 -2.195 14.551 C-2.594 15.763 -2.594 15.763 -3 17 C-3.66 17 -4.32 17 -5 17 C-5.66 13.37 -6.32 9.74 -7 6 C-6.34 6 -5.68 6 -5 6 C-4.196 5.01 -3.391 4.02 -2.562 3 C-1.717 2.01 -0.871 1.02 0 0 Z " fill="#84C7DE" transform="translate(411,221)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.389 1.961 4.726 3.962 6 6 C4.02 6.66 2.04 7.32 0 8 C0.33 9.32 0.66 10.64 1 12 C0.01 12.495 0.01 12.495 -1 13 C-1.66 12.01 -2.32 11.02 -3 10 C-4.314 8.647 -5.644 7.311 -7 6 C-6.216 5.381 -5.433 4.762 -4.625 4.125 C-2.032 2.101 -2.032 2.101 0 0 Z " fill="#F1F2F6" transform="translate(274,434)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C1.959 0.784 1.918 1.567 1.875 2.375 C1.713 5.161 1.713 5.161 4 7 C3.625 9.625 3.625 9.625 3 12 C-1.474 12.363 -1.474 12.363 -3.812 10.75 C-5 9 -5 9 -5 5 C-4.34 5 -3.68 5 -3 5 C-2.505 4.175 -2.01 3.35 -1.5 2.5 C-1.005 1.675 -0.51 0.85 0 0 Z " fill="#869DBF" transform="translate(355,331)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.144 0.619 3.289 1.238 3.438 1.875 C3.932 4.033 3.932 4.033 5 6 C4.949 17.815 4.239 28.264 -3 38 C-3 34.647 -1.989 32.26 -0.801 29.164 C1.778 22.194 2.816 15.425 2 8 C1.34 7.01 0.68 6.02 0 5 C-0.125 2.312 -0.125 2.312 0 0 Z " fill="#1D2E60" transform="translate(289,271)"/>
<path d="M0 0 C-5.418 4.464 -10.601 8.091 -17 11 C-17.125 5.25 -17.125 5.25 -16 3 C-13.164 1.895 -13.164 1.895 -9.625 0.812 C-8.462 0.448 -7.3 0.083 -6.102 -0.293 C-3 -1 -3 -1 0 0 Z " fill="#F4AD39" transform="translate(222,187)"/>
<path d="M0 0 C-2.97 4.455 -2.97 4.455 -6 9 C-6.33 7.68 -6.66 6.36 -7 5 C-7.915 5.023 -8.83 5.046 -9.773 5.07 C-11.556 5.097 -11.556 5.097 -13.375 5.125 C-15.15 5.16 -15.15 5.16 -16.961 5.195 C-20 5 -20 5 -22 3 C-21.059 2.879 -20.118 2.758 -19.148 2.633 C-17.281 2.381 -17.281 2.381 -15.375 2.125 C-14.145 1.963 -12.915 1.8 -11.648 1.633 C-8.006 1.098 -8.006 1.098 -4.664 -0.133 C-2 -1 -2 -1 0 0 Z " fill="#BBDCEE" transform="translate(388,265)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.385 0.961 2.385 0.961 2.777 1.941 C6.201 9.677 10.741 14.534 18.449 18.148 C21.125 19.042 23.505 19.4 26.312 19.625 C27.196 19.7 28.079 19.775 28.988 19.852 C29.984 19.925 29.984 19.925 31 20 C30.67 20.99 30.34 21.98 30 23 C18.81 21.028 10.411 17.82 3.152 8.812 C1.348 5.974 0.67 3.284 0 0 Z " fill="#3D5076" transform="translate(424,210)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C4.526 2.176 4.051 3.351 3.562 4.562 C1.312 11.185 1.265 18.069 1 25 C-1 23 -1 23 -1.243 20.985 C-1.239 20.176 -1.235 19.368 -1.23 18.535 C-1.229 17.653 -1.227 16.77 -1.225 15.861 C-1.206 14.476 -1.206 14.476 -1.188 13.062 C-1.187 12.143 -1.186 11.223 -1.186 10.275 C-1.141 3.422 -1.141 3.422 0 0 Z " fill="#BFB6B7" transform="translate(314,213)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3 0.66 3 1.32 3 2 C4.32 2.33 5.64 2.66 7 3 C6.613 3.629 6.227 4.258 5.828 4.906 C2.625 10.17 -0.327 15.448 -3 21 C-3.66 21 -4.32 21 -5 21 C-2.268 11.622 -2.268 11.622 -0.812 8.25 C0.209 5.422 0.139 2.982 0 0 Z " fill="#162158" transform="translate(461,154)"/>
<path d="M0 0 C5.555 1.302 10.977 3.279 16 6 C14.02 6.33 12.04 6.66 10 7 C10 7.66 10 8.32 10 9 C6.688 8.875 6.688 8.875 3 8 C1.192 5.258 0 3.321 0 0 Z " fill="#C1DFE8" transform="translate(321,359)"/>
<path d="M0 0 C1 3 1 3 1 6 C0.01 6.33 -0.98 6.66 -2 7 C-2.217 7.897 -2.217 7.897 -2.438 8.812 C-3.228 11.887 -4.548 12.999 -7 15 C-9.298 16.159 -11.592 17.074 -14 18 C-12.449 14.378 -10.231 11.875 -7.562 9 C-4.873 6.094 -2.314 3.215 0 0 Z " fill="#8BB4CB" transform="translate(432,275)"/>
<path d="M0 0 C3.3 0 6.6 0 10 0 C8.58 5.679 5.606 9.532 2 14 C0 11 0 11 0.25 8.875 C1 7 1 7 3 6 C3.33 5.01 3.66 4.02 4 3 C2.68 2.34 1.36 1.68 0 1 C0 0.67 0 0.34 0 0 Z " fill="#BDDDE7" transform="translate(429,263)"/>
<path d="M0 0 C3.485 0.645 6.028 2.101 9 4 C8.67 5.65 8.34 7.3 8 9 C5.36 9.33 2.72 9.66 0 10 C-0.749 6.337 -1.238 3.576 0 0 Z " fill="#0D1D5A" transform="translate(326,260)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C7.124 7.225 6.639 15.42 5 23 C4.01 22.67 3.02 22.34 2 22 C2.33 15.73 2.66 9.46 3 3 C2.01 3 1.02 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#34477A" transform="translate(388,214)"/>
<path d="M0 0 C2.31 0.66 4.62 1.32 7 2 C7 4.31 7 6.62 7 9 C4.69 9.66 2.38 10.32 0 11 C-0.33 10.01 -0.66 9.02 -1 8 C-1.66 7.67 -2.32 7.34 -3 7 C-2.67 6.01 -2.34 5.02 -2 4 C-1.34 4 -0.68 4 0 4 C0 2.68 0 1.36 0 0 Z " fill="#E64586" transform="translate(83,176)"/>
<path d="M0 0 C9.115 4.014 16.449 12.97 22 21 C22.33 21.99 22.66 22.98 23 24 C19.527 22.842 18.959 21.981 17 19 C16.732 18.361 16.464 17.721 16.188 17.062 C14.351 13.873 11.968 12.18 9 10 C8.01 10 7.02 10 6 10 C5.752 9.422 5.505 8.845 5.25 8.25 C4.06 5.866 4.06 5.866 1.875 3.875 C1.256 3.256 0.637 2.638 0 2 C0 1.34 0 0.68 0 0 Z " fill="#ECD051" transform="translate(212,79)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C0.466 8.905 -2.157 19.097 -8 26 C-8 23.03 -8 20.06 -8 17 C-6.68 16.67 -5.36 16.34 -4 16 C-3.67 13.36 -3.34 10.72 -3 8 C-3.99 7.67 -4.98 7.34 -6 7 C-6 6.34 -6 5.68 -6 5 C-4.35 5 -2.7 5 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#ECD04E" transform="translate(242,145)"/>
<path d="M0 0 C1.485 0.99 1.485 0.99 3 2 C5.057 2.241 5.057 2.241 7.188 2.125 C8.446 2.084 9.704 2.043 11 2 C10.967 3.986 10.935 5.971 10.902 7.957 C10.917 10.203 10.917 10.203 12 13 C10.35 13 8.7 13 7 13 C7.33 10.36 7.66 7.72 8 5 C5.69 5.33 3.38 5.66 1 6 C1 6.66 1 7.32 1 8 C0.34 7.67 -0.32 7.34 -1 7 C-0.67 4.69 -0.34 2.38 0 0 Z " fill="#DB5E33" transform="translate(168,393)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C-6.68 12.91 -15.549 22.601 -25 32 C-25.66 31.67 -26.32 31.34 -27 31 C-26.238 30.261 -25.476 29.523 -24.691 28.762 C-15.571 19.834 -7.533 10.311 0 0 Z " fill="#314C78" transform="translate(375,379)"/>
<path d="M0 0 C1.65 0.422 3.295 0.863 4.938 1.312 C6.312 1.678 6.312 1.678 7.715 2.051 C8.469 2.364 9.223 2.677 10 3 C11 6 11 6 10.223 7.824 C9.148 9.549 8.074 11.275 7 13 C6.34 12.67 5.68 12.34 5 12 C5 9.36 5 6.72 5 4 C4.01 4.33 3.02 4.66 2 5 C1.34 3.35 0.68 1.7 0 0 Z " fill="#F3F7FA" transform="translate(368,367)"/>
<path d="M0 0 C2.394 0.575 4.736 1.223 7.094 1.938 C11.323 3.15 15.602 3.897 19.938 4.625 C20.717 4.759 21.496 4.893 22.299 5.031 C24.199 5.358 26.099 5.679 28 6 C27.67 6.66 27.34 7.32 27 8 C7.207 7.207 7.207 7.207 2 2 C1.34 2.66 0.68 3.32 0 4 C0 2.68 0 1.36 0 0 Z " fill="#447DA5" transform="translate(323,311)"/>
<path d="M0 0 C7.483 1.372 14.056 3.922 21 7 C17.522 8.159 15.541 7.708 12 7 C11.67 7.99 11.34 8.98 11 10 C9.125 9.312 9.125 9.312 7 8 C6.691 7.175 6.381 6.35 6.062 5.5 C5.214 2.752 5.214 2.752 2.375 1.688 C1.591 1.461 0.808 1.234 0 1 C0 0.67 0 0.34 0 0 Z " fill="#F3D547" transform="translate(188,69)"/>
<path d="M0 0 C0.619 0.639 1.238 1.279 1.875 1.938 C10.369 10.359 19.112 18.872 31 22 C30.34 22.66 29.68 23.32 29 24 C17.604 19.061 6.968 12.697 0 2 C0 1.34 0 0.68 0 0 Z " fill="#3A507B" transform="translate(285,443)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C5.67 4.31 5.34 6.62 5 9 C3.02 9.33 1.04 9.66 -1 10 C-1.99 8.02 -2.98 6.04 -4 4 C-2.68 2.68 -1.36 1.36 0 0 Z " fill="#E6BC29" transform="translate(87,382)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C6 4.64 6 7.28 6 10 C5.01 10.33 4.02 10.66 3 11 C2.67 10.34 2.34 9.68 2 9 C1.34 9.66 0.68 10.32 0 11 C-1.286 3.571 -1.286 3.571 0 0 Z " fill="#BCD7E4" transform="translate(384,358)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 1.98 1 3.96 1 6 C1.66 6 2.32 6 3 6 C3 6.66 3 7.32 3 8 C2.319 8.206 1.639 8.412 0.938 8.625 C-2.97 10.454 -5.839 13.103 -9 16 C-9.66 15.67 -10.32 15.34 -11 15 C-9.193 12.496 -7.378 9.998 -5.562 7.5 C-5.046 6.785 -4.53 6.069 -3.998 5.332 C-3.505 4.655 -3.012 3.979 -2.504 3.281 C-2.048 2.653 -1.593 2.024 -1.123 1.377 C-0.567 0.695 -0.567 0.695 0 0 Z " fill="#192657" transform="translate(481,170)"/>
<path d="M0 0 C0.33 -0.33 0.66 -0.66 1 -1 C3.062 -0.562 3.062 -0.562 5 0 C4.67 0.66 4.34 1.32 4 2 C4.894 4.609 4.894 4.609 6 7 C0 5 -6 3 -12 1 C-12 0.67 -12 0.34 -12 0 C-10.376 -0.195 -8.751 -0.381 -7.125 -0.562 C-6.22 -0.667 -5.315 -0.771 -4.383 -0.879 C-2 -1 -2 -1 0 0 Z " fill="#182148" transform="translate(203,69)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4.812 2.688 4.812 2.688 5 5 C2.562 7.75 2.562 7.75 0 10 C-2.5 7.688 -2.5 7.688 -5 5 C-5 4.01 -5 3.02 -5 2 C-4.01 2.33 -3.02 2.66 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#A8BFD7" transform="translate(302,388)"/>
<path d="M0 0 C6.192 -0.476 6.192 -0.476 9.438 1.438 C11.767 5.258 11.875 8.646 11 13 C9 16.062 9 16.062 6 18 C3.193 18.394 0.858 18.242 -2 18 C-2 17.67 -2 17.34 -2 17 C-0.907 16.752 0.186 16.505 1.312 16.25 C4.916 15.289 4.916 15.289 6.938 13.312 C8.437 10.05 8.393 7.54 8 4 C5.082 2.055 3.375 1.547 0 1 C0 0.67 0 0.34 0 0 Z " fill="#2E457B" transform="translate(355,326)"/>
<path d="M0 0 C0 2.31 0 4.62 0 7 C-2.64 7 -5.28 7 -8 7 C-8.124 6.031 -8.248 5.061 -8.375 4.062 C-8.581 3.052 -8.788 2.041 -9 1 C-9.66 0.67 -10.32 0.34 -11 0 C-3.375 -1.125 -3.375 -1.125 0 0 Z " fill="#4F4843" transform="translate(508,275)"/>
<path d="M0 0 C0.536 0.681 1.072 1.361 1.625 2.062 C3.38 4.233 5.163 6.339 7 8.438 C14 16.592 14 16.592 14 21 C13.34 21 12.68 21 12 21 C11.66 19.577 11.66 19.577 11.312 18.125 C10.345 14.804 10.345 14.804 7.5 13.938 C6.675 13.628 5.85 13.319 5 13 C3.875 10.562 3.875 10.562 3 8 C2.464 7.505 1.928 7.01 1.375 6.5 C0 5 0 5 -0.188 2.312 C-0.126 1.549 -0.064 0.786 0 0 Z " fill="#162156" transform="translate(232,254)"/>
<path d="M0 0 C2.31 0.66 4.62 1.32 7 2 C7 4.31 7 6.62 7 9 C5.02 9.33 3.04 9.66 1 10 C0.67 9.01 0.34 8.02 0 7 C-0.66 6.67 -1.32 6.34 -2 6 C-1.34 4.02 -0.68 2.04 0 0 Z " fill="#C65934" transform="translate(495,58)"/>
<path d="M0 0 C8.893 -0.262 17.25 0.396 26 2 C26 2.99 26 3.98 26 5 C23.69 5.33 21.38 5.66 19 6 C19.33 5.01 19.66 4.02 20 3 C17.021 3.049 17.021 3.049 14.043 3.098 C12 3 12 3 9 2 C7.237 2.031 7.237 2.031 5.438 2.062 C2 2 2 2 0 0 Z " fill="#F9FDFE" transform="translate(333,289)"/>
<path d="M0 0 C1 3 1 3 0.031 4.988 C-0.727 6.139 -0.727 6.139 -1.5 7.312 C-4.927 12.721 -7.654 18.315 -10.387 24.094 C-12 27 -12 27 -15 29 C-13.434 24.692 -11.317 20.938 -9 17 C-10.32 16.34 -11.64 15.68 -13 15 C-11.896 14.971 -11.896 14.971 -10.77 14.941 C-6.706 13.56 -5.551 10.554 -3.688 6.938 C-3.328 6.274 -2.969 5.611 -2.6 4.928 C-1.718 3.293 -0.857 1.648 0 0 Z " fill="#437098" transform="translate(448,246)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C6.556 5.111 6.556 5.111 8 8 C9.65 8 11.3 8 13 8 C13 8.66 13 9.32 13 10 C15.64 10.33 18.28 10.66 21 11 C21 11.99 21 12.98 21 14 C14.938 13.731 10.743 13.11 6 9 C0 1.91 0 1.91 0 0 Z " fill="#304376" transform="translate(320,247)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.518 5.134 2.011 8.955 1 13 C-4.94 11.515 -4.94 11.515 -11 10 C-11 9.67 -11 9.34 -11 9 C-5.555 8.505 -5.555 8.505 0 8 C0 5.36 0 2.72 0 0 Z " fill="#D8E4EC" transform="translate(380,356)"/>
<path d="M0 0 C3.465 1.485 3.465 1.485 7 3 C7 3.33 7 3.66 7 4 C5.35 4 3.7 4 2 4 C2.781 6.496 2.781 6.496 4 9 C4.99 9.33 5.98 9.66 7 10 C7 9.01 7 8.02 7 7 C7.66 7 8.32 7 9 7 C9.33 8.32 9.66 9.64 10 11 C12.31 11.33 14.62 11.66 17 12 C17 12.33 17 12.66 17 13 C11.545 13.191 7.214 12.877 2 11 C0 9 0 9 -0.195 6.836 C-0.172 6.024 -0.149 5.212 -0.125 4.375 C-0.107 3.558 -0.089 2.74 -0.07 1.898 C-0.047 1.272 -0.024 0.645 0 0 Z " fill="#EEF8FA" transform="translate(325,302)"/>
<path d="M0 0 C2.438 0.188 2.438 0.188 3.438 1.188 C3.625 3.625 3.625 3.625 3.438 6.188 C2.777 6.848 2.118 7.507 1.438 8.188 C-1.188 7.812 -1.188 7.812 -3.562 7.188 C-4.188 4.812 -4.188 4.812 -4.562 2.188 C-2.562 0.188 -2.562 0.188 0 0 Z " fill="#70B8D2" transform="translate(340.5625,268.8125)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 1.99 2 2.98 2 4 C1.34 4 0.68 4 0 4 C0.186 4.804 0.371 5.609 0.562 6.438 C0.707 7.283 0.851 8.129 1 9 C0.67 9.33 0.34 9.66 0 10 C-0.282 12.58 -0.448 15.16 -0.621 17.75 C-0.746 18.493 -0.871 19.235 -1 20 C-1.66 20.33 -2.32 20.66 -3 21 C-5.618 13.147 -3.309 7.21 0 0 Z " fill="#ECF1F4" transform="translate(413,226)"/>
<path d="M0 0 C1.089 0.17 1.089 0.17 2.199 0.344 C2.529 1.994 2.859 3.644 3.199 5.344 C1.879 5.674 0.559 6.004 -0.801 6.344 C-0.801 5.684 -0.801 5.024 -0.801 4.344 C-2.121 4.674 -3.441 5.004 -4.801 5.344 C-4.883 5.942 -4.966 6.54 -5.051 7.156 C-6.005 9.94 -7.372 10.777 -9.801 12.344 C-10.461 12.014 -11.121 11.684 -11.801 11.344 C-10.424 9.496 -9.024 7.666 -7.613 5.844 C-6.836 4.823 -6.059 3.802 -5.258 2.75 C-2.801 0.344 -2.801 0.344 0 0 Z M-0.801 2.344 C0.199 4.344 0.199 4.344 0.199 4.344 Z " fill="#EAEBF0" transform="translate(478.80078125,164.65625)"/>
<path d="M0 0 C1.671 0.062 1.671 0.062 3.375 0.125 C2.952 1.442 2.511 2.754 2.062 4.062 C1.819 4.793 1.575 5.524 1.324 6.277 C0.375 8.125 0.375 8.125 -2.625 9.125 C-2.625 8.465 -2.625 7.805 -2.625 7.125 C-4.275 7.455 -5.925 7.785 -7.625 8.125 C-7.625 6.125 -7.625 6.125 -5.625 4.125 C-5.625 3.465 -5.625 2.805 -5.625 2.125 C-3.625 0.125 -3.625 0.125 0 0 Z " fill="#A8C8DB" transform="translate(335.625,426.875)"/>
<path d="M0 0 C3 3.75 3 3.75 3 6 C2.34 6 1.68 6 1 6 C0.938 6.784 0.876 7.567 0.812 8.375 C0.41 9.674 0.41 9.674 0 11 C-2.562 12.312 -2.562 12.312 -5 13 C-4.65 4.807 -4.65 4.807 -1.938 1.438 C-1.298 0.963 -0.659 0.489 0 0 Z " fill="#BDDAE6" transform="translate(415,297)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C2.66 2 3.32 2 4 2 C4 2.99 4 3.98 4 5 C4.66 5.33 5.32 5.66 6 6 C5.031 6.289 4.061 6.577 3.062 6.875 C-0.107 7.642 -0.107 7.642 -1 10 C-3.31 8.35 -5.62 6.7 -8 5 C-7.34 4.67 -6.68 4.34 -6 4 C-5.34 4.33 -4.68 4.66 -4 5 C-3.67 4.34 -3.34 3.68 -3 3 C-3 3.66 -3 4.32 -3 5 C-2.01 4.67 -1.02 4.34 0 4 C-0.66 3.34 -1.32 2.68 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#FDAE33" transform="translate(140,185)"/>
<path d="M0 0 C2 2 2 2 2.875 5.438 C4.045 9.142 4.709 10.135 8 12 C7.67 12.66 7.34 13.32 7 14 C6.96 15.666 6.956 17.334 7 19 C5.998 17.668 4.998 16.335 4 15 C3.459 14.279 2.917 13.559 2.359 12.816 C1.828 12.073 1.297 11.329 0.75 10.562 C0.209 9.821 -0.333 9.08 -0.891 8.316 C-2.278 5.42 -1.97 4.009 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#141C4A" transform="translate(231,89)"/>
<path d="M0 0 C1.32 1.65 2.64 3.3 4 5 C3.67 5.66 3.34 6.32 3 7 C2.34 7 1.68 7 1 7 C1 7.99 1 8.98 1 10 C-0.98 9.34 -2.96 8.68 -5 8 C-5 6.02 -5 4.04 -5 2 C-3.35 1.34 -1.7 0.68 0 0 Z " fill="#4BB0D0" transform="translate(62,35)"/>
<path d="M0 0 C0.721 -0.012 1.442 -0.024 2.186 -0.037 C7.331 -0.051 11.739 0.773 16.688 2.188 C16.688 2.518 16.688 2.847 16.688 3.188 C6.632 3.288 -3.3 3.287 -13.312 2.188 C-13.312 1.857 -13.312 1.528 -13.312 1.188 C-8.883 0.095 -4.536 0.004 0 0 Z " fill="#DADDE6" transform="translate(365.3125,174.8125)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C6.366 6.517 6.366 6.517 4.625 8.812 C3 10 3 10 1 10 C-0.382 8.374 -1.719 6.707 -3 5 C-2.01 4.67 -1.02 4.34 0 4 C0 2.68 0 1.36 0 0 Z " fill="#E1C93A" transform="translate(494,558)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 1.66 2 2.32 2 3 C3.32 3 4.64 3 6 3 C5.67 4.98 5.34 6.96 5 9 C3.02 9.66 1.04 10.32 -1 11 C-1.66 8.69 -2.32 6.38 -3 4 C-2.34 3.67 -1.68 3.34 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z " fill="#55BDC0" transform="translate(93,438)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C0.505 3.413 0.01 3.825 -0.5 4.25 C-2.434 6.122 -2.434 6.122 -2 10 C-1.34 10.66 -0.68 11.32 0 12 C-0.66 12.66 -1.32 13.32 -2 14 C-5.465 12.02 -5.465 12.02 -9 10 C-7.618 6.79 -6.076 4.951 -3.375 2.75 C-2.743 2.229 -2.112 1.708 -1.461 1.172 C-0.738 0.592 -0.738 0.592 0 0 Z " fill="#F5F6F8" transform="translate(296,362)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.471 0.953 3.941 1.905 4.426 2.887 C5.055 4.154 5.683 5.421 6.312 6.688 C6.621 7.313 6.93 7.939 7.248 8.584 C9.024 12.154 10.895 15.613 13 19 C11.35 18.67 9.7 18.34 8 18 C8 17.34 8 16.68 8 16 C6.68 15.34 5.36 14.68 4 14 C4 12 4 12 5 11 C4.67 11 4.34 11 4 11 C3.795 10.374 3.59 9.747 3.379 9.102 C3.109 8.284 2.84 7.467 2.562 6.625 C2.162 5.407 2.162 5.407 1.754 4.164 C1.048 1.99 1.048 1.99 0 0 Z " fill="#1A1F45" transform="translate(108,159)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C2.65 2 4.3 2 6 2 C6 2.99 6 3.98 6 5 C7.32 5.33 8.64 5.66 10 6 C9.01 6 8.02 6 7 6 C6.67 6.99 6.34 7.98 6 9 C5.67 8.34 5.34 7.68 5 7 C1.274 8.119 1.274 8.119 -1 11 C-1.66 10.67 -2.32 10.34 -3 10 C-2.691 9.464 -2.381 8.928 -2.062 8.375 C-0.822 5.602 -0.409 3 0 0 Z " fill="#361D53" transform="translate(366,556)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C6 3.98 6 5.96 6 8 C4.02 8.66 2.04 9.32 0 10 C-2.215 4.585 -2.215 4.585 -1.125 1.625 C-0.754 1.089 -0.383 0.553 0 0 Z " fill="#4CB3CE" transform="translate(557,394)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.34 1 1.68 1 1 1 C1 1.66 1 2.32 1 3 C3.31 3 5.62 3 8 3 C7.01 3.495 7.01 3.495 6 4 C6.66 5.65 7.32 7.3 8 9 C7.01 9.99 6.02 10.98 5 12 C4.67 11.01 4.34 10.02 4 9 C3.01 8.34 2.02 7.68 1 7 C1 6.34 1 5.68 1 5 C0.34 5 -0.32 5 -1 5 C-1.33 3.68 -1.66 2.36 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z " fill="#121B46" transform="translate(119,359)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C0.455 5.837 -3.961 9.192 -8.977 12.176 C-11 13 -11 13 -15 13 C-15 12.34 -15 11.68 -15 11 C-15.66 11 -16.32 11 -17 11 C-16.67 10.34 -16.34 9.68 -16 9 C-15.134 9.082 -14.268 9.165 -13.375 9.25 C-9.125 8.935 -7.298 7.653 -4 5 C-2.648 3.348 -1.31 1.685 0 0 Z " fill="#3C5180" transform="translate(264,265)"/>
<path d="M0 0 C1 3 1 3 0 6 C-0.103 6.763 -0.206 7.526 -0.312 8.312 C-1.195 11.763 -2.949 14.115 -5 17 C-5.33 17.66 -5.66 18.32 -6 19 C-6.66 18.67 -7.32 18.34 -8 18 C-3.6 3.6 -3.6 3.6 0 0 Z " fill="#102157" transform="translate(457,228)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 2.97 1 5.94 1 9 C-0.65 9 -2.3 9 -4 9 C-4 8.34 -4 7.68 -4 7 C-4.66 7 -5.32 7 -6 7 C-6 6.01 -6 5.02 -6 4 C-6.66 3.67 -7.32 3.34 -8 3 C-5.646 1.571 -4.52 0.913 -1.75 1.375 C-1.173 1.581 -0.595 1.787 0 2 C0 1.34 0 0.68 0 0 Z " fill="#1A2647" transform="translate(504,222)"/>
<path d="M0 0 C0.99 0.99 1.98 1.98 3 3 C2.01 3.495 2.01 3.495 1 4 C0.269 6.314 -0.401 8.648 -1 11 C-1.99 10.67 -2.98 10.34 -4 10 C-4.33 10.66 -4.66 11.32 -5 12 C-5.75 9.875 -5.75 9.875 -6 7 C-2.907 1.453 -2.907 1.453 0 0 Z " fill="#6077A0" transform="translate(354,326)"/>
<path d="M0 0 C0 7.26 0 14.52 0 22 C-0.66 22.33 -1.32 22.66 -2 23 C-2.999 15.635 -3.103 8.427 -3 1 C-1 0 -1 0 0 0 Z " fill="#202F64" transform="translate(267,242)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C2.913 1.772 2.805 3.542 2.688 5.312 C2.629 6.299 2.571 7.285 2.512 8.301 C1.954 11.244 1.315 12.182 -1 14 C-2.57 12.43 -2.17 10.857 -2.188 8.688 C-2.202 7.908 -2.216 7.128 -2.23 6.324 C-1.98 3.797 -1.264 2.183 0 0 Z " fill="#D3C6C4" transform="translate(323,212)"/>
<path d="M0 0 C2.125 0.375 2.125 0.375 4 1 C3.469 4.821 2.503 7.062 0 10 C-0.99 9.67 -1.98 9.34 -3 9 C-2.25 2.25 -2.25 2.25 0 0 Z " fill="#EBE1DC" transform="translate(328,201)"/>
<path d="M0 0 C1.666 0.035 3.334 0.05 5 0 C4.34 1.32 3.68 2.64 3 4 C-2.152 4.09 -6.919 3.847 -12 3 C-11.01 2.67 -10.02 2.34 -9 2 C-9 1.34 -9 0.68 -9 0 C-5.941 -1.53 -3.325 -0.507 0 0 Z " fill="#EFF8F9" transform="translate(349,291)"/>
<path d="M0 0 C2.052 2.052 2.953 3.74 4.25 6.312 C6.597 10.657 9.016 13.128 13 16 C12.01 16.66 11.02 17.32 10 18 C5.374 13.725 1.617 9.779 -1 4 C-0.75 1.562 -0.75 1.562 0 0 Z " fill="#A39FAF" transform="translate(317,242)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C6.33 2.98 6.66 4.96 7 7 C5.02 7.66 3.04 8.32 1 9 C0.67 7.68 0.34 6.36 0 5 C-0.66 5 -1.32 5 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#5CBA91" transform="translate(41,152)"/>
<path d="M0 0 C1.858 3.135 2.201 5.375 2 9 C0.68 9 -0.64 9 -2 9 C-2 8.34 -2 7.68 -2 7 C-2.99 7 -3.98 7 -5 7 C-5 5.02 -5 3.04 -5 1 C-2 0 -2 0 0 0 Z " fill="#3E363B" transform="translate(334,527)"/>
<path d="M0 0 C0.722 0.103 1.444 0.206 2.188 0.312 C2.517 1.962 2.848 3.613 3.188 5.312 C1.625 6.438 1.625 6.438 -0.812 7.312 C-4.562 6.438 -4.562 6.438 -7.812 5.312 C-3.505 0.389 -3.505 0.389 0 0 Z " fill="#BBD6E3" transform="translate(315.8125,457.6875)"/>
<path d="M0 0 C2.64 0 5.28 0 8 0 C7.361 0.681 6.721 1.361 6.062 2.062 C3.674 5.464 3.321 7.904 3 12 C2.67 12 2.34 12 2 12 C1.67 14.31 1.34 16.62 1 19 C0.34 19 -0.32 19 -1 19 C-0.67 12.73 -0.34 6.46 0 0 Z " fill="#E2E7EC" transform="translate(293,277)"/>
<path d="M0 0 C4.95 0.33 9.9 0.66 15 1 C15 1.99 15 2.98 15 4 C13.25 4.054 11.5 4.093 9.75 4.125 C8.775 4.148 7.801 4.171 6.797 4.195 C3.98 3.999 2.391 3.446 0 2 C0 1.34 0 0.68 0 0 Z " fill="#F8F9FB" transform="translate(446,217)"/>
<path d="M0 0 C2.153 2.153 2.935 3.848 4.125 6.625 C4.478 7.442 4.831 8.26 5.195 9.102 C5.461 9.728 5.726 10.355 6 11 C5.01 11 4.02 11 3 11 C3 10.34 3 9.68 3 9 C2.34 9 1.68 9 1 9 C-0.625 7.5 -0.625 7.5 -2 6 C-2.66 7.32 -3.32 8.64 -4 10 C-4.33 9.01 -4.66 8.02 -5 7 C-2 2 -2 2 0 0 Z " fill="#EEF1F5" transform="translate(423,210)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 2.65 2 4.3 2 6 C1.313 6.338 0.626 6.675 -0.082 7.023 C-0.983 7.469 -1.884 7.915 -2.812 8.375 C-3.706 8.816 -4.599 9.257 -5.52 9.711 C-8.146 11.019 -8.146 11.019 -11 13 C-9.436 9.162 -6.975 6.833 -4 4 C-3.237 3.237 -2.474 2.474 -1.688 1.688 C-1.131 1.131 -0.574 0.574 0 0 Z " fill="#E3E7ED" transform="translate(334,185)"/>
<path d="M0 0 C2.31 0.33 4.62 0.66 7 1 C7.33 2.65 7.66 4.3 8 6 C7.278 5.814 6.556 5.629 5.812 5.438 C2.872 4.98 0.859 5.265 -2 6 C-2 4.68 -2 3.36 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#2B1A4E" transform="translate(563,377)"/>
<path d="M0 0 C1.128 3.383 0.818 4.768 0.062 8.188 C-0.132 9.089 -0.327 9.99 -0.527 10.918 C-0.683 11.605 -0.839 12.292 -1 13 C-1.33 12.01 -1.66 11.02 -2 10 C-3.65 10 -5.3 10 -7 10 C-6.505 9.103 -6.505 9.103 -6 8.188 C-4.792 5.946 -4.792 5.946 -5 3 C-2.5 1.312 -2.5 1.312 0 0 Z " fill="#889FC1" transform="translate(408,304)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C4.262 2.525 4.099 4.312 4.062 7.125 C4.053 8.035 4.044 8.945 4.035 9.883 C4.024 10.581 4.012 11.28 4 12 C2.078 11.66 2.078 11.66 0 11 C-1.25 8.438 -1.25 8.438 -2 6 C-1.34 6 -0.68 6 0 6 C0 4.02 0 2.04 0 0 Z " fill="#1B275C" transform="translate(253,241)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C1.99 2.33 2.98 2.66 4 3 C4 4.32 4 5.64 4 7 C2.35 7.33 0.7 7.66 -1 8 C-1.33 7.34 -1.66 6.68 -2 6 C-2.33 6.99 -2.66 7.98 -3 9 C-3.66 9 -4.32 9 -5 9 C-5.33 7.68 -5.66 6.36 -6 5 C-4.02 3.35 -2.04 1.7 0 0 Z " fill="#2E3248" transform="translate(573,217)"/>
<path d="M0 0 C3.63 0 7.26 0 11 0 C11.66 2.31 12.32 4.62 13 7 C9.637 7 8.695 6.408 5.938 4.625 C5.245 4.184 4.553 3.743 3.84 3.289 C2 2 2 2 0 0 Z " fill="#14215A" transform="translate(386,179)"/>
<path d="M0 0 C3.664 2.063 6.705 4.359 9.812 7.188 C10.603 7.903 11.393 8.618 12.207 9.355 C12.799 9.898 13.39 10.441 14 11 C13.34 11.66 12.68 12.32 12 13 C11.484 12.423 10.969 11.845 10.438 11.25 C8.324 9.299 6.817 8.325 4.312 7.062 C1 5 1 5 0.062 2.25 C0.042 1.507 0.021 0.765 0 0 Z " fill="#BCD3E3" transform="translate(391,182)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C6 2.98 6 4.96 6 7 C4.35 7.66 2.7 8.32 1 9 C1 8.01 1 7.02 1 6 C0.01 5.67 -0.98 5.34 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#F6D326" transform="translate(318,96)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 2.31 4 4.62 4 7 C4.99 7 5.98 7 7 7 C7 7.66 7 8.32 7 9 C7.66 9.33 8.32 9.66 9 10 C7.329 10.217 7.329 10.217 5.625 10.438 C2.179 10.784 2.179 10.784 0 12 C-0.99 11.67 -1.98 11.34 -3 11 C-2.67 9.68 -2.34 8.36 -2 7 C-2 7.66 -2 8.32 -2 9 C0.784 7.294 1.854 6.524 2.75 3.312 C2.832 2.549 2.915 1.786 3 1 C2.01 0.67 1.02 0.34 0 0 Z " fill="#202943" transform="translate(497,559)"/>
<path d="M0 0 C3.96 0 7.92 0 12 0 C12 1.32 12 2.64 12 4 C7.839 4.082 4.053 3.982 0 3 C0 2.01 0 1.02 0 0 Z " fill="#71BCD7" transform="translate(354,273)"/>
<path d="M0 0 C3.875 1.875 3.875 1.875 5 3 C8.663 3.136 11.506 3.165 15 2 C15 2.99 15 3.98 15 5 C11.585 7.102 8.977 7.568 5 7 C2.125 4.625 2.125 4.625 0 2 C0 1.34 0 0.68 0 0 Z " fill="#E8EEF1" transform="translate(243,268)"/>
<path d="M0 0 C1.675 0.286 3.344 0.618 5 1 C6.125 4.75 6.125 4.75 5 7 C3.02 7 1.04 7 -1 7 C-1.043 5 -1.041 3 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#385381" transform="translate(441,219)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C3.34 4.31 2.68 6.62 2 9 C0.35 9.33 -1.3 9.66 -3 10 C-2.25 2.25 -2.25 2.25 0 0 Z " fill="#2B1D58" transform="translate(547,556)"/>
<path d="M0 0 C1.796 1.796 2.865 3.267 4.125 5.438 C4.478 6.034 4.831 6.631 5.195 7.246 C6 9 6 9 6 12 C5.34 12 4.68 12 4 12 C3.34 10.35 2.68 8.7 2 7 C1.01 7 0.02 7 -1 7 C-2.682 6.374 -4.352 5.712 -6 5 C-4.067 2.975 -2.368 1.579 0 0 Z " fill="#BBCFDD" transform="translate(274,463)"/>
<path d="M0 0 C1.675 0.286 3.344 0.618 5 1 C4.546 1.557 4.092 2.114 3.625 2.688 C1.963 5.053 0.979 7.29 0 10 C-1.32 10 -2.64 10 -4 10 C-3.524 8.52 -3.044 7.041 -2.562 5.562 C-2.296 4.739 -2.029 3.915 -1.754 3.066 C-1 1 -1 1 0 0 Z " fill="#F0FAFB" transform="translate(335,266)"/>
<path d="M0 0 C1.675 0.286 3.344 0.618 5 1 C5 3.64 5 6.28 5 9 C4.34 9 3.68 9 3 9 C3 8.34 3 7.68 3 7 C2.34 7 1.68 7 1 7 C0.67 7.66 0.34 8.32 0 9 C-0.879 2.848 -0.879 2.848 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#F6F6F8" transform="translate(259,240)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.361 1.311 2.714 2.624 3.062 3.938 C3.26 4.668 3.457 5.399 3.66 6.152 C3.772 6.762 3.884 7.372 4 8 C3 9 3 9 -0.562 9.062 C-1.697 9.042 -2.831 9.021 -4 9 C-3.34 7.02 -2.68 5.04 -2 3 C-1.34 3 -0.68 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#C2E1E9" transform="translate(410,208)"/>
<path d="M0 0 C0.33 1.32 0.66 2.64 1 4 C0.01 4.33 -0.98 4.66 -2 5 C-2.66 4.67 -3.32 4.34 -4 4 C-4 4.66 -4 5.32 -4 6 C-5.32 6 -6.64 6 -8 6 C-8 4.68 -8 3.36 -8 2 C-7.34 2 -6.68 2 -6 2 C-6 1.34 -6 0.68 -6 0 C-3.509 -1.245 -2.589 -0.777 0 0 Z " fill="#16194D" transform="translate(65,209)"/>
<path d="M0 0 C0.804 0.433 0.804 0.433 1.625 0.875 C4.064 2.1 4.064 2.1 7.062 2.938 C9.962 3.986 11.028 4.746 13 7 C13.99 7.66 14.98 8.32 16 9 C9.58 8.429 3.984 6.327 -2 4 C-1.34 2.68 -0.68 1.36 0 0 Z " fill="#DB9D3E" transform="translate(148,195)"/>
<path d="M0 0 C0.99 1.32 1.98 2.64 3 4 C1.69 5.17 0.377 6.336 -0.938 7.5 C-1.668 8.15 -2.399 8.799 -3.152 9.469 C-5 11 -5 11 -6 11 C-5.67 8.36 -5.34 5.72 -5 3 C-4.01 3 -3.02 3 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#B6D1E0" transform="translate(354,411)"/>
<path d="M0 0 C3.106 0.446 6.209 0.909 9.312 1.375 C10.634 1.564 10.634 1.564 11.982 1.758 C12.83 1.887 13.678 2.016 14.551 2.148 C15.331 2.264 16.111 2.379 16.915 2.498 C19 3 19 3 22 5 C14.123 5.411 7.497 4.436 0 2 C0 1.34 0 0.68 0 0 Z " fill="#EFF1F6" transform="translate(334,344)"/>
<path d="M0 0 C5.75 1.625 5.75 1.625 8 5 C8 5.99 8 6.98 8 8 C5.688 8.312 5.688 8.312 3 8 C0.758 5.139 0 3.659 0 0 Z " fill="#75CBE7" transform="translate(362,288)"/>
<path d="M0 0 C1.545 2.98 2.836 6.001 4.062 9.125 C5.429 12.608 5.429 12.608 7 16 C3.565 14.528 1.111 13.127 -1 10 C-1.037 6.6 -0.587 3.344 0 0 Z " fill="#1A2557" transform="translate(313,236)"/>
<path d="M0 0 C0.66 0.99 1.32 1.98 2 3 C1.34 3.66 0.68 4.32 0 5 C-0.99 5 -1.98 5 -3 5 C-3.33 5.66 -3.66 6.32 -4 7 C-5.65 6.67 -7.3 6.34 -9 6 C-8.34 4.35 -7.68 2.7 -7 1 C-3.535 0.505 -3.535 0.505 0 0 Z " fill="#251C49" transform="translate(66,545)"/>
<path d="M0 0 C2 0 2 0 3.727 1.645 C4.353 2.36 4.98 3.075 5.625 3.812 C6.257 4.52 6.888 5.228 7.539 5.957 C9 8 9 8 9 11 C5.735 9.196 4.111 8.166 2 5 C1.402 5.165 0.804 5.33 0.188 5.5 C-2 6 -2 6 -5 6 C-3.384 3.959 -1.714 1.959 0 0 Z " fill="#EBEEF4" transform="translate(280,456)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C4.01 0.495 4.01 0.495 3 1 C3 2.65 3 4.3 3 6 C1.02 6.33 -0.96 6.66 -3 7 C-2.67 7.66 -2.34 8.32 -2 9 C-2.33 9.66 -2.66 10.32 -3 11 C-4.65 10.67 -6.3 10.34 -8 10 C-6.822 7.644 -5.843 5.907 -4 4 C-0.812 3.75 -0.812 3.75 2 4 C1.34 2.68 0.68 1.36 0 0 Z " fill="#1F1945" transform="translate(178,402)"/>
<path d="M0 0 C-1.627 3.693 -3.913 6.616 -6.438 9.75 C-7.22 10.735 -8.002 11.72 -8.809 12.734 C-9.532 13.482 -10.255 14.23 -11 15 C-11.99 15 -12.98 15 -14 15 C-3.013 0 -3.013 0 0 0 Z " fill="#C0D4E4" transform="translate(374,380)"/>
<path d="M0 0 C0.99 0.66 1.98 1.32 3 2 C2.67 4.64 2.34 7.28 2 10 C-1.75 11.125 -1.75 11.125 -4 10 C-2.667 6.667 -1.333 3.333 0 0 Z " fill="#BCD8E4" transform="translate(399,348)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C6 2.65 6 4.3 6 6 C4.35 6.66 2.7 7.32 1 8 C1 7.34 1 6.68 1 6 C0.01 5.67 -0.98 5.34 -2 5 C-2 4.34 -2 3.68 -2 3 C-1.34 3 -0.68 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#D8BA2A" transform="translate(195,336)"/>
<path d="M0 0 C0 3.11 -0.467 4.394 -1.812 7.125 C-2.149 7.829 -2.485 8.533 -2.832 9.258 C-4 11 -4 11 -7 12 C-7.66 11.01 -8.32 10.02 -9 9 C-6.21 5.513 -3.748 2.498 0 0 Z " fill="#ECA638" transform="translate(132,83)"/>
<path d="M0 0 C2.475 0.495 2.475 0.495 5 1 C4.67 1.99 4.34 2.98 4 4 C5.65 3.67 7.3 3.34 9 3 C8.34 4.98 7.68 6.96 7 9 C5.188 8.875 5.188 8.875 3 8 C0 2.964 0 2.964 0 0 Z " fill="#5B5546" transform="translate(395,514)"/>
<path d="M0 0 C2.179 3.268 3 5.08 3 9 C-1.343 13 -1.343 13 -4 13 C-3.795 12.397 -3.59 11.793 -3.379 11.172 C-2.975 9.973 -2.975 9.973 -2.562 8.75 C-2.296 7.961 -2.029 7.172 -1.754 6.359 C-1.08 4.252 -0.508 2.152 0 0 Z " fill="#18255D" transform="translate(388,370)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.624 3.782 1.327 5.588 -0.438 7.812 C-2 9 -2 9 -4 9 C-4 9.99 -4 10.98 -4 12 C-5.65 12.66 -7.3 13.32 -9 14 C-7.875 12.229 -6.75 10.458 -5.625 8.688 C-4.999 7.701 -4.372 6.715 -3.727 5.699 C-2.503 3.787 -1.259 1.889 0 0 Z " fill="#F1F6F8" transform="translate(400,249)"/>
<path d="M0 0 C2.375 -0.188 2.375 -0.188 5 0 C7 3 7 3 7 6 C4.03 6 1.06 6 -2 6 C-2 5.34 -2 4.68 -2 4 C-1.34 4 -0.68 4 0 4 C0 2.68 0 1.36 0 0 Z " fill="#555242" transform="translate(42,110)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C4.34 3.97 3.68 6.94 3 10 C1.68 9.67 0.36 9.34 -1 9 C-1.81 6.085 -2.218 4.539 -1.062 1.688 C-0.712 1.131 -0.361 0.574 0 0 Z " fill="#FBAF2F" transform="translate(123,93)"/>
<path d="M0 0 C0 0.66 0 1.32 0 2 C0.66 2.33 1.32 2.66 2 3 C1.34 3 0.68 3 0 3 C-0.217 3.928 -0.217 3.928 -0.438 4.875 C-1 7 -1 7 -2 9 C-1.34 9.33 -0.68 9.66 0 10 C-0.99 10 -1.98 10 -3 10 C-3 9.34 -3 8.68 -3 8 C-3.99 8 -4.98 8 -6 8 C-6 7.34 -6 6.68 -6 6 C-5.01 6 -4.02 6 -3 6 C-3 5.34 -3 4.68 -3 4 C-3.66 4 -4.32 4 -5 4 C-5 3.01 -5 2.02 -5 1 C-3 0 -3 0 0 0 Z " fill="#16174A" transform="translate(495,55)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 1.66 3 2.32 3 3 C3.99 2.67 4.98 2.34 6 2 C6 2.99 6 3.98 6 5 C6.99 5.33 7.98 5.66 9 6 C7.812 8 7.812 8 6 10 C3.312 10.25 3.312 10.25 1 10 C1.99 9.34 2.98 8.68 4 8 C3.01 7.67 2.02 7.34 1 7 C1.33 5.35 1.66 3.7 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#281D4D" transform="translate(452,539)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C3.65 2.33 5.3 2.66 7 3 C6.01 3.495 6.01 3.495 5 4 C5 4.66 5 5.32 5 6 C5.66 6 6.32 6 7 6 C7 6.66 7 7.32 7 8 C6.34 8 5.68 8 5 8 C5 8.99 5 9.98 5 11 C5.66 11 6.32 11 7 11 C6.67 11.66 6.34 12.32 6 13 C5.34 12.67 4.68 12.34 4 12 C4 11.34 4 10.68 4 10 C3.01 10 2.02 10 1 10 C1.66 8.02 2.32 6.04 3 4 C2.01 3.34 1.02 2.68 0 2 C0 1.34 0 0.68 0 0 Z " fill="#162159" transform="translate(257,457)"/>
<path d="M0 0 C0.66 1.32 1.32 2.64 2 4 C2.99 3.01 3.98 2.02 5 1 C5.66 1.33 6.32 1.66 7 2 C5.926 4.915 5.222 6.778 3 9 C1.012 9.398 -0.989 9.738 -3 10 C-2.691 9.464 -2.381 8.928 -2.062 8.375 C-0.822 5.602 -0.409 3 0 0 Z " fill="#15245D" transform="translate(347,417)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C2.98 2 4.96 2 7 2 C3.25 7.875 3.25 7.875 1 9 C-0.562 7.25 -0.562 7.25 -2 5 C-1.752 2.83 -1.558 1.558 0 0 Z " fill="#F2F7F8" transform="translate(344,402)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C4.67 3.3 4.34 6.6 4 10 C3.01 10.33 2.02 10.66 1 11 C0.67 7.37 0.34 3.74 0 0 Z " fill="#F1F5F8" transform="translate(370,289)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.164 0.888 1.164 0.888 1.332 1.793 C2.259 6.413 3.224 10.088 6 14 C5.01 14 4.02 14 3 14 C0.927 11.688 -0.01 9.971 -1 7 C-1.99 6.34 -2.98 5.68 -4 5 C-2.693 3.313 -1.358 1.646 0 0 Z " fill="#E9EDF4" transform="translate(407,240)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C1.66 2 2.32 2 3 2 C1.748 6.486 0.206 9.593 -3 13 C-3.66 13 -4.32 13 -5 13 C-4.494 10.831 -4 9 -3 7 C-2.34 7 -1.68 7 -1 7 C-1.021 6.031 -1.041 5.061 -1.062 4.062 C-1 1 -1 1 0 0 Z " fill="#1A265D" transform="translate(445,171)"/>
<path d="M0 0 C0.66 1.32 1.32 2.64 2 4 C-0.132 8.509 -2.768 12.191 -6 16 C-6.66 15.67 -7.32 15.34 -8 15 C-5.36 10.05 -2.72 5.1 0 0 Z " fill="#283562" transform="translate(472,163)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.396 4.85 0.232 7.861 -1.562 11.312 C-2.018 12.196 -2.473 13.079 -2.941 13.988 C-3.291 14.652 -3.64 15.316 -4 16 C-5.162 13.134 -4.995 11.984 -4.004 8.984 C-3.528 7.917 -3.053 6.85 -2.562 5.75 C-2.089 4.672 -1.616 3.595 -1.129 2.484 C-0.756 1.665 -0.384 0.845 0 0 Z " fill="#BBDAE4" transform="translate(299,397)"/>
<path d="M0 0 C4.137 0.188 5.736 0.764 8.875 3.562 C9.927 4.769 9.927 4.769 11 6 C8.436 5.487 5.872 4.973 3.312 4.438 C1.065 3.938 1.065 3.938 -1 4 C-1 4.66 -1 5.32 -1 6 C-1.66 6 -2.32 6 -3 6 C-1.125 1.125 -1.125 1.125 0 0 Z " fill="#EDF0F5" transform="translate(277,379)"/>
<path d="M0 0 C0.33 1.65 0.66 3.3 1 5 C-0.65 5 -2.3 5 -4 5 C-4 4.34 -4 3.68 -4 3 C-4.866 3.309 -4.866 3.309 -5.75 3.625 C-8.52 4.087 -9.646 3.429 -12 2 C-7.88 0.708 -4.332 -0.263 0 0 Z " fill="#16275E" transform="translate(324,306)"/>
<path d="M0 0 C-3.489 1.745 -7.497 1.462 -11.348 1.719 C-13.92 1.711 -13.92 1.711 -15 3 C-17.671 3.141 -20.324 3.042 -23 3 C-20.578 0.173 -20.079 0.011 -16.094 -0.547 C-14.563 -0.629 -13.032 -0.696 -11.5 -0.75 C-10.728 -0.793 -9.956 -0.835 -9.16 -0.879 C-5.808 -1.036 -3.209 -1.07 0 0 Z " fill="#6ABAD8" transform="translate(354,285)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C5.33 2.65 5.66 4.3 6 6 C4.68 6 3.36 6 2 6 C2 6.66 2 7.32 2 8 C1.34 8 0.68 8 0 8 C0 7.01 0 6.02 0 5 C-0.66 5 -1.32 5 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#D8872C" transform="translate(60,251)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 1.66 2 2.32 2 3 C-0.31 3 -2.62 3 -5 3 C-5.66 4.65 -6.32 6.3 -7 8 C-7.99 8 -8.98 8 -10 8 C-10.33 6.35 -10.66 4.7 -11 3 C-8.595 1.797 -7.05 1.899 -4.375 1.938 C-3.149 1.951 -3.149 1.951 -1.898 1.965 C-0.959 1.982 -0.959 1.982 0 2 C0 1.34 0 0.68 0 0 Z " fill="#E36233" transform="translate(64,543)"/>
<path d="M0 0 C3.3 1.98 6.6 3.96 10 6 C9.67 7.65 9.34 9.3 9 11 C4.571 8.786 2.457 6.277 0 2 C0 1.34 0 0.68 0 0 Z " fill="#A5B7D5" transform="translate(276,431)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C0 4 0 4 -2.812 4.188 C-5.867 4.008 -7.438 3.577 -10 2 C-6.275 -0.661 -4.421 -1.39 0 0 Z " fill="#F0F3F6" transform="translate(316,353)"/>
<path d="M0 0 C0.33 1.32 0.66 2.64 1 4 C-1.312 4.688 -1.312 4.688 -4 5 C-5.5 3.625 -5.5 3.625 -7 2 C-9.606 1.278 -9.606 1.278 -12 1 C-12 0.67 -12 0.34 -12 0 C-7.684 -0.762 -4.256 -1.161 0 0 Z " fill="#A1B6CF" transform="translate(366,344)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C2.99 2 3.98 2 5 2 C5 3.65 5 5.3 5 7 C3.35 7.33 1.7 7.66 0 8 C-0.66 6.35 -1.32 4.7 -2 3 C-1.34 3 -0.68 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#E8C133" transform="translate(396,433)"/>
<path d="M0 0 C-3.287 3.813 -6.397 5.23 -11 7 C-10.75 4.625 -10.75 4.625 -10 2 C-6.884 -0.424 -3.826 -0.174 0 0 Z " fill="#111E56" transform="translate(273,435)"/>
<path d="M0 0 C5.75 0.75 5.75 0.75 8 3 C6.35 3 4.7 3 3 3 C3 3.66 3 4.32 3 5 C0.69 5.33 -1.62 5.66 -4 6 C-2.68 4.02 -1.36 2.04 0 0 Z " fill="#F0F4F7" transform="translate(306,396)"/>
<path d="M0 0 C1.418 0.088 2.834 0.196 4.25 0.312 C5.433 0.4 5.433 0.4 6.641 0.488 C9 1 9 1 13 4 C8.71 4 4.42 4 0 4 C0 2.68 0 1.36 0 0 Z " fill="#B8CDE1" transform="translate(317,337)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C3.65 2.33 5.3 2.66 7 3 C6.67 3.66 6.34 4.32 6 5 C2.016 6.172 -1.874 6.081 -6 6 C-5.381 5.938 -4.762 5.876 -4.125 5.812 C-1.722 5.171 -1.722 5.171 -0.75 2.438 C-0.502 1.633 -0.255 0.829 0 0 Z " fill="#B5CFDF" transform="translate(434,256)"/>
<path d="M0 0 C-2.038 2.038 -3.294 2.678 -5.938 3.688 C-6.627 3.959 -7.317 4.231 -8.027 4.512 C-10 5 -10 5 -13 4 C-12.67 3.34 -12.34 2.68 -12 2 C-11.34 2 -10.68 2 -10 2 C-10 1.34 -10 0.68 -10 0 C-6.424 -1.238 -3.663 -0.749 0 0 Z " fill="#EBAA3A" transform="translate(204,198)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.25 3.25 3.25 3.25 3 7 C1.062 9.125 1.062 9.125 -1 11 C-1.797 13.642 -1.797 13.642 -2 16 C-2.66 15.67 -3.32 15.34 -4 15 C-2.25 9.25 -2.25 9.25 0 7 C-0.99 6.01 -1.98 5.02 -3 4 C-2.01 3.67 -1.02 3.34 0 3 C0 2.01 0 1.02 0 0 Z " fill="#2C1C46" transform="translate(545,186)"/>
<path d="M0 0 C1.675 0.286 3.344 0.618 5 1 C5.625 3.375 5.625 3.375 6 6 C5.34 6.66 4.68 7.32 4 8 C3.67 6.35 3.34 4.7 3 3 C2.01 3 1.02 3 0 3 C-0.33 3.99 -0.66 4.98 -1 6 C-1.66 6 -2.32 6 -3 6 C-1.125 1.125 -1.125 1.125 0 0 Z " fill="#DBDEE7" transform="translate(456,154)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.66 5 1.32 5 2 C5.66 2 6.32 2 7 2 C6.34 3.32 5.68 4.64 5 6 C2 6 2 6 0 5 C0 3.35 0 1.7 0 0 Z " fill="#4AB0C7" transform="translate(472,518)"/>
<path d="M0 0 C3.3 0 6.6 0 10 0 C9.01 0.33 8.02 0.66 7 1 C6.67 2.65 6.34 4.3 6 6 C4.35 5.67 2.7 5.34 1 5 C0.67 3.35 0.34 1.7 0 0 Z " fill="#3E6149" transform="translate(549,472)"/>
<path d="M0 0 C4.455 0.99 4.455 0.99 9 2 C9.33 1.34 9.66 0.68 10 0 C10.082 4.161 9.982 7.947 9 12 C8.34 11.67 7.68 11.34 7 11 C7.66 8.69 8.32 6.38 9 4 C8.072 3.783 8.072 3.783 7.125 3.562 C5 3 5 3 3 2 C2.67 2.66 2.34 3.32 2 4 C2 3.34 2 2.68 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#1C1F3D" transform="translate(84,380)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4.33 1.65 4.66 3.3 5 5 C1.25 8 1.25 8 -1 8 C-1 4.887 -0.826 2.892 0 0 Z " fill="#67593B" transform="translate(572,334)"/>
<path d="M0 0 C5.662 1.477 5.662 1.477 7.375 4.125 C7.581 4.744 7.787 5.363 8 6 C7.01 6.33 6.02 6.66 5 7 C4.34 6.34 3.68 5.68 3 5 C1.016 4.286 -0.983 3.614 -3 3 C-2.01 2.67 -1.02 2.34 0 2 C0 1.34 0 0.68 0 0 Z " fill="#142346" transform="translate(80,294)"/>
<path d="M0 0 C-0.66 2.31 -1.32 4.62 -2 7 C-3.98 6.01 -5.96 5.02 -8 4 C-7.67 3.01 -7.34 2.02 -7 1 C-4.537 -0.231 -2.72 -0.072 0 0 Z " fill="#A8BED6" transform="translate(332,269)"/>
<path d="M0 0 C1.851 3.929 2.22 6.988 2.125 11.312 C2.107 12.381 2.089 13.45 2.07 14.551 C2.036 15.763 2.036 15.763 2 17 C1.67 17 1.34 17 1 17 C0.927 16.06 0.927 16.06 0.852 15.102 C0.777 14.284 0.702 13.467 0.625 12.625 C0.521 11.407 0.521 11.407 0.414 10.164 C0.171 7.797 0.171 7.797 -2 6 C-2.707 4.35 -3.379 2.684 -4 1 C-2 0 -2 0 0 0 Z " fill="#CED0D9" transform="translate(455,251)"/>
<path d="M0 0 C9.595 2.891 9.595 2.891 13 6 C10.625 6.125 10.625 6.125 8 6 C7.34 5.34 6.68 4.68 6 4 C4.68 4 3.36 4 2 4 C1.67 5.65 1.34 7.3 1 9 C0.67 9 0.34 9 0 9 C-1.125 2.25 -1.125 2.25 0 0 Z " fill="#A6BBD3" transform="translate(439,216)"/>
<path d="M0 0 C0.33 1.32 0.66 2.64 1 4 C0.01 4.33 -0.98 4.66 -2 5 C-2 6.98 -2 8.96 -2 11 C-1.34 11.33 -0.68 11.66 0 12 C-1.32 12.33 -2.64 12.66 -4 13 C-3.959 11.928 -3.918 10.855 -3.875 9.75 C-3.989 6.343 -4.213 4.793 -6 2 C-4.02 1.34 -2.04 0.68 0 0 Z " fill="#DE5E36" transform="translate(536,188)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C5 1.98 5 3.96 5 6 C4.01 6.33 3.02 6.66 2 7 C2 6.34 2 5.68 2 5 C1.01 5 0.02 5 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#54274A" transform="translate(81,74)"/>
<path d="M0 0 C2.475 0.495 2.475 0.495 5 1 C5 2.65 5 4.3 5 6 C5.66 6.33 6.32 6.66 7 7 C4.69 6.67 2.38 6.34 0 6 C0 4.02 0 2.04 0 0 Z " fill="#655E36" transform="translate(414,540)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C-1.462 7.923 -1.462 7.923 -4 10 C-4.66 10 -5.32 10 -6 10 C-4.63 6.005 -2.743 3.2 0 0 Z " fill="#BED9E8" transform="translate(279,451)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C5 2.65 5 4.3 5 6 C3.35 6.33 1.7 6.66 0 7 C0 6.01 0 5.02 0 4 C-0.66 4 -1.32 4 -2 4 C-2 3.34 -2 2.68 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#D8A830" transform="translate(458,452)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.625 2.375 3.625 2.375 4 5 C3.34 5.66 2.68 6.32 2 7 C1.01 7 0.02 7 -1 7 C-1.625 4.625 -1.625 4.625 -2 2 C-1.34 1.34 -0.68 0.68 0 0 Z " fill="#566A94" transform="translate(340,411)"/>
<path d="M0 0 C1.405 2.267 2.08 3.465 1.68 6.148 C-0.052 10.939 -1.956 14.907 -5 19 C-5 15.658 -4.006 13.286 -2.801 10.207 C-1.587 6.861 -0.804 3.465 0 0 Z " fill="#4A5E86" transform="translate(291,290)"/>
<path d="M0 0 C1.666 -0.043 3.334 -0.041 5 0 C6 1 6 1 6.062 3.562 C6.042 4.367 6.021 5.171 6 6 C5.01 6.495 5.01 6.495 4 7 C4 6.01 4 5.02 4 4 C2.02 4 0.04 4 -2 4 C-1.34 2.68 -0.68 1.36 0 0 Z " fill="#ECECF1" transform="translate(480,178)"/>
<path d="M0 0 C1.937 -0.081 3.875 -0.139 5.812 -0.188 C6.891 -0.222 7.97 -0.257 9.082 -0.293 C12 0 12 0 15 3 C10.38 3.33 5.76 3.66 1 4 C0.67 2.68 0.34 1.36 0 0 Z " fill="#131F58" transform="translate(353,172)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C4.158 4.473 4.069 7.361 4 11 C4.66 11.33 5.32 11.66 6 12 C5.67 12.66 5.34 13.32 5 14 C5.66 14.33 6.32 14.66 7 15 C6.01 16.485 6.01 16.485 5 18 C2.136 12.142 0.988 6.426 0 0 Z " fill="#E2A342" transform="translate(108,148)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C5 2.65 5 4.3 5 6 C3.35 6.33 1.7 6.66 0 7 C-0.66 5.68 -1.32 4.36 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#9BCC42" transform="translate(484,21)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C2.66 2 3.32 2 4 2 C4 2.99 4 3.98 4 5 C4.66 5.33 5.32 5.66 6 6 C5.01 6.33 4.02 6.66 3 7 C0.812 5.562 0.812 5.562 -1 4 C-1 6.31 -1 8.62 -1 11 C-1.33 11 -1.66 11 -2 11 C-2 8.03 -2 5.06 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#2B1E47" transform="translate(53,528)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.062 1.812 3.062 1.812 4 4 C3.67 4.99 3.34 5.98 3 7 C1.35 7 -0.3 7 -2 7 C-2.33 5.35 -2.66 3.7 -3 2 C-2.01 2 -1.02 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#F0D025" transform="translate(478,418)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C2.32 1.67 3.64 1.34 5 1 C6 4 6 4 5 7 C3 7.75 3 7.75 1 8 C0 7 0 7 -0.062 3.438 C-0.042 2.303 -0.021 1.169 0 0 Z " fill="#6E5B3F" transform="translate(126,395)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-0.66 3 -1.32 3 -2 3 C-2.33 3.66 -2.66 4.32 -3 5 C-3 4.01 -3 3.02 -3 2 C-6.96 2 -10.92 2 -15 2 C-15 1.67 -15 1.34 -15 1 C-10.039 -0.323 -5.089 -0.089 0 0 Z " fill="#E9F6F6" transform="translate(369,271)"/>
<path d="M0 0 C1.938 0.688 1.938 0.688 4 2 C4.75 4.625 4.75 4.625 5 7 C2.69 7.33 0.38 7.66 -2 8 C-2 6.35 -2 4.7 -2 3 C-1.01 3.33 -0.02 3.66 1 4 C0.67 2.68 0.34 1.36 0 0 Z " fill="#213549" transform="translate(88,220)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-3.982 4.054 -6.982 3.841 -11 3 C-10.67 2.01 -10.34 1.02 -10 0 C-10 0.66 -10 1.32 -10 2 C-8.907 1.484 -7.814 0.969 -6.688 0.438 C-3 -1 -3 -1 0 0 Z " fill="#9F9CA8" transform="translate(333,197)"/>
<path d="M0 0 C0.99 0.66 1.98 1.32 3 2 C3.125 5 3.125 5 3 8 C3.33 8.66 3.66 9.32 4 10 C3.01 10 2.02 10 1 10 C1 9.01 1 8.02 1 7 C0.34 7 -0.32 7 -1 7 C-1.625 5.188 -1.625 5.188 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#1D1746" transform="translate(530,192)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C-2.089 5.059 -2.709 5.239 -6.188 5.125 C-8.075 5.063 -8.075 5.063 -10 5 C-9.67 4.01 -9.34 3.02 -9 2 C-3.211 0 -3.211 0 0 0 Z " fill="#18275F" transform="translate(293,488)"/>
<path d="M0 0 C1.207 0.031 1.207 0.031 2.438 0.062 C2.438 1.712 2.438 3.363 2.438 5.062 C0.787 5.392 -0.863 5.723 -2.562 6.062 C-2.945 4.406 -3.276 2.738 -3.562 1.062 C-2.562 0.062 -2.562 0.062 0 0 Z " fill="#E13688" transform="translate(140.5625,454.9375)"/>
<path d="M0 0 C1.991 2.986 2.941 5.597 4 9 C3.01 9.495 3.01 9.495 2 10 C1.34 9.01 0.68 8.02 0 7 C-1.314 5.647 -2.644 4.311 -4 3 C-2.68 2.01 -1.36 1.02 0 0 Z " fill="#AECAD9" transform="translate(271,437)"/>
<path d="M0 0 C2.31 0 4.62 0 7 0 C7.33 0.99 7.66 1.98 8 3 C7.67 3.66 7.34 4.32 7 5 C2.25 4.25 2.25 4.25 0 2 C0 1.34 0 0.68 0 0 Z " fill="#8CA2C1" transform="translate(392,310)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C0.875 3.972 -0.223 6.334 -2 9 C-4.31 8.67 -6.62 8.34 -9 8 C-9 7.67 -9 7.34 -9 7 C-7.577 6.876 -7.577 6.876 -6.125 6.75 C-2.921 6.352 -2.921 6.352 -1.688 4.062 C-1.461 3.382 -1.234 2.701 -1 2 C-0.67 1.34 -0.34 0.68 0 0 Z " fill="#E0E2EA" transform="translate(286,301)"/>
<path d="M0 0 C2.876 0.421 5.709 0.899 8.562 1.438 C9.772 1.659 9.772 1.659 11.006 1.885 C13.005 2.251 15.003 2.625 17 3 C17 3.33 17 3.66 17 4 C8.429 4.143 8.429 4.143 5 3 C4.67 3.99 4.34 4.98 4 6 C3.67 5.01 3.34 4.02 3 3 C1 1.791 1 1.791 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#CEE8EF" transform="translate(340,267)"/>
<path d="M0 0 C1.5 1.188 1.5 1.188 3 3 C3.188 5.688 3.188 5.688 3 8 C3.99 8.33 4.98 8.66 6 9 C5.34 9 4.68 9 4 9 C4 9.66 4 10.32 4 11 C2.35 11 0.7 11 -1 11 C-0.01 10.34 0.98 9.68 2 9 C2 7.68 2 6.36 2 5 C0.35 4.67 -1.3 4.34 -3 4 C-2.01 3.67 -1.02 3.34 0 3 C0 2.01 0 1.02 0 0 Z " fill="#262043" transform="translate(63,247)"/>
<path d="M0 0 C0.99 0.99 1.98 1.98 3 3 C3.99 3 4.98 3 6 3 C5.34 5.64 4.68 8.28 4 11 C3.34 11 2.68 11 2 11 C1.34 7.37 0.68 3.74 0 0 Z " fill="#78B9CF" transform="translate(404,227)"/>
<path d="M0 0 C1.176 0.464 1.176 0.464 2.375 0.938 C6.899 2.263 11.314 2.648 16 3 C15.67 3.99 15.34 4.98 15 6 C12.874 5.524 10.749 5.044 8.625 4.562 C7.442 4.296 6.258 4.029 5.039 3.754 C2 3 2 3 0 2 C0 1.34 0 0.68 0 0 Z " fill="#49608C" transform="translate(439,227)"/>
<path d="M0 0 C0 0.66 0 1.32 0 2 C-0.66 2 -1.32 2 -2 2 C-1.67 3.98 -1.34 5.96 -1 8 C-2.65 8 -4.3 8 -6 8 C-6.188 5.125 -6.188 5.125 -6 2 C-3 0 -3 0 0 0 Z " fill="#FB6022" transform="translate(540,191)"/>
<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1.706 3.343 1.372 4.677 1 6 C1.33 6.66 1.66 7.32 2 8 C0.625 10 0.625 10 -1 12 C-1.66 12 -2.32 12 -3 12 C-2.69 10.562 -2.377 9.125 -2.062 7.688 C-1.888 6.887 -1.714 6.086 -1.535 5.262 C-1 3 -1 3 0 0 Z " fill="#E7E8EE" transform="translate(452,160)"/>
<path d="M0 0 C1.207 0.031 1.207 0.031 2.438 0.062 C2.438 1.712 2.438 3.362 2.438 5.062 C0.788 5.393 -0.863 5.722 -2.562 6.062 C-2.945 4.406 -3.276 2.738 -3.562 1.062 C-2.562 0.062 -2.562 0.062 0 0 Z " fill="#827236" transform="translate(291.5625,562.9375)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C1.804 2.309 2.609 2.619 3.438 2.938 C6 4 6 4 8 7 C8 7.99 8 8.98 8 10 C7.01 10 6.02 10 5 10 C5 8.68 5 7.36 5 6 C4.01 6 3.02 6 2 6 C2 5.34 2 4.68 2 4 C0.68 3.67 -0.64 3.34 -2 3 C-1 1 -1 1 0 0 Z " fill="#172748" transform="translate(519,513)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-6.055 3.195 -6.055 3.195 -8 3 C-8.66 2.34 -9.32 1.68 -10 1 C-6.218 -0.837 -4.054 -1.158 0 0 Z " fill="#B1CADC" transform="translate(400,305)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 3.96 1 7.92 1 12 C0.34 10.68 -0.32 9.36 -1 8 C-2.32 8.33 -3.64 8.66 -5 9 C-5.33 8.34 -5.66 7.68 -6 7 C-5.196 6.216 -4.391 5.433 -3.562 4.625 C-1.013 2.28 -1.013 2.28 0 0 Z " fill="#B0C5D5" transform="translate(379,278)"/>
<path d="M0 0 C1.317 1.976 2.63 3.955 3.938 5.938 C5.564 8.352 7.226 10.694 9 13 C8.01 13 7.02 13 6 13 C4.43 11.391 4.43 11.391 2.875 9.25 C2.357 8.554 1.839 7.858 1.305 7.141 C0.024 5.04 -0.652 3.427 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#54668C" transform="translate(409,244)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C3.34 2.65 2.68 4.3 2 6 C-0.929 5.372 -3.361 4.414 -6 3 C-5 2 -5 2 -2.438 1.938 C-1.231 1.968 -1.231 1.968 0 2 C0 1.34 0 0.68 0 0 Z " fill="#A7BBD3" transform="translate(446,224)"/>
<path d="M0 0 C3.819 4.514 5.347 9.097 5 15 C3.68 14.34 2.36 13.68 1 13 C1.33 12.01 1.66 11.02 2 10 C1.359 7.992 0.691 5.992 0 4 C0 2.68 0 1.36 0 0 Z " fill="#AAC9DF" transform="translate(411,204)"/>
<path d="M0 0 C1.32 1.32 2.64 2.64 4 4 C3.67 4.66 3.34 5.32 3 6 C1.02 6 -0.96 6 -3 6 C-3 4.35 -3 2.7 -3 1 C-2.01 0.67 -1.02 0.34 0 0 Z " fill="#2D214A" transform="translate(526,30)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.312 2.812 1.312 2.812 1 6 C-1.5 7.875 -1.5 7.875 -4 9 C-4.33 7.68 -4.66 6.36 -5 5 C-4.01 5 -3.02 5 -2 5 C-2.99 4.67 -3.98 4.34 -5 4 C-4.67 3.01 -4.34 2.02 -4 1 C-2.68 1.66 -1.36 2.32 0 3 C0 2.01 0 1.02 0 0 Z " fill="#122042" transform="translate(83,283)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 2.65 4 4.3 4 6 C2.35 6 0.7 6 -1 6 C-1.33 4.68 -1.66 3.36 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#C87030" transform="translate(189,260)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C5 0.66 5 1.32 5 2 C5.66 2 6.32 2 7 2 C7 3.65 7 5.3 7 7 C5.188 6.875 5.188 6.875 3 6 C1.25 2.938 1.25 2.938 0 0 Z " fill="#111F55" transform="translate(247,241)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.33 3.96 1.66 7.92 2 12 C1.01 12 0.02 12 -1 12 C-1.66 10.02 -2.32 8.04 -3 6 C-2.01 6 -1.02 6 0 6 C0 4.02 0 2.04 0 0 Z " fill="#C2D9E7" transform="translate(403,230)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C1.66 2.33 2.32 2.66 3 3 C1.35 6.3 -0.3 9.6 -2 13 C-2.66 13 -3.32 13 -4 13 C-3.521 11.396 -3.042 9.792 -2.562 8.188 C-2.296 7.294 -2.029 6.401 -1.754 5.48 C-1.196 3.645 -0.607 1.82 0 0 Z " fill="#343F69" transform="translate(460,162)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3 0.66 3 1.32 3 2 C3.99 2.33 4.98 2.66 6 3 C6.33 3.66 6.66 4.32 7 5 C4.69 5.66 2.38 6.32 0 7 C0 4.69 0 2.38 0 0 Z " fill="#122057" transform="translate(473,160)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.01 1.33 0.02 1.66 -1 2 C-0.01 3.98 0.98 5.96 2 8 C-1.27 7.436 -2.826 6.5 -5 4 C-5.33 4.66 -5.66 5.32 -6 6 C-6.66 5.34 -7.32 4.68 -8 4 C-6.713 3.303 -5.421 2.618 -4.125 1.938 C-3.406 1.555 -2.686 1.172 -1.945 0.777 C-1.303 0.521 -0.661 0.264 0 0 Z " fill="#F0D24E" transform="translate(148,73)"/>
<path d="M0 0 C0 1.65 0 3.3 0 5 C-2.31 5 -4.62 5 -7 5 C-6.625 3.062 -6.625 3.062 -6 1 C-4 0 -4 0 0 0 Z " fill="#2C1E48" transform="translate(118,25)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C4 3.65 4 5.3 4 7 C2.35 7.33 0.7 7.66 -1 8 C-0.67 5.36 -0.34 2.72 0 0 Z " fill="#605E44" transform="translate(137,525)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 2.65 3 4.3 3 6 C1.35 6.33 -0.3 6.66 -2 7 C-2.688 5.188 -2.688 5.188 -3 3 C-1.562 1.25 -1.562 1.25 0 0 Z " fill="#12204C" transform="translate(533,517)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C3.67 2.64 3.34 5.28 3 8 C1.68 7.34 0.36 6.68 -1 6 C-0.67 4.02 -0.34 2.04 0 0 Z " fill="#FA621E" transform="translate(172,398)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.33 0.66 2.66 1.32 3 2 C5.527 2.656 5.527 2.656 8 3 C7.34 4.98 6.68 6.96 6 9 C5.67 9 5.34 9 5 9 C5 7.35 5 5.7 5 4 C4.237 4 3.474 4 2.688 4 C0.792 4 -1.104 4 -3 4 C-1.625 2 -1.625 2 0 0 Z " fill="#D5542C" transform="translate(516,372)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.33 1.32 2.66 2.64 3 4 C5.31 4.33 7.62 4.66 10 5 C10 5.33 10 5.66 10 6 C4.78 6.18 0.927 5.971 -4 4 C-2.68 3.67 -1.36 3.34 0 3 C0 2.01 0 1.02 0 0 Z " fill="#E0EBF3" transform="translate(332,309)"/>
<path d="M0 0 C3.875 4.75 3.875 4.75 5 7 C2.69 7 0.38 7 -2 7 C-1.125 2.25 -1.125 2.25 0 0 Z " fill="#15225B" transform="translate(247,278)"/>
<path d="M0 0 C3.3 0 6.6 0 10 0 C9.34 1.98 8.68 3.96 8 6 C7.34 5.67 6.68 5.34 6 5 C6 4.34 6 3.68 6 3 C5.381 2.876 4.762 2.752 4.125 2.625 C2 2 2 2 0 0 Z " fill="#B0CEDE" transform="translate(429,263)"/>
<path d="M0 0 C2.844 1.275 5.138 2.451 7 5 C6.688 7.188 6.688 7.188 6 9 C5.67 7.35 5.34 5.7 5 4 C4.34 4 3.68 4 3 4 C3 4.66 3 5.32 3 6 C2.01 5.67 1.02 5.34 0 5 C0 3.35 0 1.7 0 0 Z " fill="#A1B3CE" transform="translate(267,259)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.312 3.875 1.312 3.875 0 7 C-2.625 8.375 -2.625 8.375 -5 9 C-4.75 6.625 -4.75 6.625 -4 4 C-1.938 2.688 -1.938 2.688 0 2 C0 1.34 0 0.68 0 0 Z " fill="#ABBDCC" transform="translate(255,253)"/>
<path d="M0 0 C5.258 0.674 10.026 2.243 15 4 C15 4.33 15 4.66 15 5 C13.208 4.886 11.416 4.759 9.625 4.625 C8.128 4.521 8.128 4.521 6.602 4.414 C4 4 4 4 2 2 C1.67 2.66 1.34 3.32 1 4 C0.67 2.68 0.34 1.36 0 0 Z " fill="#191A48" transform="translate(140,197)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.33 3.63 1.66 7.26 2 11 C1.67 10.01 1.34 9.02 1 8 C0.34 8 -0.32 8 -1 8 C-1.33 8.66 -1.66 9.32 -2 10 C-2.66 9.01 -3.32 8.02 -4 7 C-3.34 6.01 -2.68 5.02 -2 4 C-1.34 4 -0.68 4 0 4 C0 2.68 0 1.36 0 0 Z " fill="#1D2C61" transform="translate(431,190)"/>
<path d="M0 0 C-2 2 -2 2 -4.094 2.266 C-4.888 2.26 -5.682 2.255 -6.5 2.25 C-7.294 2.255 -8.088 2.26 -8.906 2.266 C-11 2 -11 2 -13 0 C-8.371 -1.016 -4.655 -0.838 0 0 Z " fill="#213977" transform="translate(366,192)"/>
<path d="M0 0 C-2.97 2.475 -2.97 2.475 -6 5 C-8.475 4.01 -8.475 4.01 -11 3 C-4.333 -1.444 -4.333 -1.444 0 0 Z " fill="#E9A737" transform="translate(222,187)"/>
<path d="M0 0 C0 1.65 0 3.3 0 5 C-1.98 5 -3.96 5 -6 5 C-6 3.35 -6 1.7 -6 0 C-3.509 -1.245 -2.589 -0.777 0 0 Z " fill="#446043" transform="translate(224,17)"/>
<path d="M0 0 C2.64 0.66 5.28 1.32 8 2 C7.67 2.99 7.34 3.98 7 5 C7 4.34 7 3.68 7 3 C6.34 3 5.68 3 5 3 C5 3.99 5 4.98 5 6 C3.02 5.34 1.04 4.68 -1 4 C-0.67 2.68 -0.34 1.36 0 0 Z " fill="#381F4C" transform="translate(392,17)"/>
<path d="M0 0 C2.535 1.014 3.771 1.615 5.188 4 C5.456 4.66 5.724 5.32 6 6 C6.33 6.66 6.66 7.32 7 8 C4.69 8 2.38 8 0 8 C0 6 0 6 2 4 C1.34 3.67 0.68 3.34 0 3 C0 2.01 0 1.02 0 0 Z " fill="#171747" transform="translate(50,545)"/>
<path d="M0 0 C0 3 0 3 -1.531 4.605 C-2.181 5.128 -2.831 5.65 -3.5 6.188 C-4.15 6.717 -4.799 7.247 -5.469 7.793 C-5.974 8.191 -6.479 8.59 -7 9 C-7 8.01 -7 7.02 -7 6 C-9.31 6 -11.62 6 -14 6 C-14 5.67 -14 5.34 -14 5 C-13.325 4.974 -12.649 4.948 -11.953 4.922 C-6.242 4.657 -6.242 4.657 -1.375 1.938 C-0.921 1.298 -0.467 0.659 0 0 Z " fill="#465E88" transform="translate(279,456)"/>
<path d="M0 0 C0.485 0.422 0.969 0.843 1.469 1.277 C6.39 5.299 9.64 6.773 16 7 C16 7.33 16 7.66 16 8 C11.006 8.51 7.191 8.599 2.938 5.688 C1.968 4.801 0.999 3.914 0 3 C0 2.01 0 1.02 0 0 Z " fill="#2C4071" transform="translate(384,301)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4.33 1.65 4.66 3.3 5 5 C2.509 6.245 1.589 5.777 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#626040" transform="translate(532,292)"/>
<path d="M0 0 C1.32 0.99 2.64 1.98 4 3 C3.67 3.99 3.34 4.98 3 6 C1.35 6 -0.3 6 -2 6 C-2.33 4.68 -2.66 3.36 -3 2 C-2.01 1.34 -1.02 0.68 0 0 Z " fill="#51C0C4" transform="translate(563,251)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C4 3.65 4 5.3 4 7 C3.67 6.34 3.34 5.68 3 5 C0.36 5 -2.28 5 -5 5 C-3.35 3.35 -1.7 1.7 0 0 Z " fill="#3A4B80" transform="translate(458,213)"/>
<path d="M0 0 C1.279 0.289 2.558 0.578 3.875 0.875 C4.954 1.119 4.954 1.119 6.055 1.367 C8.73 2.237 10.03 4.03 12 6 C11.01 6.66 10.02 7.32 9 8 C9 7.34 9 6.68 9 6 C8.34 6 7.68 6 7 6 C6.34 5.34 5.68 4.68 5 4 C3.68 4 2.36 4 1 4 C0.67 2.68 0.34 1.36 0 0 Z " fill="#141C46" transform="translate(311,100)"/>
<path d="M0 0 C0 1.98 0 3.96 0 6 C-1.98 6.33 -3.96 6.66 -6 7 C-5.188 4.062 -5.188 4.062 -4 1 C-1 0 -1 0 0 0 Z " fill="#655842" transform="translate(556,82)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.33 0.99 2.66 1.98 3 3 C-0.96 4.32 -4.92 5.64 -9 7 C-9 6.34 -9 5.68 -9 5 C-8.34 5 -7.68 5 -7 5 C-7 4.01 -7 3.02 -7 2 C-3.535 1.505 -3.535 1.505 0 1 C0 0.67 0 0.34 0 0 Z " fill="#131B46" transform="translate(156,67)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.33 1.98 3.66 3.96 4 6 C0.947 6.981 -0.947 6.981 -4 6 C-2.68 5.34 -1.36 4.68 0 4 C0 2.68 0 1.36 0 0 Z " fill="#676246" transform="translate(183,568)"/>
<path d="M0 0 C2.31 0 4.62 0 7 0 C6 3 6 3 2.938 4.688 C1.968 5.121 0.999 5.554 0 6 C0.186 5.381 0.371 4.762 0.562 4.125 C1.237 1.958 1.237 1.958 0 0 Z " fill="#14215A" transform="translate(265,463)"/>
<path d="M0 0 C2.494 0.998 3.787 1.686 5.312 3.938 C6 6 6 6 5 9 C4.34 8.67 3.68 8.34 3 8 C3 6.35 3 4.7 3 3 C1.35 3.66 -0.3 4.32 -2 5 C-2 4.34 -2 3.68 -2 3 C-2.66 2.67 -3.32 2.34 -4 2 C-2.68 2 -1.36 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#A7BBD3" transform="translate(340,408)"/>
<path d="M0 0 C0 3.282 -0.478 5.109 -2 8 C-3.875 8.688 -3.875 8.688 -6 9 C-7.345 9.643 -8.68 10.307 -10 11 C-6.792 7.194 -3.593 3.454 0 0 Z " fill="#233364" transform="translate(371,400)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C1.03 4.475 1.03 4.475 -2 7 C-2.33 5.35 -2.66 3.7 -3 2 C-2.01 2 -1.02 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#F3F4F5" transform="translate(433,354)"/>
<path d="M0 0 C2.475 0.99 2.475 0.99 5 2 C5 3.65 5 5.3 5 7 C3.35 7 1.7 7 0 7 C0 4.69 0 2.38 0 0 Z " fill="#63234B" transform="translate(51,348)"/>
<path d="M0 0 C5.368 -0.358 5.368 -0.358 7.875 1.062 C9.582 4.002 9.188 6.679 9 10 C8.34 9.67 7.68 9.34 7 9 C6.593 6.678 6.256 4.343 6 2 C3.03 1.505 3.03 1.505 0 1 C0 0.67 0 0.34 0 0 Z " fill="#314880" transform="translate(323,320)"/>
<path d="M0 0 C-0.33 1.65 -0.66 3.3 -1 5 C-1.66 5 -2.32 5 -3 5 C-2.67 7.31 -2.34 9.62 -2 12 C-2.66 12 -3.32 12 -4 12 C-4.33 8.7 -4.66 5.4 -5 2 C-2 0 -2 0 0 0 Z " fill="#E7EAF1" transform="translate(336,319)"/>
<path d="M0 0 C3.375 1.186 5.647 2.276 8 5 C5.69 5 3.38 5 1 5 C0.67 5.66 0.34 6.32 0 7 C-0.66 6.67 -1.32 6.34 -2 6 C-1.34 4.02 -0.68 2.04 0 0 Z " fill="#F1F2F5" transform="translate(275,266)"/>
<path d="M0 0 C1.097 3.29 0.8 4.713 0 8 C-2.97 7.505 -2.97 7.505 -6 7 C-4.02 4.69 -2.04 2.38 0 0 Z " fill="#C9E4EC" transform="translate(392,252)"/>
<path d="M0 0 C0 0.66 0 1.32 0 2 C-5.009 5.006 -8.327 5.293 -14 5 C-4.385 0 -4.385 0 0 0 Z " fill="#E2E5ED" transform="translate(379,254)"/>
<path d="M0 0 C1.255 3.766 0.371 5.372 -1 9 C-1.66 9 -2.32 9 -3 9 C-3 9.66 -3 10.32 -3 11 C-3.66 11 -4.32 11 -5 11 C-4.549 9.539 -4.089 8.082 -3.625 6.625 C-3.37 5.813 -3.115 5.001 -2.852 4.164 C-2 2 -2 2 0 0 Z " fill="#152760" transform="translate(457,228)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 1.99 2 2.98 2 4 C2.99 4.66 3.98 5.32 5 6 C3.02 6.66 1.04 7.32 -1 8 C-1.66 6.68 -2.32 5.36 -3 4 C-2.01 2.68 -1.02 1.36 0 0 Z " fill="#D6E0E9" transform="translate(444,180)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4.33 2.32 4.66 3.64 5 5 C3.35 5.66 1.7 6.32 0 7 C0 4.69 0 2.38 0 0 Z " fill="#6E4743" transform="translate(316,149)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3.33 2.65 3.66 4.3 4 6 C2.35 6 0.7 6 -1 6 C-1 2 -1 2 0 0 Z " fill="#A0BE34" transform="translate(529,116)"/>
<path d="M0 0 C3.459 3.459 4 7.219 4 12 C3.01 12 2.02 12 1 12 C0.67 8.04 0.34 4.08 0 0 Z " fill="#DFC64F" transform="translate(238,110)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 2.65 4 4.3 4 6 C2.68 6.33 1.36 6.66 0 7 C-0.66 5.68 -1.32 4.36 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#79CD77" transform="translate(391,46)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-1.98 3.66 -3.96 4.32 -6 5 C-6 3.35 -6 1.7 -6 0 C-2.25 -1.125 -2.25 -1.125 0 0 Z " fill="#BDD9E5" transform="translate(298,483)"/>
<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1.625 4.625 1.625 4.625 1 7 C0.34 7 -0.32 7 -1 7 C-1.33 7.66 -1.66 8.32 -2 9 C-2.66 8.34 -3.32 7.68 -4 7 C-2.68 4.69 -1.36 2.38 0 0 Z " fill="#11205A" transform="translate(383,383)"/>
<path d="M0 0 C0.33 1.98 0.66 3.96 1 6 C-0.65 5.67 -2.3 5.34 -4 5 C-4 4.34 -4 3.68 -4 3 C-4.99 2.67 -5.98 2.34 -7 2 C-1.125 0 -1.125 0 0 0 Z " fill="#5A5B44" transform="translate(37,377)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3 0.99 3 1.98 3 3 C3.99 3.33 4.98 3.66 6 4 C5.34 5.32 4.68 6.64 4 8 C3.34 7.67 2.68 7.34 2 7 C2 6.34 2 5.68 2 5 C1.34 4.67 0.68 4.34 0 4 C0 2.68 0 1.36 0 0 Z " fill="#656248" transform="translate(121,363)"/>
<path d="M0 0 C0 2.31 0 4.62 0 7 C-1.65 6.67 -3.3 6.34 -5 6 C-4.625 3.562 -4.625 3.562 -4 1 C-2 0 -2 0 0 0 Z " fill="#562647" transform="translate(183,357)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C3.527 2.656 3.527 2.656 6 3 C5.67 3.99 5.34 4.98 5 6 C2.03 5.505 2.03 5.505 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#13215A" transform="translate(394,356)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C3.65 2 5.3 2 7 2 C6.34 3.98 5.68 5.96 5 8 C2.201 5.472 0.542 3.796 0 0 Z " fill="#B9CADE" transform="translate(247,276)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 1.65 4 3.3 4 5 C2.68 5.33 1.36 5.66 0 6 C-1.125 2.25 -1.125 2.25 0 0 Z " fill="#AEA62F" transform="translate(500,225)"/>
<path d="M0 0 C1.274 2.547 0.802 3.428 0.062 6.125 C-0.132 6.849 -0.327 7.574 -0.527 8.32 C-0.683 8.875 -0.839 9.429 -1 10 C-1.99 10 -2.98 10 -4 10 C-3.521 5.781 -2.834 3.203 0 0 Z " fill="#BEB8BB" transform="translate(320,202)"/>
<path d="M0 0 C4 5 4 5 8 10 C7.01 10 6.02 10 5 10 C3.395 8.25 3.395 8.25 1.812 6 C1.283 5.257 0.753 4.515 0.207 3.75 C-0.191 3.173 -0.59 2.595 -1 2 C-0.67 1.34 -0.34 0.68 0 0 Z " fill="#3F4D77" transform="translate(433,200)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4.33 0.99 4.66 1.98 5 3 C2.333 4.333 -0.333 5.667 -3 7 C-2.387 4.038 -1.746 2.619 0 0 Z " fill="#C0DBE5" transform="translate(406,200)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.293 5.673 1.006 8.991 -2 14 C-2.66 14 -3.32 14 -4 14 C-3.522 12.229 -3.042 10.458 -2.562 8.688 C-2.296 7.701 -2.029 6.715 -1.754 5.699 C-1.219 3.785 -0.629 1.886 0 0 Z " fill="#242743" transform="translate(242,150)"/>
<path d="M0 0 C2.97 1.98 2.97 1.98 6 4 C3.861 6.139 2.867 6.427 0 7 C-0.934 3.99 -1.044 3.133 0 0 Z " fill="#A6C735" transform="translate(533,122)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C4.67 0.99 4.34 1.98 4 3 C-0.95 3 -5.9 3 -11 3 C-11 2.67 -11 2.34 -11 2 C-7.37 2 -3.74 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#252B4A" transform="translate(180,65)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 1.66 3 2.32 3 3 C4.32 3.33 5.64 3.66 7 4 C6.67 4.99 6.34 5.98 6 7 C5.01 7.33 4.02 7.66 3 8 C2.01 5.36 1.02 2.72 0 0 Z " fill="#5C4241" transform="translate(128,555)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C5.33 1.32 5.66 2.64 6 4 C5.01 4.495 5.01 4.495 4 5 C3.67 4.34 3.34 3.68 3 3 C1.02 3.99 1.02 3.99 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#3A3B42" transform="translate(52,461)"/>
<path d="M0 0 C1.671 0.062 1.671 0.062 3.375 0.125 C2.385 1.61 2.385 1.61 1.375 3.125 C-2.25 3.812 -2.25 3.812 -5.625 4.125 C-5.625 0.124 -3.581 0.123 0 0 Z " fill="#6C92B1" transform="translate(335.625,426.875)"/>
<path d="M0 0 C2.595 1.45 3.776 2.346 4.75 5.188 C4.832 5.786 4.915 6.384 5 7 C4.34 7 3.68 7 3 7 C3 6.34 3 5.68 3 5 C1.68 5 0.36 5 -1 5 C-1 4.01 -1 3.02 -1 2 C-1.66 1.67 -2.32 1.34 -3 1 C-2.01 0.67 -1.02 0.34 0 0 Z " fill="#141B44" transform="translate(82,386)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C0.951 3.622 0.351 4.794 -2.125 6.25 C-2.744 6.498 -3.363 6.745 -4 7 C-4.33 6.01 -4.66 5.02 -5 4 C-4.34 4 -3.68 4 -3 4 C-3 3.34 -3 2.68 -3 2 C-2.01 2 -1.02 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#111E56" transform="translate(297,357)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.66 1.98 2.32 3.96 3 6 C5.97 6.495 5.97 6.495 9 7 C6.241 8.804 5.11 9.013 1.75 8.625 C0.389 8.316 0.389 8.316 -1 8 C-0.67 5.36 -0.34 2.72 0 0 Z " fill="#44578E" transform="translate(329,324)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.312 2.938 2.312 2.938 1 5 C-1.625 5.75 -1.625 5.75 -4 6 C-2.848 3.532 -1.952 1.952 0 0 Z " fill="#768CAF" transform="translate(320,321)"/>
<path d="M0 0 C1.98 1.65 3.96 3.3 6 5 C2.867 6.044 2.01 5.934 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#AFC737" transform="translate(85,282)"/>
<path d="M0 0 C2.97 0.33 5.94 0.66 9 1 C9 1.99 9 2.98 9 4 C6.03 3.67 3.06 3.34 0 3 C0 2.01 0 1.02 0 0 Z " fill="#394C7F" transform="translate(332,257)"/>
<path d="M0 0 C0 0.33 0 0.66 0 1 C-1.65 1 -3.3 1 -5 1 C-5 1.99 -5 2.98 -5 4 C-6.98 4 -8.96 4 -11 4 C-11 3.01 -11 2.02 -11 1 C-7.266 0.121 -3.832 -0.089 0 0 Z " fill="#BCCBD9" transform="translate(458,221)"/>
<path d="M0 0 C0 0.66 0 1.32 0 2 C-1.658 3.344 -3.326 4.676 -5 6 C-6.763 8.126 -6.763 8.126 -8 10 C-7.731 6.058 -7.447 4.435 -4.562 1.625 C-2 0 -2 0 0 0 Z " fill="#355785" transform="translate(413,219)"/>
<path d="M0 0 C2.421 3.632 2.21 5.383 2.125 9.688 C2.107 10.867 2.089 12.046 2.07 13.262 C2.036 14.617 2.036 14.617 2 16 C1.67 16 1.34 16 1 16 C1 12.37 1 8.74 1 5 C0.01 4.67 -0.98 4.34 -2 4 C-1.34 2.68 -0.68 1.36 0 0 Z " fill="#373D67" transform="translate(311,216)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-4.455 4.485 -4.455 4.485 -9 6 C-4.385 0 -4.385 0 0 0 Z " fill="#2C3F75" transform="translate(332,193)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-3.435 5.29 -4.985 5.178 -9 5 C-2.871 0 -2.871 0 0 0 Z " fill="#ECEEF3" transform="translate(346,179)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 1.99 4 2.98 4 4 C2.02 4.33 0.04 4.66 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#4D1E52" transform="translate(421,84)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.33 1.65 3.66 3.3 4 5 C2.35 5.66 0.7 6.32 -1 7 C-0.67 4.69 -0.34 2.38 0 0 Z " fill="#FA6728" transform="translate(497,61)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C6 3.32 6 4.64 6 6 C4.35 6.33 2.7 6.66 1 7 C1.33 5.35 1.66 3.7 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#4F6048" transform="translate(338,16)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C2.67 1.65 2.34 3.3 2 5 C0.68 5 -0.64 5 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#2A5A6F" transform="translate(107,539)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.67 1.99 1.34 2.98 1 4 C1.66 4.33 2.32 4.66 3 5 C2.67 5.66 2.34 6.32 2 7 C0.02 6.34 -1.96 5.68 -4 5 C-3 2 -3 2 0 0 Z " fill="#D0642D" transform="translate(50,539)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 0.99 4 1.98 4 3 C3.34 3 2.68 3 2 3 C2 3.99 2 4.98 2 6 C1.01 6.33 0.02 6.66 -1 7 C-0.67 4.69 -0.34 2.38 0 0 Z " fill="#615E48" transform="translate(186,525)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C-1.312 4.562 -1.312 4.562 -4 6 C-4.99 5.67 -5.98 5.34 -7 5 C-6.67 4.01 -6.34 3.02 -6 2 C-2.938 0.812 -2.938 0.812 0 0 Z " fill="#1B2246" transform="translate(487,420)"/>
<path d="M0 0 C0.866 0.371 0.866 0.371 1.75 0.75 C-0.302 2.998 -1.257 3.752 -4.25 4.75 C-4.91 5.41 -5.57 6.07 -6.25 6.75 C-6.25 3.75 -6.25 3.75 -4.5 1.5 C-2.25 -0.25 -2.25 -0.25 0 0 Z " fill="#AABFD7" transform="translate(315.25,388.25)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 0.99 4 1.98 4 3 C4.66 3 5.32 3 6 3 C6.33 2.34 6.66 1.68 7 1 C7 1.99 7 2.98 7 4 C4 5 4 5 1.812 4.062 C1.214 3.712 0.616 3.361 0 3 C0 2.01 0 1.02 0 0 Z " fill="#653844" transform="translate(458,375)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C5.33 0.99 5.66 1.98 6 3 C6.99 3.66 7.98 4.32 9 5 C7.35 5 5.7 5 4 5 C3.67 4.01 3.34 3.02 3 2 C2.01 2.33 1.02 2.66 0 3 C0 2.01 0 1.02 0 0 Z " fill="#291A49" transform="translate(515,370)"/>
<path d="M0 0 C-2.36 2.097 -3.546 2.969 -6.75 3.188 C-7.864 3.095 -7.864 3.095 -9 3 C-9.33 2.01 -9.66 1.02 -10 0 C-6.306 -1.231 -3.794 -0.644 0 0 Z " fill="#F2F6F9" transform="translate(351,367)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 1.32 2 2.64 2 4 C2.66 4 3.32 4 4 4 C4 4.66 4 5.32 4 6 C2.35 6.66 0.7 7.32 -1 8 C-1.33 6.35 -1.66 4.7 -2 3 C-1.01 3.495 -1.01 3.495 0 4 C0.33 3.34 0.66 2.68 1 2 C0.34 1.67 -0.32 1.34 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#12225A" transform="translate(283,366)"/>
<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1 3 1 3 -2.312 3.188 C-5.646 3.018 -7.257 2.756 -10 1 C-6.479 -0.174 -3.694 -0.201 0 0 Z " fill="#F2F7F8" transform="translate(339,361)"/>
<path d="M0 0 C3.3 0 6.6 0 10 0 C9.67 1.32 9.34 2.64 9 4 C6.03 3.01 3.06 2.02 0 1 C0 0.67 0 0.34 0 0 Z " fill="#A5BBD4" transform="translate(380,354)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C6 1.99 6 2.98 6 4 C5.01 3.34 4.02 2.68 3 2 C2.67 3.65 2.34 5.3 2 7 C1.67 6.01 1.34 5.02 1 4 C0.34 3.67 -0.32 3.34 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z " fill="#7288B1" transform="translate(356,327)"/>
<path d="M0 0 C0 1.65 0 3.3 0 5 C-0.33 4.34 -0.66 3.68 -1 3 C-1.66 3 -2.32 3 -3 3 C-3 3.66 -3 4.32 -3 5 C-4.98 4.34 -6.96 3.68 -9 3 C-9 2.67 -9 2.34 -9 2 C-7.688 1.665 -6.375 1.332 -5.062 1 C-3.966 0.722 -3.966 0.722 -2.848 0.438 C-1 0 -1 0 0 0 Z " fill="#FDFDFC" transform="translate(360,307)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.67 1.99 1.34 2.98 1 4 C0.34 4 -0.32 4 -1 4 C-1.33 5.32 -1.66 6.64 -2 8 C-2.66 8 -3.32 8 -4 8 C-3.502 4.312 -2.899 2.395 0 0 Z " fill="#142248" transform="translate(95,291)"/>
<path d="M0 0 C0.66 0.66 1.32 1.32 2 2 C1.67 2.66 1.34 3.32 1 4 C-3.62 4 -8.24 4 -13 4 C-13 3.67 -13 3.34 -13 3 C-9.37 3 -5.74 3 -2 3 C-2 2.34 -2 1.68 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z " fill="#FEFEFC" transform="translate(360,261)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3 1.65 3 3.3 3 5 C1.68 5.33 0.36 5.66 -1 6 C-1.043 4.334 -1.041 2.666 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#CCC3C9" transform="translate(372,224)"/>
<path d="M0 0 C-1.688 2.062 -1.688 2.062 -4 4 C-6.75 3.75 -6.75 3.75 -9 3 C-7.015 -0.969 -3.957 -1.413 0 0 Z " fill="#EFF0F5" transform="translate(478,184)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C2 5 2 5 -0.625 5.688 C-1.801 5.842 -1.801 5.842 -3 6 C-1.125 1.125 -1.125 1.125 0 0 Z " fill="#132545" transform="translate(532,129)"/>
<path d="M0 0 C0.33 1.32 0.66 2.64 1 4 C1.227 4.66 1.454 5.32 1.688 6 C2.092 8.589 1.334 9.803 0 12 C-0.66 12 -1.32 12 -2 12 C-1.34 8.04 -0.68 4.08 0 0 Z " fill="#EFAC40" transform="translate(112,109)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.67 1.99 2.34 2.98 2 4 C2.66 4.33 3.32 4.66 4 5 C3.01 5.33 2.02 5.66 1 6 C1 6.99 1 7.98 1 9 C-0.32 8.67 -1.64 8.34 -3 8 C-2.01 8 -1.02 8 0 8 C0 5.36 0 2.72 0 0 Z " fill="#181F45" transform="translate(324,95)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 1.32 4 2.64 4 4 C0.25 5.125 0.25 5.125 -2 4 C-1.34 2.68 -0.68 1.36 0 0 Z " fill="#5D2354" transform="translate(224,38)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 1.99 4 2.98 4 4 C0.25 5.125 0.25 5.125 -2 4 C-1.34 2.68 -0.68 1.36 0 0 Z " fill="#C2A736" transform="translate(156,20)"/>
<path d="M0 0 C2.475 0.495 2.475 0.495 5 1 C5 2.65 5 4.3 5 6 C3.35 6 1.7 6 0 6 C0.99 5.67 1.98 5.34 3 5 C3 4.34 3 3.68 3 3 C2.01 3 1.02 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#EEDA2B" transform="translate(495,559)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 1.32 4 2.64 4 4 C4.66 4 5.32 4 6 4 C6 4.66 6 5.32 6 6 C5.34 6 4.68 6 4 6 C4 6.66 4 7.32 4 8 C3.34 8 2.68 8 2 8 C2 7.34 2 6.68 2 6 C1.34 5.34 0.68 4.68 0 4 C0.99 3.01 1.98 2.02 3 1 C2.01 0.67 1.02 0.34 0 0 Z " fill="#0F1B46" transform="translate(263,524)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.99 2.31 3.98 4.62 5 7 C4.402 6.67 3.804 6.34 3.188 6 C0.946 4.792 0.946 4.792 -2 5 C-1.34 3.35 -0.68 1.7 0 0 Z " fill="#A4C234" transform="translate(528,505)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.124 1.072 2.248 2.145 2.375 3.25 C2.896 6.379 3.401 8.335 5 11 C3.02 11 1.04 11 -1 11 C-0.01 10.67 0.98 10.34 2 10 C1.34 6.7 0.68 3.4 0 0 Z " fill="#CC4E36" transform="translate(434,478)"/>
<path d="M0 0 C2.475 0.495 2.475 0.495 5 1 C5 2.32 5 3.64 5 5 C3.68 5.33 2.36 5.66 1 6 C0.67 4.02 0.34 2.04 0 0 Z " fill="#55214A" transform="translate(164,478)"/>
<path d="M0 0 C1 3 1 3 -0.125 6.125 C-2 9 -2 9 -4.688 9.875 C-5.451 9.916 -6.214 9.957 -7 10 C-6.578 9.446 -6.157 8.891 -5.723 8.32 C-5.175 7.596 -4.627 6.871 -4.062 6.125 C-3.517 5.406 -2.972 4.686 -2.41 3.945 C-0.96 2.056 -0.96 2.056 0 0 Z " fill="#18265D" transform="translate(328,450)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C5.67 2.32 5.34 3.64 5 5 C3.68 5.33 2.36 5.66 1 6 C1.33 4.68 1.66 3.36 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#595944" transform="translate(527,424)"/>
<path d="M0 0 C1.65 0 3.3 0 5 0 C4.333 4 3.667 8 3 12 C2.67 12 2.34 12 2 12 C1.939 11.301 1.879 10.603 1.816 9.883 C1.733 8.973 1.649 8.063 1.562 7.125 C1.481 6.22 1.4 5.315 1.316 4.383 C1.13 1.989 1.13 1.989 0 0 Z " fill="#5E739D" transform="translate(344,411)"/>
<path d="M0 0 C2.475 0.99 2.475 0.99 5 2 C5 3.32 5 4.64 5 6 C3.68 6 2.36 6 1 6 C0.34 4.35 -0.32 2.7 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#5B7C46" transform="translate(215,405)"/>
<path d="M0 0 C1 3 1 3 -0.188 5.625 C-2 8 -2 8 -6 9 C-4.02 6.03 -2.04 3.06 0 0 Z " fill="#15235B" transform="translate(378,391)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.67 2.65 1.34 4.3 1 6 C-0.65 5.67 -2.3 5.34 -4 5 C-4 4.34 -4 3.68 -4 3 C-3.01 2.34 -2.02 1.68 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#D3E4EA" transform="translate(414,357)"/>
<path d="M0 0 C-0.66 1.65 -1.32 3.3 -2 5 C-3.65 4.67 -5.3 4.34 -7 4 C-7 3.34 -7 2.68 -7 2 C-2.25 0 -2.25 0 0 0 Z " fill="#A1B5CC" transform="translate(323,325)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C4.01 1.495 4.01 1.495 3 2 C2.348 4.025 2.348 4.025 2 6 C1.01 6 0.02 6 -1 6 C-0.67 4.02 -0.34 2.04 0 0 Z " fill="#163158" transform="translate(564,296)"/>
<path d="M0 0 C1.996 3.991 2.195 5.7 2 10 C1.01 10 0.02 10 -1 10 C-0.67 6.7 -0.34 3.4 0 0 Z " fill="#303B6C" transform="translate(453,282)"/>
<path d="M0 0 C1 3 1 3 1 6 C0.402 6.124 -0.196 6.248 -0.812 6.375 C-3.262 6.955 -3.262 6.955 -6 9 C-4.473 5.564 -2.401 2.881 0 0 Z " fill="#6592B3" transform="translate(432,275)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 1.66 4 2.32 4 3 C4.66 3 5.32 3 6 3 C6.33 2.34 6.66 1.68 7 1 C7.66 1 8.32 1 9 1 C9 1.66 9 2.32 9 3 C6.75 4.188 6.75 4.188 4 5 C1.688 3.75 1.688 3.75 0 2 C0 1.34 0 0.68 0 0 Z " fill="#E6EAF0" transform="translate(239,251)"/>
<path d="M0 0 C0 1.32 0 2.64 0 4 C-1.98 4 -3.96 4 -6 4 C-6.33 3.01 -6.66 2.02 -7 1 C-4.509 0.313 -2.621 0 0 0 Z " fill="#56264C" transform="translate(198,230)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.67 1.66 1.34 2.32 1 3 C1.33 3.99 1.66 4.98 2 6 C1.01 6 0.02 6 -1 6 C-1.33 5.34 -1.66 4.68 -2 4 C-2.66 4.66 -3.32 5.32 -4 6 C-4.66 5.34 -5.32 4.68 -6 4 C-4.02 2.68 -2.04 1.36 0 0 Z " fill="#1F2046" transform="translate(217,190)"/>
<path d="M0 0 C0.66 1.32 1.32 2.64 2 4 C0.35 5.32 -1.3 6.64 -3 8 C-3.66 7.67 -4.32 7.34 -5 7 C-3.35 4.69 -1.7 2.38 0 0 Z " fill="#2A3462" transform="translate(475,178)"/>
<path d="M0 0 C2.438 0.375 2.438 0.375 5 1 C5.33 1.66 5.66 2.32 6 3 C5.34 3 4.68 3 4 3 C4 3.66 4 4.32 4 5 C2.68 5 1.36 5 0 5 C0 3.35 0 1.7 0 0 Z " fill="#3B5A4B" transform="translate(395,137)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C3.436 4.27 2.5 5.826 0 8 C0 5.36 0 2.72 0 0 Z " fill="#161D48" transform="translate(117,92)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C3.32 2.33 4.64 2.66 6 3 C6 3.99 6 4.98 6 6 C4.68 6 3.36 6 2 6 C2 5.01 2 4.02 2 3 C1.34 3 0.68 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#776C39" transform="translate(288,31)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.67 2.32 2.34 3.64 2 5 C-0.97 4.505 -0.97 4.505 -4 4 C-3.34 3.67 -2.68 3.34 -2 3 C-2 2.34 -2 1.68 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z " fill="#766938" transform="translate(399,571)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.125 3.75 3.125 3.75 2 6 C0.68 5.67 -0.64 5.34 -2 5 C-2 4.01 -2 3.02 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#EDB534" transform="translate(332,527)"/>
<path d="M0 0 C2.125 0.375 2.125 0.375 4 1 C4.33 2.98 4.66 4.96 5 7 C4.34 7 3.68 7 3 7 C2.67 5.68 2.34 4.36 2 3 C0.68 2.67 -0.64 2.34 -2 2 C-1.34 1.34 -0.68 0.68 0 0 Z " fill="#1C1D47" transform="translate(332,524)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C4.25 5.875 4.25 5.875 2 7 C1.34 4.69 0.68 2.38 0 0 Z " fill="#ABC1D8" transform="translate(308,464)"/>
<path d="M0 0 C1.98 0.66 3.96 1.32 6 2 C6.33 1.34 6.66 0.68 7 0 C7.33 1.32 7.66 2.64 8 4 C6.02 4.66 4.04 5.32 2 6 C1.34 4.02 0.68 2.04 0 0 Z " fill="#5FC7CD" transform="translate(90,443)"/>
<path d="M0 0 C-1.098 2.993 -1.677 3.846 -4.625 5.25 C-5.409 5.498 -6.192 5.745 -7 6 C-5.525 2.597 -4.144 0 0 0 Z " fill="#E5E7ED" transform="translate(265,441)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.804 2.759 4.013 3.89 3.625 7.25 C3.419 8.158 3.212 9.065 3 10 C2.34 9.67 1.68 9.34 1 9 C0.586 6.934 0.586 6.934 0.375 4.438 C0.3 3.611 0.225 2.785 0.148 1.934 C0.099 1.296 0.05 0.657 0 0 Z " fill="#0B225B" transform="translate(553,398)"/>
<path d="M0 0 C1.98 0 3.96 0 6 0 C5.34 1.98 4.68 3.96 4 6 C1.216 4.608 1.021 2.844 0 0 Z " fill="#DE5E2A" transform="translate(168,405)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C1.68 3.31 0.36 5.62 -1 8 C-1.66 7.34 -2.32 6.68 -3 6 C-2.01 4.02 -1.02 2.04 0 0 Z " fill="#C7D8E6" transform="translate(376,372)"/>
<path d="M0 0 C1.04 3.38 1.08 6.478 1 10 C0.34 9.67 -0.32 9.34 -1 9 C-0.67 8.34 -0.34 7.68 0 7 C-0.99 7 -1.98 7 -3 7 C-1.125 2.25 -1.125 2.25 0 0 Z " fill="#ABC0D5" transform="translate(366,337)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C2.32 1.67 3.64 1.34 5 1 C4.67 2.32 4.34 3.64 4 5 C-0.75 4.25 -0.75 4.25 -3 2 C-2.01 1.34 -1.02 0.68 0 0 Z " fill="#B3D0E1" transform="translate(394,339)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.34 4.63 0.68 8.26 0 12 C-0.33 12 -0.66 12 -1 12 C-1.027 10.188 -1.046 8.375 -1.062 6.562 C-1.074 5.553 -1.086 4.544 -1.098 3.504 C-1 1 -1 1 0 0 Z " fill="#E1E2E9" transform="translate(442,330)"/>
<path d="M0 0 C0.681 0.309 1.361 0.619 2.062 0.938 C5.37 2.134 8.515 2.59 12 3 C12 3.33 12 3.66 12 4 C9.237 4.597 6.84 5 4 5 C1.812 2.5 1.812 2.5 0 0 Z " fill="#6C83AD" transform="translate(386,306)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C1.99 2.33 2.98 2.66 4 3 C3.34 3 2.68 3 2 3 C2.33 3.99 2.66 4.98 3 6 C1.02 6 -0.96 6 -3 6 C-2.01 4.02 -1.02 2.04 0 0 Z " fill="#BAD8E8" transform="translate(289,303)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C2.25 7.625 2.25 7.625 0 11 C-0.33 10.34 -0.66 9.68 -1 9 C-1.66 8.67 -2.32 8.34 -3 8 C-2.01 5.36 -1.02 2.72 0 0 Z " fill="#E4F5F6" transform="translate(360,299)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C6 1.66 6 2.32 6 3 C6.99 3.66 7.98 4.32 9 5 C6.75 5.312 6.75 5.312 4 5 C1.688 2.5 1.688 2.5 0 0 Z " fill="#223041" transform="translate(88,284)"/>
<path d="M0 0 C2.97 0.33 5.94 0.66 9 1 C7.515 2.485 7.515 2.485 6 4 C4.68 4 3.36 4 2 4 C2 3.34 2 2.68 2 2 C1.34 2 0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#2F477E" transform="translate(247,274)"/>
<path d="M0 0 C2.64 1.98 5.28 3.96 8 6 C7.01 6.66 6.02 7.32 5 8 C2.5 5.688 2.5 5.688 0 3 C0 2.01 0 1.02 0 0 Z " fill="#C3BFC9" transform="translate(322,252)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C3.01 2.98 2.02 4.96 1 7 C0.01 5.68 -0.98 4.36 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#B6D8E3" transform="translate(447,241)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.67 2.32 2.34 3.64 2 5 C0.68 5 -0.64 5 -2 5 C-2 3.68 -2 2.36 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z " fill="#CF7B38" transform="translate(59,210)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.75 2.875 2.75 2.875 2 5 C-0.062 6.25 -0.062 6.25 -2 7 C-2 5.35 -2 3.7 -2 2 C-1.34 2 -0.68 2 0 2 C0 1.34 0 0.68 0 0 Z " fill="#11205B" transform="translate(423,205)"/>
<path d="M0 0 C1 2 1 2 0.441 4.164 C0.151 4.976 -0.139 5.788 -0.438 6.625 C-0.725 7.442 -1.012 8.26 -1.309 9.102 C-1.537 9.728 -1.765 10.355 -2 11 C-2.66 10.67 -3.32 10.34 -4 10 C-3.521 5.781 -2.834 3.203 0 0 Z " fill="#A7BAD4" transform="translate(429,200)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C-2.96 3 -6.92 3 -11 3 C-11 2.67 -11 2.34 -11 2 C-3.375 0 -3.375 0 0 0 Z " fill="#242445" transform="translate(199,201)"/>
<path d="M0 0 C0.66 1.32 1.32 2.64 2 4 C1.01 4.99 0.02 5.98 -1 7 C-1.99 6.67 -2.98 6.34 -4 6 C-2.68 4.02 -1.36 2.04 0 0 Z " fill="#16245D" transform="translate(474,194)"/>
<path d="M0 0 C0.33 0.66 0.66 1.32 1 2 C3.025 2.652 3.025 2.652 5 3 C4.01 3.33 3.02 3.66 2 4 C2.66 4.33 3.32 4.66 4 5 C3.67 5.66 3.34 6.32 3 7 C0.69 5.35 -1.62 3.7 -4 2 C-3.34 1.67 -2.68 1.34 -2 1 C-1.34 1.33 -0.68 1.66 0 2 C0 1.34 0 0.68 0 0 Z " fill="#E1A440" transform="translate(136,188)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C2 4 2 4 -1.125 4.688 C-2.074 4.791 -3.022 4.894 -4 5 C-3.67 4.01 -3.34 3.02 -3 2 C-2.34 2.33 -1.68 2.66 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z " fill="#604F43" transform="translate(373,126)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 1.65 4 3.3 4 5 C2.68 5 1.36 5 0 5 C0 3.35 0 1.7 0 0 Z " fill="#7B763A" transform="translate(566,42)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 0.66 4 1.32 4 2 C5.32 1.34 6.64 0.68 8 0 C8 0.99 8 1.98 8 3 C4.947 3.981 3.053 3.981 0 3 C0 2.01 0 1.02 0 0 Z " fill="#302945" transform="translate(423,35)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C3.67 2.99 3.34 3.98 3 5 C1.68 5 0.36 5 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#D64197" transform="translate(547,556)"/>
<path d="M0 0 C1.938 0.312 1.938 0.312 4 1 C4.33 1.99 4.66 2.98 5 4 C3.68 4 2.36 4 1 4 C1 4.66 1 5.32 1 6 C0.34 5.67 -0.32 5.34 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#763F46" transform="translate(211,500)"/>
<path d="M0 0 C-1 3 -1 3 -3 4 C-4.134 6.017 -4.134 6.017 -5 8 C-5.66 8 -6.32 8 -7 8 C-4.189 0 -4.189 0 0 0 Z " fill="#EEF0F5" transform="translate(264,470)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 2.31 1 4.62 1 7 C-0.32 7 -1.64 7 -3 7 C-3 5.68 -3 4.36 -3 3 C-2.01 3 -1.02 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#742850" transform="translate(431,404)"/>
<path d="M0 0 C0.33 1.32 0.66 2.64 1 4 C-2.215 5.607 -5.436 5.057 -9 5 C-9 4.67 -9 4.34 -9 4 C-7.886 3.711 -6.772 3.423 -5.625 3.125 C-1.997 2.308 -1.997 2.308 0 0 Z " fill="#253E79" transform="translate(362,339)"/>
<path d="M0 0 C0 0.99 0 1.98 0 3 C-2.64 2.67 -5.28 2.34 -8 2 C-4.772 -0.152 -3.716 -0.201 0 0 Z " fill="#E0F1F5" transform="translate(356,315)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.67 2.65 2.34 4.3 2 6 C1.01 5.67 0.02 5.34 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#736438" transform="translate(34,303)"/>
<path d="M0 0 C1.32 0.33 2.64 0.66 4 1 C4 2.65 4 4.3 4 6 C3.01 6 2.02 6 1 6 C0.67 4.02 0.34 2.04 0 0 Z " fill="#2A607C" transform="translate(173,239)"/>
<path d="M0 0 C2.326 3.634 2.163 6.771 2 11 C1.34 10.67 0.68 10.34 0 10 C-1.114 6.353 -0.943 3.667 0 0 Z " fill="#BEB3B5" transform="translate(315,233)"/>
<path d="M0 0 C2 1 2 1 3.125 4.062 C3.414 5.032 3.702 6.001 4 7 C-0.875 5.25 -0.875 5.25 -2 3 C-1.34 2.01 -0.68 1.02 0 0 Z " fill="#B8C8DD" transform="translate(437,220)"/>
<path d="M0 0 C2.125 0.938 2.125 0.938 4 2 C1 4 1 4 -2.188 3.625 C-3.116 3.419 -4.044 3.213 -5 3 C-2 1 -2 1 0 0 Z " fill="#384B80" transform="translate(366,192)"/>
<path d="M0 0 C1.765 3.088 2 4.233 2 8 C-0.97 7.505 -0.97 7.505 -4 7 C-2.68 6.67 -1.36 6.34 0 6 C-0.278 4.793 -0.278 4.793 -0.562 3.562 C-0.707 2.717 -0.851 1.871 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#1E1751" transform="translate(90,179)"/>
<path d="M0 0 C2.31 0.66 4.62 1.32 7 2 C6.34 3.32 5.68 4.64 5 6 C3.35 4.02 1.7 2.04 0 0 Z " fill="#F3B142" transform="translate(122,179)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C2.436 3.27 1.5 4.826 -1 7 C-1.043 5 -1.041 3 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#F5D549" transform="translate(230,171)"/>
<path d="M0 0 C1.534 3.069 0.55 5.701 0 9 C-0.99 9.33 -1.98 9.66 -3 10 C-2.25 3.375 -2.25 3.375 0 0 Z " fill="#F5AE3C" transform="translate(122,93)"/>
<path d="M0 0 C2.97 0.495 2.97 0.495 6 1 C6 2.65 6 4.3 6 6 C5.67 4.68 5.34 3.36 5 2 C2.532 3.152 0.952 4.048 -1 6 C-1 3 -1 3 0 0 Z " fill="#A3923D" transform="translate(318,96)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C3.34 3.65 2.68 5.3 2 7 C1.67 6.34 1.34 5.68 1 5 C0.34 5 -0.32 5 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#121D58" transform="translate(256,469)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C3.783 2.639 4.991 4.972 6 8 C2.577 6.859 1.852 5.999 0 3 C0 2.01 0 1.02 0 0 Z " fill="#EBF2F6" transform="translate(317,351)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.66 2 1.32 2 2 C2.99 2 3.98 2 5 2 C4.67 3.32 4.34 4.64 4 6 C3.01 5.67 2.02 5.34 1 5 C0.67 3.35 0.34 1.7 0 0 Z " fill="#74743B" transform="translate(534,346)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 2.65 2 4.3 2 6 C1.01 5.67 0.02 5.34 -1 5 C-1.33 5.66 -1.66 6.32 -2 7 C-1.125 1.125 -1.125 1.125 0 0 Z " fill="#6A81AA" transform="translate(351,331)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 1.33 3 1.66 3 2 C4.65 2.33 6.3 2.66 8 3 C7.67 3.99 7.34 4.98 7 6 C4.69 5.01 2.38 4.02 0 3 C0 2.01 0 1.02 0 0 Z " fill="#D0E4EE" transform="translate(361,283)"/>
<path d="M0 0 C1.666 -0.043 3.334 -0.041 5 0 C6 1 6 1 6.062 3.562 C6.042 4.367 6.021 5.171 6 6 C5.01 6 4.02 6 3 6 C3 4.68 3 3.36 3 2 C2.01 1.34 1.02 0.68 0 0 Z " fill="#4E9EBF" transform="translate(338,269)"/>
<path d="M0 0 C3.126 2.962 5.048 5.096 7 9 C4.36 7.02 1.72 5.04 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z " fill="#314165" transform="translate(236,249)"/>
<path d="M0 0 C1.65 0.33 3.3 0.66 5 1 C5 1.99 5 2.98 5 4 C3.68 3.34 2.36 2.68 1 2 C1 2.66 1 3.32 1 4 C0.34 4 -0.32 4 -1 4 C-0.67 2.68 -0.34 1.36 0 0 Z " fill="#E3E6EC" transform="translate(238,246)"/>
<path d="M0 0 C1.32 0 2.64 0 4 0 C4 1.32 4 2.64 4 4 C2.35 4 0.7 4 -1 4 C-0.67 2.68 -0.34 1.36 0 0 Z " fill="#68633F" transform="translate(115,245)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 2.32 3 3.64 3 5 C1.68 5 0.36 5 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#8899B5" transform="translate(442,220)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2 2.65 2 4.3 2 6 C0.35 5.67 -1.3 5.34 -3 5 C-2.625 3.062 -2.625 3.062 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z " fill="#747140" transform="translate(275,196)"/>
<path d="M0 0 C1.32 0.66 2.64 1.32 4 2 C4 2.99 4 3.98 4 5 C1.03 4.505 1.03 4.505 -2 4 C-1.34 2.68 -0.68 1.36 0 0 Z " fill="#EBA63F" transform="translate(148,195)"/>
<path d="M0 0 C2.475 0.495 2.475 0.495 5 1 C4.67 1.99 4.34 2.98 4 4 C2.68 4 1.36 4 0 4 C0 2.68 0 1.36 0 0 Z " fill="#753F43" transform="translate(26,34)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.67 2.98 2.34 4.96 2 7 C1.01 6.67 0.02 6.34 -1 6 C-0.67 4.02 -0.34 2.04 0 0 Z " fill="#55264B" transform="translate(222,557)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 2.32 3 3.64 3 5 C1.68 5 0.36 5 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#60B573" transform="translate(83,500)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.33 1.32 3.66 2.64 4 4 C2.35 4.33 0.7 4.66 -1 5 C-0.67 3.35 -0.34 1.7 0 0 Z " fill="#F85227" transform="translate(432,484)"/>
<path d="M0 0 C0.33 0.99 0.66 1.98 1 3 C-0.65 3.66 -2.3 4.32 -4 5 C-4 3.68 -4 2.36 -4 1 C-2.68 0.67 -1.36 0.34 0 0 Z " fill="#0E275A" transform="translate(98,446)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C0.125 5.75 0.125 5.75 -1 8 C-1.66 8 -2.32 8 -3 8 C-1.125 2.25 -1.125 2.25 0 0 Z " fill="#E8F3F7" transform="translate(298,408)"/>
<path d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 1.99 3 2.98 3 4 C3.99 4.33 4.98 4.66 6 5 C4.125 5.625 4.125 5.625 2 6 C1.34 5.34 0.68 4.68 0 4 C0 2.68 0 1.36 0 0 Z " fill="#131848" transform="translate(161,396)"/>
<path d="M0 0 C0.33 2.64 0.66 5.28 1 8 C0.34 8 -0.32 8 -1 8 C-1.99 6.02 -2.98 4.04 -4 2 C-1 0 -1 0 0 0 Z " fill="#DCB63B" transform="translate(87,384)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.33 0.99 3.66 1.98 4 3 C3.01 3.33 2.02 3.66 1 4 C0.67 4.66 0.34 5.32 0 6 C-0.382 4.344 -0.714 2.675 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z " fill="#141748" transform="translate(510,373)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.049 2.173 0.089 3.338 -0.875 4.5 C-1.409 5.15 -1.942 5.799 -2.492 6.469 C-2.99 6.974 -3.487 7.479 -4 8 C-4.66 8 -5.32 8 -6 8 C-4.557 4.634 -2.667 2.49 0 0 Z " fill="#CFD6E2" transform="translate(293,364)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C3.99 1.98 4.98 3.96 6 6 C5.01 6 4.02 6 3 6 C2.01 4.02 1.02 2.04 0 0 Z " fill="#E9EBEF" transform="translate(255,288)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 2.31 1 4.62 1 7 C0.34 7 -0.32 7 -1 7 C-1 7.66 -1 8.32 -1 9 C-1.66 9 -2.32 9 -3 9 C-2.01 6.03 -1.02 3.06 0 0 Z " fill="#E7EFF3" transform="translate(334,267)"/>
<path d="M0 0 C3.356 0.599 5.378 1.846 8 4 C5.69 3.67 3.38 3.34 1 3 C0.67 2.01 0.34 1.02 0 0 Z " fill="#18265A" transform="translate(326,260)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 0.99 2 1.98 2 3 C2.66 3 3.32 3 4 3 C4 4.32 4 5.64 4 7 C3.01 6.67 2.02 6.34 1 6 C0.67 4.02 0.34 2.04 0 0 Z " fill="#37635D" transform="translate(24,253)"/>
<path d="M0 0 C0.99 0 1.98 0 3 0 C1.25 4.875 1.25 4.875 -1 6 C-1.625 4.125 -1.625 4.125 -2 2 C-1.34 1.34 -0.68 0.68 0 0 Z " fill="#90CDE4" transform="translate(411,221)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2.75 1.75 2.75 1.75 3 4 C1.062 6.25 1.062 6.25 -1 8 C-0.67 5.36 -0.34 2.72 0 0 Z " fill="#111F54" transform="translate(319,196)"/>
<path d="M0 0 C4.219 0.479 6.797 1.166 10 4 C7.36 3.67 4.72 3.34 2 3 C2 2.34 2 1.68 2 1 C1.34 0.67 0.68 0.34 0 0 Z " fill="#E3CA4A" transform="translate(199,73)"/>
</svg>

After

Width:  |  Height:  |  Size: 152 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>

After

Width:  |  Height:  |  Size: 276 B

+11
View File
@@ -0,0 +1,11 @@
html, body, #app {
height: 100%;
margin: 0,0,0,0;
}
@media (min-width: 992px) {
:host, :root {
margin-left: 0;
margin-right: 0;
}
}
@@ -0,0 +1,70 @@
<script setup>
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
</script>
<template>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="row text-center align-items-center flex-row-reverse">
<div class="col-lg-auto ms-lg-auto">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
<a
href="https://github.com/wuwenfengmi1998/ops2/blob/main/readme.md"
target="_blank"
class="link-secondary"
rel="noopener"
>{{t('footer.doc')}}</a
>
</li>
<li class="list-inline-item">
<a
href="https://github.com/wuwenfengmi1998/ops2/blob/main/LICENSE"
target="_blank"
class="link-secondary"
>{{t('footer.license')}}</a
>
</li>
<li class="list-inline-item">
<a
href="https://github.com/wuwenfengmi1998/ops2"
target="_blank"
class="link-secondary"
rel="noopener"
>{{t('footer.source_code')}}</a
>
</li>
<li class="list-inline-item">
<a
href="https://github.com/wuwenfengmi1998"
target="_blank"
class="link-secondary"
rel="noopener"
>
kevin
</a>
</li>
</ul>
</div>
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
{{ t('footer.copy')}}
</li>
<li class="list-inline-item">
<a
href="https://git.lmve.net/kevin/ops2/-/commits/main"
target="_blank"
class="link-secondary"
rel="noopener"
>
v0.0.1
</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
</template>
@@ -0,0 +1,337 @@
<script setup>
import { useUserStore } from "@/stores/user";
import { RouterLink, useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
import { myfuncs } from "@/myfunc.js";
import { onMounted, ref } from "vue";
// import { Tooltip } from "@tabler/core";
// import { Dropdown } from 'bootstrap'
// 使用 vue-i18n 的 Composition API
const { t, locale } = useI18n();
const userStore = useUserStore();
const theTeme = ref("light");
const lang_sele = ref(null);
const router = useRouter();
function set_them(temp) {
theTeme.value = temp;
myfuncs.setTheme(temp, true);
}
function changeLanguage(lang) {
// 切换语言
const selectElement = lang.target;
const selectedLang = selectElement.value;
locale.value = selectedLang;
myfuncs.save("userLanguage", selectedLang);
//console.log("selectedLang:",selectedLang);
}
function logOut() {
//console.log("logout");
userStore.logout();
router.push("/login");
}
onMounted(() => {
const savedTheme = myfuncs.getThemefromStorge();
theTeme.value = savedTheme;
myfuncs.setTheme(savedTheme, false);
const userLang = myfuncs.load("userLanguage");
if (userLang) {
locale.value = userLang;
if (lang_sele.value) {
lang_sele.value.value = userLang;
}
}
//userlogin
userStore.loginFromStoreCookie();
});
</script>
<template>
<header class="navbar navbar-expand-md d-print-none">
<div class="container-xl">
<!-- BEGIN NAVBAR TOGGLER -->
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbar-menu"
aria-controls="navbar-menu"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<!-- END NAVBAR TOGGLER -->
<!-- BEGIN NAVBAR LOGO -->
<div
class="navbar-brand navbar-brand-autodark d-none-navbar-horizontal pe-0 pe-md-3"
>
<router-link to="/" aria-label="Tabler">
<svg
xmlns="http://www.w3.org/2000/svg"
width="110"
height="32"
viewBox="0 0 232 68"
class="navbar-brand-image"
>
<path
d="M64.6 16.2C63 9.9 58.1 5 51.8 3.4 40 1.5 28 1.5 16.2 3.4 9.9 5 5 9.9 3.4 16.2 1.5 28 1.5 40 3.4 51.8 5 58.1 9.9 63 16.2 64.6c11.8 1.9 23.8 1.9 35.6 0C58.1 63 63 58.1 64.6 51.8c1.9-11.8 1.9-23.8 0-35.6zM33.3 36.3c-2.8 4.4-6.6 8.2-11.1 11-1.5.9-3.3.9-4.8.1s-2.4-2.3-2.5-4c0-1.7.9-3.3 2.4-4.1 2.3-1.4 4.4-3.2 6.1-5.3-1.8-2.1-3.8-3.8-6.1-5.3-2.3-1.3-3-4.2-1.7-6.4s4.3-2.9 6.5-1.6c4.5 2.8 8.2 6.5 11.1 10.9 1 1.4 1 3.3.1 4.7zM49.2 46H37.8c-2.1 0-3.8-1-3.8-3s1.7-3 3.8-3h11.4c2.1 0 3.8 1 3.8 3s-1.7 3-3.8 3z"
fill="#066fd1"
style="fill: var(--tblr-primary, #066fd1)"
/>
<path
d="M105.8 46.1c.4 0 .9.2 1.2.6s.6 1 .6 1.7c0 .9-.5 1.6-1.4 2.2s-2 .9-3.2.9c-2 0-3.7-.4-5-1.3s-2-2.6-2-5.4V31.6h-2.2c-.8 0-1.4-.3-1.9-.8s-.9-1.1-.9-1.9c0-.7.3-1.4.8-1.8s1.2-.7 1.9-.7h2.2v-3.1c0-.8.3-1.5.8-2.1s1.3-.8 2.1-.8 1.5.3 2 .8.8 1.3.8 2.1v3.1h3.4c.8 0 1.4.3 1.9.8s.8 1.2.8 1.9-.3 1.4-.8 1.8-1.2.7-1.9.7h-3.4v13c0 .7.2 1.2.5 1.5s.8.5 1.4.5c.3 0 .6-.1 1.1-.2.5-.2.8-.3 1.2-.3zm28-20.7c.8 0 1.5.3 2.1.8.5.5.8 1.2.8 2.1v20.3c0 .8-.3 1.5-.8 2.1-.5.6-1.2.8-2.1.8s-1.5-.3-2-.8-.8-1.2-.8-2.1c-.8.9-1.9 1.7-3.2 2.4-1.3.7-2.8 1-4.3 1-2.2 0-4.2-.6-6-1.7-1.8-1.1-3.2-2.7-4.2-4.7s-1.6-4.3-1.6-6.9c0-2.6.5-4.9 1.5-6.9s2.4-3.6 4.2-4.8c1.8-1.1 3.7-1.7 5.9-1.7 1.5 0 3 .3 4.3.8 1.3.6 2.5 1.3 3.4 2.1 0-.8.3-1.5.8-2.1.5-.5 1.2-.7 2-.7zm-9.7 21.3c2.1 0 3.8-.8 5.1-2.3s2-3.4 2-5.7-.7-4.2-2-5.8c-1.3-1.5-3-2.3-5.1-2.3-2 0-3.7.8-5 2.3-1.3 1.5-2 3.5-2 5.8s.6 4.2 1.9 5.7 3 2.3 5.1 2.3zm32.1-21.3c2.2 0 4.2.6 6 1.7 1.8 1.1 3.2 2.7 4.2 4.7s1.6 4.3 1.6 6.9-.5 4.9-1.5 6.9-2.4 3.6-4.2 4.8c-1.8 1.1-3.7 1.7-5.9 1.7-1.5 0-3-.3-4.3-.9s-2.5-1.4-3.4-2.3v.3c0 .8-.3 1.5-.8 2.1-.5.6-1.2.8-2.1.8s-1.5-.3-2.1-.8c-.5-.5-.8-1.2-.8-2.1V18.9c0-.8.3-1.5.8-2.1.5-.6 1.2-.8 2.1-.8s1.5.3 2.1.8c.5.6.8 1.3.8 2.1v10c.8-1 1.8-1.8 3.2-2.5 1.3-.7 2.8-1 4.3-1zm-.7 21.3c2 0 3.7-.8 5-2.3s2-3.5 2-5.8-.6-4.2-1.9-5.7-3-2.3-5.1-2.3-3.8.8-5.1 2.3-2 3.4-2 5.7.7 4.2 2 5.8c1.3 1.6 3 2.3 5.1 2.3zm23.6 1.9c0 .8-.3 1.5-.8 2.1s-1.3.8-2.1.8-1.5-.3-2-.8-.8-1.3-.8-2.1V18.9c0-.8.3-1.5.8-2.1s1.3-.8 2.1-.8 1.5.3 2 .8.8 1.3.8 2.1v29.7zm29.3-10.5c0 .8-.3 1.4-.9 1.9-.6.5-1.2.7-2 .7h-15.8c.4 1.9 1.3 3.4 2.6 4.4 1.4 1.1 2.9 1.6 4.7 1.6 1.3 0 2.3-.1 3.1-.4.7-.2 1.3-.5 1.8-.8.4-.3.7-.5.9-.6.6-.3 1.1-.4 1.6-.4.7 0 1.2.2 1.7.7s.7 1 .7 1.7c0 .9-.4 1.6-1.3 2.4-.9.7-2.1 1.4-3.6 1.9s-3 .8-4.6.8c-2.7 0-5-.6-7-1.7s-3.5-2.7-4.6-4.6-1.6-4.2-1.6-6.6c0-2.8.6-5.2 1.7-7.2s2.7-3.7 4.6-4.8 3.9-1.7 6-1.7 4.1.6 6 1.7 3.4 2.7 4.5 4.7c.9 1.9 1.5 4.1 1.5 6.3zm-12.2-7.5c-3.7 0-5.9 1.7-6.6 5.2h12.6v-.3c-.1-1.3-.8-2.5-2-3.5s-2.5-1.4-4-1.4zm30.3-5.2c1 0 1.8.3 2.4.8.7.5 1 1.2 1 1.9 0 1-.3 1.7-.8 2.2-.5.5-1.1.8-1.8.7-.5 0-1-.1-1.6-.3-.2-.1-.4-.1-.6-.2-.4-.1-.7-.1-1.1-.1-.8 0-1.6.3-2.4.8s-1.4 1.3-1.9 2.3-.7 2.3-.7 3.7v11.4c0 .8-.3 1.5-.8 2.1-.5.6-1.2.8-2.1.8s-1.5-.3-2.1-.8c-.5-.6-.8-1.3-.8-2.1V28.8c0-.8.3-1.5.8-2.1.5-.6 1.2-.8 2.1-.8s1.5.3 2.1.8c.5.6.8 1.3.8 2.1v.6c.7-1.3 1.8-2.3 3.2-3 1.3-.7 2.8-1 4.3-1z"
fill-rule="evenodd"
clip-rule="evenodd"
fill="#4a4a4a"
/>
</svg>
</router-link>
</div>
<!-- END NAVBAR LOGO -->
<div class="navbar-nav flex-row order-md-last">
<div class="nav-item">
<a
@click="set_them('dark')"
class="nav-link px-0"
:class="{ 'd-none': theTeme === 'dark' }"
:title="t('message.dark_mode')"
>
<!-- Download SVG icon from http://tabler.io/icons/icon/moon -->
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-1"
>
<path
d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"
/>
</svg>
</a>
<a
@click="set_them('light')"
class="nav-link px-0"
:class="{ 'd-none': theTeme === 'light' }"
:title="t('message.light_mode')"
>
<!-- Download SVG icon from http://tabler.io/icons/icon/sun -->
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-1"
>
<path d="M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" />
<path
d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7"
/>
</svg>
</a>
</div>
<!-- 这里判断是否已经登陆 是则显示用户信息 否则显示登陆按钮 -->
<div v-if="!userStore.isLoggedIn" class="nav-item">
<router-link to="login" class="btn btn-outline-primary">
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0"></path>
<path d="M6 21v-2a4 4 0 0 1 4 -4h4"></path>
<path d="M19 22v-6"></path>
<path d="M22 19l-3 -3l-3 3"></path>
</svg>
{{ t("message.login_or_register") }}
</router-link>
</div>
<div v-else class="nav-item">
<div class="dropdown">
<div
class="nav-link d-flex lh-1 p-0 px-2"
data-bs-toggle="dropdown"
aria-label="Open user menu"
>
<img
:src="userStore.getUserAvatarPath()"
alt=""
class="avatar avatar-sm"
/>
<div class="d-none d-xl-block ps-2">
<div>
{{
userStore.userInfo
? userStore.userInfo.Username
: userStore.user?.Name
}}
</div>
<div class="mt-1 small text-secondary">
{{
userStore.userInfo
? userStore.userInfo.FirstName
: userStore.user?.Email
}}
</div>
</div>
</div>
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<!-- <router-link to="" class="dropdown-item">{{
t("message.user_home")
}}</router-link> -->
<router-link to="/settings/account" class="dropdown-item">{{
t("message.user_settings")
}}</router-link>
<!-- <router-link to="" class="dropdown-item">{{
t("message.preferences")
}}</router-link> -->
<div class="dropdown-divider"></div>
<!-- 如何用户是系统管理员这里显示跳转管理的url -->
<!-- <router-link to="/admin" class="dropdown-item">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-settings"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z"
/>
<path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
</svg>
{{ t("message.administrator") }}</router-link
> -->
<div @click="logOut" class="dropdown-item">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-logout-2"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M10 8v-2a2 2 0 0 1 2 -2h7a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-7a2 2 0 0 1 -2 -2v-2"
/>
<path d="M15 12h-12l3 -3" />
<path d="M6 15l-3 -3" />
</svg>
{{ t("message.logout") }}
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<header class="navbar-expand-md">
<div class="collapse navbar-collapse" id="navbar-menu">
<div class="navbar">
<div class="container-xl">
<div class="row flex-column flex-md-row flex-fill align-items-center">
<div class="col d-flex">
<!-- BEGIN NAVBAR MENU -->
<div class="navbar-nav">
<router-link
to="/"
class="nav-item nav-link"
active-class="active"
>
<span class="nav-link-title">
{{ t("appname.home") }}
</span>
</router-link>
<router-link
to="/schedule"
class="nav-item nav-link"
active-class="active"
>
<span class="nav-link-title">
{{ t("appname.schedule") }}
</span>
</router-link>
<router-link
to="/warehouse"
class="nav-item nav-link"
active-class="active"
>
<span class="nav-link-title">
{{ t("appname.warehouse") }}
</span>
</router-link>
<router-link
to="/purchase"
class="nav-item nav-link"
active-class="active"
>
<span class="nav-link-title">
{{ t("appname.purchase") }}
</span>
</router-link>
</div>
<div class="ms-auto">
<select
class="form-select"
@change="changeLanguage"
ref="lang_sele"
>
<option value="en">English</option>
<option value="zh-CN">中文</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
</template>
<style scoped></style>
@@ -0,0 +1,11 @@
<script setup>
</script>
<template>
<div class="greetings">
111
</div>
</template>
@@ -0,0 +1,169 @@
<script setup>
import { onMounted, ref } from "vue";
import { Offcanvas } from "@tabler/core";
const offcanvasTop = ref(null);
let ov;
const alertType = ref(); // 可选值:'success', 'warning', 'danger', 'info'
const alertText = ref();
let autoCloseTimeout;
onMounted(() => {
// 确保在组件挂载后初始化
if (offcanvasTop.value) {
ov = new Offcanvas(offcanvasTop.value, {
backdrop: false,
});
//ov.show();
//console.log('Offcanvas initialized:', ov)
}
});
function showAlert(type, text, timeout = 5000, callback) {
alertText.value = text;
alertType.value = type;
//console.log(ov);
if (ov) {
ov.hide();
ov.show();
if (autoCloseTimeout) {
clearTimeout(autoCloseTimeout);
}
autoCloseTimeout = setTimeout(() => {
//console.log("timeout");
ov.hide();
if (typeof callback === "function") {
callback();
}
}, timeout);
}
}
defineExpose({
showAlert,
});
</script>
<style scoped>
.my_offcanvas_top {
position: fixed;
height: 45px;
top: 0;
right: 0;
left: 0;
margin-left: 20%;
margin-right: 20%;
margin-top: 20px;
max-height: 100%;
transform: translateY(-100%);
}
</style>
<template>
<div
class="offcanvas alert alert-important alert-dismissible my_offcanvas_top"
:class="{
'alert-success': alertType === 'success',
'alert-warning': alertType === 'warning',
'alert-danger': alertType === 'danger',
'alert-info': alertType === 'info',
}"
role="alert"
tabindex="-1"
ref="offcanvasTop"
>
<div class="d-flex">
<div>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg
v-if="alertType === 'success'"
xmlns="http://www.w3.org/2000/svg"
class="icon alert-icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M5 12l5 5l10 -10"></path>
</svg>
<svg
v-if="alertType === 'warning'"
xmlns="http://www.w3.org/2000/svg"
class="icon alert-icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path
d="M10.24 3.957l-8.422 14.06a1.989 1.989 0 0 0 1.7 2.983h16.845a1.989 1.989 0 0 0 1.7 -2.983l-8.423 -14.06a1.989 1.989 0 0 0 -3.4 0z"
></path>
<path d="M12 9v4"></path>
<path d="M12 17h.01"></path>
</svg>
<svg
v-if="alertType === 'danger'"
xmlns="http://www.w3.org/2000/svg"
class="icon alert-icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"></path>
<path d="M12 8v4"></path>
<path d="M12 16h.01"></path>
</svg>
<svg
v-if="alertType === 'info'"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-brand-hipchat"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M17.802 17.292s.077 -.055 .2 -.149c1.843 -1.425 3 -3.49 3 -5.789c0 -4.286 -4.03 -7.764 -9 -7.764c-4.97 0 -9 3.478 -9 7.764c0 4.288 4.03 7.646 9 7.646c.424 0 1.12 -.028 2.088 -.084c1.262 .82 3.104 1.493 4.716 1.493c.499 0 .734 -.41 .414 -.828c-.486 -.596 -1.156 -1.551 -1.416 -2.29z"
/>
<path d="M7.5 13.5c2.5 2.5 6.5 2.5 9 0" />
</svg>
</div>
<div>
{{ alertText }}
</div>
</div>
<a class="btn-close" data-bs-dismiss="offcanvas" aria-label="close"></a>
</div>
<!-- <div>
<button @click="showAlert('success','success')">success</button>
<button @click="showAlert('warning','warning')">warning</button>
<button @click="showAlert('danger','danger')">danger</button>
<button @click="showAlert('info','info')">info</button>
</div> -->
</template>
@@ -0,0 +1,95 @@
<script setup>
import WelcomeItem from './WelcomeItem.vue'
import DocumentationIcon from './icons/IconDocumentation.vue'
import ToolingIcon from './icons/IconTooling.vue'
import EcosystemIcon from './icons/IconEcosystem.vue'
import CommunityIcon from './icons/IconCommunity.vue'
import SupportIcon from './icons/IconSupport.vue'
const openReadmeInEditor = () => fetch('/__open-in-editor?file=README.md')
</script>
<template>
<WelcomeItem>
<template #icon>
<DocumentationIcon />
</template>
<template #heading>Documentation</template>
Vues
<a href="https://vuejs.org/" target="_blank" rel="noopener">official documentation</a>
provides you with all information you need to get started.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<ToolingIcon />
</template>
<template #heading>Tooling</template>
This project is served and bundled with
<a href="https://vite.dev/guide/features.html" target="_blank" rel="noopener">Vite</a>. The
recommended IDE setup is
<a href="https://code.visualstudio.com/" target="_blank" rel="noopener">VSCode</a>
+
<a href="https://github.com/vuejs/language-tools" target="_blank" rel="noopener"
>Vue - Official</a
>. If you need to test your components and web pages, check out
<a href="https://vitest.dev/" target="_blank" rel="noopener">Vitest</a>
and
<a href="https://www.cypress.io/" target="_blank" rel="noopener">Cypress</a>
/
<a href="https://playwright.dev/" target="_blank" rel="noopener">Playwright</a>.
<br />
More instructions are available in
<a href="javascript:void(0)" @click="openReadmeInEditor"><code>README.md</code></a
>.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<EcosystemIcon />
</template>
<template #heading>Ecosystem</template>
Get official tools and libraries for your project:
<a href="https://pinia.vuejs.org/" target="_blank" rel="noopener">Pinia</a>,
<a href="https://router.vuejs.org/" target="_blank" rel="noopener">Vue Router</a>,
<a href="https://test-utils.vuejs.org/" target="_blank" rel="noopener">Vue Test Utils</a>, and
<a href="https://github.com/vuejs/devtools" target="_blank" rel="noopener">Vue Dev Tools</a>. If
you need more resources, we suggest paying
<a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">Awesome Vue</a>
a visit.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<CommunityIcon />
</template>
<template #heading>Community</template>
Got stuck? Ask your question on
<a href="https://chat.vuejs.org" target="_blank" rel="noopener">Vue Land</a>
(our official Discord server), or
<a href="https://stackoverflow.com/questions/tagged/vue.js" target="_blank" rel="noopener"
>StackOverflow</a
>. You should also follow the official
<a href="https://bsky.app/profile/vuejs.org" target="_blank" rel="noopener">@vuejs.org</a>
Bluesky account or the
<a href="https://x.com/vuejs" target="_blank" rel="noopener">@vuejs</a>
X account for latest news in the Vue world.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<SupportIcon />
</template>
<template #heading>Support Vue</template>
As an independent project, Vue relies on community backing for its sustainability. You can help
us by
<a href="https://vuejs.org/sponsor/" target="_blank" rel="noopener">becoming a sponsor</a>.
</WelcomeItem>
</template>
@@ -0,0 +1,86 @@
<template>
<div class="item">
<i>
<slot name="icon"></slot>
</i>
<div class="details">
<h3>
<slot name="heading"></slot>
</h3>
<slot></slot>
</div>
</div>
</template>
<style scoped>
.item {
margin-top: 2rem;
display: flex;
position: relative;
}
.details {
flex: 1;
margin-left: 1rem;
}
i {
display: flex;
place-items: center;
place-content: center;
width: 32px;
height: 32px;
color: var(--color-text);
}
h3 {
font-size: 1.2rem;
font-weight: 500;
margin-bottom: 0.4rem;
color: var(--color-heading);
}
@media (min-width: 1024px) {
.item {
margin-top: 0;
padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
}
i {
top: calc(50% - 25px);
left: -26px;
position: absolute;
border: 1px solid var(--color-border);
background: var(--color-background);
border-radius: 8px;
width: 50px;
height: 50px;
}
.item:before {
content: ' ';
border-left: 1px solid var(--color-border);
position: absolute;
left: 0;
bottom: calc(50% + 25px);
height: calc(50% - 25px);
}
.item:after {
content: ' ';
border-left: 1px solid var(--color-border);
position: absolute;
left: 0;
top: calc(50% + 25px);
height: calc(50% - 25px);
}
.item:first-of-type:before {
display: none;
}
.item:last-of-type:after {
display: none;
}
}
</style>
@@ -0,0 +1,80 @@
<script setup>
import { onMounted, ref, watch ,defineProps} from "vue";
import Litepicker from "litepicker";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
const datepicker = ref(null);
var picker = null
watch(locale, () => {
picker?.setOptions({ lang: locale.value });
});
defineProps({
setdef: {
type: String,
default: "",
},
})
onMounted(() => {
// @formatter:off
picker = new Litepicker({
element: datepicker.value,
lang: locale.value,
firstDay: 0,
format: "YYYY-MM-DD", // 日期格式
dropdowns: {
minYear: 1900, // 最小可选年份
maxYear: new Date().getFullYear() + 1, // 最大为当前年份
months: true, // 显示月份下拉
years: true, // 显示年份下拉
},
//inlineMode: true,
});
});
defineExpose({
datepicker,
});
</script>
<template>
<div class="input-icon">
<span class="input-icon-addon"
><!-- Download SVG icon from http://tabler-icons.io/i/calendar -->
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z"
/>
<path d="M16 3v4" />
<path d="M8 3v4" />
<path d="M4 11h16" />
<path d="M11 15h1" />
<path d="M12 15v3" />
</svg>
</span>
<input
class="form-control"
:placeholder="t('message.select_date')"
ref="datepicker"
:value="setdef"
/>
</div>
</template>
@@ -0,0 +1,93 @@
<script setup>
import { onMounted, ref, watch, defineProps, reactive } from "vue";
import flatpickr from "flatpickr";
import "flatpickr/dist/flatpickr.css";
import "flatpickr/dist/l10n/zh.js";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
const datatimepack = ref();
const prop = defineProps({
setdef: {
type: String,
default: "",
},
max_date: {
type: [String, Date, Function],
default: () => new Date(), // 默认值为当前时间
},
});
const datatimepack_config = reactive({
enableTime: true,
dateFormat: "Y-m-d H:i",
minuteIncrement: 1,
time_24hr: true,
maxDate: prop.max_date, // 只能选择当前时间之前的时间
//locale:"zh"
});
const sele_data = reactive();
const emit = defineEmits(['update:modelValue'])
const handleChange = (e) => {
//console.log(e)
emit("update:modelValue", e.target.value);
};
function getCurrentDateTime() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, "0"); // 月份从0开始
const day = String(now.getDate()).padStart(2, "0");
const hours = String(now.getHours()).padStart(2, "0");
const minutes = String(now.getMinutes()).padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}`;
}
watch(locale, () => {
if (locale.value == "zh-CN") {
datatimepack_config.locale = "zh";
} else {
datatimepack_config.locale = "en";
}
//console.log(locale.value=="zh-CN"?"zh":"en")
});
onMounted(() => {
// @formatter:off
//console.log(getCurrentDateTime())
//sele_data=getCurrentDateTime();
// console.log(prop.setdef)
if (prop.setdef == "") {
datatimepack_config.defaultDate = getCurrentDateTime();
} else {
datatimepack_config.defaultDate = prop.setdef;
}
datatimepack_config.locale = locale.value == "zh-CN" ? "zh" : "en";
flatpickr(datatimepack.value, datatimepack_config);
emit("update:modelValue", datatimepack_config.defaultDate);
});
defineExpose({});
</script>
<template>
<div></div>
<input
ref="datatimepack"
type="datetime-local"
class="form-control"
@input="handleChange"
/>
</template>
@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
<path
d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
/>
</svg>
</template>
@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
<path
d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
/>
</svg>
</template>
@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
<path
d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
/>
</svg>
</template>
@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
<path
d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
/>
</svg>
</template>
@@ -0,0 +1,19 @@
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
<template>
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
aria-hidden="true"
role="img"
class="iconify iconify--mdi"
width="24"
height="24"
preserveAspectRatio="xMidYMid meet"
viewBox="0 0 24 24"
>
<path
d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
fill="currentColor"
></path>
</svg>
</template>
@@ -0,0 +1,160 @@
<script setup>
import { Modal } from "@tabler/core";
import { onMounted, ref } from "vue";
import "cropperjs";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
const cro_sele = ref();
const cro_canv = ref();
const cro_imag = ref();
var cor_size_width = 300;
var cor_size_height = 300;
const is_have_URL = ref(false);
const reader = new FileReader();
reader.onload = () => {
initCropper(reader.result);
};
const emit = defineEmits(['crop_to_canvas'])
onMounted(() => {
cro_sele.value.$change(0, 0, cor_size_width, cor_size_height);
cro_canv.value.style.width = cor_size_width.toString() + "px";
cro_canv.value.style.height = cor_size_height.toString() + "px";
cro_imag.value.src = "";
//console.log(cro_canv.value.clientHeight)
});
function initCropper(imageSrc) {
is_have_URL.value = true;
cro_imag.value.src = imageSrc;
}
function cancel() {
is_have_URL.value = false;
}
function inputfile(e) {
const file = e.target.files[0];
if (!file) {
e.target.value = "";
is_have_URL.value = false;
return;
}
if (!file.type.startsWith("image/")) {
e.target.value = "";
is_have_URL.value = false;
return;
}
reader.readAsDataURL(file);
}
function openFilePicker() {
const fileInput = document.createElement("input");
fileInput.type = "file";
fileInput.accept = "image/*"; // 可选:限制文件类型
fileInput.multiple = false; // 可选:是否允许多选
fileInput.onchange = (e) => {
inputfile(e);
};
fileInput.click(); // 触发文件选择
}
function getsele() {
cro_canv.value.$toCanvas().then((a) => {
//console.log(a);
//const imageData = a.toDataURL("image/png");
emit('crop_to_canvas',a)
//console.log(imageData);
});
}
</script>
<template>
<div class="d-flex flex-column flex-md-row">
<div v-show="!is_have_URL" class="col-6 col-sm-4 col-md-2 col-xl py-3">
<button class="btn btn-outline-primary" @click="openFilePicker">
{{ t("cropper.select_image") }}
</button>
</div>
<cropper-canvas
ref="cro_canv"
class="cropper-container"
:hidden="!is_have_URL"
background
scale-step="0.1"
>
<cropper-image
ref="cro_imag"
src=""
alt="Picture"
initialCenterSize="cover"
rotatable
scalable
skewable
translatable
></cropper-image>
<cropper-shade hidden></cropper-shade>
<cropper-handle action="move" plain></cropper-handle>
<cropper-selection ref="cro_sele">
<cropper-grid role="grid" covered></cropper-grid>
<cropper-crosshair centered></cropper-crosshair>
<cropper-handle
action="move"
theme-color="rgba(255, 255, 255, 0)"
></cropper-handle>
</cropper-selection>
</cropper-canvas>
<div v-show="is_have_URL" class="thisbutton">
<button class="btn btn-outline-primary" @click="getsele">
{{ t("cropper.crop_image") }}
</button>
<button class="btn btn-outline-danger" @click="cancel">{{ t("cropper.closs") }}</button>
</div>
</div>
</template>
<style lang="scss" scoped>
.container {
display: flex;
/* 默认就是水平排列 */
/* flex-direction: row; */
}
.thisbutton {
display: flex;
flex-direction: column;
margin-left: 20px;
margin-top: 20px;
gap: 20px; /* 所有子元素之间的间距 */
}
.box {
margin: 10px;
flex-direction: column; /* 关键:改为纵向排列 */
}
.cropper-container {
/* 四个角相同圆角 */
border-radius: 10px;
/* 基本描边 */
//border: 2px solid #333;
/* 基本阴影:x偏移 y偏移 模糊半径 扩展半径 颜色 */
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);
}
</style>
@@ -0,0 +1,49 @@
<script setup>
import { RouterLink } from "vue-router";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
</script>
<template>
<div class="col-12 col-md-3 border-end">
<div class="card-body">
<div class="list-group list-group-transparent">
<router-link
to="/settings/account"
active-class="active"
class="list-group-item list-group-item-action d-flex align-items-center"
>
{{t('settings.basic_information')}}</router-link
>
</div>
<div class="list-group list-group-transparent">
<router-link
to="/settings/contact"
active-class="active"
class="list-group-item list-group-item-action d-flex align-items-center"
>
{{t('settings.contact_information')}}</router-link
>
</div>
<div class="list-group list-group-transparent">
<router-link
to="/settings/security"
active-class="active"
class="list-group-item list-group-item-action d-flex align-items-center"
>
{{t('settings.security_settings')}}</router-link
>
</div>
<!-- <h4 class="subheader mt-4">{{t('settings.admin')}}</h4>
<div class="list-group list-group-transparent">
<router-link
to="/settings/account"
class="list-group-item list-group-item-action d-flex align-items-center active"
>
{{t('settings.website_settings')}}</router-link
>
</div> -->
</div>
</div>
</template>
@@ -0,0 +1,78 @@
<script setup>
import { onMounted, watch, ref, defineProps, defineEmits } from "vue";
import { useI18n } from "vue-i18n";
import TomSelect from "tom-select";
import "tom-select/dist/css/tom-select.css";
const { t, locale } = useI18n();
const disable_backspace = ref();
function sele_tag_init() {
new TomSelect(disable_backspace.value, {
plugins: ["remove_button"],
persist: false,
createOnBlur: true,
create: true,
// 自定义提示文本
render: {
no_results: function (data, escape) {
return (
'<div class="no-results">' + t("tagadder.not_fund_item") + "</div>"
);
},
loading: function (data, escape) {
return '<div class="loading">' + t("tagadder.loding") + "</div>";
},
option_create: function (data, escape) {
return (
'<div class="create">' +
t("tagadder.add") +
"<strong>" +
escape(data.input) +
"</strong></div>"
);
},
},
});
}
const props = defineProps({
placeholder: {
type: String,
default: "",
},
modelValue: {
type: String,
default: "",
},
});
const emit = defineEmits(['update:modelValue'])
//const emit = defineEmits(['update:modelValue'])
onMounted(() => {
sele_tag_init();
});
const handleChange = (e) => {
emit("update:modelValue", e.target.value);
};
</script>
<template>
<div ref="example_wrapper">
<input
type="text"
ref="disable_backspace"
:value="modelValue"
@input="handleChange"
autocomplete="off"
:placeholder="placeholder"
/>
</div>
</template>
@@ -0,0 +1,464 @@
<script setup>
import { ref, onMounted, onUnmounted, defineProps, reactive } from "vue";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
import Dropzone from "dropzone";
import "dropzone/dist/dropzone.css";
import { useUserStore } from "@/stores/user";
import "fslightbox";
//var lightbox = new FsLightbox();
const userStore = useUserStore();
const dropzoneElement = ref(null);
var dropzoneInstance = null;
const files = reactive([]);
function get_file_from_uuid(uuid) {
if (files.length != 0) {
for (var i = 0; i < files.length; i++) {
if (files[i].uuid == uuid) {
return i;
}
}
return -1;
}
return -2;
}
function remove_file_from_uuie(uuid) {
//devare files[uuid]
var id = get_file_from_uuid(uuid);
if (id >= 0) {
files.splice(id, 1);
}
}
const prop = defineProps({
maxFiles: {
type: Number,
default: 5,
},
acceptedFiles: {
type: String,
default: "image/*",
},
maxFilesize: {
type: Number,
default: 10,
},
uploadURL: {
type: String,
default: "/api/files/upload",
},
});
// 初始化 Dropzone
const initDropzone = () => {
if (!dropzoneElement.value) return;
// 禁用自动发现
Dropzone.autoDiscover = false;
// 移除任何现有的 Dropzone 实例
if (dropzoneInstance) {
dropzoneInstance.destroy();
}
// 初始化新的实例
dropzoneInstance = new Dropzone(dropzoneElement.value, {
url: prop.uploadURL, // 上传地址
// headers: {
// user_cookie: "cccc",
// },
method: "post",
//uploadMultiple: true,
previewTemplate: document.getElementById("custom-template").innerHTML,
parallelUploads: 3, // 同时上传的文件数
maxFilesize: prop.maxFilesize, // MB
maxFiles: prop.maxFiles, // 最大文件数
acceptedFiles: prop.acceptedFiles, // 接受的文件类型
//addRemoveLinks: true, // 显示移除链接
dictDefaultMessage: t("dropzone.upload_drop_or_click"),
dictFallbackMessage: t("dropzone.upload_browser_not_supported"),
dictFivarooBig:
t("dropzone.upload_file_too_big") +
"({{filesize}}MB). " +
t("dropzone.upload_max_file_size") +
"{{maxFilesize}}MB.",
dictInvalidFivarype: t("dropzone.upload_invalid_file_type"),
dictResponseError: t("dropzone.upload_server_error") + "{{statusCode}}",
//dictCancelUpload: t('dropzone.upload_cancel'),
//dictUploadCanceled: t('dropzone.upload_canceled'),
//dictCancelUploadConfirmation: t('dropzone.upload_cancel_confirmation'),
dictRemoveFile: t("dropzone.upload_remove_file"),
dictMaxFilesExceeded:
t("dropzone.upload_max_files") +
"{{maxFiles}}" +
t("dropzone.upload_max_files_unit"),
// 事件处理
init: function () {
this.on("success", (file, response) => {
//console.log("上传成功:", file, response);
file.previewElement.addEventListener("click", function (e) {
//delete lightbox
const lightbox = new FsLightbox();
//console.log(files)
e.preventDefault();
e.stopPropagation();
// 处理点击事件
//console.log("缩略图被点击", file);
//动态把文件载入灯箱
//先移除原有数据
//lightbox.props.sources.splice(0, lightbox.props.sources.length);
var dis_id = 0;
var dis_id_t = 0;
for (var i = 0; i < files.length; i++) {
if (files[i]["is_upload"] == true) {
lightbox.props.sources.push(files[i]["get_url"]);
if (files[i]["uuid"] == file.upload.uuid) {
dis_id = dis_id_t;
}
}
dis_id_t += 1;
}
lightbox.open(dis_id);
});
var file_id = get_file_from_uuid(file.upload.uuid);
if (file_id >= 0) {
files[file_id]["hash"] = response.return.hash;
files[file_id]["get_url"] = response.return.get;
files[file_id]["download_url"] = response.return.download;
files[file_id]["file_name"] = file.name;
files[file_id]["file_size"] = file.size;
files[file_id]["is_upload"] = true;
//console.log(files)
}
//files.push(t)
// files[file.upload.uuid]=t
// console.log(files)
// lightbox.props.sources.push(t.get_url)
// console.log(lightbox)
});
this.on("error", (file, errorMessage) => {
console.error("上传失败:", file.name, errorMessage);
});
this.on("removedfile", (file) => {
//console.log("remove:", file);
//files.value = files.value.filter(f => f.name !== file.name)
remove_file_from_uuie(file.upload.uuid);
//console.log(files)
});
this.on("addedfile", (file) => {
//添加文件
//控制排序 需要从添加文件开始操作
//限制文件数量
if (files.length < prop.maxFiles) {
var t = {
uuid: file.upload.uuid,
is_upload: false,
};
files.push(t);
} else {
this.removeFile(file);
}
//console.log(files);
});
this.on("sending", function (file, xhr, formData) {
// 获取表单值并添加到 FormData
//console.log(userStore.userCookie.Value)
formData.append("cookie", userStore.userCookie.Value);
});
},
});
};
// 自定义方法
// const formatBytes = (bytes, decimals = 2) => {
// if (bytes === 0) return '0 Bytes'
// const k = 1024
// const dm = decimals < 0 ? 0 : decimals
// const sizes = ['Bytes', 'KB', 'MB', 'GB']
// const i = Math.floor(Math.log(bytes) / Math.log(k))
// return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
// }
// // 手动添加文件的方法
// const addFiles = (fileList) => {
// if (dropzoneInstance) {
// Array.from(fileList).forEach(file => {
// dropzoneInstance.addFile(file)
// })
// }
// }
// // 获取所有已添加的文件
// const getAllFiles = () => {
// return dropzoneInstance ? dropzoneInstance.files : []
// }
// // 清除所有文件
// const removeAllFiles = () => {
// if (dropzoneInstance) {
// dropzoneInstance.removeAllFiles(true)
// }
// }
function return_files() {
return files;
}
// 组件挂载时初始化
onMounted(() => {
initDropzone();
//console.log(lightbox)
});
// 组件卸载时销毁
onUnmounted(() => {
if (dropzoneInstance) {
dropzoneInstance.destroy();
}
});
defineExpose({
return_files,
});
</script>
<template>
<div>
<div id="custom-template" style="display: none">
<div class="dz-preview dz-file-preview my-custom-style">
<div class="remove-btn" data-dz-remove>
<!-- <i class="bi bi-x"></i> -->
X
</div>
<div class="dz-image">
<img data-dz-thumbnail alt="File preview" />
<!-- 缩略图 -->
</div>
<div class="dz-details">
<div class="dz-filename"><span data-dz-name></span></div>
<!-- 文件名 -->
<div class="dz-size"><span data-dz-size></span></div>
<!-- 文件大小 -->
</div>
<div class="dz-progress">
<span class="dz-upload" data-dz-uploadprogress></span>
<!-- 进度条 -->
</div>
<div class="dz-success-mark" data-dz-successmark>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-circle-check"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
<path d="M9 12l2 2l4 -4" />
</svg>
</div>
<!-- 成功标记 -->
<div class="dz-error-mark" data-dz-errormark>
<svg
xmlns="http://www.w3.org/2000/svg"
width="240"
height="240"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-circle-x"
>
<path stroke="none" fill="none" d="M0 0h24v24H0z" />
<path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
<path d="M10 10l4 4m0 -4l-4 4" />
</svg>
</div>
<!-- 错误标记 -->
<div class="dz-error-message"><span data-dz-errormessage></span></div>
<!-- 错误信息 -->
<!-- 移除按钮 -->
</div>
</div>
<div class="text-end">{{ files.length }}/{{ maxFiles }}</div>
<div ref="dropzoneElement" class="dropzone"></div>
</div>
</template>
<style scoped>
.dz_mark {
height: 60px;
width: 60px;
}
.thumbnail-container {
display: flex;
flex-wrap: wrap;
gap: 15px;
justify-content: center;
padding: 20px;
background-color: white;
border-radius: 15px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}
/* 缩略图样式 */
.thumbnail {
width: var(--thumbnail-size);
height: var(--thumbnail-size);
border-radius: var(--border-radius);
object-fit: cover;
border: 2px solid #e9ecef;
transition: all 0.3s ease;
}
.thumbnail:hover {
transform: scale(1.05);
border-color: #6c757d;
}
/* 缩略图包装器 */
.thumbnail-wrapper {
position: relative;
width: var(--thumbnail-size);
height: var(--thumbnail-size);
margin-bottom: 10px;
}
/* 移除按钮 */
.remove-btn {
position: absolute;
top: -12px;
right: -12px;
width: 24px;
height: 24px;
border-radius: 50%;
background-color: #dc3545;
color: white;
border: none;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
cursor: pointer;
transition: all 0.2s ease;
z-index: 10;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}
.remove-btn:hover {
background-color: #bb2d3b;
transform: scale(1.1);
}
/* 文件名称 */
.file-name {
font-size: 12px;
text-align: center;
max-width: 100px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #495057;
}
/* 上传区域 */
.upload-area {
border: 2px dashed #dee2e6;
border-radius: 15px;
padding: 30px;
text-align: center;
background-color: #f8f9fa;
cursor: pointer;
transition: all 0.3s ease;
margin-bottom: 20px;
}
.upload-area:hover {
border-color: #6c757d;
background-color: #e9ecef;
}
.upload-icon {
font-size: 48px;
color: #6c757d;
margin-bottom: 10px;
}
.preview-title {
color: #343a40;
border-bottom: 2px solid #e9ecef;
padding-bottom: 10px;
margin-bottom: 20px;
}
.empty-state {
text-align: center;
padding: 40px 20px;
color: #6c757d;
}
.empty-state i {
font-size: 48px;
margin-bottom: 15px;
color: #adb5bd;
}
.counter-badge {
position: absolute;
top: -5px;
right: -5px;
background-color: #0d6efd;
color: white;
border-radius: 50%;
width: 20px;
height: 20px;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.thumbnail-actions {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.file-input {
display: none;
}
</style>
+223
View File
@@ -0,0 +1,223 @@
{
"errorpage": {
"404_title": "404 Resource Not Found",
"404_msg_title": "Oops… You just found an error page",
"404_msg": "We are sorry but the page you are looking for was not found",
"404_back_home": "Take me home",
"404_previous_page": "previous page"
},
"appname": {
"home": "Home",
"login": "Login",
"forgot_password": "Forgot Password",
"register": "Register",
"schedule": "Schedule",
"purchase": "Purchase",
"warehouse": "Warehouse"
},
"tagadder": {
"not_fund_item": "No matching items found",
"loding": "Loading...",
"add": "Add new option: "
},
"dropzone": {
"upload_drop_or_click": "Drag and drop files here or click to upload",
"upload_browser_not_supported": "Your browser does not support drag-and-drop file upload",
"upload_file_too_big": "File is too large",
"upload_max_file_size": "Maximum file size: ",
"upload_invalid_file_type": "File type not supported",
"upload_server_error": "Server responded with an error",
"upload_cancel": "Cancel upload",
"upload_canceled": "Upload canceled",
"upload_cancel_confirmation": "Are you sure you want to cancel the upload?",
"upload_remove_file": "Remove file",
"upload_max_files": "You can upload up to ",
"upload_max_files_unit": " files"
},
"cropper": {
"select_image": "Select Image",
"select_File": "Select File",
"crop_image": "Crop Image",
"cancel": "Cancel",
"closs": "Closs"
},
"purchase": {
"purchase_list": "Purchase List",
"item_name": "Item Name",
"purpose": "Purpose",
"unit": "Unit",
"quantity": "Quantity",
"unit_price": "Unit Price",
"total_price": "Total Price",
"created_at": "Created At",
"updated_at": "Updated At",
"status": "Status",
"completed": "Completed",
"pending": "Pending",
"show": "Show",
"entries": "entries",
"search": "Search",
"add_part": "Add Order",
"exp_report": "Export Report",
"There_are_a_total_of": ",There are a total of",
"items": "items."
},
"purchase_addorder": {
"add_order": "Add Order",
"order_info": "Order Information",
"title": "Title",
"input_title": "Enter order title",
"remarks": "Remarks",
"photo_remarks": "Photos Remarks",
"remarks_text": "Enter text notes",
"purchase_channel": "Purchase Channel",
"link": "Link",
"style_remarks": "Style Remarks",
"add_style": "Add Style",
"cost": "Cost",
"type": "Type",
"quantity": "Quantity",
"fee": "Fee",
"total_price": "Total Price",
"currency": "Currency",
"operation": "Operation",
"remove": "Remove",
"change": "Change",
"fee_type": "Fee type",
"input_quantity": "Quantity",
"input_fee": "Fee",
"select_currency": "Select currency",
"add": "Add",
"other_status": "Other Status",
"update_time": "Update Time",
"tracking_number": "Tracking Number",
"input_tracking_number": "Enter tracking number",
"order_status": "Order Status",
"modify_order_status": "Modify Order Status",
"submit": "Submit",
"part_name": "Parts Name"
},
"schedule": {
"my_schedule": "My Schedule",
"add_event": "Add Event",
"event_title": "Event Title",
"event_date": "Event Date",
"event_time": "Event Time",
"event_description": "Event Description",
"save_event": "Save Event",
"no_events": "No events found",
"delete_event": "Delete Event",
"edit_event": "Edit Event",
"tody": "Today",
"week": "This Week",
"month": "This Month",
"previous_month": "Prev Month",
"next_month": "Next Month",
"previous_year": "Prev Year",
"next_year": "Next Year"
},
"message": {
"functionality_not_yet_developed": "Functionality not yet developed",
"hello": "Hello",
"welcome": "Welcome",
"dark_mode": "Enable dark mode",
"light_mode": "Enable light mode",
"login_or_register": "Login/Register",
"login_to_your_account": "Login to your account",
"your_email_address": "Your email address",
"email_address": "Email address",
"user_name": "User name",
"your_user_name": "Your user name",
"password": "Password",
"your_password": "Your password",
"i_forgot_password": "I forgot my password",
"remember_me_on_this_device": "Remember me on this device",
"dont_have_account_yet": "Don't have an account yet?",
"register_now": "Register now",
"show_password": "Show password",
"hidden_Password": "Hidden Password",
"please_enter_username_and_password": "Please enter username and password",
"forgot_password": "Forgot Password",
"enter_your_email_to_reset_password": "Enter your email address and your password will be reset and emailed to you.",
"enter_your_username_to_reset_password": "Enter your user name and your password will be reset and emailed to you.",
"back_to_login": "Back to login",
"please_enter_your_email": "Please enter your email",
"please_enter_your_username": "Please enter your user name",
"this_not_email": "This is not an email address.",
"create_new_account": "Create new account",
"already_have_an_account": "Already have an account?",
"network_err": "Network error",
"username_dup": "Duplicate username",
"registration_successful": "Registration successful!",
"server_error": "Server Error",
"user_not_found": "User not found",
"username_or_password_incorrect": "Username or password incorrect.",
"login_successful": "Login successful",
"logout": "Logout",
"user_home": "Profile",
"user_settings": "Settings",
"preferences": "Preferences",
"administrator": "Administrator",
"select_date": "Select a date",
"save_ok": "Saved successfully",
"change_ok": "Changed successfully",
"type_old_pass": "Enter old password",
"type_new_pass": "Enter new password",
"type_cof_pass": "Confirm new password",
"old_pass_incorrect": "Old password is incorrect",
"confirm_password_incorrect": "Confirm password is incorrect"
},
"settings": {
"cancel": "Cancel",
"basic_information": "Basic Information",
"contact_information": "Contact Information",
"security_settings": "Security Settings",
"account_settings": "Account Settings",
"my_account": "My Account",
"profile_information": "Profile Information",
"change_avatar": "Change Avatar",
"change_email": "Change Email",
"name": "Name",
"remark": "Remark",
"email": "Email",
"gender": "Gender",
"male": "Male",
"female": "Female",
"birthday": "Birthday",
"admin": "Admin",
"website_settings": "Website Settings",
"site_name": "Site Name",
"logo_settings": "Logo Settings",
"site_description": "Site Description",
"site_keywords": "Site Keywords",
"save_changes": "Save Changes",
"password": "Password",
"set_new_password": "Set New Password"
},
"button": {
"submit": "Submit",
"cancel": "Cancel",
"sign_in": "Sign In",
"send_me_new_password": "Send me new password"
},
"footer": {
"doc": "Documentation",
"license": "License",
"source_code": "Source Code",
"copy": "Copyright © 2025 Operations. All rights reserved."
},
"cost_type": {
"unit_price": "Unit Price",
"freight": "Freight"
},
"order_status": {
"pending_order": "Pending Order",
"order_placed": "Order Placed",
"in_transit": "In Transit",
"completed": "Completed",
"refund_requested": "Refund Requested",
"returning": "Returning",
"refunded": "Refunded",
"lost_package": "Lost Package"
}
}
+223
View File
@@ -0,0 +1,223 @@
{
"errorpage": {
"404_title": "404 资源未找到",
"404_msg_title": "抱歉…您刚刚发现了一个错误页面",
"404_msg": "您所查找的页面不存在",
"404_back_home": "返回首页",
"404_previous_page": "上一页"
},
"appname": {
"home": "主页",
"login": "登录",
"forgot_password": "忘记密码",
"register": "注册",
"schedule": "日程",
"purchase": "采购",
"warehouse": "仓库"
},
"tagadder": {
"not_fund_item": "没有找到匹配项",
"loding": "正在加载...",
"add": "添加新选项: "
},
"dropzone": {
"upload_drop_or_click": "拖放文件到这里或点击上传",
"upload_browser_not_supported": "您的浏览器不支持拖放文件上传",
"upload_file_too_big": "文件太大",
"upload_max_file_size": "最大文件大小: ",
"upload_invalid_file_type": "不支持此文件类型",
"upload_server_error": "服务器响应错误",
"upload_cancel": "取消上传",
"upload_canceled": "上传已取消",
"upload_cancel_confirmation": "确定要取消上传吗?",
"upload_remove_file": "移除文件",
"upload_max_files": "您最多只能上传",
"upload_max_files_unit": "个文件"
},
"cropper": {
"select_image": "选择图片",
"select_File": "选择文件",
"crop_image": "裁剪图片",
"cancel": "取消",
"closs": "关闭"
},
"purchase": {
"purchase_list": "采购列表",
"item_name": "物品名称",
"purpose": "用途",
"unit": "单位",
"quantity": "数量",
"unit_price": "单价",
"total_price": "总价",
"created_at": "创建日期",
"updated_at": "更新日期",
"status": "状态",
"completed": "已完成",
"pending": "待处理",
"show": "显示",
"entries": "个物件",
"search": "搜索",
"add_part": "添加订单",
"exp_report": "生成报告",
"There_are_a_total_of":",一共",
"items":"个物件"
},
"purchase_addorder": {
"add_order": "添加订单",
"order_info": "订单信息",
"title": "标题",
"input_title": "输入订单标题",
"remarks": "备注",
"photo_remarks": "图片备注",
"remarks_text": "输入文字备注",
"purchase_channel": "采购途径",
"link": "链接",
"style_remarks": "样式备注",
"add_style": "添加样式",
"cost": "成本",
"type": "类型",
"quantity": "数量",
"fee": "费用",
"total_price": "总价",
"currency": "货币",
"operation": "操作",
"remove": "移除",
"change": "修改",
"fee_type": "费用类型",
"input_quantity": "数量",
"input_fee": "费用",
"select_currency": "选择货币类型",
"add": "添加",
"other_status": "其他状态",
"update_time": "更新时间",
"tracking_number": "快递单号",
"input_tracking_number": "输入快递单号",
"order_status": "订单状态",
"modify_order_status": "修改订单状态",
"submit": "提交",
"part_name":"物件名称"
},
"schedule": {
"my_schedule": "我的日程",
"add_event": "添加事件",
"event_title": "事件标题",
"event_date": "事件日期",
"event_time": "事件时间",
"event_description": "事件描述",
"save_event": "保存事件",
"no_events": "没有找到事件",
"delete_event": "删除事件",
"edit_event": "编辑事件",
"tody": "今天",
"week": "本周",
"month": "本月",
"previous_month": "上月",
"next_month": "下月",
"previous_year": "上年",
"next_year": "下年"
},
"message": {
"functionality_not_yet_developed": "功能未开发",
"hello": "你好",
"welcome": "欢迎",
"dark_mode": "深色模式",
"light_mode": "亮色模式",
"login_or_register": "登录/注册",
"login_to_your_account": "登录到您的账户",
"your_email_address": "您的邮箱地址",
"email_address": "邮箱地址",
"user_name": "用户名",
"your_user_name": "您的用户名",
"password": "密码",
"your_password": "您的密码",
"i_forgot_password": "我忘记了密码",
"remember_me_on_this_device": "记住我在这台设备上",
"dont_have_account_yet": "还没有账户?",
"register_now": "立即注册",
"show_password": "显示密码",
"hidden_Password": "隐藏密码",
"please_enter_username_and_password": "请输入用户名和密码",
"forgot_password": "忘记密码",
"enter_your_email_to_reset_password": "输入您的邮箱地址,您的密码将被重置并通过邮件发送给您。",
"enter_your_username_to_reset_password": "输入您的用户名,您的密码将被重置并通过邮件发送给您。",
"back_to_login": "返回登录",
"please_enter_your_email": "请输入您的邮箱",
"please_enter_your_username": "请输入您的用户名",
"this_not_email": "这不是一个有效的邮箱地址。",
"create_new_account": "创建新账户",
"already_have_an_account": "已经有账户了?",
"network_err": "网络错误",
"username_dup": "用户名重复",
"registration_successful": "注册成功!",
"server_error": "服务端错误",
"user_not_found": "找不到用户",
"username_or_password_incorrect": "用户或密码错误",
"login_successful": "登录成功",
"logout": "登出",
"user_home": "个人主页",
"user_settings": "个人资料",
"preferences": "偏好设置",
"administrator": "管理员",
"select_date": "选择日期",
"save_ok": "保存成功",
"change_ok": "更改成功",
"type_old_pass": "输入旧密码",
"type_new_pass": "输入新密码",
"type_cof_pass": "确认新密码",
"old_pass_incorrect": "旧密码不正确",
"confirm_password_incorrect": "确认密码不正确"
},
"settings": {
"cancel": "取消",
"basic_information": "基本信息",
"contact_information": "联系信息",
"security_settings": "安全设置",
"account_settings": "个人设置",
"my_account": "我的账户",
"profile_information": "个人信息",
"change_avatar": "更改头像",
"change_email": "更改邮箱",
"name": "姓名",
"remark": "备注",
"email": "邮箱",
"gender": "性别",
"male": "男",
"female": "女",
"birthday": "生日",
"admin": "管理员",
"website_settings": "网站设置",
"site_name": "网站名称",
"logo_settings": "Logo设置",
"site_description": "网站描述",
"site_keywords": "网站关键词",
"save_changes": "保存更改",
"password": "密码",
"set_new_password": "设置新密码"
},
"button": {
"submit": "提交",
"cancel": "取消",
"sign_in": "登录",
"send_me_new_password": "发送新密码"
},
"footer": {
"doc": "文档",
"license": "协议",
"source_code": "源码",
"copy": "版权 © 2025 Operations. 保留所有权利。"
},
"cost_type": {
"unit_price": "单价",
"freight": "运费"
},
"order_status": {
"pending_order": "待下单",
"order_placed": "已下单",
"in_transit": "运输中",
"completed": "已完成",
"refund_requested": "申请退款",
"returning": "退回中",
"refunded": "已退款",
"lost_package": "丢件"
}
}
File diff suppressed because one or more lines are too long
+34
View File
@@ -0,0 +1,34 @@
import { createApp } from 'vue'
import { createI18n } from 'vue-i18n'
import { createPinia } from 'pinia' // 1. 导入 createPinia
import App from './App.vue'
import router from './router'
import '@tabler/core/dist/css/tabler.min.css'
import './assets/main.css'
import en from './i18n/en.json'
import zhCN from './i18n/zh-CN.json'
const i18n = createI18n({
legacy: false, // 使用 Composition API 模式
locale: 'en',
fallbackLocale: 'en',
messages: {
en,
'zh-CN': zhCN
}
})
const pinia = createPinia()
const app = createApp(App)
app.use(router)
app.use(i18n)
app.use(pinia)
app.mount('#app')
+123
View File
@@ -0,0 +1,123 @@
import axios from "axios";
import { myfuncs } from "./myfunc";
import { useUserStore } from "@/stores/user";
var head_path = "/api";
export const my_network_func = {
getJson(path, callback) {
//get 方法一般不需要权限,不插入cookie
var re_data = {};
axios
.get(head_path + path)
.then((r) => {
re_data["statusCode"] = r.status;
re_data["data"] = r.data;
callback(re_data);
})
.catch((error) => {
re_data["statusCode"] = -1;
re_data["error"] = error;
callback(re_data);
});
},
postflise(path, file, callback) {
//拿去用户数据
var userstore = useUserStore();
// 1. 创建 FormData 对象
const formData = new FormData();
// 2. 添加文件
formData.append("cookie", userstore.userCookie.Value); //把cookie插入json
formData.append("file", file); // 单个文件
//console.log(file)
var re_data = {};
axios
.post(head_path + path, formData)
.then((response) => {
//console.log(response)
re_data["statusCode"] = response.status;
//载入服务器返回的数据
if (response.data) {
re_data["data"] = response.data;
//自动保存服务器发送的cookie
if (response.status == 200) {
if (response.data.err_code == 0) {
} else if (response.data.err_code == -44) {
//后端返回的cookie错误码
//userCookieExpired
userstore.logout();
}
}
}
callback(re_data);
})
.catch((error) => {
re_data["statusCode"] = -1;
re_data["error"] = error;
callback(re_data);
});
},
postJson(path, json, callback) {
//把cookie插入json
var data = {};
data["data"] = json;
var userstore = useUserStore();
//console.log(userstore.cookieValue)
if (userstore.userCookie) {
data["userCookieValue"] = userstore.userCookie.Value;
}
var re_data = {};
axios
.post(head_path + path, data, {
headers: {
"Content-Type": "application/json",
},
})
.then((response) => {
//console.log(response)
re_data["statusCode"] = response.status;
//载入服务器返回的数据
if (response.data) {
re_data["data"] = response.data;
//自动保存服务器发送的cookie
if (response.status == 200) {
if (response.data.err_code == 0) {
// if(response.data.return.cookie){
// userstore.cookieUpdata(response.data.return.cookie)
// }
} else if (response.data.err_code == -44) {
//后端返回的cookie错误码
//userCookieExpired
userstore.logout();
}
}
// if (response.data.cookie) {
// if (response.data.cookie.Value == "") {
// myfuncs.dele("cookie");
// } else {
// myfuncs.saveJson("cookie", response.data.cookie);
// }
// }
}
callback(re_data);
})
.catch((error) => {
re_data["statusCode"] = -1;
re_data["error"] = error;
callback(re_data);
});
},
};
+96
View File
@@ -0,0 +1,96 @@
export const myfuncs = {
themeStorageKey: "tablerTheme",
defaultTheme: "light",
test() {
console.log("myfuncs test ok");
},
//临时保存的数据,浏览器专属
saveT(key, data) {
sessionStorage.setItem(key, data);
},
loadT(key) {
return sessionStorage.getItem(key);
},
deleT(key) {
sessionStorage.removeItem(key);
},
saveJsonT(key, data) {
this.saveT(key, JSON.stringify(data));
},
loadJsonT(key) {
const js_data = this.loadT(key);
if (js_data) {
return JSON.parse(js_data);
} else {
return null;
}
},
save(key, data) {
localStorage.setItem(key, data);
},
load(key) {
return localStorage.getItem(key);
},
dele(key) {
localStorage.removeItem(key);
},
saveJson(key, data) {
this.save(key, JSON.stringify(data));
},
loadJson(key) {
const js_data = this.load(key);
if (js_data) {
return JSON.parse(js_data);
} else {
return null;
}
},
getThemefromStorge() {
const storedTheme = this.load(this.themeStorageKey);
return storedTheme ? storedTheme : this.defaultTheme;
},
setTheme(selectedTheme, save) {
if (save) {
this.save(this.themeStorageKey, selectedTheme); // 保存到本地存储
}
if (selectedTheme === "dark") {
document.body.setAttribute("data-bs-theme", selectedTheme); // 暗色模式
} else {
document.body.removeAttribute("data-bs-theme"); // 亮色模式(移除属性)
}
},
isValidEmail(email) {
// 定义邮箱的正则表达式
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
// 使用正则表达式测试邮箱
return emailRegex.test(email);
},
// 国际化日期格式化函数
formatLocalizedDate(dateString, locale = "zh-CN", options = {}) {
const date = new Date(dateString);
// 默认配置 - 中文格式
const defaultOptions = {
year: "numeric",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
hour12: false,
};
const mergedOptions = { ...defaultOptions, ...options };
const formatter = new Intl.DateTimeFormat(locale, mergedOptions);
return formatter.format(date);
},
};
+105
View File
@@ -0,0 +1,105 @@
import {
createRouter,
createWebHistory,
createWebHashHistory,
} from "vue-router";
import HomeView from "../views/HomeView.vue";
const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/",
name: "home",
component: HomeView,
},
{
path: "/settings/account",
name: "settings account",
component: () => import("@/views/settings/account.vue"),
},
{
path: "/settings/contact",
name: "settings contact",
component: () => import("@/views/settings/contact.vue"),
},
{
path: "/settings/security",
name: "settings security",
component: () => import("@/views/settings/security.vue"),
},
{
path: "/about",
name: "about",
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import("@/views/AboutView.vue"),
},
{
path: "/test",
name: "test",
component: () => import("@/views/test.vue"),
},
{
path: "/login",
name: "login",
component: () => import("@/views/loginView.vue"),
},
{
path: "/forgot_password",
name: "forgot password",
component: () => import("@/views/forgotPassword.vue"),
},
{
path: "/register",
name: "Register",
component: () => import("@/views/registerView.vue"),
},
{
path: "/admin",
name: "admin",
component: () => import("@/views/adminView.vue"),
},
{
path: "/schedule",
name: "schedule",
component: () => import("@/views/scheduleView.vue"),
},
{
path: "/purchase",
name: "purchase",
component: () => import("@/views/purchase/purchase.vue"),
},
{
path: "/purchase/addorder",
name: "purchase/addorder",
component: () => import("@/views/purchase/addorder.vue"),
},
{
path: "/purchase/showorder/:id",
name: "purchase/showorder",
component: () => import("@/views/purchase/showorder.vue"),
},
{
path: "/warehouse",
name: "warehouse",
component: () => import("@/views/warehouse.vue"),
},
{
path: "/404",
name: "404",
component: () => import("@/views/404.vue"),
},
// 404 页面 - 放在最后
{
path: "/:pathMatch(.*)*", // 通配符,匹配所有路由
name: "NotFound",
component: () => import("@/views/404.vue"),
},
],
});
export default router;
+129
View File
@@ -0,0 +1,129 @@
// stores/user.js
import { defineStore } from "pinia";
import { ref, computed } from "vue";
import { myfuncs } from "@/myfunc.js";
import { my_network_func } from "@/my_network_func";
// 组合式 API 写法 (推荐)
export const useUserStore = defineStore("user", () => {
// 状态 (State)
const userInfo = ref(null);
const user = ref(null);
const userCookie = ref(null);
const isLoggedIn = ref(false);
const cookiesQualified = () => {
//返回一个合格的cookie 就是没过期的cookie
//如果cookie没过期直接返回,如果过期 顺便logout
var cookieTimeout = userCookie.value.ExpiresAt;
if (new Date(cookieTimeout) < new Date()) {
//过期了
logout();
}
return userCookie.value;
};
const getUserBirthday = () => {
if (userInfo.value != null) {
const date = new Date(userInfo.value.Birthdate);
// 获取年月日并格式化
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const formattedDate = `${year}-${month}-${day}`;
return formattedDate;
}
return "";
};
const getUserAvatarPath = () => {
if (userInfo.value != null) {
if (userInfo.value.AvatarPath != "") {
return "/api/static/avatar/"+userInfo.value.AvatarPath;
}
}
return "/ava.svg";
};
const getUserInfoFromCookie = () => {
my_network_func.postJson("/users/getinfo", {}, (r) => {
//console.log(r);
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case 0:
user.value = r.data.return.user;
if (r.data.return.userInfo) {
userInfo.value = r.data.return.userInfo;
} else {
userInfo.value = null;
}
break;
default:
break;
}
break;
default:
break;
}
});
};
const logout = () => {
userCookie.value = null;
isLoggedIn.value = false;
myfuncs.dele("userCookie");
myfuncs.deleT("userCookie");
};
const login = (cookie) => {
userCookie.value = cookie;
isLoggedIn.value = true;
//这里应该判读cookie的实效性
userCookie.value = cookiesQualified();
//到这里cookie应该是有效的,尝试获取用户info,因为有的info可能是隐藏的 所以用post携带当前cookie去请求用户info
getUserInfoFromCookie();
};
const cookieUpdata = (cookie) => {
userCookie.value = cookie;
myfuncs.saveJsonT("userCookie", cookie);
if (cookie.Remember) {
//长期保存cookie
myfuncs.saveJson("userCookie", cookie);
}
};
const loginFromStoreCookie = () => {
//从store获取cookie
var cookie = myfuncs.loadJsonT("userCookie");
if (cookie) {
login(cookie);
} else {
cookie = myfuncs.loadJson("userCookie");
if (cookie) {
login(cookie);
} else {
logout();
}
}
};
return {
user,
userInfo,
userCookie,
isLoggedIn,
getUserAvatarPath,
getUserBirthday,
getUserInfoFromCookie,
logout,
login,
loginFromStoreCookie,
cookieUpdata,
};
});
+82
View File
@@ -0,0 +1,82 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import { useI18n } from "vue-i18n";
import { useRouter } from "vue-router";
const { t, locale } = useI18n();
const router = useRouter();
function goback() {
router.back();
}
function functionupdataTitle() {
document.title = "Operations." + t("errorpage.404_title");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
onMounted(() => {
//console.log("account mounted");
//username.value.value="Kevin";
functionupdataTitle();
});
</script>
<template>
<div>
<div class="page page-center">
<div class="container-tight py-4">
<div class="empty">
<div class="empty-header">404</div>
<p class="empty-title">{{ t("errorpage.404_msg_title") }}</p>
<p class="empty-subtitle text-secondary">
{{ t("errorpage.404_msg") }}
</p>
<div class="empty-action">
<button class="btn btn-outline-secondary m-3" @click="goback">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-left"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M5 12l14 0" />
<path d="M5 12l6 6" />
<path d="M5 12l6 -6" />
</svg>
{{ t("errorpage.404_previous_page") }}
</button>
<router-link to="/" class="btn btn-primary">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-home"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M5 12l-2 0l9 -9l9 9l-2 0" />
<path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" />
<path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" />
</svg>
{{ t("errorpage.404_back_home") }}
</router-link>
</div>
</div>
</div>
</div>
</div>
</template>
@@ -0,0 +1,15 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
<style>
@media (min-width: 1024px) {
.about {
min-height: 100vh;
display: flex;
align-items: center;
}
}
</style>
@@ -0,0 +1,19 @@
<script setup>
import { ref } from "vue";
import { my_network_func } from "@/my_network_func";
import { useUserStore } from "@/stores/user";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import imageCropper from "@/components/imageCropper.vue";
const user = useUserStore();
const mos = ref();
</script>
<template>
<MyOffcanvas ref="mos" />
</template>
@@ -0,0 +1,3 @@
<template>
</template>
@@ -0,0 +1,97 @@
<script setup>
import { onMounted, watch, ref } from 'vue'
import MyOffcanvas from '@/components/MyOffcanvas.vue'
import { myfuncs } from '@/myfunc.js'
import { useI18n } from 'vue-i18n'
// 使用 vue-i18n 的 Composition API
const { t, locale } = useI18n()
const email = ref()
const mos = ref()
function resetPassword() {
// 在这里处理重置密码逻辑
const emailValue = email.value?.value
if (emailValue === undefined || emailValue.trim() === '') {
mos.value?.showAlert('info', t('message.please_enter_your_username'), 5000)
return
}
// if (!myfuncs.isValidEmail(emailValue)) {
// mos.value?.showAlert('warning', t('message.this_not_email'), 5000)
// return
// }
mos.value?.showAlert('warning', "功能未开发", 5000)
console.log('sending password reset to:', emailValue)
}
function functionupdataTitle() {
document.title = 'Operations.' + t('appname.forgot_password')
}
onMounted(() => {
functionupdataTitle()
})
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle()
})
</script>
<template>
<div class="container container-tight py-4">
<div class="text-center mb-4">
<a href="." class="navbar-brand navbar-brand-autodark">
<img
src="/static/logo.svg"
width="110"
height="32"
alt="Tabler"
class="navbar-brand-image"
/>
</a>
</div>
<div class="card card-md">
<div class="card-body">
<h2 class="card-title text-center mb-4">{{ t('message.forgot_password') }}</h2>
<p class="text-secondary mb-4">
{{ t('message.enter_your_username_to_reset_password') }}
</p>
<div class="mb-3">
<label class="form-label">{{ t('message.user_name') }}</label>
<input
ref="email"
type="text"
class="form-control"
:placeholder="t('message.your_user_name')"
/>
</div>
<div class="form-footer">
<button @click="resetPassword" class="btn btn-primary w-100">
<!-- Download SVG icon from http://tabler-icons.io/i/mail -->
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path
d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z"
/>
<path d="M3 7l9 6l9 -6" />
</svg>
{{ t('button.send_me_new_password') }}
</button>
</div>
</div>
</div>
<div class="text-center text-secondary mt-3">
<router-link to="/login">{{ t('message.back_to_login') }}</router-link>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
+267
View File
@@ -0,0 +1,267 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import { useRouter } from "vue-router";
import { useUserStore } from "@/stores/user";
import { my_network_func } from "@/my_network_func";
import { myfuncs } from "@/myfunc.js";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import { useI18n } from "vue-i18n";
// 使用 vue-i18n 的 Composition API
const { t, locale } = useI18n();
const router = useRouter();
const userStore = useUserStore();
const mos = ref();
const username = ref();
const password = ref();
const isRemember = ref();
const isShowPassword = ref(false);
function togglePasswordVisibility() {
isShowPassword.value = !isShowPassword.value;
}
function login() {
// 在这里处理登录逻辑
const user = username.value?.value;
const pass = password.value?.value;
const remember = isRemember.value?.checked;
username.value?.classList.remove("is-invalid");
password.value?.classList.remove("is-invalid");
if (!user || !pass) {
if (!user) {
username.value?.classList.add("is-invalid");
}
if (!pass) {
password.value?.classList.add("is-invalid");
}
mos.value?.showAlert(
"info",
t("message.please_enter_username_and_password"),
5000
);
return;
}
//console.log("登录信息:", { user, pass, remember });
my_network_func.postJson(
"/users/login",
{
username: user,
userpass: pass,
remember: remember,
},
(r) => {
//console.log(r)
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case -41:
username.value?.classList.add("is-invalid");
mos.value?.showAlert(
"warning",
t("message.user_not_found"),
5000
);
break;
case -42:
username.value?.classList.add("is-invalid");
password.value?.classList.add("is-invalid");
mos.value?.showAlert(
"warning",
t("message.username_or_password_incorrect"),
5000
);
break;
case 0:
//登录成功,载入cookie
//临时保存cookie
userStore.cookieUpdata(r.data.return.cookie)
//更新用户信息
userStore.login(r.data.return.cookie)
mos.value?.showAlert(
"success",
t("message.login_successful"),
1000,
() => {
router.back()
}
);
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
}
);
}
onMounted(() => {
functionupdataTitle();
if (userStore.isLoggedIn) {
router.push("/");
}
});
function functionupdataTitle() {
document.title = "Operations." + t("appname.login");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
</script>
<template>
<div class="page page-center">
<div class="container container-normal py-6">
<div class="row align-items-center g-4">
<div class="col-lg">
<div class="container-tight">
<div class="card card-md">
<div class="card-body">
<h2 class="h2 text-center mb-4">
{{ t("message.login_to_your_account") }}
</h2>
<div class="mb-3">
<label class="form-label">{{ t("message.user_name") }}</label>
<input
ref="username"
type="text"
maxlength="64"
class="form-control"
:placeholder="t('message.your_user_name')"
autocomplete="off"
/>
</div>
<div class="mb-2">
<label class="form-label">
{{ t("message.password") }}
<span class="form-label-description">
<router-link to="/forgot_password">{{
t("message.i_forgot_password")
}}</router-link>
</span>
</label>
<div class="input-group input-group-flat">
<input
ref="password"
:type="isShowPassword ? 'text' : 'password'"
class="form-control"
:placeholder="t('message.your_password')"
autocomplete="off"
/>
<span class="input-group-text">
<div
class="link-secondary"
:title="
isShowPassword
? t('message.hidden_Password')
: t('message.show_password')
"
data-bs-toggle="tooltip"
>
<!-- Download SVG icon from http://tabler-icons.io/i/eye -->
<svg
v-if="!isShowPassword"
@click="togglePasswordVisibility"
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"
/>
</svg>
<svg
v-if="isShowPassword"
@click="togglePasswordVisibility"
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10.585 10.587a2 2 0 0 0 2.829 2.828" />
<path
d="M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"
/>
<path d="M3 3l18 18" />
</svg>
</div>
</span>
</div>
</div>
<div class="mb-2">
<label class="form-check">
<input
ref="isRemember"
type="checkbox"
class="form-check-input"
/>
<span class="form-check-label">{{
t("message.remember_me_on_this_device")
}}</span>
</label>
</div>
<div class="form-footer">
<button @click="login" class="btn btn-primary w-100">
{{ t("button.sign_in") }}
</button>
</div>
</div>
</div>
<div class="text-center text-secondary mt-3">
{{ t("message.dont_have_account_yet") }}
<router-link to="/register">{{
t("message.register_now")
}}</router-link>
</div>
</div>
</div>
<div class="col-lg d-none d-lg-block">
<img
src="/static/illustrations/undraw_secure_login_pdn4.svg"
height="300"
class="d-block mx-auto"
alt=""
/>
</div>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
@@ -0,0 +1,481 @@
<script setup>
import { onMounted, watch, ref, reactive } from "vue";
import { useI18n } from "vue-i18n";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import tagadder from "@/components/tagadder.vue";
import dateTimePicker from "@/components/dateTimePicker.vue";
import useDropzone from "@/components/useDropzone.vue";
import { useUserStore } from "@/stores/user";
const userStore = useUserStore();
import { useRouter } from "vue-router";
const router = useRouter();
import "tom-select/dist/css/tom-select.css";
import { my_network_func } from "@/my_network_func";
const textarea_maxlen = 256;
const title_input_dom = ref();
const photos_hash = ref();
const mos = ref();
const { t, locale } = useI18n();
//货币类型
const currency_type = reactive({
1: "RMB",
2: "MOP",
3: "HKD",
4: "USD",
});
//成本类型
const cost_type = reactive({
1: t("cost_type.unit_price"),
2: t("cost_type.freight"),
});
function update_cost_type() {
cost_type["1"] = t("cost_type.unit_price");
cost_type["2"] = t("cost_type.freight");
}
//订单状态
const order_status = reactive({
1: t("order_status.pending_order"),
2: t("order_status.order_placed"),
3: t("order_status.in_transit"),
4: t("order_status.compvared"),
5: t("order_status.refund_requested"),
6: t("order_status.returning"),
7: t("order_status.refunded"),
8: t("order_status.lost_package"),
});
function update_order_status() {
order_status["1"] = t("order_status.pending_order");
order_status["2"] = t("order_status.order_placed");
order_status["3"] = t("order_status.in_transit");
order_status["4"] = t("order_status.compvared");
order_status["5"] = t("order_status.refund_requested");
order_status["6"] = t("order_status.returning");
order_status["7"] = t("order_status.refunded");
order_status["8"] = t("order_status.lost_package");
}
const cost_sheet_tab = reactive([]);
// 表单对象
const cost_sheet = reactive({
type: "1",
int: 1,
cost: 0.0,
cost_t: 0.0,
currency_type: "1",
});
function del_cost(key) {
cost_sheet.type = cost_sheet_tab[key].type;
cost_sheet.int = cost_sheet_tab[key].int;
cost_sheet.cost = cost_sheet_tab[key].cost;
cost_sheet.cost_t = cost_sheet_tab[key].cost_t;
cost_sheet.currency_type = cost_sheet_tab[key].currency_type;
cost_sheet_tab.splice(key, 1);
}
function add_cost() {
if (cost_sheet.cost <= 0) {
} else {
// 四舍五入到2位小数
var t = parseFloat((cost_sheet.int * cost_sheet.cost).toFixed(2));
cost_sheet.cost_t = t;
cost_sheet_tab.push(JSON.parse(JSON.stringify(cost_sheet)));
cost_sheet.type = "1";
cost_sheet.int = 1;
cost_sheet.cost = 0.0;
cost_sheet.cost_t = 0.0;
cost_sheet.currency_type = "1";
}
}
const submit_sheet = reactive({
title: "",
remark: "",
photos: [],
link: "",
partname: "",
styles: "",
costs: [],
updatetime: "",
trackingnumber: "",
orderstatus: "1",
});
function submit_order() {
if (submit_sheet.title == "") {
title_input_dom.value.classList.add("is-invalid");
title_input_dom.value.addEventListener("input", function () {
if (this.value.trim() !== "") {
this.classList.remove("is-invalid");
//this.removeEventListener('input');
}
});
mos.value?.showAlert("danger", t("purchase_addorder.title"), 1000);
return;
}
//载入图片哈希列表
submit_sheet.photos = [];
var photos = photos_hash.value.return_files();
for (var i = 0; i < photos.length; i++) {
submit_sheet.photos.push(photos[i].hash);
}
//载入价格表
submit_sheet.costs = [];
for (var i = 0; i < cost_sheet_tab.length; i++) {
//var t=cost_sheet_tab[i]
submit_sheet.costs.push(JSON.parse(JSON.stringify(cost_sheet_tab[i])));
}
//修改价格表里的小数,将所有价值*100去掉小数
for (var i = 0; i < submit_sheet.costs.length; i++) {
submit_sheet.costs[i].cost *= 100;
submit_sheet.costs[i].cost_t *= 100;
}
console.log(submit_sheet);
my_network_func.postJson("/purchase/addorder", submit_sheet, (r) => {
console.log(r);
});
}
function functionupdataTitle() {
document.title = "Operations." + t("purchase.add_part");
}
onMounted(() => {
functionupdataTitle();
//sele_init();
if (!userStore.isLoggedIn) {
router.push("/login");
}
});
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
update_cost_type();
update_order_status();
});
// 监听 cost 变化,自动限制小数位
watch(
() => cost_sheet.cost,
(newVal) => {
if (newVal !== null && newVal !== undefined) {
// 四舍五入到2位小数
const fixed = parseFloat(newVal).toFixed(2);
if (parseFloat(fixed) !== newVal) {
cost_sheet.cost = parseFloat(fixed);
}
}
},
);
</script>
<template>
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<h2 class="page-title">{{ t("purchase_addorder.add_order") }}</h2>
</div>
</div>
</div>
</div>
<div class="page-body">
<div class="container-xl">
<div class="row row-cards">
<div class="col-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">
{{ t("purchase_addorder.order_info") }}
</h4>
</div>
<div class="card-body">
<div class="mb-3">
<label class="form-label required">{{
t("purchase_addorder.title")
}}</label>
<input
type="text"
class="form-control"
name="example-text-input"
:placeholder="t('purchase_addorder.title')"
v-model="submit_sheet.title"
ref="title_input_dom"
/>
</div>
<div class="mb-3">
<label class="form-label"
>{{ t("purchase_addorder.remarks") }}
<span class="form-label-description"
>{{ submit_sheet.remark.length }}/{{
textarea_maxlen
}}</span
></label
>
<textarea
class="form-control mt-2 mb-2"
name="example-textarea-input"
rows="6"
:placeholder="t('purchase_addorder.remarks_text')"
:maxlength="textarea_maxlen"
v-model="submit_sheet.remark"
></textarea>
</div>
<label class="form-label mb-0">{{
t("purchase_addorder.photo_remarks")
}}</label>
<useDropzone
acceptedFiles="image/*"
uploadURL="/api/files/upload/image"
maxFiles="10"
ref="photos_hash"
></useDropzone>
</div>
<div class="card-header">
<h4 class="card-title">
{{ t("purchase_addorder.purchase_channel") }}
</h4>
</div>
<div class="card-body">
<div class="mb-3">
<label class="form-label">{{
t("purchase_addorder.link")
}}</label>
<textarea
name="url"
type="url"
class="form-control"
placeholder="https"
v-model="submit_sheet.link"
></textarea>
<div class="mb-3 mt-3">
<label class="form-label">{{
t("purchase_addorder.part_name")
}}</label>
<input
type="text"
class="form-control"
name="example-text-input"
:placeholder="t('purchase_addorder.part_name')"
v-model="submit_sheet.partname"
/>
</div>
<div class="mt-3">
<label class="form-label">{{
t("purchase_addorder.style_remarks")
}}</label>
<tagadder
:placeholder="t('purchase_addorder.add_style')"
v-model="submit_sheet.styles"
></tagadder>
</div>
<div class="mt-3">
<label class="form-label">{{
t("purchase_addorder.cost")
}}</label>
<table
v-show="cost_sheet_tab.length"
class="table table-vcenter card-table table-striped"
>
<thead>
<tr>
<th>{{ t("purchase_addorder.type") }}</th>
<th>{{ t("purchase_addorder.quantity") }}</th>
<th>{{ t("purchase_addorder.fee") }}</th>
<th>{{ t("purchase_addorder.total_price") }}</th>
<th>{{ t("purchase_addorder.currency") }}</th>
<th class="w-1">
{{ t("purchase_addorder.operation") }}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(value, key) in cost_sheet_tab">
<td>{{ cost_type[value.type] }}</td>
<td class="text-secondary">{{ value.int }}</td>
<td class="text-secondary">{{ value.cost }}</td>
<td class="text-secondary">
{{ value.cost_t }}
</td>
<td class="text-secondary">
{{ currency_type[value.currency_type] }}
</td>
<td>
<button
class="btn btn-outline-danger"
@click="del_cost(key)"
>
{{ t("purchase_addorder.change") }}
</button>
</td>
</tr>
<!-- <tr>
<td>运输</td>
<td class="text-secondary">1</td>
<td class="text-secondary">5</td>
<td class="text-secondary">MOP</td>
<td>
<button class="btn btn-outline-danger">Del</button>
</td>
</tr> -->
</tbody>
</table>
<div class="row g-5">
<div class="col-xl-2">
{{ t("purchase_addorder.fee_type") }}
<select
ref="select_type"
class="form-control"
autocompvare="off"
value="1"
v-model="cost_sheet.type"
>
<option v-for="(value, key) in cost_type" :value="key">
{{ value }}
</option>
</select>
</div>
<div class="col-xl-3">
{{ t("purchase_addorder.input_quantity") }}
<input
type="number"
class="form-control"
min="1"
value="1"
v-model="cost_sheet.int"
/>
</div>
<div class="col-xl-3">
{{ t("purchase_addorder.input_fee") }}
<input
type="number"
class="form-control"
step="0.01"
min="0.0"
value="0.0"
v-model="cost_sheet.cost"
/>
</div>
<div class="col-xl-2">
{{ t("purchase_addorder.select_currency") }}
<select
ref="select_beast"
class="form-control"
autocompvare="off"
value="1"
v-model="cost_sheet.currency_type"
>
<option
v-for="(value, key) in currency_type"
:value="key"
>
{{ value }}
</option>
</select>
</div>
<div class="col-xl-2">
{{ t("purchase_addorder.operation") }}
<button
class="form-control btn btn-outline-primary"
@click="add_cost"
>
{{ t("purchase_addorder.add") }}
</button>
</div>
</div>
</div>
</div>
</div>
<div class="card-header">
<h4 class="card-title">
{{ t("purchase_addorder.other_status") }}
</h4>
</div>
<div class="card-body">
<div class="mb-3">
<div class="row g-5">
<div class="col-xl-4">
<label class="form-label required">{{
t("purchase_addorder.update_time")
}}</label>
<dateTimePicker
v-model="submit_sheet.updatetime"
></dateTimePicker>
</div>
<div class="col-xl-4">
<label class="form-label">{{
t("purchase_addorder.tracking_number")
}}</label>
<input
type="text"
class="form-control"
:placeholder="
t('purchase_addorder.input_tracking_number')
"
v-model="submit_sheet.trackingnumber"
/>
</div>
<div class="col-xl-4">
{{ t("purchase_addorder.order_status") }}
<select
ref="select_beast"
class="form-control"
autocompvare="off"
v-model="submit_sheet.orderstatus"
>
<option v-for="(value, key) in order_status" :value="key">
{{ value }}
</option>
</select>
</div>
</div>
</div>
</div>
<div class="card-footer text-end">
<div class="d-flex">
<button
type="submit"
class="btn btn-primary ms-auto"
@click="submit_order"
>
{{ t("purchase_addorder.submit") }}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
<style></style>
@@ -0,0 +1,422 @@
<script setup>
import { onMounted, watch, ref, reactive } from "vue";
import { useI18n } from "vue-i18n";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
const mos = ref();
import { my_network_func } from "@/my_network_func";
import { myfuncs } from "@/myfunc";
import { useRouter } from "vue-router";
const router = useRouter();
const { t, locale } = useI18n();
const all_items = ref(0);
const all_pages = ref(0);
const page_items = ref(10);
const now_page = ref(1);
const all_orders = ref({});
const page_start = ref(0);
const page_end = ref(0);
const page_input = ref();
const page_items_items = ref("10");
function jump_to_order(order_id) {
//console.log(order_id);
var order_str=order_id.toString()
const resolved = router.resolve({
path: "/purchase/showorder/" + order_str,
});
window.open(resolved.href, "_blank");
}
//获取订单列表
function get_orders() {
my_network_func.postJson(
"/purchase/getorders",
{
search: "",
entries: page_items.value,
page: now_page.value,
},
(r) => {
//console.log(r);
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case 0:
all_orders.value = r.data.return.all_orders;
all_items.value = r.data.return.all_count;
all_pages.value = Math.ceil(all_items.value / page_items.value);
if (now_page.value < 3) {
page_start.value = 1;
} else {
if (now_page.value > all_pages.value - 3) {
page_start.value = all_pages.value - 4;
if (page_start.value <= 0) {
page_start.value = 1;
}
} else {
page_start.value = now_page.value - 2;
}
}
if (now_page.value > all_pages.value - 3) {
page_end.value = all_pages.value;
} else {
if (now_page.value < 3) {
page_end.value = 5;
} else {
page_end.value = now_page.value + 2;
}
}
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
},
);
}
function change_page(page) {
now_page.value = page;
get_orders();
}
function functionupdataTitle() {
document.title = "Operations." + t("appname.purchase");
}
function range(start, end) {
return Array.from({ length: end - start + 1 }, (_, i) => start + i);
}
function page_input_change(c) {
//console.log(page_input.value);
var t = parseInt(page_input.value);
if (t > 0) {
if (t <= all_pages.value) {
page_input.value = "";
change_page(t);
}
}
}
function page_input_input(c) {
page_input.value = page_input.value.replace(/[^\d]/g, "");
//console.log(c)
}
function page_items_input_change(c) {
var t = parseInt(page_items_items.value);
page_items.value = t;
now_page.value = 1;
get_orders();
//console.log(t)
}
function page_items_input_input(c) {
page_items_items.value = page_items_items.value.replace(/[^\d]/g, "");
var t = parseInt(page_items_items.value);
if (t > 300) {
page_items_items.value = "300";
}
//console.log(c)
}
onMounted(() => {
functionupdataTitle();
get_orders();
});
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
</script>
<template>
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="card-header">
<h3 class="card-title">{{ t("purchase.purchase_list") }}</h3>
</div>
<div class="card-body border-bottom py-3">
<div class="d-flex">
<div class="text-secondary">
<router-link to="/purchase/addorder" class="btn btn-info m-1">
{{ t("purchase.add_part") }}
</router-link>
<button class="btn m-1">
{{ t("purchase.exp_report") }}
</button>
</div>
<!-- //搜索dom -->
<div class="ms-auto text-secondary">
{{ t("purchase.search") }}
<div class="ms-2 d-inline-block mr-2">
<input
type="text"
class="form-control form-control-sm"
aria-label="Search invoice"
/>
</div>
</div>
<div class="ms-auto text-secondary"></div>
</div>
</div>
<div class="table-responsive">
<table class="table card-table table-vcenter text-nowrap datatable">
<thead>
<tr>
<th class="w-1">
<input
class="form-check-input m-0 align-middle"
type="checkbox"
aria-label="Select all invoices"
/>
</th>
<th class="col-1">
No.
<!-- Download SVG icon from http://tabler-icons.io/i/chevron-up -->
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon icon-sm icon-thick"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M6 15l6 -6l6 6" />
</svg>
</th>
<th class="col-3">{{ t("purchase.item_name") }}</th>
<th class="col-3">{{ t("purchase.purpose") }}</th>
<th class="w-1">{{ t("purchase.quantity") }}</th>
<th class="w-1">{{ t("purchase.created_at") }}</th>
<th class="w-1">{{ t("purchase.updated_at") }}</th>
<th class="w-1">{{ t("purchase.status") }}</th>
</tr>
</thead>
<tbody>
<tr
v-for="value in all_orders"
class="element"
@click="jump_to_order(value.ID)"
>
<td>
<input
class="form-check-input m-0 align-middle"
type="checkbox"
aria-label="Select invoice"
/>
</td>
<td>
<span class="text-muted">{{ value.ID }}</span>
</td>
<td>
{{ value.Title }}
</td>
<td>{{ value.Remark }}</td>
<td>1</td>
<td>
{{ myfuncs.formatLocalizedDate(value.CreatedAt, locale) }}
</td>
<td>{{ myfuncs.formatLocalizedDate(value.UpdatedAt) }}</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
<div class="card-footer d-flex align-items-center">
<p class="m-0 text-secondary">
{{ t("purchase.show") }}
</p>
<div class="mx-2 d-inline-block">
<input
type="text"
class="form-control form-control-sm w-6"
v-model="page_items_items"
aria-label="Invoices count"
@change="page_items_input_change"
@input="page_items_input_input"
/>
</div>
<p class="m-0 text-secondary">
{{ t("purchase.entries") }}
{{ t("purchase.There_are_a_total_of") }} {{ all_items }}
{{ t("purchase.entries") }}
</p>
<ul class="pagination m-0 ms-auto">
<li class="page-item" :class="now_page == 1 ? 'disabled' : ''">
<div
class="page-link"
:tabindex="now_page == 1 ? '-1' : ''"
:aria-disabled="now_page == 1 ? 'true' : ''"
@click="change_page(1)"
>
<!-- Download SVG icon from http://tabler-icons.io/i/chevron-left -->
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-left"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12l10 0" />
<path d="M10 12l4 4" />
<path d="M10 12l4 -4" />
<path d="M4 4l0 16" />
</svg>
</div>
</li>
<li class="page-item" :class="now_page == 1 ? 'disabled' : ''">
<div
class="page-link"
:tabindex="now_page == 1 ? '-1' : ''"
:aria-disabled="now_page == 1 ? 'true' : ''"
@click="change_page(now_page - 1)"
>
<!-- Download SVG icon from http://tabler-icons.io/i/chevron-left -->
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M15 6l-6 6l6 6" />
</svg>
<!-- prev -->
</div>
</li>
<li
v-for="value in range(page_start, page_end)"
class="page-item"
:class="value == now_page ? 'active' : ''"
>
<div class="page-link" @click="change_page(value)">
{{ value }}
</div>
</li>
<li
class="page-item"
:class="now_page == all_pages ? 'disabled' : ''"
>
<div
class="page-link"
:tabindex="now_page == all_pages ? '-1' : ''"
:aria-disabled="now_page == all_pages ? 'true' : ''"
@click="change_page(now_page + 1)"
>
<!-- next -->
<!-- Download SVG icon from http://tabler-icons.io/i/chevron-right -->
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M9 6l6 6l-6 6" />
</svg>
</div>
</li>
<li
class="page-item"
:class="now_page == all_pages ? 'disabled' : ''"
>
<div
class="page-link"
:tabindex="now_page == all_pages ? '-1' : ''"
:aria-disabled="now_page == all_pages ? 'true' : ''"
@click="change_page(all_pages)"
>
<!-- Download SVG icon from http://tabler-icons.io/i/chevron-right -->
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-right"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M14 12l-10 0" />
<path d="M14 12l-4 4" />
<path d="M14 12l-4 -4" />
<path d="M20 4l0 16" />
</svg>
</div>
</li>
<li>
<input
type="text"
class="form-control form-control-sm w-6"
@change="page_input_change"
@input="page_input_input"
v-model="page_input"
/>
</li>
</ul>
</div>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
<style lang="scss" scoped>
.element:hover {
background-color: #4299e11c;
}
</style>
@@ -0,0 +1,14 @@
<script setup>
import { onMounted, watch, ref, reactive } from "vue";
import { useRouter } from "vue-router";
const router = useRouter();
const dynamicParam = router
onMounted(() => {
console.log(dynamicParam);
});
</script>
<template>
</template>
@@ -0,0 +1,243 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import { useRouter } from "vue-router";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import { myfuncs } from "@/myfunc.js";
import { my_network_func } from "@/my_network_func";
import { useI18n } from "vue-i18n";
// 使用 vue-i18n 的 Composition API
const { t, locale } = useI18n();
const mos = ref();
const isShowPassword = ref(false);
const username = ref();
const useremail = ref();
const userpassword = ref();
const router = useRouter();
function functionupdataTitle() {
document.title = "Operations." + t("appname.register");
}
function togglePasswordVisibility() {
isShowPassword.value = !isShowPassword.value;
}
function createAccount() {
// 在这里处理创建新账户的逻辑
const user = username.value?.value;
const email = useremail.value?.value;
const pass = userpassword.value?.value;
username.value?.classList.remove("is-invalid");
useremail.value?.classList.remove("is-invalid");
userpassword.value?.classList.remove("is-invalid");
let isDataErr = false;
if (!user) {
isDataErr = true;
username.value?.classList.add("is-invalid");
}
if (!email) {
isDataErr = true;
useremail.value?.classList.add("is-invalid");
}
if (!pass) {
isDataErr = true;
userpassword.value?.classList.add("is-invalid");
}
if (isDataErr) {
mos.value?.showAlert(
"info",
t("message.please_enter_username_and_password"),
5000
);
return;
}
//判断长度
if (!myfuncs.isValidEmail(email)) {
useremail.value?.classList.add("is-invalid");
mos.value?.showAlert("warning", t("message.this_not_email"), 5000);
return;
}
// console.log("创建新账户信息:", {
// user: username.value?.value,
// email: useremail.value?.value,
// pass: userpassword.value?.value,
// });
my_network_func.postJson(
"/users/register",
{
username: username.value?.value,
useremail: useremail.value?.value,
userpass: userpassword.value?.value,
},
(r) => {
//console.log(r);
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case -4:
username.value?.classList.add("is-invalid");
mos.value?.showAlert("warning", t("message.username_dup"), 5000);
break;
case 0:
mos.value?.showAlert(
"success",
t("message.registration_successful"),
1000,
() => {
router.push("/login");
}
);
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
}
);
}
onMounted(() => {
functionupdataTitle();
});
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
</script>
<template>
<div class="page page-center">
<div class="container container-tight py-4">
<div class="text-center mb-4">
<router-link to="/" class="navbar-brand navbar-brand-autodark">
<img
src="/static/logo.svg"
width="110"
height="32"
alt="Tabler"
class="navbar-brand-image"
/>
</router-link>
</div>
<div class="card card-md">
<div class="card-body">
<h2 class="card-title text-center mb-4">
{{ t("message.create_new_account") }}
</h2>
<div class="mb-3">
<label class="form-label">{{ t("message.user_name") }}</label>
<input
ref="username"
type="text"
maxlength="64"
class="form-control"
:placeholder="t('message.your_user_name')"
/>
</div>
<div class="mb-3">
<label class="form-label">{{ t("message.email_address") }}</label>
<input
ref="useremail"
type="email"
maxlength="250"
class="form-control"
:placeholder="t('message.your_email_address')"
/>
</div>
<div class="mb-3">
<label class="form-label">{{ t("message.password") }}</label>
<div class="input-group input-group-flat">
<input
ref="userpassword"
:type="isShowPassword ? 'text' : 'password'"
class="form-control"
:placeholder="t('message.your_password')"
autocomplete="off"
/>
<span class="input-group-text">
<div
class="link-secondary"
:title="
isShowPassword
? t('message.hidden_Password')
: t('message.show_password')
"
data-bs-toggle="tooltip"
>
<!-- Download SVG icon from http://tabler-icons.io/i/eye -->
<svg
v-if="!isShowPassword"
@click="togglePasswordVisibility"
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"
/>
</svg>
<svg
v-if="isShowPassword"
@click="togglePasswordVisibility"
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10.585 10.587a2 2 0 0 0 2.829 2.828" />
<path
d="M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"
/>
<path d="M3 3l18 18" />
</svg>
</div>
</span>
</div>
</div>
<!-- <div class="mb-3">
<label class="form-check">
<input type="checkbox" class="form-check-input"/>
<span class="form-check-label">Agree the <a href="./terms-of-service.html" tabindex="-1">terms and policy</a>.</span>
</label>
</div> -->
<div class="form-footer">
<button @click="createAccount" class="btn btn-primary w-100">
{{ t("message.create_new_account") }}
</button>
</div>
</div>
</div>
<div class="text-center text-secondary mt-3">
{{ t("message.already_have_an_account") }}
<router-link to="/login">{{ t("message.back_to_login") }}</router-link>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
@@ -0,0 +1,134 @@
<script setup>
import FullCalendar from "@fullcalendar/vue3";
import dayGridPlugin from "@fullcalendar/daygrid";
import timeGridPlugin from "@fullcalendar/timegrid";
import interactionPlugin from "@fullcalendar/interaction"; //拖动插件 需要用npm安装
import listPlugin from "@fullcalendar/list";
import { onMounted, watch, ref } from "vue";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
const calendar = ref(null);
const calendarOptions = ref({
height: "auto",
locale: locale.value,
plugins: [
dayGridPlugin,
timeGridPlugin,
interactionPlugin, //导入拖动插件
listPlugin,
],
fixedWeekCount: false, //是否固定显示6行
weekNumbers: true,
initialView: "dayGridMonth", //默认月视图 dayGridMonth timeGridWeek listWeek
editable: true,
selectable: true,
firstDay: 1,
dayCellDidMount(info) {
switch (info.dow) {
case 0:
info.el.style.backgroundColor = "#ffb5b5";
break;
case 6:
info.el.style.backgroundColor = "#ffb5b5";
break;
}
if (info.isToday) {
//info.el.style.backgroundColor = '#ffff7f';
}
info.el.style.border = "1px solid #4b4b4b"; // 浅蓝色边框
},
headerToolbar: {
left: "prevYearCustom,prevMonthCustom,todayCustom,nextMonthCustom,nextYearCustom",
center: "title",
right: "", //,timeGridWeek,timeGridDay'
},
// 自定义按钮
customButtons: {
prevYearCustom: {
text: t('schedule.previous_year'),
click: function () {
calendar.value.getApi().prevYear();
},
},
nextYearCustom: {
text: t('schedule.next_year'),
click: function () {
calendar.value.getApi().nextYear();
},
},
prevMonthCustom: {
text: t('schedule.previous_month'),
click: function () {
calendar.value.getApi().prev();
},
},
nextMonthCustom: {
text: t('schedule.next_month'),
click: function () {
calendar.value.getApi().next();
},
},
todayCustom: {
text: t('schedule.month'),
click: function () {
calendar.value.getApi().today();
},
},
},
events: [
{ title: "事件 1", start: "2025-11-10" },
{ title: "事件 2", start: "2025-11-15", end: "2024-06-17" },
{
title: "事件 3",
start: "2025-11-20T10:30:00",
end: "2024-06-20T12:30:00",
},
],
});
function functionupdataTitle() {
document.title = "Operations." + t("appname.schedule");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
calendarOptions.value.locale = locale.value;
// 更新自定义按钮文本
calendarOptions.value.customButtons.prevYearCustom.text = t('schedule.previous_year');
calendarOptions.value.customButtons.nextYearCustom.text = t('schedule.next_year');
calendarOptions.value.customButtons.prevMonthCustom.text = t('schedule.previous_month');
calendarOptions.value.customButtons.nextMonthCustom.text = t('schedule.next_month');
calendarOptions.value.customButtons.todayCustom.text = t('schedule.month');
});
onMounted(() => {
functionupdataTitle();
});
</script>
<template>
<FullCalendar ref="calendar" :options="calendarOptions" />
</template>
<style scoped>
/* .fc-prevYearCustom-button {
background-color: #4CAF50 !important;
color: white !important;
border: none !important;
border-radius: 5px !important;
padding: 8px 16px !important;
font-weight: bold !important;
} */
</style>
@@ -0,0 +1,251 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import settingNavigation from "@/components/settingNavigation.vue";
import { useI18n } from "vue-i18n";
import datePicker from "@/components/datePicker.vue";
import imageCropper from "@/components/imageCropper.vue";
import { useUserStore } from "@/stores/user";
import { my_network_func } from "@/my_network_func";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import { useRouter } from "vue-router";
const mos = ref();
const { t, locale } = useI18n();
const router = useRouter();
const birthday = ref();
const username = ref();
const userremark = ref();
const userStore = useUserStore();
const is_avatar_change = ref(false);
const avatar_temp_url = ref("");
const avatar_canvas=ref();
// 将 Base64 转换为 File 对象
function base64ToFile(base64Data, filename) {
const arr = base64Data.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1] || base64Data);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, { type: mime });
}
function updataInfo() {
let isDataErr = false;
let birthdayValue = birthday.value.datepicker.value;
let usernameValue = username.value.value;
let userremarkValue = userremark.value.value;
username.value?.classList.remove("is-invalid");
userremark.value?.classList.remove("is-invalid");
birthday.value?.datepicker.classList.remove("is-invalid");
if (!usernameValue) {
isDataErr = true;
username.value?.classList.add("is-invalid");
}
if (!userremarkValue) {
isDataErr = true;
userremark.value?.classList.add("is-invalid");
}
if (!birthdayValue) {
isDataErr = true;
birthday.value?.datepicker.classList.add("is-invalid");
}
if (isDataErr) {
//console.log("用户信息有误,无法保存");
return;
}
//检查头像是否需要更新
if(is_avatar_change.value)
{
my_network_func.postflise("/users/updateAvatar",base64ToFile(avatar_temp_url.value,"avatar.png"),(r)=>{
is_avatar_change.value=false
//console.log(r)
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case 0:
//mos.value?.showAlert("success", t("message.save_ok"), 1000);
is_avatar_change.value=false
// 更新用户信息到store
//userStore.getUserInfoFromCookie();
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
})
}
my_network_func.postJson(
"/users/updateInfo",
{
username: usernameValue,
remark: userremarkValue,
birthday: birthdayValue,
},
(r) => {
//console.log(r);
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case 0:
mos.value?.showAlert("success", t("message.save_ok"), 1000);
// 更新用户信息到store
userStore.getUserInfoFromCookie();
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
}
);
}
function rev_avatar_canvas(canvas) {
is_avatar_change.value = true;
avatar_temp_url.value = canvas.toDataURL("image/png");
avatar_canvas.value=canvas
//console.log(url)
}
function cancel_change_avatar(){
is_avatar_change.value=false
}
function functionupdataTitle() {
document.title = "Operations." + t("settings.basic_information");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
onMounted(() => {
//console.log("account mounted");
//username.value.value="Kevin";
functionupdataTitle();
if (!userStore.isLoggedIn) {
router.push("/login");
}
});
</script>
<template>
<div class="page-wrapper">
<div class="page-header d-print-none">
<div class="container-xl">
<h2 class="page-title">{{ t("settings.my_account") }}</h2>
</div>
</div>
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<settingNavigation />
<div class="col-12 col-md-9 d-flex flex-column">
<div class="card-body">
<!-- <h2 class="mb-4">{{ t("settings.my_account") }}</h2> -->
<!-- <h3 class="card-title">
{{ t("settings.profile_information") }}
</h3> -->
<div class="row align-items-center">
<div class="col-auto">
<img
:src="
is_avatar_change
? avatar_temp_url
: userStore.getUserAvatarPath()
"
alt=""
class="avatar avatar-xl"
/>
</div>
<!-- <imageCropper /> -->
<div class="col-auto " >
<imageCropper @crop_to_canvas="rev_avatar_canvas"></imageCropper>
<button v-show="is_avatar_change" class="btn btn-outline-secondary " @click="cancel_change_avatar">
{{ t("settings.cancel") }}
</button>
</div>
</div>
<h3 class="card-title mt-4">-</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label">{{ t("settings.name") }}</div>
<input
ref="username"
type="text"
class="form-control"
:value="
userStore.userInfo ? userStore.userInfo.Username : ''
"
/>
</div>
<div class="col-md">
<div class="form-label">{{ t("settings.remark") }}</div>
<input
ref="userremark"
type="text"
class="form-control"
:value="
userStore.userInfo ? userStore.userInfo.FirstName : ''
"
/>
</div>
<div class="col-md">
<div class="form-label">{{ t("settings.birthday") }}</div>
<datePicker
ref="birthday"
:setdef="userStore.getUserBirthday()"
/>
</div>
<div>
<button class="btn" @click="updataInfo">
{{ t("settings.save_changes") }}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
@@ -0,0 +1,135 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import settingNavigation from "@/components/settingNavigation.vue";
import { useI18n } from "vue-i18n";
import { useUserStore } from "@/stores/user";
import { my_network_func } from "@/my_network_func";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import { myfuncs } from "@/myfunc";
import { useRouter } from "vue-router";
const mos = ref();
const { t, locale } = useI18n();
const router = useRouter();
const emailInput = ref();
const userStore = useUserStore();
function changeEmail() {
if (emailInput.value.value == "") {
emailInput.value.classList.add("is-invalid");
mos.value?.showAlert("warning", t("message.please_enter_your_email"), 3000);
return;
} else {
emailInput.value.classList.remove("is-invalid");
}
//判断是否是合法邮箱
if (myfuncs.isValidEmail(emailInput.value.value) == false) {
emailInput.value.classList.add("is-invalid");
mos.value?.showAlert("danger", t("message.this_not_email"), 3000);
return;
} else {
emailInput.value.classList.remove("is-invalid");
}
my_network_func.postJson(
"/users/changeEmail",
{
newemail: emailInput.value.value,
},
(r) => {
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case 0:
mos.value?.showAlert("success", t("message.change_ok"), 5000);
// 更新用户信息到store
userStore.getUserInfoFromCookie();
break;
case -43:
emailInput.value.classList.add("is-invalid");
mos.value?.showAlert("danger", t("message.this_not_email"), 3000);
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
}
);
}
function functionupdataTitle() {
document.title = "Operations." + t("settings.contact_information");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
onMounted(() => {
//console.log("account mounted");
//username.value.value="Kevin";
functionupdataTitle();
if (!userStore.isLoggedIn) {
router.push("/login");
}
});
</script>
<template>
<div class="page-wrapper">
<div class="page-header d-print-none">
<div class="container-xl">
<h2 class="page-title">{{ t("settings.my_account") }}</h2>
</div>
</div>
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<settingNavigation />
<div class="col-12 col-md-9 d-flex flex-column">
<div class="card-body">
<h3 class="card-title mt-4">{{ t("settings.email") }}</h3>
<div>
<div class="row g-2">
<div class="col-auto">
<input
ref="emailInput"
type="text"
class="form-control w-auto"
:value="userStore.user.Email"
:placeholder="t('message.your_email_address')"
/>
</div>
<div class="col-auto">
<button class="btn" @click="changeEmail">
{{ t("settings.change_email") }}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
@@ -0,0 +1,230 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import settingNavigation from "@/components/settingNavigation.vue";
import { useI18n } from "vue-i18n";
import { useUserStore } from "@/stores/user";
import { my_network_func } from "@/my_network_func";
import MyOffcanvas from "@/components/MyOffcanvas.vue";
import { useRouter } from "vue-router";
const mos = ref();
const { t, locale } = useI18n();
const router = useRouter();
const userStore = useUserStore();
const oldPassInput = ref();
const newPassInput = ref();
const cnfPassInput = ref();
const isShowPassword = ref(false);
function togglePasswordVisibility() {
isShowPassword.value = !isShowPassword.value;
}
function changePassword() {
let isDataErr = false;
let oldPass = oldPassInput.value.value;
let newPass = newPassInput.value.value;
let cnfPass = cnfPassInput.value.value;
oldPassInput.value.classList.remove("is-invalid");
newPassInput.value.classList.remove("is-invalid");
cnfPassInput.value.classList.remove("is-invalid");
if (!oldPass) {
isDataErr = true;
oldPassInput.value.classList.add("is-invalid");
}
if (!newPass) {
isDataErr = true;
newPassInput.value.classList.add("is-invalid");
}
if (!cnfPass) {
isDataErr = true;
cnfPassInput.value.classList.add("is-invalid");
}
if (newPass !== cnfPass) {
isDataErr = true;
newPassInput.value.classList.add("is-invalid");
cnfPassInput.value.classList.add("is-invalid");
mos.value?.showAlert(
"warning",
t("message.confirm_password_incorrect"),
3000
);
}
if (isDataErr) {
return;
}
my_network_func.postJson(
"/users/changePassword",
{
oldpass: oldPass,
newpass: newPass,
},
(r) => {
switch (r.statusCode) {
case 200:
switch (r.data.err_code) {
case 0:
// 清空输入框
oldPassInput.value.value = "";
newPassInput.value.value = "";
cnfPassInput.value.value = "";
mos.value?.showAlert(
"success",
t("message.change_ok"),
2000,
() => {
userStore.logout();
router.push("/");
}
);
break;
case -42:
oldPassInput.value.classList.add("is-invalid");
mos.value?.showAlert(
"danger",
t("message.old_pass_incorrect"),
3000
);
break;
default:
mos.value?.showAlert("danger", t("message.server_error"), 5000);
break;
}
break;
default:
mos.value?.showAlert("danger", t("message.network_err"), 5000);
break;
}
}
);
}
function functionupdataTitle() {
document.title = "Operations." + t("settings.security_settings");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
onMounted(() => {
//console.log("account mounted");
//username.value.value="Kevin";
functionupdataTitle();
if (!userStore.isLoggedIn) {
router.push("/login");
}
});
</script>
<template>
<div class="page-wrapper">
<div class="page-header d-print-none">
<div class="container-xl">
<h2 class="page-title">{{ t("settings.my_account") }}</h2>
</div>
</div>
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<settingNavigation />
<div class="col-12 col-md-9 d-flex flex-column">
<div class="card-body">
<h3 class="card-title mt-4">
{{ t("settings.password") }}
<!-- Download SVG icon from http://tabler-icons.io/i/eye -->
<svg
v-if="!isShowPassword"
@click="togglePasswordVisibility"
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"
/>
</svg>
<svg
v-if="isShowPassword"
@click="togglePasswordVisibility"
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10.585 10.587a2 2 0 0 0 2.829 2.828" />
<path
d="M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"
/>
<path d="M3 3l18 18" />
</svg>
</h3>
<input
ref="oldPassInput"
:type="isShowPassword ? 'text' : 'password'"
class="form-control w-auto mb-1"
:placeholder="t('message.type_old_pass')"
/>
<input
ref="newPassInput"
:type="isShowPassword ? 'text' : 'password'"
class="form-control w-auto mb-1"
:placeholder="t('message.type_new_pass')"
/>
<input
ref="cnfPassInput"
:type="isShowPassword ? 'text' : 'password'"
class="form-control w-auto mb-1"
:placeholder="t('message.type_cof_pass')"
/>
<div>
<button class="btn" @click="changePassword">
{{ t("settings.set_new_password") }}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<MyOffcanvas ref="mos" />
</template>
+11
View File
@@ -0,0 +1,11 @@
<script setup>
import useDropzone from '@/components/useDropzone.vue';
</script>
<template>
<useDropzone></useDropzone>
<!-- <useDropzoneBootstrap></useDropzoneBootstrap>
<useFilePond></useFilePond> -->
</template>
@@ -0,0 +1,72 @@
<template>
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<h2 class="page-title">Cards</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="row row-cards">
<div class="col-md-6 col-lg-3">
<div class="card">
<!-- Photo -->
<div
class="img-responsive img-responsive-21x9 card-img-top"
style="
background-image: url(./static/photos/home-office-desk-with-macbook-iphone-calendar-watch-and-organizer.jpg);
"
></div>
<div class="card-body">
<h3 class="card-title">Card with top image</h3>
<p class="text-secondary card_text">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-3">
<div class="card">
<!-- Photo -->
<div
class="img-responsive img-responsive-21x9 card-img-top"
style="
background-image: url(./static/photos/home-office-desk-with-macbook-iphone-calendar-watch-and-organizer.jpg);
"
></div>
<div class="card-body">
<h3 class="card-title">Card with top image</h3>
<p class="text-secondary card_text">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Aperiam deleniti fugit incidunt, iste, itaque minima neque
pariatur perferendis sed suscipit velit vitae voluptatem. Lorem, ipsum dolor sit amet consectetur adipisicing elit. Illo optio et fuga omnis ipsa, odit repellendus iste doloremque est, nam eius quisquam perspiciatis deserunt. Quasi tempore velit architecto corporis voluptatibus!
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<style scoped>
.card_text{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 限制显示4行 */
overflow: hidden;
line-height: 1.5;
min-height: calc(1.5em * 2); /* 最小高度 */
}
</style>