function poll(uint _idPoll)
        public 
        view 
        returns(
        uint _startBlock,
        uint _endTime,
        bool _canVote,
        bool _canceled,
        bytes _description,
        uint8 _numBallots,
        bool _finalized,
        uint _voters,
        address _author,
        uint[100] _tokenTotal,
        uint[100] _quadraticVotes,
        uint[100] _votersByBallot
    )
    {
        require(_idPoll < _polls.length, "Invalid _idPoll");

        Poll storage p = _polls[_idPoll];

        _startBlock = p.startBlock;
        _endTime = p.endTime;
        _canceled = p.canceled;
        _canVote = canVote(_idPoll);
        _description = p.description;
        _numBallots = p.numBallots;
        _author = p.author;
        _finalized = (!p.canceled) && (block.number >= _endTime);
        _voters = p.voters;

        for(uint8 i = 0; i < p.numBallots; i++){
            _tokenTotal[i] = p.results[i];
            _quadraticVotes[i] = p.qvResults[i];
            _votersByBallot[i] = p.votersByBallot[i];
        }
    }