feat: entropy-reversal SVG engine with SMIL animation and demon state
This commit is contained in:
parent
f658756979
commit
deed3a233c
3 changed files with 247 additions and 0 deletions
126
assets/entropy.svg
Normal file
126
assets/entropy.svg
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="880" height="260" viewBox="0 0 880 260" role="img" aria-label="Entropy-reversal field: S = 100.0 k-bits">
|
||||
<rect x="0.5" y="0.5" width="879" height="259" rx="8" fill="#010409" stroke="#21262d"/>
|
||||
<circle r="3" fill="#4dd4e8" cx="804.6" cy="218.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="804.6;612.1;612.1;804.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="218.8;130.0;130.0;218.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="204.6" cy="189.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="204.6;609.3;609.3;204.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="189.8;141.8;141.8;189.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="24.2" cy="137.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="24.2;601.4;601.4;24.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="137.1;152.7;152.7;137.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="598.7" cy="51.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="598.7;588.9;588.9;598.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="51.9;162.2;162.2;51.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="78.1" cy="45.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="78.1;572.9;572.9;78.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="45.0;169.7;169.7;45.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="602.2" cy="172.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="602.2;554.8;554.8;602.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="172.6;175.0;175.0;172.6"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="679.8" cy="119.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="679.8;535.8;535.8;679.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="119.5;178.1;178.1;119.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="305.8" cy="148.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="305.8;517.3;517.3;305.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="148.5;179.3;179.3;148.5"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="594.6" cy="188.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="594.6;500.2;500.2;594.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="188.3;179.1;179.1;188.3"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="249.7" cy="103.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="249.7;485.4;485.4;249.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="103.8;178.1;178.1;103.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="524.1" cy="98.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="524.1;472.9;472.9;524.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="98.2;177.2;177.2;98.2"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="539.8" cy="234.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="539.8;462.6;462.6;539.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="234.5;176.9;176.9;234.5"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="66.6" cy="77.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="66.6;454.0;454.0;66.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="77.6;177.8;177.8;77.6"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="653.4" cy="59.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="653.4;446.2;446.2;653.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="59.9;180.2;180.2;59.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="245.6" cy="211.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="245.6;438.1;438.1;245.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="211.1;184.2;184.2;211.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="421.1" cy="86.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="421.1;429.0;429.0;421.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="86.8;189.5;189.5;86.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="47.9" cy="35.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="47.9;417.8;417.8;47.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="35.3;195.7;195.7;35.3"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="689.7" cy="78.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="689.7;404.3;404.3;689.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="78.3;202.1;202.1;78.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="254.7" cy="103.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="254.7;388.2;388.2;254.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="103.8;207.9;207.9;103.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="206.3" cy="216.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="206.3;369.9;369.9;206.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="216.3;212.3;212.3;216.3"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="464.3" cy="187.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="464.3;350.2;350.2;464.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="187.2;214.6;214.6;187.2"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="157.3" cy="85.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="157.3;330.1;330.1;157.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="85.8;214.4;214.4;85.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="126.4" cy="213.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="126.4;311.0;311.0;126.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="213.2;211.2;211.2;213.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="392.6" cy="146.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="392.6;294.2;294.2;392.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="146.1;205.2;205.2;146.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="829.3" cy="105.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="829.3;280.8;280.8;829.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="105.1;196.7;196.7;105.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="391.3" cy="238.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="391.3;271.9;271.9;391.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="238.5;186.2;186.2;238.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="370.7" cy="167.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="370.7;267.9;267.9;370.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="167.9;174.5;174.5;167.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="592.3" cy="146.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="592.3;269.0;269.0;592.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="146.0;162.2;162.2;146.0"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="271.8" cy="52.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="271.8;274.8;274.8;271.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="52.5;150.3;150.3;52.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="110.8" cy="195.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="110.8;284.5;284.5;110.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="195.3;139.4;139.4;195.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="138.2" cy="70.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="138.2;296.9;296.9;138.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="70.9;130.0;130.0;70.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="214.6" cy="86.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="214.6;310.8;310.8;214.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="86.3;122.3;122.3;86.3"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="405.1" cy="28.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="405.1;324.8;324.8;405.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="28.7;116.3;116.3;28.7"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="681.0" cy="195.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="681.0;337.7;337.7;681.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="195.2;111.6;111.6;195.2"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="259.8" cy="111.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="259.8;348.7;348.7;259.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="111.8;107.8;107.8;111.8"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="202.4" cy="148.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="202.4;357.3;357.3;202.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="148.7;104.4;104.4;148.7"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="621.0" cy="82.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="621.0;363.4;363.4;621.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="82.7;100.5;100.5;82.7"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="551.0" cy="42.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="551.0;367.5;367.5;551.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="42.8;95.7;95.7;42.8"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="206.4" cy="69.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="206.4;370.2;370.2;206.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="69.2;89.5;89.5;69.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="748.3" cy="229.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="748.3;372.6;372.6;748.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="229.0;81.9;81.9;229.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="251.9" cy="193.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="251.9;375.7;375.7;251.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="193.8;72.8;72.8;193.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="568.3" cy="163.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="568.3;380.6;380.6;568.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="163.5;62.7;62.7;163.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="178.4" cy="219.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="178.4;388.2;388.2;178.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="219.5;52.1;52.1;219.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="770.5" cy="143.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="770.5;398.8;398.8;770.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="143.1;41.9;41.9;143.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="200.2" cy="135.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="200.2;412.5;412.5;200.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="135.2;32.8;32.8;135.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="531.9" cy="213.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="531.9;429.0;429.0;531.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="213.6;25.7;25.7;213.6"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="619.2" cy="226.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="619.2;447.4;447.4;619.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="226.1;21.3;21.3;226.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="688.8" cy="97.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="688.8;466.7;466.7;688.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="97.1;20.0;20.0;97.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="532.6" cy="94.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="532.6;485.5;485.5;532.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="94.9;22.0;22.0;94.9"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="495.7" cy="117.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="495.7;502.7;502.7;495.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="117.5;27.3;27.3;117.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="633.1" cy="176.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="633.1;517.1;517.1;633.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="176.5;35.3;35.3;176.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="390.3" cy="83.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="390.3;527.8;527.8;390.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="83.3;45.6;45.6;83.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="812.5" cy="190.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="812.5;534.4;534.4;812.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="190.6;57.4;57.4;190.6"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="328.7" cy="205.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="328.7;536.9;536.9;328.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="205.5;69.7;69.7;205.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="525.4" cy="70.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="525.4;535.8;535.8;525.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="70.0;81.9;81.9;70.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="102.5" cy="53.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="102.5;531.9;531.9;102.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="53.4;93.2;93.2;53.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="764.0" cy="166.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="764.0;526.3;526.3;764.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="166.9;103.1;103.1;166.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="584.9" cy="24.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="584.9;520.2;520.2;584.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="24.3;111.6;111.6;24.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="478.8" cy="96.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="478.8;514.9;514.9;478.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="96.1;118.7;118.7;96.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="694.1" cy="164.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="694.1;511.2;511.2;694.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="164.0;124.6;124.6;164.0"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="66.0" cy="206.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="66.0;510.0;510.0;66.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="206.4;130.0;130.0;206.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="721.8" cy="138.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="721.8;511.2;511.2;721.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="138.9;135.4;135.4;138.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="595.1" cy="49.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="595.1;514.9;514.9;595.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="49.8;141.3;141.3;49.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="777.0" cy="45.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="777.0;520.2;520.2;777.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="45.0;148.4;148.4;45.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="725.3" cy="151.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="725.3;526.3;526.3;725.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="151.0;156.9;156.9;151.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="631.4" cy="98.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="631.4;531.9;531.9;631.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="98.8;166.8;166.8;98.8"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="414.2" cy="229.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="414.2;535.8;535.8;414.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="229.7;178.1;178.1;229.7"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="454.9" cy="148.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="454.9;536.9;536.9;454.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="148.6;190.3;190.3;148.6"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="288.9" cy="240.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="288.9;534.4;534.4;288.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="240.0;202.6;202.6;240.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="160.7" cy="136.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="160.7;527.8;527.8;160.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="136.7;214.4;214.4;136.7"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="522.2" cy="163.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="522.2;517.1;517.1;522.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="163.9;224.7;224.7;163.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="464.2" cy="167.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="464.2;502.7;502.7;464.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="167.6;232.7;232.7;167.6"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="773.0" cy="135.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="773.0;485.5;485.5;773.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="135.3;238.0;238.0;135.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="79.2" cy="80.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="79.2;466.7;466.7;79.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="80.8;240.0;240.0;80.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="206.8" cy="223.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="206.8;447.4;447.4;206.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="223.4;238.7;238.7;223.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="748.3" cy="150.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="748.3;429.0;429.0;748.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="150.3;234.3;234.3;150.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="61.6" cy="239.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="61.6;412.5;412.5;61.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="239.8;227.2;227.2;239.8"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="282.5" cy="89.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="282.5;398.8;398.8;282.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="89.4;218.1;218.1;89.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="768.8" cy="96.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="768.8;388.2;388.2;768.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="96.4;207.9;207.9;96.4"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="187.3" cy="179.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="187.3;380.6;380.6;187.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="179.1;197.3;197.3;179.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="838.0" cy="70.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="838.0;375.7;375.7;838.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="70.7;187.2;187.2;70.7"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="357.5" cy="217.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="357.5;372.6;372.6;357.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="217.5;178.1;178.1;217.5"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="327.3" cy="235.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="327.3;370.2;370.2;327.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="235.2;170.5;170.5;235.2"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="737.9" cy="158.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="737.9;367.5;367.5;737.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="158.1;164.3;164.3;158.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="223.7" cy="54.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="223.7;363.4;363.4;223.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="54.9;159.5;159.5;54.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="637.0" cy="51.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="637.0;357.3;357.3;637.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="51.2;155.6;155.6;51.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="195.3" cy="79.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="195.3;348.7;348.7;195.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="79.4;152.2;152.2;79.4"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="558.5" cy="214.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="558.5;337.7;337.7;558.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="214.5;148.4;148.4;214.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="147.9" cy="194.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="147.9;324.8;324.8;147.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="194.4;143.7;143.7;194.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="175.8" cy="200.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="175.8;310.8;310.8;175.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="200.1;137.7;137.7;200.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="151.9" cy="48.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="151.9;296.9;296.9;151.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="48.1;130.0;130.0;48.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="672.3" cy="51.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="672.3;284.5;284.5;672.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="51.6;120.6;120.6;51.6"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="427.4" cy="47.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="427.4;274.8;274.8;427.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="47.6;109.7;109.7;47.6"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="392.7" cy="154.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="392.7;269.0;269.0;392.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="154.9;97.8;97.8;154.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="462.2" cy="120.6"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="462.2;267.9;267.9;462.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="120.6;85.5;85.5;120.6"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="655.6" cy="142.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="655.6;271.9;271.9;655.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="142.1;73.8;73.8;142.1"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="844.0" cy="95.7"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="844.0;280.8;280.8;844.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="95.7;63.3;63.3;95.7"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="94.0" cy="50.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="94.0;294.2;294.2;94.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="50.2;54.8;54.8;50.2"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="184.1" cy="22.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="184.1;311.0;311.0;184.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="22.3;48.8;48.8;22.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="206.0" cy="76.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="206.0;330.1;330.1;206.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="76.0;45.6;45.6;76.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="287.7" cy="184.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="287.7;350.2;350.2;287.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="184.9;45.4;45.4;184.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="628.6" cy="124.5"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="628.6;369.9;369.9;628.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="124.5;47.7;47.7;124.5"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="573.6" cy="192.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="573.6;388.2;388.2;573.6"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="192.2;52.1;52.1;192.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="646.1" cy="22.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="646.1;404.3;404.3;646.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="22.2;57.9;57.9;22.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="298.3" cy="24.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="298.3;417.8;417.8;298.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="24.4;64.3;64.3;24.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="759.3" cy="177.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="759.3;429.0;429.0;759.3"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="177.4;70.5;70.5;177.4"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="529.4" cy="95.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="529.4;438.1;438.1;529.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="95.1;75.8;75.8;95.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="690.2" cy="47.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="690.2;446.2;446.2;690.2"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="47.3;79.8;79.8;47.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="300.1" cy="147.8"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="300.1;454.0;454.0;300.1"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="147.8;82.2;82.2;147.8"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="337.4" cy="159.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="337.4;462.6;462.6;337.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="159.0;83.1;83.1;159.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="779.5" cy="111.9"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="779.5;472.9;472.9;779.5"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="111.9;82.8;82.8;111.9"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="371.8" cy="24.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="371.8;485.4;485.4;371.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="24.2;81.9;81.9;24.2"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="264.0" cy="220.4"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="264.0;500.2;500.2;264.0"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="220.4;80.9;80.9;220.4"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="848.7" cy="76.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="848.7;517.3;517.3;848.7"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="76.0;80.7;80.7;76.0"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="605.9" cy="170.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="605.9;535.8;535.8;605.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="170.0;81.9;81.9;170.0"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="411.9" cy="225.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="411.9;554.8;554.8;411.9"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="225.1;85.0;85.0;225.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="185.4" cy="129.0"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="185.4;572.9;572.9;185.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="129.0;90.3;90.3;129.0"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="218.4" cy="29.1"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="218.4;588.9;588.9;218.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="29.1;97.8;97.8;29.1"/></circle>
|
||||
<circle r="3" fill="#1d6f7d" cx="736.4" cy="110.3"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="736.4;601.4;601.4;736.4"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="110.3;107.3;107.3;110.3"/></circle>
|
||||
<circle r="3" fill="#4dd4e8" cx="670.8" cy="115.2"><animate attributeName="cx" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="670.8;609.3;609.3;670.8"/><animate attributeName="cy" dur="11s" repeatCount="indefinite" calcMode="spline" keyTimes="0;0.64;0.82;1" keySplines="0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1" values="115.2;118.2;118.2;115.2"/></circle>
|
||||
<text x="16" y="26" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="14" fill="#4dd4e8">S = 100.0 k·bits</text>
|
||||
<text x="864" y="26" text-anchor="end" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="14" fill="#7ee2a8">dS/dt < 0</text>
|
||||
<text x="864" y="246" text-anchor="end" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="11" fill="#8b949e">bits sorted by visitors: 0</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 52 KiB |
120
engine/generate_entropy_svg.py
Normal file
120
engine/generate_entropy_svg.py
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Generate assets/entropy.svg — a SMIL-animated entropy-reversal field.
|
||||
|
||||
120 particles loop from a seeded chaos cloud into a (2,5) torus-knot
|
||||
lattice, hold, and scatter back. State (bits sorted by visitors, chaos
|
||||
generation) comes from state/demon.json. Stdlib only; deterministic for
|
||||
a given generation so regenerated output is diffable.
|
||||
"""
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import sys
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
STATE_PATH = os.path.join(ROOT, "state", "demon.json")
|
||||
OUT_PATH = os.path.join(ROOT, "assets", "entropy.svg")
|
||||
|
||||
WIDTH, HEIGHT = 880, 260
|
||||
MARGIN = 20
|
||||
N_PARTICLES = 120
|
||||
KNOT_R, KNOT_r = 150, 58
|
||||
DUR = "11s"
|
||||
KEY_TIMES = "0;0.64;0.82;1"
|
||||
KEY_SPLINES = "0.25 0.1 0.25 1;0 0 1 1;0.55 0 0.45 1"
|
||||
|
||||
BG = "#010409"
|
||||
BORDER = "#21262d"
|
||||
CYAN = "#4dd4e8"
|
||||
DEEP = "#1d6f7d"
|
||||
GREEN = "#7ee2a8"
|
||||
MUTED = "#8b949e"
|
||||
|
||||
|
||||
def seeded_unit(index, generation, channel):
|
||||
"""Deterministic float in [0, 1) from particle index + generation."""
|
||||
digest = hashlib.sha256(f"{index}:{generation}:{channel}".encode()).digest()
|
||||
return int.from_bytes(digest[:8], "big") / 2**64
|
||||
|
||||
|
||||
def knot_points(n):
|
||||
"""(2,5) torus knot sampled at n points, scaled/centered to the canvas."""
|
||||
raw = []
|
||||
for i in range(n):
|
||||
t = 2 * math.pi * i / n
|
||||
rad = KNOT_R + KNOT_r * math.cos(5 * t)
|
||||
raw.append((rad * math.cos(2 * t), 0.62 * rad * math.sin(2 * t)))
|
||||
xs, ys = [p[0] for p in raw], [p[1] for p in raw]
|
||||
span_x, span_y = max(xs) - min(xs), max(ys) - min(ys)
|
||||
scale = min((WIDTH - 2 * MARGIN) / span_x, (HEIGHT - 2 * MARGIN) / span_y)
|
||||
cx, cy = (max(xs) + min(xs)) / 2, (max(ys) + min(ys)) / 2
|
||||
return [
|
||||
(WIDTH / 2 + (x - cx) * scale, HEIGHT / 2 + (y - cy) * scale)
|
||||
for x, y in raw
|
||||
]
|
||||
|
||||
|
||||
def main():
|
||||
with open(STATE_PATH) as fh:
|
||||
state = json.load(fh)
|
||||
bits = int(state.get("bits_sorted", 0))
|
||||
generation = int(state.get("generation", 0))
|
||||
entropy = max(12.7, 100 - 0.0002 * bits)
|
||||
s_label = f"{entropy:.1f}"
|
||||
|
||||
lattice = knot_points(N_PARTICLES)
|
||||
parts = [
|
||||
f'<svg xmlns="http://www.w3.org/2000/svg" width="{WIDTH}" height="{HEIGHT}" '
|
||||
f'viewBox="0 0 {WIDTH} {HEIGHT}" role="img" '
|
||||
f'aria-label="Entropy-reversal field: S = {s_label} k-bits">',
|
||||
f'<rect x="0.5" y="0.5" width="{WIDTH - 1}" height="{HEIGHT - 1}" '
|
||||
f'rx="8" fill="{BG}" stroke="{BORDER}"/>',
|
||||
]
|
||||
|
||||
for i, (lx, ly) in enumerate(lattice):
|
||||
chaos_x = MARGIN + seeded_unit(i, generation, "x") * (WIDTH - 2 * MARGIN)
|
||||
chaos_y = MARGIN + seeded_unit(i, generation, "y") * (HEIGHT - 2 * MARGIN)
|
||||
fill = DEEP if seeded_unit(i, generation, "depth") < 0.3 else CYAN
|
||||
cxv = f"{chaos_x:.1f};{lx:.1f};{lx:.1f};{chaos_x:.1f}"
|
||||
cyv = f"{chaos_y:.1f};{ly:.1f};{ly:.1f};{chaos_y:.1f}"
|
||||
parts.append(
|
||||
f'<circle r="3" fill="{fill}" cx="{chaos_x:.1f}" cy="{chaos_y:.1f}">'
|
||||
f'<animate attributeName="cx" dur="{DUR}" repeatCount="indefinite" '
|
||||
f'calcMode="spline" keyTimes="{KEY_TIMES}" keySplines="{KEY_SPLINES}" '
|
||||
f'values="{cxv}"/>'
|
||||
f'<animate attributeName="cy" dur="{DUR}" repeatCount="indefinite" '
|
||||
f'calcMode="spline" keyTimes="{KEY_TIMES}" keySplines="{KEY_SPLINES}" '
|
||||
f'values="{cyv}"/>'
|
||||
f'</circle>'
|
||||
)
|
||||
|
||||
font = 'font-family="ui-monospace,SFMono-Regular,Menlo,monospace"'
|
||||
parts.append(
|
||||
f'<text x="16" y="26" {font} font-size="14" fill="{CYAN}">'
|
||||
f'S = {s_label} k·bits</text>'
|
||||
)
|
||||
parts.append(
|
||||
f'<text x="{WIDTH - 16}" y="26" text-anchor="end" {font} '
|
||||
f'font-size="14" fill="{GREEN}">dS/dt < 0</text>'
|
||||
)
|
||||
parts.append(
|
||||
f'<text x="{WIDTH - 16}" y="{HEIGHT - 14}" text-anchor="end" {font} '
|
||||
f'font-size="11" fill="{MUTED}">bits sorted by visitors: {bits}</text>'
|
||||
)
|
||||
parts.append("</svg>")
|
||||
|
||||
svg = "\n".join(parts) + "\n"
|
||||
os.makedirs(os.path.dirname(OUT_PATH), exist_ok=True)
|
||||
with open(OUT_PATH, "w") as fh:
|
||||
fh.write(svg)
|
||||
size = os.path.getsize(OUT_PATH)
|
||||
print(f"wrote {OUT_PATH} ({size} bytes, S={s_label}, bits={bits}, gen={generation})")
|
||||
if size > 200 * 1024:
|
||||
print("error: SVG exceeds 200 KB budget", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
1
state/demon.json
Normal file
1
state/demon.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{ "bits_sorted": 0, "generation": 0, "demons": 0, "last_sorted_at": null }
|
||||
Loading…
Add table
Add a link
Reference in a new issue