{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_title",
          "type": "string"
        },
        {
          "internalType": "uint64",
          "name": "_start",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_end",
          "type": "uint64"
        },
        {
          "internalType": "bytes32[]",
          "name": "_positionIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_candidateIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_candidatePositions",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_voterHashes",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "studentHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "candidateId",
          "type": "bytes32"
        }
      ],
      "name": "VoteCast",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "candidateCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "candidateIds",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "candidateId",
          "type": "bytes32"
        }
      ],
      "name": "candidateInformation",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "positionId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "voteCount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "candidatePosition",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "eligible",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endTime",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getElectionInformation",
      "outputs": [
        {
          "internalType": "string",
          "name": "_title",
          "type": "string"
        },
        {
          "internalType": "uint64",
          "name": "_startTime",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_endTime",
          "type": "uint64"
        },
        {
          "internalType": "bool",
          "name": "_live",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "_positionCount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_candidateCount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getResults",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "cIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "pIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256[]",
          "name": "counts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isLive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "positionCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "positionIds",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "positions",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "title",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "studentHash",
          "type": "bytes32"
        }
      ],
      "name": "verifyVote",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "studentHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "candidateId",
          "type": "bytes32"
        }
      ],
      "name": "vote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "voted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "votes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60e060405234801561001057600080fd5b5060405161148338038061148383398101604081905261002f91610543565b856001600160401b0316856001600160401b0316116100825760405162461bcd60e51b815260206004820152600a6024820152696261642077696e646f7760b01b60448201526064015b60405180910390fd5b81518351146100d35760405162461bcd60e51b815260206004820152601860248201527f63616e642f706f73206c656e677468206d69736d6174636800000000000000006044820152606401610079565b60008451116101135760405162461bcd60e51b815260206004820152600c60248201526b6e6f20706f736974696f6e7360a01b6044820152606401610079565b60008351116101545760405162461bcd60e51b815260206004820152600d60248201526c6e6f2063616e6469646174657360981b6044820152606401610079565b32608052600061016488826106e8565b506001600160401b0380871660a052851660c05260005b8451811015610215576000858281518110610198576101986107aa565b6020908102919091018101516000818152600490925260409091205490915060ff1661020c576000818152600460205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018190555b5060010161017b565b5060005b8351811015610360576000848281518110610236576102366107aa565b602002602001015190506000848381518110610254576102546107aa565b6020908102919091018101516000818152600490925260409091205490915060ff166102b55760405162461bcd60e51b815260206004820152601060248201526f3ab735b737bbb7103837b9b4ba34b7b760811b6044820152606401610079565b600082815260056020526040902054156103115760405162461bcd60e51b815260206004820152601360248201527f6475706c69636174652063616e646964617465000000000000000000000000006044820152606401610079565b6000828152600560205260408120919091556006805460018181018355919092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091019190915501610219565b5060005b81518110156103cd576000828281518110610381576103816107aa565b6020908102919091018101516000818152600190925260409091205490915060ff166103c4576000818152600160208190526040909120805460ff191690911790555b50600101610364565b50505050505050506107c0565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610418576104186103da565b604052919050565b600082601f83011261043157600080fd5b81516001600160401b0381111561044a5761044a6103da565b61045d601f8201601f19166020016103f0565b81815284602083860101111561047257600080fd5b60005b8281101561049157602081860181015183830182015201610475565b506000918101602001919091529392505050565b80516001600160401b03811681146104bc57600080fd5b919050565b600082601f8301126104d257600080fd5b81516001600160401b038111156104eb576104eb6103da565b8060051b6104fb602082016103f0565b9182526020818501810192908101908684111561051757600080fd5b6020860192505b8383101561053957825182526020928301929091019061051e565b9695505050505050565b600080600080600080600060e0888a03121561055e57600080fd5b87516001600160401b0381111561057457600080fd5b6105808a828b01610420565b97505061058f602089016104a5565b955061059d604089016104a5565b60608901519095506001600160401b038111156105b957600080fd5b6105c58a828b016104c1565b60808a015190955090506001600160401b038111156105e357600080fd5b6105ef8a828b016104c1565b60a08a015190945090506001600160401b0381111561060d57600080fd5b6106198a828b016104c1565b60c08a015190935090506001600160401b0381111561063757600080fd5b6106438a828b016104c1565b91505092959891949750929550565b600181811c9082168061066657607f821691505b60208210810361068657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156106e357828211156106e357806000526020600020601f840160051c60208510156106ba575060005b90810190601f840160051c0360005b818110156106df576000838201556001016106c9565b5050505b505050565b81516001600160401b03811115610701576107016103da565b6107158161070f8454610652565b8461068c565b6020601f82116001811461074957600083156107315750848201515b600019600385901b1c1916600184901b1784556107a3565b600084815260208120601f198516915b828110156107795787850151825560209485019460019092019101610759565b50848210156107975786840151600019600387901b60f8161c191681555b505060018360011b0184555b5050505050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c051610c5c610827600039600081816101710152818161065a015281816106fb015281816108e4015261093a015260008181610210015281816106250152818161068e015281816108c30152610905015260006103020152610c5c6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063939c5f7a116100ad578063d5f3948811610071578063d5f39488146102fd578063e0188ba61461033c578063e7702d051461035f578063eeaaf19d14610367578063ef8e51e61461037c57600080fd5b8063939c5f7a14610278578063a997ab021461028b578063a9a981a3146102ab578063b8f7a665146102b3578063ce96db8d146102bb57600080fd5b80634a79d50c116100f45780634a79d50c146101c3578063514ea4bf146101d857806378e979251461020b578063820f536814610232578063887c42511461025557600080fd5b806303016130146101265780632b38cd961461014c5780633197cbb61461016c5780634717f97c146101ac575b600080fd5b610139610134366004610a0e565b610396565b6040519081526020015b60405180910390f35b61013961015a366004610a0e565b60036020526000908152604090205481565b6101937f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610143565b6101b46103b7565b60405161014393929190610a63565b6101cb610583565b6040516101439190610b14565b6101fb6101e6366004610a0e565b60046020526000908152604090205460ff1681565b6040519015158152602001610143565b6101937f000000000000000000000000000000000000000000000000000000000000000081565b6101fb610240366004610a0e565b60016020526000908152604090205460ff1681565b6101fb610263366004610a0e565b60026020526000908152604090205460ff1681565b610139610286366004610a0e565b610611565b610139610299366004610a0e565b60056020526000908152604090205481565b600654610139565b6101fb610621565b6102e86102c9366004610a0e565b6000908152600560209081526040808320546003909252909120549091565b60408051928352602083019190915201610143565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610143565b6101fb61034a366004610a0e565b60009081526002602052604090205460ff1690565b600754610139565b61037a610375366004610b2e565b61068c565b005b6103846108b6565b60405161014396959493929190610b50565b600681815481106103a657600080fd5b600091825260209091200154905081565b600654606090819081908067ffffffffffffffff8111156103da576103da610b99565b604051908082528060200260200182016040528015610403578160200160208202803683370190505b5093508067ffffffffffffffff81111561041f5761041f610b99565b604051908082528060200260200182016040528015610448578160200160208202803683370190505b5092508067ffffffffffffffff81111561046457610464610b99565b60405190808252806020026020018201604052801561048d578160200160208202803683370190505b50915060005b8181101561057c57600681815481106104ae576104ae610baf565b90600052602060002001548582815181106104cb576104cb610baf565b60200260200101818152505060056000600683815481106104ee576104ee610baf565b906000526020600020015481526020019081526020016000205484828151811061051a5761051a610baf565b602002602001018181525050600360006006838154811061053d5761053d610baf565b906000526020600020015481526020019081526020016000205483828151811061056957610569610baf565b6020908102919091010152600101610493565b5050909192565b6000805461059090610bc5565b80601f01602080910402602001604051908101604052809291908181526020018280546105bc90610bc5565b80156106095780601f106105de57610100808354040283529160200191610609565b820191906000526020600020905b8154815290600101906020018083116105ec57829003601f168201915b505050505081565b600781815481106103a657600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16421015801561068757507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164211155b905090565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164210156106f95760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd081cdd185c9d195960aa1b60448201526064015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1642111561075b5760405162461bcd60e51b8152602060048201526005602482015264195b99195960da1b60448201526064016106f0565b60008281526001602052604090205460ff166107a85760405162461bcd60e51b815260206004820152600c60248201526b6e6f7420656c696769626c6560a01b60448201526064016106f0565b60008281526002602052604090205460ff16156107f75760405162461bcd60e51b815260206004820152600d60248201526c185b1c9958591e481d9bdd1959609a1b60448201526064016106f0565b6000818152600560205260409020546108465760405162461bcd60e51b8152602060048201526011602482015270756e6b6e6f776e2063616e64696461746560781b60448201526064016106f0565b6000828152600260209081526040808320805460ff1916600190811790915584845260039092528220805491929091610880908490610bff565b9091555050604051819083907f98feb77d0a18cb15f50d444eb78ea1c0e7461c4c7c44c9df2a863f4af4ade56a90600090a35050565b60606000806000806000807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16421015801561096757507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164211155b6007546006548554869061097a90610bc5565b80601f01602080910402602001604051908101604052809291908181526020018280546109a690610bc5565b80156109f35780601f106109c8576101008083540402835291602001916109f3565b820191906000526020600020905b8154815290600101906020018083116109d657829003601f168201915b50505050509550955095509550955095509550909192939495565b600060208284031215610a2057600080fd5b5035919050565b600081518084526020840193506020830160005b82811015610a59578151865260209586019590910190600101610a3b565b5093949350505050565b606081526000610a766060830186610a27565b8281036020840152610a888186610a27565b83810360408501528451808252602080870193509091019060005b81811015610ac1578351835260209384019390920191600101610aa3565b5090979650505050505050565b6000815180845260005b81811015610af457602081850181015186830182015201610ad8565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610b276020830184610ace565b9392505050565b60008060408385031215610b4157600080fd5b50508035926020909101359150565b60c081526000610b6360c0830189610ace565b67ffffffffffffffff97881660208401529590961660408201529215156060840152608083019190915260a09091015292915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600181811c90821680610bd957607f821691505b602082108103610bf957634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610c2057634e487b7160e01b600052601160045260246000fd5b9291505056fea264697066735822122012ef3eee14ca18d5a97429b80d480377889b9af785ffb544a99e8a7a21016ea064736f6c63430008240033"
}