Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • android/org.benoitharrault.sudoku
1 result
Select Git revision
Show changes
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="0" fill="#ffdfba" stroke="#000" stroke-width="2"/><path d="m118.4 26.471v100.8h99.863v-100.8zm69.716 82.666v-10.835h11.314v10.835zm11.314 4.0477v10.835h-11.314v-10.835zm-62.197-4.0477v-10.835h11.314v10.835zm11.314 4.0477v10.835h-11.314v-10.835zm39.569-72.627v-10.835h11.314v10.835zm11.314 4.0477v10.835h-11.314v-10.835zm-15.342-4.0477h-11.314v-10.835h11.314zm0 4.0477v10.835h-11.314v-10.835zm0 19.407v10.835h-11.314v-10.835zm4.0278 0h11.314v10.835h-11.314zm15.342 0h11.314v10.835h-11.314zm0-8.5725v-10.835h11.314v10.835zm0-14.882v-10.835h11.314v10.835zm-39.569-10.835v10.835h-11.314v-10.835zm0 14.882v10.835h-11.314v-10.835zm0 19.407v10.835h-11.314v-10.835zm0 14.882v10.835h-11.314v-10.835zm8.8853 0h11.314v10.835h-11.314zm15.342 0h11.314v10.835h-11.314zm15.343 0h11.314v10.835h-11.314zm-54.91-49.172v10.835h-11.314v-10.835zm0 14.882v10.835h-11.314v-10.835zm0 19.407v10.835h-11.314v-10.835zm0 14.882v10.835h-11.314v-10.835zm4.0278 19.407h11.314v10.835h-11.314zm20.2 0h11.314v10.835h-11.314zm30.684 0h11.314v10.835h-11.314zm-81.567-68.58h11.314v10.835h-11.314zm0 14.882h11.314v10.835h-11.314zm0 19.407h11.314v10.835h-11.314zm0 14.882h11.314v10.835h-11.314zm0 19.407h11.314v10.835h-11.314zm0 14.882h11.314v10.835h-11.314zm30.684 10.835v-10.835h11.314v10.835zm20.2-10.835h11.314v10.835h-11.314zm30.684 10.835v-10.835h11.314v10.835z" stroke-width="1.6844"/>
<g transform="matrix(1.0536 0 0 1.0536 -2.8108 -62.203)" fill="#ff8d05" stroke="#4c2a00" stroke-width="1.6123" aria-label="3x2"><path d="m19.512 73.271-7.5195-1.3477q0.9375-3.5938 3.5938-5.5078 2.6758-1.9141 7.5586-1.9141 5.6055 0 8.1055 2.0898t2.5 5.2539q0 1.8555-1.0156 3.3594t-3.0664 2.6367q1.6602 0.41016 2.5391 0.95703 1.4258 0.87891 2.207 2.3242 0.80078 1.4258 0.80078 3.418 0 2.5-1.3086 4.8047-1.3086 2.2852-3.7695 3.5352-2.4609 1.2305-6.4648 1.2305-3.9062 0-6.1719-0.91797-2.2461-0.91797-3.7109-2.6758-1.4453-1.7773-2.2266-4.4531l7.9492-1.0547q0.46875 2.4023 1.4453 3.3398 0.99609 0.91797 2.5195 0.91797 1.6016 0 2.6562-1.1719 1.0742-1.1719 1.0742-3.125 0-1.9922-1.0352-3.0859-1.0156-1.0938-2.7734-1.0938-0.9375 0-2.5781 0.46875l0.41016-5.6836q0.66406 0.09766 1.0352 0.09766 1.5625 0 2.5977-0.99609 1.0547-0.99609 1.0547-2.3633 0-1.3086-0.78125-2.0898t-2.1484-0.78125q-1.4062 0-2.2852 0.85938-0.87891 0.83984-1.1914 2.9688z"/><path d="m37.441 72.88h9.4336l3.3008 5.7812 3.8281-5.7812h8.7695l-7.0703 9.8828 7.5781 10.859h-9.2773l-3.8281-6.6797-4.5117 6.6797h-8.6133l7.5391-10.859z"/><path d="m88.438 93.622h-23.867q0.41016-3.5352 2.4805-6.6406 2.0898-3.125 7.8125-7.3633 3.4961-2.5977 4.4727-3.9453 0.97656-1.3477 0.97656-2.5586 0-1.3086-0.97656-2.2266-0.95703-0.9375-2.4219-0.9375-1.5234 0-2.5 0.95703-0.95703 0.95703-1.2891 3.3789l-7.9688-0.64453q0.46875-3.3594 1.7188-5.2344 1.25-1.8945 3.5156-2.8906 2.2852-1.0156 6.3086-1.0156 4.1992 0 6.5234 0.95703 2.3438 0.95703 3.6719 2.9492 1.3477 1.9727 1.3477 4.4336 0 2.6172-1.543 5-1.5234 2.3828-5.5664 5.2344-2.4023 1.6602-3.2227 2.3242-0.80078 0.66406-1.8945 1.7383h12.422z"/></g><path d="m14.151 44.442v47.163h71.698v-47.163zm65.408 4.6759v15.58h-16.268v-15.58zm0 21.399v15.58h-16.268v-15.58zm-22.057-21.4v15.58h-16.268v-15.58zm0 21.399v15.58h-16.268v-15.58zm-38.328-21.402h16.268v15.58h-16.268zm0 21.399h16.268v15.58h-16.268z" stroke-width="2.422"/></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="0" fill="#ffc4c4" stroke="#000" stroke-width="2"/><path d="m192.95 29.394h-69.133v100.35h100.35v-100.35zm10.035 88.089v-8.9204h8.9204v8.9204zm8.9204 2.2301v7.8053h-8.9204v-7.8053zm-42.372-2.2301v-8.9204h8.9204v8.9204zm8.9204 2.2301v7.8053h-8.9204v-7.8053zm-42.372-2.2301v-8.9204h8.9204v8.9204zm8.9204 2.2301v7.8053h-8.9204v-7.8053zm0-78.053v8.9204h-8.9204v-8.9204zm-8.9204-2.2301v-7.8053h8.9204v7.8053zm42.372 2.2301v8.9204h-8.9204v-8.9204zm-8.9204-2.2301v-7.8053h8.9204v7.8053zm0 33.452v-7.8053h8.9204v7.8053zm8.9204 2.2301v8.9204h-8.9204v-8.9204zm-11.151-2.2301h-7.8053v-7.8053h7.8053zm0 2.2301v8.9204h-7.8053v-8.9204zm0 11.151v7.8053h-7.8053v-7.8053zm2.2301 0h8.9204v7.8053h-8.9204zm11.151 0h7.8053v7.8053h-7.8053zm0-2.2301v-8.9204h7.8053v8.9204zm0-11.151v-7.8053h7.8053v7.8053zm0-12.266v-7.8053h7.8053v7.8053zm-2.2301 0h-8.9204v-7.8053h8.9204zm-11.151 0h-7.8053v-7.8053h7.8053zm-12.266 0h-7.8053v-7.8053h7.8053zm0 4.4603v7.8053h-7.8053v-7.8053zm0 10.035v8.9204h-7.8053v-8.9204zm0 11.151v7.8053h-7.8053v-7.8053zm0 12.266v7.8053h-7.8053v-7.8053zm4.4603 0h7.8053v7.8053h-7.8053zm10.035 0h8.9204v7.8053h-8.9204zm11.151 0h7.8053v7.8053h-7.8053zm12.266 0h7.8053v7.8053h-7.8053zm0-4.4603v-7.8053h7.8053v7.8053zm0-10.035v-8.9204h7.8053v8.9204zm0-11.151v-7.8053h7.8053v7.8053zm0-12.266v-7.8053h7.8053v7.8053zm0-10.035v-8.9204h7.8053v8.9204zm-4.4603 0h-7.8053v-8.9204h7.8053zm-21.186 0h-7.8053v-8.9204h7.8053zm-12.266 0h-7.8053v-8.9204h7.8053zm-10.035 2.2301v7.8053h-8.9204v-7.8053zm0 12.266v7.8053h-8.9204v-7.8053zm0 10.035v8.9204h-8.9204v-8.9204zm0 11.151v7.8053h-8.9204v-7.8053zm0 12.266v7.8053h-8.9204v-7.8053zm2.2301 10.035h7.8053v8.9204h-7.8053zm12.266 0h7.8053v8.9204h-7.8053zm21.186 0h7.8053v8.9204h-7.8053zm12.266 0h7.8053v8.9204h-7.8053zm10.035-2.2301v-7.8053h8.9204v7.8053zm0-12.266v-7.8053h8.9204v7.8053zm0-10.035v-8.9204h8.9204v8.9204zm0-11.151v-7.8053h8.9204v7.8053zm0-12.266v-7.8053h8.9204v7.8053zm0-10.035v-8.9204h8.9204v8.9204zm0-11.151v-7.8053h8.9204v7.8053zm-2.2301-7.8053v7.8053h-7.8053v-7.8053zm-12.266 7.8053h-7.8053v-7.8053h7.8053zm-21.186-7.8053v7.8053h-7.8053v-7.8053zm-12.266 7.8053h-7.8053v-7.8053h7.8053zm-28.991-7.8053h7.8053v7.8053h-7.8053zm0 10.035h7.8053v8.9204h-7.8053zm0 11.151h7.8053v7.8053h-7.8053zm0 12.266h7.8053v7.8053h-7.8053zm0 10.035h7.8053v8.9204h-7.8053zm0 11.151h7.8053v7.8053h-7.8053zm0 12.266h7.8053v7.8053h-7.8053zm0 10.035h7.8053v8.9204h-7.8053zm0 11.151h7.8053v7.8053h-7.8053zm21.186 7.8053v-7.8053h7.8053v7.8053zm12.266-7.8053h7.8053v7.8053h-7.8053zm21.186 7.8053v-7.8053h7.8053v7.8053zm12.266-7.8053h7.8053v7.8053h-7.8053zm28.991 7.8053h-7.8053v-7.8053h7.8053zm0-10.035h-7.8053v-8.9204h7.8053zm0-11.151h-7.8053v-7.8053h7.8053zm0-12.266h-7.8053v-7.8053h7.8053zm0-10.035h-7.8053v-8.9204h7.8053zm0-11.151h-7.8053v-7.8053h7.8053zm0-12.266h-7.8053v-7.8053h7.8053zm0-10.035h-7.8053v-8.9204h7.8053zm-7.8053-11.151v-7.8053h7.8053v7.8053z" stroke-width="1.1151"/>
<g transform="matrix(1.1086 0 0 1.1086 -4.7553 -66.314)" fill="#f00" stroke="#500000" stroke-width="1.6145" aria-label="3x3"><path d="m19.443 72.913-7.5195-1.3477q0.9375-3.5938 3.5938-5.5078 2.6758-1.9141 7.5586-1.9141 5.6055 0 8.1055 2.0898t2.5 5.2539q0 1.8555-1.0156 3.3594t-3.0664 2.6367q1.6602 0.41016 2.5391 0.95703 1.4258 0.87891 2.207 2.3242 0.80078 1.4258 0.80078 3.418 0 2.5-1.3086 4.8047-1.3086 2.2852-3.7695 3.5352-2.4609 1.2305-6.4648 1.2305-3.9062 0-6.1719-0.91797-2.2461-0.91797-3.7109-2.6758-1.4453-1.7773-2.2266-4.4531l7.9492-1.0547q0.46875 2.4023 1.4453 3.3398 0.99609 0.91797 2.5195 0.91797 1.6016 0 2.6562-1.1719 1.0742-1.1719 1.0742-3.125 0-1.9922-1.0352-3.0859-1.0156-1.0938-2.7734-1.0938-0.9375 0-2.5781 0.46875l0.41016-5.6836q0.66406 0.09766 1.0352 0.09766 1.5625 0 2.5977-0.99609 1.0547-0.99609 1.0547-2.3633 0-1.3086-0.78125-2.0898t-2.1484-0.78125q-1.4062 0-2.2852 0.85938-0.87891 0.83984-1.1914 2.9688z"/><path d="m37.373 72.522h9.4336l3.3008 5.7812 3.8281-5.7812h8.7695l-7.0703 9.8828 7.5781 10.859h-9.2773l-3.8281-6.6797-4.5117 6.6797h-8.6133l7.5391-10.859z"/><path d="m72.803 72.913-7.5195-1.3477q0.9375-3.5938 3.5938-5.5078 2.6758-1.9141 7.5586-1.9141 5.6055 0 8.1055 2.0898t2.5 5.2539q0 1.8555-1.0156 3.3594t-3.0664 2.6367q1.6602 0.41016 2.5391 0.95703 1.4258 0.87891 2.207 2.3242 0.80078 1.4258 0.80078 3.418 0 2.5-1.3086 4.8047-1.3086 2.2852-3.7695 3.5352-2.4609 1.2305-6.4648 1.2305-3.9062 0-6.1719-0.91797-2.2461-0.91797-3.7109-2.6758-1.4453-1.7773-2.2266-4.4531l7.9492-1.0547q0.46875 2.4023 1.4453 3.3398 0.99609 0.91797 2.5195 0.91797 1.6016 0 2.6562-1.1719 1.0742-1.1719 1.0742-3.125 0-1.9922-1.0352-3.0859-1.0156-1.0938-2.7734-1.0938-0.9375 0-2.5781 0.46875l0.41016-5.6836q0.66406 0.09766 1.0352 0.09766 1.5625 0 2.5977-0.99609 1.0547-0.99609 1.0547-2.3633 0-1.3086-0.78125-2.0898t-2.1484-0.78125q-1.4062 0-2.2852 0.85938-0.87891 0.83984-1.1914 2.9688z"/></g><path d="m21.909 41.68v56.301h56.182v-56.301h-56.182zm35.388 20.489v14.901h-14.901v-14.901zm-14.901-3.7252v-13.038h14.901v13.038zm31.662 35.389h-13.038v-13.038h13.038zm0-16.762h-13.038v-14.901h13.038zm-16.762 3.7252v13.038h-14.901v-13.038zm16.762-22.352h-13.038v-13.038h13.038zm-48.427-13.038h13.038v13.038h-13.038zm0 16.762h13.038v14.901h-13.038zm0 18.627h13.038v13.038h-13.038z" stroke-width="1.8627"/></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="#f3ff6a"/><path class="st0" d="m56.096 53.176 26.479-4.2576c2.3483-0.37629 4.5851 1.2404 4.9614 3.5887l3.8395 23.859c0.37628 2.3483-1.2404 4.5851-3.5887 4.9614l-26.479 4.2576c-2.3483 0.37629-4.5851-1.2404-4.9614-3.5887l-3.8395-23.859c-0.37629-2.3483 1.2404-4.5851 3.5887-4.9614zm13.567 11.198-5.1217-0.05575c0.1533-1.6515 0.73864-2.9964 1.7769-4.0416 1.0313-1.0383 2.627-1.7421 4.7733-2.0975 2.4737-0.41113 4.3273-0.25086 5.5886 0.48778 1.2543 0.73864 1.9999 1.8048 2.2298 3.1984 0.13937 0.81529 0.03484 1.5957-0.29964 2.3344-0.33448 0.73864-0.90588 1.4285-1.7281 2.0765 0.75954 0.05575 1.3588 0.17421 1.7839 0.35538 0.69683 0.2857 1.2682 0.71076 1.7212 1.2891 0.45294 0.57837 0.75954 1.3031 0.90588 2.1811 0.18118 1.101 0.07665 2.2089-0.33448 3.3239-0.41113 1.108-1.108 2.0278-2.1044 2.7525-0.99646 0.7247-2.3762 1.2404-4.1461 1.533-1.7212 0.2857-3.1148 0.31357-4.174 0.06968-1.0661-0.23692-1.979-0.69683-2.7525-1.3658-0.76651-0.67592-1.4285-1.5748-1.972-2.7037l5.1496-1.5818c0.38326 1.0313 0.82923 1.7142 1.3309 2.0556 0.50172 0.34145 1.0871 0.45294 1.763 0.34145 0.7038-0.11846 1.2473-0.47384 1.6306-1.0731 0.38326-0.5923 0.50172-1.324 0.35538-2.188-0.14633-0.878-0.48778-1.5191-1.0174-1.9302-0.52959-0.40416-1.1846-0.54353-1.9581-0.4181-0.41113 0.06968-0.96162 0.26479-1.6445 0.5923l-0.35538-3.8117c0.29267-7e-3 0.52262-0.0209 0.68289-0.04878 0.68289-0.11149 1.2125-0.43203 1.5957-0.94072 0.38326-0.51565 0.52262-1.0661 0.42506-1.6654-0.09756-0.57837-0.34841-1.0104-0.73864-1.2891-0.40416-0.2857-0.89891-0.38326-1.4982-0.27873-0.62018 0.10452-1.0871 0.36932-1.4146 0.80832-0.32054 0.439-0.47384 1.1358-0.45294 2.0905zm-20.117-45.663 3.2193 19.316-5.3307 0.89194-2.1044-12.633c-0.75258 0.80135-1.4982 1.4633-2.2438 1.9999-0.73864 0.53656-1.6933 1.094-2.8431 1.6654l-0.71773-4.2994c1.7003-0.88497 2.9755-1.8118 3.8326-2.7943 0.8571-0.98253 1.4703-2.1184 1.8327-3.4145zm-31.357 31.748 25.727 7.5815c2.2856 0.67592 3.6026 3.0939 2.9267 5.3795l-6.8289 23.177c-0.67592 2.2856-3.0939 3.6026-5.3795 2.9267l-25.72-7.5745c-2.2856-0.67592-3.6026-3.0939-2.9267-5.3795l6.8289-23.177c0.66896-2.2856 3.087-3.6026 5.3725-2.9336zm18.612 20.229-3.526-0.50172c-0.19511 0.22298-0.41113 0.439-0.64805 0.64108-0.89194 0.76651-2.3135 1.4842-4.2646 2.1462-1.1567 0.37629-1.9302 0.65502-2.3344 0.82226-0.40416 0.17421-0.88497 0.40416-1.4494 0.7038l7.4421 2.202-1.1498 3.8744-14.292-4.2228c0.57837-1.3588 1.4703-2.5434 2.6689-3.5329 1.1985-0.99646 3.1845-2.0069 5.9718-3.0242 0.52959-0.19511 0.99646-0.37629 1.4146-0.55049 0.93375-0.39022 1.5888-0.7247 1.972-1.0174 0.5505-0.42507 0.89891-0.878 1.0383-1.3588 0.1533-0.52262 0.09756-1.0243-0.18118-1.5121-0.27873-0.48778-0.71076-0.81529-1.2961-0.9895-0.60624-0.18118-1.1637-0.1324-1.6585 0.1324-0.50172 0.27176-0.96162 0.87104-1.3797 1.8048l-4.6478-1.7978c0.58534-1.2891 1.2404-2.2299 1.9581-2.8361 0.7247-0.60624 1.5957-0.97556 2.6201-1.108 1.0313-0.1324 2.3413 0.03484 3.951 0.51565 1.6724 0.49475 2.9197 1.0731 3.742 1.7281 0.81529 0.65502 1.3797 1.4564 1.6724 2.4041 0.29964 0.95466 0.3066 1.9163 0.01394 2.8988-0.22995 0.76651-0.61321 1.4564-1.1567 2.0835zm-5.5677-55.614 26.479-4.2576c2.3483-0.37629 4.5851 1.2404 4.9614 3.5887l3.8395 23.859c0.37629 2.3483-1.2404 4.5851-3.5887 4.9614l-26.479 4.2576c-2.3483 0.37629-4.5851-1.2404-4.9614-3.5887l-3.8395-23.859c-0.37629-2.3483 1.2404-4.5851 3.5887-4.9614z" clip-rule="evenodd" fill-rule="evenodd" stroke-width=".69683"/></svg>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#f3ff6a" stroke="#000" stroke-width="2"/><g transform="matrix(1.2346,0,0,1.2346,-6.0567,4.2158)" aria-label="1"><path d="m36.69 6.9411v29.121h-8.0469v-19.082q-1.9531 1.4844-3.7891 2.4023-1.8164 0.91797-4.5703 1.7578v-6.5234q4.0625-1.3086 6.3086-3.1445t3.5156-4.5312z"/></g><g transform="matrix(1.0898 0 0 1.0898 .65346 7.822)" aria-label="2"><path d="m77.189 37.541h-27.036q0.46462-4.0045 2.8098-7.5223 2.3673-3.5399 8.8498-8.3409 3.9603-2.9426 5.0665-4.4691 1.1062-1.5266 1.1062-2.8983 0-1.4823-1.1062-2.5222-1.0841-1.062-2.7434-1.062-1.7257 0-2.8319 1.0841-1.0841 1.0841-1.4602 3.8275l-9.0268-0.73011q0.53099-3.8054 1.947-5.9294 1.416-2.1461 3.9824-3.2744 2.5886-1.1505 7.1462-1.1505 4.7568 0 7.3896 1.0841 2.6549 1.0841 4.1594 3.3408 1.5266 2.2346 1.5266 5.0223 0 2.9647-1.7478 5.6639-1.7257 2.6992-6.3055 5.9294-2.7213 1.8806-3.6505 2.6328-0.9071 0.75223-2.1461 1.9691h14.071z" stroke-width="1.1328"/></g><g transform="matrix(1.2346,0,0,1.2346,-5.1159,-24.514)" aria-label="3"><path d="m25.468 72.902-7.5195-1.3477q0.9375-3.5938 3.5938-5.5078 2.6758-1.9141 7.5586-1.9141 5.6055 0 8.1055 2.0898t2.5 5.2539q0 1.8555-1.0156 3.3594t-3.0664 2.6367q1.6602 0.41016 2.5391 0.95703 1.4258 0.87891 2.207 2.3242 0.80078 1.4258 0.80078 3.418 0 2.5-1.3086 4.8047-1.3086 2.2852-3.7695 3.5352-2.4609 1.2305-6.4648 1.2305-3.9062 0-6.1719-0.91797-2.2461-0.91797-3.7109-2.6758-1.4453-1.7773-2.2266-4.4531l7.9492-1.0547q0.46875 2.4023 1.4453 3.3398 0.99609 0.91797 2.5195 0.91797 1.6016 0 2.6562-1.1719 1.0742-1.1719 1.0742-3.125 0-1.9922-1.0352-3.0859-1.0156-1.0938-2.7734-1.0938-0.9375 0-2.5781 0.46875l0.41016-5.6836q0.66406 0.09766 1.0352 0.09766 1.5625 0 2.5977-0.99609 1.0547-0.99609 1.0547-2.3633 0-1.3086-0.78125-2.0898t-2.1484-0.78125q-1.4062 0-2.2852 0.85938-0.87891 0.83984-1.1914 2.9688z"/></g><g transform="matrix(1.2346,0,0,1.2346,-9.167,-23.09)" aria-label="4"><path d="m66.145 86.993h-14.492v-6.543l14.492-17.227h6.9336v17.598h3.5938v6.1719h-3.5938v5.3516h-6.9336zm0-6.1719v-9.0039l-7.6562 9.0039z"/></g></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="#f3ff6a"/><g transform="matrix(.69329 -.16854 .16854 .69329 4.4741 53.61)"><path d="m31.483 16.213c-2.065 0.511-4.227 0.511-6.292 0-10.756-2.66-19.762-1.64-19.658 18.643 0.053 10.39 9.783 23.862 20.009 21.557 1.834-0.413 3.755-0.413 5.589 0 10.226 2.305 19.956-11.167 20.009-21.557 0.104-20.282-8.901-21.303-19.657-18.643z" fill="#d13834"/><path d="m10.533 29.674c-0.553 0-1-0.448-1-1 0-5.514 4.037-10 9-10 0.553 0 1 0.448 1 1s-0.447 1-1 1c-3.859 0-7 3.589-7 8 0 0.552-0.448 1-1 1z" fill="#f75b57"/><path d="m28.265 19.999c-0.537 0-0.981-0.427-0.998-0.968-0.135-4.232-1.761-9.545-5.922-11.764-0.487-0.26-0.672-0.865-0.412-1.353 0.261-0.487 0.864-0.672 1.354-0.412 4.914 2.62 6.827 8.673 6.979 13.465 0.018 0.552-0.415 1.014-0.968 1.031-0.012 1e-3 -0.022 1e-3 -0.033 1e-3z" fill="#4c312c"/><path d="m28.176 23.592c-1.68 0-3.261-0.655-4.45-1.845-0.391-0.39-0.391-1.023 0-1.414s1.023-0.391 1.414 0c0.812 0.812 1.891 1.259 3.036 1.259s2.224-0.447 3.035-1.259c0.391-0.391 1.023-0.391 1.414 0 0.391 0.39 0.391 1.023 0 1.414-1.189 1.19-2.769 1.845-4.449 1.845z" fill="#994530"/><path d="m27.305 13.04 0.609-4.086c0.643-4.315 4.031-7.703 8.346-8.346l4.085-0.608-0.609 4.086c-0.643 4.315-4.031 7.703-8.346 8.346z" fill="#659c35"/></g><g transform="matrix(.69882 .20205 -.20205 .69882 60.923 4.1612)"><path d="m47.156 32c1.416-0.995 2.344-2.638 2.344-4.5 0-2.138-1.223-3.987-3.005-4.897 1e-3 -0.035 5e-3 -0.068 5e-3 -0.103 0-2.578-1.776-4.735-4.169-5.331-0.596-2.393-2.753-4.169-5.331-4.169-2.437 0-4.5 1.586-5.222 3.782-0.947-1.66-2.73-2.782-4.778-2.782-1.862 0-3.505 0.928-4.5 2.344-0.995-1.416-2.638-2.344-4.5-2.344-2.17 0-4.041 1.26-4.936 3.085-2.591 0.445-4.564 2.697-4.564 5.415 0 0.55 0.083 1.081 0.234 1.582-1.353 1.002-2.234 2.605-2.234 4.418 0 1.839 0.906 3.463 2.292 4.461-0.805 0.957-1.292 2.191-1.292 3.539 0 2.744 2.012 5.013 4.641 5.426-0.408 0.768-0.641 1.644-0.641 2.574 0 2.578 1.776 4.735 4.169 5.331 0.596 2.393 2.753 4.169 5.331 4.169 1.159 0 2.232-0.36 3.119-0.972 0.915 1.764 2.756 2.972 4.881 2.972 1.947 0 3.654-1.015 4.632-2.542 0.718 0.344 1.519 0.542 2.368 0.542 2.877 0 5.234-2.21 5.476-5.024 2.814-0.242 5.024-2.599 5.024-5.476 0-0.682-0.13-1.331-0.356-1.934 1.972-0.836 3.356-2.789 3.356-5.066 0-1.862-0.928-3.505-2.344-4.5z" fill="#c62a6a"/><g fill="#659c35"><path d="m26.976 0s0.043 0.016 0.106 0.041c0.062-0.025 0.105-0.041 0.105-0.041z"/><path d="m13.605 16.221c1.002-1.342 2.591-2.221 4.395-2.221 1.862 0 3.505 0.928 4.5 2.344 0.995-1.416 2.638-2.344 4.5-2.344 2.048 0 3.831 1.122 4.778 2.782 0.722-2.196 2.785-3.782 5.222-3.782 1.929 0 3.621 0.995 4.601 2.498 2.324-1.724 4.05-3.905 4.899-6.498-9.925-3.375-13.016 1-13.016 1-0.601-7.394-5.641-9.658-6.402-9.959-0.763 0.301-5.802 2.565-6.403 9.959 0 0-3.091-4.375-13.016-1 0.972 2.969 3.087 5.402 5.942 7.221z"/></g><path d="m16.357 28.997c-1.243 0-2.535-0.461-3.593-1.61-0.374-0.406-0.348-1.039 0.059-1.413 0.406-0.375 1.039-0.348 1.413 0.059 1.206 1.309 2.798 1.089 3.796 0.502 0.992-0.584 1.954-1.864 1.396-3.548-0.174-0.524 0.111-1.09 0.635-1.263 0.525-0.173 1.09 0.111 1.263 0.635 0.872 2.635-0.517 4.862-2.281 5.9-0.775 0.456-1.716 0.738-2.688 0.738z" fill="#e53384"/><path d="m37.264 41.325c-1.243 0-2.535-0.461-3.593-1.61-0.374-0.406-0.348-1.039 0.059-1.413 0.407-0.375 1.039-0.348 1.413 0.059 1.206 1.309 2.799 1.088 3.796 0.502 0.992-0.584 1.954-1.864 1.396-3.548-0.174-0.524 0.111-1.09 0.635-1.263 0.524-0.175 1.09 0.111 1.263 0.635 0.872 2.635-0.517 4.862-2.281 5.9-0.775 0.456-1.716 0.738-2.688 0.738z" fill="#e53384"/><path d="m20.698 41.998c-0.227 0-0.45-0.014-0.669-0.042-2.037-0.259-4.198-1.762-4.436-4.534-0.047-0.55 0.36-1.035 0.911-1.082 0.549-0.048 1.035 0.36 1.082 0.911 0.152 1.774 1.547 2.574 2.696 2.721 1.142 0.141 2.686-0.279 3.276-1.952 0.183-0.521 0.756-0.796 1.275-0.61 0.521 0.184 0.794 0.754 0.61 1.275-0.823 2.336-2.872 3.313-4.745 3.313z" fill="#e53384"/><path d="m29.698 32.661c-0.227 0-0.45-0.014-0.669-0.042-2.036-0.26-4.197-1.762-4.435-4.534-0.047-0.55 0.36-1.035 0.911-1.082 0.548-0.047 1.035 0.36 1.082 0.911 0.152 1.774 1.547 2.574 2.696 2.72 1.142 0.147 2.686-0.278 3.276-1.952 0.183-0.521 0.756-0.796 1.275-0.61 0.521 0.184 0.794 0.754 0.61 1.275-0.824 2.337-2.873 3.314-4.746 3.314z" fill="#e53384"/><path d="m28.461 50.169c-1.303 0-2.657-0.5-3.722-1.751-0.358-0.42-0.308-1.052 0.113-1.41 0.419-0.358 1.052-0.308 1.41 0.113 1.155 1.356 2.755 1.195 3.774 0.648 1.014-0.545 2.024-1.787 1.532-3.492-0.153-0.531 0.153-1.085 0.684-1.238s1.085 0.153 1.238 0.684c0.77 2.667-0.704 4.839-2.507 5.808-0.74 0.397-1.619 0.638-2.522 0.638z" fill="#e53384"/><path d="m40.633 26.996c-0.958 0-1.886-0.274-2.653-0.72-1.776-1.03-3.184-3.254-2.326-5.9 0.169-0.525 0.736-0.813 1.259-0.643 0.525 0.17 0.813 0.734 0.643 1.259-0.549 1.694 0.426 2.973 1.427 3.554 0.996 0.579 2.583 0.788 3.777-0.526 0.372-0.407 1.003-0.439 1.413-0.067 0.409 0.372 0.438 1.004 0.067 1.413-1.058 1.163-2.357 1.63-3.607 1.63z" fill="#e53384"/></g><g transform="matrix(.7177 0 0 .7177 52.098 52.387)"><path d="m36.486 12.899-5.089-0.419 1.884-4.746c0.308-0.775 0.696-1.499 1.139-2.177-2.955-1.3-6.219-2.027-9.655-2.027-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24c0-6.059-2.25-11.59-5.954-15.813-1.922 0.926-4.092 1.366-6.325 1.182z" fill="#ed8f20"/><circle cx="38.537" cy="18.496" r="2" fill="#ef771d"/><circle cx="43.857" cy="29.651" r="2" fill="#ef771d"/><circle cx="43.537" cy="23.496" r="2" fill="#ef771d"/><circle cx="37.493" cy="27.529" r="2" fill="#ef771d"/><circle cx="38.537" cy="34.496" r="2" fill="#ef771d"/><circle cx="20.537" cy="10.496" r="2" fill="#ef771d"/><circle cx="13.537" cy="13.496" r="2" fill="#ef771d"/><path d="m27.765 11.529s4.25 0.7 5.4 3.6" fill="#ed8f20"/><path d="m33.165 16.13c-0.397 0-0.773-0.239-0.93-0.632-0.925-2.331-4.599-2.976-4.635-2.982-0.544-0.092-0.912-0.606-0.821-1.151 0.09-0.543 0.603-0.912 1.147-0.822 0.197 0.032 4.824 0.831 6.168 4.218 0.203 0.513-0.048 1.095-0.561 1.298-0.12 0.048-0.245 0.071-0.368 0.071z" fill="#9b6026"/><path d="m28.365 14.529c1.037-1.14 2.345-2.025 3.787-2.567" fill="#ed8f20"/><path d="m28.364 15.529c-0.24 0-0.481-0.086-0.673-0.26-0.408-0.372-0.438-1.004-0.066-1.413 1.142-1.255 2.585-2.233 4.176-2.831 0.517-0.192 1.093 0.067 1.288 0.584 0.193 0.517-0.068 1.094-0.585 1.288-1.295 0.486-2.471 1.283-3.4 2.304-0.198 0.218-0.468 0.328-0.74 0.328z" fill="#9b6026"/><path d="m50.765 0.46-5.089-0.419c-5.375-0.442-10.406 2.681-12.395 7.693l-1.884 4.746 5.089 0.419c5.374 0.442 10.406-2.681 12.395-7.693z" fill="#659c35"/><path d="m31.958 11.068-0.561 1.413 0.718 0.059c6.258-6.111 13.059-8.117 13.803-8.164l0.035-0.559 0.413 0.413 0.158-0.593-0.444-0.425c-0.598-0.132-7.583 1.797-14.122 7.856z" fill="#88c057"/></g><g transform="matrix(.73204 0 0 .73204 13.449 8.4493)"><circle cx="6" cy="49" r="6" fill="#9777a8"/><circle cx="10" cy="28" r="6" fill="#583e68"/><path d="m16 41c-2.578 0-4.769 1.628-5.618 3.91 1.001 1.072 1.618 2.507 1.618 4.09 0 0.736-0.139 1.438-0.382 2.09 1.096 1.172 2.651 1.91 4.382 1.91 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#583e68"/><path d="m10.382 44.91c0.594-1.596 1.853-2.858 3.434-3.481 0.112-0.459 0.184-0.935 0.184-1.429 0-3.314-2.686-6-6-6s-6 2.686-6 6c0 1.383 0.472 2.653 1.258 3.667 0.823-0.424 1.753-0.667 2.742-0.667 1.93 0 3.643 0.915 4.74 2.331-0.113-0.145-0.233-0.286-0.358-0.421z" fill="#6f58a8"/><path d="m26 38c-2.858 0-5.244 2-5.848 4.675 1.137 1.091 1.848 2.624 1.848 4.325 0 0.456-0.055 0.898-0.152 1.325 1.078 1.035 2.539 1.675 4.152 1.675 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#6f58a8"/><path d="m23.371 38.628c0.391-0.796 0.629-1.681 0.629-2.628 0-3.314-2.686-6-6-6-0.932 0-1.811 0.217-2.597 0.597-0.59 1.225-1.581 2.216-2.806 2.806-0.317 0.66-0.518 1.387-0.575 2.155 1.212 1.097 1.978 2.678 1.978 4.442 0 0.148-0.018 0.291-0.03 0.436 0.281 0.255 0.588 0.48 0.913 0.679 0.363-0.069 0.734-0.115 1.117-0.115 1.15 0 2.22 0.329 3.133 0.89 0.533-0.102 1.03-0.293 1.503-0.526 0.585-1.19 1.545-2.152 2.735-2.736z" fill="#9777a8"/><path d="m28 28c-0.774 0-1.506 0.162-2.184 0.429-0.418 1.701-1.551 3.119-3.074 3.904 0-1e-3 -1e-3 -1e-3 -1e-3 -1e-3 0.787 1.013 1.259 2.284 1.259 3.668 0 0.734-0.146 1.43-0.393 2.077 0.098 0.105 0.203 0.202 0.308 0.3 0.65-0.241 1.351-0.377 2.085-0.377 1.583 0 3.018 0.617 4.09 1.618 2.282-0.849 3.91-3.04 3.91-5.618 0-3.314-2.686-6-6-6z" fill="#583e68"/><path d="m36 34c-0.713 0-1.394 0.13-2.028 0.359-0.145 2.419-1.708 4.451-3.882 5.26-0.013-0.013-0.028-0.023-0.042-0.036 1.196 1.097 1.952 2.666 1.952 4.417 0 0.149-0.012 0.296-0.022 0.443 1.064 0.964 2.472 1.557 4.022 1.557 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#9777a8"/><path d="m38 24c-0.378 0-0.747 0.039-1.106 0.106-0.453 2.426-2.362 4.335-4.788 4.788-0.041 0.217-0.066 0.439-0.084 0.663 1.212 1.098 1.978 2.679 1.978 4.443 0 0.145-0.023 0.284-0.034 0.427 0.025-0.03 1.327-0.427 2.034-0.427 1.583 0 3.018 0.617 4.09 1.618 2.282-0.849 3.91-3.04 3.91-5.618 0-3.314-2.686-6-6-6z" fill="#583e68"/><path d="m25 11c-2.462 0-4.575 1.484-5.5 3.605 0.32 0.734 0.5 1.543 0.5 2.395s-0.18 1.661-0.5 2.395c0.264 0.606 0.635 1.152 1.074 1.634 1.522 0.145 2.874 0.861 3.85 1.928 0.191 0.018 0.38 0.043 0.576 0.043 0-3.314 2.686-6 6-6 0-3.314-2.686-6-6-6z" fill="#9777a8"/><path d="m14 11c-3.314 0-6 2.686-6 6 0 2.127 1.11 3.991 2.779 5.056 0.891 0.116 1.719 0.426 2.443 0.888 0.255 0.033 0.514 0.056 0.778 0.056 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#6f58a8"/><path d="m25.056 23.78c-3e-3 -4e-3 -5e-3 -9e-3 -7e-3 -0.013-1.067-1.663-2.927-2.767-5.049-2.767-0.63 0-1.234 0.105-1.804 0.285-0.661 0.648-1.471 1.144-2.375 1.432-0.456 0.446-0.85 0.955-1.147 1.526 0.828 1.029 1.326 2.334 1.326 3.757 0 0.947-0.229 1.838-0.62 2.635 7e-3 -0.013 0.016-0.025 0.022-0.038 0.787-0.38 1.666-0.597 2.598-0.597 1.931 0 3.644 0.916 4.742 2.333 1.933-0.996 3.258-3.008 3.258-5.333 0-0.266-0.024-0.525-0.058-0.781-0.461-0.723-0.77-1.55-0.886-2.439z" fill="#6f58a8"/><path d="m31 17c-3.314 0-6 2.686-6 6 0 2.098 1.079 3.942 2.711 5.015 0.096-5e-3 0.191-0.015 0.289-0.015 1.216 0 2.345 0.364 3.29 0.985 3.178-0.152 5.71-2.769 5.71-5.985 0-3.314-2.686-6-6-6z" fill="#6f58a8"/><path d="m56 26c-6.633 0-12-5.367-12-12 6.633 0 12 5.367 12 12z" fill="#88c057"/><path d="m34 19v-2c7.168 0 13-7.178 13-16h2c0 9.925-6.729 18-15 18z" fill="#7a3726"/></g></svg>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#f3ff6a" stroke="#000" stroke-width="2"/><g transform="matrix(.69329 -.16854 .16854 .69329 5.4741 54.61)"><path d="m31.483 16.213c-2.065 0.511-4.227 0.511-6.292 0-10.756-2.66-19.762-1.64-19.658 18.643 0.053 10.39 9.783 23.862 20.009 21.557 1.834-0.413 3.755-0.413 5.589 0 10.226 2.305 19.956-11.167 20.009-21.557 0.104-20.282-8.901-21.303-19.657-18.643z" fill="#d13834"/><path d="m10.533 29.674c-0.553 0-1-0.448-1-1 0-5.514 4.037-10 9-10 0.553 0 1 0.448 1 1s-0.447 1-1 1c-3.859 0-7 3.589-7 8 0 0.552-0.448 1-1 1z" fill="#f75b57"/><path d="m28.265 19.999c-0.537 0-0.981-0.427-0.998-0.968-0.135-4.232-1.761-9.545-5.922-11.764-0.487-0.26-0.672-0.865-0.412-1.353 0.261-0.487 0.864-0.672 1.354-0.412 4.914 2.62 6.827 8.673 6.979 13.465 0.018 0.552-0.415 1.014-0.968 1.031-0.012 1e-3 -0.022 1e-3 -0.033 1e-3z" fill="#4c312c"/><path d="m28.176 23.592c-1.68 0-3.261-0.655-4.45-1.845-0.391-0.39-0.391-1.023 0-1.414s1.023-0.391 1.414 0c0.812 0.812 1.891 1.259 3.036 1.259s2.224-0.447 3.035-1.259c0.391-0.391 1.023-0.391 1.414 0 0.391 0.39 0.391 1.023 0 1.414-1.189 1.19-2.769 1.845-4.449 1.845z" fill="#994530"/><path d="m27.305 13.04 0.609-4.086c0.643-4.315 4.031-7.703 8.346-8.346l4.085-0.608-0.609 4.086c-0.643 4.315-4.031 7.703-8.346 8.346z" fill="#659c35"/></g><g transform="matrix(.69882 .20205 -.20205 .69882 61.923 5.1612)"><path d="m47.156 32c1.416-0.995 2.344-2.638 2.344-4.5 0-2.138-1.223-3.987-3.005-4.897 1e-3 -0.035 5e-3 -0.068 5e-3 -0.103 0-2.578-1.776-4.735-4.169-5.331-0.596-2.393-2.753-4.169-5.331-4.169-2.437 0-4.5 1.586-5.222 3.782-0.947-1.66-2.73-2.782-4.778-2.782-1.862 0-3.505 0.928-4.5 2.344-0.995-1.416-2.638-2.344-4.5-2.344-2.17 0-4.041 1.26-4.936 3.085-2.591 0.445-4.564 2.697-4.564 5.415 0 0.55 0.083 1.081 0.234 1.582-1.353 1.002-2.234 2.605-2.234 4.418 0 1.839 0.906 3.463 2.292 4.461-0.805 0.957-1.292 2.191-1.292 3.539 0 2.744 2.012 5.013 4.641 5.426-0.408 0.768-0.641 1.644-0.641 2.574 0 2.578 1.776 4.735 4.169 5.331 0.596 2.393 2.753 4.169 5.331 4.169 1.159 0 2.232-0.36 3.119-0.972 0.915 1.764 2.756 2.972 4.881 2.972 1.947 0 3.654-1.015 4.632-2.542 0.718 0.344 1.519 0.542 2.368 0.542 2.877 0 5.234-2.21 5.476-5.024 2.814-0.242 5.024-2.599 5.024-5.476 0-0.682-0.13-1.331-0.356-1.934 1.972-0.836 3.356-2.789 3.356-5.066 0-1.862-0.928-3.505-2.344-4.5z" fill="#c62a6a"/><g fill="#659c35"><path d="m26.976 0s0.043 0.016 0.106 0.041c0.062-0.025 0.105-0.041 0.105-0.041z"/><path d="m13.605 16.221c1.002-1.342 2.591-2.221 4.395-2.221 1.862 0 3.505 0.928 4.5 2.344 0.995-1.416 2.638-2.344 4.5-2.344 2.048 0 3.831 1.122 4.778 2.782 0.722-2.196 2.785-3.782 5.222-3.782 1.929 0 3.621 0.995 4.601 2.498 2.324-1.724 4.05-3.905 4.899-6.498-9.925-3.375-13.016 1-13.016 1-0.601-7.394-5.641-9.658-6.402-9.959-0.763 0.301-5.802 2.565-6.403 9.959 0 0-3.091-4.375-13.016-1 0.972 2.969 3.087 5.402 5.942 7.221z"/></g><path d="m16.357 28.997c-1.243 0-2.535-0.461-3.593-1.61-0.374-0.406-0.348-1.039 0.059-1.413 0.406-0.375 1.039-0.348 1.413 0.059 1.206 1.309 2.798 1.089 3.796 0.502 0.992-0.584 1.954-1.864 1.396-3.548-0.174-0.524 0.111-1.09 0.635-1.263 0.525-0.173 1.09 0.111 1.263 0.635 0.872 2.635-0.517 4.862-2.281 5.9-0.775 0.456-1.716 0.738-2.688 0.738z" fill="#e53384"/><path d="m37.264 41.325c-1.243 0-2.535-0.461-3.593-1.61-0.374-0.406-0.348-1.039 0.059-1.413 0.407-0.375 1.039-0.348 1.413 0.059 1.206 1.309 2.799 1.088 3.796 0.502 0.992-0.584 1.954-1.864 1.396-3.548-0.174-0.524 0.111-1.09 0.635-1.263 0.524-0.175 1.09 0.111 1.263 0.635 0.872 2.635-0.517 4.862-2.281 5.9-0.775 0.456-1.716 0.738-2.688 0.738z" fill="#e53384"/><path d="m20.698 41.998c-0.227 0-0.45-0.014-0.669-0.042-2.037-0.259-4.198-1.762-4.436-4.534-0.047-0.55 0.36-1.035 0.911-1.082 0.549-0.048 1.035 0.36 1.082 0.911 0.152 1.774 1.547 2.574 2.696 2.721 1.142 0.141 2.686-0.279 3.276-1.952 0.183-0.521 0.756-0.796 1.275-0.61 0.521 0.184 0.794 0.754 0.61 1.275-0.823 2.336-2.872 3.313-4.745 3.313z" fill="#e53384"/><path d="m29.698 32.661c-0.227 0-0.45-0.014-0.669-0.042-2.036-0.26-4.197-1.762-4.435-4.534-0.047-0.55 0.36-1.035 0.911-1.082 0.548-0.047 1.035 0.36 1.082 0.911 0.152 1.774 1.547 2.574 2.696 2.72 1.142 0.147 2.686-0.278 3.276-1.952 0.183-0.521 0.756-0.796 1.275-0.61 0.521 0.184 0.794 0.754 0.61 1.275-0.824 2.337-2.873 3.314-4.746 3.314z" fill="#e53384"/><path d="m28.461 50.169c-1.303 0-2.657-0.5-3.722-1.751-0.358-0.42-0.308-1.052 0.113-1.41 0.419-0.358 1.052-0.308 1.41 0.113 1.155 1.356 2.755 1.195 3.774 0.648 1.014-0.545 2.024-1.787 1.532-3.492-0.153-0.531 0.153-1.085 0.684-1.238s1.085 0.153 1.238 0.684c0.77 2.667-0.704 4.839-2.507 5.808-0.74 0.397-1.619 0.638-2.522 0.638z" fill="#e53384"/><path d="m40.633 26.996c-0.958 0-1.886-0.274-2.653-0.72-1.776-1.03-3.184-3.254-2.326-5.9 0.169-0.525 0.736-0.813 1.259-0.643 0.525 0.17 0.813 0.734 0.643 1.259-0.549 1.694 0.426 2.973 1.427 3.554 0.996 0.579 2.583 0.788 3.777-0.526 0.372-0.407 1.003-0.439 1.413-0.067 0.409 0.372 0.438 1.004 0.067 1.413-1.058 1.163-2.357 1.63-3.607 1.63z" fill="#e53384"/></g><g transform="matrix(.7177 0 0 .7177 53.098 53.387)"><path d="m36.486 12.899-5.089-0.419 1.884-4.746c0.308-0.775 0.696-1.499 1.139-2.177-2.955-1.3-6.219-2.027-9.655-2.027-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24c0-6.059-2.25-11.59-5.954-15.813-1.922 0.926-4.092 1.366-6.325 1.182z" fill="#ed8f20"/><circle cx="38.537" cy="18.496" r="2" fill="#ef771d"/><circle cx="43.857" cy="29.651" r="2" fill="#ef771d"/><circle cx="43.537" cy="23.496" r="2" fill="#ef771d"/><circle cx="37.493" cy="27.529" r="2" fill="#ef771d"/><circle cx="38.537" cy="34.496" r="2" fill="#ef771d"/><circle cx="20.537" cy="10.496" r="2" fill="#ef771d"/><circle cx="13.537" cy="13.496" r="2" fill="#ef771d"/><path d="m27.765 11.529s4.25 0.7 5.4 3.6" fill="#ed8f20"/><path d="m33.165 16.13c-0.397 0-0.773-0.239-0.93-0.632-0.925-2.331-4.599-2.976-4.635-2.982-0.544-0.092-0.912-0.606-0.821-1.151 0.09-0.543 0.603-0.912 1.147-0.822 0.197 0.032 4.824 0.831 6.168 4.218 0.203 0.513-0.048 1.095-0.561 1.298-0.12 0.048-0.245 0.071-0.368 0.071z" fill="#9b6026"/><path d="m28.365 14.529c1.037-1.14 2.345-2.025 3.787-2.567" fill="#ed8f20"/><path d="m28.364 15.529c-0.24 0-0.481-0.086-0.673-0.26-0.408-0.372-0.438-1.004-0.066-1.413 1.142-1.255 2.585-2.233 4.176-2.831 0.517-0.192 1.093 0.067 1.288 0.584 0.193 0.517-0.068 1.094-0.585 1.288-1.295 0.486-2.471 1.283-3.4 2.304-0.198 0.218-0.468 0.328-0.74 0.328z" fill="#9b6026"/><path d="m50.765 0.46-5.089-0.419c-5.375-0.442-10.406 2.681-12.395 7.693l-1.884 4.746 5.089 0.419c5.374 0.442 10.406-2.681 12.395-7.693z" fill="#659c35"/><path d="m31.958 11.068-0.561 1.413 0.718 0.059c6.258-6.111 13.059-8.117 13.803-8.164l0.035-0.559 0.413 0.413 0.158-0.593-0.444-0.425c-0.598-0.132-7.583 1.797-14.122 7.856z" fill="#88c057"/></g><g transform="matrix(.73204 0 0 .73204 14.449 9.4493)"><circle cx="6" cy="49" r="6" fill="#9777a8"/><circle cx="10" cy="28" r="6" fill="#583e68"/><path d="m16 41c-2.578 0-4.769 1.628-5.618 3.91 1.001 1.072 1.618 2.507 1.618 4.09 0 0.736-0.139 1.438-0.382 2.09 1.096 1.172 2.651 1.91 4.382 1.91 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#583e68"/><path d="m10.382 44.91c0.594-1.596 1.853-2.858 3.434-3.481 0.112-0.459 0.184-0.935 0.184-1.429 0-3.314-2.686-6-6-6s-6 2.686-6 6c0 1.383 0.472 2.653 1.258 3.667 0.823-0.424 1.753-0.667 2.742-0.667 1.93 0 3.643 0.915 4.74 2.331-0.113-0.145-0.233-0.286-0.358-0.421z" fill="#6f58a8"/><path d="m26 38c-2.858 0-5.244 2-5.848 4.675 1.137 1.091 1.848 2.624 1.848 4.325 0 0.456-0.055 0.898-0.152 1.325 1.078 1.035 2.539 1.675 4.152 1.675 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#6f58a8"/><path d="m23.371 38.628c0.391-0.796 0.629-1.681 0.629-2.628 0-3.314-2.686-6-6-6-0.932 0-1.811 0.217-2.597 0.597-0.59 1.225-1.581 2.216-2.806 2.806-0.317 0.66-0.518 1.387-0.575 2.155 1.212 1.097 1.978 2.678 1.978 4.442 0 0.148-0.018 0.291-0.03 0.436 0.281 0.255 0.588 0.48 0.913 0.679 0.363-0.069 0.734-0.115 1.117-0.115 1.15 0 2.22 0.329 3.133 0.89 0.533-0.102 1.03-0.293 1.503-0.526 0.585-1.19 1.545-2.152 2.735-2.736z" fill="#9777a8"/><path d="m28 28c-0.774 0-1.506 0.162-2.184 0.429-0.418 1.701-1.551 3.119-3.074 3.904 0-1e-3 -1e-3 -1e-3 -1e-3 -1e-3 0.787 1.013 1.259 2.284 1.259 3.668 0 0.734-0.146 1.43-0.393 2.077 0.098 0.105 0.203 0.202 0.308 0.3 0.65-0.241 1.351-0.377 2.085-0.377 1.583 0 3.018 0.617 4.09 1.618 2.282-0.849 3.91-3.04 3.91-5.618 0-3.314-2.686-6-6-6z" fill="#583e68"/><path d="m36 34c-0.713 0-1.394 0.13-2.028 0.359-0.145 2.419-1.708 4.451-3.882 5.26-0.013-0.013-0.028-0.023-0.042-0.036 1.196 1.097 1.952 2.666 1.952 4.417 0 0.149-0.012 0.296-0.022 0.443 1.064 0.964 2.472 1.557 4.022 1.557 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#9777a8"/><path d="m38 24c-0.378 0-0.747 0.039-1.106 0.106-0.453 2.426-2.362 4.335-4.788 4.788-0.041 0.217-0.066 0.439-0.084 0.663 1.212 1.098 1.978 2.679 1.978 4.443 0 0.145-0.023 0.284-0.034 0.427 0.025-0.03 1.327-0.427 2.034-0.427 1.583 0 3.018 0.617 4.09 1.618 2.282-0.849 3.91-3.04 3.91-5.618 0-3.314-2.686-6-6-6z" fill="#583e68"/><path d="m25 11c-2.462 0-4.575 1.484-5.5 3.605 0.32 0.734 0.5 1.543 0.5 2.395s-0.18 1.661-0.5 2.395c0.264 0.606 0.635 1.152 1.074 1.634 1.522 0.145 2.874 0.861 3.85 1.928 0.191 0.018 0.38 0.043 0.576 0.043 0-3.314 2.686-6 6-6 0-3.314-2.686-6-6-6z" fill="#9777a8"/><path d="m14 11c-3.314 0-6 2.686-6 6 0 2.127 1.11 3.991 2.779 5.056 0.891 0.116 1.719 0.426 2.443 0.888 0.255 0.033 0.514 0.056 0.778 0.056 3.314 0 6-2.686 6-6s-2.686-6-6-6z" fill="#6f58a8"/><path d="m25.056 23.78c-3e-3 -4e-3 -5e-3 -9e-3 -7e-3 -0.013-1.067-1.663-2.927-2.767-5.049-2.767-0.63 0-1.234 0.105-1.804 0.285-0.661 0.648-1.471 1.144-2.375 1.432-0.456 0.446-0.85 0.955-1.147 1.526 0.828 1.029 1.326 2.334 1.326 3.757 0 0.947-0.229 1.838-0.62 2.635 7e-3 -0.013 0.016-0.025 0.022-0.038 0.787-0.38 1.666-0.597 2.598-0.597 1.931 0 3.644 0.916 4.742 2.333 1.933-0.996 3.258-3.008 3.258-5.333 0-0.266-0.024-0.525-0.058-0.781-0.461-0.723-0.77-1.55-0.886-2.439z" fill="#6f58a8"/><path d="m31 17c-3.314 0-6 2.686-6 6 0 2.098 1.079 3.942 2.711 5.015 0.096-5e-3 0.191-0.015 0.289-0.015 1.216 0 2.345 0.364 3.29 0.985 3.178-0.152 5.71-2.769 5.71-5.985 0-3.314-2.686-6-6-6z" fill="#6f58a8"/><path d="m56 26c-6.633 0-12-5.367-12-12 6.633 0 12 5.367 12 12z" fill="#88c057"/><path d="m34 19v-2c7.168 0 13-7.178 13-16h2c0 9.925-6.729 18-15 18z" fill="#7a3726"/></g></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="#f3ff6a"/><g transform="matrix(.087729 0 0 .087729 66.363 70.119)"><circle cx="59.3" cy="37.535" r="201.36" fill="#96b4eb"/><g transform="translate(-187.53 -262.78)" fill="#a1e8c3"><path d="m291.72 491.06c-38.457-61.079-106.32-49.768-119.9-61.079-19.833-16.528 14.48-48.787-9.048-64.472-33.933-22.622-96.142 14.704-96.142 14.704s12.025 60.483 81.169 96.438c69.142 35.956 143.92 14.409 143.92 14.409z"/><path d="m58.735 297.3c73.984-5.939 92.092-25.291 93.651-52.392s-65.284-46.809-65.284-46.809-25.955 2.9-34.252 39.776c-8.297 36.877 5.885 59.425 5.885 59.425z"/><path d="m432.69 344.48c-51.781 24.634-156.76 38.236-168.48-21.614-4.001-20.43 12.199-58.365 18.642-67.293 9.856-13.657 10.662-34.48-11.946-39.232-14.836-3.119-35.274-4.187-43.612-27.858-15.999-45.415 64.37-79.415 64.37-79.415s64.436-0.312 124.76 82.203c60.33 82.516 16.266 153.21 16.266 153.21z"/></g><path d="m257.3 74.325c2.202-11.927 3.364-24.22 3.364-36.785 0-111.21-90.154-201.36-201.36-201.36-6.141 0-12.212 0.291-18.213 0.828 84.113 8.365 149.8 79.334 149.8 165.65 0 38.934-13.369 74.744-35.762 103.1 36.573 0.978 71.205-12.515 102.17-31.425z" fill="#85adc2"/><path d="m-141.23 19.326c-0.538 6-0.829 12.073-0.829 18.213 0 29.104 6.184 56.76 17.295 81.741 6.59-4.266 13.641-7.775 21.008-10.406-20.583-24.806-34.106-55.681-37.474-89.548z" fill="#8286ea"/><path d="m45.83 181.05c-20.623-7.218-44.34-4.125-62.901-15.468-1.015-0.609-1.904-1.423-2.671-2.383-33.361-9.157-62.531-28.436-84.012-54.323-7.368 2.63-14.419 6.14-21.008 10.406 31.344 70.476 101.96 119.62 184.07 119.62 17.484 0 34.444-2.239 50.618-6.427-17.14-22.009-37.313-41.294-64.096-51.428z" fill="#85adc2"/><path d="m257.3 74.325c-30.967 18.91-65.599 32.403-102.17 31.424-30.488 38.603-77.707 63.381-130.72 63.381-15.292 0-30.097-2.071-44.163-5.932 0.767 0.961 1.657 1.775 2.671 2.383 18.561 11.343 42.278 8.249 62.901 15.468 26.784 10.134 46.957 29.42 64.095 51.427 75.082-19.442 133.16-81.106 147.38-158.15z" fill="#8286ea"/><path d="m59.303-174.14c-116.72 0-211.68 94.958-211.68 211.68s94.957 211.68 211.68 211.68 211.68-94.958 211.68-211.68-94.957-211.68-211.68-211.68zm191.05 211.68c0 13.052-1.319 25.8-3.825 38.124-1.31-0.3-2.725-0.181-4.03 0.441-39.591 18.834-103.26 28.614-137.09 11.57-12.534-6.314-20.159-16-22.663-28.786-3.565-18.201 11.556-54.127 17.587-62.483 7.417-10.278 9.702-22.662 5.965-32.319-2.313-5.977-7.948-13.707-21.656-16.589-1.688-0.355-3.445-0.684-5.249-1.022-13.555-2.536-27.572-5.158-33.8-22.837-13.203-37.478 53.167-68.204 60.326-71.389 82.889 20.862 144.44 96.019 144.44 185.29zm-352.53-96.29c24.023 7.097 61.787 24.373 60.859 40.519-1.187 20.62-12.665 40.535-87.97 46.58-0.812 0.065-1.572 0.288-2.258 0.63 1.441-32.501 11.038-62.915 26.794-89.244 0.698 0.687 1.57 1.218 2.575 1.515zm-10.791 178.86c14.611-7.775 59.52-29.077 84.789-12.231 7.684 5.123 6.826 11.984 3.038 26.42-3.174 12.097-7.125 27.153 5.482 37.658 5.228 4.357 14.1 5.799 26.378 7.795 25.028 4.068 62.158 10.124 87.967 45.548-11.47 2.157-23.294 3.298-35.381 3.298-75.793 0-141.42-44.365-172.27-108.49zm220.68 102.27c-28.854-43.407-72.639-50.552-99.012-54.839-8.757-1.423-17.812-2.895-20.442-5.087-6.245-5.204-4.613-12.895-1.434-25.011 3.425-13.054 7.688-29.301-8.143-39.856-30.581-20.386-79.519 2.089-96.665 11.155-8.589-21.311-13.436-44.511-13.737-68.79 0.877 0.474 1.865 0.761 2.917 0.761 0.166 0 0.333-7e-3 0.501-0.02 68.492-5.499 97.27-22.361 99.334-58.204 1.756-30.516-59.979-50.183-69.23-52.955 34.475-50.112 92.21-83.039 157.5-83.039 9.072 0 17.994 0.65 26.733 1.879-23.912 13.228-65.203 42.226-52.113 79.385 8.602 24.417 28.597 28.158 43.197 30.889 1.711 0.32 3.379 0.631 4.979 0.968 6.644 1.397 10.905 4.407 12.661 8.946 2.208 5.707 0.458 13.797-4.459 20.611-6.836 9.473-24.226 48.977-19.697 72.103 3.277 16.732 13.114 29.335 29.238 37.459 14.426 7.268 32.286 10.196 50.992 10.195 32.929-2e-3 68.46-9.08 92.371-19.54-18.314 64.883-70.124 115.86-135.49 132.99z" fill="#3c122c"/><path d="m-46.407-73.919c-2.702 0-5.4-1.055-7.424-3.154-3.953-4.1-3.835-10.627 0.265-14.58 25.473-24.564 52.643-33.806 53.787-34.187 5.402-1.799 11.242 1.119 13.043 6.522 1.799 5.398-1.113 11.231-6.506 13.038-0.502 0.172-24.176 8.418-46.009 29.472-2 1.929-4.58 2.889-7.156 2.889z" fill="#fff"/><g transform="translate(-187.53 -262.78)" fill="#3c122c"><path d="m364.9 239.82c-3.417 0-6.187-2.77-6.187-6.187v-11.684c0-3.417 2.77-6.187 6.187-6.187s6.187 2.77 6.187 6.187v11.684c0 3.417-2.77 6.187-6.187 6.187z"/><path d="m339.89 323.3c-3.417 0-6.187-2.77-6.187-6.187v-11.683c0-3.417 2.77-6.187 6.187-6.187s6.187 2.77 6.187 6.187v11.683c0 3.417-2.77 6.187-6.187 6.187z"/><path d="m385.34 298.6c-3.417 0-6.187-2.77-6.187-6.187v-11.684c0-3.417 2.77-6.187 6.187-6.187s6.187 2.77 6.187 6.187v11.684c0 3.417-2.77 6.187-6.187 6.187z"/></g></g><g transform="matrix(.094004 0 0 .094004 -2.0628 69.185)"><path d="m174.24 189.08c-4.632-4.632 9.196-27.538 5.551-32.718-30.603-43.476-26.464-103.94 12.417-142.82l56.463-56.463c43.512-43.512 93.27-22.723 136.78 20.789s64.302 93.27 20.789 136.78l-56.463 56.463c-38.559 38.559-98.347 42.948-141.74 13.169-5.575-3.824-28.847 9.754-33.8 4.8z" fill="#f6e06e"/><path d="m215.57-2.9688 147.69 147.69-51.721 51.721-147.69-147.69z" fill="#9781dd" stroke-width=".99985"/><path d="m274.56 158.9c-18.22-0.314-36.365-5.825-52.013-16.564-4.755-3.263-20.986-19.395-24.095-23.814-11.97-17.005-17.689-37.058-17.196-56.985-4.729-3.437-9.34-6.994-13.675-10.752-13.814 34.439-9.746 74.379 12.212 105.57 3.646 5.179-10.183 28.085-5.551 32.717 4.954 4.954 28.226-8.624 33.8-4.798 31.133 21.366 70.7 25.127 104.82 11.311-12.904-12.085-25.529-24.361-38.298-36.688z" fill="#dda86a"/><path d="m334.98 183.55c-7.707-10.413-13.905-22.103-16.998-34.259-13.648 6.673-28.561 9.871-43.424 9.615 12.769 12.327 25.395 24.603 38.299 36.69 7.705-3.121 15.134-7.132 22.123-12.046z" fill="#8962de"/><path d="m209.04-3.287-16.832 16.832c-10.983 10.983-19.19 23.69-24.629 37.249 4.334 3.757 8.946 7.314 13.675 10.752 0.582-23.527 9.832-46.878 27.786-64.833z" fill="#8962de"/><circle cx="413.16" cy="-49.837" r="80.734" fill="#f6e06e"/><path d="m470.25-106.93c-3.105-3.105-6.406-5.892-9.853-8.386 10.669 15.777 12.569 35.716 5.697 52.975-4.382 11.004-18.562 13.976-26.937 5.6l-64.219-64.219c-6.774 3.644-13.143 8.311-18.862 14.03-0.17 0.17-0.326 0.349-0.494 0.52l114.15 114.15c0.171-0.168 0.35-0.324 0.52-0.494 31.527-31.529 31.527-82.647-1e-3 -114.18z" fill="#dda86a"/><path d="m227.31 44.633c-45.95-2.386-81.511-36.836-79.429-76.947 2.083-40.111 41.021-70.693 86.971-68.307s146.81 60.585 145.78 80.393c-1.028 19.806-107.37 67.247-153.32 64.861z" fill="#c1e5ef"/><path d="m380.63-20.227c0.557-10.726-28.767-32.709-63.068-50.992 21.875 12.819 38.866 26.592 38.49 33.821-0.804 15.484-83.935 52.57-119.86 50.704-35.921-1.865-63.72-28.796-62.092-60.152 1.571-30.25 29.958-53.559 64.211-53.492-1.182-0.123-2.344-0.224-3.463-0.283-45.95-2.386-84.888 28.196-86.971 68.307s33.479 74.562 79.429 76.947c45.95 2.388 152.29-45.053 153.32-64.86z" fill="#a6aaed"/><path d="m318.54 136.02c2.273 45.956 36.635 81.602 76.751 79.618s70.794-40.847 68.521-86.802c-2.273-45.956-60.223-146.96-80.033-145.98-19.809 0.98-67.511 107.2-65.239 153.16z" fill="#c1e5ef"/><path d="m463.81 128.83c-2.273-45.956-60.223-146.96-80.033-145.98s-67.513 107.2-65.24 153.16 36.635 81.602 76.751 79.618c40.117-1.983 70.795-40.846 68.522-86.802zm-70.602 44.719c-32.864 1.625-61.014-27.577-62.876-65.224-1.862-37.648 37.217-124.67 53.445-125.47 16.228-0.803 63.702 81.938 65.564 119.58s-23.27 69.484-56.133 71.109z" fill="#a6aaed"/><path d="m411.94 47.133-95.746-95.746c-13.349-13.349-13.349-34.993 0-48.342s34.993-13.349 48.342 0l95.746 95.746c13.349 13.349 13.349 34.993 0 48.342-13.349 13.35-34.993 13.35-48.342 0z" fill="#faf1a9"/><path d="m460.28-1.207-14.429-14.429c8.579 8.579 8.579 22.488 0 31.067s-22.488 8.579-31.067 0l-89.954-89.954c-7.267-7.267-8.353-18.349-3.308-26.786-1.883 1.246-3.671 2.698-5.33 4.358-13.349 13.349-13.349 34.993 0 48.342l95.746 95.746c13.349 13.349 34.993 13.349 48.342 0 13.35-13.351 13.35-34.995 0-48.344z" fill="#dfb5a7"/><path d="m532.83-89.293c-2.388-5.459-8.748-7.946-14.207-5.56l-21.225 9.285c-4.454-10.538-10.946-20.413-19.52-28.987-8.575-8.574-18.449-15.066-28.987-19.519l9.286-21.225c2.388-5.458-0.101-11.819-5.559-14.206-5.462-2.39-11.819 0.101-14.207 5.559l-10.435 23.851c-27.183-4.424-55.974 3.413-77.394 23.511-3.313-0.766-6.734-1.172-10.219-1.172-12.012 0-23.305 4.677-31.799 13.171-3.755 3.755-6.699 8.017-8.846 12.565-22.428-10.179-46.361-18.443-64.31-19.375-24.822-1.299-48.68 5.993-67.159 20.506-18.913 14.855-29.974 35.458-31.145 58.014-1.171 22.557 7.696 44.195 24.969 60.928 1.044 1.011 2.112 1.996 3.201 2.956-23.1 39.651-22.362 89.792 4.109 129.26-0.534 2.257-1.831 5.976-2.676 8.399-2.04 5.848-4.117 11.809-4.196 17.184l-8.456 8.456c-4.213 4.213-4.212 11.044 1e-3 15.256 2.106 2.106 4.867 3.159 7.628 3.159s5.522-1.053 7.628-3.159l8.604-8.604c5.365-0.06 11.297-1.972 17.12-3.849 2.593-0.837 6.625-2.138 8.917-2.577 20.451 13.45 43.751 20.036 66.948 20.034 21.279-2e-3 42.462-5.557 61.259-16.434 15.415 17.539 36.732 28.37 59.956 28.37 1.228 0 2.468-0.031 3.706-0.093 45.993-2.273 81.326-46.285 78.763-98.109-0.891-18.027-9.159-42.111-19.342-64.646 4.586-2.151 8.882-5.113 12.664-8.895 11.373-11.373 15.36-27.372 11.979-41.997 20.114-21.423 27.958-50.223 23.533-77.415l23.85-10.434c5.459-2.389 7.948-8.75 5.561-14.207zm-374.18 57.537c0.843-16.242 8.985-31.216 22.925-42.165 13.272-10.424 30.246-16.045 48.213-16.045 1.493 0 2.995 0.039 4.5 0.117 14.305 0.743 36.673 8.01 61.203 19.603 0.544 9.702 4.21 19.255 10.993 27.019l-58.88 2.394c-3.572 0.145-6.35 3.158-6.204 6.731 0.142 3.482 3.009 6.209 6.462 6.209 0.089 0 0.178-2e-3 0.268-5e-3l70.648-2.872 27.022 27.021c-8.813 4.973-19.944 10.491-33.304 16.09-33.937 14.222-66.369 22.473-84.629 21.519-19.618-1.019-37.652-8.584-50.78-21.301-12.733-12.335-19.281-28.073-18.437-44.315zm150.82 217.06-131.46-131.46c1.483-3.565 3.177-7.06 5.083-10.465 13.11 7.057 28.015 11.221 43.662 12.033 1.288 0.067 2.606 0.1 3.961 0.1 8.99-1e-3 19.378-1.444 30.289-3.823l50.583 50.583c-2.774 12.563-4.303 24.435-3.816 34.286 0.775 15.663 4.928 30.271 11.61 42.973l-2.211 2.211c-2.522 1.304-5.091 2.488-7.696 3.567zm5.796-97.66-39.61-39.61c17.184-4.771 34.707-11.234 49.442-17.607 5.054-2.186 9.917-4.411 14.559-6.653-2.246 4.622-4.475 9.462-6.666 14.494-6.408 14.713-12.912 32.211-17.725 49.376zm-101.12 87.749c-2.704-1.855-5.704-2.568-8.919-2.568-5.169 0-10.89 1.846-16.813 3.757-0.552 0.178-1.167 0.376-1.816 0.583 0.17-0.491 0.333-0.958 0.482-1.385 3.479-9.973 6.484-18.585 1.533-25.618-17.435-24.769-22.253-54.959-15.194-82.6l122.31 122.31c-27.273 6.924-57.057 2.354-81.581-14.478zm180.61 29.473c-34.097 1.66-63.469-29.436-65.445-69.378-0.903-18.267 7.422-50.675 21.728-84.575 5.63-13.342 11.172-24.453 16.166-33.252l25.702 25.702-2.872 70.648c-0.145 3.572 2.633 6.585 6.204 6.731 0.09 3e-3 0.178 5e-3 0.267 5e-3 3.453 0 6.321-2.728 6.463-6.209l2.389-58.774c7.936 7.445 17.929 11.469 28.094 12.064 11.615 24.675 18.872 47.18 19.583 61.544 1.976 39.939-24.168 73.806-58.279 75.494zm57.895-165.36c-9.122 9.123-23.964 9.123-33.086 0l-95.745-95.745c-9.122-9.122-9.122-23.964 0-33.086 4.419-4.419 10.293-6.853 16.543-6.853s12.124 2.434 16.543 6.853l95.746 95.745c9.121 9.122 9.121 23.964-1e-3 33.086zm16.33-47.212c-0.354-0.379-0.704-0.76-1.074-1.13l-95.746-95.745c-0.363-0.363-0.739-0.71-1.112-1.059 12.415-9.388 27.253-14.11 42.113-14.11 17.909 0 35.825 6.819 49.459 20.454 24.949 24.949 27.06 64.204 6.36 91.59z" fill="#3c122c"/><path d="m202.25-50.174c-4.28 0-8.32-2.578-10.006-6.803-2.208-5.534 0.518-11.821 6.052-14.028 0.831-0.332 20.649-8.056 46.995-3.182 5.858 1.085 9.727 6.714 8.643 12.572-1.085 5.858-6.715 9.73-12.572 8.643-19.934-3.693-34.98 1.972-35.129 2.029-1.309 0.521-2.658 0.769-3.983 0.769z" fill="#fff"/><g transform="translate(51.633 -285.5)" fill="#3c122c"><path d="m229.49 409.61c-1.737 0-3.469-0.695-4.744-2.068-2.432-2.62-2.281-6.715 0.338-9.147l8.957-8.317c2.62-2.434 6.715-2.279 9.147 0.338 2.432 2.62 2.281 6.715-0.338 9.147l-8.957 8.317c-1.247 1.157-2.827 1.73-4.403 1.73z"/><path d="m193.94 391.67c-1.737 0-3.469-0.695-4.744-2.068-2.432-2.62-2.281-6.715 0.338-9.147l8.957-8.317c2.62-2.434 6.715-2.28 9.147 0.338 2.432 2.62 2.281 6.715-0.338 9.147l-8.957 8.317c-1.247 1.158-2.827 1.73-4.403 1.73z"/></g></g><g transform="matrix(.086984 0 0 .086984 2.4327 37.592)"><ellipse cx="321.34" cy="-218.52" rx="89.318" ry="88.158" fill="#9781dd"/><path d="m321.34-306.68c-3.942 0-7.815 0.279-11.622 0.768 28.093 4.193 50.513 25.458 56.035 52.754 1.119 5.53-3.995 10.361-9.465 8.977-9.939-2.514-27.654-4.666-56.746-1.389-45.484 5.123-63.156 33.904-66.782 15.89-0.468 3.658-0.737 7.376-0.737 11.159 0 48.689 39.989 88.158 89.318 88.158s89.318-39.47 89.318-88.158c-1e-3 -48.689-39.99-88.159-89.319-88.159z" fill="#8962de"/><ellipse cx="321.34" cy="-48.023" rx="172.19" ry="170.11" fill="#d789b9"/><g transform="translate(56.09 -379.16)" fill="#9781dd"><path d="m263.85 403.81s-13.949 44.252-73.111 80.326c0 0 24.05 17.316 72.63 17.797 48.581 0.481 69.263-14.911 69.263-14.911s-65.896-44.732-68.782-83.212z"/><circle cx="177.71" cy="284.15" r="29.263"/><circle transform="matrix(.227 -.974 .974 .227 -221 486.84)" cx="196.25" cy="382.66" r="26.336"/><circle cx="352.31" cy="284.15" r="29.263"/><circle transform="matrix(.389 -.921 .921 .389 -148.57 541.35)" cx="333.78" cy="382.66" r="26.336"/></g><path d="m298.01 62.657c-2.21 0.101-4.432 0.158-6.668 0.158-73.689 0-134.28-55.378-141.47-126.3-0.465 5.098-0.716 10.257-0.716 15.474 0 70.725 43.692 131.36 105.86 157.02 14.125-15.665 27.092-31.758 42.996-46.351z" fill="#c668b9"/><path d="m336.97 55.407c-12.318 4.121-25.389 6.629-38.961 7.248-15.904 14.593-28.871 30.686-42.996 46.35 20.416 8.427 42.821 13.088 66.331 13.088 23.887 0 46.637-4.808 67.315-13.493-18.258-16.908-37.094-33.118-51.689-53.193z" fill="#8962de"/><path d="m406.24 25.117c6.42-9.63 10.439-21.056 7.142-30.702-7.743 12.764-17.465 24.219-28.77 33.933 8.091 2.661 16.536 4.408 21.628-3.231z" fill="#8962de"/><path d="m321.34-218.13c-5.281 0-10.503 0.248-15.663 0.707 71.794 7.104 127.85 66.965 127.85 139.76 0 26.355-7.368 51-20.151 72.073 3.297 9.645-0.722 21.072-7.142 30.702-5.093 7.639-13.538 5.891-21.628 3.231-13.802 11.858-29.936 21.136-47.639 27.059 14.596 20.075 33.431 36.285 51.69 53.192 61.647-25.892 104.88-86.265 104.88-156.62-1e-3 -93.95-77.094-170.11-172.19-170.11z" fill="#c668b9"/><g transform="translate(56.09 -379.16)" fill="#3c122c"><path d="m177.71 319.86c-19.691 0-35.71-16.02-35.71-35.711s16.02-35.71 35.71-35.71c19.691 0 35.71 16.019 35.71 35.71s-16.02 35.711-35.71 35.711zm0-58.526c-12.58 0-22.815 10.234-22.815 22.815 0 12.58 10.235 22.815 22.815 22.815s22.815-10.235 22.815-22.815c-1e-3 -12.58-10.235-22.815-22.815-22.815z"/><path d="m196.25 415.45c-18.077 0-32.784-14.706-32.784-32.784s14.707-32.784 32.784-32.784 32.784 14.707 32.784 32.784-14.707 32.784-32.784 32.784zm0-52.673c-10.967 0-19.889 8.922-19.889 19.889 0 10.966 8.922 19.888 19.889 19.888 10.966 0 19.888-8.922 19.888-19.888 0-10.967-8.922-19.889-19.888-19.889z"/><path d="m352.31 319.86c-19.691 0-35.71-16.02-35.71-35.711s16.02-35.71 35.71-35.71 35.71 16.019 35.71 35.71-16.019 35.711-35.71 35.711zm0-58.526c-12.58 0-22.815 10.234-22.815 22.815 0 12.58 10.235 22.815 22.815 22.815s22.815-10.235 22.815-22.815-10.235-22.815-22.815-22.815z"/><path d="m333.78 415.45c-18.077 0-32.784-14.706-32.784-32.784s14.707-32.784 32.784-32.784 32.784 14.707 32.784 32.784-14.707 32.784-32.784 32.784zm0-52.673c-10.966 0-19.888 8.922-19.888 19.889 0 10.966 8.922 19.888 19.888 19.888 10.967 0 19.889-8.922 19.889-19.888 0-10.967-8.922-19.889-19.889-19.889z"/><path d="m478.72 320.4h-30.858c-1.338-22.459-6.83-43.83-15.743-63.365l29.446-17.001c5.139-2.967 6.901-9.54 3.933-14.679-2.967-5.14-9.541-6.902-14.679-3.933l-28.785 16.619c-14.596-23.931-34.632-44.269-58.41-59.32 1.103-5.865 1.696-11.905 1.696-18.08 0-33.087-16.526-62.43-41.845-80.393l12.475-26.614c2.519-5.374 0.205-11.772-5.169-14.291-5.372-2.519-11.772-0.204-14.291 5.169l-11.824 25.225c-12.101-5.145-25.423-8-39.409-8s-27.309 2.855-39.409 8l-11.824-25.225c-2.519-5.374-8.916-7.69-14.291-5.169-5.374 2.519-7.688 8.917-5.169 14.291l12.475 26.614c-25.319 17.964-41.846 47.306-41.846 80.393 0 6.176 0.591 12.217 1.694 18.081-23.777 15.051-43.813 35.388-58.408 59.319l-28.786-16.619c-5.14-2.967-11.711-1.207-14.679 3.933s-1.206 11.712 3.933 14.679l29.446 17.001c-8.912 19.535-14.405 40.906-15.743 63.365h-30.858c-5.935 0-10.746 4.811-10.746 10.746s4.811 10.746 10.746 10.746h30.858c1.338 22.459 6.831 43.83 15.743 63.365l-29.446 17c-5.139 2.967-6.901 9.54-3.933 14.679 1.99 3.448 5.602 5.375 9.316 5.375 1.823 0 3.671-0.464 5.363-1.441l28.785-16.619c32.043 52.538 90.327 87.751 156.78 87.751s124.74-35.213 156.78-87.752l28.785 16.619c1.693 0.977 3.54 1.441 5.363 1.441 3.714 0 7.326-1.927 9.316-5.375 2.968-5.139 1.206-11.712-3.933-14.679l-29.446-17c8.912-19.535 14.405-40.906 15.743-63.365h30.858c5.935 0 10.746-4.811 10.746-10.746-1e-3 -5.934-4.812-10.745-10.747-10.745zm-292.04-159.76c0-42.685 35.247-77.412 78.572-77.412s78.572 34.727 78.572 77.412c0 2.376-0.121 4.724-0.338 7.045-23.734-11.147-50.258-17.396-78.234-17.396-27.975 0-54.499 6.249-78.232 17.395-0.214-2.322-0.34-4.669-0.34-7.044zm-82.874 170.5c0-85.366 68.351-155.26 153.87-159.18v214.47c0 20.064-8.257 38.945-23.249 53.167l-37.74 35.797c-54.832-25.498-92.879-80.569-92.879-144.26zm105.92 149.65 33.568-31.84c9.138-8.667 16.195-19.109 20.85-30.451 4.655 11.341 11.713 21.783 20.85 30.451l34.163 32.403c-16.868 5.916-35.012 9.148-53.909 9.148-19.499 1e-3 -38.202-3.43-55.522-9.711zm122.61-4.713-38.462-36.482c-14.993-14.222-23.25-33.103-23.25-53.167 0-0.272-0.022-0.539-0.055-0.802v-213.76c86.57 2.78 156.13 73.152 156.13 159.27 0 64.26-38.735 119.75-94.363 144.94z"/></g><path d="m238.62-144.75c-3.236 0-6.434-1.454-8.549-4.224-3.598-4.713-2.703-11.447 2.007-15.051 0.924-0.707 22.923-17.394 46.961-23.118 5.775-1.378 11.568 2.191 12.943 7.965 1.375 5.773-2.191 11.568-7.964 12.943-19.514 4.646-38.698 19.14-38.889 19.286-1.947 1.482-4.238 2.199-6.509 2.199z" fill="#fff"/><path d="m357.06-168.68c-0.24 0-0.482-8e-3 -0.725-0.024l-7.259-0.484c-5.922-0.395-10.402-5.515-10.008-11.437 0.395-5.922 5.513-10.408 11.437-10.008l7.259 0.484c5.922 0.395 10.402 5.515 10.008 11.437-0.379 5.679-5.103 10.032-10.712 10.032z" fill="#fff"/></g><g transform="matrix(.081135 0 0 .081135 67.186 14.586)"><path d="m58.505 401.31c-11.803 0-21.37-9.568-21.37-21.37v-131.01h42.741v131.01c0 11.802-9.568 21.37-21.371 21.37z" fill="#a1e8c3"/><path d="m106.37-42.801c0 26.417-18.48 91.181-47.833 91.181-29.352 0-47.832-64.764-47.832-91.181s21.415-47.833 47.832-47.833c26.418 1e-3 47.833 21.416 47.833 47.833z" fill="#f6e06e"/><path d="m58.536-90.633c-2.002 0-3.971 0.137-5.909 0.376 17.794 2.536 31.477 17.829 31.477 36.324 0 20.269-14.179 69.961-36.7 69.961-20.605 0-34.224-41.59-36.394-64.191-0.197 1.762-0.307 3.549-0.307 5.363 0 26.417 18.48 91.181 47.833 91.181 29.352 0 47.833-64.764 47.833-91.181-1e-3 -26.418-21.416-47.833-47.833-47.833z" fill="#dda86a"/><path d="m193.02 32.218c-18.611 18.748-77.352 51.692-98.184 31.014-20.831-20.679 11.679-79.661 30.29-98.41s48.896-18.86 67.645-0.249c18.748 18.611 18.859 48.896 0.249 67.645z" fill="#f6e06e"/><path d="m192.77-35.427c-18.748-18.611-49.034-18.499-67.645 0.249-0.785 0.79-1.596 1.658-2.425 2.586 13.501-11.774 34.003-11.288 46.916 1.53 13.513 13.414 13.594 35.242 0.18 48.755s-55.752 37.258-70.766 22.353c-7.64-7.584-5.317-22.315 0.567-36.738-10.871 22.599-16.953 47.821-4.761 59.923 20.831 20.678 79.573-12.266 98.184-31.014 18.61-18.748 18.499-49.033-0.25-67.644z" fill="#dda86a"/><path d="m201.5 147.03c-26.417 0.097-91.248-18.144-91.356-47.496s64.587-48.071 91.004-48.168 47.911 21.239 48.009 47.656c0.096 26.416-21.24 47.911-47.657 48.008z" fill="#f6e06e"/><path d="m201.14 51.368c-26.417 0.098-91.112 18.816-91.004 48.168-0.082-22.156 48.753-36.285 68.693-36.359 19.941-0.073 36.165 16.032 36.239 35.973 0.073 19.941-16.032 36.165-35.973 36.238-19.629 0.072-67.355-13.269-68.92-34.819 1.602 28.746 65.212 46.56 91.317 46.464 26.417-0.097 47.753-21.592 47.656-48.009-0.096-26.417-21.591-47.753-48.008-47.656z" fill="#dda86a"/><path d="m126.3 234.21c-18.749-18.611-51.692-77.352-31.014-98.184 20.679-20.831 79.661 11.679 98.41 30.289 18.749 18.611 18.86 48.897 0.249 67.645-18.611 18.75-48.896 18.861-67.645 0.25z" fill="#f6e06e"/><path d="m193.7 166.32c-18.561-18.425-76.548-50.463-97.771-30.89 16.354-14.679 60.473 9.718 74.624 23.765 14.339 14.234 14.424 37.396 0.191 51.734s-37.396 14.424-51.734 0.19c-14.114-14.011-38.748-57.761-24.431-74.322-19.174 21.467 13.201 79.028 31.726 97.416 18.749 18.611 49.034 18.499 67.645-0.249 18.61-18.747 18.499-49.033-0.25-67.644z" fill="#dda86a"/><path d="m11.488 242.69c-0.097-26.417 18.144-91.248 47.496-91.356s48.071 64.587 48.168 91.004-21.239 47.911-47.656 48.009c-26.416 0.097-47.91-21.24-48.008-47.657z" fill="#f6e06e"/><path d="m58.985 151.33c-2.087 8e-3 -4.116 0.353-6.088 0.978 19.262 6.863 31.282 49.888 31.35 68.354 0.074 20.114-16.171 36.48-36.285 36.554-17.104 0.063-31.49-11.677-35.461-27.56-0.682 4.905-1.026 9.342-1.013 13.03 0.097 26.417 21.592 47.754 48.009 47.656 26.417-0.097 47.753-21.592 47.656-48.009-0.097-26.416-18.816-91.111-48.168-91.003z" fill="#dda86a"/><path d="m-75.691 167.49c18.611-18.748 77.352-51.692 98.184-31.014s-11.679 79.661-30.29 98.41-48.897 18.86-67.645 0.249-18.86-48.897-0.249-67.645z" fill="#f6e06e"/><path d="m22.493 136.48c-12.207-12.117-37.429-5.82-59.968 5.242 14.231-5.911 28.776-8.293 36.337-0.788 14.895 14.785-8.35 56.958-21.657 70.363s-34.961 13.485-48.366 0.178c-12.795-12.701-13.44-33.002-1.902-46.481-0.945 0.855-1.826 1.691-2.628 2.499-18.611 18.749-18.499 49.034 0.249 67.645 18.749 18.611 49.034 18.499 67.645-0.249s51.121-77.73 30.29-98.409z" fill="#dda86a"/><path d="m-84.166 52.679c26.417-0.097 91.248 18.144 91.357 47.496 0.108 29.352-64.587 48.071-91.004 48.168s-47.911-21.239-48.008-47.656c-0.099-26.417 21.238-47.911 47.655-48.008z" fill="#f6e06e"/><path d="m-8.973-34.5c18.749 18.611 51.692 77.352 31.014 98.184-20.679 20.831-79.661-11.679-98.41-30.29-18.748-18.611-18.86-48.897-0.249-67.645 18.611-18.749 48.897-18.86 67.645-0.249z" fill="#f6e06e"/><circle transform="rotate(-45)" cx="-29.763" cy="112.47" r="91.689" fill="#a07575" stroke-width=".99985"/><path d="m58.536 8.8701c-3.502 0-6.956 0.203-10.356 0.585 35.643 4.461 63.226 34.85 63.226 71.702 0 39.923-32.364 72.287-72.287 72.287-36.852 0-67.241-27.583-71.702-63.226-0.382 3.4-0.585 6.854-0.585 10.356 0 50.646 41.057 91.703 91.703 91.703s91.703-41.057 91.703-91.703c1e-3 -50.647-41.056-91.704-91.702-91.704z" fill="#925873"/><path d="m5.735 83.351c3.985-12.078 12.078-22.67 22.783-29.561" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="20"/><path d="m119.49 295.8c-35.982 12.216-34.937 58.181-34.937 58.181s27.156 37.099 63.138 24.883c30.157-10.239 56.943-51.87 64.825-65.08 1.324-2.219 0.424-4.871-1.978-5.826-14.295-5.68-60.89-22.397-91.048-12.158z" fill="#a1e8c3"/><path d="m210.53 307.96c-14.296-5.68-60.892-22.397-91.049-12.159-2.427 0.824-4.68 1.806-6.782 2.913 21.637-3.596 50.313 6.725 59.732 10.467 1.748 0.695 2.404 2.625 1.44 4.241-5.738 9.617-25.239 39.926-47.195 47.38-19.05 6.468-34.693-6.046-41.815-13.357-0.374 4.016-0.317 6.537-0.317 6.537s27.156 37.099 63.138 24.883c30.157-10.239 56.943-51.87 64.825-65.08 1.325-2.218 0.425-4.871-1.977-5.825z" fill="#85adc2"/><g transform="translate(-205.33 -100.66)" fill="#3c122c"><path d="m121.17 153.34h0.01z"/><path d="m406.87 257.72c31.902-0.117 57.762-26.168 57.644-58.071-0.057-15.454-6.129-29.962-17.096-40.849-10.968-10.888-25.522-16.847-40.975-16.796-1.03 4e-3 -2.096 0.033-3.192 0.083 0.777-0.722 1.518-1.437 2.22-2.145 22.476-22.642 22.341-59.347-0.301-81.823s-59.349-22.34-81.823 0.302c-0.551 0.555-1.108 1.141-1.668 1.743 0.024-0.779 0.048-1.559 0.048-2.302 2e-3 -31.904-25.952-57.859-57.855-57.859s-57.858 25.955-57.858 57.858c0 1.283 0.049 2.638 0.12 4.022-0.912-1.001-1.816-1.953-2.707-2.837-10.917-10.836-25.382-16.796-40.755-16.796h-0.219c-15.454 0.057-29.961 6.128-40.849 17.097-10.888 10.968-16.852 25.519-16.795 40.974s6.128 29.962 17.097 40.85c0.732 0.726 1.507 1.462 2.318 2.202-0.969-0.036-1.92-0.059-2.836-0.059-0.085 0-0.17 1e-3 -0.253 1e-3 -15.455 0.057-29.962 6.128-40.849 17.097-10.888 10.968-16.852 25.52-16.796 40.974 0.057 15.454 6.129 29.962 17.097 40.849 10.917 10.836 25.382 16.796 40.755 16.796h0.22c1.029-4e-3 2.096-0.033 3.191-0.083-0.777 0.721-1.518 1.437-2.22 2.145-22.476 22.642-22.34 59.348 0.302 81.823 11.267 11.184 26.013 16.769 40.759 16.769 14.887 0 29.773-5.696 41.065-17.07 0.725-0.73 1.458-1.504 2.198-2.314-0.039 1.059-0.057 2.088-0.054 3.085 0.057 15.454 6.129 29.962 17.097 40.849 2.652 2.633 5.517 4.972 8.551 7.014v89.358c0 17.312 14.084 31.396 31.396 31.396s31.396-14.084 31.396-31.396v-6.032c9.941 8.422 24.839 17.504 42.902 17.504 5.735 0 11.791-0.916 18.104-3.06 32.578-11.06 59.955-52.243 70.211-69.435 2.139-3.584 2.611-7.866 1.293-11.747-1.317-3.881-4.297-6.992-8.178-8.534-18.603-7.393-65.394-23.395-97.973-12.335-11.811 4.01-20.281 10.876-26.359 18.745v-13.453c16.426-10.271 27.353-28.543 27.277-49.301-4e-3 -1.029-0.033-2.096-0.083-3.191 0.721 0.777 1.437 1.518 2.145 2.221 10.917 10.836 25.381 16.796 40.754 16.796h0.219c15.454-0.057 29.962-6.128 40.849-17.097 10.888-10.968 16.853-25.52 16.796-40.974s-6.129-29.962-17.097-40.849c-0.732-0.727-1.507-1.462-2.318-2.202 0.969 0.036 1.92 0.059 2.837 0.059 0.079-1e-3 0.164-2e-3 0.248-2e-3zm-78.827 148.24c19.711-6.692 51.738 0.099 77.438 9.441-14.7 23.057-35.974 47.945-55.683 54.636-22.546 7.656-41.309-9.407-48.595-17.449 0.68 0.26 1.402 0.413 2.142 0.413 0.725 0 1.462-0.132 2.177-0.41l39.092-15.183c3.097-1.203 4.633-4.688 3.43-7.785-1.202-3.097-4.694-4.632-7.785-3.429l-39.041 15.164c2.343-12.176 8.843-29.292 26.825-35.398zm78.475-243.9h0.143c10.045 0 19.498 3.895 26.631 10.975 7.167 7.114 11.134 16.594 11.171 26.693 0.076 20.847-16.821 37.869-37.667 37.946-0.06 1e-3 -0.117 1e-3 -0.177 1e-3 -10.15-1e-3 -27.887-3.169-44.703-9.285 2.397-8.647 3.684-17.75 3.684-27.15 0-10.218-1.521-20.086-4.336-29.397 17-6.385 35.045-9.746 45.254-9.783zm-224.32 39.179c0-45.037 36.641-81.678 81.678-81.678 17.515 0 33.745 5.56 47.059 14.981l-29.834 29.834-6.582-6.582c-2.348-2.349-6.158-2.349-8.506 0-2.35 2.349-2.35 6.158 0 8.507l6.581 6.581-75.415 75.414c-9.422-13.312-14.981-29.542-14.981-47.057zm163.36 0c0 8.346-1.264 16.4-3.6 23.989l-15.602-15.602 18.548-18.548c0.415 3.332 0.654 6.718 0.654 10.161zm-27.709-0.12-28.236-28.236 30.653-30.652c9.918 9.481 17.473 21.413 21.639 34.833zm-36.743-19.729 28.236 28.236-33.889 33.888-15.531-15.531c-2.35-2.349-6.158-2.349-8.507 0s-2.349 6.158 0 8.507l15.532 15.531-27.242 27.242c-13.419-4.166-25.352-11.721-34.833-21.639zm-5.652 79.138 17.158 17.158c-8.943 3.372-18.622 5.232-28.731 5.232-3.443 0-6.829-0.239-10.161-0.655zm28.725 11.712-20.218-20.219 33.888-33.889 19.25 19.251c-7.256 14.639-18.773 26.795-32.92 34.857zm33.409-199.69c7.379-7.434 17.104-11.154 26.833-11.154 9.635 0 19.273 3.65 26.634 10.957 14.795 14.686 14.883 38.672 0.197 53.467-7.204 7.257-22.301 17.775-38.812 25.406-9.404-16.587-23.328-30.289-40.092-39.411 7.518-16.671 17.998-31.969 25.24-39.265zm-73.707-52.493c20.847 0 37.807 16.96 37.807 37.807 0 10.268-3.332 28.478-9.726 45.589-8.923-2.566-18.344-3.944-28.081-3.944s-19.158 1.378-28.081 3.944c-6.395-17.111-9.727-35.321-9.727-45.589 0-20.847 16.96-37.807 37.808-37.807zm-128.04 53.42c7.114-7.167 16.594-11.135 26.692-11.172h0.143c10.045 0 19.498 3.895 26.631 10.975 7.27 7.217 17.813 22.355 25.448 38.902-16.727 9.263-30.581 23.101-39.866 39.814-16.51-7.504-31.615-17.87-38.851-25.053-7.167-7.114-11.135-16.594-11.171-26.692-0.039-10.099 3.859-19.607 10.974-26.774zm-14.349 165.51c-0.048 1e-3 -0.093 1e-3 -0.141 1e-3 -20.78 0-37.728-16.87-37.804-37.668-0.037-10.098 3.86-19.607 10.975-26.774 7.114-7.167 16.594-11.134 26.693-11.172h0.179c10.177 0 27.981 3.186 44.837 9.335-2.651 9.057-4.079 18.632-4.079 28.534 0 9.779 1.391 19.239 3.978 28.195-16.82 6.234-34.553 9.512-44.638 9.549zm68.939 89.509c-14.686 14.795-38.671 14.884-53.467 0.197-14.795-14.686-14.884-38.672-0.197-53.467 7.081-7.133 21.787-17.42 37.968-25.016 9.349 16.952 23.39 30.967 40.364 40.281-7.47 16.178-17.608 30.893-24.668 38.005zm84.763 152.12c0 6.256-5.089 11.345-11.345 11.345s-11.345-5.089-11.345-11.345v-80.862c3.952 0.841 8.017 1.286 12.153 1.286h0.22c3.524-0.013 6.968-0.36 10.317-0.979zm-10.392-99.627c-0.048 1e-3 -0.095 1e-3 -0.143 1e-3 -10.045-1e-3 -19.498-3.895-26.631-10.975-7.167-7.114-11.134-16.594-11.172-26.693-0.037-9.995 3.055-27.528 9.059-44.257 8.888 2.545 18.269 3.909 27.963 3.909 10.129 0 19.914-1.495 29.154-4.264 6.162 16.728 9.401 34.31 9.438 44.334 0.077 20.846-16.821 37.868-37.668 37.945zm127.38-53.418c-7.115 7.167-16.595 11.134-26.693 11.172h-0.144c-10.044 0-19.498-3.895-26.63-10.975-7.12-7.068-17.382-21.733-24.974-37.879 16.81-9.492 30.665-23.623 39.814-40.647 16.346 7.488 31.256 17.741 38.429 24.862 7.168 7.114 11.135 16.594 11.172 26.693 0.037 10.098-3.86 19.607-10.974 26.774z"/></g></g></svg>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#f3ff6a" stroke="#000" stroke-width="2"/><g transform="matrix(.087729 0 0 .087729 67.363 71.119)"><circle cx="59.3" cy="37.535" r="201.36" fill="#96b4eb"/><g transform="translate(-187.53,-262.78)" fill="#a1e8c3"><path d="m291.72 491.06c-38.457-61.079-106.32-49.768-119.9-61.079-19.833-16.528 14.48-48.787-9.048-64.472-33.933-22.622-96.142 14.704-96.142 14.704s12.025 60.483 81.169 96.438c69.142 35.956 143.92 14.409 143.92 14.409z"/><path d="m58.735 297.3c73.984-5.939 92.092-25.291 93.651-52.392s-65.284-46.809-65.284-46.809-25.955 2.9-34.252 39.776c-8.297 36.877 5.885 59.425 5.885 59.425z"/><path d="m432.69 344.48c-51.781 24.634-156.76 38.236-168.48-21.614-4.001-20.43 12.199-58.365 18.642-67.293 9.856-13.657 10.662-34.48-11.946-39.232-14.836-3.119-35.274-4.187-43.612-27.858-15.999-45.415 64.37-79.415 64.37-79.415s64.436-0.312 124.76 82.203c60.33 82.516 16.266 153.21 16.266 153.21z"/></g><path d="m257.3 74.325c2.202-11.927 3.364-24.22 3.364-36.785 0-111.21-90.154-201.36-201.36-201.36-6.141 0-12.212 0.291-18.213 0.828 84.113 8.365 149.8 79.334 149.8 165.65 0 38.934-13.369 74.744-35.762 103.1 36.573 0.978 71.205-12.515 102.17-31.425z" fill="#85adc2"/><path d="m-141.23 19.326c-0.538 6-0.829 12.073-0.829 18.213 0 29.104 6.184 56.76 17.295 81.741 6.59-4.266 13.641-7.775 21.008-10.406-20.583-24.806-34.106-55.681-37.474-89.548z" fill="#8286ea"/><path d="m45.83 181.05c-20.623-7.218-44.34-4.125-62.901-15.468-1.015-0.609-1.904-1.423-2.671-2.383-33.361-9.157-62.531-28.436-84.012-54.323-7.368 2.63-14.419 6.14-21.008 10.406 31.344 70.476 101.96 119.62 184.07 119.62 17.484 0 34.444-2.239 50.618-6.427-17.14-22.009-37.313-41.294-64.096-51.428z" fill="#85adc2"/><path d="m257.3 74.325c-30.967 18.91-65.599 32.403-102.17 31.424-30.488 38.603-77.707 63.381-130.72 63.381-15.292 0-30.097-2.071-44.163-5.932 0.767 0.961 1.657 1.775 2.671 2.383 18.561 11.343 42.278 8.249 62.901 15.468 26.784 10.134 46.957 29.42 64.095 51.427 75.082-19.442 133.16-81.106 147.38-158.15z" fill="#8286ea"/><path d="m59.303-174.14c-116.72 0-211.68 94.958-211.68 211.68s94.957 211.68 211.68 211.68 211.68-94.958 211.68-211.68-94.957-211.68-211.68-211.68zm191.05 211.68c0 13.052-1.319 25.8-3.825 38.124-1.31-0.3-2.725-0.181-4.03 0.441-39.591 18.834-103.26 28.614-137.09 11.57-12.534-6.314-20.159-16-22.663-28.786-3.565-18.201 11.556-54.127 17.587-62.483 7.417-10.278 9.702-22.662 5.965-32.319-2.313-5.977-7.948-13.707-21.656-16.589-1.688-0.355-3.445-0.684-5.249-1.022-13.555-2.536-27.572-5.158-33.8-22.837-13.203-37.478 53.167-68.204 60.326-71.389 82.889 20.862 144.44 96.019 144.44 185.29zm-352.53-96.29c24.023 7.097 61.787 24.373 60.859 40.519-1.187 20.62-12.665 40.535-87.97 46.58-0.812 0.065-1.572 0.288-2.258 0.63 1.441-32.501 11.038-62.915 26.794-89.244 0.698 0.687 1.57 1.218 2.575 1.515zm-10.791 178.86c14.611-7.775 59.52-29.077 84.789-12.231 7.684 5.123 6.826 11.984 3.038 26.42-3.174 12.097-7.125 27.153 5.482 37.658 5.228 4.357 14.1 5.799 26.378 7.795 25.028 4.068 62.158 10.124 87.967 45.548-11.47 2.157-23.294 3.298-35.381 3.298-75.793 0-141.42-44.365-172.27-108.49zm220.68 102.27c-28.854-43.407-72.639-50.552-99.012-54.839-8.757-1.423-17.812-2.895-20.442-5.087-6.245-5.204-4.613-12.895-1.434-25.011 3.425-13.054 7.688-29.301-8.143-39.856-30.581-20.386-79.519 2.089-96.665 11.155-8.589-21.311-13.436-44.511-13.737-68.79 0.877 0.474 1.865 0.761 2.917 0.761 0.166 0 0.333-7e-3 0.501-0.02 68.492-5.499 97.27-22.361 99.334-58.204 1.756-30.516-59.979-50.183-69.23-52.955 34.475-50.112 92.21-83.039 157.5-83.039 9.072 0 17.994 0.65 26.733 1.879-23.912 13.228-65.203 42.226-52.113 79.385 8.602 24.417 28.597 28.158 43.197 30.889 1.711 0.32 3.379 0.631 4.979 0.968 6.644 1.397 10.905 4.407 12.661 8.946 2.208 5.707 0.458 13.797-4.459 20.611-6.836 9.473-24.226 48.977-19.697 72.103 3.277 16.732 13.114 29.335 29.238 37.459 14.426 7.268 32.286 10.196 50.992 10.195 32.929-2e-3 68.46-9.08 92.371-19.54-18.314 64.883-70.124 115.86-135.49 132.99z" fill="#3c122c"/><path d="m-46.407-73.919c-2.702 0-5.4-1.055-7.424-3.154-3.953-4.1-3.835-10.627 0.265-14.58 25.473-24.564 52.643-33.806 53.787-34.187 5.402-1.799 11.242 1.119 13.043 6.522 1.799 5.398-1.113 11.231-6.506 13.038-0.502 0.172-24.176 8.418-46.009 29.472-2 1.929-4.58 2.889-7.156 2.889z" fill="#fff"/><g transform="translate(-187.53,-262.78)" fill="#3c122c"><path d="m364.9 239.82c-3.417 0-6.187-2.77-6.187-6.187v-11.684c0-3.417 2.77-6.187 6.187-6.187s6.187 2.77 6.187 6.187v11.684c0 3.417-2.77 6.187-6.187 6.187z"/><path d="m339.89 323.3c-3.417 0-6.187-2.77-6.187-6.187v-11.683c0-3.417 2.77-6.187 6.187-6.187s6.187 2.77 6.187 6.187v11.683c0 3.417-2.77 6.187-6.187 6.187z"/><path d="m385.34 298.6c-3.417 0-6.187-2.77-6.187-6.187v-11.684c0-3.417 2.77-6.187 6.187-6.187s6.187 2.77 6.187 6.187v11.684c0 3.417-2.77 6.187-6.187 6.187z"/></g></g><g transform="matrix(.094004 0 0 .094004 -1.0628 70.185)"><path d="m174.24 189.08c-4.632-4.632 9.196-27.538 5.551-32.718-30.603-43.476-26.464-103.94 12.417-142.82l56.463-56.463c43.512-43.512 93.27-22.723 136.78 20.789s64.302 93.27 20.789 136.78l-56.463 56.463c-38.559 38.559-98.347 42.948-141.74 13.169-5.575-3.824-28.847 9.754-33.8 4.8z" fill="#f6e06e"/><path d="m215.57-2.9688 147.69 147.69-51.721 51.721-147.69-147.69z" fill="#9781dd" stroke-width=".99985"/><path d="m274.56 158.9c-18.22-0.314-36.365-5.825-52.013-16.564-4.755-3.263-20.986-19.395-24.095-23.814-11.97-17.005-17.689-37.058-17.196-56.985-4.729-3.437-9.34-6.994-13.675-10.752-13.814 34.439-9.746 74.379 12.212 105.57 3.646 5.179-10.183 28.085-5.551 32.717 4.954 4.954 28.226-8.624 33.8-4.798 31.133 21.366 70.7 25.127 104.82 11.311-12.904-12.085-25.529-24.361-38.298-36.688z" fill="#dda86a"/><path d="m334.98 183.55c-7.707-10.413-13.905-22.103-16.998-34.259-13.648 6.673-28.561 9.871-43.424 9.615 12.769 12.327 25.395 24.603 38.299 36.69 7.705-3.121 15.134-7.132 22.123-12.046z" fill="#8962de"/><path d="m209.04-3.287-16.832 16.832c-10.983 10.983-19.19 23.69-24.629 37.249 4.334 3.757 8.946 7.314 13.675 10.752 0.582-23.527 9.832-46.878 27.786-64.833z" fill="#8962de"/><circle cx="413.16" cy="-49.837" r="80.734" fill="#f6e06e"/><path d="m470.25-106.93c-3.105-3.105-6.406-5.892-9.853-8.386 10.669 15.777 12.569 35.716 5.697 52.975-4.382 11.004-18.562 13.976-26.937 5.6l-64.219-64.219c-6.774 3.644-13.143 8.311-18.862 14.03-0.17 0.17-0.326 0.349-0.494 0.52l114.15 114.15c0.171-0.168 0.35-0.324 0.52-0.494 31.527-31.529 31.527-82.647-1e-3 -114.18z" fill="#dda86a"/><path d="m227.31 44.633c-45.95-2.386-81.511-36.836-79.429-76.947 2.083-40.111 41.021-70.693 86.971-68.307s146.81 60.585 145.78 80.393c-1.028 19.806-107.37 67.247-153.32 64.861z" fill="#c1e5ef"/><path d="m380.63-20.227c0.557-10.726-28.767-32.709-63.068-50.992 21.875 12.819 38.866 26.592 38.49 33.821-0.804 15.484-83.935 52.57-119.86 50.704-35.921-1.865-63.72-28.796-62.092-60.152 1.571-30.25 29.958-53.559 64.211-53.492-1.182-0.123-2.344-0.224-3.463-0.283-45.95-2.386-84.888 28.196-86.971 68.307s33.479 74.562 79.429 76.947c45.95 2.388 152.29-45.053 153.32-64.86z" fill="#a6aaed"/><path d="m318.54 136.02c2.273 45.956 36.635 81.602 76.751 79.618s70.794-40.847 68.521-86.802c-2.273-45.956-60.223-146.96-80.033-145.98-19.809 0.98-67.511 107.2-65.239 153.16z" fill="#c1e5ef"/><path d="m463.81 128.83c-2.273-45.956-60.223-146.96-80.033-145.98s-67.513 107.2-65.24 153.16 36.635 81.602 76.751 79.618c40.117-1.983 70.795-40.846 68.522-86.802zm-70.602 44.719c-32.864 1.625-61.014-27.577-62.876-65.224-1.862-37.648 37.217-124.67 53.445-125.47 16.228-0.803 63.702 81.938 65.564 119.58s-23.27 69.484-56.133 71.109z" fill="#a6aaed"/><path d="m411.94 47.133-95.746-95.746c-13.349-13.349-13.349-34.993 0-48.342s34.993-13.349 48.342 0l95.746 95.746c13.349 13.349 13.349 34.993 0 48.342-13.349 13.35-34.993 13.35-48.342 0z" fill="#faf1a9"/><path d="m460.28-1.207-14.429-14.429c8.579 8.579 8.579 22.488 0 31.067s-22.488 8.579-31.067 0l-89.954-89.954c-7.267-7.267-8.353-18.349-3.308-26.786-1.883 1.246-3.671 2.698-5.33 4.358-13.349 13.349-13.349 34.993 0 48.342l95.746 95.746c13.349 13.349 34.993 13.349 48.342 0 13.35-13.351 13.35-34.995 0-48.344z" fill="#dfb5a7"/><path d="m532.83-89.293c-2.388-5.459-8.748-7.946-14.207-5.56l-21.225 9.285c-4.454-10.538-10.946-20.413-19.52-28.987-8.575-8.574-18.449-15.066-28.987-19.519l9.286-21.225c2.388-5.458-0.101-11.819-5.559-14.206-5.462-2.39-11.819 0.101-14.207 5.559l-10.435 23.851c-27.183-4.424-55.974 3.413-77.394 23.511-3.313-0.766-6.734-1.172-10.219-1.172-12.012 0-23.305 4.677-31.799 13.171-3.755 3.755-6.699 8.017-8.846 12.565-22.428-10.179-46.361-18.443-64.31-19.375-24.822-1.299-48.68 5.993-67.159 20.506-18.913 14.855-29.974 35.458-31.145 58.014-1.171 22.557 7.696 44.195 24.969 60.928 1.044 1.011 2.112 1.996 3.201 2.956-23.1 39.651-22.362 89.792 4.109 129.26-0.534 2.257-1.831 5.976-2.676 8.399-2.04 5.848-4.117 11.809-4.196 17.184l-8.456 8.456c-4.213 4.213-4.212 11.044 1e-3 15.256 2.106 2.106 4.867 3.159 7.628 3.159s5.522-1.053 7.628-3.159l8.604-8.604c5.365-0.06 11.297-1.972 17.12-3.849 2.593-0.837 6.625-2.138 8.917-2.577 20.451 13.45 43.751 20.036 66.948 20.034 21.279-2e-3 42.462-5.557 61.259-16.434 15.415 17.539 36.732 28.37 59.956 28.37 1.228 0 2.468-0.031 3.706-0.093 45.993-2.273 81.326-46.285 78.763-98.109-0.891-18.027-9.159-42.111-19.342-64.646 4.586-2.151 8.882-5.113 12.664-8.895 11.373-11.373 15.36-27.372 11.979-41.997 20.114-21.423 27.958-50.223 23.533-77.415l23.85-10.434c5.459-2.389 7.948-8.75 5.561-14.207zm-374.18 57.537c0.843-16.242 8.985-31.216 22.925-42.165 13.272-10.424 30.246-16.045 48.213-16.045 1.493 0 2.995 0.039 4.5 0.117 14.305 0.743 36.673 8.01 61.203 19.603 0.544 9.702 4.21 19.255 10.993 27.019l-58.88 2.394c-3.572 0.145-6.35 3.158-6.204 6.731 0.142 3.482 3.009 6.209 6.462 6.209 0.089 0 0.178-2e-3 0.268-5e-3l70.648-2.872 27.022 27.021c-8.813 4.973-19.944 10.491-33.304 16.09-33.937 14.222-66.369 22.473-84.629 21.519-19.618-1.019-37.652-8.584-50.78-21.301-12.733-12.335-19.281-28.073-18.437-44.315zm150.82 217.06-131.46-131.46c1.483-3.565 3.177-7.06 5.083-10.465 13.11 7.057 28.015 11.221 43.662 12.033 1.288 0.067 2.606 0.1 3.961 0.1 8.99-1e-3 19.378-1.444 30.289-3.823l50.583 50.583c-2.774 12.563-4.303 24.435-3.816 34.286 0.775 15.663 4.928 30.271 11.61 42.973l-2.211 2.211c-2.522 1.304-5.091 2.488-7.696 3.567zm5.796-97.66-39.61-39.61c17.184-4.771 34.707-11.234 49.442-17.607 5.054-2.186 9.917-4.411 14.559-6.653-2.246 4.622-4.475 9.462-6.666 14.494-6.408 14.713-12.912 32.211-17.725 49.376zm-101.12 87.749c-2.704-1.855-5.704-2.568-8.919-2.568-5.169 0-10.89 1.846-16.813 3.757-0.552 0.178-1.167 0.376-1.816 0.583 0.17-0.491 0.333-0.958 0.482-1.385 3.479-9.973 6.484-18.585 1.533-25.618-17.435-24.769-22.253-54.959-15.194-82.6l122.31 122.31c-27.273 6.924-57.057 2.354-81.581-14.478zm180.61 29.473c-34.097 1.66-63.469-29.436-65.445-69.378-0.903-18.267 7.422-50.675 21.728-84.575 5.63-13.342 11.172-24.453 16.166-33.252l25.702 25.702-2.872 70.648c-0.145 3.572 2.633 6.585 6.204 6.731 0.09 3e-3 0.178 5e-3 0.267 5e-3 3.453 0 6.321-2.728 6.463-6.209l2.389-58.774c7.936 7.445 17.929 11.469 28.094 12.064 11.615 24.675 18.872 47.18 19.583 61.544 1.976 39.939-24.168 73.806-58.279 75.494zm57.895-165.36c-9.122 9.123-23.964 9.123-33.086 0l-95.745-95.745c-9.122-9.122-9.122-23.964 0-33.086 4.419-4.419 10.293-6.853 16.543-6.853s12.124 2.434 16.543 6.853l95.746 95.745c9.121 9.122 9.121 23.964-1e-3 33.086zm16.33-47.212c-0.354-0.379-0.704-0.76-1.074-1.13l-95.746-95.745c-0.363-0.363-0.739-0.71-1.112-1.059 12.415-9.388 27.253-14.11 42.113-14.11 17.909 0 35.825 6.819 49.459 20.454 24.949 24.949 27.06 64.204 6.36 91.59z" fill="#3c122c"/><path d="m202.25-50.174c-4.28 0-8.32-2.578-10.006-6.803-2.208-5.534 0.518-11.821 6.052-14.028 0.831-0.332 20.649-8.056 46.995-3.182 5.858 1.085 9.727 6.714 8.643 12.572-1.085 5.858-6.715 9.73-12.572 8.643-19.934-3.693-34.98 1.972-35.129 2.029-1.309 0.521-2.658 0.769-3.983 0.769z" fill="#fff"/><g transform="translate(51.633,-285.5)" fill="#3c122c"><path d="m229.49 409.61c-1.737 0-3.469-0.695-4.744-2.068-2.432-2.62-2.281-6.715 0.338-9.147l8.957-8.317c2.62-2.434 6.715-2.279 9.147 0.338 2.432 2.62 2.281 6.715-0.338 9.147l-8.957 8.317c-1.247 1.157-2.827 1.73-4.403 1.73z"/><path d="m193.94 391.67c-1.737 0-3.469-0.695-4.744-2.068-2.432-2.62-2.281-6.715 0.338-9.147l8.957-8.317c2.62-2.434 6.715-2.28 9.147 0.338 2.432 2.62 2.281 6.715-0.338 9.147l-8.957 8.317c-1.247 1.158-2.827 1.73-4.403 1.73z"/></g></g><g transform="matrix(.086984 0 0 .086984 3.4327 38.592)"><ellipse cx="321.34" cy="-218.52" rx="89.318" ry="88.158" fill="#9781dd"/><path d="m321.34-306.68c-3.942 0-7.815 0.279-11.622 0.768 28.093 4.193 50.513 25.458 56.035 52.754 1.119 5.53-3.995 10.361-9.465 8.977-9.939-2.514-27.654-4.666-56.746-1.389-45.484 5.123-63.156 33.904-66.782 15.89-0.468 3.658-0.737 7.376-0.737 11.159 0 48.689 39.989 88.158 89.318 88.158s89.318-39.47 89.318-88.158c-1e-3 -48.689-39.99-88.159-89.319-88.159z" fill="#8962de"/><ellipse cx="321.34" cy="-48.023" rx="172.19" ry="170.11" fill="#d789b9"/><g transform="translate(56.09,-379.16)" fill="#9781dd"><path d="m263.85 403.81s-13.949 44.252-73.111 80.326c0 0 24.05 17.316 72.63 17.797 48.581 0.481 69.263-14.911 69.263-14.911s-65.896-44.732-68.782-83.212z"/><circle cx="177.71" cy="284.15" r="29.263"/><circle transform="matrix(.227 -.974 .974 .227 -221 486.84)" cx="196.25" cy="382.66" r="26.336"/><circle cx="352.31" cy="284.15" r="29.263"/><circle transform="matrix(.389 -.921 .921 .389 -148.57 541.35)" cx="333.78" cy="382.66" r="26.336"/></g><path d="m298.01 62.657c-2.21 0.101-4.432 0.158-6.668 0.158-73.689 0-134.28-55.378-141.47-126.3-0.465 5.098-0.716 10.257-0.716 15.474 0 70.725 43.692 131.36 105.86 157.02 14.125-15.665 27.092-31.758 42.996-46.351z" fill="#c668b9"/><path d="m336.97 55.407c-12.318 4.121-25.389 6.629-38.961 7.248-15.904 14.593-28.871 30.686-42.996 46.35 20.416 8.427 42.821 13.088 66.331 13.088 23.887 0 46.637-4.808 67.315-13.493-18.258-16.908-37.094-33.118-51.689-53.193z" fill="#8962de"/><path d="m406.24 25.117c6.42-9.63 10.439-21.056 7.142-30.702-7.743 12.764-17.465 24.219-28.77 33.933 8.091 2.661 16.536 4.408 21.628-3.231z" fill="#8962de"/><path d="m321.34-218.13c-5.281 0-10.503 0.248-15.663 0.707 71.794 7.104 127.85 66.965 127.85 139.76 0 26.355-7.368 51-20.151 72.073 3.297 9.645-0.722 21.072-7.142 30.702-5.093 7.639-13.538 5.891-21.628 3.231-13.802 11.858-29.936 21.136-47.639 27.059 14.596 20.075 33.431 36.285 51.69 53.192 61.647-25.892 104.88-86.265 104.88-156.62-1e-3 -93.95-77.094-170.11-172.19-170.11z" fill="#c668b9"/><g transform="translate(56.09,-379.16)" fill="#3c122c"><path d="m177.71 319.86c-19.691 0-35.71-16.02-35.71-35.711s16.02-35.71 35.71-35.71c19.691 0 35.71 16.019 35.71 35.71s-16.02 35.711-35.71 35.711zm0-58.526c-12.58 0-22.815 10.234-22.815 22.815 0 12.58 10.235 22.815 22.815 22.815s22.815-10.235 22.815-22.815c-1e-3 -12.58-10.235-22.815-22.815-22.815z"/><path d="m196.25 415.45c-18.077 0-32.784-14.706-32.784-32.784s14.707-32.784 32.784-32.784 32.784 14.707 32.784 32.784-14.707 32.784-32.784 32.784zm0-52.673c-10.967 0-19.889 8.922-19.889 19.889 0 10.966 8.922 19.888 19.889 19.888 10.966 0 19.888-8.922 19.888-19.888 0-10.967-8.922-19.889-19.888-19.889z"/><path d="m352.31 319.86c-19.691 0-35.71-16.02-35.71-35.711s16.02-35.71 35.71-35.71 35.71 16.019 35.71 35.71-16.019 35.711-35.71 35.711zm0-58.526c-12.58 0-22.815 10.234-22.815 22.815 0 12.58 10.235 22.815 22.815 22.815s22.815-10.235 22.815-22.815-10.235-22.815-22.815-22.815z"/><path d="m333.78 415.45c-18.077 0-32.784-14.706-32.784-32.784s14.707-32.784 32.784-32.784 32.784 14.707 32.784 32.784-14.707 32.784-32.784 32.784zm0-52.673c-10.966 0-19.888 8.922-19.888 19.889 0 10.966 8.922 19.888 19.888 19.888 10.967 0 19.889-8.922 19.889-19.888 0-10.967-8.922-19.889-19.889-19.889z"/><path d="m478.72 320.4h-30.858c-1.338-22.459-6.83-43.83-15.743-63.365l29.446-17.001c5.139-2.967 6.901-9.54 3.933-14.679-2.967-5.14-9.541-6.902-14.679-3.933l-28.785 16.619c-14.596-23.931-34.632-44.269-58.41-59.32 1.103-5.865 1.696-11.905 1.696-18.08 0-33.087-16.526-62.43-41.845-80.393l12.475-26.614c2.519-5.374 0.205-11.772-5.169-14.291-5.372-2.519-11.772-0.204-14.291 5.169l-11.824 25.225c-12.101-5.145-25.423-8-39.409-8s-27.309 2.855-39.409 8l-11.824-25.225c-2.519-5.374-8.916-7.69-14.291-5.169-5.374 2.519-7.688 8.917-5.169 14.291l12.475 26.614c-25.319 17.964-41.846 47.306-41.846 80.393 0 6.176 0.591 12.217 1.694 18.081-23.777 15.051-43.813 35.388-58.408 59.319l-28.786-16.619c-5.14-2.967-11.711-1.207-14.679 3.933s-1.206 11.712 3.933 14.679l29.446 17.001c-8.912 19.535-14.405 40.906-15.743 63.365h-30.858c-5.935 0-10.746 4.811-10.746 10.746s4.811 10.746 10.746 10.746h30.858c1.338 22.459 6.831 43.83 15.743 63.365l-29.446 17c-5.139 2.967-6.901 9.54-3.933 14.679 1.99 3.448 5.602 5.375 9.316 5.375 1.823 0 3.671-0.464 5.363-1.441l28.785-16.619c32.043 52.538 90.327 87.751 156.78 87.751s124.74-35.213 156.78-87.752l28.785 16.619c1.693 0.977 3.54 1.441 5.363 1.441 3.714 0 7.326-1.927 9.316-5.375 2.968-5.139 1.206-11.712-3.933-14.679l-29.446-17c8.912-19.535 14.405-40.906 15.743-63.365h30.858c5.935 0 10.746-4.811 10.746-10.746-1e-3 -5.934-4.812-10.745-10.747-10.745zm-292.04-159.76c0-42.685 35.247-77.412 78.572-77.412s78.572 34.727 78.572 77.412c0 2.376-0.121 4.724-0.338 7.045-23.734-11.147-50.258-17.396-78.234-17.396-27.975 0-54.499 6.249-78.232 17.395-0.214-2.322-0.34-4.669-0.34-7.044zm-82.874 170.5c0-85.366 68.351-155.26 153.87-159.18v214.47c0 20.064-8.257 38.945-23.249 53.167l-37.74 35.797c-54.832-25.498-92.879-80.569-92.879-144.26zm105.92 149.65 33.568-31.84c9.138-8.667 16.195-19.109 20.85-30.451 4.655 11.341 11.713 21.783 20.85 30.451l34.163 32.403c-16.868 5.916-35.012 9.148-53.909 9.148-19.499 1e-3 -38.202-3.43-55.522-9.711zm122.61-4.713-38.462-36.482c-14.993-14.222-23.25-33.103-23.25-53.167 0-0.272-0.022-0.539-0.055-0.802v-213.76c86.57 2.78 156.13 73.152 156.13 159.27 0 64.26-38.735 119.75-94.363 144.94z"/></g><path d="m238.62-144.75c-3.236 0-6.434-1.454-8.549-4.224-3.598-4.713-2.703-11.447 2.007-15.051 0.924-0.707 22.923-17.394 46.961-23.118 5.775-1.378 11.568 2.191 12.943 7.965 1.375 5.773-2.191 11.568-7.964 12.943-19.514 4.646-38.698 19.14-38.889 19.286-1.947 1.482-4.238 2.199-6.509 2.199z" fill="#fff"/><path d="m357.06-168.68c-0.24 0-0.482-8e-3 -0.725-0.024l-7.259-0.484c-5.922-0.395-10.402-5.515-10.008-11.437 0.395-5.922 5.513-10.408 11.437-10.008l7.259 0.484c5.922 0.395 10.402 5.515 10.008 11.437-0.379 5.679-5.103 10.032-10.712 10.032z" fill="#fff"/></g><g transform="matrix(.081135 0 0 .081135 68.186 15.586)"><path d="m58.505 401.31c-11.803 0-21.37-9.568-21.37-21.37v-131.01h42.741v131.01c0 11.802-9.568 21.37-21.371 21.37z" fill="#a1e8c3"/><path d="m106.37-42.801c0 26.417-18.48 91.181-47.833 91.181-29.352 0-47.832-64.764-47.832-91.181s21.415-47.833 47.832-47.833c26.418 1e-3 47.833 21.416 47.833 47.833z" fill="#f6e06e"/><path d="m58.536-90.633c-2.002 0-3.971 0.137-5.909 0.376 17.794 2.536 31.477 17.829 31.477 36.324 0 20.269-14.179 69.961-36.7 69.961-20.605 0-34.224-41.59-36.394-64.191-0.197 1.762-0.307 3.549-0.307 5.363 0 26.417 18.48 91.181 47.833 91.181 29.352 0 47.833-64.764 47.833-91.181-1e-3 -26.418-21.416-47.833-47.833-47.833z" fill="#dda86a"/><path d="m193.02 32.218c-18.611 18.748-77.352 51.692-98.184 31.014-20.831-20.679 11.679-79.661 30.29-98.41s48.896-18.86 67.645-0.249c18.748 18.611 18.859 48.896 0.249 67.645z" fill="#f6e06e"/><path d="m192.77-35.427c-18.748-18.611-49.034-18.499-67.645 0.249-0.785 0.79-1.596 1.658-2.425 2.586 13.501-11.774 34.003-11.288 46.916 1.53 13.513 13.414 13.594 35.242 0.18 48.755s-55.752 37.258-70.766 22.353c-7.64-7.584-5.317-22.315 0.567-36.738-10.871 22.599-16.953 47.821-4.761 59.923 20.831 20.678 79.573-12.266 98.184-31.014 18.61-18.748 18.499-49.033-0.25-67.644z" fill="#dda86a"/><path d="m201.5 147.03c-26.417 0.097-91.248-18.144-91.356-47.496s64.587-48.071 91.004-48.168 47.911 21.239 48.009 47.656c0.096 26.416-21.24 47.911-47.657 48.008z" fill="#f6e06e"/><path d="m201.14 51.368c-26.417 0.098-91.112 18.816-91.004 48.168-0.082-22.156 48.753-36.285 68.693-36.359 19.941-0.073 36.165 16.032 36.239 35.973 0.073 19.941-16.032 36.165-35.973 36.238-19.629 0.072-67.355-13.269-68.92-34.819 1.602 28.746 65.212 46.56 91.317 46.464 26.417-0.097 47.753-21.592 47.656-48.009-0.096-26.417-21.591-47.753-48.008-47.656z" fill="#dda86a"/><path d="m126.3 234.21c-18.749-18.611-51.692-77.352-31.014-98.184 20.679-20.831 79.661 11.679 98.41 30.289 18.749 18.611 18.86 48.897 0.249 67.645-18.611 18.75-48.896 18.861-67.645 0.25z" fill="#f6e06e"/><path d="m193.7 166.32c-18.561-18.425-76.548-50.463-97.771-30.89 16.354-14.679 60.473 9.718 74.624 23.765 14.339 14.234 14.424 37.396 0.191 51.734s-37.396 14.424-51.734 0.19c-14.114-14.011-38.748-57.761-24.431-74.322-19.174 21.467 13.201 79.028 31.726 97.416 18.749 18.611 49.034 18.499 67.645-0.249 18.61-18.747 18.499-49.033-0.25-67.644z" fill="#dda86a"/><path d="m11.488 242.69c-0.097-26.417 18.144-91.248 47.496-91.356s48.071 64.587 48.168 91.004-21.239 47.911-47.656 48.009c-26.416 0.097-47.91-21.24-48.008-47.657z" fill="#f6e06e"/><path d="m58.985 151.33c-2.087 8e-3 -4.116 0.353-6.088 0.978 19.262 6.863 31.282 49.888 31.35 68.354 0.074 20.114-16.171 36.48-36.285 36.554-17.104 0.063-31.49-11.677-35.461-27.56-0.682 4.905-1.026 9.342-1.013 13.03 0.097 26.417 21.592 47.754 48.009 47.656 26.417-0.097 47.753-21.592 47.656-48.009-0.097-26.416-18.816-91.111-48.168-91.003z" fill="#dda86a"/><path d="m-75.691 167.49c18.611-18.748 77.352-51.692 98.184-31.014s-11.679 79.661-30.29 98.41-48.897 18.86-67.645 0.249-18.86-48.897-0.249-67.645z" fill="#f6e06e"/><path d="m22.493 136.48c-12.207-12.117-37.429-5.82-59.968 5.242 14.231-5.911 28.776-8.293 36.337-0.788 14.895 14.785-8.35 56.958-21.657 70.363s-34.961 13.485-48.366 0.178c-12.795-12.701-13.44-33.002-1.902-46.481-0.945 0.855-1.826 1.691-2.628 2.499-18.611 18.749-18.499 49.034 0.249 67.645 18.749 18.611 49.034 18.499 67.645-0.249s51.121-77.73 30.29-98.409z" fill="#dda86a"/><path d="m-84.166 52.679c26.417-0.097 91.248 18.144 91.357 47.496 0.108 29.352-64.587 48.071-91.004 48.168s-47.911-21.239-48.008-47.656c-0.099-26.417 21.238-47.911 47.655-48.008z" fill="#f6e06e"/><path d="m-8.973-34.5c18.749 18.611 51.692 77.352 31.014 98.184-20.679 20.831-79.661-11.679-98.41-30.29-18.748-18.611-18.86-48.897-0.249-67.645 18.611-18.749 48.897-18.86 67.645-0.249z" fill="#f6e06e"/><circle transform="rotate(-45)" cx="-29.763" cy="112.47" r="91.689" fill="#a07575" stroke-width=".99985"/><path d="m58.536 8.8701c-3.502 0-6.956 0.203-10.356 0.585 35.643 4.461 63.226 34.85 63.226 71.702 0 39.923-32.364 72.287-72.287 72.287-36.852 0-67.241-27.583-71.702-63.226-0.382 3.4-0.585 6.854-0.585 10.356 0 50.646 41.057 91.703 91.703 91.703s91.703-41.057 91.703-91.703c1e-3 -50.647-41.056-91.704-91.702-91.704z" fill="#925873"/><path d="m5.735 83.351c3.985-12.078 12.078-22.67 22.783-29.561" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="20"/><path d="m119.49 295.8c-35.982 12.216-34.937 58.181-34.937 58.181s27.156 37.099 63.138 24.883c30.157-10.239 56.943-51.87 64.825-65.08 1.324-2.219 0.424-4.871-1.978-5.826-14.295-5.68-60.89-22.397-91.048-12.158z" fill="#a1e8c3"/><path d="m210.53 307.96c-14.296-5.68-60.892-22.397-91.049-12.159-2.427 0.824-4.68 1.806-6.782 2.913 21.637-3.596 50.313 6.725 59.732 10.467 1.748 0.695 2.404 2.625 1.44 4.241-5.738 9.617-25.239 39.926-47.195 47.38-19.05 6.468-34.693-6.046-41.815-13.357-0.374 4.016-0.317 6.537-0.317 6.537s27.156 37.099 63.138 24.883c30.157-10.239 56.943-51.87 64.825-65.08 1.325-2.218 0.425-4.871-1.977-5.825z" fill="#85adc2"/><g transform="translate(-205.33,-100.66)" fill="#3c122c"><path d="m121.17 153.34h0.01z"/><path d="m406.87 257.72c31.902-0.117 57.762-26.168 57.644-58.071-0.057-15.454-6.129-29.962-17.096-40.849-10.968-10.888-25.522-16.847-40.975-16.796-1.03 4e-3 -2.096 0.033-3.192 0.083 0.777-0.722 1.518-1.437 2.22-2.145 22.476-22.642 22.341-59.347-0.301-81.823s-59.349-22.34-81.823 0.302c-0.551 0.555-1.108 1.141-1.668 1.743 0.024-0.779 0.048-1.559 0.048-2.302 2e-3 -31.904-25.952-57.859-57.855-57.859s-57.858 25.955-57.858 57.858c0 1.283 0.049 2.638 0.12 4.022-0.912-1.001-1.816-1.953-2.707-2.837-10.917-10.836-25.382-16.796-40.755-16.796h-0.219c-15.454 0.057-29.961 6.128-40.849 17.097-10.888 10.968-16.852 25.519-16.795 40.974s6.128 29.962 17.097 40.85c0.732 0.726 1.507 1.462 2.318 2.202-0.969-0.036-1.92-0.059-2.836-0.059-0.085 0-0.17 1e-3 -0.253 1e-3 -15.455 0.057-29.962 6.128-40.849 17.097-10.888 10.968-16.852 25.52-16.796 40.974 0.057 15.454 6.129 29.962 17.097 40.849 10.917 10.836 25.382 16.796 40.755 16.796h0.22c1.029-4e-3 2.096-0.033 3.191-0.083-0.777 0.721-1.518 1.437-2.22 2.145-22.476 22.642-22.34 59.348 0.302 81.823 11.267 11.184 26.013 16.769 40.759 16.769 14.887 0 29.773-5.696 41.065-17.07 0.725-0.73 1.458-1.504 2.198-2.314-0.039 1.059-0.057 2.088-0.054 3.085 0.057 15.454 6.129 29.962 17.097 40.849 2.652 2.633 5.517 4.972 8.551 7.014v89.358c0 17.312 14.084 31.396 31.396 31.396s31.396-14.084 31.396-31.396v-6.032c9.941 8.422 24.839 17.504 42.902 17.504 5.735 0 11.791-0.916 18.104-3.06 32.578-11.06 59.955-52.243 70.211-69.435 2.139-3.584 2.611-7.866 1.293-11.747-1.317-3.881-4.297-6.992-8.178-8.534-18.603-7.393-65.394-23.395-97.973-12.335-11.811 4.01-20.281 10.876-26.359 18.745v-13.453c16.426-10.271 27.353-28.543 27.277-49.301-4e-3 -1.029-0.033-2.096-0.083-3.191 0.721 0.777 1.437 1.518 2.145 2.221 10.917 10.836 25.381 16.796 40.754 16.796h0.219c15.454-0.057 29.962-6.128 40.849-17.097 10.888-10.968 16.853-25.52 16.796-40.974s-6.129-29.962-17.097-40.849c-0.732-0.727-1.507-1.462-2.318-2.202 0.969 0.036 1.92 0.059 2.837 0.059 0.079-1e-3 0.164-2e-3 0.248-2e-3zm-78.827 148.24c19.711-6.692 51.738 0.099 77.438 9.441-14.7 23.057-35.974 47.945-55.683 54.636-22.546 7.656-41.309-9.407-48.595-17.449 0.68 0.26 1.402 0.413 2.142 0.413 0.725 0 1.462-0.132 2.177-0.41l39.092-15.183c3.097-1.203 4.633-4.688 3.43-7.785-1.202-3.097-4.694-4.632-7.785-3.429l-39.041 15.164c2.343-12.176 8.843-29.292 26.825-35.398zm78.475-243.9h0.143c10.045 0 19.498 3.895 26.631 10.975 7.167 7.114 11.134 16.594 11.171 26.693 0.076 20.847-16.821 37.869-37.667 37.946-0.06 1e-3 -0.117 1e-3 -0.177 1e-3 -10.15-1e-3 -27.887-3.169-44.703-9.285 2.397-8.647 3.684-17.75 3.684-27.15 0-10.218-1.521-20.086-4.336-29.397 17-6.385 35.045-9.746 45.254-9.783zm-224.32 39.179c0-45.037 36.641-81.678 81.678-81.678 17.515 0 33.745 5.56 47.059 14.981l-29.834 29.834-6.582-6.582c-2.348-2.349-6.158-2.349-8.506 0-2.35 2.349-2.35 6.158 0 8.507l6.581 6.581-75.415 75.414c-9.422-13.312-14.981-29.542-14.981-47.057zm163.36 0c0 8.346-1.264 16.4-3.6 23.989l-15.602-15.602 18.548-18.548c0.415 3.332 0.654 6.718 0.654 10.161zm-27.709-0.12-28.236-28.236 30.653-30.652c9.918 9.481 17.473 21.413 21.639 34.833zm-36.743-19.729 28.236 28.236-33.889 33.888-15.531-15.531c-2.35-2.349-6.158-2.349-8.507 0s-2.349 6.158 0 8.507l15.532 15.531-27.242 27.242c-13.419-4.166-25.352-11.721-34.833-21.639zm-5.652 79.138 17.158 17.158c-8.943 3.372-18.622 5.232-28.731 5.232-3.443 0-6.829-0.239-10.161-0.655zm28.725 11.712-20.218-20.219 33.888-33.889 19.25 19.251c-7.256 14.639-18.773 26.795-32.92 34.857zm33.409-199.69c7.379-7.434 17.104-11.154 26.833-11.154 9.635 0 19.273 3.65 26.634 10.957 14.795 14.686 14.883 38.672 0.197 53.467-7.204 7.257-22.301 17.775-38.812 25.406-9.404-16.587-23.328-30.289-40.092-39.411 7.518-16.671 17.998-31.969 25.24-39.265zm-73.707-52.493c20.847 0 37.807 16.96 37.807 37.807 0 10.268-3.332 28.478-9.726 45.589-8.923-2.566-18.344-3.944-28.081-3.944s-19.158 1.378-28.081 3.944c-6.395-17.111-9.727-35.321-9.727-45.589 0-20.847 16.96-37.807 37.808-37.807zm-128.04 53.42c7.114-7.167 16.594-11.135 26.692-11.172h0.143c10.045 0 19.498 3.895 26.631 10.975 7.27 7.217 17.813 22.355 25.448 38.902-16.727 9.263-30.581 23.101-39.866 39.814-16.51-7.504-31.615-17.87-38.851-25.053-7.167-7.114-11.135-16.594-11.171-26.692-0.039-10.099 3.859-19.607 10.974-26.774zm-14.349 165.51c-0.048 1e-3 -0.093 1e-3 -0.141 1e-3 -20.78 0-37.728-16.87-37.804-37.668-0.037-10.098 3.86-19.607 10.975-26.774 7.114-7.167 16.594-11.134 26.693-11.172h0.179c10.177 0 27.981 3.186 44.837 9.335-2.651 9.057-4.079 18.632-4.079 28.534 0 9.779 1.391 19.239 3.978 28.195-16.82 6.234-34.553 9.512-44.638 9.549zm68.939 89.509c-14.686 14.795-38.671 14.884-53.467 0.197-14.795-14.686-14.884-38.672-0.197-53.467 7.081-7.133 21.787-17.42 37.968-25.016 9.349 16.952 23.39 30.967 40.364 40.281-7.47 16.178-17.608 30.893-24.668 38.005zm84.763 152.12c0 6.256-5.089 11.345-11.345 11.345s-11.345-5.089-11.345-11.345v-80.862c3.952 0.841 8.017 1.286 12.153 1.286h0.22c3.524-0.013 6.968-0.36 10.317-0.979zm-10.392-99.627c-0.048 1e-3 -0.095 1e-3 -0.143 1e-3 -10.045-1e-3 -19.498-3.895-26.631-10.975-7.167-7.114-11.134-16.594-11.172-26.693-0.037-9.995 3.055-27.528 9.059-44.257 8.888 2.545 18.269 3.909 27.963 3.909 10.129 0 19.914-1.495 29.154-4.264 6.162 16.728 9.401 34.31 9.438 44.334 0.077 20.846-16.821 37.868-37.668 37.945zm127.38-53.418c-7.115 7.167-16.595 11.134-26.693 11.172h-0.144c-10.044 0-19.498-3.895-26.63-10.975-7.12-7.068-17.382-21.733-24.974-37.879 16.81-9.492 30.665-23.623 39.814-40.647 16.346 7.488 31.256 17.741 38.429 24.862 7.168 7.114 11.135 16.594 11.172 26.693 0.037 10.098-3.86 19.607-10.974 26.774z"/></g></g></svg>
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../provider/data.dart';
class Cell {
int value;
final int col;
final int row;
bool isFixed;
int conflictsCount = 0;
Cell(
@required this.value,
@required this.col,
@required this.row,
@required this.isFixed,
);
Container widget(Data myProvider) {
static double cellBorderWidth = 3;
static Color cellBorderDarkColor = Colors.black;
static Color cellBorderLightColor = Colors.grey;
static Color cellBorderSelectedColor = Colors.red;
Container widget(Data myProvider, Border borders, int row, int col) {
String imageAsset = 'assets/skins/empty.png';
if (this.value > 0) {
imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png';
}
int size = myProvider.size;
double borderWidth = 3;
Color borderDarkColor = Colors.black;
Color borderLightColor = Colors.grey;
Color borderSelectedColor = Colors.red;
Color backgroundColor = this.getBackgroundColor(myProvider);
Border borders = Border(
top: BorderSide(width: borderWidth, color: ((this.row % size) == 0) ? borderDarkColor : borderLightColor),
left: BorderSide(width: borderWidth, color: ((this.col % size) == 0) ? borderDarkColor : borderLightColor),
right: BorderSide(width: borderWidth, color: (((this.col + 1) % size) == 0) ? borderDarkColor : borderLightColor),
bottom: BorderSide(width: borderWidth, color: (((this.row + 1) % size) == 0) ? borderDarkColor : borderLightColor),
);
if (this.col == myProvider.currentCellCol && this.row == myProvider.currentCellRow) {
borders = Border.all(
color: borderSelectedColor,
width: borderWidth,
);
}
return Container(
decoration: BoxDecoration(
color: backgroundColor,
color: this.getBackgroundColor(myProvider),
border: borders,
),
child: GestureDetector(
......@@ -56,9 +34,9 @@ class Cell {
fit: BoxFit.fill
),
onTap: () {
if (this.col != null && this.row != null) {
if (!this.isFixed && (this.col != myProvider.currentCellCol || this.row != myProvider.currentCellRow)) {
myProvider.selectCell(this.col, this.row);
if (col != null && row != null) {
if (col != myProvider.currentCellCol || row != myProvider.currentCellRow) {
myProvider.selectCell(col, row);
} else {
myProvider.selectCell(null, null);
}
......@@ -73,6 +51,8 @@ class Cell {
Color editableCellColorConflict = Colors.pink[100];
Color fixedCellColor = Colors.grey[300];
Color fixedCellColorConflict = Colors.pink[200];
Color editableSelectedValueColor = Colors.green[100];
Color fixedSelectedValueColor = Colors.green[300];
Color backgroundColor = editableCellColor;
......@@ -88,6 +68,14 @@ class Cell {
}
}
if (myProvider.showConflicts && (this.value == myProvider.currentCellValue)) {
if (this.isFixed) {
backgroundColor = fixedSelectedValueColor;
} else {
backgroundColor = editableSelectedValueColor;
}
}
return backgroundColor;
}
......@@ -111,12 +99,34 @@ class Cell {
fit: BoxFit.fill
),
onTap: () {
if (this.col != null && this.row != null) {
myProvider.updateCellValue(this.col, this.row, this.value);
if (myProvider.currentCellCol != null && myProvider.currentCellRow != null) {
myProvider.updateCellValue(myProvider.currentCellCol, myProvider.currentCellRow, this.value);
}
myProvider.selectCell(null, null);
},
)
);
}
static Border getCellBorders(Data myProvider, int row, int col) {
int blockSizeHorizontal = myProvider.blockSizeHorizontal;
int blockSizeVertical = myProvider.blockSizeVertical;
Border borders = Border.all(
color: cellBorderSelectedColor,
width: cellBorderWidth,
);
if (col != myProvider.currentCellCol || row != myProvider.currentCellRow) {
borders = Border(
top: BorderSide(width: cellBorderWidth, color: ((row % blockSizeVertical) == 0) ? cellBorderDarkColor : cellBorderLightColor),
left: BorderSide(width: cellBorderWidth, color: ((col % blockSizeHorizontal) == 0) ? cellBorderDarkColor : cellBorderLightColor),
right: BorderSide(width: cellBorderWidth, color: (((col + 1) % blockSizeHorizontal) == 0) ? cellBorderDarkColor : cellBorderLightColor),
bottom: BorderSide(width: cellBorderWidth, color: (((row + 1) % blockSizeVertical) == 0) ? cellBorderDarkColor : cellBorderLightColor),
);
}
return borders;
}
}
import 'dart:math';
import 'package:flutter/material.dart';
import '../entities/cell.dart';
import '../provider/data.dart';
import '../utils/board_utils.dart';
class Board {
static Container buildGameBoard(Data myProvider) {
Color borderColor = BoardUtils.checkBoardIsSolved(myProvider) ? Colors.green : Colors.orange;
return Container(
margin: EdgeInsets.all(2),
padding: EdgeInsets.all(2),
decoration: BoxDecoration(
color: borderColor,
borderRadius: BorderRadius.circular(2),
border: Border.all(
color: borderColor,
width: 2,
),
),
child: buildGameTileset(myProvider),
);
}
static Table buildGameTileset(Data myProvider) {
int boardSize = myProvider.blockSizeHorizontal * myProvider.blockSizeVertical;
List cells = myProvider.cells;
return Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
for (var row = 0; row < boardSize; row++)
TableRow(children: [
for (var col = 0; col < boardSize; col++)
Column(children: [
cells[row][col].widget(
myProvider,
Cell.getCellBorders(myProvider, row, col),
row,
col
)
]),
]),
]
);
}
}
import 'dart:math';
import 'package:flutter/material.dart';
import '../entities/cell.dart';
import '../layout/board.dart';
import '../provider/data.dart';
import '../utils/board_utils.dart';
class Game {
static Container buildGameWidget(Data myProvider) {
return Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Board.buildGameBoard(myProvider),
SizedBox(height: 2),
Game.buildSelectCellValueBar(myProvider)
],
),
);
}
static Container buildSelectCellValueBar(Data myProvider) {
List cells = myProvider.cells;
Color borderColor = Colors.blue;
bool isCellSelected = (myProvider.currentCellCol != null && myProvider.currentCellRow != null);
bool isUpdatableCellSelected = isCellSelected ? !myProvider.cells[myProvider.currentCellRow][myProvider.currentCellCol].isFixed : false;
int maxValue = myProvider.blockSizeHorizontal * myProvider.blockSizeVertical;
return Container(
margin: EdgeInsets.all(2),
padding: EdgeInsets.all(2),
child: Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
TableRow(
children: [
for (var value = 0; value <= maxValue; value++)
Column(
children: [
Cell(
isUpdatableCellSelected ? value : 0,
false
).widgetUpdateValue(myProvider)
]
),
]
),
]
),
);
}
}
import 'package:flutter/material.dart';
import '../provider/data.dart';
import '../utils/game_utils.dart';
class Parameters {
static const double _parameterButtonSize = 70;
static const double _startButtonSize = 150;
static Container buildParametersSelector(Data myProvider) {
return Container(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Parameters.buildParameterSelector(myProvider, 'difficulty'),
Parameters.buildParameterSelector(myProvider, 'size'),
Parameters.buildParameterSelector(myProvider, 'skin'),
Parameters.buildStartGameButton(myProvider),
],
),
);
}
static Column buildStartGameButton(Data myProvider) {
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
FlatButton(
child: Image(
image: AssetImage('assets/icons/button_start.png'),
width: _startButtonSize,
height: _startButtonSize,
fit: BoxFit.fill
),
onPressed: () => GameUtils.startGame(myProvider),
)
],
);
}
static Column buildParameterSelector(Data myProvider, String parameterCode) {
List availableValues = myProvider.getParameterAvailableValues(parameterCode);
return Column(
children: [
Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
TableRow(
children: [
for (var index = 0; index < availableValues.length; index++)
Column(
children: [
_buildParameterButton(myProvider, parameterCode, availableValues[index])
]
),
],
),
],
),
SizedBox(height: 20),
]
);
}
static FlatButton _buildParameterButton(Data myProvider, String parameterCode, String parameterValue) {
String currentValue = myProvider.getParameterValue(parameterCode).toString();
bool isActive = (parameterValue == currentValue);
String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue + '.png';
return FlatButton(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
border: Border.all(
color: isActive ? Colors.blue : Colors.white,
width: 10,
),
),
child: Image(
image: AssetImage(imageAsset),
width: _parameterButtonSize,
height: _parameterButtonSize,
fit: BoxFit.fill
),
),
onPressed: () => myProvider.setParameterValue(parameterCode, parameterValue),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'provider/data.dart';
import 'screens/home.dart';
void main() => runApp(MyApp());
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((value) => runApp(MyApp()));
}
class MyApp extends StatelessWidget {
@override
......
......@@ -4,7 +4,7 @@ class Data extends ChangeNotifier {
// Configuration available values
List _availableDifficultyLevels = ['easy', 'medium', 'hard'];
List _availableSizes = [2, 3];
List _availableSizes = ['2x2', '3x2', '3x3'];
List _availableSkins = ['default', 'food', 'nature'];
List get availableDifficultyLevels => _availableDifficultyLevels;
......@@ -13,15 +13,18 @@ class Data extends ChangeNotifier {
// Application default configuration
String _level = 'medium';
int _size = 3;
String _size = '3x3';
String _skin = 'default';
bool _showConflicts = false;
// Game data
bool _stateRunning = false;
int _blockSizeVertical = null;
int _blockSizeHorizontal = null;
List _cells = [];
int _currentCellCol = null;
int _currentCellRow = null;
int _currentCellValue = null;
String get level => _level;
set updateLevel(String level) {
......@@ -29,9 +32,13 @@ class Data extends ChangeNotifier {
notifyListeners();
}
int get size => _size;
set updateSize(int size) {
String get size => _size;
int get blockSizeVertical => _blockSizeVertical;
int get blockSizeHorizontal => _blockSizeHorizontal;
set updateSize(String size) {
_size = size;
_blockSizeHorizontal = int.parse(_size.split('x')[0]);
_blockSizeVertical = int.parse(_size.split('x')[1]);
notifyListeners();
}
......@@ -69,7 +76,7 @@ class Data extends ChangeNotifier {
}
}
setParameterValue(String parameterCode, var parameterValue) {
setParameterValue(String parameterCode, String parameterValue) {
switch(parameterCode) {
case 'difficulty': { updateLevel = parameterValue; }
break;
......@@ -98,9 +105,21 @@ class Data extends ChangeNotifier {
notifyListeners();
}
int get currentCellValue => _currentCellValue;
set updateCurrentCellValue(int currentCellValue) {
_currentCellValue = currentCellValue;
notifyListeners();
}
selectCell(int col, int row) {
_currentCellCol = col;
_currentCellRow = row;
_currentCellValue = null;
if (row != null && col != null) {
if (_cells[row][col].value != 0) {
_currentCellValue = _cells[row][col].value;
}
}
notifyListeners();
}
......
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../entities/cell.dart';
import '../layout/game.dart';
import '../layout/parameters.dart';
import '../provider/data.dart';
import '../utils/random_pick_grid.dart';
import '../utils/game_utils.dart';
class Home extends StatelessWidget {
static const String id = 'home';
static const double _parameterButtonSize = 70;
static const double _startButtonSize = 150;
Future<void> resetGame(Data myProvider) async {
myProvider.updateStateRunning = false;
}
Future<void> startGame(Data myProvider) async {
myProvider.updateStateRunning = true;
myProvider.updateCells = createEmptyBoard(myProvider.size);
pickGrid(myProvider);
}
printGrid(List cells) {
print('');
print('-------');
for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
String row = '';
for (var colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) {
row += cells[rowIndex][colIndex].value.toString();
}
print(row);
}
print('-------');
print('');
}
Future<void> pickGrid(Data myProvider) async {
int size = myProvider.size;
String grid;
RandomPickGrid randomPickGrid;
randomPickGrid = RandomPickGrid();
await randomPickGrid.init(myProvider.level, size);
if (randomPickGrid.grid != null) {
grid = randomPickGrid.grid;
}
if (grid.length == pow(size, 4)) {
myProvider.updateCells = createBoardFromTemplate(grid);
}
}
List createBoardFromTemplate(String grid) {
List cells = [];
int size = int.parse(pow(grid.length, 1/4).toStringAsFixed(0));
int sideLength = pow(size, 2);
int index = 0;
for (var rowIndex = 0; rowIndex < sideLength; rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < sideLength; colIndex++) {
int value = int.parse(grid[index++]);
row.add(Cell(value, colIndex, rowIndex, (value != 0)));
}
cells.add(row);
}
List<String> allowedFlip = ['', 'horizontal', 'vertical'];
List<String> allowedRotate = ['', 'left', 'right'];
var rand = new Random();
String flip = allowedFlip[rand.nextInt(allowedFlip.length)];
String rotate = allowedRotate[rand.nextInt(allowedRotate.length)];
switch(flip) {
case 'horizontal': {
List transformedBoard = createEmptyBoard(size);
for (var rowIndex = 0; rowIndex < sideLength; rowIndex++) {
for (var colIndex = 0; colIndex < sideLength; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[sideLength - rowIndex - 1][colIndex].value;
}
}
cells = transformedBoard;
}
break;
case 'vertical': {
List transformedBoard = createEmptyBoard(size);
for (var rowIndex = 0; rowIndex < sideLength; rowIndex++) {
for (var colIndex = 0; colIndex < sideLength; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[rowIndex][sideLength - colIndex - 1].value;
}
}
cells = transformedBoard;
}
break;
}
switch(rotate) {
case 'left': {
List transformedBoard = createEmptyBoard(size);
for (var rowIndex = 0; rowIndex < sideLength; rowIndex++) {
for (var colIndex = 0; colIndex < sideLength; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[colIndex][sideLength - rowIndex - 1].value;
}
}
cells = transformedBoard;
}
break;
case 'right': {
List transformedBoard = createEmptyBoard(size);
for (var rowIndex = 0; rowIndex < sideLength; rowIndex++) {
for (var colIndex = 0; colIndex < sideLength; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[sideLength - colIndex - 1][rowIndex].value;
}
}
cells = transformedBoard;
}
break;
}
// Fix cells fixed states
for (var rowIndex = 0; rowIndex < sideLength; rowIndex++) {
for (var colIndex = 0; colIndex < sideLength; colIndex++) {
cells[rowIndex][colIndex].isFixed = (cells[rowIndex][colIndex].value != 0) ? true : false;
}
}
return cells;
}
List createEmptyBoard(int size) {
int index = 0;
List cells = [];
for (var rowIndex = 0; rowIndex < pow(size, 2); rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < pow(size, 2); colIndex++) {
row.add(Cell(0, colIndex, rowIndex, false));
}
cells.add(row);
}
return cells;
}
Container _buildParametersSelector(Data myProvider) {
return Container(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildParameterSelector(myProvider, 'difficulty'),
_buildParameterSelector(myProvider, 'size'),
_buildParameterSelector(myProvider, 'skin'),
_buildStartGameButton(myProvider),
],
),
);
}
Column _buildStartGameButton(Data myProvider) {
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
FlatButton(
child: Image(
image: AssetImage('assets/icons/button_start.png'),
width: _startButtonSize,
height: _startButtonSize,
fit: BoxFit.fill
),
onPressed: () => startGame(myProvider),
)
],
);
}
Column _buildParameterSelector(Data myProvider, String parameterCode) {
List availableValues = myProvider.getParameterAvailableValues(parameterCode);
return Column(
children: [
Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
TableRow(
children: [
for (var index = 0; index < availableValues.length; index++)
Column(
children: [
_buildParameterButton(myProvider, parameterCode, availableValues[index])
]
),
],
),
],
),
SizedBox(height: 20),
]
);
}
FlatButton _buildParameterButton(Data myProvider, String parameterCode, var parameterValue) {
String currentValue = myProvider.getParameterValue(parameterCode).toString();
bool isActive = (parameterValue.toString() == currentValue);
String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue.toString() + '.png';
return FlatButton(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
border: Border.all(
color: isActive ? Colors.blue : Colors.white,
width: 10,
),
),
child: Image(
image: AssetImage(imageAsset),
width: _parameterButtonSize,
height: _parameterButtonSize,
fit: BoxFit.fill
),
),
onPressed: () => myProvider.setParameterValue(parameterCode, parameterValue),
);
}
Container _buildGameWidget(Data myProvider) {
return Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildGameBoard(myProvider),
SizedBox(height: 2),
_buildSelectCellValueBar(myProvider)
],
),
);
}
Container _buildGameBoard(Data myProvider) {
List cells = myProvider.cells;
int size = myProvider.size;
Color borderColor = _checkBoardIsSolved(myProvider) ? Colors.green : Colors.orange;
return Container(
margin: EdgeInsets.all(2),
padding: EdgeInsets.all(2),
decoration: BoxDecoration(
color: borderColor,
borderRadius: BorderRadius.circular(2),
border: Border.all(
color: borderColor,
width: 2,
),
),
child: Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
for (var row = 0; row < pow(size, 2); row++)
TableRow(children: [
for (var col = 0; col < pow(size, 2); col++)
Column(children: [
cells[row][col].widget(myProvider)
]),
]),
]
),
);
}
Container _buildSelectCellValueBar(Data myProvider) {
List cells = myProvider.cells;
int size = myProvider.size;
Color borderColor = Colors.blue;
bool isCellSelected = (myProvider.currentCellCol != null && myProvider.currentCellRow != null);
return Container(
margin: EdgeInsets.all(2),
padding: EdgeInsets.all(2),
child: Table(
defaultColumnWidth: IntrinsicColumnWidth(),
children: [
TableRow(
children: [
for (var value = 0; value < (pow(size, 2) + 1); value++)
Column(
children: [
Cell(
isCellSelected ? value : 0,
isCellSelected ? myProvider.currentCellCol : null,
isCellSelected ? myProvider.currentCellRow : null,
false
).widgetUpdateValue(myProvider)
]
),
]
),
]
),
);
}
bool _checkBoardIsSolved(Data myProvider) {
List cells = myProvider.cells;
int size = myProvider.size;
int sideLength = pow(size, 2);
bool isSolved = true;
// reset conflict states
for (var row = 0; row < sideLength; row++) {
for (var col = 0; col < sideLength; col++) {
cells[row][col].conflictsCount = 0;
}
}
// check grid is fully completed
for (var row = 0; row < sideLength; row++) {
for (var col = 0; col < sideLength; col++) {
if (cells[row][col].value == 0) {
isSolved = false;
}
}
}
// check lines does not contains a value twice
for (var row = 0; row < sideLength; row++) {
List values = [];
for (var col = 0; col < sideLength; col++) {
int value = cells[row][col].value;
if (value != 0) {
values.add(value);
}
}
List distinctValues = values.toSet().toList();
if (values.length != distinctValues.length) {
print('line ' + row.toString() + ' contains duplicates');
// Add line to cells in conflict
for (var col = 0; col < sideLength; col++) {
cells[row][col].conflictsCount++;
}
isSolved = false;
}
}
// check columns does not contains a value twice
for (var col = 0; col < sideLength; col++) {
List values = [];
for (var row = 0; row < sideLength; row++) {
int value = cells[row][col].value;
if (value != 0) {
values.add(value);
}
}
List distinctValues = values.toSet().toList();
if (values.length != distinctValues.length) {
print('column ' + col.toString() + ' contains duplicates');
// Add column to cells in conflict
for (var row = 0; row < sideLength; row++) {
cells[row][col].conflictsCount++;
}
isSolved = false;
}
}
// check blocks does not contains a value twice
for (var blockRow = 0; blockRow < size; blockRow++) {
for (var blockCol = 0; blockCol < size; blockCol++) {
List values = [];
for (var rowInBlock = 0; rowInBlock < size; rowInBlock++) {
for (var colInBlock = 0; colInBlock < size; colInBlock++) {
int row = (blockRow * size) + rowInBlock;
int col = (blockCol * size) + colInBlock;
int value = cells[row][col].value;
if (value != 0) {
values.add(value);
}
}
}
List distinctValues = values.toSet().toList();
if (values.length != distinctValues.length) {
print('block [' + blockCol.toString() + ',' + blockRow.toString() + '] contains duplicates');
// Add blocks to cells in conflict
for (var rowInBlock = 0; rowInBlock < size; rowInBlock++) {
for (var colInBlock = 0; colInBlock < size; colInBlock++) {
int row = (blockRow * size) + rowInBlock;
int col = (blockCol * size) + colInBlock;
cells[row][col].conflictsCount++;
}
}
isSolved = false;
}
}
}
if (isSolved) {
print('-> ok sudoku solved!');
}
return isSolved;
}
@override
Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context);
......@@ -424,7 +16,7 @@ class Home extends StatelessWidget {
List<Widget> menuActions = [];
if (myProvider.stateRunning) {
menuActions.add(
menuActions = [
FlatButton(
child: Container(
decoration: BoxDecoration(
......@@ -440,29 +32,39 @@ class Home extends StatelessWidget {
fit: BoxFit.fill
),
),
onPressed: () { myProvider.updateShowConflicts = !myProvider.showConflicts; },
)
);
menuActions.add(
onPressed: () {
myProvider.updateShowConflicts = !myProvider.showConflicts;
},
),
FlatButton(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: Colors.blue,
width: 4,
),
),
margin: EdgeInsets.all(8),
child: Image(
image: AssetImage('assets/icons/button_back.png'),
fit: BoxFit.fill
),
onPressed: () => resetGame(myProvider),
),
);
onPressed: () => GameUtils.resetGame(myProvider),
),
];
}
return Scaffold(
appBar: AppBar(
title: Text('🔢'),
actions: menuActions,
),
body: SafeArea(
child: Center(
child: myProvider.stateRunning ? _buildGameWidget(myProvider) : _buildParametersSelector(myProvider)
child: myProvider.stateRunning
? Game.buildGameWidget(myProvider)
: Parameters.buildParametersSelector(myProvider)
),
)
);
......
import 'dart:math';
import '../entities/cell.dart';
import '../utils/random_pick_grid.dart';
import '../provider/data.dart';
class BoardUtils {
static printGrid(List cells) {
print('');
print('-------');
for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
String row = '';
for (var colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) {
row += cells[rowIndex][colIndex].value.toString();
}
print(row);
}
print('-------');
print('');
}
static Future<void> pickGrid(Data myProvider) async {
String grid;
RandomPickGrid randomPickGrid;
randomPickGrid = RandomPickGrid();
await randomPickGrid.init(myProvider.level, myProvider.size);
if (randomPickGrid.grid != null) {
grid = randomPickGrid.grid;
}
int blockSizeHorizontal = myProvider.blockSizeHorizontal;
int blockSizeVertical = myProvider.blockSizeVertical;
if (grid.length == pow(blockSizeHorizontal * blockSizeVertical, 2)) {
print('Picked grid from template: ' + grid);
bool isSymetric = (blockSizeHorizontal == blockSizeVertical);
myProvider.updateCells = BoardUtils.createBoardFromTemplate(grid, isSymetric);
}
}
static List createEmptyBoard(int boardSize) {
int index = 0;
List cells = [];
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
row.add(Cell(0, false));
}
cells.add(row);
}
return cells;
}
static List createBoardFromTemplate(String grid, bool isSymetric) {
List cells = [];
int boardSize = int.parse(pow(grid.length, 1/2).toStringAsFixed(0));
int index = 0;
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
int value = int.parse(grid[index++]);
row.add(Cell(value, (value != 0)));
}
cells.add(row);
}
List<String> allowedFlip = ['none', 'horizontal', 'vertical'];
List<String> allowedRotate = ['none', 'left', 'right'];
// Forbid rotation if blocks are not symetric
if (!isSymetric) {
allowedRotate = ['none'];
}
var rand = new Random();
String flip = allowedFlip[rand.nextInt(allowedFlip.length)];
String rotate = allowedRotate[rand.nextInt(allowedRotate.length)];
print('flip board: ' + flip);
print('rotate board: ' + rotate);
switch(flip) {
case 'horizontal': {
List transformedBoard = createEmptyBoard(boardSize);
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[boardSize - rowIndex - 1][colIndex].value;
}
}
cells = transformedBoard;
}
break;
case 'vertical': {
List transformedBoard = createEmptyBoard(boardSize);
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[rowIndex][boardSize - colIndex - 1].value;
}
}
cells = transformedBoard;
}
break;
}
switch(rotate) {
case 'left': {
List transformedBoard = createEmptyBoard(boardSize);
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[colIndex][boardSize - rowIndex - 1].value;
}
}
cells = transformedBoard;
}
break;
case 'right': {
List transformedBoard = createEmptyBoard(boardSize);
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
transformedBoard[rowIndex][colIndex].value = cells[boardSize - colIndex - 1][rowIndex].value;
}
}
cells = transformedBoard;
}
break;
}
// Fix cells fixed states
for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
for (var colIndex = 0; colIndex < boardSize; colIndex++) {
cells[rowIndex][colIndex].isFixed = (cells[rowIndex][colIndex].value != 0) ? true : false;
}
}
printGrid(cells);
return cells;
}
static bool checkBoardIsSolved(Data myProvider) {
List cells = myProvider.cells;
int blockSizeHorizontal = myProvider.blockSizeHorizontal;
int blockSizeVertical = myProvider.blockSizeVertical;
int boardSize = blockSizeHorizontal * blockSizeVertical;
bool isSolved = true;
// reset conflict states
for (var row = 0; row < boardSize; row++) {
for (var col = 0; col < boardSize; col++) {
cells[row][col].conflictsCount = 0;
}
}
// check grid is fully completed
for (var row = 0; row < boardSize; row++) {
for (var col = 0; col < boardSize; col++) {
if (cells[row][col].value == 0) {
isSolved = false;
}
}
}
// check lines does not contains a value twice
for (var row = 0; row < boardSize; row++) {
List values = [];
for (var col = 0; col < boardSize; col++) {
int value = cells[row][col].value;
if (value != 0) {
values.add(value);
}
}
List distinctValues = values.toSet().toList();
if (values.length != distinctValues.length) {
print('line ' + row.toString() + ' contains duplicates');
// Add line to cells in conflict
for (var col = 0; col < boardSize; col++) {
cells[row][col].conflictsCount++;
}
isSolved = false;
}
}
// check columns does not contains a value twice
for (var col = 0; col < boardSize; col++) {
List values = [];
for (var row = 0; row < boardSize; row++) {
int value = cells[row][col].value;
if (value != 0) {
values.add(value);
}
}
List distinctValues = values.toSet().toList();
if (values.length != distinctValues.length) {
print('column ' + col.toString() + ' contains duplicates');
// Add column to cells in conflict
for (var row = 0; row < boardSize; row++) {
cells[row][col].conflictsCount++;
}
isSolved = false;
}
}
// check blocks does not contains a value twice
int horizontalBlocksCount = blockSizeVertical;
int verticalBlocksCount = blockSizeHorizontal;
for (var blockRow = 0; blockRow < verticalBlocksCount; blockRow++) {
for (var blockCol = 0; blockCol < horizontalBlocksCount; blockCol++) {
List values = [];
for (var rowInBlock = 0; rowInBlock < blockSizeVertical; rowInBlock++) {
for (var colInBlock = 0; colInBlock < blockSizeHorizontal; colInBlock++) {
int row = (blockRow * blockSizeVertical) + rowInBlock;
int col = (blockCol * blockSizeHorizontal) + colInBlock;
int value = cells[row][col].value;
if (value != 0) {
values.add(value);
}
}
}
List distinctValues = values.toSet().toList();
if (values.length != distinctValues.length) {
print('block [' + blockCol.toString() + ',' + blockRow.toString() + '] contains duplicates');
// Add blocks to cells in conflict
for (var rowInBlock = 0; rowInBlock < blockSizeVertical; rowInBlock++) {
for (var colInBlock = 0; colInBlock < blockSizeHorizontal; colInBlock++) {
int row = (blockRow * blockSizeVertical) + rowInBlock;
int col = (blockCol * blockSizeHorizontal) + colInBlock;
cells[row][col].conflictsCount++;
}
}
isSolved = false;
}
}
}
if (isSolved) {
print('-> ok sudoku solved!');
}
return isSolved;
}
}
import '../provider/data.dart';
import '../utils/board_utils.dart';
class GameUtils {
static Future<void> resetGame(Data myProvider) async {
myProvider.updateStateRunning = false;
}
static Future<void> startGame(Data myProvider) async {
print('Start new game: ' + myProvider.size);
myProvider.updateSize = myProvider.size;
myProvider.updateStateRunning = true;
myProvider.updateCells = BoardUtils.createEmptyBoard(myProvider.blockSizeHorizontal * myProvider.blockSizeVertical);
BoardUtils.pickGrid(myProvider);
}
}
import 'dart:async';
import 'dart:convert';
import 'package:flutter/services.dart';
......@@ -7,27 +6,25 @@ class RandomPickGrid {
String _grid;
init(String difficulty, int size) async {
init(String difficulty, String size) async {
_grid = '';
await gridFromLocalFile(difficulty, size);
}
Future<void> gridFromLocalFile(String difficulty, int size) async {
String sizeAsString = size.toString() + 'x' + size.toString();
Future<void> gridFromLocalFile(String difficulty, String size) async {
// Get global grids list
List grids;
try {
String jsonString = await rootBundle.loadString('assets/files/templates.json');
final jsonResponse = await json.decode(jsonString);
grids = jsonResponse['templates'][sizeAsString][difficulty];
grids = jsonResponse['templates'][size][difficulty];
} catch (e) {
print("$e");
}
// Check we have enough grids
if (grids.length < 1) {
print('Not enough grids [' + sizeAsString + ', ' + difficulty + '] in templates.');
print('Not enough grids [' + size + ', ' + difficulty + '] in templates.');
}
// Randomize grids list
......
......@@ -7,7 +7,7 @@ packages:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.6.1"
version: "2.7.0"
boolean_selector:
dependency: transitive
description:
......@@ -73,7 +73,7 @@ packages:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.4.0"
nested:
dependency: transitive
description:
......@@ -141,7 +141,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.0"
version: "0.4.0"
typed_data:
dependency: transitive
description:
......