1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2025-02-16 17:42:06 +00:00

illustration of a fork

A fork illustrated with shapes instead of colors, so that it works in black-and-white print.
This commit is contained in:
Andreas M. Antonopoulos 2017-02-10 14:35:01 +07:00
parent d31f9a21bb
commit c4385fce76
16 changed files with 6243 additions and 16 deletions

View File

@ -750,45 +750,55 @@ In the next section we will look at how discrepancies between competing chains (
((("blockchains","forks", id="ix_ch10-asciidoc22", range="startofrange")))Because the blockchain is a decentralized data structure, different copies of it are not always consistent. Blocks might arrive at different nodes at different times, causing the nodes to have different perspectives of the blockchain. To resolve this, each node always selects and attempts to extend the chain of blocks that represents the most proof of work, also known as the longest chain or greatest cumulative work chain. By summing the work recorded in each block in a chain, a node can calculate the total amount of work that has been expended to create that chain. As long as all nodes select the greatest-cumulative-work chain, the global bitcoin network eventually converges to a consistent state. Forks occur as temporary inconsistencies between versions of the blockchain, which are resolved by eventual reconvergence as more blocks are added to one of the forks.
In the next few diagrams, we follow the progress of a "fork" event across the network. The diagram is a simplified representation of bitcoin as a global network. In reality, the bitcoin network's topology is not organized geographically. Rather, it forms a mesh network of interconnected nodes, which might be located very far from each other geographically. The representation of a geographic topology is a simplification used for the purposes of illustrating a fork. In the real bitcoin network, the "distance" between nodes is measured in "hops" from node to node, not on their physical location. For illustration purposes, different blocks are shown as different colors, spreading across the network and coloring the connections they traverse.
In the next few diagrams, we follow the progress of a "fork" event across the network. The diagram is a simplified representation of the bitcoin network. For illustration purposes, different blocks are shown as different shapes (star, triangle, upside down triangle, rhombus), spreading across the network. Each node in the network is represented as a circle.
In the first diagram (<<fork1>>), the network has a unified perspective of the blockchain, with the blue block as the tip of the main chain.
Each node has its own perspective of the global blockchain. As each node receives blocks from its neighbors, it updates its own copy of the blockchain, selecting the greatest-cumulative-work chain. For illustration purposes, each node contains a shape that represents the block that it believes is currently the tip of the main chain. So, if you see a star shape in the node, that means that the star block is the tip of the main chain, as far as that node is concerned.
In the first diagram (<<fork1>>), the network has a unified perspective of the blockchain, with the star block as the tip of the main chain.
[[fork1]]
.Visualization of a blockchain fork event—before the fork
image::images/msbt_0802.png["globalfork1"]
.Before the fork - all nodes have the same perspective
image::images/fork1.png["Before the fork - all nodes have the same perspective"]
A "fork" occurs whenever there are two candidate blocks competing to form the longest blockchain. This occurs under normal conditions whenever two miners solve the proof-of-work algorithm within a short period of time from each other. As both miners discover a solution for their respective candidate blocks, they immediately broadcast their own "winning" block to their immediate neighbors who begin propagating the block across the network. Each node that receives a valid block will incorporate it into its blockchain, extending the blockchain by one block. If that node later sees another candidate block extending the same parent, it connects the second candidate on a secondary chain. As a result, some nodes will "see" one candidate block first, while other nodes will see the other candidate block and two competing versions of the blockchain will emerge.
In <<fork2>>, we see two miners who mine two different blocks almost simultaneously. Both of these blocks are children of the blue block, meant to extend the chain by building on top of the blue block. To help us track it, one is visualized as a red block originating from Canada, and the other is marked as a green block originating from Australia.
In <<fork2>>, we see two miners (Node A and Node B) who mine two different blocks almost simultaneously. Both of these blocks are children of the star block, and extend the chain by building on top of the star block. To help us track it, one is visualized as a triangle block originating from Node A, and the other is shown as an upside-down black triangle block originating from Node B.
Let's assume, for example, that a miner in Canada finds a proof-of-work solution for a block "red" that extends the blockchain, building on top of the parent block "blue." Almost simultaneously, an Australian miner who was also extending block "blue" finds a solution for block "green," his candidate block. Now, there are two possible blocks, one we call "red," originating in Canada, and one we call "green," originating in Australia. Both blocks are valid, both blocks contain a valid solution to the proof of work, and both blocks extend the same parent. Both blocks likely contain most of the same transactions, with only perhaps a few differences in the order of transactions.
Let's assume, for example, that a miner Node A finds a proof-of-work solution for a block "triangle" that extends the blockchain, building on top of the parent block "star." Almost simultaneously, the miner Node B who was also extending the chain from block "star" finds a solution for block "upside-down black triangle," his candidate block. Now, there are two possible blocks, one we call "triangle," originating in Node A, and one we call "upside-down black triangle," originating in Node B. Both blocks are valid, both blocks contain a valid solution to the proof of work, and both blocks extend the same parent (block "star"). Both blocks likely contain most of the same transactions, with only perhaps a few differences in the order of transactions.
[[fork2]]
.Visualization of a blockchain fork event: two blocks found simultaneously
image::images/msbt_0803.png["globalfork2"]
image::images/fork2.png["Visualization of a blockchain fork event: two blocks found simultaneously"]
As the two blocks propagate, some nodes receive block "red" first and some receive block "green" first. As shown in <<fork3>>, the network splits into two different perspectives of the blockchain, one side topped with a red block, the other with a green block.
As the two blocks propagate, some nodes receive block "triangle" first and some receive block "upside-down black triangle" first. As shown in <<fork3>>, the network splits into two different perspectives of the blockchain, one side topped with a triangle block, the other with the upside-down-triangle block.
In the diagram, a randomly chosen "Node X" received the triangle block first and extended the star chain with it. Node X selected the chain with "triangle" block as the main chain. Later, Node X also received the "upside-down black triangle" block. Since it was received second, it is assumed to have "lost" the race. Yet, the "upside-down black triangle" block is not discarded. It is linked to the "star" block parent and forms a secondary chain. While Node X assumes it has correctly selected the winning chain, it keeps the "losing" chain so that it has the information needed to reconverge if the "losing" chain ends up "winning".
On the other side of the network, Node Y constructs a blockchain based on its own perspective of the sequence of events. It received "upside-down black triangle" first and elected that chain as the "winner". When it later received "triangle" block, it connected it to the "star" block parent as a secondary chain.
Neither side is "correct," or "incorrect". Both are valid perspectives of the blockchain. Only in hindsight will one prevail, based on how these two competing chains are extended by additional work.
[[fork3]]
.Visualization of a blockchain fork event: two blocks propagate, splitting the network
image::images/msbt_0804.png["globalfork3"]
image::images/fork3.png["Visualization of a blockchain fork event: two blocks propagate, splitting the network"]
From that moment, the bitcoin network nodes closest (topologically, not geographically) to the Canadian node will hear about block "red" first and will create a new greatest-cumulative-work blockchain with "red" as the last block in the chain (e.g., blue-red), ignoring the candidate block "green" that arrives a bit later. Meanwhile, nodes closer to the Australian node will take that block as the winner and extend the blockchain with "green" as the last block (e.g., blue-green), ignoring "red" when it arrives a few seconds later. Any miners that saw "red" first will immediately build candidate blocks that reference "red" as the parent and start trying to solve the proof of work for these candidate blocks. The miners that accepted "green" instead will start building on top of "green" and extending that chain.
Mining nodes whose perspective resembles Node X will immediately beging mining a candidate block that extends the chain with "triangle" as its tip. By linking "triangle" as the parent of their candidate block, they are voting with their hashing power. Their vote supports the chain that they have elected as the main chain.
Forks are almost always resolved within one block. As part of the network's hashing power is dedicated to building on top of "red" as the parent, another part of the hashing power is focused on building on top of "green." Even if the hashing power is almost evenly split, it is likely that one set of miners will find a solution and propagate it before the other set of miners have found any solutions. Let's say, for example, that the miners building on top of "green" find a new block "pink" that extends the chain (e.g., blue-green-pink). They immediately propagate this new block and the entire network sees it as a valid solution as shown in <<fork4>>.
Any mining node whose perspective resembles Node Y, will start building a candidate node with "upside-down black triangle" as its parent, extending the chain that they believe is the main chain. And so, the race begins again.
Forks are almost always resolved within one block. While part of the network's hashing power is dedicated to building on top of "triangle" as the parent, another part of the hashing power is focused on building on top of "upside-down black triangle." Even if the hashing power is almost evenly split, it is likely that one set of miners will find a solution and propagate it before the other set of miners have found any solutions. Let's say, for example, that the miners building on top of "triangle" find a new block "rhombus" that extends the chain (e.g., star-triangle-rhombus). They immediately propagate this new block and the entire network sees it as a valid solution as shown in <<fork4>>.
[[fork4]]
.Visualization of a blockchain fork event: a new block extends one fork
image::images/msbt_0805.png["globalfork4"]
.Visualization of a blockchain fork event: a new block extends one fork, reconverging the network
image::images/fork4.png["Visualization of a blockchain fork event: a new block extends one fork"]
All nodes that had chosen "green" as the winner in the previous round will simply extend the chain one more block. The nodes that chose "red" as the winner, however, will now see two chains: blue-green-pink and blue-red. The chain blue-green-pink is now longer (more cumulative work) than the chain blue-red. As a result, those nodes will set the chain blue-green-pink as main chain and change the blue-red chain to being a secondary chain, as shown in <<fork5>>. This is a chain reconvergence, because those nodes are forced to revise their view of the blockchain to incorporate the new evidence of a longer chain. Any miners working on extending the chain blue-red will now stop that work because their candidate block is an "orphan," as its parent "red" is no longer on the longest chain. The transactions within "red" are queued up again for processing in the next block, because that block is no longer in the main chain. The entire network re-converges on a single blockchain blue-green-pink, with "pink" as the last block in the chain. All miners immediately start working on candidate blocks that reference "pink" as their parent to extend the blue-green-pink chain.
All nodes that had chosen "triangle" as the winner in the previous round will simply extend the chain one more block. The nodes that chose "upside-down black triangle" as the winner, however, will now see two chains: star-triangle-rhombus and star-upside-down-black-triangle. The chain star-triangle-rhombus is now longer (more cumulative work) than the other chain. As a result, those nodes will set the chain star-triangle-rhombus as main chain and change the star-upside-down-black-triangle chain to being a secondary chain, as shown in <<fork4>>. This is a chain reconvergence, because those nodes are forced to revise their view of the blockchain to incorporate the new evidence of a longer chain. Any miners working on extending the chain star-upside-down-black-triangle will now stop that work because their candidate block is an "orphan," as its parent "upside-down-black-triangle" is no longer on the longest chain. The transactions within "upside-down-black-triangle" are re-inserted in the mempool for inclusion in the next block, because the block they were in is no longer in the main chain. The entire network re-converges on a single blockchain star-triangle-rhombus, with "rhombus" as the last block in the chain. All miners immediately start working on candidate blocks that reference "rhombus" as their parent to extend the star-triangle-rhombus chain.
[[fork5]]
.Visualization of a blockchain fork event: the network reconverges on a new longest chain
image::images/msbt_0806.png["globalfork5"]
image::images/fork5.png["Visualization of a blockchain fork event: the network reconverges on a new longest chain"]
It is theoretically possible for a fork to extend to two blocks, if two blocks are found almost simultaneously by miners on opposite "sides" of a previous fork. However, the chance of that happening is very low. Whereas a one-block fork might occur every week, a two-block fork is exceedingly rare.
It is theoretically possible for a fork to extend to two blocks, if two blocks are found almost simultaneously by miners on opposite "sides" of a previous fork. However, the chance of that happening is very low. Whereas a one-block fork might occur every day, a two-block fork occurs once every few weeks.
Bitcoin's block interval of 10 minutes is a design compromise between fast confirmation times (settlement of transactions) and the probability of a fork. A faster block time would make transactions clear faster but lead to more frequent blockchain forks, whereas a slower block time would decrease the number of forks but make settlement slower.(((range="endofrange", startref="ix_ch10-asciidoc22")))(((range="endofrange", startref="ix_ch10-asciidoc21")))(((range="endofrange", startref="ix_ch10-asciidoc20")))(((range="endofrange", startref="ix_ch10-asciidoc19")))(((range="endofrange", startref="ix_ch10-asciidoc18")))

BIN
images/fork1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

958
images/fork1.svg Normal file
View File

@ -0,0 +1,958 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="142.04596mm"
height="101.29889mm"
viewBox="0 0 503.31245 358.93307"
id="svg4966"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="fork1.svg"
inkscape:export-filename="/home/aantonop/Dev/mastering-bitcoin-2e/images/fork1.png"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300">
<defs
id="defs4968">
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="marker7131"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path7133"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="marker7061"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path7063"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)"
inkscape:connector-curvature="0" />
</marker>
<linearGradient
inkscape:collect="always"
id="linearGradient6096">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6098" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6100" />
</linearGradient>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4902"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4914"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(-0.6,-0.6)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4896"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Tail"
orient="auto"
refY="0"
refX="0"
id="Tail"
style="overflow:visible"
inkscape:isstock="true">
<g
id="g4923"
transform="scale(-1.2,-1.2)"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<path
id="path4925"
d="M -3.8048674,-3.9585227 0.54352094,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4927"
d="M -1.2866832,-3.9585227 3.0617053,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4929"
d="M 1.3053582,-3.9585227 5.6537466,0"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4931"
d="M -3.8048674,4.1775838 0.54352094,0.21974226"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4933"
d="M -1.2866832,4.1775838 3.0617053,0.21974226"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path4935"
d="M 1.3053582,4.1775838 5.6537466,0.21974226"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4890"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18108 : 1"
inkscape:vp_y="0 : 999.99997 : 0"
inkscape:vp_z="744.09446 : 526.18108 : 1"
inkscape:persp3d-origin="372.04722 : 350.78739 : 1"
id="perspective6062" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6096"
id="linearGradient6102"
x1="73.551819"
y1="421.85797"
x2="73.577026"
y2="439.60587"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6096"
id="linearGradient7566"
gradientUnits="userSpaceOnUse"
x1="73.551819"
y1="421.85797"
x2="73.577026"
y2="439.60587" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8918083"
inkscape:cx="199.32536"
inkscape:cy="179.46654"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="in"
inkscape:window-width="1366"
inkscape:window-height="747"
inkscape:window-x="0"
inkscape:window-y="21"
inkscape:window-maximized="1"
fit-margin-top="5"
fit-margin-left="5"
fit-margin-right="5"
fit-margin-bottom="5" />
<metadata
id="metadata4971">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-63.832655,-337.00282)">
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778"
cx="472.5"
cy="499.86218"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-3"
cx="347.85715"
cy="573.07648"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-6"
cx="352.85712"
cy="451.64789"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-7"
cx="537.85712"
cy="610.2193"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-5"
cx="368.57141"
cy="504.50507"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-35"
cx="390"
cy="422.36221"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62"
cx="267.14285"
cy="523.07648"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-9"
cx="444.28571"
cy="595.93365"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-1"
cx="542.14288"
cy="543.07648"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-2"
cx="532.85712"
cy="447.36218"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-70"
cx="374.28571"
cy="628.07648"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-93"
cx="281.42856"
cy="590.21936"
r="7.0393372" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 396.93391,423.57565 128.9893,22.5731"
id="path5855"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-35"
inkscape:connection-end="#path5778-2" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 527.54596,451.98195 -49.7348,43.26047"
id="path5857"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-2"
inkscape:connection-end="#path5778" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 533.53684,454.36857 7.92632,81.70152"
id="path5859"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-2"
inkscape:connection-end="#path5778-1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 541.69448,550.10143 -3.38896,53.09291"
id="path5861"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-1"
inkscape:connection-end="#path5778-7" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 535.94942,546.42185 -85.47025,46.16643"
id="path5863"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-1"
inkscape:connection-end="#path5778-9" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 465.4678,500.17634 -89.86419,4.01457"
id="path5865"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778"
inkscape:connection-end="#path5778-5" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 368.89658,511.53679 5.06396,109.50796"
id="path5867"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-5"
inkscape:connection-end="#path5778-70" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 366.53581,511.24361 -16.64306,55.09432"
id="path5869"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-5"
inkscape:connection-end="#path5778-3" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 366.56545,497.75773 354.86308,458.39522"
id="path5871"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-end="#path5778-6"
inkscape:connection-start="#path5778-5" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 361.64728,505.77286 -87.5803,16.03582"
id="path5873"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-5"
inkscape:connection-end="#path5778-62" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 268.60778,529.96166 11.35585,53.37252"
id="path5875"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62"
inkscape:connection-end="#path5778-93" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 287.94686,592.87682 79.82054,32.5422"
id="path5877"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-end="#path5778-70"
inkscape:connection-start="#path5778-93" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 380.68282,625.13903 437.88859,598.8711"
id="path5881"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-70"
inkscape:connection-end="#path5778-9" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 395.13051,427.18178 72.23898,67.86083"
id="path5883"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-35"
inkscape:connection-end="#path5778" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 359.38615,454.27899 106.58481,42.95209"
id="path5885"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-end="#path5778"
inkscape:connection-start="#path5778-6" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62-6"
cx="449.28571"
cy="546.64789"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62-0"
cx="476.42859"
cy="633.79077"
r="7.0393372"
inkscape:transform-center-x="32.142857"
inkscape:transform-center-y="-92.142835" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62-62"
cx="331.42856"
cy="670.93365"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62-61"
cx="194.28571"
cy="475.21936"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62-8"
cx="229.28571"
cy="620.93365"
r="7.0393372" />
<circle
style="fill:none;stroke:#000000;stroke-width:0.49275362"
id="path5778-62-7"
cx="310.71429"
cy="405.21936"
r="7.0393372" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 317.59452,406.70698 65.52525,14.16762"
id="path5932"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-7"
inkscape:connection-end="#path5778-35" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 200.31857,471.59224 304.68143,408.84648"
id="path5934"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-61"
inkscape:connection-end="#path5778-62-7" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 200.16917,479.08399 61.09021,40.12786"
id="path5936"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-61"
inkscape:connection-end="#path5778-62" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 336.40612,665.95609 32.90202,-32.90205"
id="path5938"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-62"
inkscape:connection-end="#path5778-70" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 235.60814,624.02855 89.49798,43.8102"
id="path5942"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-8"
inkscape:connection-end="#path5778-62-62" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 471.87259,628.42482 448.84171,601.2996"
id="path5944"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-0"
inkscape:connection-end="#path5778-9" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 381.31392,628.46966 88.08645,4.92792"
id="path5946"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-70"
inkscape:connection-end="#path5778-62-0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 444.99618,588.93036 3.57905,-35.27918"
id="path5948"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-9"
inkscape:connection-end="#path5778-62-6" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 367.2549,627.73013 236.31651,621.28"
id="path5969"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-70"
inkscape:connection-end="#path5778-62-8" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 235.35091,617.361 40.01245,-23.56899"
id="path5971"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#path5778-62-8"
inkscape:connection-end="#path5778-93" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-8"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,137.5819,77.339219)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-84"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,210.43904,125.19636)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-3"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,254.72475,7.33922)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-1"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,333.29619,23.767792)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-4"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,476.15333,49.482081)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-9"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,481.86761,212.33922)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-2"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,486.15333,144.48208)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-0"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,296.86761,53.053506)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-68"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,392.5819,148.76779)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-92"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,388.29619,197.33922)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-66"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,420.43904,235.19636)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-49"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,291.15333,175.19637)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-5"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,317.5819,229.48208)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-04"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,275.43905,273.05351)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-87"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,172.5819,223.05351)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-27"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,224.72476,191.62494)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-22"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,311.86761,105.91065)" />
<path
sodipodi:type="star"
style="fill:none;stroke:#000000"
id="path6036-61"
sodipodi:sides="5"
sodipodi:cx="72.142853"
sodipodi:cy="481.64792"
sodipodi:r1="7.6930928"
sodipodi:r2="3.8465464"
sodipodi:arg1="-2.7610863"
sodipodi:arg2="-2.1327677"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:transform-center-x="-0.1235711"
inkscape:transform-center-y="-0.48236571"
transform="matrix(0.78402909,0,0,0.82722943,416.15333,102.33922)" />
<g
id="g4853"
transform="translate(42,10)">
<g
id="g4846">
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
d="m 52.5,345.21936 45,0 c 1.385,0 2.5,1.115 2.5,2.5 l 0,53.57143 0,14.92014 48.06723,40.85714 L 100,431.74034 l 0,23.12188 c 0,1.385 -1.115,2.5 -2.5,2.5 l -45,0 c -1.385,0 -2.5,-1.115 -2.5,-2.5 l 0,-107.14286 c 0,-1.385 1.115,-2.5 2.5,-2.5 z"
id="rect4043"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssccccssssss" />
</g>
<text
transform="matrix(0,-1,1,0,0,0)"
sodipodi:linespacing="125%"
id="text4849"
y="47.8988"
x="-437.69949"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-size:11.25px"
y="47.8988"
x="-437.69949"
id="tspan4851"
sodipodi:role="line">BLOCKCHAIN</tspan></text>
</g>
<g
id="g4877"
transform="translate(44,-6)">
<rect
ry="2.5"
rx="2.5"
y="427.98822"
x="61.264706"
height="17.857147"
width="25.000006"
id="rect5975-2"
style="fill:none;stroke:#000000" />
<path
transform="matrix(0.78402909,0,0,0.82722943,17.060892,39.036675)"
inkscape:transform-center-y="-0.48236571"
inkscape:transform-center-x="-0.1235711"
d="m 64.999995,478.79078 5.093205,-0.39783 2.559693,-4.4212 1.952244,4.72099 4.995795,1.06819 -3.886651,3.31556 0.527878,5.08137 -4.354326,-2.67186 -4.669549,2.07227 1.195529,-4.96686 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="false"
sodipodi:arg2="-2.1327677"
sodipodi:arg1="-2.7610863"
sodipodi:r2="3.8465464"
sodipodi:r1="7.6930928"
sodipodi:cy="481.64792"
sodipodi:cx="72.142853"
sodipodi:sides="5"
id="path6036"
style="fill:none;stroke:#000000"
sodipodi:type="star" />
</g>
<g
id="g4877-3"
transform="translate(43.986447,25.562827)"
style="fill:url(#linearGradient6102);fill-opacity:1">
<rect
ry="2.5"
rx="2.5"
y="421.98822"
x="61.264706"
height="17.857147"
width="25.000006"
id="rect5975-2-6"
style="opacity:0.81999984;fill:url(#linearGradient7566);fill-opacity:1;stroke:none" />
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 117.75116,456.47962 0,0"
id="path7055"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g4877-3"
inkscape:connection-end="#g4877-3" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker7131)"
d="m 117.6878,439.84537 -0.0656,7.61248"
id="path7059"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g4877" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

BIN
images/fork2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

1322
images/fork2.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 49 KiB

BIN
images/fork3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

1272
images/fork3.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 47 KiB

BIN
images/fork4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

1457
images/fork4.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 53 KiB

BIN
images/fork5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

1208
images/fork5.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB