Warning, /frameworks/syntax-highlighting/autotests/reference/test.sol.ref is written in an unsupported language. File is not indexed.

0001 <Comment>// Solidity Sample File</Comment><br/>
0002 <Comment>// https://solidity.readthedocs.io/en/latest/solidity-by-example.html#voting</Comment><br/>
0003 <Normal Text></Normal Text><br/>
0004 <Keyword>pragma</Keyword><Normal Text> </Normal Text><Built-in>solidity</Built-in><Normal Text> >=0.4.22 <0.7.0;</Normal Text><br/>
0005 <Normal Text></Normal Text><br/>
0006 <Comment>/// </Comment><Custom Tags>@title</Custom Tags><Comment> Voting with delegation.</Comment><br/>
0007 <Control Structures>contract</Control Structures><Normal Text> Ballot </Normal Text><Symbol>{</Symbol><br/>
0008 <Normal Text>    </Normal Text><Comment>// This declares a new complex type which will</Comment><br/>
0009 <Normal Text>    </Normal Text><Comment>// be used for variables later.</Comment><br/>
0010 <Normal Text>    </Normal Text><Comment>// It will represent a single voter.</Comment><br/>
0011 <Normal Text>    </Normal Text><Keyword>struct</Keyword><Normal Text> Voter </Normal Text><Symbol>{</Symbol><br/>
0012 <Normal Text>        </Normal Text><Data Type>uint</Data Type><Normal Text> weight</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// weight is accumulated by delegation</Comment><br/>
0013 <Normal Text>        </Normal Text><Data Type>bool</Data Type><Normal Text> voted</Normal Text><Symbol>;</Symbol><Normal Text>  </Normal Text><Comment>// if true, that person already voted</Comment><br/>
0014 <Normal Text>        </Normal Text><Data Type>address</Data Type><Normal Text> delegate</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// person delegated to</Comment><br/>
0015 <Normal Text>        </Normal Text><Data Type>uint</Data Type><Normal Text> vote</Normal Text><Symbol>;</Symbol><Normal Text>   </Normal Text><Comment>// index of the voted proposal</Comment><br/>
0016 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0017 <Normal Text></Normal Text><br/>
0018 <Normal Text>    </Normal Text><Comment>// This is a type for a single proposal.</Comment><br/>
0019 <Normal Text>    </Normal Text><Keyword>struct</Keyword><Normal Text> Proposal </Normal Text><Symbol>{</Symbol><br/>
0020 <Normal Text>        </Normal Text><Data Type>bytes32</Data Type><Normal Text> name</Normal Text><Symbol>;</Symbol><Normal Text>   </Normal Text><Comment>// short name (up to 32 bytes)</Comment><br/>
0021 <Normal Text>        </Normal Text><Data Type>uint</Data Type><Normal Text> voteCount</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// number of accumulated votes</Comment><br/>
0022 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0023 <Normal Text></Normal Text><br/>
0024 <Normal Text>    </Normal Text><Data Type>address</Data Type><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> chairperson</Normal Text><Symbol>;</Symbol><br/>
0025 <Normal Text></Normal Text><br/>
0026 <Normal Text>    </Normal Text><Comment>// This declares a state variable that</Comment><br/>
0027 <Normal Text>    </Normal Text><Comment>// stores a `Voter` struct for each possible address.</Comment><br/>
0028 <Normal Text>    </Normal Text><Data Type>mapping</Data Type><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> </Normal Text><Symbol>=></Symbol><Normal Text> Voter</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> voters</Normal Text><Symbol>;</Symbol><br/>
0029 <Normal Text></Normal Text><br/>
0030 <Normal Text>    </Normal Text><Comment>// A dynamically-sized array of `Proposal` structs.</Comment><br/>
0031 <Normal Text>    Proposal</Normal Text><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> proposals</Normal Text><Symbol>;</Symbol><br/>
0032 <Normal Text></Normal Text><br/>
0033 <Normal Text>    </Normal Text><Comment>/// Create a new ballot to choose one of `proposalNames`.</Comment><br/>
0034 <Normal Text>    </Normal Text><Control Structures>constructor</Control Structures><Symbol>(</Symbol><Data Type>bytes32</Data Type><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>memory</Keyword><Normal Text> proposalNames</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0035 <Normal Text>        chairperson </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>;</Symbol><br/>
0036 <Normal Text>        voters</Normal Text><Symbol>[</Symbol><Normal Text>chairperson</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>;</Symbol><br/>
0037 <Normal Text></Normal Text><br/>
0038 <Normal Text>        </Normal Text><Comment>// For each of the provided proposal names,</Comment><br/>
0039 <Normal Text>        </Normal Text><Comment>// create a new proposal object and add it</Comment><br/>
0040 <Normal Text>        </Normal Text><Comment>// to the end of the array.</Comment><br/>
0041 <Normal Text>        </Normal Text><Control Structures>for</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> i </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><Normal Text> i </Normal Text><Symbol><</Symbol><Normal Text> proposalNames</Normal Text><Symbol>.</Symbol><Normal Text>length</Normal Text><Symbol>;</Symbol><Normal Text> i</Normal Text><Built-in>++</Built-in><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0042 <Normal Text>            </Normal Text><Comment>// `Proposal({...})` creates a temporary</Comment><br/>
0043 <Normal Text>            </Normal Text><Comment>// Proposal object and `proposals.push(...)`</Comment><br/>
0044 <Normal Text>            </Normal Text><Comment>// appends it to the end of `proposals`.</Comment><br/>
0045 <Normal Text>            proposals</Normal Text><Symbol>.</Symbol><Normal Text>push</Normal Text><Symbol>(</Symbol><Normal Text>Proposal</Normal Text><Symbol>({</Symbol><br/>
0046 <Normal Text>                name</Normal Text><Symbol>:</Symbol><Normal Text> proposalNames</Normal Text><Symbol>[</Symbol><Normal Text>i</Normal Text><Symbol>],</Symbol><br/>
0047 <Normal Text>                voteCount</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/>
0048 <Normal Text>            </Normal Text><Symbol>}));</Symbol><br/>
0049 <Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
0050 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0051 <Normal Text></Normal Text><br/>
0052 <Normal Text>    </Normal Text><Comment>// Give `voter` the right to vote on this ballot.</Comment><br/>
0053 <Normal Text>    </Normal Text><Comment>// May only be called by `chairperson`.</Comment><br/>
0054 <Normal Text>    </Normal Text><Control Structures>function</Control Structures><Normal Text> giveRightToVote</Normal Text><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> voter</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0055 <Normal Text>        </Normal Text><Comment>// If the first argument of `require` evaluates</Comment><br/>
0056 <Normal Text>        </Normal Text><Comment>// to `false`, execution terminates and all</Comment><br/>
0057 <Normal Text>        </Normal Text><Comment>// changes to the state and to Ether balances</Comment><br/>
0058 <Normal Text>        </Normal Text><Comment>// are reverted.</Comment><br/>
0059 <Normal Text>        </Normal Text><Comment>// This used to consume all gas in old EVM versions, but</Comment><br/>
0060 <Normal Text>        </Normal Text><Comment>// not anymore.</Comment><br/>
0061 <Normal Text>        </Normal Text><Comment>// It is often a good idea to use `require` to check if</Comment><br/>
0062 <Normal Text>        </Normal Text><Comment>// functions are called correctly.</Comment><br/>
0063 <Normal Text>        </Normal Text><Comment>// As a second argument, you can also provide an</Comment><br/>
0064 <Normal Text>        </Normal Text><Comment>// explanation about what went wrong.</Comment><br/>
0065 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/>
0066 <Normal Text>            </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender </Normal Text><Symbol>==</Symbol><Normal Text> chairperson</Normal Text><Symbol>,</Symbol><br/>
0067 <Normal Text>            </Normal Text><String>"Only chairperson can give right to vote."</String><br/>
0068 <Normal Text>        </Normal Text><Symbol>);</Symbol><br/>
0069 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/>
0070 <Normal Text>            </Normal Text><Symbol>!</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><br/>
0071 <Normal Text>            </Normal Text><String>"The voter already voted."</String><br/>
0072 <Normal Text>        </Normal Text><Symbol>);</Symbol><br/>
0073 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>==</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>);</Symbol><br/>
0074 <Normal Text>        voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>;</Symbol><br/>
0075 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0076 <Normal Text></Normal Text><br/>
0077 <Normal Text>    </Normal Text><Comment>/// Delegate your vote to the voter `to`.</Comment><br/>
0078 <Normal Text>    </Normal Text><Control Structures>function</Control Structures><Normal Text> delegate</Normal Text><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> to</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0079 <Normal Text>        </Normal Text><Comment>// assigns reference</Comment><br/>
0080 <Normal Text>        Voter </Normal Text><Keyword>storage</Keyword><Normal Text> sender </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>];</Symbol><br/>
0081 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(!</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"You already voted."</String><Symbol>);</Symbol><br/>
0082 <Normal Text></Normal Text><br/>
0083 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>to </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Self-delegation is disallowed."</String><Symbol>);</Symbol><br/>
0084 <Normal Text></Normal Text><br/>
0085 <Normal Text>        </Normal Text><Comment>// Forward the delegation as long as</Comment><br/>
0086 <Normal Text>        </Normal Text><Comment>// `to` also delegated.</Comment><br/>
0087 <Normal Text>        </Normal Text><Comment>// In general, such loops are very dangerous,</Comment><br/>
0088 <Normal Text>        </Normal Text><Comment>// because if they run too long, they might</Comment><br/>
0089 <Normal Text>        </Normal Text><Comment>// need more gas than is available in a block.</Comment><br/>
0090 <Normal Text>        </Normal Text><Comment>// In this case, the delegation will not be executed,</Comment><br/>
0091 <Normal Text>        </Normal Text><Comment>// but in other situations, such loops might</Comment><br/>
0092 <Normal Text>        </Normal Text><Comment>// cause a contract to get "stuck" completely.</Comment><br/>
0093 <Normal Text>        </Normal Text><Control Structures>while</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>].</Symbol><Normal Text>delegate </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Data Type>address</Data Type><Symbol>(</Symbol><Decimal>0</Decimal><Symbol>))</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0094 <Normal Text>            to </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>].</Symbol><Normal Text>delegate</Normal Text><Symbol>;</Symbol><br/>
0095 <Normal Text></Normal Text><br/>
0096 <Normal Text>            </Normal Text><Comment>// We found a loop in the delegation, not allowed.</Comment><br/>
0097 <Normal Text>            </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>to </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Found loop in delegation."</String><Symbol>);</Symbol><br/>
0098 <Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
0099 <Normal Text></Normal Text><br/>
0100 <Normal Text>        </Normal Text><Comment>// Since `sender` is a reference, this</Comment><br/>
0101 <Normal Text>        </Normal Text><Comment>// modifies `voters[msg.sender].voted`</Comment><br/>
0102 <Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/>
0103 <Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>delegate </Normal Text><Symbol>=</Symbol><Normal Text> to</Normal Text><Symbol>;</Symbol><br/>
0104 <Normal Text>        Voter </Normal Text><Keyword>storage</Keyword><Normal Text> delegate_ </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>];</Symbol><br/>
0105 <Normal Text>        </Normal Text><Control Structures>if</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>delegate_</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0106 <Normal Text>            </Normal Text><Comment>// If the delegate already voted,</Comment><br/>
0107 <Normal Text>            </Normal Text><Comment>// directly add to the number of votes</Comment><br/>
0108 <Normal Text>            proposals</Normal Text><Symbol>[</Symbol><Normal Text>delegate_</Normal Text><Symbol>.</Symbol><Normal Text>vote</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/>
0109 <Normal Text>        </Normal Text><Symbol>}</Symbol><Normal Text> </Normal Text><Control Structures>else</Control Structures><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0110 <Normal Text>            </Normal Text><Comment>// If the delegate did not vote yet,</Comment><br/>
0111 <Normal Text>            </Normal Text><Comment>// add to her weight.</Comment><br/>
0112 <Normal Text>            delegate_</Normal Text><Symbol>.</Symbol><Normal Text>weight </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/>
0113 <Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
0114 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0115 <Normal Text></Normal Text><br/>
0116 <Normal Text>    </Normal Text><Comment>/// Give your vote (including votes delegated to you)</Comment><br/>
0117 <Normal Text>    </Normal Text><Comment>/// to proposal `proposals[proposal].name`.</Comment><br/>
0118 <Normal Text>    </Normal Text><Control Structures>function</Control Structures><Normal Text> vote</Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> proposal</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0119 <Normal Text>        Voter </Normal Text><Keyword>storage</Keyword><Normal Text> sender </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>];</Symbol><br/>
0120 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>weight </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Has no right to vote"</String><Symbol>);</Symbol><br/>
0121 <Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(!</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Already voted."</String><Symbol>);</Symbol><br/>
0122 <Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/>
0123 <Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>vote </Normal Text><Symbol>=</Symbol><Normal Text> proposal</Normal Text><Symbol>;</Symbol><br/>
0124 <Normal Text></Normal Text><br/>
0125 <Normal Text>        </Normal Text><Comment>// If `proposal` is out of the range of the array,</Comment><br/>
0126 <Normal Text>        </Normal Text><Comment>// this will throw automatically and revert all</Comment><br/>
0127 <Normal Text>        </Normal Text><Comment>// changes.</Comment><br/>
0128 <Normal Text>        proposals</Normal Text><Symbol>[</Symbol><Normal Text>proposal</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/>
0129 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0130 <Normal Text></Normal Text><br/>
0131 <Normal Text>    </Normal Text><Comment>/// </Comment><Custom Tags>@dev</Custom Tags><Comment> Computes the winning proposal taking all</Comment><br/>
0132 <Normal Text>    </Normal Text><Comment>/// previous votes into account.</Comment><br/>
0133 <Normal Text>    </Normal Text><Control Structures>function</Control Structures><Normal Text> winningProposal</Normal Text><Symbol>()</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Keyword>view</Keyword><br/>
0134 <Normal Text>            </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> winningProposal_</Normal Text><Symbol>)</Symbol><br/>
0135 <Normal Text>    </Normal Text><Symbol>{</Symbol><br/>
0136 <Normal Text>        </Normal Text><Data Type>uint</Data Type><Normal Text> winningVoteCount </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><br/>
0137 <Normal Text>        </Normal Text><Control Structures>for</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> p </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><Normal Text> p </Normal Text><Symbol><</Symbol><Normal Text> proposals</Normal Text><Symbol>.</Symbol><Normal Text>length</Normal Text><Symbol>;</Symbol><Normal Text> p</Normal Text><Built-in>++</Built-in><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0138 <Normal Text>            </Normal Text><Control Structures>if</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>proposals</Normal Text><Symbol>[</Symbol><Normal Text>p</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>></Symbol><Normal Text> winningVoteCount</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
0139 <Normal Text>                winningVoteCount </Normal Text><Symbol>=</Symbol><Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>p</Normal Text><Symbol>].</Symbol><Normal Text>voteCount</Normal Text><Symbol>;</Symbol><br/>
0140 <Normal Text>                winningProposal_ </Normal Text><Symbol>=</Symbol><Normal Text> p</Normal Text><Symbol>;</Symbol><br/>
0141 <Normal Text>            </Normal Text><Symbol>}</Symbol><br/>
0142 <Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
0143 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0144 <Normal Text></Normal Text><br/>
0145 <Normal Text>    </Normal Text><Comment>// Calls winningProposal() function to get the index</Comment><br/>
0146 <Normal Text>    </Normal Text><Comment>// of the winner contained in the proposals array and then</Comment><br/>
0147 <Normal Text>    </Normal Text><Comment>// returns the name of the winner</Comment><br/>
0148 <Normal Text>    </Normal Text><Control Structures>function</Control Structures><Normal Text> winnerName</Normal Text><Symbol>()</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Keyword>view</Keyword><br/>
0149 <Normal Text>            </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>bytes32</Data Type><Normal Text> winnerName_</Normal Text><Symbol>)</Symbol><br/>
0150 <Normal Text>    </Normal Text><Symbol>{</Symbol><br/>
0151 <Normal Text>        winnerName_ </Normal Text><Symbol>=</Symbol><Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>winningProposal</Normal Text><Symbol>()].</Symbol><Normal Text>name</Normal Text><Symbol>;</Symbol><br/>
0152 <Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
0153 <Symbol>}</Symbol><br/>